Add TradeProfit pill component

This commit is contained in:
Matthias 2021-09-04 10:35:44 +02:00
parent a7117cae2e
commit 8465208bbf
4 changed files with 54 additions and 10 deletions

View File

@ -14,9 +14,7 @@
{{ comb.pair }} {{ comb.pair }}
<span v-if="comb.locks" :title="comb.lockReason"> &#128274; </span> <span v-if="comb.locks" :title="comb.lockReason"> &#128274; </span>
</div> </div>
<b-badge :variant="comb.profit > 0 ? 'success' : 'danger'" pill :title="comb.profitString">{{ <TradeProfit :trade="comb.trade" />
comb.profit ? formatPercent(comb.profit) : ''
}}</b-badge>
</b-list-group-item> </b-list-group-item>
</b-list-group> </b-list-group>
</template> </template>
@ -27,6 +25,7 @@ import { BotStoreGetters } from '@/store/modules/ftbot';
import { Lock, Trade } from '@/types'; import { Lock, Trade } from '@/types';
import { Component, Prop, Vue } from 'vue-property-decorator'; import { Component, Prop, Vue } from 'vue-property-decorator';
import { namespace } from 'vuex-class'; import { namespace } from 'vuex-class';
import TradeProfit from '@/components/ftbot/TradeProfit.vue';
const ftbot = namespace('ftbot'); const ftbot = namespace('ftbot');
@ -39,7 +38,7 @@ interface CombinedPairList {
profit: number; profit: number;
} }
@Component({}) @Component({ components: { TradeProfit } })
export default class PairSummary extends Vue { export default class PairSummary extends Vue {
@Prop({ required: true }) pairlist!: string[]; @Prop({ required: true }) pairlist!: string[];

View File

@ -5,6 +5,7 @@
</template> </template>
<script lang="ts"> <script lang="ts">
// TODO: evaluate if this is still used
import { Component, Vue, Prop } from 'vue-property-decorator'; import { Component, Vue, Prop } from 'vue-property-decorator';
import { Trade } from '@/types'; import { Trade } from '@/types';

View File

@ -33,7 +33,6 @@
</b-button> </b-button>
</template> </template>
<template #cell(pair)="row"> <template #cell(pair)="row">
<ProfitSymbol :trade="row.item" />
<span> <span>
{{ {{
`${row.item.pair}${ `${row.item.pair}${
@ -43,10 +42,7 @@
</span> </span>
</template> </template>
<template #cell(profit)="row"> <template #cell(profit)="row">
{{ formatPercent(row.item.profit_ratio, 2) }} <trade-profit :trade="row.item" />
<small :title="row.item.stake_currency || stakeCurrency">
{{ `(${formatPriceWithDecimals(row.item.profit_abs)})` }}
</small>
</template> </template>
<template #cell(open_timestamp)="row"> <template #cell(open_timestamp)="row">
<DateTimeTZ :date="row.item.open_timestamp" /> <DateTimeTZ :date="row.item.open_timestamp" />
@ -87,11 +83,12 @@ import ForceSellIcon from 'vue-material-design-icons/CloseBoxMultiple.vue';
import DateTimeTZ from '@/components/general/DateTimeTZ.vue'; import DateTimeTZ from '@/components/general/DateTimeTZ.vue';
import { BotStoreGetters } from '@/store/modules/ftbot'; import { BotStoreGetters } from '@/store/modules/ftbot';
import ProfitSymbol from './ProfitSymbol.vue'; import ProfitSymbol from './ProfitSymbol.vue';
import TradeProfit from './TradeProfit.vue';
const ftbot = namespace('ftbot'); const ftbot = namespace('ftbot');
@Component({ @Component({
components: { ProfitSymbol, DeleteIcon, ForceSellIcon, DateTimeTZ }, components: { ProfitSymbol, DeleteIcon, ForceSellIcon, DateTimeTZ, TradeProfit },
}) })
export default class TradeList extends Vue { export default class TradeList extends Vue {
$refs!: { $refs!: {

View File

@ -0,0 +1,47 @@
<template>
<div
class="profit-pill px-2"
:class="trade.profit_ratio > 0 ? 'profit-pill-profit' : ''"
:title="profitDesc"
>
{{ formatPercent(trade.profit_ratio, 2) }}
<small :title="trade.stake_currency || stakeCurrency">
{{ `(${formatPrice(trade.profit_abs, 3)})` }}
</small>
</div>
</template>
<script lang="ts">
import { formatPercent, formatPrice, timestampms } from '@/shared/formatters';
import { Trade } from '@/types';
import { Component, Prop, Vue } from 'vue-property-decorator';
@Component({})
export default class TradeProfit extends Vue {
@Prop({ required: true, type: Object }) trade!: Trade;
formatPercent = formatPercent;
timestampms = timestampms;
formatPrice = formatPrice;
get profitDesc(): string {
let profit = `Current profit: ${formatPercent(this.trade.profit_ratio)} (${
this.trade.profit_abs
})`;
profit += `\nOpen since: ${timestampms(this.trade.open_timestamp)}`;
return profit;
}
}
</script>
<style scoped lang="scss">
.profit-pill {
background: #ef5350;
border-radius: 6px;
}
.profit-pill-profit {
background: #26a69a;
}
</style>