frequi_origin/src/components/ftbot/ReloadControl.vue

112 lines
2.3 KiB
Vue
Raw Normal View History

<template>
2020-11-13 19:19:16 +00:00
<div class="container-fluid">
<div class="row">
<button class="m-1 btn btn-primary" @click="refreshAll(true)"><RefreshIcon /></button>
<b-form-checkbox
v-model="autoRefreshLoc"
2020-11-20 05:48:18 +00:00
class="ml-auto float-right mr-2 my-auto"
2020-11-13 19:19:16 +00:00
title="AutoRefresh"
switch
>AutoRefresh</b-form-checkbox
>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue, Watch } from 'vue-property-decorator';
2020-07-19 13:35:10 +00:00
import { Action, State } from 'vuex-class';
2020-11-13 19:19:16 +00:00
import RefreshIcon from 'vue-material-design-icons/Refresh.vue';
2020-11-13 19:19:16 +00:00
@Component({ components: { RefreshIcon } })
export default class ReloadControl extends Vue {
2020-09-07 18:44:57 +00:00
refreshInterval: number | null = null;
2020-09-07 18:44:57 +00:00
refreshIntervalSlow: number | null = null;
created() {
2020-07-19 13:35:10 +00:00
if (this.loggedIn) {
this.refreshOnce();
this.refreshAll(true);
2020-07-19 13:35:10 +00:00
}
}
mounted() {
2021-04-18 17:41:19 +00:00
this.startRefresh(false);
}
beforeDestroy() {
this.stopRefresh();
}
2020-07-19 13:35:10 +00:00
@State loggedIn;
2020-07-23 17:58:25 +00:00
@State autoRefresh!: boolean;
2020-09-08 13:45:01 +00:00
// eslint-disable-next-line @typescript-eslint/no-unused-vars
2020-07-23 17:58:25 +00:00
@Action setAutoRefresh!: (newValue: boolean) => void;
@Action refreshSlow;
@Action refreshFrequent;
@Action refreshAll;
@Action refreshOnce;
2020-07-23 17:58:25 +00:00
get autoRefreshLoc() {
return this.autoRefresh;
}
set autoRefreshLoc(newValue: boolean) {
this.setAutoRefresh(newValue);
}
2021-04-18 17:41:19 +00:00
startRefresh(runNow: boolean) {
2020-07-19 13:35:10 +00:00
if (this.loggedIn !== true) {
console.log('Not logged in.');
return;
}
console.log('Starting automatic refresh.');
2021-04-18 17:41:19 +00:00
if (runNow) {
this.refreshFrequent(false);
}
if (this.autoRefresh) {
2020-09-07 18:44:57 +00:00
this.refreshInterval = window.setInterval(() => {
this.refreshFrequent();
}, 5000);
}
2021-04-18 17:41:19 +00:00
if (runNow) {
this.refreshSlow(true);
}
if (this.autoRefresh) {
2020-09-07 18:44:57 +00:00
this.refreshIntervalSlow = window.setInterval(() => {
this.refreshSlow(false);
}, 60000);
}
}
stopRefresh() {
console.log('Stopping automatic refresh.');
if (this.refreshInterval) {
2020-09-07 18:44:57 +00:00
window.clearInterval(this.refreshInterval);
}
if (this.refreshIntervalSlow) {
2020-09-07 18:44:57 +00:00
window.clearInterval(this.refreshIntervalSlow);
}
}
@Watch('autoRefresh')
watchAutoRefresh(val) {
if (val) {
2021-04-18 17:41:19 +00:00
this.startRefresh(true);
} else {
this.stopRefresh();
}
}
}
</script>
<style scoped></style>