更新
This commit is contained in:
parent
c48165cd78
commit
27dfc7aedb
13
CHANGELOG.md
13
CHANGELOG.md
@ -5,6 +5,19 @@
|
|||||||
|
|
||||||
# CHANGE
|
# CHANGE
|
||||||
|
|
||||||
|
## 1.1.1
|
||||||
|
|
||||||
|
2023年09月13日
|
||||||
|
|
||||||
|
### 修改
|
||||||
|
|
||||||
|
- 调整了上次动作的显示逻辑
|
||||||
|
- 更准确的现金变动提醒
|
||||||
|
|
||||||
|
### 添加
|
||||||
|
|
||||||
|
- 监控模块-毒CD提醒
|
||||||
|
|
||||||
## 1.1.0
|
## 1.1.0
|
||||||
|
|
||||||
2023年09月11日
|
2023年09月11日
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "wuhu-torn-helper",
|
"name": "wuhu-torn-helper",
|
||||||
"version": "1.1.0",
|
"version": "1.1.2",
|
||||||
"description": "芜湖助手",
|
"description": "芜湖助手",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"release": "cross-env NODE_ENV=production rollup -c && node build.mjs",
|
"release": "cross-env NODE_ENV=production rollup -c && node build.mjs",
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -283,6 +283,6 @@ div#wh-popup::after {
|
|||||||
user-select: none;
|
user-select: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-overlay {
|
/*.el-overlay {*/
|
||||||
backdrop-filter: blur(20px);
|
/* backdrop-filter: blur(20px);*/
|
||||||
}
|
/*}*/
|
||||||
|
|||||||
@ -19,6 +19,8 @@ import TornPDAUtils from "./utils/TornPDAUtils";
|
|||||||
import TravelItem from "./action/TravelItem";
|
import TravelItem from "./action/TravelItem";
|
||||||
import IconHelper from "./IconHelper";
|
import IconHelper from "./IconHelper";
|
||||||
import MsgWrapper from "./utils/MsgWrapper";
|
import MsgWrapper from "./utils/MsgWrapper";
|
||||||
|
import toThousands from "../func/utils/toThousands";
|
||||||
|
import { WHIntervalLoader } from "./interval/IntervalUnit";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 脚本不区分页面的通用功能入口
|
* 脚本不区分页面的通用功能入口
|
||||||
@ -34,7 +36,6 @@ export class Common {
|
|||||||
private readonly tornPDAUtils: TornPDAUtils,
|
private readonly tornPDAUtils: TornPDAUtils,
|
||||||
private readonly logger: Logger,
|
private readonly logger: Logger,
|
||||||
private readonly buyBeerHelper: BuyBeerHelper,
|
private readonly buyBeerHelper: BuyBeerHelper,
|
||||||
// private readonly icon: ZhongIcon,
|
|
||||||
private readonly fetchUtils: FetchUtils,
|
private readonly fetchUtils: FetchUtils,
|
||||||
private readonly moduleLoader: ModuleLoader,
|
private readonly moduleLoader: ModuleLoader,
|
||||||
private readonly msgWrapper: MsgWrapper,
|
private readonly msgWrapper: MsgWrapper,
|
||||||
@ -61,6 +62,7 @@ export class Common {
|
|||||||
|
|
||||||
this.moduleLoader.push(SidebarHelper);
|
this.moduleLoader.push(SidebarHelper);
|
||||||
this.moduleLoader.push(TravelItem);
|
this.moduleLoader.push(TravelItem);
|
||||||
|
this.moduleLoader.push(WHIntervalLoader)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 解决一直转圈(加载中)的问题
|
* 解决一直转圈(加载中)的问题
|
||||||
@ -122,6 +124,7 @@ export class Common {
|
|||||||
|
|
||||||
// 现金变动提醒
|
// 现金变动提醒
|
||||||
if (this.localConfigWrapper.config.CashChangeAlert) CommonUtils.elementReady("#user-money").then(userMoney => {
|
if (this.localConfigWrapper.config.CashChangeAlert) CommonUtils.elementReady("#user-money").then(userMoney => {
|
||||||
|
let before = ''
|
||||||
new MutationObserver((mutations, observer) => {
|
new MutationObserver((mutations, observer) => {
|
||||||
if (!this.localConfigWrapper.config.CashChangeAlert) {
|
if (!this.localConfigWrapper.config.CashChangeAlert) {
|
||||||
observer.disconnect();
|
observer.disconnect();
|
||||||
@ -131,11 +134,16 @@ export class Common {
|
|||||||
this.logger.info("现金变动提醒", mutations);
|
this.logger.info("现金变动提醒", mutations);
|
||||||
mutations.forEach(item => {
|
mutations.forEach(item => {
|
||||||
if (item.attributeName === 'data-money') {
|
if (item.attributeName === 'data-money') {
|
||||||
// this.icon.updateCashView(userMoney.innerText);
|
let change = userMoney.innerText
|
||||||
this.msgWrapper.create(
|
.trim()
|
||||||
'现金变动 ' + item.oldValue + ' ➡️ ' + userMoney.innerText,
|
.replaceAll(/[,$]/g, '')
|
||||||
{ sysNotify: true }
|
if (change !== before) {
|
||||||
);
|
this.msgWrapper.create(
|
||||||
|
'现金变动 ' + item.oldValue + ' --> ' + toThousands(change),
|
||||||
|
{ sysNotify: true }
|
||||||
|
);
|
||||||
|
before = change
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}).observe(userMoney, { attributes: true, attributeOldValue: true })
|
}).observe(userMoney, { attributes: true, attributeOldValue: true })
|
||||||
|
|||||||
@ -30,7 +30,7 @@ export default class Logger {
|
|||||||
return Log.getTime()
|
return Log.getTime()
|
||||||
}
|
}
|
||||||
|
|
||||||
static factory<T extends {}>(classT: T): Logger {
|
static factory(classT: new(...args) => any): Logger {
|
||||||
let className = GetClassName(classT);
|
let className = GetClassName(classT);
|
||||||
return new class extends Logger {
|
return new class extends Logger {
|
||||||
info(...o: any): void {
|
info(...o: any): void {
|
||||||
|
|||||||
@ -28,7 +28,7 @@ export default class ModuleLoader {
|
|||||||
this.classes.length = 0;
|
this.classes.length = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public push<T>(clas: T): void {
|
public push(clazz: new(...arg: any) => { init: () => void }): void {
|
||||||
this.classes.push(clas);
|
this.classes.push(clazz);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,6 +14,8 @@ import LocalConfigWrapper from "../LocalConfigWrapper";
|
|||||||
export default class FetchEventCallback extends Provider implements ResponseInject {
|
export default class FetchEventCallback extends Provider implements ResponseInject {
|
||||||
className = "FetchEventCallback";
|
className = "FetchEventCallback";
|
||||||
|
|
||||||
|
newNode = document.createElement('div')
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private readonly localConfigWrapper: LocalConfigWrapper,
|
private readonly localConfigWrapper: LocalConfigWrapper,
|
||||||
private readonly commonUtils: CommonUtils,
|
private readonly commonUtils: CommonUtils,
|
||||||
@ -32,11 +34,10 @@ export default class FetchEventCallback extends Provider implements ResponseInje
|
|||||||
window.setTimeout(async () => {
|
window.setTimeout(async () => {
|
||||||
let cont = CommonUtils.querySelector('[class*=profile-mini-_userProfileWrapper___]');
|
let cont = CommonUtils.querySelector('[class*=profile-mini-_userProfileWrapper___]');
|
||||||
let resp: MiniProfile = response.json as MiniProfile;
|
let resp: MiniProfile = response.json as MiniProfile;
|
||||||
let newNode = document.createElement('div');
|
|
||||||
let formatted = this.commonUtils.secondsFormat(resp.user.lastAction.seconds);
|
let formatted = this.commonUtils.secondsFormat(resp.user.lastAction.seconds);
|
||||||
|
|
||||||
newNode.innerText = '上次动作: ' + formatted;
|
(await cont).append(this.newNode);
|
||||||
(await cont).append(newNode);
|
this.newNode.innerText = '上次动作: ' + formatted;
|
||||||
}, 0);
|
}, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -105,6 +105,9 @@ class DefaultConfigType {
|
|||||||
// 自定义css
|
// 自定义css
|
||||||
@Notified()
|
@Notified()
|
||||||
CustomCss = '';
|
CustomCss = '';
|
||||||
|
|
||||||
|
monitorOn = ['drugCDMonitor']
|
||||||
|
drugCDMonitorInterval = 60000
|
||||||
}
|
}
|
||||||
|
|
||||||
export type Config = DefaultConfigType;
|
export type Config = DefaultConfigType;
|
||||||
|
|||||||
@ -8,6 +8,9 @@ import { Injectable } from "../../container/Injectable";
|
|||||||
import { Container } from "../../container/Container";
|
import { Container } from "../../container/Container";
|
||||||
import Logger from "../Logger";
|
import Logger from "../Logger";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated
|
||||||
|
*/
|
||||||
@ClassName('ChangeLogHandler')
|
@ClassName('ChangeLogHandler')
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class ChangeLogHandler extends Provider {
|
export class ChangeLogHandler extends Provider {
|
||||||
|
|||||||
47
src/ts/class/interval/DrugCDMonitor.ts
Normal file
47
src/ts/class/interval/DrugCDMonitor.ts
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
import IntervalType from "./IntervalUnit";
|
||||||
|
import ClassName from "../../container/ClassName";
|
||||||
|
import IntervalSwitch from "./IntervalSwitch";
|
||||||
|
import { SWITCHER } from "./SWITCHER";
|
||||||
|
import getSidebarData from "../../func/utils/getSidebarData";
|
||||||
|
import { Container } from "../../container/Container";
|
||||||
|
import MsgWrapper from "../utils/MsgWrapper";
|
||||||
|
import LocalConfigWrapper from "../LocalConfigWrapper";
|
||||||
|
|
||||||
|
@ClassName('DrugCDMonitor')
|
||||||
|
class DrugCDMonitor implements IntervalType {
|
||||||
|
private id: number = null
|
||||||
|
private ms: number
|
||||||
|
private readonly msgWrapper = Container.factory(MsgWrapper)
|
||||||
|
|
||||||
|
getId(): number {
|
||||||
|
return this.id
|
||||||
|
}
|
||||||
|
|
||||||
|
getMs(): number {
|
||||||
|
return this.ms
|
||||||
|
}
|
||||||
|
|
||||||
|
handler(): void {
|
||||||
|
const data = getSidebarData()
|
||||||
|
if (!data.statusIcons.icons.drug_cooldown) {
|
||||||
|
this.msgWrapper.create('警告: 药CD停转', { sysNotify: true })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setMs(ms: number): void {
|
||||||
|
this.ms = ms
|
||||||
|
}
|
||||||
|
|
||||||
|
switcher(s: IntervalSwitch): void {
|
||||||
|
SWITCHER(this, DrugCDMonitor, s)
|
||||||
|
}
|
||||||
|
|
||||||
|
setId(id: number): void {
|
||||||
|
this.id = id
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const drugCDMonitor = new DrugCDMonitor()
|
||||||
|
drugCDMonitor.setMs(Container.factory(LocalConfigWrapper).config.drugCDMonitorInterval)
|
||||||
|
export default drugCDMonitor
|
||||||
5
src/ts/class/interval/IntervalSwitch.ts
Normal file
5
src/ts/class/interval/IntervalSwitch.ts
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
enum IntervalSwitch {
|
||||||
|
ON = 9, OFF = 10
|
||||||
|
}
|
||||||
|
|
||||||
|
export default IntervalSwitch
|
||||||
34
src/ts/class/interval/IntervalUnit.ts
Normal file
34
src/ts/class/interval/IntervalUnit.ts
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
import drugCDMonitor from "./DrugCDMonitor";
|
||||||
|
import { Injectable } from "../../container/Injectable";
|
||||||
|
import ClassName from "../../container/ClassName";
|
||||||
|
import LocalConfigWrapper from "../LocalConfigWrapper";
|
||||||
|
import IntervalSwitch from "./IntervalSwitch";
|
||||||
|
|
||||||
|
export default interface IntervalType {
|
||||||
|
handler: () => void
|
||||||
|
switcher: (s: IntervalSwitch) => void
|
||||||
|
getId: () => number
|
||||||
|
setId: (id: number) => void
|
||||||
|
getMs: () => number
|
||||||
|
setMs: (ms: number) => void
|
||||||
|
}
|
||||||
|
|
||||||
|
export const intervalUnits: { [key: string]: IntervalType } = {
|
||||||
|
drugCDMonitor,
|
||||||
|
}
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
@ClassName('WHIntervalLoader')
|
||||||
|
export class WHIntervalLoader {
|
||||||
|
constructor(
|
||||||
|
private readonly localConfigWrapper: LocalConfigWrapper,
|
||||||
|
) {
|
||||||
|
}
|
||||||
|
|
||||||
|
init() {
|
||||||
|
const list = this.localConfigWrapper.config.monitorOn
|
||||||
|
for (let i = 0; i < list.length; i++) {
|
||||||
|
intervalUnits[list[i]].switcher(IntervalSwitch.ON)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
24
src/ts/class/interval/SWITCHER.ts
Normal file
24
src/ts/class/interval/SWITCHER.ts
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
import { GetClassName } from "../../container/ClassName";
|
||||||
|
import IntervalType from "./IntervalUnit";
|
||||||
|
import IntervalSwitch from "./IntervalSwitch";
|
||||||
|
|
||||||
|
export function SWITCHER(self: IntervalType, clazz: new () => IntervalType, s: IntervalSwitch) {
|
||||||
|
if (self.getMs() === null) {
|
||||||
|
throw new Error('循环时间为空')
|
||||||
|
}
|
||||||
|
switch (s) {
|
||||||
|
case IntervalSwitch.ON:
|
||||||
|
if (self.getId()) {
|
||||||
|
throw new TypeError(GetClassName(clazz) + ' 正在启用')
|
||||||
|
}
|
||||||
|
self.setId(window.setInterval(() => self.handler(), self.getMs()))
|
||||||
|
break
|
||||||
|
case IntervalSwitch.OFF:
|
||||||
|
if (self.getId()) {
|
||||||
|
window.clearInterval(self.getId())
|
||||||
|
self.setId(null)
|
||||||
|
} else {
|
||||||
|
throw new TypeError(GetClassName(clazz) + ' 未启用')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -35,8 +35,8 @@ export interface Icons {
|
|||||||
education: Education
|
education: Education
|
||||||
bazaar: Bazaar
|
bazaar: Bazaar
|
||||||
stock_market: StockMarket
|
stock_market: StockMarket
|
||||||
booster_cooldown: BoosterCooldown
|
booster_cooldown?: BoosterCooldown
|
||||||
drug_cooldown: DrugCooldown
|
drug_cooldown?: DrugCooldown
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface EnbyGender {
|
export interface EnbyGender {
|
||||||
|
|||||||
54
src/vue/ChangeLogView.vue
Normal file
54
src/vue/ChangeLogView.vue
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
<template>
|
||||||
|
<el-card shadow="never">
|
||||||
|
<el-row>
|
||||||
|
<el-col span="24">
|
||||||
|
<el-button @click="refresh">刷新</el-button>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col span="24">
|
||||||
|
<el-link href="https://gitlab.com/JJins/wuhu-torn-helper/-/raw/dev/CHANGELOG.md" target="_blank">
|
||||||
|
https://gitlab.com/JJins/wuhu-torn-helper/-/raw/dev/CHANGELOG.md
|
||||||
|
</el-link>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col span="24">
|
||||||
|
<div v-loading="!respond" class="wh-change-log-view-render" v-html="html"></div>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { onMounted, ref } from "vue";
|
||||||
|
import CommonUtils from "../ts/class/utils/CommonUtils";
|
||||||
|
import { Container } from "../ts/container/Container";
|
||||||
|
import MDUtils from "../ts/class/utils/MDUtils";
|
||||||
|
|
||||||
|
const mdUtils = Container.factory(MDUtils)
|
||||||
|
|
||||||
|
const respond = ref('')
|
||||||
|
const html = ref('')
|
||||||
|
|
||||||
|
const refresh = async () => {
|
||||||
|
respond.value = ''
|
||||||
|
html.value = ''
|
||||||
|
try {
|
||||||
|
respond.value = await CommonUtils.COFetch('https://gitlab.com/JJins/wuhu-torn-helper/-/raw/dev/CHANGELOG.md?' + performance.now())
|
||||||
|
html.value = mdUtils.parse(respond.value).innerHTML
|
||||||
|
} catch (e) {
|
||||||
|
html.value = '错误: ' + e.message
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
refresh()
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.wh-change-log-view-render h2, .wh-change-log-view-render h3, .wh-change-log-view-render h4 {
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -64,16 +64,16 @@
|
|||||||
<el-menu-item @click="quickGymTrain.doTrain(BATTLE_STAT.DEX)">闪避 DEX
|
<el-menu-item @click="quickGymTrain.doTrain(BATTLE_STAT.DEX)">闪避 DEX
|
||||||
</el-menu-item>
|
</el-menu-item>
|
||||||
</el-sub-menu>
|
</el-sub-menu>
|
||||||
<el-sub-menu index="3">
|
<!-- <el-sub-menu index="3">-->
|
||||||
<template #title>
|
<!-- <template #title>-->
|
||||||
<el-icon>🪓</el-icon>
|
<!-- <el-icon>🪓</el-icon>-->
|
||||||
<span>老功能</span>
|
<!-- <span>老功能</span>-->
|
||||||
</template>
|
<!-- </template>-->
|
||||||
<el-menu-item index="3-1" @click="_adHelper">📜️ 传单助手</el-menu-item>
|
<!-- <el-menu-item index="3-1" @click="_adHelper">📜️ 传单助手</el-menu-item>-->
|
||||||
<el-menu-item index="3-2" @click="_safeKeeper">🛡️ 守望者</el-menu-item>
|
<!-- <el-menu-item index="3-2" @click="_safeKeeper">🛡️ 守望者</el-menu-item>-->
|
||||||
<el-menu-item index="3-3" @click="MUZHUANG">🌲 寻找木桩</el-menu-item>
|
<!-- <el-menu-item index="3-3" @click="MUZHUANG">🌲 寻找木桩</el-menu-item>-->
|
||||||
<el-menu-item index="3-4" @click="_setting">⚙️ 助手设置</el-menu-item>
|
<!--<!– <el-menu-item index="3-4" @click="_setting">⚙️ 助手设置</el-menu-item>–>-->
|
||||||
</el-sub-menu>
|
<!-- </el-sub-menu>-->
|
||||||
<!-- <el-menu-item v-for="(item, i) in menuItemList" :index="(4 + i).toString()" @click="menuClick(item)">-->
|
<!-- <el-menu-item v-for="(item, i) in menuItemList" :index="(4 + i).toString()" @click="menuClick(item)">-->
|
||||||
<!-- <el-icon>{{ item.title.slice(0, 2) }}</el-icon>-->
|
<!-- <el-icon>{{ item.title.slice(0, 2) }}</el-icon>-->
|
||||||
<!-- <span>{{ item.title.slice(2, item.title.length) }}</span>-->
|
<!-- <span>{{ item.title.slice(2, item.title.length) }}</span>-->
|
||||||
@ -140,11 +140,9 @@ import { ElMessage, ElMessageBox } from "element-plus";
|
|||||||
import { Component, inject, onMounted, ref, shallowRef, triggerRef } from 'vue';
|
import { Component, inject, onMounted, ref, shallowRef, triggerRef } from 'vue';
|
||||||
import { LoggerKey } from "../ts/class/Logger";
|
import { LoggerKey } from "../ts/class/Logger";
|
||||||
import { QuickGymTrainKey } from "../ts/class/action/QuickGymTrain";
|
import { QuickGymTrainKey } from "../ts/class/action/QuickGymTrain";
|
||||||
import { ChangeLogHandler } from "../ts/class/handler/ChangeLogHandler";
|
|
||||||
import { QuickFlyBtnHandlerKey } from "../ts/class/handler/QuickFlyBtnHandler";
|
import { QuickFlyBtnHandlerKey } from "../ts/class/handler/QuickFlyBtnHandler";
|
||||||
import SettingsHandler from "../ts/class/handler/SettingsHandler";
|
import SettingsHandler from "../ts/class/handler/SettingsHandler";
|
||||||
import { BATTLE_STAT } from "../ts/class/utils/NetHighLvlWrapper";
|
import { BATTLE_STAT } from "../ts/class/utils/NetHighLvlWrapper";
|
||||||
import { Container } from "../ts/container/Container";
|
|
||||||
import adHelper from "../ts/func/module/adHelper";
|
import adHelper from "../ts/func/module/adHelper";
|
||||||
import safeKeeper from "../ts/func/module/safeKeeper";
|
import safeKeeper from "../ts/func/module/safeKeeper";
|
||||||
import useItem from "../ts/func/utils/useItem";
|
import useItem from "../ts/func/utils/useItem";
|
||||||
@ -161,6 +159,8 @@ import QuickCrime from "./QuickCrime.vue";
|
|||||||
import UpdateDate from "./UpdateScript.vue";
|
import UpdateDate from "./UpdateScript.vue";
|
||||||
import VirusProgramming from "./VirusProgramming.vue";
|
import VirusProgramming from "./VirusProgramming.vue";
|
||||||
import getSidebarData from "../ts/func/utils/getSidebarData";
|
import getSidebarData from "../ts/func/utils/getSidebarData";
|
||||||
|
import MonitorMgrView from "./MonitorMgrView.vue";
|
||||||
|
import ChangeLogView from "./ChangeLogView.vue";
|
||||||
|
|
||||||
const logger = inject(LoggerKey);
|
const logger = inject(LoggerKey);
|
||||||
const quickGymTrain = inject(QuickGymTrainKey);
|
const quickGymTrain = inject(QuickGymTrainKey);
|
||||||
@ -258,10 +258,36 @@ const menuItemList: MenuItem[] = [
|
|||||||
template: AutoLoginForm,
|
template: AutoLoginForm,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '🚀 更新历史',
|
title: '🖥 监控',
|
||||||
|
template: MonitorMgrView,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '📜️ 传单助手',
|
||||||
handler: () => {
|
handler: () => {
|
||||||
expanded.value = false
|
expanded.value = false
|
||||||
Container.factory(ChangeLogHandler).show()
|
adHelper()
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '🛡️ 守望者',
|
||||||
|
handler: () => {
|
||||||
|
expanded.value = false
|
||||||
|
safeKeeper()
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '🌲 寻找木桩',
|
||||||
|
handler: () => window.location.replace('https://www.torn.com/item.php?temp=4#xunzhaomuzhuang'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '🚀 更新历史',
|
||||||
|
template: ChangeLogView
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '⚙️ 助手设置',
|
||||||
|
handler: () => {
|
||||||
|
expanded.value = false
|
||||||
|
SettingsHandler.clickFunc()
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
@ -290,27 +316,11 @@ const travelData = [
|
|||||||
{ cName: "🇿🇦 南非", index: 10 },
|
{ cName: "🇿🇦 南非", index: 10 },
|
||||||
];
|
];
|
||||||
|
|
||||||
const MUZHUANG = () => window.location.replace('https://www.torn.com/item.php?temp=4#xunzhaomuzhuang');
|
|
||||||
const _adHelper = () => {
|
|
||||||
expanded.value = false;
|
|
||||||
adHelper();
|
|
||||||
}
|
|
||||||
const _safeKeeper = () => {
|
|
||||||
expanded.value = false;
|
|
||||||
safeKeeper();
|
|
||||||
}
|
|
||||||
const _setting = () => {
|
|
||||||
expanded.value = false;
|
|
||||||
SettingsHandler.clickFunc();
|
|
||||||
}
|
|
||||||
|
|
||||||
const menuClick = (menuItem: MenuItem) => {
|
const menuClick = (menuItem: MenuItem) => {
|
||||||
if (menuItem.handler) {
|
if (menuItem.handler) {
|
||||||
menuItem.handler();
|
menuItem.handler();
|
||||||
} else if (menuItem.template) {
|
} else if (menuItem.template) {
|
||||||
drawer.value = true;
|
drawer.value = true;
|
||||||
// drawerTitle.value = menuItem.title;
|
|
||||||
// drawerContent.value = menuItem.template;
|
|
||||||
addTab(menuItem);
|
addTab(menuItem);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
70
src/vue/MonitorMgrView.vue
Normal file
70
src/vue/MonitorMgrView.vue
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
<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/class/interval/DrugCDMonitor";
|
||||||
|
import IntervalSwitch from "../ts/class/interval/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>
|
||||||
Loading…
x
Reference in New Issue
Block a user