fix: data-action delegation + convert onclick to event listeners, sidebar+logout+modals
This commit is contained in:
@@ -20,7 +20,7 @@ const FeaturesPage = {
|
||||
ct.innerHTML = `<div style="display:flex;gap:10px;align-items:center;margin-bottom:16px;flex-wrap:wrap">
|
||||
<select id="feat-group" onchange="FeaturesPage.setFilter()"><option value="">全部分组</option></select>
|
||||
<select id="feat-server" onchange="FeaturesPage.setFilter()"><option value="">全部å<C3A5>æœ<C3A6></option></select>
|
||||
<select id="feat-status" onchange="FeaturesPage.setFilter()"><option value="all">全部状态</option><option value="pending">待定</option><option value="planned">计划中</option><option value="done">已完成</option></select>
|
||||
<select id="feat-status" onchange="FeaturesPage.setFilter()"><option value="all">全部状�/option><option value="pending">待定</option><option value="planned">计划�/option><option value="done">已完�/option></select>
|
||||
<span style="flex:1"></span>
|
||||
<button class="btn btn-o btn-sm ${this.sort==='time'?'btn-p':''}" id="sort-time" onclick="FeaturesPage.setSort('time')">æ—¶é—´</button>
|
||||
<button class="btn btn-o btn-sm ${this.sort==='votes'?'btn-p':''}" id="sort-votes" onclick="FeaturesPage.setSort('votes')">çƒåº¦</button>
|
||||
@@ -74,7 +74,7 @@ const FeaturesPage = {
|
||||
|
||||
renderItem(i) {
|
||||
const sc = i.status==='done'?'var(--s)':i.status==='planned'?'var(--p)':'var(--g5)';
|
||||
const statusLabel = i.status==='done'?'已完成':i.status==='planned'?'计划中':'待定';
|
||||
const statusLabel = i.status==='done'?'已完�:i.status==='planned'?'计划�:'待定';
|
||||
return `<div class="card" id="feat-${i.id}">
|
||||
<div class="card-h">
|
||||
<span><span style="color:${sc};font-size:18px;margin-right:8px">${i.status==='done'?'\u2713':i.status==='planned'?'\u25C9':'\u25CB'}</span> ${U.esc(i.title)}</span>
|
||||
@@ -153,9 +153,9 @@ const FeaturesPage = {
|
||||
U.modal('æ·»åŠ ', `
|
||||
<form id="feat-form">
|
||||
<div class="grid-2"><div class="form-group"><label>æ ‡é¢˜ *</label><input id="ft-title" required></div>
|
||||
<div class="form-group"><label>分组/子服</label><select id="ft-gs"><option value="::">无</option>${opts}</select></div></div>
|
||||
<div class="form-group"><label>分组/å<C3A5>æœ<C3A6></label><select id="ft-gs"><option value="::">æ—?/option>${opts}</select></div></div>
|
||||
<div class="form-group"><label>æ<><C3A6>è¿°</label><textarea id="ft-desc" rows="3"></textarea></div>
|
||||
<div class="modal-f"><button type="button" class="btn btn-o" onclick="App.closeModal()">取消</button><button type="submit" class="btn btn-p">添加</button></div>
|
||||
<div class="modal-f"><button type="button" class="btn btn-o" data-action="App:closeModal">å<>–消</button><button type="submit" class="btn btn-p">æ·»åŠ </button></div>
|
||||
</form>
|
||||
`);
|
||||
document.getElementById('feat-form').onsubmit = async e => { e.preventDefault();
|
||||
@@ -171,10 +171,10 @@ const FeaturesPage = {
|
||||
U.modal('编辑', `
|
||||
<form id="fe-edit">
|
||||
<div class="form-group"><label>æ ‡é¢˜</label><input id="fe-title" value="${title}"></div>
|
||||
<div class="grid-2"><div class="form-group"><label>状态</label><select id="fe-status"><option value="pending" ${status==='pending'?'selected':''}>待定</option><option value="planned" ${status==='planned'?'selected':''}>计划中</option><option value="done" ${status==='done'?'selected':''}>已完成</option></select></div>
|
||||
<div class="form-group"><label>分组/子服</label><select id="fe-gs"><option value="::">无</option>${opts}</select></div></div>
|
||||
<div class="grid-2"><div class="form-group"><label>状�/label><select id="fe-status"><option value="pending" ${status==='pending'?'selected':''}>待定</option><option value="planned" ${status==='planned'?'selected':''}>计划�/option><option value="done" ${status==='done'?'selected':''}>已完�/option></select></div>
|
||||
<div class="form-group"><label>分组/å<C3A5>æœ<C3A6></label><select id="fe-gs"><option value="::">æ—?/option>${opts}</select></div></div>
|
||||
<div class="form-group"><label>æ<><C3A6>è¿°</label><textarea id="fe-desc" rows="3">${desc}</textarea></div>
|
||||
<div class="modal-f"><button type="button" class="btn btn-o" onclick="App.closeModal()">取消</button><button type="button" class="btn btn-d" onclick="FeaturesPage.del(${id})"><i class="fas fa-trash"></i></button><button type="submit" class="btn btn-p">保存</button></div>
|
||||
<div class="modal-f"><button type="button" class="btn btn-o" data-action="App:closeModal">å<>–消</button><button type="button" class="btn btn-d" onclick="FeaturesPage.del(${id})"><i class="fas fa-trash"></i></button><button type="submit" class="btn btn-p">ä¿<EFBFBD>å˜</button></div>
|
||||
</form>
|
||||
`);
|
||||
document.getElementById('fe-edit').onsubmit = async e => { e.preventDefault();
|
||||
@@ -184,5 +184,5 @@ const FeaturesPage = {
|
||||
};
|
||||
},
|
||||
|
||||
async del(id) { if (!await U.confirm('确认删除?')) return; try { await API.req('DELETE', '/features/'+id); App.closeModal(); this.load(); } catch(ex){alert(ex.message);} }
|
||||
async del(id) { if (!await U.confirm('ç¡®è®¤åˆ é™¤ï¼?)) return; try { await API.req('DELETE', '/features/'+id); App.closeModal(); this.load(); } catch(ex){alert(ex.message);} }
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user