J58のパーツが届く 施工計画の全面修正

土曜日だが、朝から一日雨がℎぐり続く・・・まあ、梅雨だから当たり前だが、キクの散歩はみなと公園・・・一日中、施工計画の改修

フロントブレーキのシリンダー4個を購入
フリーハブのパッキンとキングピンのシムを購入

施工計画書作成のエディタ分析(diagram-editor-script)

  • 完全自作図面エディタエンジン
  • 174関数 / 3,686行 / 166KB、→ 単一ファイルとしては限界に近いサイズ
  • 外部ライブラリなし、SVGとdivだけでDrawio・Visioのような図形編集を自力実装
観点評価
コード品質セクション分けが明確で追いやすい
機能完成度商用ツールに近いレベル
CSP対応95%完了・ページタブのみ残存
データ設計JSON構造が明確で拡張しやすい
リスク箇所renderPageTabs()のinline onclick


リファクタリングの優先順位

優先内容効果
🔴 高 getTargetId()関数を1つ作りID取得を統一バグ防止
🔴 高 setBg()をapplyBoxBg()に統合重複解消
🔴 高 toggleBorder()をapplyNodeBorderToggle()に統合重複解消
🟡 中 ctx系をコア関数に引数追加で統合コード削減
🟡 中 tbl系を別ファイルに切り出し見通し改善
🟢 低 snapshot()をラップして自動呼び出し化snapshot()をラップして自動呼び出し化呼び忘れ防止

1.表操作の不具合修正・図形移動カーソル統一

1-1.表セルの背景色が不安定

原因
背景色を変更するルートが2つ存在し、挙動が異なる。
ルートA: RTBツールバーの「背景色」ピッカー
→ applyBoxBg(color) が呼ばれる
→ selCells があればセルに適用、なければノード全体に適用
→ saveTblNode() を呼ばない(HTMLが保存されない)
ルートB: 右クリックメニューの「セル背景色」
→ tblSetCellBg(color) が呼ばれる
→ saveTblNode() を呼ぶ(HTMLが保存される)
→ ルートAで変更した背景色は保存されずリロードで消える

1-2.表セルのテキスト色が変更できない

原因
テキスト色変更のルートが2つあり、表セルでは機能しない。
ルートA: RTBツールバーの「文字色」ピッカー(rb-txtcolor)
→ onchange=”rfmtColor(‘fore’,this.value)”(edit_section_blade.phpに記載)
→ rfmtColor は editCellEl または editId を使う
→ セルを「シングルクリックで選択」した状態では
editCellEl=null, editId=null になるため何も起こらない
→ ダブルクリックでセル編集中でないと動かない
ルートB: 右クリックメニューの「テキスト色」
→ tblSetCellTextColor(color) が呼ばれる
→ selCells に対して td.style.color を直接設定する
→ こちらは正常に動作する
→ ユーザーがRTBの文字色ピッカーを使っても変わらない

1-3.tblSetCellBg と tblSetCellTextColor に
closeCtxMenu() が入っている

原因
tblSetCellBg(color) と tblSetCellTextColor(color) の末尾に
closeCtxMenu() が入っている。
RTBツールバーから呼ばれた場合は右クリックメニューが
開いていないので問題ないが、将来的な混乱を避けるため整理する。

1-4.図形のドラッグ移動カーソルが不統一

現状
.nd-body に cursor: move が設定されている(CSS)
→ テキストボックス内にマウスを乗せると「十字矢印」になる
→ 表ノードのドラッグゾーン(nd-tbl-hdr)も cursor: move→ 線ノードのヒット領域も cursor: move→ ただし画像ノードはcursorが未設定でデフォルト

すべての移動可能な要素で cursor: move に統一されているが、表ノードだけ nd-tbl-hdr の6px帯でしか移動できないため
ユーザーには気づきにくい。

2.diagram-editor-script.blade.php の分割

2-1.分割の方針

分割後の構成:
diagram-editor-script.blade.php ← 親ファイル(@includeのみ)
diagram-editor-core.blade.php ← コア(変数・Undo/グリッド)
diagram-editor-nodes.blade.php ← ノード生成・移動・選択・編集
diagram-editor-table.blade.php ← 表・Excel貼付・xspreadsheet
diagram-editor-connect.blade.php ← 接続線・コネクタ
diagram-editor-ui.blade.php ← 保存・テンプレ・印刷・メニュー・イベント

2-2.親ファイルの最終形(diagram-editor-script.blade.php)

分割完了後、元ファイルの中身を全て削除し、以下の内容に置き換える:
{{– 図面エディタ JavaScript
diagram-editor-script.blade.php から @include で読み込む。
$project / $item 変数は親ビューから自動継承される。 –}}
{{– コア:状態変数・Undo/Redo・グリッド –}}
@include(‘components.diagram-editor-core’)
{{– ノード:生成・移動・リサイズ・選択・編集・RTB・コピー・画像 –}}
@include(‘components.diagram-editor-nodes’)
{{– 表:表ノード・Excel貼付・xspreadsheet・セル操作 –}}
@include(‘components.diagram-editor-table’)
{{– 接続線:かぎ型コネクタ・マウスイベント・接続線ダイアログ –}}
@include(‘components.diagram-editor-connect’)
{{– UI:保存・ページ管理・テンプレート・印刷・メニュー・イベント –}}
@include(‘components.diagram-editor-ui’)

2-3.分割後の作業がどう変わるか

表の不具合修正
→ diagram-editor-table.blade.php だけ開けばよい
(約1,000行)
接続線の不具合→ diagram-editor-connect.blade.php だけ(約600行)保存・テンプレートの問題→ diagram-editor-ui.blade.php だけ(約700行)

3.ダイアログUI統一

3-1.統一デザイン仕様一

共通CSS変数(@push(‘styles’)内の先頭に追加する)
/* ===== ダイアログ共通CSS変数 ===== */
:root {
–dlg-radius : 8px;
–dlg-shadow : 0 8px 24px rgba(0,0,0,.18);
–dlg-border : 1px solid #e2e8f0;
–dlg-bg : #ffffff;
–dlg-title-size: 13px;
–dlg-body-size : 12px;
–dlg-title-color: #1e293b;
–dlg-body-color : #374151;

3-2.ダイアログの種別と統一仕様
  • 【種別1】センター配置モーダル(暗幕なし)
  • 【種別2】右クリック系メニュー(CSS定義)
  • 【種別3】オーバーレイ系モーダル(暗幕あり・CSSクラス定義)
  • 【種別4】xs-modal(大型オーバーレイ)
  • 【種別5】フローティングRTB
3-1.ボタンの統一仕様

ダイアログ内のボタンを以下3種類のCSSクラスに統一する。

ブックマーク パーマリンク.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

  • 2026年7月
     12345
    6789101112
    13141516171819
    20212223242526
    2728293031