R36: 榜单下载按钮移至 tab 组件右侧(重构 toolbar,tab 上移 page-toolbar)
- 用户反馈:下载按钮「靠近 tab 组件,不是筛选/搜索组件」 - 冲突排查:原 toolbar(s, false) 空态时 rank-toolbar 不渲染,若简单把按钮移进 rank-toolbar 会丢失 R33 设计的「空态也能看到更新按钮(首次抓取入口)」 - 重构 toolbar() 函数: - tab 始终在 page-toolbar 渲染(含空态/错误态) - rankUpdate 紧贴 tab 右侧(rank-tabs margin-left:auto 推右,按钮紧跟其后) - rank-toolbar 仅放筛选+翻页(withFilters 时) - 复用 CSS:.page-toolbar .rank-tabs 紧凑样式(L603-604 已就绪) - CDP 验证:tab+rankUpdate 都在 page-toolbar ✓;筛选保留 ✓ - 版本:data-pages.js x→y(CSS 不动)
This commit is contained in:
1 parent
449d784de0
commit
1f147e84dd
3 files changed
+28
-15
No files matched your search
@@ -326,5 +326,18 @@
|
||||
- **版本**:style.css ?v=20260903v→x、data-pages.js w→x(app.js 不动);同文件三处 bump 串行
|
||||
- **CDP 验证**:JS=x;rankUpdate path 含 `M21 15v4...7 10 12 15 17 10...y1=15 y2=3` = download 图标 ✓;rankUpdate 宽 40px(+5)✓
|
||||
|
||||
## R36 榜单「下载按钮」靠近 tab(09-03 17:35)
|
||||
- **需求**:用户反馈「下载按钮放到 tab 组件右边」「靠近 tab 组件 不是 筛选和搜索组件」
|
||||
- **冲突点排查**:原来 rankUpdate 在 page-toolbar .toolbar-right;rank-toolbar.withFilters 控制整个 rank-toolbar(含 tab + 筛选)渲染——空态 toolbar(s,false) 时 rank-toolbar 不渲染;若简单把按钮移进 rank-toolbar 会丢失 R33 设计「空态也能看到更新按钮(首次抓取入口)」
|
||||
- **解法**:**重构 toolbar() 函数**——tab 始终在 page-toolbar 渲染(含空态/错误态),rankUpdate 紧贴 tab 右侧;rank-toolbar 仅放筛选+翻页(withFilters 时)
|
||||
- HTML:page-toolbar 子元素顺序 = 返回 / 标题 / `<div class="rank-tabs" style="margin-left:auto">` 三个 tab / `<button id="rankUpdate">⬇</button>`
|
||||
- rank-tabs 用 `margin-left:auto` 推到右侧,rankUpdate 紧跟其后 → 视觉「"tab 组 + ⬇」紧贴
|
||||
- rank-toolbar:只保留 .toolbar-right(赛道 select + 翻页),无 tab
|
||||
- **CSS 复用**:`.page-toolbar .rank-tabs { border-bottom:none; margin-bottom:0; align-self:center }`(L603)+ `.page-toolbar .rank-tab`(L604 紧凑样式)已就绪,无需新增样式
|
||||
- **验证**:
|
||||
- CDP 实测:tab 在 page-toolbar ✓;btnInPageToolbar=true;filterExists=true(保留)
|
||||
- 视觉截图:tab「账号周榜/视频热榜/点赞榜」+ ⬇ 在第一行右侧;筛选下拉+翻页在第二行
|
||||
- **版本**:data-pages.js x→y(CSS 不动)
|
||||
|
||||
## R34 同步 dsh 副本计划
|
||||
- dsh 副本 `C:\Users\maidou\.dsh\skills\short-video-script\`(独立副本,非软链)—— R34 改动 data-pages.js/app.js/style.css/index.html 同步评估后人工复制
|
||||
@@ -522,20 +522,13 @@ async function renderRanking(view) {
|
||||
const st = { week: mkState(), hot: mkState(), likes: mkState() };
|
||||
let tab = 'week';
|
||||
const tabLabel = () => { const t = RANK_TABS.find(([k]) => k === tab); return t ? t[1] : ''; };
|
||||
// tab 切换 + 赛道选择 + 时间切换 同一行(标题行只放 返回 | 标题,tab + 筛选放标题下一行 .rank-toolbar)
|
||||
// 09-03 更新榜单按钮放标题行最右(.toolbar-right):三榜 tab 切换与空态(无本地数据文件)均可见,便于首次抓取
|
||||
const toolbar = (s, withFilters) => `
|
||||
<div class="page-toolbar">
|
||||
${toolbarBack()}
|
||||
<span class="page-title">热点数据</span>
|
||||
<div class="toolbar-right">
|
||||
<button class="btn btn-icon" id="rankUpdate" title="更新榜单数据:后台任务重新抓取三榜(账号周榜 5 赛道 / 视频热榜 / 点赞榜)最新一期并落盘;30 分钟内已更新会拦截防重复">${svgIcon('download', 16, 'currentColor')}</button>
|
||||
</div>
|
||||
// 09-03 tab 始终在 page-toolbar 渲染(含空态/错误态),下载按钮紧贴 tab 右侧;筛选+翻页放 rank-toolbar(withFilters 时)
|
||||
const toolbar = (s, withFilters) => {
|
||||
const tabsHtml = `<div class="rank-tabs" role="tablist" style="margin-left:auto">
|
||||
${RANK_TABS.map(([k, label, tip]) => `<button class="rank-tab${k === tab ? ' active' : ''}" data-rank-tab="${k}"${tip ? ` title="${tip}"` : ''} role="tab">${label}</button>`).join('')}
|
||||
</div>
|
||||
${withFilters ? `<div class="rank-toolbar">
|
||||
<div class="rank-tabs" role="tablist">
|
||||
${RANK_TABS.map(([k, label, tip]) => `<button class="rank-tab${k === tab ? ' active' : ''}" data-rank-tab="${k}"${tip ? ` title="${tip}"` : ''} role="tab">${label}</button>`).join('')}
|
||||
</div>
|
||||
<button class="btn btn-icon" id="rankUpdate" title="更新榜单数据:后台任务重新抓取三榜(账号周榜 5 赛道 / 视频热榜 / 点赞榜)最新一期并落盘;30 分钟内已更新会拦截防重复">${svgIcon('download', 16, 'currentColor')}</button>`;
|
||||
const filtersHtml = withFilters ? `<div class="rank-toolbar">
|
||||
<div class="toolbar-right">
|
||||
<select id="rankCat" class="input-select" title="赛道筛选">
|
||||
<option value="">全部赛道</option>
|
||||
@@ -545,7 +538,14 @@ async function renderRanking(view) {
|
||||
<span class="pager-info" title="选择日期">${esc(s.date)}</span>
|
||||
<button class="btn" id="rankNext" title="下一期">▶</button>
|
||||
</div>
|
||||
</div>` : ''}`;
|
||||
</div>` : '';
|
||||
return `<div class="page-toolbar">
|
||||
${toolbarBack()}
|
||||
<span class="page-title">热点数据</span>
|
||||
${tabsHtml}
|
||||
</div>
|
||||
${filtersHtml}`;
|
||||
};
|
||||
|
||||
// 标题列统一截断(作品标题很长):悬停 title 看全文
|
||||
const titleTd = (text, url) => `<span class="rk-tl" title="${esc(String(text || '').replace(/"/g, '"'))}">${url ? `<a class="link" data-ext="${esc(url)}">${esc(text)}</a>` : esc(text)}</span>`;
|
||||
|
||||
@@ -42,6 +42,6 @@
|
||||
</div>
|
||||
|
||||
<script src="app.js?v=20260903v"></script>
|
||||
<script src="data-pages.js?v=20260903x"></script>
|
||||
<script src="data-pages.js?v=20260903y"></script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in new issue
Block a user