道具一览
第二张列表 / 筛选页的样例:现网道具一览(= prts-widgets 的 ItemList Widget)换成 PRTS Design 的视觉,排布同干员一览:一条提示 → 筛选(3 行)→ 搜索 / 排序 / 两种显示方式 → 条数 · 已选条件 · 复制链接 · 分页 → 结果。道具数据与现网一致,页面与模板不用改;筛选项、排序、显示方式对着游戏的仓库重排过,有几处行为和现网不一样,见和现网不一样的。
源文件 preview/_src/pages/items.html,python3 scripts/build-preview.py 生成。数据是现网页面的快照 preview/vendor/itemlist/data.js(1392 件道具,node scripts/fetch-itemlist.ts 重抓);道具图标不入库,运行时从 torappu.prts.wiki / media.prts.wiki 取。
页面与皮肤的分工
- 页面这半:开头那条「关于保险库」是页面正文里的
{{道具一览补充说明}}(一条{{Cbox2}}),不归 Widget 管。页面照旧往正文里放#cargo-data({{道具筛选数据2}}输出的每件道具一条data-*,里面是获取途径 / 描述 / 用途三段)。 - Widget 这半:其余都是 Widget 的输出,读
#cargo-data、挂到#root。样例页里那段脚本是 Widget 的替身;生产环境 = prts-widgets 用@mooncellwiki/prts-design-vue输出同样的结构——.ak-*是设计系统组件,.il-*是这页自己的排布,放 Widget 的样式表。根节点标ak-not-prose。 - 皮肤这半:同干员一览,这页没有目录,想把目录导轨也吃掉——口子见干员一览 · 页面与皮肤的分工。
对着游戏
游戏自己的道具列表是仓库(ui/[uc]itemrepo,2.7.71 客户端):
| 游戏 | 出处 | 页面上 |
|---|---|---|
| 仓库里道具的次序 | ItemRepoUtil.GetCurrentItemList 的比较函数:sortId 升序,相同再比 itemId | 排序项「仓库顺序」;sortId 是负数的(活动代币、家具收藏包一类,在仓库里没有位置)不管正序倒序都排在最后 |
| 仓库的页签 | ItemRepoUtil.CheckItemFitFilter:ClassifyFilter 全部 / 基础 NORMAL / 养成 MATERIAL / 消耗 CONSUME,「全部」= classifyType 不是 NONE 的 | 分类芯片按这几类归成四组(NONE 的归「其他类别」) |
| 稀有度 | ItemRarity TIER_1…TIER_6,画面上只是道具底框的颜色(sprite_item_r1–r6) | 稀有度芯片 = 底框颜色的圆环 + 色名 |
页面数据(#cargo-data)里没有 classifyType,一个 wiki 分类归哪组看的是它名下多数道具的类型(拿 item_table 逐件对过);游戏里页签只有图标没有字,四个组名是这里起的。归类只是摆法:筛的还是 wiki 的 category1–3。
筛选
现网是一块折叠面板三行,每行 = 标题 + 全选 / 清除 + 一排按钮;23 个分类平铺成三行。这里每行 = 标签列 + 筛选芯片,行内「或」、行间「且」,写法同干员一览的筛选行(选中后行标签左缘出青条、露出「清除」;不设「全选」)。
- 分类分四组,一组一行、行首是组名:养成材料(材料 / 作战记录 / 技巧概要 / 精英化芯片 / 通用信物 / 信物 / 中坚信物 / 私人信件)· 基础物品 · 消耗物品 · 其他类别。组内按仓库里的先后排,「材料」提到最前。
- 稀有度不再写「0 (灰)」…「5 (彩)」:0–5 是模板字段的值、和游戏的
TIER_1–6差一位,露给读者没有用处。芯片是一枚底框那样的圆环(data-rarity的稀有度色)+ 色名;地址栏里仍写 0–5。 - 点了也不会多出道具的芯片压淡(
.is-empty,仍可点):按「其余条件不变,这一行里有没有道具落在它上面」算。 - 进页面默认选着「材料」(同现网)。
- 已选条件在结果栏再列一遍(可逐个 ✕、可「清除全部」)。
- 手机上收成一枚「筛选」钮:三行摊开有一屏多高,默认收起,钮上有已选数、右端是开合记号(同干员一览的「高级筛选」钮)。
排序 · 显示方式
- 排序项 × 升降,一个下拉 + 一枚方向钮(同干员一览):仓库顺序 / 稀有度。按稀有度排时,同稀有度的照仓库顺序。现网四个选项(游戏内顺序 / 倒序、稀有度升 / 降)是同一件事。
- 图标:一格一件道具——道具图标
.ak-item(合成图自带稀有度底框)+ 名字,整格链到道具页、悬停铺底。用途 / 描述 / 获取途径在悬停、聚焦时的提示里(挂在body上按视口定位)。白色线稿的图标(集成战略的几种代币)垫一块底框那样的深色圆底。 - 列表(现网没有):一行一件道具,用途 / 描述 / 获取途径直接摊开——图标视图里它们只在悬停提示里,触屏上看不到,按描述搜到的也看不出命中在哪。描述是游戏里的风味文字,比用途弱一级。结果区窄于 860 时一行折成一张卡片(看的是结果区自己的宽度,不是视口)。
地址栏
现网没有地址栏状态。写法同干员一览的 # 参数:
<行>=1-材料;信物:一行筛选(category/rarity/obtain),稀有度写 0–5;选项按面板上的次序写。_s搜索 ·_o排序(order-d/rarity-a/rarity-d,仓库正序不写)·_d=1列表。- 分类行默认选着「材料」:不写 = 默认,一项都不选写成
category=1-。
和现网不一样的
这几处不只是换视觉:
- 「其他」是真正的兜底。现网的「其他」只认那几个写死的值:有 52 件道具哪个分类芯片都筛不到(26 件寻访数据契约 + 26 件没填分类的),348 件哪个获取途径芯片都筛不到(记录修复、活动获得、集成战略 …)。这里别的选项都没命中的归各自那行的「其他」,每件道具每行至少落一项。
- 多了三个选项:分类加「寻访数据契约」(数据里本来就有这个
category2);获取途径加「活动获得」「记录修复」(不加的话「其他」里大半是这两种)。 - 每页默认 100(现网 50):默认选着的「材料」六十多件一页放得下。
- 搜索多搜用途(现网搜名称 / 描述)。
- 列表视图、地址栏状态、没有结果时的空状态是新加的。
- 没动的:没有
itemId的旧道具照旧不显示。
现网 → 这里
| 现网 | 这里 | 说明 |
|---|---|---|
{{Cbox2}}(关于保险库) | .ak-cbox | 页面正文,不归 Widget |
FilterGroup:折叠面板 + OptionsGroup(标题 + 全选 / 清除 + 按钮) | .il-row:标签 + .ak-chip(aria-pressed) | 去掉全选;清除只在有选中时出现;分类分组;手机上收成「筛选」钮 |
| 稀有度「0 (灰)」…「5 (彩)」 | 圆环 .il-ring + 色名 | |
| 条数(图标 + 数字) | 共 N 件道具 / n / N 件道具 | |
NInput | .ak-search | 多搜用途 |
NSelect(四种排序) | .ak-select + 方向钮 | |
| (无) | .ak-btn-group:图标 / 列表 | |
| (无) | 已选条件 .ak-tag + 复制链接(Toast) | |
NPagination(50 / 100 / 200 / 500) | .ak-pagination + .ak-select | 上下各一条;在底部翻页回到结果开头 |
ItemCard:80px 图标 + 灰色小字,悬停放大 | .il-cell:.ak-item--lg + 名字 | 整格悬停铺底,不放大 |
NTooltip(名称 / 用途 / 描述) | .ak-tooltip .il-tip | 多了获取途径 |
| (无) | .ak-table.il-table | 列表视图;窄了折成卡片 |
| 没有结果:空白 | .ak-empty + 「清除全部条件」 |
没有照搬的
.il-*没进设计系统。筛选行.il-row、工具条、结果栏、分页条和干员一览的.ol-*是同一套东西(干员一览里说的「等第二张列表页做出来再提」就是这张)——两边的共同部分现在看得清了:行 = 标签 + 芯片 + 清除、压淡的空选项、结果栏的已选条件、分页条的窄排布。提成组件另开一轮做,这里先各写各的。- 仓库页签的图标(
ui/[uc]itemrepo的material_icon/normal_icon/consum_icon)没用:游戏里页签只有图标,这里分组要的是能读的组名。 - 没有做无 JS 的兜底(现网也没有):
<noscript>只给一句提示。
