wuhu-torn-helper/src/vue/MonitorMgrView.vue
2023-09-19 10:54:30 +08:00

71 lines
2.4 KiB
Vue

<template>
<el-card shadow="never">
<template #header>
<span> CD 空转</span>
</template>
<el-row>
<el-col span="1"></el-col>
<el-col span="23">
<el-form class="form" label-position="left" label-width="30%">
<el-form-item label="开启">
<el-switch v-model="_drugCDMonitor"/>
<span class="desc">开启后每个页面都会存在一个活跃的监视器,但是后台页面需要刷新后才会开启</span>
</el-form-item>
<el-form-item label="检查间隔(毫秒)">
<el-input v-model="drugCDMonitorLoop" :disabled="_drugCDMonitor" type="number"/>
<span class="desc">每个监视器在间隔时间后会检查一次</span>
</el-form-item>
</el-form>
</el-col>
</el-row>
</el-card>
</template>
<script lang="ts" setup>
import { onMounted, ref, watch } from "vue";
import drugCDMonitor from "../ts/monitor/DrugCDMonitor";
import IntervalSwitch from "../ts/monitor/IntervalSwitch";
import { Container } from "../ts/container/Container";
import LocalConfigWrapper from "../ts/class/LocalConfigWrapper";
import Logger from "../ts/class/Logger";
const _drugCDMonitor = ref(false)
const drugCDMonitorLoop = ref(999999)
const localConfigWrapper = Container.factory(LocalConfigWrapper)
const logger = Container.factory(Logger)
onMounted(() => {
_drugCDMonitor.value = !!drugCDMonitor.getId() && localConfigWrapper.config.monitorOn.includes('drugCDMonitor')
drugCDMonitorLoop.value = localConfigWrapper.config.drugCDMonitorInterval
watch([_drugCDMonitor, drugCDMonitorLoop], ([_drugCDMonitor, drugCDMonitorLoop]) => {
logger.info('新变动', _drugCDMonitor, drugCDMonitorLoop)
const monitorOn = localConfigWrapper.config.monitorOn
if (_drugCDMonitor) {
drugCDMonitor.setMs(drugCDMonitorLoop)
drugCDMonitor.switcher(IntervalSwitch.ON)
monitorOn.push('drugCDMonitor')
} else {
drugCDMonitor.switcher(IntervalSwitch.OFF)
for (let i = 0; i < monitorOn.length; i++) {
if (monitorOn[i] === 'drugCDMonitor') {
monitorOn.splice(i, 1)
break
}
}
}
localConfigWrapper.config.monitorOn = monitorOn
localConfigWrapper.config.drugCDMonitorInterval = Number(drugCDMonitorLoop)
})
})
</script>
<style scoped>
.form span.desc {
width: 100%;
color: #363636;
}
</style>