@object-ui/plugin-gantt 17.3.0 → 17.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.md +668 -0
- package/README.md +350 -127
- package/dist/GanttView.d.ts +50 -36
- package/dist/GanttView.d.ts.map +1 -1
- package/dist/ObjectGantt.d.ts +2 -2
- package/dist/ObjectGantt.d.ts.map +1 -1
- package/dist/QuickFilterBar.d.ts +16 -4
- package/dist/QuickFilterBar.d.ts.map +1 -1
- package/dist/ResourceWorkload.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1136 -1098
- package/dist/index.umd.cjs +12 -11
- package/dist/scheduling.d.ts +7 -7
- package/dist/shifts.d.ts +16 -13
- package/dist/shifts.d.ts.map +1 -1
- package/dist/useGanttTranslation.d.ts.map +1 -1
- package/dist/workload.d.ts +1 -1
- package/package.json +13 -13
package/dist/scheduling.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* passes) to find the zero-slack chain that drives the project end.
|
|
7
7
|
* - `computeProjectReschedule` — dependency-driven forward shifting: push
|
|
8
8
|
* successors later until every link constraint holds, preserving each
|
|
9
|
-
* task's duration. Tasks are only ever moved *later* (
|
|
9
|
+
* task's duration. Tasks are only ever moved *later* (forward-only), never pulled
|
|
10
10
|
* earlier, so the result is a minimal repair, not an ASAP recompute.
|
|
11
11
|
*
|
|
12
12
|
* Both treat the dependency on a task as a *predecessor* edge: if task B lists
|
|
@@ -43,7 +43,7 @@ export interface SchedulableTask {
|
|
|
43
43
|
parent?: string | number | null;
|
|
44
44
|
type?: string;
|
|
45
45
|
/**
|
|
46
|
-
* Row-level lock (
|
|
46
|
+
* Row-level lock (view-only row). A locked task is never moved by the reschedule;
|
|
47
47
|
* when it VIOLATES a link it is reported in `skippedLocked` instead.
|
|
48
48
|
*/
|
|
49
49
|
locked?: boolean;
|
|
@@ -87,9 +87,9 @@ export interface RescheduleOptions {
|
|
|
87
87
|
*/
|
|
88
88
|
summaryExtent?: 'children' | 'self';
|
|
89
89
|
/**
|
|
90
|
-
* Snap a computed start instant onto a grid — e.g. shift-band boundaries
|
|
91
|
-
*
|
|
92
|
-
*
|
|
90
|
+
* Snap a computed start instant onto a grid — e.g. shift-band boundaries, so
|
|
91
|
+
* a pushed task never starts mid-band. Must return an instant `>=` the input
|
|
92
|
+
* (this is forward-only; snapping may only push later).
|
|
93
93
|
* Applied only to tasks that actually move, and only in non-calendar mode
|
|
94
94
|
* (a WorkingCalendar already owns the day-granularity snapping).
|
|
95
95
|
*/
|
|
@@ -99,7 +99,7 @@ export interface RescheduleResult {
|
|
|
99
99
|
changes: RescheduleChange[];
|
|
100
100
|
/**
|
|
101
101
|
* Tasks that VIOLATE a link but stayed put because they are locked
|
|
102
|
-
* (
|
|
102
|
+
* (view-only rows). Lets the UI report "N skipped" honestly instead of implying
|
|
103
103
|
* the schedule is fully repaired.
|
|
104
104
|
*/
|
|
105
105
|
skippedLocked: string[];
|
|
@@ -112,7 +112,7 @@ export interface RescheduleResult {
|
|
|
112
112
|
* Summary handling follows {@link RescheduleOptions.summaryExtent}: rollup
|
|
113
113
|
* summaries are fixed predecessor nodes; self-dated summaries move and carry
|
|
114
114
|
* their unlocked subtree (a descendant already pushed further by its own
|
|
115
|
-
* links keeps the later position —
|
|
115
|
+
* links keeps the later position — forward-only, so max wins). The cascade is a
|
|
116
116
|
* single forward pass: carried positions don't re-propagate through links,
|
|
117
117
|
* matching the function's minimal-repair pragmatism (no constraint solver).
|
|
118
118
|
*
|
package/dist/shifts.d.ts
CHANGED
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Shift segmentation (
|
|
2
|
+
* Shift segmentation (shift bands / rostering) for the Gantt — pure,
|
|
3
|
+
* side-effect-free helpers.
|
|
3
4
|
*
|
|
4
|
-
* A factory's day is split into named time bands (
|
|
5
|
-
* 20:00
|
|
6
|
-
* band is just a recurring time window; this module turns a
|
|
7
|
-
* into a normalized model the renderer can lay columns and
|
|
5
|
+
* A factory's day is split into named time bands (day shift 08:00–20:00, night
|
|
6
|
+
* shift 20:00–08:00 the next day). The Gantt is positioned in continuous
|
|
7
|
+
* milliseconds, so a band is just a recurring time window; this module turns a
|
|
8
|
+
* declarative config into a normalized model the renderer can lay columns and
|
|
9
|
+
* snap drags against.
|
|
8
10
|
*
|
|
9
11
|
* Two ideas make cross-midnight shifts a non-problem:
|
|
10
12
|
*
|
|
11
|
-
* - **Shift-day
|
|
13
|
+
* - **Shift-day:** the "day" column does NOT start at calendar
|
|
12
14
|
* midnight but at the configured `dayStart` (e.g. 08:00) and runs a full 24h
|
|
13
15
|
* to the next `dayStart`. A night shift that crosses 00:00 therefore sits
|
|
14
16
|
* wholly inside one shift-day column instead of straddling two date cells.
|
|
15
17
|
*
|
|
16
18
|
* - **Attribution by start:** a record belongs to the shift-day that contains
|
|
17
|
-
* its START instant.
|
|
18
|
-
* it ends 6/5 08:00. {@link shiftDayStart} / {@link bandAt} encode
|
|
19
|
+
* its START instant. A night shift starting 6/4 20:00 belongs to 6/4 even
|
|
20
|
+
* though it ends 6/5 08:00. {@link shiftDayStart} / {@link bandAt} encode
|
|
21
|
+
* this.
|
|
19
22
|
*
|
|
20
23
|
* Bands are laid out by *cumulative duration* from `dayStart`, never by absolute
|
|
21
24
|
* clock math, so a band whose `end` < `start` (crosses midnight) needs no
|
|
@@ -26,7 +29,7 @@ declare const MS_PER_DAY: number;
|
|
|
26
29
|
export interface ShiftBandConfig {
|
|
27
30
|
/** Stable identifier (e.g. 'day' / 'night'); defaults to `band{index}`. */
|
|
28
31
|
key?: string;
|
|
29
|
-
/** Display label (
|
|
32
|
+
/** Display label ('Day shift' / 'Night shift') — already localized by the caller. */
|
|
30
33
|
label: string;
|
|
31
34
|
/** Band start, 'HH:mm' (24h). */
|
|
32
35
|
start: string;
|
|
@@ -39,13 +42,13 @@ export interface ShiftBandConfig {
|
|
|
39
42
|
export interface ShiftSegmentsConfig {
|
|
40
43
|
/**
|
|
41
44
|
* Clock time the shift-day begins, 'HH:mm'. The day column starts here and
|
|
42
|
-
* runs 24h. Defaults to '00:00' (calendar day). For
|
|
45
|
+
* runs 24h. Defaults to '00:00' (calendar day). For an 08:00 handover set '08:00'.
|
|
43
46
|
*/
|
|
44
47
|
dayStart?: string;
|
|
45
48
|
/** Ordered bands covering the 24h shift-day, beginning at `dayStart`. */
|
|
46
49
|
bands: ShiftBandConfig[];
|
|
47
50
|
/**
|
|
48
|
-
* Draw the dashed calendar-midnight (
|
|
51
|
+
* Draw the dashed calendar-midnight (00:00) cue inside cross-midnight
|
|
49
52
|
* bands. Defaults to `true`; set `false` to hide it.
|
|
50
53
|
*/
|
|
51
54
|
showMidnight?: boolean;
|
|
@@ -86,8 +89,8 @@ export declare function shiftDayStart(date: Date, dayStartMin: number): Date;
|
|
|
86
89
|
/**
|
|
87
90
|
* The band a START instant falls into, by cumulative duration from its
|
|
88
91
|
* shift-day start. Used both to tint/label columns and to derive the band of a
|
|
89
|
-
* record (the
|
|
90
|
-
* model.
|
|
92
|
+
* record (the night/day band of `startDateField`). Returns null only for an
|
|
93
|
+
* empty model.
|
|
91
94
|
*/
|
|
92
95
|
export declare function bandAt(date: Date, seg: NormShiftSegments): NormShiftBand | null;
|
|
93
96
|
export { MS_PER_DAY as SHIFT_MS_PER_DAY };
|
package/dist/shifts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shifts.d.ts","sourceRoot":"","sources":["../src/shifts.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"shifts.d.ts","sourceRoot":"","sources":["../src/shifts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,QAAA,MAAM,UAAU,QAAuB,CAAC;AAGxC,uDAAuD;AACvD,MAAM,WAAW,eAAe;IAC9B,2EAA2E;IAC3E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qFAAqF;IACrF,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,GAAG,EAAE,MAAM,CAAC;IACZ,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,gFAAgF;AAChF,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,iEAAiE;AACjE,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAChC,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,sEAAsE;IACtE,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,sEAAsE;AACtE,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAQzE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,mBAAmB,GAAG,IAAI,GAAG,SAAS,GAC1C,iBAAiB,GAAG,IAAI,CAkB1B;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAMnE;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,iBAAiB,GAAG,aAAa,GAAG,IAAI,CAU/E;AAED,OAAO,EAAE,UAAU,IAAI,gBAAgB,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGanttTranslation.d.ts","sourceRoot":"","sources":["../src/useGanttTranslation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"useGanttTranslation.d.ts","sourceRoot":"","sources":["../src/useGanttTranslation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA6F7D,CAAC;AA4BF,wBAAgB,mBAAmB;aAqBjB,MAAM,YAAY,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,MAAM;;EAMnE"}
|
package/dist/workload.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* LICENSE file in the root directory of this source tree.
|
|
7
7
|
*/
|
|
8
8
|
/**
|
|
9
|
-
* Resource / workload model
|
|
9
|
+
* Resource / workload model.
|
|
10
10
|
*
|
|
11
11
|
* Pure, framework-free aggregation that turns a flat task list into a
|
|
12
12
|
* per-resource, per-time-column load histogram. The renderer (ResourceWorkload)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@object-ui/plugin-gantt",
|
|
3
|
-
"version": "17.
|
|
3
|
+
"version": "17.6.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "Gantt chart plugin for Object UI",
|
|
@@ -24,16 +24,16 @@
|
|
|
24
24
|
}
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@objectstack/spec": "^17.0.0
|
|
28
|
-
"lucide-react": "^1.
|
|
29
|
-
"sonner": "^2.0.
|
|
30
|
-
"@object-ui/components": "17.
|
|
31
|
-
"@object-ui/core": "17.
|
|
32
|
-
"@object-ui/fields": "17.
|
|
33
|
-
"@object-ui/i18n": "17.
|
|
34
|
-
"@object-ui/plugin-detail": "17.
|
|
35
|
-
"@object-ui/react": "17.
|
|
36
|
-
"@object-ui/types": "17.
|
|
27
|
+
"@objectstack/spec": "^17.0.0",
|
|
28
|
+
"lucide-react": "^1.31.0",
|
|
29
|
+
"sonner": "^2.0.8",
|
|
30
|
+
"@object-ui/components": "17.6.0",
|
|
31
|
+
"@object-ui/core": "17.6.0",
|
|
32
|
+
"@object-ui/fields": "17.6.0",
|
|
33
|
+
"@object-ui/i18n": "17.6.0",
|
|
34
|
+
"@object-ui/plugin-detail": "17.6.0",
|
|
35
|
+
"@object-ui/react": "17.6.0",
|
|
36
|
+
"@object-ui/types": "17.6.0"
|
|
37
37
|
},
|
|
38
38
|
"peerDependencies": {
|
|
39
39
|
"react": "^18.0.0 || ^19.0.0",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"@types/react-dom": "19.2.4",
|
|
45
45
|
"@vitejs/plugin-react": "^6.0.5",
|
|
46
46
|
"typescript": "^6.0.3",
|
|
47
|
-
"vite": "^8.2.
|
|
47
|
+
"vite": "^8.2.1",
|
|
48
48
|
"vite-plugin-dts": "^5.0.3"
|
|
49
49
|
},
|
|
50
50
|
"keywords": [
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"build": "vite build",
|
|
75
75
|
"test": "vitest run",
|
|
76
76
|
"test:watch": "vitest",
|
|
77
|
-
"type-check": "tsc --noEmit",
|
|
77
|
+
"type-check": "tsc --noEmit && tsc -p tsconfig.test.json",
|
|
78
78
|
"lint": "eslint ."
|
|
79
79
|
}
|
|
80
80
|
}
|