fix(home): 从浮层把任务标成完成时该行不消失(只修了复选框那条路)(#20)
用户第二次提同一条需求。核了线上代码:4 文件 md5 与本地一致、mtime 18:14, 部署没问题;复跑原判据仍 20/0 全绿。判据绿 + 用户能复现 ⇒ 判据有盲区。 盲区:首页把任务标成完成有**两个入口** ① 每行前面那颗复选框 —— home.php 末尾的脚本(上一版已修) ② 点整行弹浮层 → 面板里「状态」三段按钮 → assets/js/task_panel.js 的 syncRow() 上一版只改了 ①。syncRow() 只改徽章与复选框的 aria 状态,**从不删行**, 所以从面板点「已完成」后行留在原地,只把徽标换成「已完成」。 用户点的就是 ②,而原判据 grep 全文没有 panel / 浮层 / data-fb-entry —— 完全没测这条路。 改法: - 把删行逻辑抽成 window.fbHomeTaskDrop(row, wasStatus) 放 assets/js/app.js, 两个入口共用一份。作用域限定 [data-tk-home-host]:任务**看板**页的行也带 data-task-row,那里勾完成只改状态、**必须保留该行**(看板按状态分栏,删了就没处看)。 - task_panel.js 的 syncRow() 在 d.status === 'done' 时调它; wasStatus 必须在改写 data-tk-status **之前**读,否则概述卡不知道该减「在做」还是「待办」。 - home.php 原来那份本地实现改成薄转发,避免两份实现改一处忘一处。 - 顺带修掉一条说谎的注释:原注释写"补偿了一个可撤回的提示",但代码里从来没有 撤回按钮,只有一句 3.2 秒自动消失的 say()。 - _card_tasks.php 补记"两个入口"这件事。 子任务安全:task_panel_json() 用 panel_of 找**父任务**,回的 status 是父任务的, 所以面板里勾子任务不会把父任务那一行删掉(判据 ⑱ 专门守这条)。 判据: - 新增 _b38_panel_done_drop.py(21 条,走真实浮层点击): 修复前 **16 通过 / 5 失败**(⑥⑦⑧⑬⑭)→ 修复后 **21 / 0** - 注入反证 _b38_falsify.py:把删行那两行用 if(false) 挡掉,锚点断言 count==1, 立刻红回同样的 5 条、关键条目 ⑥⑧⑬⑭ 命中 4/4,副本自动还原 - 原 _b37_home_task_drop.py(复选框路径)仍 **20 / 0** - _b37_regress.py **11 / 0**:看板仍改状态且**不删行**、详情页子任务复选框正常、 空态 display 真的是 none - home.php 内联 JS 0 块坏;app.js / task_panel.js node --check 全过
This commit is contained in:
@@ -26,7 +26,15 @@
|
||||
⇒ 勾完要把这一行**从列表里摘掉**(原来只改徽章文字,见 home.php 那段脚本)。
|
||||
⚠️ 但"删到一条不剩"时卡里不能是一片空白 —— 下面这句 `empty-hint` 由服务端渲染,
|
||||
前端删完不会自己冒出来,所以脚本要能在空的时候把它补上。
|
||||
`data-tk-empty` 就是给脚本找它的钩子(不靠文案匹配,文案改一个字就失效)。 */ ?>
|
||||
`data-tk-empty` 就是给脚本找它的钩子(不靠文案匹配,文案改一个字就失效)。
|
||||
|
||||
🔴🔴 把任务标成完成在首页有**两个入口**,两个都要删行:
|
||||
① 每行前面那颗复选框 → 脚本在 `home.php` 末尾
|
||||
② **点整行弹浮层** → 面板里的「状态」三段按钮 → `assets/js/task_panel.js`
|
||||
真正干活的是 `assets/js/app.js` 的 `window.fbHomeTaskDrop()`,两个入口共用。
|
||||
⚠️ 第一版只改了 ①,用户点的是 ②,于是"改完还是不消失"——
|
||||
而我的判据只测了 ①,所以 20/0 全绿也是假绿。
|
||||
**需求有几个入口,就要有几份判据。** */ ?>
|
||||
<p class="empty-hint" data-tk-empty<?= $tasks ? ' hidden' : '' ?>>没有进行中的任务,也没有待办。</p>
|
||||
<?php if ($tasks): ?>
|
||||
<ul class="dash-list tk-list">
|
||||
|
||||
Reference in New Issue
Block a user