poi-plugin-remodel-assistant 1.2.7 → 1.2.8-beta.1
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 +17 -25
- package/assets/main.css +70 -0
- package/data/changelog.json +7 -0
- package/i18n/en-US.json +43 -1
- package/i18n/ja-JP.json +43 -1
- package/i18n/zh-CN.json +43 -1
- package/i18n/zh-TW.json +43 -1
- package/package.json +2 -2
- package/views/new-interface/app/decision-snapshot-jobs.js +13 -4
- package/views/new-interface/app/new-interface-area.js +122 -3
- package/views/new-interface/app/startup-decision-snapshot-storage.js +5 -1
- package/views/new-interface/decisions/domain/decision-snapshot-domain.js +5 -2
- package/views/new-interface/incremental/plan-decision-index.js +4 -1
- package/views/new-interface/plan/components/binding-adjustment-modal.js +134 -0
- package/views/new-interface/plan/components/current-start-candidate-selector.js +2 -2
- package/views/new-interface/plan/domain/binding-adjustment-domain.js +169 -0
- package/views/new-interface/plan/domain/current-start-assignment-domain.js +138 -23
- package/views/new-interface/plan/domain/current-start-selection-domain.js +5 -300
- package/views/new-interface/plan/domain/plan-route-domain.js +31 -31
- package/views/new-interface/plan/domain/plan-route-selection-domain.js +322 -0
- package/views/shared/data-transfer.js +2 -2
- package/views/shared/legacy-assignment-recovery.js +7 -7
- package/views/shared/plan-storage.js +1 -1
- package/views/shared/plugin-state-commands.js +102 -6
- package/views/shared/plugin-state-schema.js +39 -9
- package/views/shared/plugin-state-storage.js +7 -0
package/README.md
CHANGED
|
@@ -1,43 +1,35 @@
|
|
|
1
1
|
# 改修助手
|
|
2
2
|
|
|
3
|
-
Poi
|
|
3
|
+
Poi 用舰队 Collection 装备改修规划插件。结合当前库存与随包数据,把长期改修目标拆成“今天改什么”、具体起点、完整升级路线、秘书舰条件和材料消耗。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Beta preview channel. Beta and Stable share the npm package name `poi-plugin-remodel-assistant`; Beta uses the `beta` dist-tag and Stable uses `latest`.
|
|
6
6
|
|
|
7
7
|
## Features
|
|
8
8
|
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
- Review acquisition sources
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
9
|
+
- Use **Today** as the execution list for unfinished plans, with current equipment, assistant ships, available days, current-step materials, and the remaining equipment-star route in one detail view.
|
|
10
|
+
- Use **Equipment library** to search equipment, review owned copies, add explicit target-star/quantity plans, compare total cost, and manage each plan route.
|
|
11
|
+
- Keep route choices explicit: one valid complete route is used directly, while multiple valid routes wait for the user to choose instead of being silently auto-ranked.
|
|
12
|
+
- Review acquisition sources when a route requires equipment you do not own, including development, quest, and ship initial/remodel sources when available.
|
|
13
|
+
- Compare expected and guaranteed material needs, with development materials and improvement materials presented separately.
|
|
14
|
+
- Customize ordinary detail sections by visibility and order, while required unresolved/action sections remain visible.
|
|
15
|
+
- Use category filters, sorting, and low-priority equipment to narrow recommendations without removing valid plans or routes.
|
|
16
16
|
|
|
17
17
|
## Quick Start
|
|
18
18
|
|
|
19
|
-
1. Open **Equipment library
|
|
20
|
-
2.
|
|
21
|
-
3.
|
|
22
|
-
4. Open **Today** and follow the current guidance.
|
|
19
|
+
1. Open **Equipment library**, select an equipment, and add a plan with the target improvement level and quantity.
|
|
20
|
+
2. If the plan has more than one complete valid route, choose the route you want; if the starting equipment is missing, open its acquisition details.
|
|
21
|
+
3. Open **Today** and follow the current equipment, assistant ship, available day, material requirement, and remaining route shown in the detail pane.
|
|
23
22
|
|
|
24
|
-
The in-plugin **Help** entry contains
|
|
25
|
-
|
|
26
|
-
## Data Sources
|
|
27
|
-
|
|
28
|
-
Improvement information is based on:
|
|
29
|
-
|
|
30
|
-
- Akashi-List
|
|
31
|
-
- wikiwiki.jp
|
|
32
|
-
- KcWiki-Api
|
|
33
|
-
- KC3
|
|
34
|
-
|
|
35
|
-
The plugin uses the latest available data and shows the active data version and update time in **Help**.
|
|
23
|
+
The in-plugin **Help** entry contains this workflow, detailed category/low-priority guides, data-source information, and user-facing release notes.
|
|
36
24
|
|
|
37
25
|
## Installation
|
|
38
26
|
|
|
39
27
|
Install `poi-plugin-remodel-assistant` from the Poi plugin manager.
|
|
40
28
|
|
|
29
|
+
## Data
|
|
30
|
+
|
|
31
|
+
Improvement data is based on Akashi-List, wikiwiki.jp, KcWiki-Api, and KC3. Data is updated with the packaged plugin data and is not fetched in real time while the plugin is running.
|
|
32
|
+
|
|
41
33
|
## License
|
|
42
34
|
|
|
43
35
|
MIT
|
package/assets/main.css
CHANGED
|
@@ -12471,3 +12471,73 @@ body.decision-modal-is-dragging * {
|
|
|
12471
12471
|
width: 100%;
|
|
12472
12472
|
}
|
|
12473
12473
|
}
|
|
12474
|
+
|
|
12475
|
+
/* Allocation recommendations: actionable strict-progress updates + read-only audit history. */
|
|
12476
|
+
.decision-binding-recommendation-trigger.has-pending {
|
|
12477
|
+
font-weight: 600;
|
|
12478
|
+
box-shadow: 0 0 0 1px rgba(255, 193, 7, 0.36);
|
|
12479
|
+
}
|
|
12480
|
+
|
|
12481
|
+
.decision-binding-adjustment-dialog {
|
|
12482
|
+
width: min(760px, calc(100vw - 48px));
|
|
12483
|
+
}
|
|
12484
|
+
|
|
12485
|
+
.decision-binding-adjustment-modal {
|
|
12486
|
+
display: grid;
|
|
12487
|
+
gap: 18px;
|
|
12488
|
+
max-height: min(72vh, 720px);
|
|
12489
|
+
overflow: auto;
|
|
12490
|
+
}
|
|
12491
|
+
|
|
12492
|
+
.decision-binding-recommendation-notice {
|
|
12493
|
+
margin: 0;
|
|
12494
|
+
}
|
|
12495
|
+
|
|
12496
|
+
.decision-binding-adjustment-section {
|
|
12497
|
+
display: grid;
|
|
12498
|
+
gap: 10px;
|
|
12499
|
+
}
|
|
12500
|
+
|
|
12501
|
+
.decision-binding-adjustment-section > header {
|
|
12502
|
+
display: grid;
|
|
12503
|
+
gap: 2px;
|
|
12504
|
+
}
|
|
12505
|
+
|
|
12506
|
+
.decision-binding-adjustment-section > header small {
|
|
12507
|
+
opacity: 0.72;
|
|
12508
|
+
}
|
|
12509
|
+
|
|
12510
|
+
.decision-binding-adjustment-list,
|
|
12511
|
+
.decision-binding-adjustment-history {
|
|
12512
|
+
display: grid;
|
|
12513
|
+
gap: 8px;
|
|
12514
|
+
}
|
|
12515
|
+
|
|
12516
|
+
.decision-binding-adjustment-entry,
|
|
12517
|
+
.decision-binding-adjustment-history-entry {
|
|
12518
|
+
display: flex;
|
|
12519
|
+
align-items: center;
|
|
12520
|
+
justify-content: space-between;
|
|
12521
|
+
gap: 14px;
|
|
12522
|
+
padding: 10px 12px;
|
|
12523
|
+
border: 1px solid rgba(127, 127, 127, 0.28);
|
|
12524
|
+
border-radius: 4px;
|
|
12525
|
+
}
|
|
12526
|
+
|
|
12527
|
+
.decision-binding-adjustment-copy,
|
|
12528
|
+
.decision-binding-adjustment-history-entry > div {
|
|
12529
|
+
display: grid;
|
|
12530
|
+
min-width: 0;
|
|
12531
|
+
gap: 3px;
|
|
12532
|
+
}
|
|
12533
|
+
|
|
12534
|
+
.decision-binding-adjustment-copy span,
|
|
12535
|
+
.decision-binding-adjustment-history-entry span {
|
|
12536
|
+
overflow-wrap: anywhere;
|
|
12537
|
+
}
|
|
12538
|
+
|
|
12539
|
+
.decision-binding-adjustment-history-entry time {
|
|
12540
|
+
flex: 0 0 auto;
|
|
12541
|
+
opacity: 0.66;
|
|
12542
|
+
font-size: 0.9em;
|
|
12543
|
+
}
|
package/data/changelog.json
CHANGED
package/i18n/en-US.json
CHANGED
|
@@ -1682,5 +1682,47 @@
|
|
|
1682
1682
|
"app.changelog_1_2_7_remaining_cost_fix": "Fixed an issue where remaining resources, development materials, improvement materials, and equipment consumables could incorrectly show as 0 for partially executed improvement plans.",
|
|
1683
1683
|
"statistics.Current": "Owned",
|
|
1684
1684
|
"statistics.Equipment gaps": "Equipment gaps",
|
|
1685
|
-
"chain.Open the complete chain to pan and zoom": "Open the complete chain to pan and zoom."
|
|
1685
|
+
"chain.Open the complete chain to pan and zoom": "Open the complete chain to pan and zoom.",
|
|
1686
|
+
"app.Equipment allocation": "Equipment allocation",
|
|
1687
|
+
"app.Adjustable %d": "%d adjustable",
|
|
1688
|
+
"app.Available adjustments": "Available adjustments",
|
|
1689
|
+
"app.Only strict progress on the current route is suggested. Nothing changes until you confirm.": "Only an available item further along the selected route is suggested. Nothing changes until you confirm.",
|
|
1690
|
+
"app.No allocation adjustments are currently available": "No allocation adjustments are currently available",
|
|
1691
|
+
"app.Confirming...": "Confirming…",
|
|
1692
|
+
"app.Confirm adjustment": "Confirm adjustment",
|
|
1693
|
+
"app.History": "History",
|
|
1694
|
+
"app.History is read-only and cannot be rolled back or reapplied.": "History is read-only and cannot be rolled back or reapplied.",
|
|
1695
|
+
"app.No allocation adjustment history yet": "No allocation adjustment history yet",
|
|
1696
|
+
"app.This adjustment is no longer available. The current allocation has been refreshed.": "This adjustment is no longer available. The current allocation has been refreshed.",
|
|
1697
|
+
"app.Allocation adjusted": "Allocation adjusted",
|
|
1698
|
+
"plan.Equipment allocation": "Equipment allocation",
|
|
1699
|
+
"plan.Adjustable %d": "%d adjustable",
|
|
1700
|
+
"plan.Available adjustments": "Available adjustments",
|
|
1701
|
+
"plan.Only strict progress on the current route is suggested. Nothing changes until you confirm.": "Only an available item further along the selected route is suggested. Nothing changes until you confirm.",
|
|
1702
|
+
"plan.No allocation adjustments are currently available": "No allocation adjustments are currently available",
|
|
1703
|
+
"plan.Confirming...": "Confirming…",
|
|
1704
|
+
"plan.Confirm adjustment": "Confirm adjustment",
|
|
1705
|
+
"plan.History": "History",
|
|
1706
|
+
"plan.History is read-only and cannot be rolled back or reapplied.": "History is read-only and cannot be rolled back or reapplied.",
|
|
1707
|
+
"plan.No allocation adjustment history yet": "No allocation adjustment history yet",
|
|
1708
|
+
"plan.This adjustment is no longer available. The current allocation has been refreshed.": "This adjustment is no longer available. The current allocation has been refreshed.",
|
|
1709
|
+
"plan.Allocation adjusted": "Allocation adjusted",
|
|
1710
|
+
"app.Allocation recommendations": "Allocation recommendations",
|
|
1711
|
+
"app.A recommendation is shown only when an available item is further along the selected route. Your allocation changes only after you apply it.": "A recommendation is shown only when an available item is further along the selected route. Your allocation changes only after you apply it.",
|
|
1712
|
+
"app.Applying...": "Applying…",
|
|
1713
|
+
"app.This recommendation is no longer available. The current allocation has been refreshed.": "This recommendation is no longer available. The current allocation has been refreshed.",
|
|
1714
|
+
"app.Recommended update applied": "Recommended update applied",
|
|
1715
|
+
"app.changelog_1_2_8_allocation_recommendations": "Added allocation recommendations: when a plan has a more advanced available starting option, the plugin alerts you and updates the allocation only after confirmation.",
|
|
1716
|
+
"app.changelog_1_2_8_recommendation_history": "Added recommendation update history and a clearer attention state when a recommendation is waiting for confirmation.",
|
|
1717
|
+
"plan.Allocation recommendations": "Allocation recommendations",
|
|
1718
|
+
"plan.Applying...": "Applying…",
|
|
1719
|
+
"app.Allocation recommendations available": "Allocation recommendations available",
|
|
1720
|
+
"plan.There are %d allocation recommendations. Confirm to update the allocation.": "There are %d allocation recommendations. Confirm to update the allocation.",
|
|
1721
|
+
"plan.A recommendation appears when a more advanced starting item is available on the selected route. The allocation changes only after you confirm the update.": "A recommendation appears when a more advanced starting item is available on the selected route. The allocation changes only after you confirm the update.",
|
|
1722
|
+
"plan.Update allocation": "Update allocation",
|
|
1723
|
+
"plan.Updating...": "Updating...",
|
|
1724
|
+
"plan.Update records": "Update records",
|
|
1725
|
+
"plan.Update records show successful allocation changes only and are read-only.": "Update records show successful allocation changes only and are read-only.",
|
|
1726
|
+
"plan.No allocation update records yet": "No allocation update records yet",
|
|
1727
|
+
"plan.No allocation recommendations available": "No allocation recommendations available"
|
|
1686
1728
|
}
|
package/i18n/ja-JP.json
CHANGED
|
@@ -1682,5 +1682,47 @@
|
|
|
1682
1682
|
"app.changelog_1_2_7_remaining_cost_fix": "一部実行済みの改修計画で、残りの資源・開発資材・改修資材・装備素材が誤って 0 と表示されることがある問題を修正しました。",
|
|
1683
1683
|
"statistics.Current": "所持",
|
|
1684
1684
|
"statistics.Equipment gaps": "装備不足",
|
|
1685
|
-
"chain.Open the complete chain to pan and zoom": "完全な改修チェーンを開くと、移動・拡大縮小して確認できます。"
|
|
1685
|
+
"chain.Open the complete chain to pan and zoom": "完全な改修チェーンを開くと、移動・拡大縮小して確認できます。",
|
|
1686
|
+
"app.Equipment allocation": "装備割り当て",
|
|
1687
|
+
"app.Adjustable %d": "調整可能 %d",
|
|
1688
|
+
"app.Available adjustments": "調整可能な割り当て",
|
|
1689
|
+
"app.Only strict progress on the current route is suggested. Nothing changes until you confirm.": "選択中のルートで、より先まで進んでいる利用可能な装備だけを表示します。確認するまで装備割り当ては変更されません。",
|
|
1690
|
+
"app.No allocation adjustments are currently available": "現在調整できる装備割り当てはありません",
|
|
1691
|
+
"app.Confirming...": "確認中…",
|
|
1692
|
+
"app.Confirm adjustment": "調整を確認",
|
|
1693
|
+
"app.History": "履歴",
|
|
1694
|
+
"app.History is read-only and cannot be rolled back or reapplied.": "履歴は参照専用で、ロールバックや再実行はできません。",
|
|
1695
|
+
"app.No allocation adjustment history yet": "装備割り当ての調整履歴はまだありません",
|
|
1696
|
+
"app.This adjustment is no longer available. The current allocation has been refreshed.": "この調整は無効になりました。現在の装備割り当てを更新しました。",
|
|
1697
|
+
"app.Allocation adjusted": "装備割り当てを調整しました",
|
|
1698
|
+
"plan.Equipment allocation": "装備割り当て",
|
|
1699
|
+
"plan.Adjustable %d": "調整可能 %d",
|
|
1700
|
+
"plan.Available adjustments": "調整可能な割り当て",
|
|
1701
|
+
"plan.Only strict progress on the current route is suggested. Nothing changes until you confirm.": "選択中のルートで、より先まで進んでいる利用可能な装備だけを表示します。確認するまで装備割り当ては変更されません。",
|
|
1702
|
+
"plan.No allocation adjustments are currently available": "現在調整できる装備割り当てはありません",
|
|
1703
|
+
"plan.Confirming...": "確認中…",
|
|
1704
|
+
"plan.Confirm adjustment": "調整を確認",
|
|
1705
|
+
"plan.History": "履歴",
|
|
1706
|
+
"plan.History is read-only and cannot be rolled back or reapplied.": "履歴は参照専用で、ロールバックや再実行はできません。",
|
|
1707
|
+
"plan.No allocation adjustment history yet": "装備割り当ての調整履歴はまだありません",
|
|
1708
|
+
"plan.This adjustment is no longer available. The current allocation has been refreshed.": "この調整は無効になりました。現在の装備割り当てを更新しました。",
|
|
1709
|
+
"plan.Allocation adjusted": "装備割り当てを調整しました",
|
|
1710
|
+
"app.Allocation recommendations": "割り当てのおすすめ",
|
|
1711
|
+
"app.A recommendation is shown only when an available item is further along the selected route. Your allocation changes only after you apply it.": "選択中のルートで、より先まで進んでいる利用可能な装備がある場合だけおすすめします。適用するまで現在の装備割り当ては変更されません。",
|
|
1712
|
+
"app.Applying...": "適用中…",
|
|
1713
|
+
"app.This recommendation is no longer available. The current allocation has been refreshed.": "このおすすめは無効になりました。現在の装備割り当てを更新しました。",
|
|
1714
|
+
"app.Recommended update applied": "おすすめ更新を適用しました",
|
|
1715
|
+
"app.changelog_1_2_8_allocation_recommendations": "装備割り当てのおすすめを追加しました。計画の開始地点に、より先まで進んだ利用可能な選択肢がある場合に通知し、確認後に割り当てを更新できます。",
|
|
1716
|
+
"app.changelog_1_2_8_recommendation_history": "おすすめ更新の履歴を追加し、確認待ちのおすすめがある場合の表示を分かりやすくしました。",
|
|
1717
|
+
"plan.Allocation recommendations": "割り当てのおすすめ",
|
|
1718
|
+
"plan.Applying...": "適用中…",
|
|
1719
|
+
"app.Allocation recommendations available": "割り当てのおすすめあり",
|
|
1720
|
+
"plan.There are %d allocation recommendations. Confirm to update the allocation.": "割り当てのおすすめが %d 件あります。確認すると装備割り当てを更新します。",
|
|
1721
|
+
"plan.A recommendation appears when a more advanced starting item is available on the selected route. The allocation changes only after you confirm the update.": "選択中のルートで、計画の開始地点としてより先まで進んだ利用可能な装備がある場合におすすめします。確認するまで割り当ては変更されません。",
|
|
1722
|
+
"plan.Update allocation": "割り当てを更新",
|
|
1723
|
+
"plan.Updating...": "更新中…",
|
|
1724
|
+
"plan.Update records": "更新記録",
|
|
1725
|
+
"plan.Update records show successful allocation changes only and are read-only.": "正常に適用された装備割り当ての更新だけを記録します。記録は閲覧専用です。",
|
|
1726
|
+
"plan.No allocation update records yet": "更新記録はまだありません",
|
|
1727
|
+
"plan.No allocation recommendations available": "現在、割り当てのおすすめはありません"
|
|
1686
1728
|
}
|
package/i18n/zh-CN.json
CHANGED
|
@@ -1682,5 +1682,47 @@
|
|
|
1682
1682
|
"app.changelog_1_2_7_remaining_cost_fix": "修复部分已经开始执行的改修计划,其剩余资源、开发资材、改修资材及装备耗材可能错误显示为 0 的问题。",
|
|
1683
1683
|
"statistics.Current": "持有",
|
|
1684
1684
|
"statistics.Equipment gaps": "装备缺口",
|
|
1685
|
-
"chain.Open the complete chain to pan and zoom": "打开完整升级链后可拖动和缩放查看。"
|
|
1685
|
+
"chain.Open the complete chain to pan and zoom": "打开完整升级链后可拖动和缩放查看。",
|
|
1686
|
+
"app.Equipment allocation": "装备分配",
|
|
1687
|
+
"app.Adjustable %d": "可调整 %d",
|
|
1688
|
+
"app.Available adjustments": "可操作调整",
|
|
1689
|
+
"app.Only strict progress on the current route is suggested. Nothing changes until you confirm.": "这里只显示所选路线中已经推进得更远的可用装备;确认前不会实际调整装备分配。",
|
|
1690
|
+
"app.No allocation adjustments are currently available": "当前没有可调整的装备分配",
|
|
1691
|
+
"app.Confirming...": "正在确认…",
|
|
1692
|
+
"app.Confirm adjustment": "确认调整",
|
|
1693
|
+
"app.History": "历史",
|
|
1694
|
+
"app.History is read-only and cannot be rolled back or reapplied.": "历史仅供查看,不支持回滚或重新执行。",
|
|
1695
|
+
"app.No allocation adjustment history yet": "暂无装备分配调整历史",
|
|
1696
|
+
"app.This adjustment is no longer available. The current allocation has been refreshed.": "这条调整已经失效,当前装备分配已刷新。",
|
|
1697
|
+
"app.Allocation adjusted": "装备分配已调整",
|
|
1698
|
+
"plan.Equipment allocation": "装备分配",
|
|
1699
|
+
"plan.Adjustable %d": "可调整 %d",
|
|
1700
|
+
"plan.Available adjustments": "可操作调整",
|
|
1701
|
+
"plan.Only strict progress on the current route is suggested. Nothing changes until you confirm.": "这里只显示所选路线中已经推进得更远的可用装备;确认前不会实际调整装备分配。",
|
|
1702
|
+
"plan.No allocation adjustments are currently available": "当前没有可调整的装备分配",
|
|
1703
|
+
"plan.Confirming...": "正在确认…",
|
|
1704
|
+
"plan.Confirm adjustment": "确认调整",
|
|
1705
|
+
"plan.History": "历史",
|
|
1706
|
+
"plan.History is read-only and cannot be rolled back or reapplied.": "历史仅供查看,不支持回滚或重新执行。",
|
|
1707
|
+
"plan.No allocation adjustment history yet": "暂无装备分配调整历史",
|
|
1708
|
+
"plan.This adjustment is no longer available. The current allocation has been refreshed.": "这条调整已经失效,当前装备分配已刷新。",
|
|
1709
|
+
"plan.Allocation adjusted": "装备分配已调整",
|
|
1710
|
+
"app.Allocation recommendations": "分配建议",
|
|
1711
|
+
"app.A recommendation is shown only when an available item is further along the selected route. Your allocation changes only after you apply it.": "仅当所选路线存在推进得更远的可用装备时才会给出推荐;只有应用推荐后才会更新当前装备分配。",
|
|
1712
|
+
"app.Applying...": "正在应用…",
|
|
1713
|
+
"app.This recommendation is no longer available. The current allocation has been refreshed.": "这条推荐已经失效,当前装备分配已刷新。",
|
|
1714
|
+
"app.Recommended update applied": "推荐更新已应用",
|
|
1715
|
+
"app.changelog_1_2_8_allocation_recommendations": "新增装备分配建议:当计划起点有更进一步的可用选择时会进行提醒,确认后即可更新装备分配。",
|
|
1716
|
+
"app.changelog_1_2_8_recommendation_history": "新增推荐更新历史,并在存在待确认推荐时提供更明显的提示。",
|
|
1717
|
+
"plan.Allocation recommendations": "分配建议",
|
|
1718
|
+
"plan.Applying...": "正在应用…",
|
|
1719
|
+
"app.Allocation recommendations available": "有分配建议",
|
|
1720
|
+
"plan.There are %d allocation recommendations. Confirm to update the allocation.": "有 %d 项分配建议,确认后才会更新装备分配。",
|
|
1721
|
+
"plan.A recommendation appears when a more advanced starting item is available on the selected route. The allocation changes only after you confirm the update.": "当计划起点有沿所选路线更进一步的可用装备时会给出建议,确认后才会更新分配。",
|
|
1722
|
+
"plan.Update allocation": "更新分配",
|
|
1723
|
+
"plan.Updating...": "更新中…",
|
|
1724
|
+
"plan.Update records": "更新记录",
|
|
1725
|
+
"plan.Update records show successful allocation changes only and are read-only.": "这里只记录已成功更新的装备分配,仅供查看。",
|
|
1726
|
+
"plan.No allocation update records yet": "暂无更新记录",
|
|
1727
|
+
"plan.No allocation recommendations available": "当前没有分配建议"
|
|
1686
1728
|
}
|
package/i18n/zh-TW.json
CHANGED
|
@@ -1682,5 +1682,47 @@
|
|
|
1682
1682
|
"app.changelog_1_2_7_remaining_cost_fix": "修復部分已開始執行的改修計畫,其剩餘資源、開發資材、改修資材及裝備耗材可能錯誤顯示為 0 的問題。",
|
|
1683
1683
|
"statistics.Current": "持有",
|
|
1684
1684
|
"statistics.Equipment gaps": "裝備缺口",
|
|
1685
|
-
"chain.Open the complete chain to pan and zoom": "開啟完整升級鏈後可拖動和縮放查看。"
|
|
1685
|
+
"chain.Open the complete chain to pan and zoom": "開啟完整升級鏈後可拖動和縮放查看。",
|
|
1686
|
+
"app.Equipment allocation": "裝備分配",
|
|
1687
|
+
"app.Adjustable %d": "可調整 %d",
|
|
1688
|
+
"app.Available adjustments": "可操作調整",
|
|
1689
|
+
"app.Only strict progress on the current route is suggested. Nothing changes until you confirm.": "只顯示所選路線中已經推進得更遠的可用裝備;確認前不會實際調整裝備分配。",
|
|
1690
|
+
"app.No allocation adjustments are currently available": "目前沒有可調整的裝備分配",
|
|
1691
|
+
"app.Confirming...": "正在確認…",
|
|
1692
|
+
"app.Confirm adjustment": "確認調整",
|
|
1693
|
+
"app.History": "歷史",
|
|
1694
|
+
"app.History is read-only and cannot be rolled back or reapplied.": "歷史僅供查看,不支援回滾或重新執行。",
|
|
1695
|
+
"app.No allocation adjustment history yet": "尚無裝備分配調整歷史",
|
|
1696
|
+
"app.This adjustment is no longer available. The current allocation has been refreshed.": "這項調整已失效,目前裝備分配已重新整理。",
|
|
1697
|
+
"app.Allocation adjusted": "裝備分配已調整",
|
|
1698
|
+
"plan.Equipment allocation": "裝備分配",
|
|
1699
|
+
"plan.Adjustable %d": "可調整 %d",
|
|
1700
|
+
"plan.Available adjustments": "可操作調整",
|
|
1701
|
+
"plan.Only strict progress on the current route is suggested. Nothing changes until you confirm.": "只顯示所選路線中已經推進得更遠的可用裝備;確認前不會實際調整裝備分配。",
|
|
1702
|
+
"plan.No allocation adjustments are currently available": "目前沒有可調整的裝備分配",
|
|
1703
|
+
"plan.Confirming...": "正在確認…",
|
|
1704
|
+
"plan.Confirm adjustment": "確認調整",
|
|
1705
|
+
"plan.History": "歷史",
|
|
1706
|
+
"plan.History is read-only and cannot be rolled back or reapplied.": "歷史僅供查看,不支援回滾或重新執行。",
|
|
1707
|
+
"plan.No allocation adjustment history yet": "尚無裝備分配調整歷史",
|
|
1708
|
+
"plan.This adjustment is no longer available. The current allocation has been refreshed.": "這項調整已失效,目前裝備分配已重新整理。",
|
|
1709
|
+
"plan.Allocation adjusted": "裝備分配已調整",
|
|
1710
|
+
"app.Allocation recommendations": "分配建議",
|
|
1711
|
+
"app.A recommendation is shown only when an available item is further along the selected route. Your allocation changes only after you apply it.": "只有所選路線中存在推進得更遠的可用裝備時才會顯示推薦;只有套用推薦後才會更新目前裝備分配。",
|
|
1712
|
+
"app.Applying...": "正在套用…",
|
|
1713
|
+
"app.This recommendation is no longer available. The current allocation has been refreshed.": "這項推薦已失效,目前裝備分配已重新整理。",
|
|
1714
|
+
"app.Recommended update applied": "推薦更新已套用",
|
|
1715
|
+
"app.changelog_1_2_8_allocation_recommendations": "新增裝備分配建議:當計畫起點有更進一步的可用選擇時會提醒,確認後即可更新裝備分配。",
|
|
1716
|
+
"app.changelog_1_2_8_recommendation_history": "新增推薦更新歷史,並在有待確認推薦時提供更明顯的提示。",
|
|
1717
|
+
"plan.Allocation recommendations": "分配建議",
|
|
1718
|
+
"plan.Applying...": "正在套用…",
|
|
1719
|
+
"app.Allocation recommendations available": "有分配建議",
|
|
1720
|
+
"plan.There are %d allocation recommendations. Confirm to update the allocation.": "有 %d 項分配建議,確認後才會更新裝備分配。",
|
|
1721
|
+
"plan.A recommendation appears when a more advanced starting item is available on the selected route. The allocation changes only after you confirm the update.": "當計畫起點有沿所選路線更進一步的可用裝備時會提供建議,確認後才會更新分配。",
|
|
1722
|
+
"plan.Update allocation": "更新分配",
|
|
1723
|
+
"plan.Updating...": "更新中…",
|
|
1724
|
+
"plan.Update records": "更新記錄",
|
|
1725
|
+
"plan.Update records show successful allocation changes only and are read-only.": "這裡只記錄已成功更新的裝備分配,僅供查看。",
|
|
1726
|
+
"plan.No allocation update records yet": "暫無更新記錄",
|
|
1727
|
+
"plan.No allocation recommendations available": "目前沒有分配建議"
|
|
1686
1728
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "poi-plugin-remodel-assistant",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.8-beta.1",
|
|
4
4
|
"description": "View enhanced KanColle improvement data, manage improvement plans, and receive improvement recommendations.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"author": {
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"icon": "fa/wrench",
|
|
28
28
|
"id": "poi-plugin-remodel-assistant",
|
|
29
29
|
"priority": 50,
|
|
30
|
-
"releaseChannel": "
|
|
30
|
+
"releaseChannel": "beta",
|
|
31
31
|
"title": "改修助手",
|
|
32
32
|
"runtimeFlags": {
|
|
33
33
|
"forceFullDecisionRebuild": false,
|
|
@@ -31,7 +31,9 @@ const measureProfile = (profile, event, startedAt, details = {}) => {
|
|
|
31
31
|
const prefixedProfile = (profile, prefix) => typeof profile === 'function' ? (event, durationMs, details = {}) => profile(`${prefix}.${event}`, durationMs, details) : null; // Public Decision Snapshot contract.
|
|
32
32
|
//
|
|
33
33
|
// UserAllocation(用户计划分配)与 ConsumableAllocation(耗材分配)属于同一个
|
|
34
|
-
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
const retainedUserBindingCurrentIds = snapshot => (snapshot && snapshot.assignmentDiagnostics || []).filter(entry => entry && entry.planKind !== 'consumable' && entry.decision === 'retained').map(entry => String(entry.currentId || '').trim()).filter(Boolean); // Allocation Round。最终 Binding / Final Resolution 以 ConsumableAllocation 的结果为准,
|
|
35
37
|
// 但阶段 evidence 不能只保留最后一个阶段,否则 UserAllocation 中真实发生过的
|
|
36
38
|
// materialized / reallocated 等事实会被后续 retained 观察结果掩盖。
|
|
37
39
|
//
|
|
@@ -109,7 +111,11 @@ const publishDecisionSnapshot = ({
|
|
|
109
111
|
assignmentBindingTransitions: [...(userAllocation && userAllocation.assignmentBindingTransitions || []), ...(bindingTransferTransitions || []), ...(effective.assignmentBindingTransitions || [])],
|
|
110
112
|
// invariant findings 读取最终阶段即可;它不是阶段历史,不做重复累积。
|
|
111
113
|
assignmentFindings: effective.assignmentFindings || [],
|
|
112
|
-
assignmentDiagnostics: [...(userAllocation && userAllocation.assignmentDiagnostics || []), ...(effective.assignmentDiagnostics || [])]
|
|
114
|
+
assignmentDiagnostics: [...(userAllocation && userAllocation.assignmentDiagnostics || []), ...(effective.assignmentDiagnostics || [])],
|
|
115
|
+
// Binding Adjustment is a projection of the final Allocation state, not
|
|
116
|
+
// stage history. Publishing only the effective phase prevents a User-stage
|
|
117
|
+
// candidate from surviving after Derived Consumable Allocation claims it.
|
|
118
|
+
bindingAdjustmentActions: effective.bindingAdjustmentActions || []
|
|
113
119
|
};
|
|
114
120
|
logPublishedDecisionSnapshotAlignment(snapshot, effective.currentInventoryBindings || {});
|
|
115
121
|
return snapshot;
|
|
@@ -262,7 +268,8 @@ const allocationStageProjection = (result, allocationScope) => ({
|
|
|
262
268
|
bindings: result && (result.assignmentPersistenceBindings || result.currentInventoryBindings) || {},
|
|
263
269
|
retainedBindingCurrentIds: result && result.retainedBindingCurrentIds || [],
|
|
264
270
|
assignmentBindingTransitions: result && result.assignmentBindingTransitions || [],
|
|
265
|
-
assignmentDiagnostics: result && result.assignmentDiagnostics || []
|
|
271
|
+
assignmentDiagnostics: result && result.assignmentDiagnostics || [],
|
|
272
|
+
bindingAdjustmentActions: result && result.bindingAdjustmentActions || []
|
|
266
273
|
});
|
|
267
274
|
|
|
268
275
|
const buildFullDecisionSnapshotPayload = input => {
|
|
@@ -346,7 +353,8 @@ const buildFullDecisionSnapshotPayload = input => {
|
|
|
346
353
|
plans: composition.plans,
|
|
347
354
|
planRouteSelections: effectiveRouteSelections,
|
|
348
355
|
currentInventoryBindings: effectiveBindings,
|
|
349
|
-
allocationScope: 'consumable'
|
|
356
|
+
allocationScope: 'consumable',
|
|
357
|
+
bindingAdjustmentEligibleCurrentIds: retainedUserBindingCurrentIds(base)
|
|
350
358
|
}));
|
|
351
359
|
observeAllocationStage(job, 'ConsumableAllocation', _extends({
|
|
352
360
|
mode: 'full'
|
|
@@ -489,6 +497,7 @@ const buildDecisionSnapshotPayload = (input, profile = null) => {
|
|
|
489
497
|
currentInventoryBindings: effectiveBindings,
|
|
490
498
|
previous: effectivePrevious,
|
|
491
499
|
allocationScope: 'consumable',
|
|
500
|
+
bindingAdjustmentEligibleCurrentIds: retainedUserBindingCurrentIds(base),
|
|
492
501
|
profile: prefixedProfile(profile, 'effective')
|
|
493
502
|
}));
|
|
494
503
|
measureProfile(profile, 'effective-core-total', phaseStartedAt, {
|
|
@@ -35,7 +35,7 @@ var _search = require("../../shared/search");
|
|
|
35
35
|
|
|
36
36
|
var _currentStartCandidateDomain = require("../plan/domain/current-start-candidate-domain");
|
|
37
37
|
|
|
38
|
-
var
|
|
38
|
+
var _planRouteSelectionDomain = require("../plan/domain/plan-route-selection-domain");
|
|
39
39
|
|
|
40
40
|
var _currentPlanIdentityDomain = require("../plan/domain/current-plan-identity-domain");
|
|
41
41
|
|
|
@@ -81,6 +81,8 @@ var _materialDetailModal = require("../workbench/components/material-detail-moda
|
|
|
81
81
|
|
|
82
82
|
var _currentStartPlannerModal = require("../plan/components/current-start-planner-modal");
|
|
83
83
|
|
|
84
|
+
var _bindingAdjustmentModal = require("../plan/components/binding-adjustment-modal");
|
|
85
|
+
|
|
84
86
|
var _decisionDomain = require("../decisions/domain/decision-domain");
|
|
85
87
|
|
|
86
88
|
var _stableStateValidationDomain = require("../decisions/domain/stable-state-validation-domain");
|
|
@@ -238,6 +240,10 @@ class NewInterfaceArea extends _react.Component {
|
|
|
238
240
|
detailPanelLayouts: (0, _uiPreferences.getDetailPanelLayouts)(_pluginStateStorage.pluginConfig),
|
|
239
241
|
showDataTransfer: false,
|
|
240
242
|
showProblemDiagnostics: false,
|
|
243
|
+
showBindingAdjustments: false,
|
|
244
|
+
bindingAdjustmentBusyKey: '',
|
|
245
|
+
bindingAdjustmentMessage: '',
|
|
246
|
+
bindingAdjustmentError: '',
|
|
241
247
|
showEquipmentBlacklist: false,
|
|
242
248
|
showRecommendedExclusions: false,
|
|
243
249
|
showAddBlacklist: false,
|
|
@@ -372,6 +378,10 @@ class NewInterfaceArea extends _react.Component {
|
|
|
372
378
|
workbenchActionFilter,
|
|
373
379
|
showDataTransfer,
|
|
374
380
|
showProblemDiagnostics,
|
|
381
|
+
showBindingAdjustments,
|
|
382
|
+
bindingAdjustmentBusyKey,
|
|
383
|
+
bindingAdjustmentMessage,
|
|
384
|
+
bindingAdjustmentError,
|
|
375
385
|
showEquipmentBlacklist,
|
|
376
386
|
showRecommendedExclusions,
|
|
377
387
|
showAddBlacklist,
|
|
@@ -394,6 +404,9 @@ class NewInterfaceArea extends _react.Component {
|
|
|
394
404
|
const snapshot = exactCachedSnapshot || this.currentDecisionSnapshot;
|
|
395
405
|
const publishedSnapshotInputs = exactCachedSnapshot ? snapshotInputs : this.currentDecisionSnapshot ? this.currentDecisionSnapshotInputs : null;
|
|
396
406
|
const snapshotReady = Boolean(snapshot);
|
|
407
|
+
const bindingAdjustmentActions = snapshot && Array.isArray(snapshot.bindingAdjustmentActions) ? snapshot.bindingAdjustmentActions : [];
|
|
408
|
+
const bindingAdjustmentHistory = (0, _pluginStateSchema.getStateBindingAdjustmentHistory)((0, _pluginStateStorage.getPluginStateSnapshot)());
|
|
409
|
+
const liveAllocationOwners = snapshot && Array.isArray(snapshot.liveAllocationOwners) ? snapshot.liveAllocationOwners : [];
|
|
397
410
|
const runtimeDataDecisionRefreshPending = Boolean(snapshotReady && publishedSnapshotInputs && Number(publishedSnapshotInputs.dataRevision) !== Number(runtimeDataRevision));
|
|
398
411
|
const publishedInitialDay = publishedSnapshotInputs ? publishedSnapshotInputs.initialDay : initialDay;
|
|
399
412
|
const publishedMasterEquips = publishedSnapshotInputs ? publishedSnapshotInputs.masterEquips : masterEquips;
|
|
@@ -531,6 +544,11 @@ class NewInterfaceArea extends _react.Component {
|
|
|
531
544
|
value: uiDensity,
|
|
532
545
|
onChange: this.handleDensityChange
|
|
533
546
|
}), _react.default.createElement(_reactBootstrap.Button, {
|
|
547
|
+
bsSize: "small",
|
|
548
|
+
bsStyle: bindingAdjustmentActions.length > 0 ? 'warning' : 'default',
|
|
549
|
+
className: `decision-binding-recommendation-trigger${bindingAdjustmentActions.length > 0 ? ' has-pending' : ''}`,
|
|
550
|
+
onClick: this.handleShowBindingAdjustments
|
|
551
|
+
}, bindingAdjustmentActions.length > 0 ? `${__('Allocation recommendations available')} · ${bindingAdjustmentActions.length}` : __('Allocation recommendations')), _react.default.createElement(_reactBootstrap.Button, {
|
|
534
552
|
bsSize: "small",
|
|
535
553
|
onClick: this.handleShowEquipmentBlacklist
|
|
536
554
|
}, __('Equipment blacklist')), _react.default.createElement(_reactBootstrap.Button, {
|
|
@@ -653,6 +671,17 @@ class NewInterfaceArea extends _react.Component {
|
|
|
653
671
|
staticItems: staticItems,
|
|
654
672
|
onAdd: this.handleAddManualBlacklist,
|
|
655
673
|
onHide: this.handleHideAddBlacklist
|
|
674
|
+
}), _react.default.createElement(_bindingAdjustmentModal.BindingAdjustmentModal, {
|
|
675
|
+
show: showBindingAdjustments,
|
|
676
|
+
actions: bindingAdjustmentActions,
|
|
677
|
+
history: bindingAdjustmentHistory,
|
|
678
|
+
liveAllocationOwners: liveAllocationOwners,
|
|
679
|
+
masterEquips: publishedMasterEquips,
|
|
680
|
+
busyActionKey: bindingAdjustmentBusyKey,
|
|
681
|
+
message: bindingAdjustmentMessage,
|
|
682
|
+
error: bindingAdjustmentError,
|
|
683
|
+
onConfirm: this.handleConfirmBindingAdjustment,
|
|
684
|
+
onHide: this.handleHideBindingAdjustments
|
|
656
685
|
}), _react.default.createElement(_dataTransferModal.DataTransferModal, {
|
|
657
686
|
show: showDataTransfer,
|
|
658
687
|
onHide: this.handleHideDataTransfer,
|
|
@@ -1607,14 +1636,14 @@ var _initialiseProps = function () {
|
|
|
1607
1636
|
const sourceOwnerRef = sourceItem && sourceItem.planOrigin && sourceItem.planOrigin.ownerRef;
|
|
1608
1637
|
const liveOwner = (0, _allocationOwnerDomain.allocationOwnerByTransportCurrentId)(this.currentDecisionSnapshot && this.currentDecisionSnapshot.liveAllocationOwners, transportCurrentId);
|
|
1609
1638
|
const ownerRef = sourceOwnerRef || liveOwner && liveOwner.ownerRef || null;
|
|
1610
|
-
const selection = (0,
|
|
1639
|
+
const selection = (0, _planRouteSelectionDomain.snapshotPlanRouteSelection)(path, targetId, targetLevel, analysis, planOrdinal, ownerRef);
|
|
1611
1640
|
if (!selection) return;
|
|
1612
1641
|
const currentId = String(selection.currentId || '').trim();
|
|
1613
1642
|
const previousSelection = currentId ? (this.state.planRouteSelections || {})[currentId] || null : null;
|
|
1614
1643
|
const selectionChanged = !previousSelection || String(previousSelection.currentCandidateKey || '') !== String(selection.currentCandidateKey || '');
|
|
1615
1644
|
|
|
1616
1645
|
const nextSelections = _extends({}, this.state.planRouteSelections || {}, {
|
|
1617
|
-
[(0,
|
|
1646
|
+
[(0, _planRouteSelectionDomain.planRouteSelectionKey)(targetId, targetLevel, planOrdinal)]: selection
|
|
1618
1647
|
});
|
|
1619
1648
|
|
|
1620
1649
|
const nextAssignments = selectionChanged ? (0, _currentStartAssignmentDomain.clearCurrentStartAssignment)(this.planEquipmentAssignments, currentId) : this.planEquipmentAssignments; // User route intent and release of an incompatible concrete binding are one
|
|
@@ -1854,6 +1883,96 @@ var _initialiseProps = function () {
|
|
|
1854
1883
|
});
|
|
1855
1884
|
}
|
|
1856
1885
|
});
|
|
1886
|
+
Object.defineProperty(this, "handleShowBindingAdjustments", {
|
|
1887
|
+
configurable: true,
|
|
1888
|
+
enumerable: true,
|
|
1889
|
+
writable: true,
|
|
1890
|
+
value: () => {
|
|
1891
|
+
this.setState({
|
|
1892
|
+
showBindingAdjustments: true,
|
|
1893
|
+
bindingAdjustmentMessage: '',
|
|
1894
|
+
bindingAdjustmentError: ''
|
|
1895
|
+
});
|
|
1896
|
+
}
|
|
1897
|
+
});
|
|
1898
|
+
Object.defineProperty(this, "handleHideBindingAdjustments", {
|
|
1899
|
+
configurable: true,
|
|
1900
|
+
enumerable: true,
|
|
1901
|
+
writable: true,
|
|
1902
|
+
value: () => {
|
|
1903
|
+
if (this.state.bindingAdjustmentBusyKey) return;
|
|
1904
|
+
this.setState({
|
|
1905
|
+
showBindingAdjustments: false,
|
|
1906
|
+
bindingAdjustmentMessage: '',
|
|
1907
|
+
bindingAdjustmentError: ''
|
|
1908
|
+
});
|
|
1909
|
+
}
|
|
1910
|
+
});
|
|
1911
|
+
Object.defineProperty(this, "handleConfirmBindingAdjustment", {
|
|
1912
|
+
configurable: true,
|
|
1913
|
+
enumerable: true,
|
|
1914
|
+
writable: true,
|
|
1915
|
+
value: actionKey => {
|
|
1916
|
+
const expectedKey = String(actionKey || '').trim();
|
|
1917
|
+
if (!expectedKey || this.state.bindingAdjustmentBusyKey) return Promise.resolve(null);
|
|
1918
|
+
this.setState({
|
|
1919
|
+
bindingAdjustmentBusyKey: expectedKey,
|
|
1920
|
+
bindingAdjustmentMessage: '',
|
|
1921
|
+
bindingAdjustmentError: ''
|
|
1922
|
+
}); // Confirmation never trusts the Action object that was originally rendered.
|
|
1923
|
+
// Re-enter the normal Decision lifecycle first, then commit only if the same
|
|
1924
|
+
// semantic Action is still present in the latest finalized Allocation facts.
|
|
1925
|
+
|
|
1926
|
+
return this.scheduleDecisionSnapshotRefresh().then(latestSnapshot => {
|
|
1927
|
+
if (!latestSnapshot) return {
|
|
1928
|
+
changed: false,
|
|
1929
|
+
reason: 'snapshot-unavailable'
|
|
1930
|
+
};
|
|
1931
|
+
const currentActions = Array.isArray(latestSnapshot.bindingAdjustmentActions) ? latestSnapshot.bindingAdjustmentActions : [];
|
|
1932
|
+
|
|
1933
|
+
if (!currentActions.some(action => String(action && action.actionKey || '') === expectedKey)) {
|
|
1934
|
+
return {
|
|
1935
|
+
changed: false,
|
|
1936
|
+
reason: 'action-not-current'
|
|
1937
|
+
};
|
|
1938
|
+
}
|
|
1939
|
+
|
|
1940
|
+
return (0, _pluginStateCommands.commitBindingAdjustmentAction)({
|
|
1941
|
+
actionKey: expectedKey,
|
|
1942
|
+
bindingAdjustmentActions: currentActions,
|
|
1943
|
+
liveAllocationOwners: latestSnapshot.liveAllocationOwners || []
|
|
1944
|
+
});
|
|
1945
|
+
}).then(result => {
|
|
1946
|
+
if (!result || !result.changed) {
|
|
1947
|
+
this.setState({
|
|
1948
|
+
bindingAdjustmentBusyKey: '',
|
|
1949
|
+
bindingAdjustmentMessage: __('This recommendation is no longer available. The current allocation has been refreshed.'),
|
|
1950
|
+
bindingAdjustmentError: ''
|
|
1951
|
+
});
|
|
1952
|
+
return this.scheduleDecisionSnapshotRefresh();
|
|
1953
|
+
}
|
|
1954
|
+
|
|
1955
|
+
this.planEquipmentAssignments = persistedPlanEquipmentAssignments();
|
|
1956
|
+
this.decisionSnapshotCache = null;
|
|
1957
|
+
this.decisionSnapshotRequestGate.reset();
|
|
1958
|
+
return this.scheduleDecisionSnapshotRefresh().then(snapshot => {
|
|
1959
|
+
this.setState({
|
|
1960
|
+
bindingAdjustmentBusyKey: '',
|
|
1961
|
+
bindingAdjustmentMessage: __('Recommended update applied'),
|
|
1962
|
+
bindingAdjustmentError: ''
|
|
1963
|
+
});
|
|
1964
|
+
return snapshot;
|
|
1965
|
+
});
|
|
1966
|
+
}).catch(error => {
|
|
1967
|
+
this.setState({
|
|
1968
|
+
bindingAdjustmentBusyKey: '',
|
|
1969
|
+
bindingAdjustmentMessage: '',
|
|
1970
|
+
bindingAdjustmentError: String(error && error.message || error)
|
|
1971
|
+
});
|
|
1972
|
+
return null;
|
|
1973
|
+
});
|
|
1974
|
+
}
|
|
1975
|
+
});
|
|
1857
1976
|
Object.defineProperty(this, "handleDataImported", {
|
|
1858
1977
|
configurable: true,
|
|
1859
1978
|
enumerable: true,
|
|
@@ -41,8 +41,12 @@ const readPersistentStartupDecisionSnapshot = () => {
|
|
|
41
41
|
|
|
42
42
|
if (!isPlainObject(value) || value.format !== STARTUP_DECISION_SNAPSHOT_FORMAT || Number(value.schemaVersion) !== STARTUP_DECISION_SNAPSHOT_SCHEMA || !isPlainObject(value.snapshot)) {
|
|
43
43
|
return null;
|
|
44
|
-
}
|
|
44
|
+
} // Startup snapshots are presentation-only stale state. Binding Adjustment
|
|
45
|
+
// Actions are executable projections and must be re-derived from the current
|
|
46
|
+
// session's authoritative Reality before they can be shown or confirmed.
|
|
45
47
|
|
|
48
|
+
|
|
49
|
+
value.snapshot.bindingAdjustmentActions = [];
|
|
46
50
|
return value.snapshot;
|
|
47
51
|
} catch (error) {
|
|
48
52
|
return null;
|