This commit is contained in:
Liwanyi 2022-10-14 18:08:16 +08:00
parent ec60b88cbf
commit f37641a955
8 changed files with 154 additions and 126 deletions

View File

@ -5,6 +5,19 @@
# CHANGE
## 0.6.0 pre
2022年10月日
### 修改
- 解毒提醒UI调整
- 传单助手UI调整
### 添加
- 更多设置
## 0.5.9
2022年10月14日

View File

@ -28,6 +28,7 @@ import MDUtils from "./utils/MDUtils";
import Test from "../test/Test";
import TornStyleSwitch from "./utils/TornStyleSwitch";
import Global from "./Global";
import BuyBeerHelper from "./action/BuyBeerHelper";
export default class ZhongIcon extends WuhuBase {
public static ZhongNode: MyHTMLElement = null;
@ -785,7 +786,7 @@ export default class ZhongIcon extends WuhuBase {
private constructWuhuSettingList(): ZhongIcon {
const date = new Date();
let { beer, popup_node } = ZhongIcon.glob;
let beer = BuyBeerHelper.getInstance();
let list: MenuItemConfig[] = [];
@ -1176,7 +1177,7 @@ export default class ZhongIcon extends WuhuBase {
list.push({
domType: 'checkbox',
domId: 'wh-dev-mode',
domText: ` 开发者模式${ Log.debug() ? ' <button id="wh-devInfo">详情</button>' : '' }`,
domText: '开发模式',
dictName: 'isDev',
isHide: true,
});
@ -1186,20 +1187,35 @@ export default class ZhongIcon extends WuhuBase {
domId: null,
domText: '查看日志',
clickFunc: () => {
let pop = new Popup('<textarea readonly style="width:100%;height:340px;"></textarea><br/><button>全选</button>', '查看日志');
let pop = new Popup('<textarea readonly style="width:100%;height:340px;"></textarea>', '查看日志');
let text = pop.getElement().querySelector('textarea');
text.innerHTML = Log.getLogs();
pop.getElement().querySelector('button').onclick = () => text.select();
//
text.onclick = () => text.select();
}
});
// 更多设定
if (Log.debug()) list.push({
list.push({
domType: 'button', domId: 'wh-otherBtn', domText: '更多设定',
clickFunc: () => {
new Popup(`清空设置数据、请求通知权限、测试跨域请求`, '更多设定');
let pop = new Popup('', '更多设定');
let insertHtml = '<p><button class="torn-btn">清空设置数据</button></p><p><button class="torn-btn">请求通知权限</button></p><p><button class="torn-btn">测试跨域请求</button></p>';
pop.getElement().insertAdjacentHTML('beforeend', insertHtml);
let [btn1, btn2, btn3] = Array.from(pop.getElement().querySelectorAll('button'));
btn1.addEventListener('click', () => {
localStorage.setItem('wh_trv_alarm', '');
localStorage.setItem('wh_trans_settings', '');
localStorage.setItem('whuuid', '');
localStorage.setItem('wh-gs-storage', '');
localStorage.setItem('WHTEST', '');
new Alert('已清空,刷新页面');
window.location.reload();
});
btn2.addEventListener('click', () => {
});
btn3.addEventListener('click', () => {
});
},
isHide: true,
// isHide: true,
});
this.settingItemList = list;

View File

@ -19,14 +19,17 @@ export default class Alert extends WuhuBase {
let { timeout, callback, sysNotify, } = options;
// 后台窗口、iframe内判断
if (!WindowActiveState.getInstance().get() || (self !== top)) return null;
if (!WindowActiveState.getInstance().get() || (self !== top)) {
Log.warn('后台通知已被屏蔽');
return null;
}
// 通知的容器
if (Alert.container === null) Alert.initContainer();
this.callback = callback || (() => null);
Alert.create(this, msg, timeout || 3);
Log.info('创建新通知:', this);
Log.info('创建新通知:', this, msg);
if (sysNotify) NotificationUtils.getInstance().push(msg, options);
}

View File

@ -1,5 +1,6 @@
import WuhuBase from "../WuhuBase";
import POPUP_HTML from "../../static/html/popup.html";
import Log from "../Log";
export default class Popup extends WuhuBase {
protected className = 'Popup';
@ -8,7 +9,11 @@ export default class Popup extends WuhuBase {
constructor(innerHTML: string, title: string = '芜湖助手') {
super();
if (Popup.glob.popup_node) Popup.glob.popup_node.close();
if (Popup.glob.popup_node) {
Log.info('关闭前一个弹窗');
Popup.glob.popup_node.close();
}
Log.info('新建弹窗', { innerHTML, title });
const popup = document.createElement('div');
popup.id = 'wh-popup';
popup.innerHTML = POPUP_HTML.replace('{{}}', title).replace('{{}}', innerHTML);

View File

@ -19,6 +19,9 @@ export default function adHelper() {
clear_button.innerText = '清空所有聊天框';
paste_button.innerText = '粘贴剪切板';
style.innerHTML = '#chatRoot > div{z-index:199999 !important;}';
place_button.classList.add('torn-btn');
clear_button.classList.add('torn-btn');
paste_button.classList.add('torn-btn');
place_button.addEventListener('click', () => {
let chats = Array.from(document.querySelectorAll('#chatRoot textarea[name="chatbox2"]') as NodeListOf<HTMLTextAreaElement>);

View File

@ -7,7 +7,9 @@ import Alert from "../../class/utils/Alert";
import ActionButtonUtils from "../../class/utils/ActionButtonUtils";
import WuhuConfig from "../../class/WuhuConfig";
import CommonUtils from "../../class/utils/CommonUtils";
import Log from "../../class/Log";
import TRAVEL_ALARM_CSS from "../../static/css/travel_alarm.css";
import TRAVEL_ALARM_HTML from "../../static/html/travel_alarm.html";
import TornStyleBlock from "../../class/utils/TornStyleBlock";
export default async function travelHelper(): Promise<null> {
let { href, bodyAttrs, device } = WuhuBase.glob;
@ -43,85 +45,11 @@ export default async function travelHelper(): Promise<null> {
wh_trv_alarm_node.id = 'wh-trv-alarm';
wh_trv_alarm_node.style.left = `${ wh_trv_alarm.node_pos[0] }px`;
wh_trv_alarm_node.style.top = `${ wh_trv_alarm.node_pos[1] }px`;
wh_trv_alarm_node.innerHTML = `<div id="wh-trv-error"><p><b>❌ 没有权限</b><br/>点击网页内任意位置以激活闹钟</p></div>
<div id="wh-trv-alarm-title">
<h5 id="wh-trv-alarm-header"></h5>
</div>
<div id="wh-trv-alarm-bottom">
<div id="wh-trv-alarm-cont">
<p id="wh-trv-alarm-remaining"></p>
<p><span id="wh-trv-status">${ dest_cn === '回城' ? dest_cn : '飞往' + dest_cn } </span><span></span></p>
<div><label><input type="checkbox" ${ wh_trv_alarm.enable ? 'checked ' : ' ' }/> </label></div>
<div><label>(): <input type="number" value="${ wh_trv_alarm.alert_time || 30 }" /></label><button></button></div>
<div class="wh-trv-alarm-stop-hide"><button></button></div>
</div>
</div>
`;
CommonUtils.addStyle(`
#wh-trv-alarm{
position:absolute;
width:248px;
/*left:${ wh_trv_alarm.node_pos[0] || 240 }px;
top:${ wh_trv_alarm.node_pos[1] || 240 }px;*/
background:white;
border-radius:4px;
box-shadow:#0000001f 0 0 10px 4px;
border:solid 1px #aaa;
z-index:100001;
margin:2em;
}
#wh-trv-alarm button{
margin:0;
}
#wh-trv-error{
position:absolute;
width:100%;
height:100%;
/*display: table;*/
display:none;
}
#wh-trv-error p{
background:#ffd0d0;
color:red;
display:table-cell;
vertical-align:middle;
padding:1em;
text-align:center;
}
#wh-trv-alarm-title{
height: 30px;
border-bottom: solid #aaa 1px;
cursor: move;
}
/*#wh-trv-alarm-move-btn span{
background:url(/images/v2/home_main/move.svg);
width: 30px;
height: 30px;
float: right;
cursor: move;
}*/
h5#wh-trv-alarm-header{
height: 100%;
line-height: 30px;
padding:0 12px;
font-weight: bold;
text-align: center;
}
#wh-trv-alarm-bottom{
padding: 12px;
}
#wh-trv-alarm-remaining{
float:right;
color:red;
}
#wh-trv-alarm-cont input[type="number"]{
width: 42px;
border-bottom: solid 1px #aaa;
}
.wh-trv-alarm-stop-hide{
display:none;
}
`);
wh_trv_alarm_node.innerHTML = TRAVEL_ALARM_HTML
.replace('{{}}', dest_cn === '回城' ? dest_cn : '飞往' + dest_cn)
.replace('{{}}', wh_trv_alarm.enable ? 'checked ' : '')
.replace('{{}}', wh_trv_alarm.alert_time || 30);
CommonUtils.addStyle(TRAVEL_ALARM_CSS);
document.body.append(wh_trv_alarm_node);
// 报错dom
const error_node = wh_trv_alarm_node.querySelector('#wh-trv-error') as HTMLElement;
@ -252,28 +180,6 @@ display:none;
flying_ani.innerHTML = `${ flying_arr[flying_index] }`;
flying_index = (flying_index + 1) % flying_arr.length;
}, 1000);
Log.info({
dest_cn,
remaining_arr,
wh_trv_alarm,
wh_trv_alarm_node,
error_node,
remaining_node,
set_node,
cd_time,
count_down_notify,
stop_node,
enable_node,
remaining_sec,
land_timestamp,
audio,
audio_play_flag,
user_stop_alert,
audio_play_id,
flying_status,
flying_index,
id
});
}
// 落地转跳 落地前事件
@ -298,18 +204,20 @@ display:none;
}
// 解毒提醒
if (bodyAttrs['data-country'] === 'switzerland') {
let page_title = document.querySelector('h4#skip-to-content');
let msg = document.createElement('div');
msg.innerHTML = `<div class="info-msg border-round">
<i class="info-icon"></i>
<div class="delimiter">
<div class="msg right-round" tabindex="0" role="alert">
<p><a href="/index.php?page=rehab"> </a></p>
</div>
</div>
</div>`;
msg.classList.add('info-msg-cont', 'green', 'border-round', 'm-bottom10');
page_title.before(msg);
let block = new TornStyleBlock('解毒提醒').insert2Dom();
block.setContent('<p><a href="/index.php?page=rehab">❤️ 点击前往解毒</a></p>');
// let page_title = document.querySelector('h4#skip-to-content');
// let msg = document.createElement('div');
// msg.innerHTML = `<div class="info-msg border-round">
// <i class="info-icon"></i>
// <div class="delimiter">
// <div class="msg right-round" tabindex="0" role="alert">
// <p><a href="/index.php?page=rehab">❤️ 点击前往解毒</a></p>
// </div>
// </div>
// </div>`;
// msg.classList.add('info-msg-cont', 'green', 'border-round', 'm-bottom10');
// page_title.before(msg);
}
}
return;
@ -402,7 +310,7 @@ async function travelBack(): Promise<null> {
new Alert(res);
if (!res.includes('error')) {
new Alert('成功,即将刷新');
setTimeout(() => location.reload(), 3000);
window.setTimeout(() => location.reload(), 3000);
} else {
new Alert('出错了');
}

View File

@ -0,0 +1,62 @@
#wh-trv-alarm {
position: absolute;
width: 248px;
background: white;
border-radius: 4px;
box-shadow: #0000001f 0 0 10px 4px;
border: solid 1px #aaa;
z-index: 100001;
margin: 2em;
}
#wh-trv-alarm button {
margin: 0;
}
#wh-trv-error {
position: absolute;
width: 100%;
height: 100%;
display: none;
}
#wh-trv-error p {
background: #ffd0d0;
color: red;
display: table-cell;
vertical-align: middle;
padding: 1em;
text-align: center;
}
#wh-trv-alarm-title {
height: 30px;
border-bottom: solid #aaa 1px;
cursor: move;
}
h5#wh-trv-alarm-header {
height: 100%;
line-height: 30px;
padding: 0 12px;
font-weight: bold;
text-align: center;
}
#wh-trv-alarm-bottom {
padding: 12px;
}
#wh-trv-alarm-remaining {
float: right;
color: red;
}
#wh-trv-alarm-cont input[type="number"] {
width: 42px;
border-bottom: solid 1px #aaa;
}
.wh-trv-alarm-stop-hide {
display: none;
}

View File

@ -0,0 +1,18 @@
<div id="wh-trv-error"><p><b>❌ 没有权限</b><br/>点击网页内任意位置以激活闹钟</p></div>
<div id="wh-trv-alarm-title">
<h5 id="wh-trv-alarm-header">飞行闹钟</h5>
</div>
<div id="wh-trv-alarm-bottom">
<div id="wh-trv-alarm-cont">
<p id="wh-trv-alarm-remaining"></p>
<p><span id="wh-trv-status">正在{{}} </span><span></span></p>
<div><input class="checkbox-css" id="WHTravelAlarmToggle" type="checkbox" {{}}/><label
class="non-selection marker-css" for="WHTravelAlarmToggle">开启闹钟</label></div>
<div><label>落地前响铃时长(秒): <input type="number" value="{{}}"/></label>
<button>确定</button>
</div>
<div class="wh-trv-alarm-stop-hide">
<button>停止闹钟</button>
</div>
</div>
</div>