poi-plugin-kai-planner 1.0.11 → 1.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -41,10 +41,12 @@
|
|
|
41
41
|
- Wishlist 展开明细中的“当前持有”计数会去除改修星数大于 0 的装备以及计划起点装备
|
|
42
42
|
- 页面顶部 tab、上一次数据源更新、检查更新与更新提示统一使用 `14px` 字号
|
|
43
43
|
- Daily 与 Wishlist 主表的折叠箭头统一为:未展开 `▶`、已展开 `▼`
|
|
44
|
+
- Daily 与 Wishlist 中的类型 filter 已调整为更接近 `poi-plugin-item-info` 的 `checkbox + icon` 轻量布局
|
|
44
45
|
|
|
45
46
|
## 装备类型 icon 兼容性说明
|
|
46
47
|
|
|
47
48
|
- 当前所有装备类型 icon 均直接使用 POI 宿主的 `SlotitemIcon` 默认渲染尺寸
|
|
49
|
+
- Daily 表格、Wishlist 表格、类型 filter 现在都直接从 `views/components/etc/icon` 引入宿主 `SlotitemIcon`
|
|
48
50
|
- 插件侧不再对 `SlotitemIcon` 做 `zoom`、`transform: scale(...)` 或其它自定义缩放处理
|
|
49
51
|
- 原因是不同用户的 POI / Electron / 系统缩放环境下,非宿主默认缩放可能导致 icon 错位、放大或整页异常
|
|
50
|
-
-
|
|
52
|
+
- 若后续仍需优化观感,优先参考 `poi-plugin-item-info` 的宿主友好结构,通过 checkbox / label 布局、外层 gap 、margin 等轻量样式调整观感
|
package/package.json
CHANGED
|
@@ -2,13 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
const React = require("react");
|
|
4
4
|
|
|
5
|
-
let SlotitemIcon = null;
|
|
6
|
-
try {
|
|
7
|
-
({ SlotitemIcon } = require("views/components/etc/icon"));
|
|
8
|
-
} catch {}
|
|
9
|
-
|
|
10
|
-
const { EquipTypeIconFilter } = require("../../components/EquipTypeIconFilter");
|
|
11
|
-
|
|
12
5
|
const { loadStaticData } = require("../../../data/loaders/loadStaticData");
|
|
13
6
|
|
|
14
7
|
const {
|
|
@@ -281,9 +274,7 @@ class DailyTab extends React.Component {
|
|
|
281
274
|
|
|
282
275
|
error: null,
|
|
283
276
|
|
|
284
|
-
search: ""
|
|
285
|
-
|
|
286
|
-
selectedEquipTypes: [],
|
|
277
|
+
search: ""
|
|
287
278
|
};
|
|
288
279
|
|
|
289
280
|
this.refresh = this.refresh.bind(this);
|
|
@@ -505,39 +496,9 @@ class DailyTab extends React.Component {
|
|
|
505
496
|
.trim()
|
|
506
497
|
.toLowerCase();
|
|
507
498
|
|
|
508
|
-
const selectedEquipTypes = Array.isArray(this.state.selectedEquipTypes)
|
|
509
|
-
? this.state.selectedEquipTypes.map(String)
|
|
510
|
-
: [];
|
|
511
|
-
|
|
512
|
-
const selectedEquipTypeSet = new Set(selectedEquipTypes);
|
|
513
|
-
|
|
514
499
|
const allRows = vm && vm.rows ? vm.rows : [];
|
|
515
500
|
|
|
516
|
-
const equipTypeOptions = [];
|
|
517
|
-
|
|
518
|
-
const seenEquipTypes = new Set();
|
|
519
|
-
|
|
520
|
-
for (const row of allRows) {
|
|
521
|
-
const key = row && row.iconType != null ? String(row.iconType) : "";
|
|
522
|
-
|
|
523
|
-
if (!key || seenEquipTypes.has(key)) continue;
|
|
524
|
-
|
|
525
|
-
seenEquipTypes.add(key);
|
|
526
|
-
|
|
527
|
-
equipTypeOptions.push({
|
|
528
|
-
key,
|
|
529
|
-
|
|
530
|
-
iconType: row.iconType,
|
|
531
|
-
|
|
532
|
-
name: String(row && row.equipTypeName ? row.equipTypeName : ""),
|
|
533
|
-
});
|
|
534
|
-
}
|
|
535
|
-
|
|
536
501
|
const rows = allRows.filter((r) => {
|
|
537
|
-
const typeKey = r && r.iconType != null ? String(r.iconType) : "";
|
|
538
|
-
|
|
539
|
-
if (selectedEquipTypeSet.size && !selectedEquipTypeSet.has(typeKey))
|
|
540
|
-
return false;
|
|
541
502
|
|
|
542
503
|
if (
|
|
543
504
|
q &&
|
|
@@ -602,36 +563,6 @@ class DailyTab extends React.Component {
|
|
|
602
563
|
),
|
|
603
564
|
),
|
|
604
565
|
|
|
605
|
-
equipTypeOptions.length
|
|
606
|
-
? React.createElement(
|
|
607
|
-
"div",
|
|
608
|
-
|
|
609
|
-
{ style: { marginTop: 10 } },
|
|
610
|
-
|
|
611
|
-
React.createElement(EquipTypeIconFilter, {
|
|
612
|
-
options: equipTypeOptions,
|
|
613
|
-
|
|
614
|
-
selectedKeys: selectedEquipTypes,
|
|
615
|
-
|
|
616
|
-
onToggle: (key) =>
|
|
617
|
-
this.setState((prev) => {
|
|
618
|
-
const current = new Set(
|
|
619
|
-
Array.isArray(prev.selectedEquipTypes)
|
|
620
|
-
? prev.selectedEquipTypes.map(String)
|
|
621
|
-
: [],
|
|
622
|
-
);
|
|
623
|
-
|
|
624
|
-
if (current.has(key)) current.delete(key);
|
|
625
|
-
else current.add(key);
|
|
626
|
-
|
|
627
|
-
return { selectedEquipTypes: Array.from(current) };
|
|
628
|
-
}),
|
|
629
|
-
|
|
630
|
-
onClear: () => this.setState({ selectedEquipTypes: [] })
|
|
631
|
-
}),
|
|
632
|
-
)
|
|
633
|
-
: null,
|
|
634
|
-
|
|
635
566
|
React.createElement(
|
|
636
567
|
"div",
|
|
637
568
|
|
|
@@ -711,7 +642,7 @@ class DailyTab extends React.Component {
|
|
|
711
642
|
|
|
712
643
|
{ style: { margin: "0 0 10px", opacity: 0.8 } },
|
|
713
644
|
|
|
714
|
-
`今日可改修装备:${rows.length} 条${
|
|
645
|
+
`今日可改修装备:${rows.length} 条${q ? `(搜索:${this.state.search})` : ""}`,
|
|
715
646
|
),
|
|
716
647
|
|
|
717
648
|
React.createElement(
|
|
@@ -831,9 +762,6 @@ React.createElement("th", { style: { ...thStyle, ...upgradeColStyle } }, "可进
|
|
|
831
762
|
foldIcon,
|
|
832
763
|
),
|
|
833
764
|
|
|
834
|
-
SlotitemIcon && r.iconType
|
|
835
|
-
? React.createElement(SlotitemIcon, { slotitemId: r.iconType })
|
|
836
|
-
: null,
|
|
837
765
|
|
|
838
766
|
React.createElement(
|
|
839
767
|
"div",
|
|
@@ -31,7 +31,6 @@ const {
|
|
|
31
31
|
upsertLastResult,
|
|
32
32
|
} = require("../../../storage/userPlans/planStore");
|
|
33
33
|
const { CreatePlanForm } = require("./CreatePlanForm");
|
|
34
|
-
const { EquipTypeIconFilter } = require("../../components/EquipTypeIconFilter");
|
|
35
34
|
const { WishlistTable } = require("./components/WishlistTable");
|
|
36
35
|
const { WishlistExpandedDetail } = require("./components/WishlistExpandedDetail");
|
|
37
36
|
const { buildWishlistViewModel } = require("../../../services/wishlist/buildWishlistViewModel");
|
|
@@ -108,7 +107,6 @@ class WishlistTab extends React.Component {
|
|
|
108
107
|
rebindInputById: {},
|
|
109
108
|
editById: {},
|
|
110
109
|
filterTargetName: "",
|
|
111
|
-
selectedTargetEquipTypes: [],
|
|
112
110
|
activePlanTab: "unfinished",
|
|
113
111
|
showCreateForm: false,
|
|
114
112
|
create: {
|
|
@@ -632,37 +630,7 @@ class WishlistTab extends React.Component {
|
|
|
632
630
|
masterEquipsById,
|
|
633
631
|
masterEquipTypesById: state.const.$equipTypes || {},
|
|
634
632
|
});
|
|
635
|
-
const
|
|
636
|
-
? this.state.selectedTargetEquipTypes.map(String)
|
|
637
|
-
: [];
|
|
638
|
-
const selectedTargetEquipTypeSet = new Set(selectedTargetEquipTypes);
|
|
639
|
-
const targetEquipTypeOptions = [];
|
|
640
|
-
const seenTargetEquipTypes = new Set();
|
|
641
|
-
for (const rowVm of vm.rows || []) {
|
|
642
|
-
const key = rowVm && rowVm.targetIconType != null ? String(rowVm.targetIconType) : "";
|
|
643
|
-
if (!key || seenTargetEquipTypes.has(key)) continue;
|
|
644
|
-
seenTargetEquipTypes.add(key);
|
|
645
|
-
targetEquipTypeOptions.push({
|
|
646
|
-
key,
|
|
647
|
-
iconType: rowVm.targetIconType,
|
|
648
|
-
name: String(rowVm && rowVm.targetEquipTypeName ? rowVm.targetEquipTypeName : ""),
|
|
649
|
-
});
|
|
650
|
-
}
|
|
651
|
-
const matchesSelectedTargetType = (rowVm) => {
|
|
652
|
-
const key = rowVm && rowVm.targetIconType != null ? String(rowVm.targetIconType) : "";
|
|
653
|
-
return !selectedTargetEquipTypeSet.size || selectedTargetEquipTypeSet.has(key);
|
|
654
|
-
};
|
|
655
|
-
const filteredVm = {
|
|
656
|
-
...vm,
|
|
657
|
-
rows: (vm.rows || []).filter(matchesSelectedTargetType),
|
|
658
|
-
unfinishedRows: (vm.unfinishedRows || []).filter(matchesSelectedTargetType),
|
|
659
|
-
completedRows: (vm.completedRows || []).filter(matchesSelectedTargetType),
|
|
660
|
-
};
|
|
661
|
-
filteredVm.counts = {
|
|
662
|
-
total: filteredVm.rows.length,
|
|
663
|
-
unfinished: filteredVm.unfinishedRows.length,
|
|
664
|
-
completed: filteredVm.completedRows.length,
|
|
665
|
-
};
|
|
633
|
+
const filteredVm = vm;
|
|
666
634
|
const activePlanTab = this.state.activePlanTab || "unfinished";
|
|
667
635
|
const activeRows = activePlanTab === "completed" ? filteredVm.completedRows : filteredVm.unfinishedRows;
|
|
668
636
|
|
|
@@ -691,26 +659,6 @@ class WishlistTab extends React.Component {
|
|
|
691
659
|
React.createElement("button", { onClick: () => this.setState({ showCreateForm: true }) }, "新增改修计划"),
|
|
692
660
|
React.createElement("button", { onClick: this.refreshPlans }, "刷新")
|
|
693
661
|
),
|
|
694
|
-
targetEquipTypeOptions.length
|
|
695
|
-
? React.createElement(
|
|
696
|
-
"div",
|
|
697
|
-
{ style: { marginTop: 10 } },
|
|
698
|
-
React.createElement(EquipTypeIconFilter, {
|
|
699
|
-
options: targetEquipTypeOptions,
|
|
700
|
-
selectedKeys: selectedTargetEquipTypes,
|
|
701
|
-
onToggle: (key) =>
|
|
702
|
-
this.setState((prev) => {
|
|
703
|
-
const current = new Set(
|
|
704
|
-
Array.isArray(prev.selectedTargetEquipTypes) ? prev.selectedTargetEquipTypes.map(String) : []
|
|
705
|
-
);
|
|
706
|
-
if (current.has(key)) current.delete(key);
|
|
707
|
-
else current.add(key);
|
|
708
|
-
return { selectedTargetEquipTypes: Array.from(current) };
|
|
709
|
-
}),
|
|
710
|
-
onClear: () => this.setState({ selectedTargetEquipTypes: [] }),
|
|
711
|
-
})
|
|
712
|
-
)
|
|
713
|
-
: null,
|
|
714
662
|
React.createElement(
|
|
715
663
|
"div",
|
|
716
664
|
{ style: planTabBar },
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
/* src/app/tabs/wishlist/components/WishlistTable.js */
|
|
2
2
|
|
|
3
3
|
const React = require("react");
|
|
4
|
-
let SlotitemIcon = null;
|
|
5
|
-
try {
|
|
6
|
-
({ SlotitemIcon } = require("views/components/etc/icon"));
|
|
7
|
-
} catch {}
|
|
8
4
|
|
|
9
5
|
const PRIORITY_STYLE_MAP = {
|
|
10
6
|
P0: { color: "#fecaca", borderColor: "rgba(239,68,68,0.55)", background: "rgba(239,68,68,0.16)" },
|
|
@@ -111,7 +107,7 @@ function WishlistTable({
|
|
|
111
107
|
},
|
|
112
108
|
React.createElement(
|
|
113
109
|
"td",
|
|
114
|
-
{ style:
|
|
110
|
+
{ style: td },
|
|
115
111
|
React.createElement(
|
|
116
112
|
"div",
|
|
117
113
|
{ style: { display: "flex", gap: 8, alignItems: "center" } },
|
|
@@ -136,9 +132,6 @@ function WishlistTable({
|
|
|
136
132
|
},
|
|
137
133
|
expandIcon
|
|
138
134
|
),
|
|
139
|
-
SlotitemIcon && rowVm.targetIconType
|
|
140
|
-
? React.createElement(SlotitemIcon, { slotitemId: rowVm.targetIconType })
|
|
141
|
-
: null,
|
|
142
135
|
React.createElement(
|
|
143
136
|
"div",
|
|
144
137
|
null,
|