frequi_origin/src/views/Trade.vue

158 lines
4.2 KiB
Vue
Raw Normal View History

<template>
2020-05-21 17:48:53 +00:00
<div class="container-fluid h-100">
<div class="row">
<div class="row col-md-4">
<div class="col-md-12">
<div class="row">
<div class="col-md-12">
2020-05-29 06:42:39 +00:00
<div>
<button @click="refreshAll()" class="btn btn-secondary">
Refresh all
</button>
<b-form-checkbox class="float-right" v-model="autoRefresh" size="lg" switch
>AutoRefresh</b-form-checkbox
>
</div>
<BotControls class="mt-3" />
</div>
<div class="col-md-12">
<b-tabs content-class="mt-3" class="mt-3">
<b-tab title="Status" active>
<BotStatus />
</b-tab>
<b-tab title="Performance">
<Performance class="performance-view" />
</b-tab>
<b-tab title="Balance" lazy>
<Balance />
</b-tab>
<b-tab title="Daily Stats" lazy>
<DailyStats />
</b-tab>
<b-tab title="Pairlist">
<FTBotAPIPairList />
</b-tab>
</b-tabs>
</div>
</div>
</div>
</div>
<div class="col-md-8">
<div class="row">
<div class="col-md-12">
<TradeList
class="open-trades"
:trades="openTrades"
title="Open trades"
v-bind:activeTrades="true"
2020-05-27 18:24:57 +00:00
emptyText="Currently no open trades."
/>
</div>
</div>
<div class="row">
<div class="col-md-12">
2020-05-27 18:24:57 +00:00
<TradeList
class="trade-history"
:trades="closedtrades"
title="Trade history"
emptyText="No closed trades so far."
2020-06-04 17:56:19 +00:00
v-if="!detailTradeId"
2020-05-27 18:24:57 +00:00
/>
2020-06-04 17:56:19 +00:00
<TradeDetail v-if="detailTradeId" :trade="openTradeDetail"></TradeDetail>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import { mapActions, mapState, mapGetters } from 'vuex';
import TradeList from '@/components/ftbot/TradeList.vue';
import Performance from '@/components/ftbot/Performance.vue';
import BotControls from '@/components/ftbot/BotControls.vue';
import BotStatus from '@/components/ftbot/BotStatus.vue';
import Balance from '@/components/ftbot/Balance.vue';
import DailyStats from '@/components/ftbot/DailyStats.vue';
import FTBotAPIPairList from '@/components/ftbot/FTBotAPIPairList.vue';
2020-06-04 17:56:19 +00:00
import TradeDetail from '@/components/ftbot/TradeDetail.vue';
export default {
name: 'Trade',
2020-05-18 18:49:30 +00:00
components: {
TradeList,
Performance,
BotControls,
BotStatus,
Balance,
DailyStats,
FTBotAPIPairList,
2020-06-04 17:56:19 +00:00
TradeDetail,
2020-05-18 18:49:30 +00:00
},
created() {
2020-05-25 18:41:17 +00:00
this.refreshOnce();
this.refreshAll();
},
data() {
return {
autoRefresh: true,
refresh_interval: null,
refresh_interval_slow: null,
};
},
computed: {
2020-06-04 17:56:19 +00:00
...mapState('ftbot', ['open_trades', 'detailTradeId']),
...mapGetters('ftbot', ['openTrades', 'closedtrades', 'openTradeDetail']),
},
methods: {
2020-05-25 18:41:17 +00:00
...mapActions(['refreshSlow', 'refreshFrequent', 'refreshAll', 'refreshOnce']),
// ...mapActions('ftbot', ['getTrades', 'getProfit', 'getState']),
startRefresh() {
2020-05-18 18:49:30 +00:00
console.log('Starting automatic refresh.');
this.refreshFrequent();
this.refresh_interval = setInterval(() => {
this.refreshFrequent();
}, 5000);
this.refreshSlow();
this.refresh_interval_slow = setInterval(() => {
this.refreshSlow();
}, 60000);
},
stopRefresh() {
2020-05-18 18:49:30 +00:00
console.log('Stopping automatic refresh.');
clearInterval(this.refresh_interval);
clearInterval(this.refresh_interval_slow);
},
},
mounted() {
this.startRefresh();
},
beforeDestroy() {
this.stopRefresh();
},
watch: {
autoRefresh(val) {
if (val) {
this.startRefresh();
} else {
this.stopRefresh();
}
},
},
};
</script>
<style scoped>
.open-trades {
min-height: 250px;
2020-05-21 17:48:53 +00:00
max-height: 300px;
}
.trade-history {
min-height: 300px;
max-height: 500px;
}
</style>