Reposition task queue and mobile sync panel
This commit is contained in:
parent
6fb245194e
commit
47ca2b1a50
@ -33,6 +33,23 @@
|
|||||||
<button id="collect-history-button" class="top-collect-all" type="button">采集全部历史节目</button>
|
<button id="collect-history-button" class="top-collect-all" type="button">采集全部历史节目</button>
|
||||||
<button id="retry-pending-button" class="top-collect-all secondary" type="button">复查无数据</button>
|
<button id="retry-pending-button" class="top-collect-all secondary" type="button">复查无数据</button>
|
||||||
</div>
|
</div>
|
||||||
|
<section id="task-queue-panel" class="task-queue-panel brand-task-queue idle" aria-label="采集任务队列">
|
||||||
|
<div class="task-queue-head">
|
||||||
|
<div>
|
||||||
|
<div class="panel-title">任务队列</div>
|
||||||
|
<div id="task-current" class="task-current">暂无运行中的采集任务</div>
|
||||||
|
</div>
|
||||||
|
<div id="task-ratio" class="task-ratio">0/0</div>
|
||||||
|
</div>
|
||||||
|
<div class="task-progress-track" aria-hidden="true">
|
||||||
|
<div id="task-progress-fill" class="task-progress-fill"></div>
|
||||||
|
</div>
|
||||||
|
<div class="task-counters">
|
||||||
|
<span>有效 <strong id="task-ok-count">0</strong></span>
|
||||||
|
<span>未找到/无指标 <strong id="task-missing-count">0</strong></span>
|
||||||
|
<span>风控/错误 <strong id="task-error-count">0</strong></span>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
</div>
|
</div>
|
||||||
<form id="collect-form" class="searchbar">
|
<form id="collect-form" class="searchbar">
|
||||||
<input id="program-name" name="name" type="search" placeholder="输入节目名" autocomplete="off" required>
|
<input id="program-name" name="name" type="search" placeholder="输入节目名" autocomplete="off" required>
|
||||||
@ -75,34 +92,6 @@
|
|||||||
<span id="status-text">等待输入节目名</span>
|
<span id="status-text">等待输入节目名</span>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="task-queue-panel" class="task-queue-panel idle" aria-label="采集任务队列">
|
|
||||||
<div class="task-queue-head">
|
|
||||||
<div>
|
|
||||||
<div class="panel-title">任务队列</div>
|
|
||||||
<div id="task-current" class="task-current">暂无运行中的采集任务</div>
|
|
||||||
</div>
|
|
||||||
<div id="task-ratio" class="task-ratio">0/0</div>
|
|
||||||
</div>
|
|
||||||
<div class="task-progress-track" aria-hidden="true">
|
|
||||||
<div id="task-progress-fill" class="task-progress-fill"></div>
|
|
||||||
</div>
|
|
||||||
<div class="task-counters">
|
|
||||||
<span>有效 <strong id="task-ok-count">0</strong></span>
|
|
||||||
<span>未找到/无指标 <strong id="task-missing-count">0</strong></span>
|
|
||||||
<span>风控/错误 <strong id="task-error-count">0</strong></span>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section id="mobile-sync-panel" class="mobile-sync-panel">
|
|
||||||
<div class="panel-head">
|
|
||||||
<div>
|
|
||||||
<div class="panel-title">手机同步待处理</div>
|
|
||||||
<div class="panel-note">手机端同步过来的节目先放这里,不会自动写入历史数据。</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div id="mobile-sync-list" class="mobile-sync-list empty">暂无手机同步记录</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section id="duty-panel" class="duty-panel">
|
<section id="duty-panel" class="duty-panel">
|
||||||
<div class="panel-head">
|
<div class="panel-head">
|
||||||
<div>
|
<div>
|
||||||
@ -244,6 +233,16 @@
|
|||||||
<textarea id="temporary-query-text" rows="4" placeholder="粘贴节目列表,每行一个节目名"></textarea>
|
<textarea id="temporary-query-text" rows="4" placeholder="粘贴节目列表,每行一个节目名"></textarea>
|
||||||
<div id="temporary-query-result" class="temporary-result empty">暂无临时查询结果</div>
|
<div id="temporary-query-result" class="temporary-result empty">暂无临时查询结果</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<section id="mobile-sync-panel" class="mobile-sync-panel">
|
||||||
|
<div class="panel-head">
|
||||||
|
<div>
|
||||||
|
<div class="panel-title">手机同步待处理</div>
|
||||||
|
<div class="panel-note">手机端同步过来的节目先放这里,不会自动写入历史数据。</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="mobile-sync-list" class="mobile-sync-list empty">暂无手机同步记录</div>
|
||||||
|
</section>
|
||||||
</main>
|
</main>
|
||||||
<footer class="app-status-dock" aria-live="polite">
|
<footer class="app-status-dock" aria-live="polite">
|
||||||
<span class="dock-label">状态</span>
|
<span class="dock-label">状态</span>
|
||||||
|
|||||||
@ -357,6 +357,12 @@ h1 {
|
|||||||
box-shadow: var(--shadow);
|
box-shadow: var(--shadow);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.brand-task-queue {
|
||||||
|
margin: 6px 0 0;
|
||||||
|
padding: 10px 12px;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
.task-queue-panel.idle {
|
.task-queue-panel.idle {
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -22,14 +22,22 @@ test("desktop workbench summary sits below the trend charts", () => {
|
|||||||
|
|
||||||
test("collection progress has a visible task queue panel", () => {
|
test("collection progress has a visible task queue panel", () => {
|
||||||
assert.match(html, /id="task-queue-panel"/);
|
assert.match(html, /id="task-queue-panel"/);
|
||||||
|
assert.match(html, /brand-task-queue/);
|
||||||
assert.match(html, /id="task-current"/);
|
assert.match(html, /id="task-current"/);
|
||||||
assert.match(html, /id="task-progress-fill"/);
|
assert.match(html, /id="task-progress-fill"/);
|
||||||
assert.match(html, /id="task-ok-count"/);
|
assert.match(html, /id="task-ok-count"/);
|
||||||
assert.match(html, /id="task-missing-count"/);
|
assert.match(html, /id="task-missing-count"/);
|
||||||
assert.match(css, /\.task-queue-panel/);
|
assert.match(css, /\.task-queue-panel/);
|
||||||
|
assert.match(css, /\.brand-task-queue/);
|
||||||
assert.match(app, /updateTaskQueue/);
|
assert.match(app, /updateTaskQueue/);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("task queue sits directly under the top history collection controls", () => {
|
||||||
|
assert.ok(html.indexOf('id="collect-history-button"') < html.indexOf('id="task-queue-panel"'));
|
||||||
|
assert.ok(html.indexOf('id="task-queue-panel"') < html.indexOf('id="collect-form"'));
|
||||||
|
assert.ok(html.indexOf('id="task-queue-panel"') < html.indexOf('class="statusline"'));
|
||||||
|
});
|
||||||
|
|
||||||
test("desktop shell has app-style navigation and persistent status", () => {
|
test("desktop shell has app-style navigation and persistent status", () => {
|
||||||
assert.match(html, /class="app-nav"/);
|
assert.match(html, /class="app-nav"/);
|
||||||
assert.match(html, /href="#desktop-dashboard"/);
|
assert.match(html, /href="#desktop-dashboard"/);
|
||||||
|
|||||||
@ -44,3 +44,8 @@ test("desktop page shows mobile sync drafts as a pending queue", () => {
|
|||||||
assert.match(desktopCss, /\.mobile-sync-panel/);
|
assert.match(desktopCss, /\.mobile-sync-panel/);
|
||||||
assert.match(desktopCss, /\.mobile-sync-item/);
|
assert.match(desktopCss, /\.mobile-sync-item/);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("desktop mobile sync queue sits at the bottom of the main app content", () => {
|
||||||
|
assert.ok(desktopHtml.indexOf('id="temporary-query-panel"') < desktopHtml.indexOf('id="mobile-sync-panel"'));
|
||||||
|
assert.ok(desktopHtml.indexOf('id="mobile-sync-panel"') < desktopHtml.indexOf("</main>"));
|
||||||
|
});
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user