chore: remaining batch of bootstrap-vue PascalCase

This commit is contained in:
Matthias 2024-07-05 12:35:51 +02:00
parent 97b6cc4211
commit 4cd553d300
22 changed files with 240 additions and 245 deletions

View File

@ -35,14 +35,14 @@
>Blacklist</label >Blacklist</label
> >
<div class="float-end d-flex d-flex-columns pe-1"> <div class="float-end d-flex d-flex-columns pe-1">
<b-button <BButton
id="blacklist-add-btn" id="blacklist-add-btn"
class="me-1" class="me-1"
:class="botStore.activeBot.botApiVersion >= 1.12 ? 'col-6' : ''" :class="botStore.activeBot.botApiVersion >= 1.12 ? 'col-6' : ''"
size="sm" size="sm"
><i-mdi-plus-box-outline /> ><i-mdi-plus-box-outline />
</b-button> </BButton>
<b-button <BButton
v-if="botStore.activeBot.botApiVersion >= 1.12" v-if="botStore.activeBot.botApiVersion >= 1.12"
size="sm" size="sm"
class="col-6" class="col-6"
@ -51,7 +51,7 @@
@click="deletePairs" @click="deletePairs"
> >
<i-mdi-delete /> <i-mdi-delete />
</b-button> </BButton>
</div> </div>
<BPopover <BPopover
title="Add to blacklist" title="Add to blacklist"
@ -62,17 +62,17 @@
> >
<form ref="form" @submit.prevent="addBlacklistPair"> <form ref="form" @submit.prevent="addBlacklistPair">
<div> <div>
<b-form-group label-cols="2" label="Pair" label-for="pair-input"> <BFormGroup label-cols="2" label="Pair" label-for="pair-input">
<b-form-input <BFormInput
id="pair-input" id="pair-input"
v-model="newblacklistpair" v-model="newblacklistpair"
required required
autofocus autofocus
></b-form-input> ></BFormInput>
</b-form-group> </BFormGroup>
<b-button id="blacklist-submit" class="float-end mb-2" size="sm" type="submit"> <BButton id="blacklist-submit" class="float-end mb-2" size="sm" type="submit">
Add Add
</b-button> </BButton>
</div> </div>
</form> </form>
</BPopover> </BPopover>

View File

@ -2,23 +2,23 @@
<div> <div>
<div class="mb-2"> <div class="mb-2">
<label class="me-auto h3">Pair Locks</label> <label class="me-auto h3">Pair Locks</label>
<b-button class="float-end" size="sm" @click="botStore.activeBot.getLocks"> <BButton class="float-end" size="sm" @click="botStore.activeBot.getLocks">
<i-mdi-refresh /> <i-mdi-refresh />
</b-button> </BButton>
</div> </div>
<div> <div>
<b-table class="table-sm" :items="botStore.activeBot.activeLocks" :fields="tableFields"> <BTable class="table-sm" :items="botStore.activeBot.activeLocks" :fields="tableFields">
<template #cell(actions)="row"> <template #cell(actions)="row">
<b-button <BButton
class="btn-xs ms-1" class="btn-xs ms-1"
size="sm" size="sm"
title="Delete trade" title="Delete trade"
@click="removePairLock(row.item as unknown as Lock)" @click="removePairLock(row.item as unknown as Lock)"
> >
<i-mdi-delete /> <i-mdi-delete />
</b-button> </BButton>
</template> </template>
</b-table> </BTable>
</div> </div>
</div> </div>
</template> </template>

View File

@ -1,6 +1,6 @@
<template> <template>
<div> <div>
<b-form-group <BFormGroup
label-for="trade-filter" label-for="trade-filter"
class="mb-2 ms-2" class="mb-2 ms-2"
:class="{ :class="{
@ -8,10 +8,10 @@
'me-2': !backtestMode, 'me-2': !backtestMode,
}" }"
> >
<b-form-input id="trade-filter" v-model="filterText" type="text" placeholder="Filter" /> <BFormInput id="trade-filter" v-model="filterText" type="text" placeholder="Filter" />
</b-form-group> </BFormGroup>
<b-list-group> <BListGroup>
<b-list-group-item <BListGroupItem
v-for="comb in combinedPairList" v-for="comb in combinedPairList"
:key="comb.pair" :key="comb.pair"
button button
@ -31,8 +31,8 @@
:profit-ratio="comb.profit" :profit-ratio="comb.profit"
:stake-currency="botStore.activeBot.stakeCurrency" :stake-currency="botStore.activeBot.stakeCurrency"
/> />
</b-list-group-item> </BListGroupItem>
</b-list-group> </BListGroup>
</div> </div>
</template> </template>

View File

@ -1,26 +1,26 @@
<template> <template>
<b-form-group label-cols="4" label-size="md" class="pb-1 text-start" :description="param.help"> <BFormGroup label-cols="4" label-size="md" class="pb-1 text-start" :description="param.help">
<b-form-input <BFormInput
v-if="param.type === PairlistParamType.string || param.type === PairlistParamType.number" v-if="param.type === PairlistParamType.string || param.type === PairlistParamType.number"
v-model="paramValue" v-model="paramValue"
size="sm" size="sm"
></b-form-input> ></BFormInput>
<b-form-checkbox <BFormCheckbox
v-if="param.type === PairlistParamType.boolean" v-if="param.type === PairlistParamType.boolean"
v-model="paramValue" v-model="paramValue"
></b-form-checkbox> ></BFormCheckbox>
<b-form-select <BFormSelect
v-if="param.type === PairlistParamType.option" v-if="param.type === PairlistParamType.option"
v-model="paramValue" v-model="paramValue"
:options="param.options" :options="param.options"
></b-form-select> ></BFormSelect>
<template #label> <template #label>
<label> {{ param.description }}</label> <label> {{ param.description }}</label>
</template> </template>
</b-form-group> </BFormGroup>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">

View File

