poi-plugin-item-improvement2-beta 1.3.41 → 1.3.43
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/CHANGELOG.md +11 -0
- package/assets/main.css +35 -0
- package/i18n/en-US.json +17 -14
- package/i18n/ja-JP.json +17 -14
- package/i18n/zh-CN.json +17 -14
- package/i18n/zh-TW.json +17 -14
- package/package.json +1 -1
- package/views/changelog.js +3 -0
- package/views/new-interface/upgrade-chain-canvas.js +168 -12
- package/views/new-interface/upgrade-route-modal.js +16 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
|
+
## 1.3.43
|
|
2
|
+
|
|
3
|
+
- 修正完整升级链在 Poi 11 中的空白区域拖动和材料内容高度适配。
|
|
4
|
+
- 完善项目恢复与交接包。
|
|
5
|
+
|
|
1
6
|
# Changelog
|
|
2
7
|
|
|
8
|
+
## 1.3.42
|
|
9
|
+
|
|
10
|
+
- Improved empty-space dragging in the complete upgrade-chain canvas while keeping equipment cards interactive.
|
|
11
|
+
- Material details now expand their equipment card and update the full-chain layout instead of being clipped.
|
|
12
|
+
- Improved Beta release reliability and one-click update routing.
|
|
13
|
+
|
|
3
14
|
## 1.3.41
|
|
4
15
|
|
|
5
16
|
- Fixed one-click upgrades from 1.3.39 and preserved Flow availability after replacement.
|
package/assets/main.css
CHANGED
|
@@ -7208,3 +7208,38 @@
|
|
|
7208
7208
|
.decision-full-route-dialog .decision-chain-flow-viewport .decision-upgrade-state-node-body {
|
|
7209
7209
|
cursor: grab;
|
|
7210
7210
|
}
|
|
7211
|
+
|
|
7212
|
+
|
|
7213
|
+
/* 1.3.42: Poi 11 event ownership and continuously measured material nodes. */
|
|
7214
|
+
#item-improvement .decision-chain-flow-viewport,
|
|
7215
|
+
.decision-full-route-dialog .decision-chain-flow-viewport {
|
|
7216
|
+
cursor: grab;
|
|
7217
|
+
}
|
|
7218
|
+
|
|
7219
|
+
#item-improvement .decision-chain-flow-viewport .decision-upgrade-state-node,
|
|
7220
|
+
.decision-full-route-dialog .decision-chain-flow-viewport .decision-upgrade-state-node,
|
|
7221
|
+
#item-improvement .decision-chain-flow-viewport .decision-upgrade-state-node-body,
|
|
7222
|
+
.decision-full-route-dialog .decision-chain-flow-viewport .decision-upgrade-state-node-body {
|
|
7223
|
+
cursor: default;
|
|
7224
|
+
user-select: text;
|
|
7225
|
+
-webkit-user-select: text;
|
|
7226
|
+
}
|
|
7227
|
+
|
|
7228
|
+
#item-improvement .decision-chain-node-material-section,
|
|
7229
|
+
.decision-full-route-dialog .decision-chain-node-material-section,
|
|
7230
|
+
#item-improvement .decision-chain-node-flat-list,
|
|
7231
|
+
.decision-full-route-dialog .decision-chain-node-flat-list {
|
|
7232
|
+
height: auto;
|
|
7233
|
+
min-height: 0;
|
|
7234
|
+
max-height: none;
|
|
7235
|
+
overflow-y: visible;
|
|
7236
|
+
}
|
|
7237
|
+
|
|
7238
|
+
#item-improvement .decision-chain-node-matrix-scroll,
|
|
7239
|
+
.decision-full-route-dialog .decision-chain-node-matrix-scroll {
|
|
7240
|
+
height: auto;
|
|
7241
|
+
min-height: 0;
|
|
7242
|
+
max-height: none;
|
|
7243
|
+
overflow-x: auto;
|
|
7244
|
+
overflow-y: visible;
|
|
7245
|
+
}
|
package/i18n/en-US.json
CHANGED
|
@@ -126,6 +126,7 @@
|
|
|
126
126
|
"Data": "Data",
|
|
127
127
|
"Data backup and transfer": "Data backup and transfer",
|
|
128
128
|
"Data section": "Data section",
|
|
129
|
+
"Date": "Date",
|
|
129
130
|
"Decision chains": "Decision chains",
|
|
130
131
|
"Decision date": "Decision date",
|
|
131
132
|
"Default": "Default",
|
|
@@ -147,6 +148,7 @@
|
|
|
147
148
|
"Different result or starting equipment": "Different result or starting equipment",
|
|
148
149
|
"Disable protection?": "Disable protection?",
|
|
149
150
|
"Disabling upgrade-chain protection may waste improvement materials": "Disabling upgrade-chain protection may waste improvement materials",
|
|
151
|
+
"Drag only empty canvas space or use the scrollbars to move; material content expands each node": "Drag only empty canvas space or use the scrollbars to move; material content expands each node",
|
|
150
152
|
"Drag the canvas from the current equipment stage; each node groups routes with the same equipment and star level": "Start from the current equipment stage; routes with the same equipment and star level share one node.",
|
|
151
153
|
"Drag the empty canvas or use the scrollbars to move; material tables scroll independently": "Drag the empty canvas or use the scrollbars to move; material tables scroll independently",
|
|
152
154
|
"Drag the empty canvas to move; use the wheel to zoom; all node materials remain visible and scroll independently": "Drag the empty canvas to move; use the wheel to zoom; all node materials remain visible and scroll independently",
|
|
@@ -727,6 +729,20 @@
|
|
|
727
729
|
"changelog_1_3_25_filters_lists": "Equipment categories are visually grouped, improvement/evolution capabilities are visible, lists are more compact, and trailing parenthesized equipment-name qualifiers no longer split or disappear.",
|
|
728
730
|
"changelog_1_3_25_global_chain": "Global upgrade-route choices now reuse the same complete-chain control.",
|
|
729
731
|
"changelog_1_3_25_stable_chain": "The complete upgrade chain now uses crisp native-scroll panning from the canvas or node headers, content-sized nodes, and independently scrollable material matrices.",
|
|
732
|
+
"changelog_1_3_27_canvas_drag": "Upgrade-chain canvases now capture mouse and touch dragging before nested nodes can consume the input, while material tables keep independent scrolling.",
|
|
733
|
+
"changelog_1_3_27_current_operation": "What to improve today now shows only the next star step or MAX conversion, with normal expected and guaranteed fixed costs; all six core resources remain visible even when the value is zero.",
|
|
734
|
+
"changelog_1_3_27_persistent_details": "The improvement detail pane in What to improve today now stays visible and no longer exposes a collapse handle.",
|
|
735
|
+
"changelog_1_3_27_plan_detail_order": "Plan improvement details now follow assistant ship, dates, stages, total plan cost and shortages, then the total upgrade chain.",
|
|
736
|
+
"changelog_1_3_27_workbench_names": "Equipment names in What to improve today now grow to their natural height instead of being clipped to two or three lines, including trailing parenthesized qualifiers.",
|
|
737
|
+
"changelog_1_3_28_docs_convergence": "Documentation and acceptance records were consolidated. This update does not change current UI behavior; quick-plan incrementing, canvas interaction, migration tests, and total-chain design remain open.",
|
|
738
|
+
"changelog_1_3_29_canvas_input": "The full upgrade chain now uses unified pointer dragging with native click suppression while material tables keep independent scrolling; final Poi drag verification is still required.",
|
|
739
|
+
"changelog_1_3_29_plan_migration": "Legacy single-goal and tracked-only plans now migrate safely to the multi-goal format without loss or duplication on repeated migration.",
|
|
740
|
+
"changelog_1_3_29_quick_plan_increment": "Each quick-plan click now adds one copy at that target star level while preserving the equipment’s other goals.",
|
|
741
|
+
"changelog_1_3_30_content_height": "Chain nodes now measure their rendered content and grow with material tables and route rows instead of clipping them.",
|
|
742
|
+
"changelog_1_3_30_material_scroll": "Material tables keep wheel and trackpad scrolling inside the table, and drag-following node clicks are suppressed once.",
|
|
743
|
+
"changelog_1_3_30_mouse_drag": "The complete upgrade chain now uses a dedicated native mouse-drag path in Poi, while touch and pen input keep Pointer Events.",
|
|
744
|
+
"changelog_1_3_42_blank_canvas_drag": "The complete chain now pans only from empty canvas space, keeping equipment cards interactive.",
|
|
745
|
+
"changelog_1_3_42_material_expand": "Material details expand each equipment card and update the chain layout instead of being clipped.",
|
|
730
746
|
"changelog_1_3_9_chain_visual": "Upgrade-route choices now use equipment icons and arrows, with clearer cost advantages and extra costs.",
|
|
731
747
|
"changelog_1_3_9_detail_cleanup": "The detail drawer removes repeated descriptions and uses page-specific default plugins and ordering.",
|
|
732
748
|
"changelog_1_3_9_migration_order": "Old tracked-only plans are handled before choosing upgrade-chain protection, so the two settings no longer feel contradictory.",
|
|
@@ -736,18 +752,5 @@
|
|
|
736
752
|
"plugin_description": "View equipment improvement information using packaged local data.",
|
|
737
753
|
"standard font": "Standard font",
|
|
738
754
|
"upgrade": "upgrade",
|
|
739
|
-
"upgrade to": "upgrade to"
|
|
740
|
-
"changelog_1_3_27_workbench_names": "Equipment names in What to improve today now grow to their natural height instead of being clipped to two or three lines, including trailing parenthesized qualifiers.",
|
|
741
|
-
"changelog_1_3_27_persistent_details": "The improvement detail pane in What to improve today now stays visible and no longer exposes a collapse handle.",
|
|
742
|
-
"changelog_1_3_27_current_operation": "What to improve today now shows only the next star step or MAX conversion, with normal expected and guaranteed fixed costs; all six core resources remain visible even when the value is zero.",
|
|
743
|
-
"changelog_1_3_27_plan_detail_order": "Plan improvement details now follow assistant ship, dates, stages, total plan cost and shortages, then the total upgrade chain.",
|
|
744
|
-
"changelog_1_3_27_canvas_drag": "Upgrade-chain canvases now capture mouse and touch dragging before nested nodes can consume the input, while material tables keep independent scrolling.",
|
|
745
|
-
"Date": "Date",
|
|
746
|
-
"changelog_1_3_28_docs_convergence": "Documentation and acceptance records were consolidated. This update does not change current UI behavior; quick-plan incrementing, canvas interaction, migration tests, and total-chain design remain open.",
|
|
747
|
-
"changelog_1_3_29_quick_plan_increment": "Each quick-plan click now adds one copy at that target star level while preserving the equipment’s other goals.",
|
|
748
|
-
"changelog_1_3_29_plan_migration": "Legacy single-goal and tracked-only plans now migrate safely to the multi-goal format without loss or duplication on repeated migration.",
|
|
749
|
-
"changelog_1_3_29_canvas_input": "The full upgrade chain now uses unified pointer dragging with native click suppression while material tables keep independent scrolling; final Poi drag verification is still required.",
|
|
750
|
-
"changelog_1_3_30_mouse_drag": "The complete upgrade chain now uses a dedicated native mouse-drag path in Poi, while touch and pen input keep Pointer Events.",
|
|
751
|
-
"changelog_1_3_30_content_height": "Chain nodes now measure their rendered content and grow with material tables and route rows instead of clipping them.",
|
|
752
|
-
"changelog_1_3_30_material_scroll": "Material tables keep wheel and trackpad scrolling inside the table, and drag-following node clicks are suppressed once."
|
|
755
|
+
"upgrade to": "upgrade to"
|
|
753
756
|
}
|
package/i18n/ja-JP.json
CHANGED
|
@@ -126,6 +126,7 @@
|
|
|
126
126
|
"Data": "データ",
|
|
127
127
|
"Data backup and transfer": "データのバックアップと取り込み",
|
|
128
128
|
"Data section": "データ区分",
|
|
129
|
+
"Date": "日付",
|
|
129
130
|
"Decision chains": "分岐ルート",
|
|
130
131
|
"Decision date": "判断する曜日",
|
|
131
132
|
"Default": "デフォルト",
|
|
@@ -147,6 +148,7 @@
|
|
|
147
148
|
"Different result or starting equipment": "結果または開始装備が異なるため選択が必要です",
|
|
148
149
|
"Disable protection?": "保護を無効にしますか?",
|
|
149
150
|
"Disabling upgrade-chain protection may waste improvement materials": "改修チェーン保護を無効にすると改修資材を浪費する可能性があります",
|
|
151
|
+
"Drag only empty canvas space or use the scrollbars to move; material content expands each node": "空白部分だけをドラッグするかスクロールバーで移動します。資材内容に合わせて各ノードが広がります。",
|
|
150
152
|
"Drag the canvas from the current equipment stage; each node groups routes with the same equipment and star level": "現在の装備段階を中心に表示し、同じ装備・同じ改修値のルートを同一ノードにまとめます。",
|
|
151
153
|
"Drag the empty canvas or use the scrollbars to move; material tables scroll independently": "空白部分をドラッグするかスクロールバーで移動できます。資材表は独立してスクロールします。",
|
|
152
154
|
"Drag the empty canvas to move; use the wheel to zoom; all node materials remain visible and scroll independently": "空白部分をドラッグして移動し、ホイールでズームします。すべてのノードの素材を表示し、ノード内は個別にスクロールできます",
|
|
@@ -727,6 +729,20 @@
|
|
|
727
729
|
"changelog_1_3_25_filters_lists": "装備カテゴリを用途別に区切り、改修可能/更新可能を表示して一覧をコンパクト化し、装備名末尾の括弧付き補足が分割・欠落しないようにしました。",
|
|
728
730
|
"changelog_1_3_25_global_chain": "グローバル更新ルート選択でも同じ完全チェーン表示を再利用します。",
|
|
729
731
|
"changelog_1_3_25_stable_chain": "完全改修チェーンはキャンバスやノード見出しから鮮明なネイティブスクロールで移動でき、ノード全内容を展開しつつ素材表だけを独立して横スクロールできます。",
|
|
732
|
+
"changelog_1_3_27_canvas_drag": "改修チェーンのキャンバスは、内部ノードより先にマウス/タッチのドラッグを取得するようにし、資材表の独立スクロールは維持しました。",
|
|
733
|
+
"changelog_1_3_27_current_operation": "「今日改修するもの」では、次の★1段階または★MAX更新だけを対象に、通常期待値と確実化固定値を表示します。6種類の基本資材は0でも表示します。",
|
|
734
|
+
"changelog_1_3_27_persistent_details": "「今日改修するもの」の右側の改修詳細を常時表示し、折りたたみハンドルを廃止しました。",
|
|
735
|
+
"changelog_1_3_27_plan_detail_order": "改修計画の詳細を、秘書艦、曜日、改修段階、計画全体の消費と不足、全改修チェーンの順に整理しました。",
|
|
736
|
+
"changelog_1_3_27_workbench_names": "「今日改修するもの」の装備名は2~3行で切り詰めず、末尾の括弧付き補足を含めて必要な高さまで自然に折り返します。",
|
|
737
|
+
"changelog_1_3_28_docs_convergence": "ドキュメントと受け入れ状況を整理しました。現在の UI 動作は変更せず、クイック計画の加算、キャンバス操作、移行テスト、総チェーン設計は未完了のままです。",
|
|
738
|
+
"changelog_1_3_29_canvas_input": "完全改修チェーンは統一されたポインタードラッグとネイティブのクリック抑止を使用し、素材表の独立スクロールを維持します。Poi上での最終確認は引き続き必要です。",
|
|
739
|
+
"changelog_1_3_29_plan_migration": "旧形式の単一目標と追跡のみの計画を多目標形式へ安全に移行し、再実行しても計画を失ったり重複させたりしません。",
|
|
740
|
+
"changelog_1_3_29_quick_plan_increment": "クイック計画はクリックするたびに対象の改修段階を1個追加し、同じ装備の他の目標を保持します。",
|
|
741
|
+
"changelog_1_3_30_content_height": "チェーンノードは描画後の内容を計測し、素材表やルート行に合わせて拡張され、内容を切り取りません。",
|
|
742
|
+
"changelog_1_3_30_material_scroll": "素材表のホイール/トラックパッド操作は表内に留まり、ドラッグ直後のノードクリックは一度だけ抑止されます。",
|
|
743
|
+
"changelog_1_3_30_mouse_drag": "完全な改修チェーンは Poi で専用のネイティブマウスドラッグ経路を使用し、タッチ/ペン入力は Pointer Events を維持します。",
|
|
744
|
+
"changelog_1_3_42_blank_canvas_drag": "完全な改修チェーンは空白部分からのみ移動し、装備カードの操作を維持します。",
|
|
745
|
+
"changelog_1_3_42_material_expand": "資材の詳細に合わせて装備カードとチェーン配置が広がり、内容が切れなくなります。",
|
|
730
746
|
"changelog_1_3_9_chain_visual": "更新ルートを装備アイコンと矢印で表示し、最小コストと追加消費を分かりやすくしました。",
|
|
731
747
|
"changelog_1_3_9_detail_cleanup": "右側詳細の重複説明を減らし、ページごとに適した標準プラグインと順序にしました。",
|
|
732
748
|
"changelog_1_3_9_migration_order": "旧プランは「注目のみ」を先に処理してから改造チェーン保護を選ぶため、設定の意味が混ざりません。",
|
|
@@ -736,18 +752,5 @@
|
|
|
736
752
|
"plugin_description": "同梱されたローカルデータを使用して装備改修情報を表示します。",
|
|
737
753
|
"standard font": "標準文字",
|
|
738
754
|
"upgrade": "更新",
|
|
739
|
-
"upgrade to": "上位の装備へ更新"
|
|
740
|
-
"changelog_1_3_27_workbench_names": "「今日改修するもの」の装備名は2~3行で切り詰めず、末尾の括弧付き補足を含めて必要な高さまで自然に折り返します。",
|
|
741
|
-
"changelog_1_3_27_persistent_details": "「今日改修するもの」の右側の改修詳細を常時表示し、折りたたみハンドルを廃止しました。",
|
|
742
|
-
"changelog_1_3_27_current_operation": "「今日改修するもの」では、次の★1段階または★MAX更新だけを対象に、通常期待値と確実化固定値を表示します。6種類の基本資材は0でも表示します。",
|
|
743
|
-
"changelog_1_3_27_plan_detail_order": "改修計画の詳細を、秘書艦、曜日、改修段階、計画全体の消費と不足、全改修チェーンの順に整理しました。",
|
|
744
|
-
"changelog_1_3_27_canvas_drag": "改修チェーンのキャンバスは、内部ノードより先にマウス/タッチのドラッグを取得するようにし、資材表の独立スクロールは維持しました。",
|
|
745
|
-
"Date": "日付",
|
|
746
|
-
"changelog_1_3_28_docs_convergence": "ドキュメントと受け入れ状況を整理しました。現在の UI 動作は変更せず、クイック計画の加算、キャンバス操作、移行テスト、総チェーン設計は未完了のままです。",
|
|
747
|
-
"changelog_1_3_29_quick_plan_increment": "クイック計画はクリックするたびに対象の改修段階を1個追加し、同じ装備の他の目標を保持します。",
|
|
748
|
-
"changelog_1_3_29_plan_migration": "旧形式の単一目標と追跡のみの計画を多目標形式へ安全に移行し、再実行しても計画を失ったり重複させたりしません。",
|
|
749
|
-
"changelog_1_3_29_canvas_input": "完全改修チェーンは統一されたポインタードラッグとネイティブのクリック抑止を使用し、素材表の独立スクロールを維持します。Poi上での最終確認は引き続き必要です。",
|
|
750
|
-
"changelog_1_3_30_mouse_drag": "完全な改修チェーンは Poi で専用のネイティブマウスドラッグ経路を使用し、タッチ/ペン入力は Pointer Events を維持します。",
|
|
751
|
-
"changelog_1_3_30_content_height": "チェーンノードは描画後の内容を計測し、素材表やルート行に合わせて拡張され、内容を切り取りません。",
|
|
752
|
-
"changelog_1_3_30_material_scroll": "素材表のホイール/トラックパッド操作は表内に留まり、ドラッグ直後のノードクリックは一度だけ抑止されます。"
|
|
755
|
+
"upgrade to": "上位の装備へ更新"
|
|
753
756
|
}
|
package/i18n/zh-CN.json
CHANGED
|
@@ -126,6 +126,7 @@
|
|
|
126
126
|
"Data": "数据",
|
|
127
127
|
"Data backup and transfer": "数据备份与导入",
|
|
128
128
|
"Data section": "数据分区",
|
|
129
|
+
"Date": "日期",
|
|
129
130
|
"Decision chains": "决策链",
|
|
130
131
|
"Decision date": "决策日期",
|
|
131
132
|
"Default": "默认",
|
|
@@ -147,6 +148,7 @@
|
|
|
147
148
|
"Different result or starting equipment": "产物或起始装备不同,请自行选择",
|
|
148
149
|
"Disable protection?": "关闭改造链保护?",
|
|
149
150
|
"Disabling upgrade-chain protection may waste improvement materials": "关闭改造链保护可能造成改修材料浪费",
|
|
151
|
+
"Drag only empty canvas space or use the scrollbars to move; material content expands each node": "仅拖动画布空白处或使用滚动条浏览;材料内容会撑开所属节点",
|
|
150
152
|
"Drag the canvas from the current equipment stage; each node groups routes with the same equipment and star level": "从当前装备阶段开始拖动画布;相同装备与相同星级的路线合并到同一节点",
|
|
151
153
|
"Drag the empty canvas or use the scrollbars to move; material tables scroll independently": "拖动空白画布或使用滚动条浏览链路;材料表格保持独立滚动",
|
|
152
154
|
"Drag the empty canvas to move; use the wheel to zoom; all node materials remain visible and scroll independently": "拖动画布空白处移动;滚轮缩放;所有节点材料保持显示,节点内容可独立滚动",
|
|
@@ -727,6 +729,20 @@
|
|
|
727
729
|
"changelog_1_3_25_filters_lists": "装备分类按用途增强视觉分组,列表显示可改修/可进化类型并更加紧凑,装备名末尾括号后缀不再拆散或被截断隐藏。",
|
|
728
730
|
"changelog_1_3_25_global_chain": "全局升级路线选择复用同一套完整链路控件。",
|
|
729
731
|
"changelog_1_3_25_stable_chain": "完整改修链可从画布、节点标题和普通节点内容原生拖动,节点按完整内容展开,材料矩阵保持独立横向滚动。",
|
|
732
|
+
"changelog_1_3_27_canvas_drag": "升级链画布改为在内部节点处理输入前捕获鼠标和触摸拖动,同时保留材料表格的独立滚动。",
|
|
733
|
+
"changelog_1_3_27_current_operation": "“今天改什么”只计算当前星级的下一次改修或 ★MAX 更新,分别显示普通期望与确保固定消耗;六种基础资源即使为 0 也会保留显示。",
|
|
734
|
+
"changelog_1_3_27_persistent_details": "“今天改什么”右侧改修详情改为固定常显,并移除收起按钮。",
|
|
735
|
+
"changelog_1_3_27_plan_detail_order": "改修计划详情按“秘书舰、日期、升级阶段、完成本装备计划的总消耗与缺口、总链路”重新排序。",
|
|
736
|
+
"changelog_1_3_27_workbench_names": "“今天改什么”的装备名不再被两行或三行高度裁切,包含末尾括号说明在内都会按实际内容自然换行。",
|
|
737
|
+
"changelog_1_3_28_docs_convergence": "整理新版界面的需求、验收和设计文档。本次不改变现有 UI 行为;快速计划增量、画布交互、迁移测试和总链路设计继续保持待处理。",
|
|
738
|
+
"changelog_1_3_29_canvas_input": "完整改修链改用统一指针拖动与原生点击抑制,材料表继续独立滚动;安装后仍需在 Poi 中完成最终拖动验收。",
|
|
739
|
+
"changelog_1_3_29_plan_migration": "旧版单目标与仅关注计划会安全迁移到多目标格式,重复迁移不会丢失或重复计划。",
|
|
740
|
+
"changelog_1_3_29_quick_plan_increment": "快速计划按钮现在每点击一次就为对应星级增加 1 件,并保留同一装备已有的其他星级目标。",
|
|
741
|
+
"changelog_1_3_30_content_height": "链路节点会按渲染后的真实内容自动增高,材料表格和多路线不再被节点裁切。",
|
|
742
|
+
"changelog_1_3_30_material_scroll": "材料表的滚轮和触摸板滚动会留在表格内部,拖动结束后的节点点击只抑制一次。",
|
|
743
|
+
"changelog_1_3_30_mouse_drag": "完整改修链在 Poi 中改用独立的原生鼠标拖动路径;触摸与笔输入继续使用 Pointer Events。",
|
|
744
|
+
"changelog_1_3_42_blank_canvas_drag": "完整改修链只从空白画布启动拖动,装备节点保持正常点击与内容交互。",
|
|
745
|
+
"changelog_1_3_42_material_expand": "材料内容会撑开装备节点并重新布局完整链路,不再被节点边框裁切。",
|
|
730
746
|
"changelog_1_3_9_chain_visual": "升级路线改用装备图标和箭头展示,并明确标出最低成本与额外消耗。",
|
|
731
747
|
"changelog_1_3_9_detail_cleanup": "右侧详情删除重复说明,并按不同页面设置更合适的默认插件和顺序。",
|
|
732
748
|
"changelog_1_3_9_migration_order": "老计划会先处理“仅关注”,再选择改造链保护,两项设置不再前后混淆。",
|
|
@@ -736,18 +752,5 @@
|
|
|
736
752
|
"plugin_description": "使用随插件安装的本地数据查看装备改修信息。",
|
|
737
753
|
"standard font": "标准字体",
|
|
738
754
|
"upgrade": "升级",
|
|
739
|
-
"upgrade to": "升级为"
|
|
740
|
-
"changelog_1_3_27_workbench_names": "“今天改什么”的装备名不再被两行或三行高度裁切,包含末尾括号说明在内都会按实际内容自然换行。",
|
|
741
|
-
"changelog_1_3_27_persistent_details": "“今天改什么”右侧改修详情改为固定常显,并移除收起按钮。",
|
|
742
|
-
"changelog_1_3_27_current_operation": "“今天改什么”只计算当前星级的下一次改修或 ★MAX 更新,分别显示普通期望与确保固定消耗;六种基础资源即使为 0 也会保留显示。",
|
|
743
|
-
"changelog_1_3_27_plan_detail_order": "改修计划详情按“秘书舰、日期、升级阶段、完成本装备计划的总消耗与缺口、总链路”重新排序。",
|
|
744
|
-
"changelog_1_3_27_canvas_drag": "升级链画布改为在内部节点处理输入前捕获鼠标和触摸拖动,同时保留材料表格的独立滚动。",
|
|
745
|
-
"Date": "日期",
|
|
746
|
-
"changelog_1_3_28_docs_convergence": "整理新版界面的需求、验收和设计文档。本次不改变现有 UI 行为;快速计划增量、画布交互、迁移测试和总链路设计继续保持待处理。",
|
|
747
|
-
"changelog_1_3_29_quick_plan_increment": "快速计划按钮现在每点击一次就为对应星级增加 1 件,并保留同一装备已有的其他星级目标。",
|
|
748
|
-
"changelog_1_3_29_plan_migration": "旧版单目标与仅关注计划会安全迁移到多目标格式,重复迁移不会丢失或重复计划。",
|
|
749
|
-
"changelog_1_3_29_canvas_input": "完整改修链改用统一指针拖动与原生点击抑制,材料表继续独立滚动;安装后仍需在 Poi 中完成最终拖动验收。",
|
|
750
|
-
"changelog_1_3_30_mouse_drag": "完整改修链在 Poi 中改用独立的原生鼠标拖动路径;触摸与笔输入继续使用 Pointer Events。",
|
|
751
|
-
"changelog_1_3_30_content_height": "链路节点会按渲染后的真实内容自动增高,材料表格和多路线不再被节点裁切。",
|
|
752
|
-
"changelog_1_3_30_material_scroll": "材料表的滚轮和触摸板滚动会留在表格内部,拖动结束后的节点点击只抑制一次。"
|
|
755
|
+
"upgrade to": "升级为"
|
|
753
756
|
}
|
package/i18n/zh-TW.json
CHANGED
|
@@ -126,6 +126,7 @@
|
|
|
126
126
|
"Data": "資料",
|
|
127
127
|
"Data backup and transfer": "資料備份與匯入",
|
|
128
128
|
"Data section": "資料分區",
|
|
129
|
+
"Date": "日期",
|
|
129
130
|
"Decision chains": "決策鏈",
|
|
130
131
|
"Decision date": "決策日期",
|
|
131
132
|
"Default": "默認",
|
|
@@ -147,6 +148,7 @@
|
|
|
147
148
|
"Different result or starting equipment": "產物或起始裝備不同,請自行選擇",
|
|
148
149
|
"Disable protection?": "關閉改造鏈保護?",
|
|
149
150
|
"Disabling upgrade-chain protection may waste improvement materials": "關閉改造鏈保護可能造成改修材料浪費",
|
|
151
|
+
"Drag only empty canvas space or use the scrollbars to move; material content expands each node": "僅拖動畫布空白處或使用捲軸瀏覽;材料內容會撐開所屬節點",
|
|
150
152
|
"Drag the canvas from the current equipment stage; each node groups routes with the same equipment and star level": "從目前裝備階段開始拖動畫布;相同裝備與相同星級的路線合併到同一節點",
|
|
151
153
|
"Drag the empty canvas or use the scrollbars to move; material tables scroll independently": "拖曳空白畫布或使用捲軸瀏覽鏈路;材料表格維持獨立捲動",
|
|
152
154
|
"Drag the empty canvas to move; use the wheel to zoom; all node materials remain visible and scroll independently": "拖動畫布空白處移動;滾輪縮放;所有節點材料保持顯示,節點內容可獨立捲動",
|
|
@@ -727,6 +729,20 @@
|
|
|
727
729
|
"changelog_1_3_25_filters_lists": "裝備分類按用途增強視覺分組,列表顯示可改修/可進化類型並更加緊湊,裝備名末尾括號後綴不再拆散或被截斷隱藏。",
|
|
728
730
|
"changelog_1_3_25_global_chain": "全域升級路線選擇重用同一套完整鏈路控制項。",
|
|
729
731
|
"changelog_1_3_25_stable_chain": "完整改修鏈可從畫布、節點標題和一般節點內容原生拖動,節點依完整內容展開,材料矩陣維持獨立橫向捲動。",
|
|
732
|
+
"changelog_1_3_27_canvas_drag": "升級鏈畫布改為在內部節點處理輸入前捕捉滑鼠與觸控拖動,同時保留材料表格的獨立捲動。",
|
|
733
|
+
"changelog_1_3_27_current_operation": "「今天改什麼」只計算目前星級的下一次改修或 ★MAX 更新,分別顯示普通期望與確保固定消耗;六種基礎資源即使為 0 也會保留顯示。",
|
|
734
|
+
"changelog_1_3_27_persistent_details": "「今天改什麼」右側改修詳情改為固定常顯,並移除收合按鈕。",
|
|
735
|
+
"changelog_1_3_27_plan_detail_order": "改修計畫詳情依「秘書艦、日期、升級階段、完成本裝備計畫的總消耗與缺口、總鏈路」重新排序。",
|
|
736
|
+
"changelog_1_3_27_workbench_names": "「今天改什麼」的裝備名稱不再被兩行或三行高度裁切,包含末尾括號說明在內都會依實際內容自然換行。",
|
|
737
|
+
"changelog_1_3_28_docs_convergence": "整理新版介面的需求、驗收與設計文件。本次不改變現有 UI 行為;快速計畫增量、畫布互動、遷移測試與總鏈路設計仍維持待處理。",
|
|
738
|
+
"changelog_1_3_29_canvas_input": "完整改修鏈改用統一指標拖動與原生點擊抑制,材料表繼續獨立捲動;安裝後仍需在 Poi 中完成最終拖動驗收。",
|
|
739
|
+
"changelog_1_3_29_plan_migration": "舊版單目標與僅關注計畫會安全遷移到多目標格式,重複遷移不會遺失或重複計畫。",
|
|
740
|
+
"changelog_1_3_29_quick_plan_increment": "快速計畫按鈕現在每點擊一次就為對應星級增加 1 件,並保留同一裝備已有的其他星級目標。",
|
|
741
|
+
"changelog_1_3_30_content_height": "鏈路節點會依照渲染後的真實內容自動增高,素材表格與多路線不再被節點裁切。",
|
|
742
|
+
"changelog_1_3_30_material_scroll": "素材表的滾輪與觸控板捲動會留在表格內部,拖動結束後的節點點擊只抑制一次。",
|
|
743
|
+
"changelog_1_3_30_mouse_drag": "完整改修鏈在 Poi 中改用獨立的原生滑鼠拖動路徑;觸控與手寫筆輸入繼續使用 Pointer Events。",
|
|
744
|
+
"changelog_1_3_42_blank_canvas_drag": "完整改修鏈只從空白畫布啟動拖動,裝備節點維持正常點擊與內容互動。",
|
|
745
|
+
"changelog_1_3_42_material_expand": "材料內容會撐開裝備節點並重新配置完整鏈路,不再被節點邊框裁切。",
|
|
730
746
|
"changelog_1_3_9_chain_visual": "升級路線改用裝備圖示和箭頭顯示,並明確標出最低成本與額外消耗。",
|
|
731
747
|
"changelog_1_3_9_detail_cleanup": "右側詳情移除重複說明,並依不同頁面設定更合適的預設插件和順序。",
|
|
732
748
|
"changelog_1_3_9_migration_order": "舊計畫會先處理「僅關注」,再選擇改造鏈保護,兩項設定不再前後混淆。",
|
|
@@ -736,18 +752,5 @@
|
|
|
736
752
|
"plugin_description": "使用隨插件安裝的本機資料檢視裝備改修信息。",
|
|
737
753
|
"standard font": "標準字體",
|
|
738
754
|
"upgrade": "升級",
|
|
739
|
-
"upgrade to": "升級爲"
|
|
740
|
-
"changelog_1_3_27_workbench_names": "「今天改什麼」的裝備名稱不再被兩行或三行高度裁切,包含末尾括號說明在內都會依實際內容自然換行。",
|
|
741
|
-
"changelog_1_3_27_persistent_details": "「今天改什麼」右側改修詳情改為固定常顯,並移除收合按鈕。",
|
|
742
|
-
"changelog_1_3_27_current_operation": "「今天改什麼」只計算目前星級的下一次改修或 ★MAX 更新,分別顯示普通期望與確保固定消耗;六種基礎資源即使為 0 也會保留顯示。",
|
|
743
|
-
"changelog_1_3_27_plan_detail_order": "改修計畫詳情依「秘書艦、日期、升級階段、完成本裝備計畫的總消耗與缺口、總鏈路」重新排序。",
|
|
744
|
-
"changelog_1_3_27_canvas_drag": "升級鏈畫布改為在內部節點處理輸入前捕捉滑鼠與觸控拖動,同時保留材料表格的獨立捲動。",
|
|
745
|
-
"Date": "日期",
|
|
746
|
-
"changelog_1_3_28_docs_convergence": "整理新版介面的需求、驗收與設計文件。本次不改變現有 UI 行為;快速計畫增量、畫布互動、遷移測試與總鏈路設計仍維持待處理。",
|
|
747
|
-
"changelog_1_3_29_quick_plan_increment": "快速計畫按鈕現在每點擊一次就為對應星級增加 1 件,並保留同一裝備已有的其他星級目標。",
|
|
748
|
-
"changelog_1_3_29_plan_migration": "舊版單目標與僅關注計畫會安全遷移到多目標格式,重複遷移不會遺失或重複計畫。",
|
|
749
|
-
"changelog_1_3_29_canvas_input": "完整改修鏈改用統一指標拖動與原生點擊抑制,材料表繼續獨立捲動;安裝後仍需在 Poi 中完成最終拖動驗收。",
|
|
750
|
-
"changelog_1_3_30_mouse_drag": "完整改修鏈在 Poi 中改用獨立的原生滑鼠拖動路徑;觸控與手寫筆輸入繼續使用 Pointer Events。",
|
|
751
|
-
"changelog_1_3_30_content_height": "鏈路節點會依照渲染後的真實內容自動增高,素材表格與多路線不再被節點裁切。",
|
|
752
|
-
"changelog_1_3_30_material_scroll": "素材表的滾輪與觸控板捲動會留在表格內部,拖動結束後的節點點擊只抑制一次。"
|
|
755
|
+
"upgrade to": "升級爲"
|
|
753
756
|
}
|
package/package.json
CHANGED
package/views/changelog.js
CHANGED
|
@@ -19,6 +19,9 @@ const CHANGELOG_BASELINE_VERSION = '1.0.20'; // Keep in-app notes focused on use
|
|
|
19
19
|
|
|
20
20
|
exports.CHANGELOG_BASELINE_VERSION = CHANGELOG_BASELINE_VERSION;
|
|
21
21
|
const CHANGELOG = [{
|
|
22
|
+
version: '1.3.42',
|
|
23
|
+
items: ['changelog_1_3_42_blank_canvas_drag', 'changelog_1_3_42_material_expand']
|
|
24
|
+
}, {
|
|
22
25
|
version: '1.3.30',
|
|
23
26
|
items: ['changelog_1_3_30_mouse_drag', 'changelog_1_3_30_content_height', 'changelog_1_3_30_material_scroll']
|
|
24
27
|
}, {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
|
-
exports.handleMaterialMatrixWheel = exports.buildFlowLayout = exports.UpgradeEquipmentNode = exports.UpgradeChainCanvas = exports.buildBranchAssignments = exports.buildEquipmentCanvasFamily = exports.estimateUpgradeNodeHeight = exports.BRANCH_COLORS = void 0;
|
|
4
|
+
exports.handleMaterialMatrixWheel = exports.buildFlowLayout = exports.UpgradeEquipmentNode = exports.UpgradeChainCanvas = exports.buildBranchAssignments = exports.buildEquipmentCanvasFamily = exports.estimateUpgradeNodeHeight = exports.BRANCH_COLORS = exports.collectPoiCanvasRuntimeSnapshot = void 0;
|
|
5
5
|
|
|
6
6
|
var _react = _interopRequireWildcard(require("react"));
|
|
7
7
|
|
|
@@ -51,6 +51,61 @@ const FLAT_ROUTE_HEADER_HEIGHT = 38;
|
|
|
51
51
|
const FLAT_ROUTE_PADDING = 24;
|
|
52
52
|
const DRAG_THRESHOLD = 5;
|
|
53
53
|
const NODE_MEASURE_TOLERANCE = 2;
|
|
54
|
+
const CANVAS_DEBUG_FLAG = '__ITEM_IMPROVEMENT_CANVAS_DEBUG__';
|
|
55
|
+
const CANVAS_PROBE_SELECTORS = ['.decision-chain-flow-viewport', '.decision-chain-flow-stage', '.decision-chain-flow-world', '.decision-upgrade-state-node', '.decision-upgrade-state-node-body', '.decision-chain-node-material-section', '.decision-chain-node-matrix-scroll'];
|
|
56
|
+
|
|
57
|
+
const collectPoiCanvasRuntimeSnapshot = (viewport, event) => {
|
|
58
|
+
if (!viewport) return null;
|
|
59
|
+
const root = viewport.closest ? viewport.closest('.decision-full-route-dialog, #item-improvement') : null;
|
|
60
|
+
const scope = root || viewport.parentElement || viewport;
|
|
61
|
+
const styles = CANVAS_PROBE_SELECTORS.reduce((result, selector) => {
|
|
62
|
+
const element = scope.querySelector ? scope.querySelector(selector) : null;
|
|
63
|
+
if (!element) return result;
|
|
64
|
+
const computed = window.getComputedStyle ? window.getComputedStyle(element) : {};
|
|
65
|
+
const rect = element.getBoundingClientRect ? element.getBoundingClientRect() : {};
|
|
66
|
+
return _extends({}, result, {
|
|
67
|
+
[selector]: {
|
|
68
|
+
display: computed.display,
|
|
69
|
+
position: computed.position,
|
|
70
|
+
height: computed.height,
|
|
71
|
+
minHeight: computed.minHeight,
|
|
72
|
+
maxHeight: computed.maxHeight,
|
|
73
|
+
flex: computed.flex,
|
|
74
|
+
overflow: computed.overflow,
|
|
75
|
+
overflowX: computed.overflowX,
|
|
76
|
+
overflowY: computed.overflowY,
|
|
77
|
+
boxSizing: computed.boxSizing,
|
|
78
|
+
clientWidth: Number(element.clientWidth) || 0,
|
|
79
|
+
clientHeight: Number(element.clientHeight) || 0,
|
|
80
|
+
scrollWidth: Number(element.scrollWidth) || 0,
|
|
81
|
+
scrollHeight: Number(element.scrollHeight) || 0,
|
|
82
|
+
rectWidth: Number(rect.width) || 0,
|
|
83
|
+
rectHeight: Number(rect.height) || 0
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
}, {});
|
|
87
|
+
const path = event && typeof event.composedPath === 'function' ? event.composedPath().map(item => item && item.className || item && item.tagName || String(item)).slice(0, 12) : [];
|
|
88
|
+
return {
|
|
89
|
+
event: event ? {
|
|
90
|
+
type: event.type,
|
|
91
|
+
targetClass: event.target && event.target.className,
|
|
92
|
+
clientX: event.clientX,
|
|
93
|
+
clientY: event.clientY,
|
|
94
|
+
composedPath: path
|
|
95
|
+
} : null,
|
|
96
|
+
viewport: {
|
|
97
|
+
clientWidth: Number(viewport.clientWidth) || 0,
|
|
98
|
+
clientHeight: Number(viewport.clientHeight) || 0,
|
|
99
|
+
scrollWidth: Number(viewport.scrollWidth) || 0,
|
|
100
|
+
scrollHeight: Number(viewport.scrollHeight) || 0,
|
|
101
|
+
scrollLeft: Number(viewport.scrollLeft) || 0,
|
|
102
|
+
scrollTop: Number(viewport.scrollTop) || 0
|
|
103
|
+
},
|
|
104
|
+
styles
|
|
105
|
+
};
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
exports.collectPoiCanvasRuntimeSnapshot = collectPoiCanvasRuntimeSnapshot;
|
|
54
109
|
const BRANCH_COLORS = ['#45a9a5', '#4e9fd8', '#b98a45', '#9b7bd1', '#d66f6f', '#6cab68'];
|
|
55
110
|
exports.BRANCH_COLORS = BRANCH_COLORS;
|
|
56
111
|
|
|
@@ -362,7 +417,21 @@ class UpgradeEquipmentNode extends _react.default.PureComponent {
|
|
|
362
417
|
enumerable: true,
|
|
363
418
|
writable: true,
|
|
364
419
|
value: element => {
|
|
420
|
+
if (this.nodeElement === element) return;
|
|
421
|
+
if (this.resizeObserver) this.resizeObserver.disconnect();
|
|
365
422
|
this.nodeElement = element;
|
|
423
|
+
this.attachResizeObserver();
|
|
424
|
+
this.scheduleMeasure();
|
|
425
|
+
}
|
|
426
|
+
}), Object.defineProperty(this, "attachResizeObserver", {
|
|
427
|
+
configurable: true,
|
|
428
|
+
enumerable: true,
|
|
429
|
+
writable: true,
|
|
430
|
+
value: () => {
|
|
431
|
+
if (!this.nodeElement || typeof window.ResizeObserver !== 'function') return;
|
|
432
|
+
if (this.resizeObserver) this.resizeObserver.disconnect();
|
|
433
|
+
this.resizeObserver = new window.ResizeObserver(() => this.scheduleMeasure());
|
|
434
|
+
this.resizeObserver.observe(this.nodeElement);
|
|
366
435
|
}
|
|
367
436
|
}), Object.defineProperty(this, "scheduleMeasure", {
|
|
368
437
|
configurable: true,
|
|
@@ -419,17 +488,28 @@ class UpgradeEquipmentNode extends _react.default.PureComponent {
|
|
|
419
488
|
}
|
|
420
489
|
|
|
421
490
|
componentDidMount() {
|
|
491
|
+
this.attachResizeObserver();
|
|
422
492
|
this.scheduleMeasure();
|
|
423
493
|
}
|
|
424
494
|
|
|
425
|
-
componentDidUpdate() {
|
|
426
|
-
|
|
495
|
+
componentDidUpdate(previousProps) {
|
|
496
|
+
const {
|
|
497
|
+
remeasureToken,
|
|
498
|
+
viewMode,
|
|
499
|
+
node
|
|
500
|
+
} = this.props;
|
|
501
|
+
|
|
502
|
+
if (previousProps.remeasureToken !== remeasureToken || previousProps.viewMode !== viewMode || previousProps.node !== node) {
|
|
503
|
+
this.scheduleMeasure();
|
|
504
|
+
}
|
|
427
505
|
}
|
|
428
506
|
|
|
429
507
|
componentWillUnmount() {
|
|
430
508
|
if (this.measureFrame && window.cancelAnimationFrame) {
|
|
431
509
|
window.cancelAnimationFrame(this.measureFrame);
|
|
432
510
|
}
|
|
511
|
+
|
|
512
|
+
if (this.resizeObserver) this.resizeObserver.disconnect();
|
|
433
513
|
}
|
|
434
514
|
|
|
435
515
|
render() {
|
|
@@ -519,7 +599,8 @@ Object.defineProperty(UpgradeEquipmentNode, "propTypes", {
|
|
|
519
599
|
style: _propTypes.default.object.isRequired,
|
|
520
600
|
branchColors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
|
|
521
601
|
onActivate: _propTypes.default.func.isRequired,
|
|
522
|
-
onMeasure: _propTypes.default.func.isRequired
|
|
602
|
+
onMeasure: _propTypes.default.func.isRequired,
|
|
603
|
+
remeasureToken: _propTypes.default.number.isRequired
|
|
523
604
|
}
|
|
524
605
|
});
|
|
525
606
|
|
|
@@ -759,7 +840,8 @@ class UpgradeChainCanvas extends _react.Component {
|
|
|
759
840
|
activeKey: null,
|
|
760
841
|
dragging: false,
|
|
761
842
|
measuredHeights: {},
|
|
762
|
-
familySignature: null
|
|
843
|
+
familySignature: null,
|
|
844
|
+
remeasureToken: 0
|
|
763
845
|
}
|
|
764
846
|
}), Object.defineProperty(this, "supportsPointerEvents", {
|
|
765
847
|
configurable: true,
|
|
@@ -806,8 +888,44 @@ class UpgradeChainCanvas extends _react.Component {
|
|
|
806
888
|
if (this.viewport === element) return;
|
|
807
889
|
if (this.dragState) this.finishDrag();
|
|
808
890
|
this.detachViewportListeners();
|
|
891
|
+
if (this.viewportResizeObserver) this.viewportResizeObserver.disconnect();
|
|
809
892
|
this.viewport = element;
|
|
810
893
|
this.attachViewportListeners();
|
|
894
|
+
|
|
895
|
+
if (this.viewport && typeof window.ResizeObserver === 'function') {
|
|
896
|
+
this.viewportResizeObserver = new window.ResizeObserver(this.scheduleHostRemeasure);
|
|
897
|
+
this.viewportResizeObserver.observe(this.viewport);
|
|
898
|
+
}
|
|
899
|
+
|
|
900
|
+
this.scheduleHostRemeasure();
|
|
901
|
+
}
|
|
902
|
+
}), Object.defineProperty(this, "handleVisibilityChange", {
|
|
903
|
+
configurable: true,
|
|
904
|
+
enumerable: true,
|
|
905
|
+
writable: true,
|
|
906
|
+
value: () => {
|
|
907
|
+
if (!document.hidden) this.scheduleHostRemeasure();
|
|
908
|
+
}
|
|
909
|
+
}), Object.defineProperty(this, "scheduleHostRemeasure", {
|
|
910
|
+
configurable: true,
|
|
911
|
+
enumerable: true,
|
|
912
|
+
writable: true,
|
|
913
|
+
value: () => {
|
|
914
|
+
if (this.unmounting || !window.requestAnimationFrame) return;
|
|
915
|
+
|
|
916
|
+
if (this.hostMeasureFrame && window.cancelAnimationFrame) {
|
|
917
|
+
window.cancelAnimationFrame(this.hostMeasureFrame);
|
|
918
|
+
}
|
|
919
|
+
|
|
920
|
+
this.hostMeasureFrame = window.requestAnimationFrame(() => {
|
|
921
|
+
this.hostMeasureFrame = null;
|
|
922
|
+
|
|
923
|
+
if (!this.unmounting) {
|
|
924
|
+
this.setState(state => ({
|
|
925
|
+
remeasureToken: state.remeasureToken + 1
|
|
926
|
+
}));
|
|
927
|
+
}
|
|
928
|
+
});
|
|
811
929
|
}
|
|
812
930
|
}), Object.defineProperty(this, "getCanvasModel", {
|
|
813
931
|
configurable: true,
|
|
@@ -972,6 +1090,18 @@ class UpgradeChainCanvas extends _react.Component {
|
|
|
972
1090
|
activeKey: startKey
|
|
973
1091
|
}, () => this.scrollToNode(startKey));
|
|
974
1092
|
}
|
|
1093
|
+
}), Object.defineProperty(this, "debugCanvasProbe", {
|
|
1094
|
+
configurable: true,
|
|
1095
|
+
enumerable: true,
|
|
1096
|
+
writable: true,
|
|
1097
|
+
value: (phase, event) => {
|
|
1098
|
+
if (window[CANVAS_DEBUG_FLAG] !== true) return;
|
|
1099
|
+
const snapshot = collectPoiCanvasRuntimeSnapshot(this.viewport, event);
|
|
1100
|
+
|
|
1101
|
+
if (window.console && window.console.info) {
|
|
1102
|
+
window.console.info(`[item-improvement canvas:${phase}]`, snapshot);
|
|
1103
|
+
}
|
|
1104
|
+
}
|
|
975
1105
|
}), Object.defineProperty(this, "eventPoint", {
|
|
976
1106
|
configurable: true,
|
|
977
1107
|
enumerable: true,
|
|
@@ -999,14 +1129,20 @@ class UpgradeChainCanvas extends _react.Component {
|
|
|
999
1129
|
configurable: true,
|
|
1000
1130
|
enumerable: true,
|
|
1001
1131
|
writable: true,
|
|
1002
|
-
value: target => Boolean(target && target.closest && target.closest('button, a, input, select, textarea, [contenteditable="true"], .decision-
|
|
1132
|
+
value: target => Boolean(target && target.closest && target.closest('button, a, input, select, textarea, [contenteditable="true"], .decision-upgrade-state-node'))
|
|
1003
1133
|
}), Object.defineProperty(this, "beginDrag", {
|
|
1004
1134
|
configurable: true,
|
|
1005
1135
|
enumerable: true,
|
|
1006
1136
|
writable: true,
|
|
1007
1137
|
value: event => {
|
|
1008
1138
|
if (this.dragState || !this.viewport || !this.isPrimaryButton(event)) return false;
|
|
1009
|
-
|
|
1139
|
+
|
|
1140
|
+
if (this.isBlockedDragTarget(event.target)) {
|
|
1141
|
+
this.debugCanvasProbe('blocked-down', event);
|
|
1142
|
+
return false;
|
|
1143
|
+
}
|
|
1144
|
+
|
|
1145
|
+
this.debugCanvasProbe('begin', event);
|
|
1010
1146
|
const point = this.eventPoint(event);
|
|
1011
1147
|
if (!Number.isFinite(point.x) || !Number.isFinite(point.y)) return false;
|
|
1012
1148
|
this.dragState = {
|
|
@@ -1038,6 +1174,7 @@ class UpgradeChainCanvas extends _react.Component {
|
|
|
1038
1174
|
this.setState({
|
|
1039
1175
|
dragging: true
|
|
1040
1176
|
});
|
|
1177
|
+
this.debugCanvasProbe('drag-started', event);
|
|
1041
1178
|
}
|
|
1042
1179
|
|
|
1043
1180
|
if (event.cancelable !== false && event.preventDefault) event.preventDefault();
|
|
@@ -1090,6 +1227,7 @@ class UpgradeChainCanvas extends _react.Component {
|
|
|
1090
1227
|
const {
|
|
1091
1228
|
dragging
|
|
1092
1229
|
} = this.state;
|
|
1230
|
+
if (moved) this.debugCanvasProbe('finish', event);
|
|
1093
1231
|
if (dragging && !this.unmounting) this.setState({
|
|
1094
1232
|
dragging: false
|
|
1095
1233
|
});
|
|
@@ -1216,21 +1354,35 @@ class UpgradeChainCanvas extends _react.Component {
|
|
|
1216
1354
|
}
|
|
1217
1355
|
|
|
1218
1356
|
componentDidMount() {
|
|
1357
|
+
window.addEventListener('resize', this.scheduleHostRemeasure);
|
|
1358
|
+
document.addEventListener('visibilitychange', this.handleVisibilityChange);
|
|
1219
1359
|
window.requestAnimationFrame(this.focusCurrent);
|
|
1360
|
+
this.scheduleHostRemeasure();
|
|
1220
1361
|
}
|
|
1221
1362
|
|
|
1222
1363
|
componentDidUpdate(previousProps) {
|
|
1223
1364
|
const {
|
|
1224
|
-
family
|
|
1365
|
+
family,
|
|
1366
|
+
hostLayoutSignal
|
|
1225
1367
|
} = this.props;
|
|
1226
1368
|
|
|
1227
1369
|
if (canvasFocusSignature(previousProps.family) !== canvasFocusSignature(family)) {
|
|
1228
1370
|
window.requestAnimationFrame(this.focusCurrent);
|
|
1229
1371
|
}
|
|
1372
|
+
|
|
1373
|
+
if (previousProps.hostLayoutSignal !== hostLayoutSignal) this.scheduleHostRemeasure();
|
|
1230
1374
|
}
|
|
1231
1375
|
|
|
1232
1376
|
componentWillUnmount() {
|
|
1233
1377
|
this.unmounting = true;
|
|
1378
|
+
window.removeEventListener('resize', this.scheduleHostRemeasure);
|
|
1379
|
+
document.removeEventListener('visibilitychange', this.handleVisibilityChange);
|
|
1380
|
+
|
|
1381
|
+
if (this.hostMeasureFrame && window.cancelAnimationFrame) {
|
|
1382
|
+
window.cancelAnimationFrame(this.hostMeasureFrame);
|
|
1383
|
+
}
|
|
1384
|
+
|
|
1385
|
+
if (this.viewportResizeObserver) this.viewportResizeObserver.disconnect();
|
|
1234
1386
|
this.detachViewportListeners();
|
|
1235
1387
|
this.finishDrag();
|
|
1236
1388
|
}
|
|
@@ -1245,7 +1397,8 @@ class UpgradeChainCanvas extends _react.Component {
|
|
|
1245
1397
|
const {
|
|
1246
1398
|
viewMode,
|
|
1247
1399
|
activeKey,
|
|
1248
|
-
dragging
|
|
1400
|
+
dragging,
|
|
1401
|
+
remeasureToken
|
|
1249
1402
|
} = this.state;
|
|
1250
1403
|
const {
|
|
1251
1404
|
canvasFamily,
|
|
@@ -1327,11 +1480,12 @@ class UpgradeChainCanvas extends _react.Component {
|
|
|
1327
1480
|
branchColors: data.branchColors,
|
|
1328
1481
|
onActivate: this.activateNode,
|
|
1329
1482
|
onMeasure: this.handleNodeMeasure,
|
|
1483
|
+
remeasureToken: remeasureToken,
|
|
1330
1484
|
style: data.style
|
|
1331
1485
|
});
|
|
1332
1486
|
})))), _react.default.createElement("div", {
|
|
1333
1487
|
className: "decision-chain-flow-hint"
|
|
1334
|
-
}, __('Drag
|
|
1488
|
+
}, __('Drag only empty canvas space or use the scrollbars to move; material content expands each node')));
|
|
1335
1489
|
}
|
|
1336
1490
|
|
|
1337
1491
|
}
|
|
@@ -1345,7 +1499,8 @@ Object.defineProperty(UpgradeChainCanvas, "propTypes", {
|
|
|
1345
1499
|
family: _propTypes.default.object.isRequired,
|
|
1346
1500
|
masterEquips: _propTypes.default.object.isRequired,
|
|
1347
1501
|
masterUseitems: _propTypes.default.object.isRequired,
|
|
1348
|
-
embedded: _propTypes.default.bool
|
|
1502
|
+
embedded: _propTypes.default.bool,
|
|
1503
|
+
hostLayoutSignal: _propTypes.default.number
|
|
1349
1504
|
}
|
|
1350
1505
|
});
|
|
1351
1506
|
Object.defineProperty(UpgradeChainCanvas, "defaultProps", {
|
|
@@ -1353,6 +1508,7 @@ Object.defineProperty(UpgradeChainCanvas, "defaultProps", {
|
|
|
1353
1508
|
enumerable: true,
|
|
1354
1509
|
writable: true,
|
|
1355
1510
|
value: {
|
|
1356
|
-
embedded: false
|
|
1511
|
+
embedded: false,
|
|
1512
|
+
hostLayoutSignal: 0
|
|
1357
1513
|
}
|
|
1358
1514
|
});
|
|
@@ -34,14 +34,23 @@ class UpgradeRouteModal extends _react.Component {
|
|
|
34
34
|
enumerable: true,
|
|
35
35
|
writable: true,
|
|
36
36
|
value: {
|
|
37
|
-
maximized: false
|
|
37
|
+
maximized: false,
|
|
38
|
+
layoutSignal: 0
|
|
38
39
|
}
|
|
39
40
|
}), Object.defineProperty(this, "toggleMaximized", {
|
|
40
41
|
configurable: true,
|
|
41
42
|
enumerable: true,
|
|
42
43
|
writable: true,
|
|
43
44
|
value: () => this.setState(state => ({
|
|
44
|
-
maximized: !state.maximized
|
|
45
|
+
maximized: !state.maximized,
|
|
46
|
+
layoutSignal: state.layoutSignal + 1
|
|
47
|
+
}))
|
|
48
|
+
}), Object.defineProperty(this, "handleEntered", {
|
|
49
|
+
configurable: true,
|
|
50
|
+
enumerable: true,
|
|
51
|
+
writable: true,
|
|
52
|
+
value: () => this.setState(state => ({
|
|
53
|
+
layoutSignal: state.layoutSignal + 1
|
|
45
54
|
}))
|
|
46
55
|
}), Object.defineProperty(this, "handleHide", {
|
|
47
56
|
configurable: true,
|
|
@@ -68,7 +77,8 @@ class UpgradeRouteModal extends _react.Component {
|
|
|
68
77
|
masterUseitems
|
|
69
78
|
} = this.props;
|
|
70
79
|
const {
|
|
71
|
-
maximized
|
|
80
|
+
maximized,
|
|
81
|
+
layoutSignal
|
|
72
82
|
} = this.state;
|
|
73
83
|
if (!item) return null;
|
|
74
84
|
const focusLevel = (0, _upgradeRouteModel.resolveUpgradeChainFocusLevel)(item);
|
|
@@ -81,6 +91,7 @@ class UpgradeRouteModal extends _react.Component {
|
|
|
81
91
|
return _react.default.createElement(_reactBootstrap.Modal, {
|
|
82
92
|
show: show,
|
|
83
93
|
onHide: this.handleHide,
|
|
94
|
+
onEntered: this.handleEntered,
|
|
84
95
|
dialogClassName: `decision-full-route-dialog${maximized ? ' is-maximized' : ''}`
|
|
85
96
|
}, _react.default.createElement(_reactBootstrap.Modal.Header, {
|
|
86
97
|
closeButton: true
|
|
@@ -104,7 +115,8 @@ class UpgradeRouteModal extends _react.Component {
|
|
|
104
115
|
key: `${family.currentId}:${family.currentLevel}`,
|
|
105
116
|
family: family,
|
|
106
117
|
masterEquips: masterEquips,
|
|
107
|
-
masterUseitems: masterUseitems
|
|
118
|
+
masterUseitems: masterUseitems,
|
|
119
|
+
hostLayoutSignal: layoutSignal
|
|
108
120
|
})), _react.default.createElement(_reactBootstrap.Modal.Footer, null, _react.default.createElement("span", {
|
|
109
121
|
className: "decision-full-route-resize-hint"
|
|
110
122
|
}, __('Drag the lower-right corner to resize the window')), _react.default.createElement(_reactBootstrap.Button, {
|