@mogura/moguchart-core 1.4.0 → 1.6.0
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.ja.md +90 -0
- package/CHANGELOG.md +90 -0
- package/README.ja.md +149 -13
- package/README.md +156 -15
- package/dist/components/controllers/drag-drop-controller.d.ts +3 -3
- package/dist/components/gantt-calendar.d.ts +12 -1
- package/dist/components/gantt-chart-dependency-path.d.ts +6 -3
- package/dist/components/gantt-chart.d.ts +31 -1
- package/dist/components/gantt-row.d.ts +12 -1
- package/dist/core/auto-schedule.d.ts +101 -0
- package/dist/core/grid.d.ts +53 -0
- package/dist/core/history.d.ts +1 -1
- package/dist/core/i18n.d.ts +15 -0
- package/dist/core/types.d.ts +221 -2
- package/dist/index.d.ts +2 -0
- package/dist/moguchart-core.mjs +1941 -507
- package/dist/moguchart-core.umd.js +397 -92
- package/package.json +4 -4
package/CHANGELOG.ja.md
CHANGED
|
@@ -5,6 +5,96 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.6.0] - 2026-10-25
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **自動スケジューリング(Auto-Scheduling)& 拡張依存関係タイプ(`FS` / `SS` / `FF` / `SF`)・ラグ設定のサポート**:
|
|
13
|
+
- **拡張された依存関係リンク定義 (`GanttDependencyLink`)**:
|
|
14
|
+
- `task.dependencies`(`GanttDependency[]`)において、従来のタスクID文字列(`string`)との完全な後方互換性を保ちつつ、オブジェクト形式 `GanttDependencyLink`(`{ taskId: string, type?: 'FS' | 'SS' | 'FF' | 'SF', lag?: number }`)の指定に対応
|
|
15
|
+
- 4種類の標準依存関係タイプをサポート:
|
|
16
|
+
- `FS` (Finish-to-Start / 終了-開始、デフォルト): 先行タスク終了後に後続タスクを開始
|
|
17
|
+
- `SS` (Start-to-Start / 開始-開始): 先行タスク開始に合わせて後続タスクを開始
|
|
18
|
+
- `FF` (Finish-to-Finish / 終了-終了): 先行タスク終了に合わせて後続タスクを終了
|
|
19
|
+
- `SF` (Start-to-Finish / 開始-終了): 先行タスク開始に合わせて後続タスクを終了
|
|
20
|
+
- 分単位のラグ(遅延: 正の値)およびリード(前倒し: 負の値)期間(`lag`)の設定に対応
|
|
21
|
+
- **トポロジカルカスケード自動スケジューリングエンジン (`option.dependency.autoSchedule`)**:
|
|
22
|
+
- `option.dependency` に `autoSchedule?: boolean`(デフォルト: `false`)、`scheduleMode?: 'push-only' | 'strict'`(デフォルト: `'push-only'`)、`respectMovable?: boolean`(デフォルト: `true`)、`calendarMode?: 'calendar' | 'weekends' | 'weekends-holidays'`(デフォルト: `'calendar'`)、`isHoliday?: (date: Date) => boolean`(未指定時は `option.calendar.isHoliday` にフォールバック)を追加
|
|
23
|
+
- 依存制約に違反(逆転)する場合のみ後続タスクを後ろへ押し出す `'push-only'` モードと、先行タスクの移動およびラグに常時厳密追従させる `'strict'` モードをサポート
|
|
24
|
+
- **営業日ベース(土日除外・土日祝日除外)の稼働日・ラグ計算 (`calendarMode`)**: `'weekends'`(土日除外)または `'weekends-holidays'`(土日・祝日除外)を指定した場合、後続タスクの着地日が非稼働日にあたる際に翌営業日へ自動スキップし、各タスクの実稼働日数(営業日数)および依存関係のラグ・リード期間(`lag`)を営業日ベースで維持したまま期間を自動伸縮
|
|
25
|
+
- タスクバーのドラッグ移動・期間リサイズ、複数タスク一括移動、キーボード(`Shift + 矢印キー`)移動、マルチカラムグリッドのインラインセル編集(`startDate`, `endDate`, `duration`)のすべてと自動連動し、連鎖更新された全タスクの変更を単一の Undo / Redo 履歴コマンドとして記録
|
|
26
|
+
- プログラムから任意のタイミングで後続タスクの再計算を実行できるパブリックメソッド `chart.autoSchedule(changedTaskIds?, options?)` を `GanttChartElement` および `@mogura/moguchart-vue`(`GanttChartPublicApi`)に追加
|
|
27
|
+
- **エンドポイント連動の依存関係線描画・コネクタ作成・Excelエクスポート対応**:
|
|
28
|
+
- 直角折れ線(`'orthogonal'`)およびベジェ曲線(`'curve'`)のSVGパス計算において、`FS` / `SS` / `FF` / `SF` の各始点・終点(左端 `start` / 右端 `end`)に応じた正確なルートおよび矢印向きの描画に対応
|
|
29
|
+
- タスクバー左右端のコネクタドラッグによる依存関係作成時、接続元・接続先のエンドポイントから依存関係種別(`type: 'FS' | 'SS' | 'FF' | 'SF'`)を自動判定し、`DependencyCreateEventDetail.type` に格納
|
|
30
|
+
- クリティカルパス計算(`computeCriticalPath`)および Excel エクスポートプラグイン(`@mogura/moguchart-plugin-excel`)で `GanttDependencyLink` に対応(Excel 出力時は `FS` 以外の種別を `1 (SS)` のように表記)
|
|
31
|
+
- 操作履歴の `GanttCommandType` に `'dependency-update'` を追加
|
|
32
|
+
- 自動スケジューリング・営業日計算および依存関係操作用のユーティリティ関数(`propagateAutoSchedule`, `computeRequiredStartMs`, `createNonWorkingDayChecker`, `computeWorkingDurationMs`, `snapToWorkingStartMs`, `addWorkingTimeMs`, `getDependencyTaskId`, `normalizeDependencyLink`, `endpointsToDependencyType`, `dependencyTypeToEndpoints`, `createDependencyEntry`, `hasDependencyTarget`, `removeDependencyTarget`)をエクスポート
|
|
33
|
+
- **依存関係線の操作性向上 & 同一行内タスクのレーン配置改善**:
|
|
34
|
+
- 依存関係線のヒット領域において、通常のクリック(`click`)に加えてダブルクリック(`dblclick`)および右クリック(`contextmenu`)での `dependency-click` イベント発火に対応(`e.detail.event.type` で判別可能)
|
|
35
|
+
- 同一行内で `FS`(`lag: 0`)の依存関係を持ち、先行タスクの終了日時と後続タスクの開始日時が接している(`pred.end === succ.start`)場合に、依存関係線が潰れて選択不能になるのを防ぐため自動的に別レーン(上下段)へ分離する改善(`calculateTaskLanes`)
|
|
36
|
+
- 依存関係線上のカーソル表示と削除「×」ボタンのヒット領域半径を調整
|
|
37
|
+
|
|
38
|
+
### Fixed
|
|
39
|
+
|
|
40
|
+
- **マルチカラムグリッドにおける排他的終了日時(翌日 `00:00`)タスクの表示・期間日数集計・インライン編集の修正**:
|
|
41
|
+
- 日単位モードで終了日時が翌日 `00:00`(排他的終了境界)として保持されているタスクについて、`calculateRowSummaryDates` の期間日数(`durationDays`)計算、`formatGridCellValue` / `formatGridCellEditValue` の「終了日」表示(前日表記への補正)、および `applyGridCellEdit` での「終了日」「期間」インライン編集時に排他的終了日時のセマンティクスが正確に維持されるよう修正
|
|
42
|
+
- **複数タスク一括ドラッグ移動の状態委譲 & Shadow DOM 内での矩形範囲選択(Marquee Selection)の修正**:
|
|
43
|
+
- `GanttChartElement` と `DragDropController` 間で `TaskDragController` / `RowReorderController` のインスタンスを共有するよう修正し、複数選択したタスクのドラッグ&ドロップ時に選択状態が維持され全選択タスクへ移動量が反映されるよう修正
|
|
44
|
+
- `MarqueeController` で `composedPath()` および固定行ヘッダー領域の座標判定を行うよう修正し、行ヘッダーやスプリッター操作時に誤って矩形選択が開始される問題や、矩形ドラッグ中に行ヘッダーのテキストが選択される問題を解消
|
|
45
|
+
- **マルチカラムグリッド有効時のツリートグルボタン位置の整合性修正**:
|
|
46
|
+
- グリッド表示モード時における階層展開・折りたたみボタン(`.tree-toggle-btn`)の配置位置を非グリッド表示時と一致するよう修正
|
|
47
|
+
- **タスクバーのリサイズハンドル優先度 & 進捗操作ハンドルのヒット領域修正**:
|
|
48
|
+
- タスクバー端において期間リサイズハンドル(`.resize-handle`)と依存関係コネクタ(`.connector-handle`)が重なる領域で、期間リサイズ操作を優先するよう修正
|
|
49
|
+
- 進捗率ドラッグ操作ハンドルのヒット領域を下部の逆三角形ノブ部分のみに限定し、タスクバー本体のホバーやドラッグ時に意図せず進捗変更モードに入る問題を修正
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## [1.5.0] - 2026-10-17
|
|
54
|
+
|
|
55
|
+
### Added
|
|
56
|
+
|
|
57
|
+
- **マルチカラムデータグリッド対応(Multi-Column Data Grid / WBS テーブル)**:
|
|
58
|
+
- 行ヘッダー領域を本格的な複数カラムのテーブルとして表示・操作できる新オプション `option.grid` を追加
|
|
59
|
+
- **標準組み込みカラムプリセット**:
|
|
60
|
+
- `wbs`: WBS階層コード(例: 1, 1.1, 1.2.1)
|
|
61
|
+
- `name`: タスク名・行名(階層ツリーインデント+展開・折りたたみボタン内包)
|
|
62
|
+
- `startDate` / `startMonth` / `startDateTime`: タスク開始日・開始月・開始日時(単一タスクは開始日時、サマリー行・複数タスク行は最小開始日時を自動集計)
|
|
63
|
+
- `endDate` / `endMonth` / `endDateTime`: タスク終了日・終了月・終了日時(単一タスクは終了日時、サマリー行・複数タスク行は最大終了日時を自動集計)
|
|
64
|
+
- `duration`: 期間・工数(カレンダー日数スパン、時間単位モード時は時間・分フォーマット)
|
|
65
|
+
- `progress`: 進捗率(サマリー行・複数タスク行は期間加重平均進捗率を自動算出)
|
|
66
|
+
- **表示モードに応じた自動カラム適応**:
|
|
67
|
+
- 月単位モード(`pxPerMonth` 指定時)では `startDate` / `endDate` のヘッダーが自動的に「開始月」「終了月」(`Start Month` / `End Month`)に切り替わり、`YYYY/M` 形式で表示(終了月は前月表記に自動調整)
|
|
68
|
+
- 時間単位モード(`showTime: true` 時)では `startDate` / `endDate` のヘッダーが自動的に「開始日時」「終了日時」(`Start Date/Time` / `End Date/Time`)に切り替わり、時刻付き表示および時間単位の期間表示に連動
|
|
69
|
+
- **グリッドセルのインライン編集機能 (`option.grid.editable`, `cell-edit`)**:
|
|
70
|
+
- セルのダブルクリック(またはクリック:`editTrigger: 'dblclick' | 'click'`)による直感的なインライン編集に対応
|
|
71
|
+
- 組み込みエディタ種別(`text`, `number`, `date`, `datetime`, `month`, `select`)および独自の `HTMLElement` をマウントできるカスタムエディタ関数(`editor: (context) => HTMLElement`)をサポート
|
|
72
|
+
- セレクトボックス用選択肢(`editorOptions`)、数値入力の最小・最大・ステップ値(`editorMin`, `editorMax`, `editorStep`)、行・タスクごとの編集可否判定(`editable`)、カスタムセッター(`valueSetter`)に対応
|
|
73
|
+
- 単一タスクの `resizable`(`false` 時は日付・期間編集不可)、`movable`(`'none'` 時は日付・期間編集不可)、`progressResizable`(`false` 時は進捗率編集不可)の設定を考慮したセル編集可否判定に対応
|
|
74
|
+
- **編集可能セルと読み取り専用セルの視覚的区別**: インライン編集有効時、編集可能なセル(`.grid-cell-editable`: テキストカーソル・ホバーハイライト)と編集不可のセル(`.grid-cell-readonly`: サマリー行・複数タスク行の集計セルやWBS番号セル等のグレーアウト背景・半透明表示)を視覚的に区別(画像・PDFエクスポート時は自動的に通常表示へ正規化)
|
|
75
|
+
- グリッド有効時は行のドラッグ並び替えおよび行ヘッダーツールチップの表示対象をタスク名(ツリー)セル(`.grid-cell-name`, `.grid-tree-cell`)に限定し、インライン編集中は行のドラッグ並び替えを一時的に無効化することで入力欄内でのテキスト選択操作がスムーズに行えるよう改善
|
|
76
|
+
- 編集確定時に `cell-edit` および `rows-change` イベントを発火し、操作履歴(Undo / Redo: `command.type === 'cell-edit'`)と完全連動
|
|
77
|
+
- プログラムからセル編集を制御するパブリックメソッド `startCellEdit(rowId, columnId)`, `commitCellEdit(overrideValue?)`, `cancelCellEdit()` を追加
|
|
78
|
+
- **`cornerContent` とグリッドヘッダーの2段レイアウト共存**:
|
|
79
|
+
- グリッド有効時に `customRendering.cornerContent` が指定されている場合、左上コーナー領域を上段(`cornerContent`)と下段(グリッドカラムヘッダー)の2段構成で同時表示するよう対応
|
|
80
|
+
- **カスタムカラム & 自由なデータマッピング**:
|
|
81
|
+
- `field` による任意オブジェクトプロパティのバインド、および `valueGetter(row, tasks, wbsCode)` / `valueSetter(row, newValue, tasks, column)` による高度なカスタム値の取得・更新に対応
|
|
82
|
+
- `formatter` による文字列整形、および `renderCell(value, row, tasks, locale)` による `HTMLElement` / HTML 文字列のカスタムレンダリングに対応
|
|
83
|
+
- **カラム幅のドラッグリサイズ (`column-resize`)**:
|
|
84
|
+
- カラムヘッダー右端のドラッグ操作により、各カラムの幅を直感的に個別リサイズ可能。リサイズ中・完了時に `column-resize` カスタムイベントを発火し、行クリックやオプション更新時もユーザーのリサイズ幅を保持しつつ、`option.grid.columns` からの明示的な列幅変更にも追従
|
|
85
|
+
- **スプリッターリサイズ & グリッド内独立横スクロール同期**:
|
|
86
|
+
- グリッド領域とタイムライン領域を仕切るスプリッターリサイズを完全サポート
|
|
87
|
+
- カラム合計幅が表示枠を超える場合、トラックパッド横スワイプ、`Shift + ホイール`、またはグリッドヘッダー上のマウスホイール操作による独立横スクロールに対応。ヘッダーセルと各行セルが1pxのズレもなく同期して横スクロール
|
|
88
|
+
- **React / Vue ラッパーおよび公開ユーティリティの拡充**:
|
|
89
|
+
- `@mogura/moguchart-react` に `onColumnResize`, `onCellEdit`, `onRowsChange` イベント Props を追加
|
|
90
|
+
- `@mogura/moguchart-vue` に `@column-resize`, `@cell-edit`, `@rows-change` イベントおよび `startCellEdit`, `commitCellEdit`, `cancelCellEdit` 公開メソッドを追加
|
|
91
|
+
- グリッド計算・編集用ヘルパー関数(`calculateRowSummaryDates`, `normalizeGridColumns`, `getGridCellValue`, `formatGridCellValue`, `resolveColumnEditorType`, `isGridCellEditable`, `formatGridCellEditValue`, `applyGridCellEdit`)をエクスポート
|
|
92
|
+
- **多言語(i18n)自動連動 & 完全な後方互換性**:
|
|
93
|
+
- 日本語(`jaLocale`)および英語(`enLocale`)の言語切り替えと標準カラム名・期間単位が自動連動
|
|
94
|
+
- `option.grid` 未指定時は、従来の単一ヘッダー表示(`row.name`)として完全互換動作
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
8
98
|
## [1.4.0] - 2026-10-11
|
|
9
99
|
|
|
10
100
|
### Added
|
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,96 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.6.0] - 2026-10-25
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **Auto-Scheduling & Extended Dependency Types (`FS` / `SS` / `FF` / `SF`) with Lag**:
|
|
13
|
+
- **Extended Dependency Link Model (`GanttDependencyLink`)**:
|
|
14
|
+
- `task.dependencies` (`GanttDependency[]`) now supports rich `GanttDependencyLink` objects (`{ taskId: string, type?: 'FS' | 'SS' | 'FF' | 'SF', lag?: number }`) in addition to plain task ID strings (`string`), maintaining 100% backward compatibility.
|
|
15
|
+
- Support all four standard dependency relationships:
|
|
16
|
+
- `FS` (Finish-to-Start, default): Successor starts after predecessor finishes (`+ lag`).
|
|
17
|
+
- `SS` (Start-to-Start): Successor starts relative to predecessor start (`+ lag`).
|
|
18
|
+
- `FF` (Finish-to-Finish): Successor finishes relative to predecessor finish (`+ lag`).
|
|
19
|
+
- `SF` (Start-to-Finish): Successor finishes relative to predecessor start (`+ lag`).
|
|
20
|
+
- Support positive lag (delay) and negative lag (lead time) in minutes (`lag`).
|
|
21
|
+
- **Topological Cascade Auto-Scheduling Engine (`option.dependency.autoSchedule`)**:
|
|
22
|
+
- Added `autoSchedule?: boolean` (default: `false`), `scheduleMode?: 'push-only' | 'strict'` (default: `'push-only'`), `respectMovable?: boolean` (default: `true`), `calendarMode?: 'calendar' | 'weekends' | 'weekends-holidays'` (default: `'calendar'`), and `isHoliday?: (date: Date) => boolean` (falls back to `option.calendar.isHoliday`) to `option.dependency`.
|
|
23
|
+
- `'push-only'` mode shifts successor tasks forward only when a dependency constraint is violated, whereas `'strict'` mode locks successor dates strictly to predecessor dates plus lag.
|
|
24
|
+
- **Working-Day & Holiday-Aware Scheduling (`calendarMode`)**: When set to `'weekends'` (skip Saturdays and Sundays) or `'weekends-holidays'` (skip weekends and holidays), successor start dates automatically snap forward to the next working day, while both task working durations and dependency lag/lead times (`lag`) are calculated and preserved in working days.
|
|
25
|
+
- Automatically cascades schedule updates across downstream tasks during task bar drag/resize, multi-task batch move, keyboard `Shift + Arrow` movement, and inline grid cell editing (`startDate`, `endDate`, `duration`), recording all cascaded changes in a single atomic Undo / Redo command.
|
|
26
|
+
- Added programmatic `chart.autoSchedule(changedTaskIds?, options?)` public method on `GanttChartElement` and `@mogura/moguchart-vue` (`GanttChartPublicApi`).
|
|
27
|
+
- **Endpoint-Aware Dependency Rendering, Creation & Export**:
|
|
28
|
+
- Orthogonal (`'orthogonal'`) and Bezier (`'curve'`) SVG dependency path builders now route from and to the appropriate left (`start`) or right (`end`) task bar endpoints based on `FS`, `SS`, `FF`, and `SF` types.
|
|
29
|
+
- Dragging between left/right task bar connectors automatically infers the corresponding `type` (`'FS' | 'SS' | 'FF' | 'SF'`) and includes it in `DependencyCreateEventDetail.type`.
|
|
30
|
+
- Updated `computeCriticalPath` and `@mogura/moguchart-plugin-excel` to support `GanttDependencyLink` entries (formatting non-FS dependencies such as `1 (SS)` in Excel exports).
|
|
31
|
+
- Added `'dependency-update'` to `GanttCommandType` for Undo / Redo history tracking of dependency link edits.
|
|
32
|
+
- Exported auto-scheduling, working-day calculation, and dependency helper utilities (`propagateAutoSchedule`, `computeRequiredStartMs`, `createNonWorkingDayChecker`, `computeWorkingDurationMs`, `snapToWorkingStartMs`, `addWorkingTimeMs`, `getDependencyTaskId`, `normalizeDependencyLink`, `endpointsToDependencyType`, `dependencyTypeToEndpoints`, `createDependencyEntry`, `hasDependencyTarget`, `removeDependencyTarget`).
|
|
33
|
+
- **Dependency Line Interaction & Intra-Row Lane Layout Enhancements**:
|
|
34
|
+
- Supported `dblclick` and `contextmenu` (right-click) events on dependency line hit areas via `dependency-click` (inspect `e.detail.event.type` for `'click' | 'dblclick' | 'contextmenu'`).
|
|
35
|
+
- Improved `calculateTaskLanes` so intra-row successor tasks connected via `FS` (`lag: 0`) with touching boundary dates (`pred.end.getTime() === succ.start.getTime()`) are separated into distinct lanes, keeping the connecting dependency line visible and clickable.
|
|
36
|
+
- Refined cursor styles on dependency lines and adjusted delete button hit area radius.
|
|
37
|
+
|
|
38
|
+
### Fixed
|
|
39
|
+
|
|
40
|
+
- **Multi-Column Grid Exclusive Midnight (`00:00`) End Date Display, Duration Count & Inline Editing**:
|
|
41
|
+
- Fixed `calculateRowSummaryDates`, `formatGridCellValue`, `formatGridCellEditValue`, and `applyGridCellEdit` so day-mode tasks stored with exclusive midnight end timestamps (next day `00:00`) display inclusive calendar end dates (previous day) and accurate `durationDays` counts, while preserving exclusive midnight semantics when inline editing `endDate` or `duration`.
|
|
42
|
+
- **Multi-Task Drag-and-Drop State Delegation & Marquee Selection in Shadow DOM**:
|
|
43
|
+
- Fixed controller instance sharing between `GanttChartElement` and `DragDropController` (`TaskDragController`, `RowReorderController`) so multi-task selection is preserved and movement is applied to all selected tasks upon drop.
|
|
44
|
+
- Updated `MarqueeController` to inspect `composedPath()` and sticky row header viewport bounds, preventing unintended marquee selection activation when dragging from row headers/splitters and suppressing text selection during marquee drag.
|
|
45
|
+
- **Multi-Column Grid Tree Toggle Button Alignment**:
|
|
46
|
+
- Aligned the vertical and horizontal position of `.tree-toggle-btn` in multi-column grid mode with the classic non-grid row header.
|
|
47
|
+
- **Task Bar Resize Handle Priority & Progress Knob Hit Area**:
|
|
48
|
+
- Prioritized task duration resize handles (`.resize-handle`) over dependency connector circles (`.connector-handle`) in overlapping edge regions.
|
|
49
|
+
- Restricted the progress resize handle hit area exclusively to the bottom triangular knob so hovering or dragging the main task bar body no longer triggers accidental progress changes.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## [1.5.0] - 2026-10-17
|
|
54
|
+
|
|
55
|
+
### Added
|
|
56
|
+
|
|
57
|
+
- **Multi-Column Data Grid Support (WBS Table)**:
|
|
58
|
+
- Added new option `option.grid` to display and interact with the row header area as a full-featured multi-column data table.
|
|
59
|
+
- **Built-in Standard Columns**:
|
|
60
|
+
- `wbs`: WBS hierarchical numbering code (e.g. 1, 1.1, 1.2.1).
|
|
61
|
+
- `name`: Task / row title with embedded hierarchical tree indentation and expand/collapse toggle.
|
|
62
|
+
- `startDate` / `startMonth` / `startDateTime`: Task start date, month, or date/time (automatically computes earliest start date for summary rows and multi-task rows).
|
|
63
|
+
- `endDate` / `endMonth` / `endDateTime`: Task end date, month, or date/time (automatically computes latest end date for summary rows and multi-task rows).
|
|
64
|
+
- `duration`: Duration / work span in calendar days (or formatted hours/minutes in hourly view mode).
|
|
65
|
+
- `progress`: Task progress percentage (automatically computes duration-weighted average progress for summary rows and multi-task rows).
|
|
66
|
+
- **Automatic View-Mode Column Adaptation**:
|
|
67
|
+
- In Monthly mode (`pxPerMonth` specified), `startDate` / `endDate` headers automatically switch to `Start Month` / `End Month` (`開始月` / `終了月`) and format values as `YYYY/M` (automatically adjusting exclusive end boundary dates to display the previous month).
|
|
68
|
+
- In Hourly / Time mode (`showTime: true`), `startDate` / `endDate` headers automatically switch to `Start Date/Time` / `End Date/Time` (`開始日時` / `終了日時`), displaying timestamps and time-based duration spans.
|
|
69
|
+
- **Inline Cell Editing (`option.grid.editable`, `cell-edit`)**:
|
|
70
|
+
- Support interactive inline cell editing triggered by double-click or single-click (`editTrigger: 'dblclick' | 'click'`).
|
|
71
|
+
- Built-in editor types (`'text'`, `'number'`, `'date'`, `'datetime'`, `'month'`, `'select'`) as well as custom DOM editor factories (`editor: (context) => HTMLElement`).
|
|
72
|
+
- Configurable select options (`editorOptions`), numeric bounds (`editorMin`, `editorMax`, `editorStep`), per-row/task editability predicates (`editable`), and custom value setters (`valueSetter`).
|
|
73
|
+
- Automatic linkage with single-task editability settings (`task.resizable === false` or `task.movable === 'none'` disables date/duration editing; `task.progressResizable === false` disables progress editing).
|
|
74
|
+
- Visual distinction between editable cells (`.grid-cell-editable`: text cursor and hover highlight) and read-only cells (`.grid-cell-readonly`: dimmed background and semi-transparent text for summary/multi-task aggregated cells and WBS codes; automatically normalized during PNG/PDF export).
|
|
75
|
+
- Restricts row drag-and-drop reordering and row header tooltips in grid mode to the task name / tree cell (`.grid-cell-name`, `.grid-tree-cell`), and temporarily suppresses row reordering while inline cell editing is active to allow smooth mouse drag text selection.
|
|
76
|
+
- Dispatches `cell-edit` and `rows-change` custom events upon committing changes, with full Undo / Redo history integration (`command.type === 'cell-edit'`).
|
|
77
|
+
- Added programmatic editing control methods: `startCellEdit(rowId, columnId)`, `commitCellEdit(overrideValue?)`, and `cancelCellEdit()`.
|
|
78
|
+
- **Custom Columns & Flexible Data Mapping**:
|
|
79
|
+
- Bind arbitrary row properties using `field`, or extract and update custom values using `valueGetter(row, tasks, wbsCode)` and `valueSetter(row, newValue, tasks, column)`.
|
|
80
|
+
- Format text outputs with `formatter(value, row, tasks, locale)`, or render rich `HTMLElement` / HTML strings with `renderCell(value, row, tasks, locale)`.
|
|
81
|
+
- **Two-Tier Corner Header Coexistence**:
|
|
82
|
+
- When both `option.grid` and `customRendering.cornerContent` are configured, the top-left corner automatically renders in a 2-tier layout with `cornerContent` in the upper row and grid column headers in the lower row.
|
|
83
|
+
- **Interactive Column Drag Resizing (`column-resize`)**:
|
|
84
|
+
- Intuitive drag-to-resize handles on column headers. Fires `column-resize` custom events during and upon completing resize operations, preserving user-resized widths across row interactions while also tracking programmatic `option.grid.columns` width updates.
|
|
85
|
+
- **Splitter Resizing & Synchronized Independent Grid Horizontal Scrolling**:
|
|
86
|
+
- Seamlessly works with the split pane resizer dividing the grid and timeline areas.
|
|
87
|
+
- When column widths exceed the grid area width, independent horizontal scrolling activates via trackpad swipe, `Shift + wheel`, or vertical wheel scrolling over the grid header area, with pixel-perfect synchronization (`transform: translateX(-gridScrollLeft)`) across header and row cells.
|
|
88
|
+
- **React / Vue Wrapper & Exported Utility Enhancements**:
|
|
89
|
+
- Added `onColumnResize`, `onCellEdit`, and `onRowsChange` event props to `@mogura/moguchart-react`.
|
|
90
|
+
- Added `@column-resize`, `@cell-edit`, and `@rows-change` emits plus `startCellEdit`, `commitCellEdit`, and `cancelCellEdit` public methods to `@mogura/moguchart-vue`.
|
|
91
|
+
- Exported grid calculation and editing helper utilities (`calculateRowSummaryDates`, `normalizeGridColumns`, `getGridCellValue`, `formatGridCellValue`, `resolveColumnEditorType`, `isGridCellEditable`, `formatGridCellEditValue`, `applyGridCellEdit`).
|
|
92
|
+
- **Multi-language (i18n) Synchronization & Complete Backward Compatibility**:
|
|
93
|
+
- Built-in Japanese (`jaLocale`) and English (`enLocale`) column headers and duration units adapt automatically to the active chart locale.
|
|
94
|
+
- When `option.grid` is omitted or disabled, the chart operates in classic single-header row name mode with zero breaking changes.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
8
98
|
## [1.4.0] - 2026-10-11
|
|
9
99
|
|
|
10
100
|
### Added
|
package/README.ja.md
CHANGED
|
@@ -28,9 +28,11 @@ Vue, React, Angular, Svelte など、どのフレームワークでも動作す
|
|
|
28
28
|
- ライト/ダーク/システムテーマの切り替え+カスタムカラーテーマ
|
|
29
29
|
- タスクバーの塗りつぶしパターン(ストライプ、ドット、チェッカーボードなど13種類)
|
|
30
30
|
- CSSによるスタイリング
|
|
31
|
-
- 🔗
|
|
32
|
-
-
|
|
33
|
-
-
|
|
31
|
+
- 🔗 **依存関係の対話的操作 & 自動スケジューリング**:
|
|
32
|
+
- 4種類の標準依存関係タイプ(`FS`: 終了-開始、`SS`: 開始-開始、`FF`: 終了-終了、`SF`: 開始-終了)およびラグ・リード期間(`lag`: 分単位)を `GanttDependencyLink` で指定可能(文字列タスクIDとも100%後方互換)
|
|
33
|
+
- トポロジカルソートによる **自動スケジューリング(Auto-Scheduling)** に対応(`autoSchedule`, `scheduleMode: 'push-only' | 'strict'`, `respectMovable`, `calendarMode: 'calendar' | 'weekends' | 'weekends-holidays'`, `isHoliday`)。営業日ベース(土日除外・土日祝日除外)での非稼働日スキップと実稼働期間・ラグ維持、ドラッグ移動・リサイズ、複数選択移動、キーボード移動、グリッドのインラインセル編集、および `chart.autoSchedule()` メソッドと完全連動
|
|
34
|
+
- タスク間の依存関係を矢印付き直線・曲線(直角折れ線/ベジェ曲線)で左右端エンドポイントに応じて可視化
|
|
35
|
+
- 依存関係線のクリック選択・ハイライト表示に加え、ダブルクリック(`dblclick`)・右クリック(`contextmenu`)イベントにも対応
|
|
34
36
|
- 選択中の線上の削除「×」ボタンまたは `Delete` / `Backspace` キーによるワンクリック削除
|
|
35
37
|
- クリティカルパス(最長チェーン)の自動検出+ハイライト表示
|
|
36
38
|
- 📅 **柔軟なカレンダー**:
|
|
@@ -79,6 +81,14 @@ Vue, React, Angular, Svelte など、どのフレームワークでも動作す
|
|
|
79
81
|
- WBSサマリータスクにおける配下子タスクの計画日程・進捗率の自動集計
|
|
80
82
|
- 全体鳥瞰ミニマップ(2D Canvas)との同期描画
|
|
81
83
|
- タスク遅延計算(`calculateTaskDelay`)およびプロジェクト予実統計集計(`calculateProjectBaselineSummary`)関数
|
|
84
|
+
- 📋 **マルチカラムデータグリッド(WBS テーブル)**:
|
|
85
|
+
- 行ヘッダー領域を本格的な複数列のテーブルとして表示・操作
|
|
86
|
+
- 標準組み込みカラム(WBS番号 `wbs`、タスク名 `name`、開始日・開始月・開始日時 `startDate`/`startMonth`/`startDateTime`、終了日・終了月・終了日時 `endDate`/`endMonth`/`endDateTime`、期間 `duration`、進捗率 `progress`)および表示モード(日・週・月・時間)に応じた自動ヘッダー名・フォーマット切り替え
|
|
87
|
+
- サマリー行・複数タスク行の最小開始日〜最大終了日、カレンダー期間、加重平均進捗率を自動算出
|
|
88
|
+
- **インラインセル編集**(`option.grid.editable: true`):ダブルクリックまたはクリックによる直接編集、`text` / `number` / `date` / `datetime` / `month` / `select` の組み込みエディタおよびカスタムエディタ関数、単一タスクの `movable` / `resizable` / `progressResizable` 設定との自動連動、編集可能セル(`.grid-cell-editable`)と読み取り専用セル(`.grid-cell-readonly`)の視覚的区別、Undo/Redo 履歴連動、`cell-edit` イベントに対応
|
|
89
|
+
- カスタムカラム(`field`、`valueGetter`、`valueSetter`、`formatter`、`renderCell` によるHTML/DOMの直接描画)および `customRendering.cornerContent` との上下2段レイアウト共存
|
|
90
|
+
- カラム境界ドラッグによる幅のリサイズ(`column-resize` イベント)
|
|
91
|
+
- グリッド領域とタイムライン領域のスプリッターリサイズ&グリッド内独立横スクロール同期(トラックパッド横スワイプ、Shift+ホイール、ヘッダー上のホイールに対応)
|
|
82
92
|
- ⌨️ **キーボード操作**: 矢印キーでのナビゲーション・選択・Shift+矢印キーでのタスク移動・Deleteキーでのタスク/依存関係線削除・Undo/Redo・ズームショートカット
|
|
83
93
|
|
|
84
94
|
## パッケージ一覧(エコシステム)
|
|
@@ -118,7 +128,7 @@ pnpm add @mogura/moguchart-vue @mogura/moguchart-core
|
|
|
118
128
|
|
|
119
129
|
## React での使用例(公式ラッパー)
|
|
120
130
|
|
|
121
|
-
[`@mogura/moguchart-react`](
|
|
131
|
+
[`@mogura/moguchart-react`](../react/README.ja.md) を使用すると、React の合成イベントや Props、`ref` を通じた命令的メソッド呼び出しが完全に型安全に動作します:
|
|
122
132
|
|
|
123
133
|
```tsx
|
|
124
134
|
import React, { useRef } from 'react'
|
|
@@ -194,7 +204,7 @@ export default function App() {
|
|
|
194
204
|
|
|
195
205
|
## Vue 3 での使用例(公式ラッパー)
|
|
196
206
|
|
|
197
|
-
[`@mogura/moguchart-vue`](
|
|
207
|
+
[`@mogura/moguchart-vue`](../vue/README.ja.md) を使用すると、Composition API(`<script setup>`)でリアクティブな Props や Vue 標準のイベントハンドリング(`@task-update` 等)を直感的に扱えます:
|
|
198
208
|
|
|
199
209
|
```vue
|
|
200
210
|
<script setup lang="ts">
|
|
@@ -503,13 +513,32 @@ gantt-chart {
|
|
|
503
513
|
|
|
504
514
|
フォント倍率はカレンダーヘッダー(年月・週・日・時・バッジ)、行ヘッダー、WBSコードバッジ、ツリー開閉トグル、タスクバーラベル、進捗率ラベル、マーカー、ツールチップ、ドラッグ情報オーバーレイに自動反映されます。
|
|
505
515
|
|
|
506
|
-
### 依存関係線の設定
|
|
516
|
+
### 依存関係線の設定 & 自動スケジューリング
|
|
507
517
|
|
|
508
|
-
`dependency`
|
|
509
|
-
|
|
510
|
-
|
|
518
|
+
`dependency` オプションで依存関係線の表示や操作、および先行タスク変更時の自動スケジューリング(カスケード移動)をカスタマイズできます。
|
|
519
|
+
|
|
520
|
+
- `task.dependencies` の各要素には、シンプルなタスクID文字列(`'task-1'`:`FS` / ラグ `0` として扱われます)または拡張オブジェクト `GanttDependencyLink`(`{ taskId: 'task-1', type: 'FS' | 'SS' | 'FF' | 'SF', lag: 1440 }`、`lag` は分単位)を指定できます。
|
|
521
|
+
- 線のクリック・ダブルクリック・右クリック(`dependency-click`)、選択(`dependency-select`)、選択時の削除「×」ボタンや `Delete` / `Backspace` キーによる直感的な削除に対応しています。
|
|
511
522
|
|
|
512
523
|
```javascript
|
|
524
|
+
const rows = [
|
|
525
|
+
{
|
|
526
|
+
id: 'row-1',
|
|
527
|
+
name: 'バックエンド開発',
|
|
528
|
+
tasks: [
|
|
529
|
+
{ id: 't-1', name: 'スキーマ設計', start: new Date('2026-04-01'), end: new Date('2026-04-05') },
|
|
530
|
+
{
|
|
531
|
+
id: 't-2',
|
|
532
|
+
name: 'API実装',
|
|
533
|
+
start: new Date('2026-04-06'),
|
|
534
|
+
end: new Date('2026-04-12'),
|
|
535
|
+
// タスクID文字列、または GanttDependencyLink ({ taskId, type: 'FS' | 'SS' | 'FF' | 'SF', lag }) を指定可能
|
|
536
|
+
dependencies: [{ taskId: 't-1', type: 'FS', lag: 1440 }], // +1日 (1440分) のラグ
|
|
537
|
+
},
|
|
538
|
+
],
|
|
539
|
+
},
|
|
540
|
+
]
|
|
541
|
+
|
|
513
542
|
const option = {
|
|
514
543
|
dependency: {
|
|
515
544
|
lineStyle: 'orthogonal', // 接続線の形状 ('orthogonal': 角丸直角折れ線, 'curve': ベジェ曲線)
|
|
@@ -521,10 +550,18 @@ const option = {
|
|
|
521
550
|
creatable: true, // コネクタからのドラッグによる依存関係作成を許可 (デフォルト: true)
|
|
522
551
|
deletable: true, // 依存関係の削除を許可 (デフォルト: true)
|
|
523
552
|
showDeleteButton: true, // 選択時の削除「×」ボタンを表示 (デフォルト: true)
|
|
553
|
+
autoSchedule: true, // 先行タスク変更時に後続タスクを自動カスケード移動 (デフォルト: false)
|
|
554
|
+
scheduleMode: 'push-only', // 'push-only' (制約違反時のみ押し出し) | 'strict' (常に厳密追従)
|
|
555
|
+
respectMovable: true, // movable: 'none' | 'y' のタスクを自動移動対象から除外 (デフォルト: true)
|
|
556
|
+
calendarMode: 'weekends-holidays', // 'calendar' (暦日, デフォルト) | 'weekends' (土日除外) | 'weekends-holidays' (土日・祝日除外)
|
|
557
|
+
// isHoliday: (date) => false, // 祝日判定関数(省略時は option.calendar.isHoliday を使用)
|
|
524
558
|
},
|
|
525
559
|
// ...
|
|
526
560
|
}
|
|
527
561
|
|
|
562
|
+
// プログラムから全依存関係または指定タスク起点で自動スケジューリングを実行
|
|
563
|
+
const updatedTaskIds = chart.autoSchedule()
|
|
564
|
+
|
|
528
565
|
// 依存関係の選択・削除イベント
|
|
529
566
|
chart.addEventListener('dependency-select', (e) => {
|
|
530
567
|
console.log('選択された依存関係:', e.detail.selected)
|
|
@@ -777,6 +814,72 @@ const summary = calculateProjectBaselineSummary(rows)
|
|
|
777
814
|
console.log(`計画タスク数: ${summary.totalBaselineTasks}, 遅延タスク数: ${summary.delayedTasksCount}, 最大遅延: ${summary.maxDelayDays}日`)
|
|
778
815
|
```
|
|
779
816
|
|
|
817
|
+
### マルチカラムデータグリッド(WBSテーブル & インライン編集)
|
|
818
|
+
|
|
819
|
+
行ヘッダー領域を本格的な複数カラムのテーブルとして表示できます。WBS階層コード、タスク名、期間、進捗率、カスタム列を柔軟に構成できるほか、`editable: true` を設定することでセルのダブルクリック(またはクリック)によるインライン編集が可能です(編集可能セルには `.grid-cell-editable`、サマリー行や複数タスク行の集計セル・`wbs` 列などの読み取り専用セルには `.grid-cell-readonly` クラスが付与され視覚的に区別されます。単一タスク行の日付・期間・進捗セルはタスクの `movable` / `resizable` / `progressResizable` 設定とも自動連動します)。
|
|
820
|
+
|
|
821
|
+
表示モードに応じて、`startDate` / `endDate` の列タイトルや表示フォーマット・エディタ種別は自動的に切り替わります(月単位モード時は「開始月」「終了月」、時間単位モード時は「開始日時」「終了日時」)。また、`customRendering.cornerContent` と併用した場合は、左上コーナー領域の上段に `cornerContent`、下段にグリッドカラムヘッダーが2段構成で表示されます。
|
|
822
|
+
|
|
823
|
+
```javascript
|
|
824
|
+
const option = {
|
|
825
|
+
// グリッド表示設定
|
|
826
|
+
grid: {
|
|
827
|
+
enabled: true, // グリッド表示を有効化 (デフォルト: columns 指定時は true)
|
|
828
|
+
width: 700, // グリッド領域全体の初期幅 (px)
|
|
829
|
+
splitterResizable: true, // スプリッターによるグリッド幅変更を許可 (デフォルト: true)
|
|
830
|
+
showBorders: true, // セル罫線を表示 (デフォルト: true)
|
|
831
|
+
editable: true, // セルのインライン編集を有効化 (デフォルト: false)
|
|
832
|
+
editTrigger: 'dblclick', // 編集開始トリガー ('dblclick' | 'click'、デフォルト: 'dblclick')
|
|
833
|
+
columns: [
|
|
834
|
+
{ id: 'wbs', width: 60 }, // WBS番号 (1, 1.1, 1.2 など)
|
|
835
|
+
{ id: 'name', width: 220 }, // タスク名 (ツリー開閉トグル付き・テキスト編集)
|
|
836
|
+
{ id: 'startDate', width: 125 }, // 開始日 (日/月/日時エディタに自動連動)
|
|
837
|
+
{ id: 'endDate', width: 125 }, // 終了日 (日/月/日時エディタに自動連動)
|
|
838
|
+
{ id: 'duration', width: 80 }, // 期間 (数値エディタ)
|
|
839
|
+
{ id: 'progress', width: 70 }, // 進捗率 (0〜100% 数値エディタ)
|
|
840
|
+
{
|
|
841
|
+
id: 'assignee',
|
|
842
|
+
title: '担当者',
|
|
843
|
+
width: 100,
|
|
844
|
+
field: 'assignee', // row.assignee を参照・更新
|
|
845
|
+
editor: 'select', // 'text' | 'number' | 'date' | 'datetime' | 'month' | 'select' またはカスタム関数
|
|
846
|
+
editorOptions: [
|
|
847
|
+
{ label: '山田', value: '山田' },
|
|
848
|
+
{ label: '佐藤', value: '佐藤' },
|
|
849
|
+
{ label: '鈴木', value: '鈴木' },
|
|
850
|
+
],
|
|
851
|
+
renderCell: (value) => {
|
|
852
|
+
// カスタムDOM要素のレンダリング
|
|
853
|
+
const badge = document.createElement('span')
|
|
854
|
+
badge.className = 'badge'
|
|
855
|
+
badge.textContent = value || '未設定'
|
|
856
|
+
return badge
|
|
857
|
+
},
|
|
858
|
+
},
|
|
859
|
+
],
|
|
860
|
+
},
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
// セルのインライン編集確定イベントの購読
|
|
864
|
+
chart.addEventListener('cell-edit', (event) => {
|
|
865
|
+
const { rowId, columnId, oldValue, newValue, row, rows } = event.detail
|
|
866
|
+
console.log(`行 ${rowId} の ${columnId} が更新されました:`, oldValue, '->', newValue)
|
|
867
|
+
})
|
|
868
|
+
|
|
869
|
+
// カラム幅リサイズイベントの購読
|
|
870
|
+
chart.addEventListener('column-resize', (event) => {
|
|
871
|
+
const { columnId, width, previousWidth, isFinal } = event.detail
|
|
872
|
+
if (isFinal) {
|
|
873
|
+
console.log(`カラム ${columnId} の幅が ${width}px に変更されました`)
|
|
874
|
+
}
|
|
875
|
+
})
|
|
876
|
+
|
|
877
|
+
// プログラムからのセル編集制御
|
|
878
|
+
chart.startCellEdit('row-1', 'name') // 編集開始
|
|
879
|
+
chart.commitCellEdit('新しいタスク名') // 編集確定
|
|
880
|
+
chart.cancelCellEdit() // 編集キャンセル
|
|
881
|
+
```
|
|
882
|
+
|
|
780
883
|
### パブリックメソッド
|
|
781
884
|
|
|
782
885
|
#### selectTask
|
|
@@ -958,12 +1061,16 @@ chart.addEventListener('history-change', (e) => {
|
|
|
958
1061
|
})
|
|
959
1062
|
```
|
|
960
1063
|
|
|
961
|
-
#### 依存関係の削除 (triggerDependencyDelete)
|
|
1064
|
+
#### 依存関係の削除 & 自動スケジューリング (`triggerDependencyDelete` / `autoSchedule`)
|
|
962
1065
|
|
|
963
|
-
|
|
1066
|
+
プログラムから特定の依存関係線を削除したり、依存関係に基づく後続タスクの自動スケジューリングを実行できます。
|
|
964
1067
|
|
|
965
1068
|
```javascript
|
|
966
1069
|
chart.triggerDependencyDelete('task-1', 'task-2')
|
|
1070
|
+
|
|
1071
|
+
// 依存関係に基づき後続タスクの日程を一括再計算(更新されたタスクID配列を返す)
|
|
1072
|
+
const updatedIds = chart.autoSchedule()
|
|
1073
|
+
const cascadedFromTask1 = chart.autoSchedule(['task-1'], { mode: 'strict' })
|
|
967
1074
|
```
|
|
968
1075
|
|
|
969
1076
|
#### WBS・折りたたみ操作 (toggleRowCollapse / collapseAll / expandAll)
|
|
@@ -1003,11 +1110,37 @@ import {
|
|
|
1003
1110
|
canDropRow,
|
|
1004
1111
|
// クリティカルパス計算
|
|
1005
1112
|
computeCriticalPath,
|
|
1113
|
+
// 自動スケジューリング・依存関係ヘルパー
|
|
1114
|
+
propagateAutoSchedule,
|
|
1115
|
+
computeRequiredStartMs,
|
|
1116
|
+
createNonWorkingDayChecker,
|
|
1117
|
+
computeWorkingDurationMs,
|
|
1118
|
+
snapToWorkingStartMs,
|
|
1119
|
+
addWorkingTimeMs,
|
|
1120
|
+
getDependencyTaskId,
|
|
1121
|
+
normalizeDependencyLink,
|
|
1122
|
+
endpointsToDependencyType,
|
|
1123
|
+
dependencyTypeToEndpoints,
|
|
1124
|
+
createDependencyEntry,
|
|
1125
|
+
hasDependencyTarget,
|
|
1126
|
+
removeDependencyTarget,
|
|
1006
1127
|
// 進捗率計算
|
|
1007
1128
|
clampProgress,
|
|
1008
1129
|
calculateRowProgress,
|
|
1009
1130
|
calculateWeightedRowProgress,
|
|
1010
1131
|
calculateProjectProgress,
|
|
1132
|
+
// 予実管理(ベースライン)計算
|
|
1133
|
+
calculateTaskDelay,
|
|
1134
|
+
calculateProjectBaselineSummary,
|
|
1135
|
+
// マルチカラムグリッド計算・インライン編集ヘルパー
|
|
1136
|
+
calculateRowSummaryDates,
|
|
1137
|
+
normalizeGridColumns,
|
|
1138
|
+
getGridCellValue,
|
|
1139
|
+
formatGridCellValue,
|
|
1140
|
+
resolveColumnEditorType,
|
|
1141
|
+
isGridCellEditable,
|
|
1142
|
+
formatGridCellEditValue,
|
|
1143
|
+
applyGridCellEdit,
|
|
1011
1144
|
} from '@mogura/moguchart-core'
|
|
1012
1145
|
|
|
1013
1146
|
// 1. 各行のツリー階層レベル(深さ)の計算
|
|
@@ -1031,6 +1164,9 @@ const isSafe = canDropRow('source-row-id', 'target-row-id', rows) // boolean
|
|
|
1031
1164
|
|
|
1032
1165
|
// 7. クリティカルパス(最長依存関係チェーン)の計算
|
|
1033
1166
|
const criticalTaskIds = computeCriticalPath(allTasks) // Set<string>
|
|
1167
|
+
|
|
1168
|
+
// 8. 行内のタスク配列から最小開始日・最大終了日・期間日数・期間(ミリ秒)・加重平均進捗率を算出
|
|
1169
|
+
const summaryDates = calculateRowSummaryDates(rows[0].tasks) // { start, end, durationDays, durationMs, progress }
|
|
1034
1170
|
```
|
|
1035
1171
|
|
|
1036
1172
|
### キーボード操作
|
|
@@ -1071,9 +1207,9 @@ const option = {
|
|
|
1071
1207
|
|
|
1072
1208
|
## 更新履歴
|
|
1073
1209
|
|
|
1074
|
-
変更履歴の詳細は [CHANGELOG.ja.md](CHANGELOG.ja.md)([英語版: CHANGELOG.md](CHANGELOG.md))をご覧ください。
|
|
1210
|
+
変更履歴の詳細は [CHANGELOG.ja.md](../../CHANGELOG.ja.md)([英語版: CHANGELOG.md](../../CHANGELOG.md))をご覧ください。
|
|
1075
1211
|
|
|
1076
1212
|
## ライセンス
|
|
1077
1213
|
|
|
1078
|
-
MIT
|
|
1214
|
+
[MIT License](./LICENSE)
|
|
1079
1215
|
|