@ -2,8 +2,8 @@
<div> <div>
<div v-if="whitelist.length > 0" class="d-flex flex-column flex-lg-row px-2"> <div v-if="whitelist.length > 0" class="d-flex flex-column flex-lg-row px-2">
<!-- TODO: look into flexbox solution to have overflow scroll? --> <!-- TODO: look into flexbox solution to have overflow scroll? -->
<b-list-group class="col-12 col-md-2 overflow-auto" style="height: calc(100vh - 135px)"> <BListGroup class="col-12 col-md-2 overflow-auto" style="height: calc(100vh - 135px)">
<b-list-group-item <BListGroupItem
v-for="(pair, i) in whitelist" v-for="(pair, i) in whitelist"
:key="pair.pair" :key="pair.pair"
button button
@ -12,10 +12,10 @@
:title="pair.pair" :title="pair.pair"
@click="botStore.activeBot.selectedPair = pair.pair" @click="botStore.activeBot.selectedPair = pair.pair"
> >
<b-form-checkbox v-model="whitelist[i].enabled"></b-form-checkbox> <BFormCheckbox v-model="whitelist[i].enabled"></BFormCheckbox>
{{ pair.pair }} {{ pair.pair }}
</b-list-group-item> </BListGroupItem>
</b-list-group> </BListGroup>
<div class="flex-fill"> <div class="flex-fill">
<ChartView /> <ChartView />
</div> </div>

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="d-flex px-3 mb-3 gap-3 flex-column flex-lg-row"> <div class="d-flex px-3 mb-3 gap-3 flex-column flex-lg-row">
<b-list-group ref="availablePairlistsEl" class="available-pairlists"> <BListGroup ref="availablePairlistsEl" class="available-pairlists">
<b-list-group-item <BListGroupItem
v-for="pairlist in availablePairlists" v-for="pairlist in availablePairlists"
:key="pairlist.name" :key="pairlist.name"
:class="{ :class="{
@ -13,7 +13,7 @@
<span class="fw-bold">{{ pairlist.name }}</span> <span class="fw-bold">{{ pairlist.name }}</span>
<span class="text-small">{{ pairlist.description }}</span> <span class="text-small">{{ pairlist.description }}</span>
</div> </div>
<b-button <BButton
class="p-0 add-pairlist" class="p-0 add-pairlist"
style="border: none" style="border: none"
variant="outline-light" variant="outline-light"
@ -21,21 +21,21 @@
@click="pairlistStore.addToConfig(pairlist, pairlistStore.config.pairlists.length)" @click="pairlistStore.addToConfig(pairlist, pairlistStore.config.pairlists.length)"
> >
<i-mdi-arrow-right-bold-box-outline class="fs-4" /> <i-mdi-arrow-right-bold-box-outline class="fs-4" />
</b-button> </BButton>
</b-list-group-item> </BListGroupItem>
</b-list-group> </BListGroup>
<div class="d-flex flex-column flex-fill"> <div class="d-flex flex-column flex-fill">
<PairlistConfigActions /> <PairlistConfigActions />
<div class="border rounded-1 p-2 mb-2"> <div class="border rounded-1 p-2 mb-2">
<div class="d-flex align-items-center gap-2 my-2"> <div class="d-flex align-items-center gap-2 my-2">
<span class="col-auto">Stake currency: </span> <span class="col-auto">Stake currency: </span>
<b-form-input v-model="pairlistStore.stakeCurrency" size="sm" /> <BFormInput v-model="pairlistStore.stakeCurrency" size="sm" />
</div> </div>
<div class="mb-2 border rounded-1 p-2 text-start"> <div class="mb-2 border rounded-1 p-2 text-start">
<b-form-checkbox v-model="pairlistStore.customExchange" class="mb-2"> <BFormCheckbox v-model="pairlistStore.customExchange" class="mb-2">
Custom Exchange Custom Exchange
</b-form-checkbox> </BFormCheckbox>
<ExchangeSelect <ExchangeSelect
v-if="pairlistStore.customExchange" v-if="pairlistStore.customExchange"
v-model="pairlistStore.selectedExchange" v-model="pairlistStore.selectedExchange"
@ -43,7 +43,7 @@
</div> </div>
</div> </div>
<PairlistConfigBlacklist /> <PairlistConfigBlacklist />
<b-alert <BAlert
:model-value=" :model-value="
pairlistStore.config.pairlists.length > 0 && !pairlistStore.firstPairlistIsGenerator pairlistStore.config.pairlists.length > 0 && !pairlistStore.firstPairlistIsGenerator
" "
@ -51,7 +51,7 @@
> >
First entry in the pairlist must be a Generating pairlist, like StaticPairList or First entry in the pairlist must be a Generating pairlist, like StaticPairList or
VolumePairList. VolumePairList.
</b-alert> </BAlert>
<div <div
ref="pairlistConfigsEl" ref="pairlistConfigsEl"
class="d-flex flex-column flex-grow-1 position-relative border rounded-1 p-1" class="d-flex flex-column flex-grow-1 position-relative border rounded-1 p-1"
@ -67,12 +67,12 @@
</div> </div>
</div> </div>
<div class="d-flex flex-column col-12 col-lg-3"> <div class="d-flex flex-column col-12 col-lg-3">
<b-form-radio-group v-model="selectedView" class="mb-2" size="sm" buttons> <BFormRadioGroup v-model="selectedView" class="mb-2" size="sm" buttons>
<b-form-radio button value="Config"> Config</b-form-radio> <BFormRadio button value="Config"> Config</BFormRadio>
<b-form-radio button value="Results" :disabled="pairlistStore.whitelist.length === 0"> <BFormRadio button value="Results" :disabled="pairlistStore.whitelist.length === 0">
Results</b-form-radio Results</BFormRadio
> >
</b-form-radio-group> </BFormRadioGroup>
<div class="position-relative flex-fill overflow-auto"> <div class="position-relative flex-fill overflow-auto">
<CopyableTextfield <CopyableTextfield
v-if="selectedView === 'Config'" v-if="selectedView === 'Config'"

View File

@ -2,11 +2,11 @@
<div> <div>
<div class="mb-2"> <div class="mb-2">
<h3 class="me-auto d-inline">{{ hasWeekly ? 'Period' : 'Daily' }} Breakdown</h3> <h3 class="me-auto d-inline">{{ hasWeekly ? 'Period' : 'Daily' }} Breakdown</h3>
<b-button class="float-end" size="sm" @click="refreshSummary"> <BButton class="float-end" size="sm" @click="refreshSummary">
<i-mdi-refresh /> <i-mdi-refresh />
</b-button> </BButton>
</div> </div>
<b-form-radio-group <BFormRadioGroup
v-if="hasWeekly" v-if="hasWeekly"
id="order-direction" id="order-direction"
v-model="periodicBreakdownPeriod" v-model="periodicBreakdownPeriod"
@ -17,7 +17,7 @@
style="min-width: 10em" style="min-width: 10em"
button-variant="outline-primary" button-variant="outline-primary"
@change="refreshSummary" @change="refreshSummary"
></b-form-radio-group> ></BFormRadioGroup>
<div class="ps-1"> <div class="ps-1">
<TimePeriodChart <TimePeriodChart
@ -27,7 +27,7 @@
/> />
</div> </div>
<div> <div>
<b-table class="table-sm" :items="selectedStats.data" :fields="dailyFields"> </b-table> <BTable class="table-sm" :items="selectedStats.data" :fields="dailyFields"> </BTable>
</div> </div>
</div> </div>
</template> </template>

View File

@ -1,11 +1,11 @@
<template> <template>
<div class="d-flex align-items-center ms-2"> <div class="d-flex align-items-center ms-2">
<b-form-checkbox <BFormCheckbox
v-model="autoRefreshLoc" v-model="autoRefreshLoc"
class="float-end my-auto mt-1" class="float-end my-auto mt-1"
title="AutoRefresh" title="AutoRefresh"
></b-form-checkbox> ></BFormCheckbox>
<b-button <BButton
class="m-1" class="m-1"
variant="secondary" variant="secondary"
size="sm" size="sm"
@ -13,7 +13,7 @@
@click="botStore.allRefreshFull" @click="botStore.allRefreshFull"
> >
<i-mdi-refresh /> <i-mdi-refresh />
</b-button> </BButton>
</div> </div>
</template> </template>

View File

@ -1,16 +1,16 @@
<template> <template>
<div> <div>
<div class="w-100 d-flex"> <div class="w-100 d-flex">
<b-form-select <BFormSelect
id="strategy-select" id="strategy-select"
v-model="locStrategy" v-model="locStrategy"
:options="botStore.activeBot.strategyList" :options="botStore.activeBot.strategyList"
> >
</b-form-select> </BFormSelect>
<div class="ms-1"> <div class="ms-1">
<b-button @click="botStore.activeBot.getStrategyList"> <BButton @click="botStore.activeBot.getStrategyList">
<i-mdi-refresh /> <i-mdi-refresh />
</b-button> </BButton>
</div> </div>
</div> </div>

View File

@ -1,10 +1,10 @@
<template> <template>
<b-form-select <BFormSelect
v-model="selectedTimeframe" v-model="selectedTimeframe"
placeholder="Use strategy default" placeholder="Use strategy default"
:options="availableTimeframes" :options="availableTimeframes"
@change="emitSelectedTimeframe" @change="emitSelectedTimeframe"
></b-form-select> ></BFormSelect>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="d-flex flex-column"> <div class="d-flex flex-column">
<b-button <BButton
v-if="botApiVersion <= 1.1" v-if="botApiVersion <= 1.1"
class="btn-xs text-start" class="btn-xs text-start"
size="sm" size="sm"
@ -8,8 +8,8 @@
@click="$emit('forceExit', trade)" @click="$emit('forceExit', trade)"
> >
<i-mdi-close-box class="me-1" />Forceexit <i-mdi-close-box class="me-1" />Forceexit
</b-button> </BButton>
<b-button <BButton
v-if="botApiVersion > 1.1" v-if="botApiVersion > 1.1"
class="btn-xs text-start" class="btn-xs text-start"
size="sm" size="sm"
@ -17,8 +17,8 @@
@click="$emit('forceExit', trade, 'limit')" @click="$emit('forceExit', trade, 'limit')"
> >
<i-mdi-close-box class="me-1" />Forceexit limit <i-mdi-close-box class="me-1" />Forceexit limit
</b-button> </BButton>
<b-button <BButton
v-if="botApiVersion > 1.1" v-if="botApiVersion > 1.1"
class="btn-xs text-start mt-1" class="btn-xs text-start mt-1"
size="sm" size="sm"
@ -26,8 +26,8 @@
@click="$emit('forceExit', trade, 'market')" @click="$emit('forceExit', trade, 'market')"
> >
<i-mdi-close-box class="me-1" />Forceexit market <i-mdi-close-box class="me-1" />Forceexit market
</b-button> </BButton>
<b-button <BButton
v-if="botApiVersion > 2.16" v-if="botApiVersion > 2.16"
class="btn-xs text-start mt-1" class="btn-xs text-start mt-1"
size="sm" size="sm"
@ -35,8 +35,8 @@
@click="$emit('forceExitPartial', trade)" @click="$emit('forceExitPartial', trade)"
> >
<i-mdi-close-box-multiple class="me-1" />Forceexit partial <i-mdi-close-box-multiple class="me-1" />Forceexit partial
</b-button> </BButton>
<b-button <BButton
v-if="botApiVersion >= 2.24 && (trade.open_order_id || trade.has_open_orders)" v-if="botApiVersion >= 2.24 && (trade.open_order_id || trade.has_open_orders)"
class="btn-xs text-start mt-1" class="btn-xs text-start mt-1"
size="sm" size="sm"
@ -44,8 +44,8 @@
@click="$emit('cancelOpenOrder', trade)" @click="$emit('cancelOpenOrder', trade)"
> >
<i-mdi-cancel class="me-1" />Cancel open order <i-mdi-cancel class="me-1" />Cancel open order
</b-button> </BButton>
<b-button <BButton
v-if="enableForceEntry" v-if="enableForceEntry"
class="btn-xs text-start mt-1" class="btn-xs text-start mt-1"
size="sm" size="sm"
@ -53,8 +53,8 @@
@click="$emit('forceEntry', trade)" @click="$emit('forceEntry', trade)"
> >
<i-mdi-plus-box-multiple-outline class="me-1" />Increase position <i-mdi-plus-box-multiple-outline class="me-1" />Increase position
</b-button> </BButton>
<b-button <BButton
v-if="botApiVersion >= 2.28" v-if="botApiVersion >= 2.28"
class="btn-xs text-start mt-1" class="btn-xs text-start mt-1"
size="sm" size="sm"
@ -62,8 +62,8 @@
@click="$emit('reloadTrade', trade)" @click="$emit('reloadTrade', trade)"
> >
<i-mdi-reload-alert class="me-1" />Reload Trade <i-mdi-reload-alert class="me-1" />Reload Trade
</b-button> </BButton>
<b-button <BButton
class="btn-xs text-start mt-1" class="btn-xs text-start mt-1"
size="sm" size="sm"
title="Delete trade" title="Delete trade"
@ -71,7 +71,7 @@
> >
<i-mdi-delete class="me-1" /> <i-mdi-delete class="me-1" />
Delete Delete
</b-button> </BButton>
</div> </div>
</template> </template>

View File

@ -45,7 +45,7 @@ function handleForceEntry(item: Trade) {
<template> <template>
<div> <div>
<b-button <BButton
:id="`btn-actions-${id}`" :id="`btn-actions-${id}`"
class="btn-xs" class="btn-xs"
size="sm" size="sm"
@ -53,7 +53,7 @@ function handleForceEntry(item: Trade) {
@click="popoverOpen = !popoverOpen" @click="popoverOpen = !popoverOpen"
> >
<i-mdi-gesture-tap /> <i-mdi-gesture-tap />
</b-button> </BButton>
<BPopover <BPopover
teleport-to="body" teleport-to="body"
:target="`btn-actions-${id}`" :target="`btn-actions-${id}`"
@ -73,9 +73,9 @@ function handleForceEntry(item: Trade) {
@reload-trade="handleReloadTrade" @reload-trade="handleReloadTrade"
@force-entry="handleForceEntry" @force-entry="handleForceEntry"
/> />
<b-button class="mt-1 w-100 text-start" size="sm" @click="popoverOpen = false"> <BButton class="mt-1 w-100 text-start" size="sm" @click="popoverOpen = false">
<i-mdi-cancel class="me-1" />Close Actions menu <i-mdi-cancel class="me-1" />Close Actions menu
</b-button> </BButton>
</BPopover> </BPopover>
</div> </div>
</template> </template>

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="h-100 overflow-auto w-100"> <div class="h-100 overflow-auto w-100">
<b-table <BTable
ref="tradesTable" ref="tradesTable"
small small
hover hover
@ -66,18 +66,18 @@
<template #cell(close_timestamp)="row"> <template #cell(close_timestamp)="row">
<DateTimeTZ :date="(row.item as unknown as Trade).close_timestamp ?? 0" /> <DateTimeTZ :date="(row.item as unknown as Trade).close_timestamp ?? 0" />
</template> </template>
</b-table> </BTable>
<div class="w-100 d-flex justify-content-between"> <div class="w-100 d-flex justify-content-between">
<b-pagination <BPagination
v-if="!activeTrades" v-if="!activeTrades"
v-model="currentPage" v-model="currentPage"
:total-rows="rows" :total-rows="rows"
:per-page="perPage" :per-page="perPage"
aria-controls="my-table" aria-controls="my-table"
></b-pagination> ></BPagination>
<b-form-group v-if="showFilter" label-for="trade-filter"> <BFormGroup v-if="showFilter" label-for="trade-filter">
<b-form-input id="trade-filter" v-model="filterText" type="text" placeholder="Filter" /> <BFormInput id="trade-filter" v-model="filterText" type="text" placeholder="Filter" />
</b-form-group> </BFormGroup>
</div> </div>
<ForceExitForm v-if="activeTrades" v-model="forceExitVisible" :trade="feTrade" /> <ForceExitForm v-if="activeTrades" v-model="forceExitVisible" :trade="feTrade" />
<ForceEntryForm <ForceEntryForm
@ -86,9 +86,9 @@
position-increase position-increase
/> />
<b-modal v-model="removeTradeVisible" title="Exit trade" @ok="forceExitExecuter"> <BModal v-model="removeTradeVisible" title="Exit trade" @ok="forceExitExecuter">
{{ confirmExitText }} {{ confirmExitText }}
</b-modal> </BModal>
</div> </div>
</template> </template>

View File

@ -1,14 +1,14 @@
<template> <template>
<div> <div>
<b-list-group> <BListGroup>
<b-list-group-item <BListGroupItem
button button
class="d-flex flex-wrap justify-content-center align-items-center" class="d-flex flex-wrap justify-content-center align-items-center"
:title="'Trade Navigation'" :title="'Trade Navigation'"
@click="sortNewestFirst = !sortNewestFirst" @click="sortNewestFirst = !sortNewestFirst"
>Trade Navigation {{ sortNewestFirst ? '&#8595;' : '&#8593;' }} >Trade Navigation {{ sortNewestFirst ? '&#8595;' : '&#8593;' }}
</b-list-group-item> </BListGroupItem>
<b-list-group-item <BListGroupItem
v-for="(trade, i) in sortedTrades" v-for="(trade, i) in sortedTrades"
:key="trade.open_timestamp" :key="trade.open_timestamp"
button button
@ -32,16 +32,16 @@
:stake-currency="botStore.activeBot.stakeCurrency" :stake-currency="botStore.activeBot.stakeCurrency"
/> />
</div> </div>
<b-button <BButton
size="sm" size="sm"
class="ms-auto mt-auto" class="ms-auto mt-auto"
variant="outline-secondary" variant="outline-secondary"
@click="ordersVisible[i] = !ordersVisible[i]" @click="ordersVisible[i] = !ordersVisible[i]"
><i-mdi-chevron-right v-if="!ordersVisible[i]" width="24" height="24" /> ><i-mdi-chevron-right v-if="!ordersVisible[i]" width="24" height="24" />
<i-mdi-chevron-down v-if="ordersVisible[i]" width="24" height="24" /> <i-mdi-chevron-down v-if="ordersVisible[i]" width="24" height="24" />
</b-button> </BButton>
</div> </div>
<b-collapse v-model="ordersVisible[i]"> <BCollapse v-model="ordersVisible[i]">
<ul class="px-3 m-0"> <ul class="px-3 m-0">
<li <li
v-for="order in trade.orders?.filter((o) => o.order_filled_timestamp !== null)" v-for="order in trade.orders?.filter((o) => o.order_filled_timestamp !== null)"
@ -50,10 +50,10 @@
{{ order.ft_order_side }} {{ order.amount }} at {{ order.safe_price }} {{ order.ft_order_side }} {{ order.amount }} at {{ order.safe_price }}
</li> </li>
</ul> </ul>
</b-collapse> </BCollapse>
</b-list-group-item> </BListGroupItem>
<b-list-group-item v-if="trades.length === 0">No trades to show...</b-list-group-item> <BListGroupItem v-if="trades.length === 0">No trades to show...</BListGroupItem>
</b-list-group> </BListGroup>
</div> </div>
</template> </template>

View File

@ -2,22 +2,22 @@
<form class="d-flex flex-row" @submit.prevent="saveNewName"> <form class="d-flex flex-row" @submit.prevent="saveNewName">
<div class="flex-grow-1"> <div class="flex-grow-1">
<slot v-if="mode === EditState.None"> </slot> <slot v-if="mode === EditState.None"> </slot>
<b-form-input v-else v-model="localName" size="sm"> </b-form-input> <BFormInput v-else v-model="localName" size="sm"> </BFormInput>
</div> </div>
<div <div
class="flex-grow-2 mt-auto d-flex gap-1 ms-1" class="flex-grow-2 mt-auto d-flex gap-1 ms-1"
:class="alignVertical ? 'flex-column' : 'flex-row'" :class="alignVertical ? 'flex-column' : 'flex-row'"
> >
<template v-if="allowEdit && mode === EditState.None"> <template v-if="allowEdit && mode === EditState.None">
<b-button <BButton
size="sm" size="sm"
variant="secondary" variant="secondary"
:title="`Edit this ${editableName}.`" :title="`Edit this ${editableName}.`"
@click="mode = EditState.Editing" @click="mode = EditState.Editing"
> >
<i-mdi-pencil /> <i-mdi-pencil />
</b-button> </BButton>
<b-button <BButton
v-if="allowDuplicate" v-if="allowDuplicate"
size="sm" size="sm"
variant="secondary" variant="secondary"
@ -25,36 +25,36 @@
@click="duplicate" @click="duplicate"
> >
<i-mdi-content-copy /> <i-mdi-content-copy />
</b-button> </BButton>
<b-button <BButton
size="sm" size="sm"
variant="secondary" variant="secondary"
:title="`Delete this ${editableName}.`" :title="`Delete this ${editableName}.`"
@click="$emit('delete', modelValue)" @click="$emit('delete', modelValue)"
> >
<i-mdi-delete /> <i-mdi-delete />
</b-button> </BButton>
</template> </template>
<b-button <BButton
v-if="allowAdd && mode === EditState.None" v-if="allowAdd && mode === EditState.None"
size="sm" size="sm"
:title="`Add new ${editableName}.`" :title="`Add new ${editableName}.`"
variant="primary" variant="primary"
@click="addNewClick" @click="addNewClick"
><i-mdi-plus-box-outline /> ><i-mdi-plus-box-outline />
</b-button> </BButton>
<template v-if="mode !== EditState.None"> <template v-if="mode !== EditState.None">
<b-button <BButton
size="sm" size="sm"
:title="`Add new ${editableName}`" :title="`Add new ${editableName}`"
variant="primary" variant="primary"
@click="saveNewName" @click="saveNewName"
> >
<i-mdi-check /> <i-mdi-check />
</b-button> </BButton>
<b-button size="sm" title="Abort" variant="secondary" @click="abort"> <BButton size="sm" title="Abort" variant="secondary" @click="abort">
<i-mdi-close /> <i-mdi-close />
</b-button> </BButton>
</template> </template>
</div> </div>
</form> </form>

View File

@ -1,5 +1,5 @@
<template> <template>
<b-modal <BModal
id="MsgBoxModal" id="MsgBoxModal"
ref="removeTradeModal" ref="removeTradeModal"
v-model="showRef" v-model="showRef"
@ -10,7 +10,7 @@
@keyup.enter="msgBoxOK" @keyup.enter="msgBoxOK"
> >
{{ message }} {{ message }}
</b-modal> </BModal>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">

View File

@ -1,6 +1,6 @@
<template> <template>
<header> <header>
<b-navbar toggleable="sm" dark variant="primary"> <BNavbar toggleable="sm" dark variant="primary">
<RouterLink class="navbar-brand" exact to="/"> <RouterLink class="navbar-brand" exact to="/">
<img class="logo" src="@/assets/freqtrade-logo.png" alt="Home Logo" /> <img class="logo" src="@/assets/freqtrade-logo.png" alt="Home Logo" />
<span class="navbar-brand-title d-sm-none d-md-inline">Freqtrade UI</span> <span class="navbar-brand-title d-sm-none d-md-inline">Freqtrade UI</span>
@ -8,28 +8,28 @@
<!-- TODO: For XS breakpoint, this should be here... --> <!-- TODO: For XS breakpoint, this should be here... -->
<!-- <ReloadControl class="me-3" /> --> <!-- <ReloadControl class="me-3" /> -->
<b-navbar-toggle target="nav-collapse"></b-navbar-toggle> <BNavbarToggle target="nav-collapse"></BNavbarToggle>
<b-collapse id="nav-collapse" class="text-center" is-nav> <BCollapse id="nav-collapse" class="text-center" is-nav>
<b-navbar-nav> <BNavbarNav>
<b-nav-item v-if="!botStore.canRunBacktest" to="/trade">Trade</b-nav-item> <BNavItem v-if="!botStore.canRunBacktest" to="/trade">Trade</BNavItem>
<b-nav-item v-if="!botStore.canRunBacktest" to="/dashboard">Dashboard</b-nav-item> <BNavItem v-if="!botStore.canRunBacktest" to="/dashboard">Dashboard</BNavItem>
<b-nav-item to="/graph">Chart</b-nav-item> <BNavItem to="/graph">Chart</BNavItem>
<b-nav-item to="/logs">Logs</b-nav-item> <BNavItem to="/logs">Logs</BNavItem>
<b-nav-item v-if="botStore.canRunBacktest" to="/backtest">Backtest</b-nav-item> <BNavItem v-if="botStore.canRunBacktest" to="/backtest">Backtest</BNavItem>
<b-nav-item <BNavItem
v-if=" v-if="
(botStore.activeBot?.isWebserverMode ?? false) && (botStore.activeBot?.isWebserverMode ?? false) &&
botStore.activeBot.botApiVersion >= 2.3 botStore.activeBot.botApiVersion >= 2.3
" "
to="/pairlist_config" to="/pairlist_config"
>Pairlist Config</b-nav-item >Pairlist Config</BNavItem
> >
<ThemeSelect /> <ThemeSelect />
</b-navbar-nav> </BNavbarNav>
<!-- Right aligned nav items --> <!-- Right aligned nav items -->
<b-navbar-nav class="ms-auto" menu-class="w-100"> <BNavbarNav class="ms-auto" menu-class="w-100">
<!-- TODO This should show outside of the dropdown in XS mode --> <!-- TODO This should show outside of the dropdown in XS mode -->
<div <div
v-if="!settingsStore.confirmDialog" v-if="!settingsStore.confirmDialog"
@ -41,7 +41,7 @@
<i-mdi-alert /> <i-mdi-alert />
</div> </div>
<div class="d-flex justify-content-between"> <div class="d-flex justify-content-between">
<b-dropdown <BDropdown
v-if="botStore.botCount > 1" v-if="botStore.botCount > 1"
size="sm" size="sm"
class="m-1" class="m-1"
@ -54,47 +54,47 @@
<BotEntry :bot="botStore.selectedBotObj" :no-buttons="true" /> <BotEntry :bot="botStore.selectedBotObj" :no-buttons="true" />
</template> </template>
<BotList :small="true" /> <BotList :small="true" />
</b-dropdown> </BDropdown>
<ReloadControl class="me-3" title="Confirm Dialog deactivated." /> <ReloadControl class="me-3" title="Confirm Dialog deactivated." />
</div> </div>
<li <li
class="d-none d-sm-flex flex-sm-wrap flex-lg-nowrap align-items-center nav-item text-secondary me-2" class="d-none d-sm-flex flex-sm-wrap flex-lg-nowrap align-items-center nav-item text-secondary me-2"
> >
<b-nav-text class="verticalCenter small me-2"> <BNavText class="verticalCenter small me-2">
{{ {{
(botStore.activeBotorUndefined && botStore.activeBotorUndefined.botName) || (botStore.activeBotorUndefined && botStore.activeBotorUndefined.botName) ||
'No bot selected' 'No bot selected'
}} }}
</b-nav-text> </BNavText>
<b-nav-text v-if="botStore.botCount === 1" class="verticalCenter"> <BNavText v-if="botStore.botCount === 1" class="verticalCenter">
{{ {{
botStore.activeBotorUndefined && botStore.activeBotorUndefined.isBotOnline botStore.activeBotorUndefined && botStore.activeBotorUndefined.isBotOnline
? 'Online' ? 'Online'
: 'Offline' : 'Offline'
}} }}
</b-nav-text> </BNavText>
</li> </li>
<li v-if="botStore.hasBots" class="nav-item"> <li v-if="botStore.hasBots" class="nav-item">
<!-- Hide dropdown on xs, instead show below --> <!-- Hide dropdown on xs, instead show below -->
<b-nav-item-dropdown id="avatar-drop" right auto-close class="d-none d-sm-block"> <BNavItemDropdown id="avatar-drop" right auto-close class="d-none d-sm-block">
<template #button-content> <template #button-content>
<b-avatar size="2em" button>FT</b-avatar> <BAvatar size="2em" button>FT</BAvatar>
</template> </template>
<span class="ps-3">V: {{ settingsStore.uiVersion }}</span> <span class="ps-3">V: {{ settingsStore.uiVersion }}</span>
<!-- Link active-class to non-existant class to avoid it getting the "light" active color --> <!-- Link active-class to non-existant class to avoid it getting the "light" active color -->
<b-dropdown-item active-class="non-existant" to="/settings">Settings</b-dropdown-item> <BDropdownItem active-class="non-existant" to="/settings">Settings</BDropdownItem>
<div class="ps-3"> <div class="ps-3">
<b-form-checkbox v-model="layoutStore.layoutLocked">Lock layout</b-form-checkbox> <BFormCheckbox v-model="layoutStore.layoutLocked">Lock layout</BFormCheckbox>
</div> </div>
<b-dropdown-item @click="resetDynamicLayout">Reset Layout</b-dropdown-item> <BDropdownItem @click="resetDynamicLayout">Reset Layout</BDropdownItem>
<template v-if="botStore.botCount === 1"> <template v-if="botStore.botCount === 1">
<BDropdownDivider /> <BDropdownDivider />
<b-dropdown-item active-class="non-existant" @click="clickLogout()"> <BDropdownItem active-class="non-existant" @click="clickLogout()">
<i-mdi-logout class="me-1" /> <i-mdi-logout class="me-1" />
Sign Out Sign Out
</b-dropdown-item> </BDropdownItem>
</template> </template>
</b-nav-item-dropdown> </BNavItemDropdown>
<div class="d-block d-sm-none"> <div class="d-block d-sm-none">
<!-- Visible only on XS --> <!-- Visible only on XS -->
<!-- <li class="nav-item text-secondary ms-2 d-sm-none d-flex justify-content-between"> <!-- <li class="nav-item text-secondary ms-2 d-sm-none d-flex justify-content-between">
@ -107,15 +107,15 @@
</b-nav-text> </b-nav-text>
</div> </div>
</li> --> </li> -->
<b-nav-item class="py-0" to="/settings" title="Settings"> <BNavItem class="py-0" to="/settings" title="Settings">
Settings <i-mdi-cog class="ms-auto" /> Settings <i-mdi-cog class="ms-auto" />
</b-nav-item> </BNavItem>
<b-nav-item <BNavItem
v-if="botStore.botCount === 1" v-if="botStore.botCount === 1"
class="nav-link navbar-nav" class="nav-link navbar-nav"
to="/" to="/"
@click="clickLogout()" @click="clickLogout()"
>Sign Out</b-nav-item >Sign Out</BNavItem
> >
</div> </div>
</li> </li>
@ -123,9 +123,9 @@
<!-- should open Modal window! --> <!-- should open Modal window! -->
<LoginModal v-if="route?.path !== '/login'" /> <LoginModal v-if="route?.path !== '/login'" />
</li> </li>
</b-navbar-nav> </BNavbarNav>
</b-collapse> </BCollapse>
</b-navbar> </BNavbar>
</header> </header>
</template> </template>

View File

@ -10,7 +10,7 @@
<div <div
class="mx-md-5 d-flex flex-wrap justify-content-md-center justify-content-between mb-4 gap-2" class="mx-md-5 d-flex flex-wrap justify-content-md-center justify-content-between mb-4 gap-2"
> >
<b-form-radio <BFormRadio
v-if="botStore.activeBot.botApiVersion >= 2.15" v-if="botStore.activeBot.botApiVersion >= 2.15"
v-model="btFormMode" v-model="btFormMode"
name="bt-form-radios" name="bt-form-radios"
@ -18,18 +18,18 @@
class="mx-1 flex-samesize-items" class="mx-1 flex-samesize-items"
value="historicResults" value="historicResults"
:disabled="!botStore.activeBot.canRunBacktest" :disabled="!botStore.activeBot.canRunBacktest"
><i-mdi-cloud-download class="me-2" />Load Results</b-form-radio ><i-mdi-cloud-download class="me-2" />Load Results</BFormRadio
> >
<b-form-radio <BFormRadio
v-model="btFormMode" v-model="btFormMode"
name="bt-form-radios" name="bt-form-radios"
button button
class="mx-1 flex-samesize-items" class="mx-1 flex-samesize-items"
value="run" value="run"
:disabled="!botStore.activeBot.canRunBacktest" :disabled="!botStore.activeBot.canRunBacktest"
><i-mdi-run-fast class="me-2" />Run backtest</b-form-radio ><i-mdi-run-fast class="me-2" />Run backtest</BFormRadio
> >
<b-form-radio <BFormRadio
id="bt-analyze-btn" id="bt-analyze-btn"
v-model="btFormMode" v-model="btFormMode"
name="bt-form-radios" name="bt-form-radios"
@ -37,9 +37,9 @@
class="mx-1 flex-samesize-items" class="mx-1 flex-samesize-items"
value="results" value="results"
:disabled="!hasBacktestResult" :disabled="!hasBacktestResult"
><i-mdi-table-eye class="me-2" />Analyze result</b-form-radio ><i-mdi-table-eye class="me-2" />Analyze result</BFormRadio
> >
<b-form-radio <BFormRadio
v-if="hasMultiBacktestResult" v-if="hasMultiBacktestResult"
v-model="btFormMode" v-model="btFormMode"
name="bt-form-radios" name="bt-form-radios"
@ -47,25 +47,25 @@
class="mx-1 flex-samesize-items" class="mx-1 flex-samesize-items"
value="compare-results" value="compare-results"
:disabled="!hasMultiBacktestResult" :disabled="!hasMultiBacktestResult"
><i-mdi-compare-horizontal class="me-2" />Compare results</b-form-radio ><i-mdi-compare-horizontal class="me-2" />Compare results</BFormRadio
> >
<b-form-radio <BFormRadio
v-model="btFormMode" v-model="btFormMode"
name="bt-form-radios" name="bt-form-radios"
button button
class="mx-1 flex-samesize-items" class="mx-1 flex-samesize-items"
value="visualize-summary" value="visualize-summary"
:disabled="!hasBacktestResult" :disabled="!hasBacktestResult"
><i-mdi-chart-bell-curve-cumulative class="me-2" />Visualize summary</b-form-radio ><i-mdi-chart-bell-curve-cumulative class="me-2" />Visualize summary</BFormRadio
> >
<b-form-radio <BFormRadio
v-model="btFormMode" v-model="btFormMode"
name="bt-form-radios" name="bt-form-radios"
button button
class="mx-1 flex-samesize-items" class="mx-1 flex-samesize-items"
value="visualize" value="visualize"
:disabled="!hasBacktestResult" :disabled="!hasBacktestResult"
><i-mdi-chart-timeline-variant-shimmer class="me-2" />Visualize result</b-form-radio ><i-mdi-chart-timeline-variant-shimmer class="me-2" />Visualize result</BFormRadio
> >
</div> </div>
<small v-show="botStore.activeBot.backtestRunning" class="text-end bt-running-label" <small v-show="botStore.activeBot.backtestRunning" class="text-end bt-running-label"
@ -83,7 +83,7 @@
class="sticky-top sticky-offset me-3 d-flex flex-column absolute" class="sticky-top sticky-offset me-3 d-flex flex-column absolute"
style="max-height: calc(100vh - 60px)" style="max-height: calc(100vh - 60px)"
> >
<b-button <BButton
class="align-self-start" class="align-self-start"
aria-label="Close" aria-label="Close"
size="sm" size="sm"
@ -92,7 +92,7 @@
> >
<i-mdi-chevron-right v-if="!showLeftBar" width="24" height="24" /> <i-mdi-chevron-right v-if="!showLeftBar" width="24" height="24" />
<i-mdi-chevron-left v-if="showLeftBar" width="24" height="24" /> <i-mdi-chevron-left v-if="showLeftBar" width="24" height="24" />
</b-button> </BButton>
<Transition name="fade"> <Transition name="fade">
<BacktestResultSelect <BacktestResultSelect
v-if="showLeftBar" v-if="showLeftBar"

View File

@ -1,8 +1,8 @@
<template> <template>
<div class="container"> <div class="container">
<b-card header="Freqtrade bot Login"> <BCard header="Freqtrade bot Login">
<BotLogin ref="loginForm" /> <BotLogin ref="loginForm" />
</b-card> </BCard>
</div> </div>
</template> </template>

View File

@ -26,11 +26,11 @@
v-if="botStore.activeBot.detailTradeId && botStore.activeBot.tradeDetail" v-if="botStore.activeBot.detailTradeId && botStore.activeBot.tradeDetail"
class="d-flex flex-column" class="d-flex flex-column"
> >
<b-button <BButton
size="sm" size="sm"
class="align-self-start my-1 ms-1" class="align-self-start my-1 ms-1"
@click="botStore.activeBot.setDetailTrade(null)" @click="botStore.activeBot.setDetailTrade(null)"
><i-mdi-arrow-left /> Back</b-button ><i-mdi-arrow-left /> Back</BButton
> >
<TradeDetail <TradeDetail
:trade="botStore.activeBot.tradeDetail" :trade="botStore.activeBot.tradeDetail"

View File

@ -1,83 +1,78 @@
<template> <template>
<div class="container mt-3"> <div class="container mt-3">
<b-card header="FreqUI Settings"> <BCard header="FreqUI Settings">
<div class="text-start d-flex flex-column gap-2"> <div class="text-start d-flex flex-column gap-2">
<p>UI Version: {{ settingsStore.uiVersion }}</p> <p>UI Version: {{ settingsStore.uiVersion }}</p>
<div class="d-flex flex-column border rounded p-2 mb-2 gap-2"> <div class="d-flex flex-column border rounded p-2 mb-2 gap-2">
<h4>UI settings</h4> <h4>UI settings</h4>
<b-form-group <BFormGroup
description="Lock dynamic layouts, so they cannot move anymore. Can also be set from the navbar at the top." description="Lock dynamic layouts, so they cannot move anymore. Can also be set from the navbar at the top."
> >
<b-form-checkbox v-model="layoutStore.layoutLocked">Lock layout</b-form-checkbox> <BFormCheckbox v-model="layoutStore.layoutLocked">Lock layout</BFormCheckbox>
</b-form-group> </BFormGroup>
<b-form-group description="Reset dynamic layouts to how they were."> <BFormGroup description="Reset dynamic layouts to how they were.">
<b-button size="sm" class="me-1" @click="resetDynamicLayout">Reset layout</b-button> <BButton size="sm" class="me-1" @click="resetDynamicLayout">Reset layout</BButton>
</b-form-group> </BFormGroup>
<b-form-group <BFormGroup
label="Show open trades in header" label="Show open trades in header"
description="Decide if open trades should be visualized" description="Decide if open trades should be visualized"
> >
<b-form-select <BFormSelect
v-model="settingsStore.openTradesInTitle" v-model="settingsStore.openTradesInTitle"
:options="openTradesOptions" :options="openTradesOptions"
></b-form-select> ></BFormSelect>
</b-form-group> </BFormGroup>
<b-form-group <BFormGroup
label="UTC Timezone" label="UTC Timezone"
description="Select timezone (we recommend UTC is recommended as exchanges usually work in UTC)" description="Select timezone (we recommend UTC is recommended as exchanges usually work in UTC)"
> >
<b-form-select <BFormSelect v-model="settingsStore.timezone" :options="timezoneOptions"></BFormSelect>
v-model="settingsStore.timezone" </BFormGroup>
:options="timezoneOptions" <BFormGroup description="Keep background sync running while other bots are selected.">
></b-form-select> <BFormCheckbox v-model="settingsStore.backgroundSync">Background sync</BFormCheckbox>
</b-form-group> </BFormGroup>
<b-form-group description="Keep background sync running while other bots are selected."> <BFormGroup description="Use confirmation dialogs when force-exiting a trade.">
<b-form-checkbox v-model="settingsStore.backgroundSync" <BFormCheckbox v-model="settingsStore.confirmDialog"
>Background sync</b-form-checkbox >Show Confirm Dialog for Trade Exits</BFormCheckbox
> >
</b-form-group> </BFormGroup>
<b-form-group description="Use confirmation dialogs when force-exiting a trade.">
<b-form-checkbox v-model="settingsStore.confirmDialog"
>Show Confirm Dialog for Trade Exits</b-form-checkbox
>
</b-form-group>
</div> </div>
<div class="d-flex flex-column border rounded p-2 mb-2 gap-2"> <div class="d-flex flex-column border rounded p-2 mb-2 gap-2">
<h4>Chart settings</h4> <h4>Chart settings</h4>
<b-form-group <BFormGroup
description="Chart scale Side (Should the scale be displayed on the right or left?)" description="Chart scale Side (Should the scale be displayed on the right or left?)"
> >
<b-form-radio-group <BFormRadioGroup
v-model="settingsStore.chartLabelSide" v-model="settingsStore.chartLabelSide"
name="chart-preference-options" name="chart-preference-options"
:options="[ :options="[
{ value: 'left', text: 'Left' }, { value: 'left', text: 'Left' },
{ value: 'right', text: 'Right' }, { value: 'right', text: 'Right' },
]" ]"
></b-form-radio-group> ></BFormRadioGroup>
</b-form-group> </BFormGroup>
<b-form-group description="Use Heikin Ashi candles in your charts"> <BFormGroup description="Use Heikin Ashi candles in your charts">
<b-form-checkbox v-model="settingsStore.useHeikinAshiCandles" <BFormCheckbox v-model="settingsStore.useHeikinAshiCandles"
>Use Heikin Ashi candles.</b-form-checkbox >Use Heikin Ashi candles.</BFormCheckbox
> >
</b-form-group> </BFormGroup>
<b-form-group <BFormGroup
description="Can reduce the transfer size for large dataframes. May require additional calls if the plot config changes." description="Can reduce the transfer size for large dataframes. May require additional calls if the plot config changes."
> >
<b-form-checkbox v-model="settingsStore.useReducedPairCalls" <BFormCheckbox v-model="settingsStore.useReducedPairCalls"
>Only request necessary columns (recommended to be checked).</b-form-checkbox >Only request necessary columns (recommended to be checked).</BFormCheckbox
> >
</b-form-group> </BFormGroup>
<b-form-group description="Candle Color Preference"> <BFormGroup description="Candle Color Preference">
<b-form-radio-group <BFormRadioGroup
id="settings-color-preference-radio-group" id="settings-color-preference-radio-group"
v-model="colorStore.colorPreference" v-model="colorStore.colorPreference"
name="color-preference-options" name="color-preference-options"
@change="colorStore.updateProfitLossColor" @change="colorStore.updateProfitLossColor"
> >
<b-form-radio <BFormRadio
v-for="option in colorPreferenceOptions" v-for="option in colorPreferenceOptions"
:key="option.value" :key="option.value"
:value="option.value" :value="option.value"
@ -101,29 +96,29 @@
class="color-candle-arrows" class="color-candle-arrows"
/> />
</div> </div>
</b-form-radio> </BFormRadio>
</b-form-radio-group> </BFormRadioGroup>
</b-form-group> </BFormGroup>
</div> </div>
<div class="d-flex flex-column border rounded p-2 mb-2 gap-2"> <div class="d-flex flex-column border rounded p-2 mb-2 gap-2">
<b-form-group description="Notifications"> <BFormGroup description="Notifications">
<h4>Notification Settings</h4> <h4>Notification Settings</h4>
<b-form-checkbox v-model="settingsStore.notifications[FtWsMessageTypes.entryFill]" <BFormCheckbox v-model="settingsStore.notifications[FtWsMessageTypes.entryFill]"
>Entry notifications</b-form-checkbox >Entry notifications</BFormCheckbox
> >
<b-form-checkbox v-model="settingsStore.notifications[FtWsMessageTypes.exitFill]" <BFormCheckbox v-model="settingsStore.notifications[FtWsMessageTypes.exitFill]"
>Exit notifications</b-form-checkbox >Exit notifications</BFormCheckbox
> >
<b-form-checkbox v-model="settingsStore.notifications[FtWsMessageTypes.entryCancel]" <BFormCheckbox v-model="settingsStore.notifications[FtWsMessageTypes.entryCancel]"
>Entry Cancel notifications</b-form-checkbox >Entry Cancel notifications</BFormCheckbox
> >
<b-form-checkbox v-model="settingsStore.notifications[FtWsMessageTypes.exitCancel]" <BFormCheckbox v-model="settingsStore.notifications[FtWsMessageTypes.exitCancel]"
>Exit Cancel notifications</b-form-checkbox >Exit Cancel notifications</BFormCheckbox
> >
</b-form-group> </BFormGroup>
</div> </div>
</div> </div>
</b-card> </BCard>
</div> </div>
</template> </template>

View File

@ -28,34 +28,34 @@
<div class="mt-1 d-flex justify-content-center"> <div class="mt-1 d-flex justify-content-center">
<BotControls class="mt-1 mb-2" /> <BotControls class="mt-1 mb-2" />
</div> </div>
<b-tabs content-class="mt-3" class="mt-1"> <BTabs content-class="mt-3" class="mt-1">
<b-tab title="Pairs combined" active> <BTab title="Pairs combined" active>
<PairSummary <PairSummary
:pairlist="botStore.activeBot.whitelist" :pairlist="botStore.activeBot.whitelist"
:current-locks="botStore.activeBot.activeLocks" :current-locks="botStore.activeBot.activeLocks"
:trades="botStore.activeBot.openTrades" :trades="botStore.activeBot.openTrades"
/> />
</b-tab> </BTab>
<b-tab title="General"> <BTab title="General">
<BotStatus /> <BotStatus />
</b-tab> </BTab>
<b-tab title="Performance" lazy> <BTab title="Performance" lazy>
<BotPerformance /> <BotPerformance />
</b-tab> </BTab>
<b-tab title="Balance" lazy> <BTab title="Balance" lazy>
<BotBalance /> <BotBalance />
</b-tab> </BTab>
<b-tab title="Time Breakdown" lazy> <BTab title="Time Breakdown" lazy>
<PeriodBreakdown /> <PeriodBreakdown />
</b-tab> </BTab>
<b-tab title="Pairlist" lazy> <BTab title="Pairlist" lazy>
<PairListLive /> <PairListLive />
</b-tab> </BTab>
<b-tab title="Pair Locks" lazy> <BTab title="Pair Locks" lazy>
<PairLockList /> <PairLockList />
</b-tab> </BTab>
</b-tabs> </BTabs>
</DraggableContainer> </DraggableContainer>
</GridItem> </GridItem>
<GridItem <GridItem