@elaraai/e3-ui 1.0.94 → 1.0.95
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/dist/src/allocation/adapters.d.ts +159 -0
- package/dist/src/allocation/adapters.d.ts.map +1 -0
- package/dist/src/allocation/adapters.js +241 -0
- package/dist/src/allocation/adapters.js.map +1 -0
- package/dist/src/allocation/functions.d.ts +664 -0
- package/dist/src/allocation/functions.d.ts.map +1 -0
- package/dist/src/allocation/functions.js +782 -0
- package/dist/src/allocation/functions.js.map +1 -0
- package/dist/src/allocation/index.d.ts +2985 -0
- package/dist/src/allocation/index.d.ts.map +1 -0
- package/dist/src/allocation/index.js +499 -0
- package/dist/src/allocation/index.js.map +1 -0
- package/dist/src/allocation/types.d.ts +832 -0
- package/dist/src/allocation/types.d.ts.map +1 -0
- package/dist/src/allocation/types.js +360 -0
- package/dist/src/allocation/types.js.map +1 -0
- package/dist/src/bind/func.d.ts +14 -0
- package/dist/src/bind/func.d.ts.map +1 -1
- package/dist/src/bind/func.js +22 -1
- package/dist/src/bind/func.js.map +1 -1
- package/dist/src/calendar/index.d.ts +510 -1639
- package/dist/src/calendar/index.d.ts.map +1 -1
- package/dist/src/calendar/index.js +56 -29
- package/dist/src/calendar/index.js.map +1 -1
- package/dist/src/flowchart/canvas.d.ts +9 -21
- package/dist/src/flowchart/canvas.d.ts.map +1 -1
- package/dist/src/flowchart/canvas.js +10 -22
- package/dist/src/flowchart/canvas.js.map +1 -1
- package/dist/src/flowchart/flowchart.d.ts +19 -13
- package/dist/src/flowchart/flowchart.d.ts.map +1 -1
- package/dist/src/flowchart/flowchart.js.map +1 -1
- package/dist/src/flowchart/index.d.ts +44 -21
- package/dist/src/flowchart/index.d.ts.map +1 -1
- package/dist/src/flowchart/index.js +43 -20
- package/dist/src/flowchart/index.js.map +1 -1
- package/dist/src/flowchart/library.d.ts +166 -81
- package/dist/src/flowchart/library.d.ts.map +1 -1
- package/dist/src/flowchart/library.js +232 -105
- package/dist/src/flowchart/library.js.map +1 -1
- package/dist/src/flowchart/over.d.ts +9 -16
- package/dist/src/flowchart/over.d.ts.map +1 -1
- package/dist/src/flowchart/over.js +9 -16
- package/dist/src/flowchart/over.js.map +1 -1
- package/dist/src/flowchart/payload.d.ts +710 -508
- package/dist/src/flowchart/payload.d.ts.map +1 -1
- package/dist/src/flowchart/payload.js +128 -74
- package/dist/src/flowchart/payload.js.map +1 -1
- package/dist/src/flowchart/window.d.ts +132 -347
- package/dist/src/flowchart/window.d.ts.map +1 -1
- package/dist/src/flowchart/window.js +48 -55
- package/dist/src/flowchart/window.js.map +1 -1
- package/dist/src/index.d.ts +11 -7
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +14 -6
- package/dist/src/index.js.map +1 -1
- package/dist/src/internal.d.ts +18 -7
- package/dist/src/internal.d.ts.map +1 -1
- package/dist/src/internal.js +28 -9
- package/dist/src/internal.js.map +1 -1
- package/dist/src/plan/event-rows.d.ts +26 -10
- package/dist/src/plan/event-rows.d.ts.map +1 -1
- package/dist/src/plan/event-rows.js +39 -13
- package/dist/src/plan/event-rows.js.map +1 -1
- package/dist/src/plan/ir.d.ts +244 -815
- package/dist/src/plan/ir.d.ts.map +1 -1
- package/dist/src/plan/ir.js +8 -6
- package/dist/src/plan/ir.js.map +1 -1
- package/dist/src/plan/library.d.ts +3 -0
- package/dist/src/plan/library.d.ts.map +1 -1
- package/dist/src/plan/library.js +1 -1
- package/dist/src/plan/library.js.map +1 -1
- package/dist/src/plan/ordered-source.d.ts +1 -0
- package/dist/src/plan/ordered-source.d.ts.map +1 -1
- package/dist/src/plan/plan.d.ts +559 -1667
- package/dist/src/plan/plan.d.ts.map +1 -1
- package/dist/src/plan/plan.js +123 -45
- package/dist/src/plan/plan.js.map +1 -1
- package/dist/src/plan/root.d.ts +16 -20
- package/dist/src/plan/root.d.ts.map +1 -1
- package/dist/src/plan/root.js +23 -33
- package/dist/src/plan/root.js.map +1 -1
- package/dist/src/roster/coverage.d.ts +17 -231
- package/dist/src/roster/coverage.d.ts.map +1 -1
- package/dist/src/roster/coverage.js +94 -90
- package/dist/src/roster/coverage.js.map +1 -1
- package/dist/src/roster/fit.d.ts +59 -0
- package/dist/src/roster/fit.d.ts.map +1 -0
- package/dist/src/roster/fit.js +155 -0
- package/dist/src/roster/fit.js.map +1 -0
- package/dist/src/roster/index.d.ts +2862 -3662
- package/dist/src/roster/index.d.ts.map +1 -1
- package/dist/src/roster/index.js +383 -81
- package/dist/src/roster/index.js.map +1 -1
- package/dist/src/roster/library.d.ts +37 -92
- package/dist/src/roster/library.d.ts.map +1 -1
- package/dist/src/roster/library.js +25 -64
- package/dist/src/roster/library.js.map +1 -1
- package/dist/src/roster/lists.d.ts +195 -0
- package/dist/src/roster/lists.d.ts.map +1 -0
- package/dist/src/roster/lists.js +233 -0
- package/dist/src/roster/lists.js.map +1 -0
- package/dist/src/roster/rules.d.ts +17 -260
- package/dist/src/roster/rules.d.ts.map +1 -1
- package/dist/src/roster/rules.js +135 -132
- package/dist/src/roster/rules.js.map +1 -1
- package/dist/src/roster/targets.d.ts +115 -0
- package/dist/src/roster/targets.d.ts.map +1 -0
- package/dist/src/roster/targets.js +213 -0
- package/dist/src/roster/targets.js.map +1 -0
- package/dist/src/roster/times.d.ts +251 -0
- package/dist/src/roster/times.d.ts.map +1 -0
- package/dist/src/roster/times.js +174 -0
- package/dist/src/roster/times.js.map +1 -0
- package/dist/src/roster/types.d.ts +828 -183
- package/dist/src/roster/types.d.ts.map +1 -1
- package/dist/src/roster/types.js +224 -97
- package/dist/src/roster/types.js.map +1 -1
- package/dist/src/schedule/accessor.d.ts +28 -0
- package/dist/src/schedule/accessor.d.ts.map +1 -0
- package/dist/src/schedule/accessor.js +39 -0
- package/dist/src/schedule/accessor.js.map +1 -0
- package/dist/src/schedule/events.d.ts +170 -42
- package/dist/src/schedule/events.d.ts.map +1 -1
- package/dist/src/schedule/events.js +431 -171
- package/dist/src/schedule/events.js.map +1 -1
- package/dist/src/schedule/index.d.ts +41 -4
- package/dist/src/schedule/index.d.ts.map +1 -1
- package/dist/src/schedule/index.js +35 -3
- package/dist/src/schedule/index.js.map +1 -1
- package/dist/src/schedule/library.d.ts +13 -3
- package/dist/src/schedule/library.d.ts.map +1 -1
- package/dist/src/schedule/library.js +11 -4
- package/dist/src/schedule/library.js.map +1 -1
- package/dist/src/schedule/periods.d.ts +115 -0
- package/dist/src/schedule/periods.d.ts.map +1 -0
- package/dist/src/schedule/periods.js +215 -0
- package/dist/src/schedule/periods.js.map +1 -0
- package/dist/src/schedule/record-window.d.ts +25 -3
- package/dist/src/schedule/record-window.d.ts.map +1 -1
- package/dist/src/schedule/record-window.js +31 -18
- package/dist/src/schedule/record-window.js.map +1 -1
- package/dist/src/schedule/resources.d.ts +82 -4
- package/dist/src/schedule/resources.d.ts.map +1 -1
- package/dist/src/schedule/resources.js +44 -14
- package/dist/src/schedule/resources.js.map +1 -1
- package/dist/src/schedule/session.d.ts +69 -0
- package/dist/src/schedule/session.d.ts.map +1 -0
- package/dist/src/schedule/session.js +121 -0
- package/dist/src/schedule/session.js.map +1 -0
- package/dist/src/schedule/templates.d.ts +14 -2
- package/dist/src/schedule/templates.d.ts.map +1 -1
- package/dist/src/schedule/templates.js +5 -3
- package/dist/src/schedule/templates.js.map +1 -1
- package/dist/src/schedule/types.d.ts +1671 -37
- package/dist/src/schedule/types.d.ts.map +1 -1
- package/dist/src/schedule/types.js +196 -5
- package/dist/src/schedule/types.js.map +1 -1
- package/dist/src/schedule/window.d.ts +14 -0
- package/dist/src/schedule/window.d.ts.map +1 -1
- package/dist/src/schedule/window.js +14 -4
- package/dist/src/schedule/window.js.map +1 -1
- package/dist/src/schedule/words.d.ts +22 -0
- package/dist/src/schedule/words.d.ts.map +1 -0
- package/dist/src/schedule/words.js +25 -0
- package/dist/src/schedule/words.js.map +1 -0
- package/dist/src/sheet/index.d.ts +61 -27
- package/dist/src/sheet/index.d.ts.map +1 -1
- package/dist/src/sheet/index.js +59 -25
- package/dist/src/sheet/index.js.map +1 -1
- package/dist/src/sheet/library.d.ts +21 -3
- package/dist/src/sheet/library.d.ts.map +1 -1
- package/dist/src/sheet/library.js +23 -6
- package/dist/src/sheet/library.js.map +1 -1
- package/dist/src/sheet/registers.d.ts +100 -85
- package/dist/src/sheet/registers.d.ts.map +1 -1
- package/dist/src/sheet/registers.js +100 -85
- package/dist/src/sheet/registers.js.map +1 -1
- package/dist/src/sheet/root.d.ts +8 -12
- package/dist/src/sheet/root.d.ts.map +1 -1
- package/dist/src/sheet/root.js +6 -40
- package/dist/src/sheet/root.js.map +1 -1
- package/dist/src/sheet/sheet.d.ts +598 -2349
- package/dist/src/sheet/sheet.d.ts.map +1 -1
- package/dist/src/sheet/sheet.js +124 -37
- package/dist/src/sheet/sheet.js.map +1 -1
- package/dist/src/sheet/sub-rows.d.ts +74 -28
- package/dist/src/sheet/sub-rows.d.ts.map +1 -1
- package/dist/src/sheet/sub-rows.js +74 -28
- package/dist/src/sheet/sub-rows.js.map +1 -1
- package/dist/src/sheet/templates.d.ts +98 -34
- package/dist/src/sheet/templates.d.ts.map +1 -1
- package/dist/src/sheet/templates.js +102 -58
- package/dist/src/sheet/templates.js.map +1 -1
- package/dist/src/sheet/types.d.ts +289 -1359
- package/dist/src/sheet/types.d.ts.map +1 -1
- package/dist/src/sheet/types.js +20 -26
- package/dist/src/sheet/types.js.map +1 -1
- package/dist/src/sheet/views.d.ts +10 -11
- package/dist/src/sheet/views.d.ts.map +1 -1
- package/dist/src/sheet/views.js +15 -20
- package/dist/src/sheet/views.js.map +1 -1
- package/dist/src/{roster/visibility.d.ts → utils/key-visibility.d.ts} +42 -7
- package/dist/src/utils/key-visibility.d.ts.map +1 -0
- package/dist/src/utils/key-visibility.js +36 -0
- package/dist/src/utils/key-visibility.js.map +1 -0
- package/dist/src/utils/ordered-source.d.ts +1 -0
- package/dist/src/utils/ordered-source.d.ts.map +1 -1
- package/dist/src/utils/ordered-source.js +8 -3
- package/dist/src/utils/ordered-source.js.map +1 -1
- package/dist/src/utils/record-sources.d.ts +107 -0
- package/dist/src/utils/record-sources.d.ts.map +1 -0
- package/dist/src/utils/record-sources.js +132 -0
- package/dist/src/utils/record-sources.js.map +1 -0
- package/dist/test/allocation/allocation.examples.d.ts +2902 -0
- package/dist/test/allocation/allocation.examples.d.ts.map +1 -0
- package/dist/test/allocation/allocation.examples.js +643 -0
- package/dist/test/allocation/allocation.examples.js.map +1 -0
- package/dist/test/allocation/fit.examples.d.ts +546 -0
- package/dist/test/allocation/fit.examples.d.ts.map +1 -0
- package/dist/test/allocation/fit.examples.js +171 -0
- package/dist/test/allocation/fit.examples.js.map +1 -0
- package/dist/test/allocation/kiln-yard.d.ts +181 -0
- package/dist/test/allocation/kiln-yard.d.ts.map +1 -0
- package/dist/test/allocation/kiln-yard.js +228 -0
- package/dist/test/allocation/kiln-yard.js.map +1 -0
- package/dist/test/bind/data/data.examples.d.ts +651 -1
- package/dist/test/bind/data/data.examples.d.ts.map +1 -1
- package/dist/test/bind/data/data.examples.js +140 -2
- package/dist/test/bind/data/data.examples.js.map +1 -1
- package/dist/test/bind/func/func.examples.d.ts +10 -1
- package/dist/test/bind/func/func.examples.d.ts.map +1 -1
- package/dist/test/bind/func/func.examples.js +8 -1
- package/dist/test/bind/func/func.examples.js.map +1 -1
- package/dist/test/bind/record/record.examples.d.ts +633 -1
- package/dist/test/bind/record/record.examples.d.ts.map +1 -1
- package/dist/test/bind/record/record.examples.js +26 -2
- package/dist/test/bind/record/record.examples.js.map +1 -1
- package/dist/test/calendar/calendar-records.examples.d.ts.map +1 -1
- package/dist/test/calendar/calendar-records.examples.js +18 -14
- package/dist/test/calendar/calendar-records.examples.js.map +1 -1
- package/dist/test/calendar/calendar.examples.d.ts +521 -16
- package/dist/test/calendar/calendar.examples.d.ts.map +1 -1
- package/dist/test/calendar/calendar.examples.js +182 -135
- package/dist/test/calendar/calendar.examples.js.map +1 -1
- package/dist/test/examples-package.d.ts +75 -0
- package/dist/test/examples-package.d.ts.map +1 -0
- package/dist/test/examples-package.js +263 -0
- package/dist/test/examples-package.js.map +1 -0
- package/dist/test/flowchart/flowchart.examples.d.ts +211 -19
- package/dist/test/flowchart/flowchart.examples.d.ts.map +1 -1
- package/dist/test/flowchart/flowchart.examples.js +102 -75
- package/dist/test/flowchart/flowchart.examples.js.map +1 -1
- package/dist/test/plan/plan-events.examples.d.ts +1439 -209
- package/dist/test/plan/plan-events.examples.d.ts.map +1 -1
- package/dist/test/plan/plan-events.examples.js +199 -59
- package/dist/test/plan/plan-events.examples.js.map +1 -1
- package/dist/test/plan/plan-records.examples.d.ts +420 -0
- package/dist/test/plan/plan-records.examples.d.ts.map +1 -1
- package/dist/test/plan/plan-records.examples.js +70 -19
- package/dist/test/plan/plan-records.examples.js.map +1 -1
- package/dist/test/plan/plan-windows.examples.d.ts +636 -55
- package/dist/test/plan/plan-windows.examples.d.ts.map +1 -1
- package/dist/test/plan/plan-windows.examples.js +69 -33
- package/dist/test/plan/plan-windows.examples.js.map +1 -1
- package/dist/test/plan/plan.examples.d.ts +153 -31
- package/dist/test/plan/plan.examples.d.ts.map +1 -1
- package/dist/test/plan/plan.examples.js +178 -101
- package/dist/test/plan/plan.examples.js.map +1 -1
- package/dist/test/roster/domain.examples.d.ts +467 -250
- package/dist/test/roster/domain.examples.d.ts.map +1 -1
- package/dist/test/roster/domain.examples.js +92 -29
- package/dist/test/roster/domain.examples.js.map +1 -1
- package/dist/test/roster/roster-records.examples.d.ts +430 -586
- package/dist/test/roster/roster-records.examples.d.ts.map +1 -1
- package/dist/test/roster/roster-records.examples.js +102 -43
- package/dist/test/roster/roster-records.examples.js.map +1 -1
- package/dist/test/roster/roster.examples.d.ts +2319 -606
- package/dist/test/roster/roster.examples.d.ts.map +1 -1
- package/dist/test/roster/roster.examples.js +456 -148
- package/dist/test/roster/roster.examples.js.map +1 -1
- package/dist/test/roster/warehouse.d.ts +172 -63
- package/dist/test/roster/warehouse.d.ts.map +1 -1
- package/dist/test/roster/warehouse.js +172 -39
- package/dist/test/roster/warehouse.js.map +1 -1
- package/dist/test/schedule/schedule.examples.d.ts +3499 -0
- package/dist/test/schedule/schedule.examples.d.ts.map +1 -0
- package/dist/test/schedule/schedule.examples.js +192 -0
- package/dist/test/schedule/schedule.examples.js.map +1 -0
- package/dist/test/sheet/sheet-records.examples.d.ts.map +1 -1
- package/dist/test/sheet/sheet-records.examples.js +22 -18
- package/dist/test/sheet/sheet-records.examples.js.map +1 -1
- package/dist/test/sheet/sheet.examples.d.ts +715 -26
- package/dist/test/sheet/sheet.examples.d.ts.map +1 -1
- package/dist/test/sheet/sheet.examples.js +204 -130
- package/dist/test/sheet/sheet.examples.js.map +1 -1
- package/package.json +17 -10
- package/dist/src/roster/people.d.ts +0 -50
- package/dist/src/roster/people.d.ts.map +0 -1
- package/dist/src/roster/people.js +0 -32
- package/dist/src/roster/people.js.map +0 -1
- package/dist/src/roster/visibility.d.ts.map +0 -1
- package/dist/src/roster/visibility.js +0 -25
- package/dist/src/roster/visibility.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/roster/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACH,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/roster/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EACH,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAc,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAE5I,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,KAAK,kBAAkB,EACxD,MAAM,eAAe,CAAC;AACvB,OAAO,EAAU,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAA0B,aAAa,EAAE,KAAK,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAClH,OAAO,EAAuC,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEtF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAmD,MAAM,sBAAsB,CAAC;AAE1G,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC7G,OAAO,EACW,gBAAgB,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAC5F,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EACnF,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAmB,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,KAAK,CAAC,MAAM,YAAY,CAAC;AAMhC,gEAAgE;AAChE,eAAO,MAAM,gBAAgB;;;EAAsD,CAAC;AACpF,qEAAqE;AACrE,eAAO,MAAM,gBAAgB;;;EAAiD,CAAC;AAC/E,0HAA0H;AAC1H,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;EAAsF,CAAC;AAExH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0B5B,CAAC;AACH,8CAA8C;AAC9C,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|
package/dist/src/roster/index.js
CHANGED
|
@@ -2,114 +2,416 @@
|
|
|
2
2
|
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
3
|
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
4
|
*/
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
5
|
+
/**
|
|
6
|
+
* `<Roster>` (#1368, `Builder Interfaces Spec.md` §5): staffing over the
|
|
7
|
+
* app's own records, in the renderer's BuilderFrame. It writes the app's
|
|
8
|
+
* duties through the duty kind's roles (`Schedule.events`), reads its people
|
|
9
|
+
* and agencies (`Schedule.resources`), publishes its weeks
|
|
10
|
+
* (`Schedule.periods`) and writes its targets (`Roster.targets`), with the
|
|
11
|
+
* lists it reads over the app's rows (`Roster.shifts`, `groups`, `positions`,
|
|
12
|
+
* `activities`, `proposals`). It stores nothing in a shape of its own.
|
|
13
|
+
*
|
|
14
|
+
* The tag validates, builds the people and agencies from their kinds'
|
|
15
|
+
* accessors, and assembles the closed payload; it composes no East UI
|
|
16
|
+
* component and emits no layout, session or gesture program. The app's duty
|
|
17
|
+
* row type `R` crosses the payload as beast2 bytes, as Schedule's kinds' rows
|
|
18
|
+
* do: the app's `pay` and `check` over bytes at `PayRequest(R)` and
|
|
19
|
+
* `CheckContext(R)`, and the fit's binding checked against `FitRequest(R)`.
|
|
20
|
+
* The renderer compiles the Roster's functions over `R`, the duty kind's
|
|
21
|
+
* `rowType`.
|
|
22
|
+
*
|
|
23
|
+
* @packageDocumentation
|
|
24
|
+
*/
|
|
25
|
+
import { ArrayType, BlobType, BooleanType, DateTimeType, East, Expr, FunctionType, NullType, OptionType, SetType, StringType, StructType, VariantType, isTypeEqual, none, printType, some, variant, } from "@elaraai/east";
|
|
26
|
+
import { EastUI } from "@elaraai/east-ui";
|
|
27
|
+
import { RecordSlicesChromeType, RowSourceType } from "@elaraai/east-ui/internal";
|
|
28
|
+
import { FuncBindingType, boundFuncSignature } from "../bind/func.js";
|
|
29
|
+
import { scheduleCheck } from "../schedule/index.js";
|
|
30
|
+
import { ScheduleAuthorTabType, buildScheduleTab } from "../schedule/library.js";
|
|
31
|
+
import { ScheduleClockType, SchedulePeriodsKindType, ScheduleRosterKindType } from "../schedule/types.js";
|
|
32
|
+
import { recordSources } from "../utils/record-sources.js";
|
|
12
33
|
import { rosterCoverage, rosterWeekHours } from "./coverage.js";
|
|
34
|
+
import { rosterAnswer, rosterFit } from "./fit.js";
|
|
35
|
+
import { rosterActivitiesTab, rosterLibraryTab, rosterPeopleTab } from "./library.js";
|
|
36
|
+
import { isRosterList, rosterActivities, rosterGroups, rosterPositions, rosterProposals, rosterShifts, } from "./lists.js";
|
|
13
37
|
import { rosterCheck, rosterRest } from "./rules.js";
|
|
14
|
-
import {
|
|
15
|
-
import
|
|
16
|
-
|
|
38
|
+
import { isRosterTargets, rosterTargets } from "./targets.js";
|
|
39
|
+
import * as T from "./types.js";
|
|
40
|
+
// ============================================================================
|
|
41
|
+
// The payload
|
|
42
|
+
// ============================================================================
|
|
17
43
|
/** Roster's layout: group shifts, or people across the week. */
|
|
18
44
|
export const RosterLayoutType = VariantType({ shifts: NullType, people: NullType });
|
|
19
45
|
/** Roster's displayed period. People always shows the whole week. */
|
|
20
46
|
export const RosterPeriodType = VariantType({ day: NullType, week: NullType });
|
|
21
|
-
/** A declared
|
|
22
|
-
export const RosterLibraryTabType = VariantType({ people: NullType, activities: NullType, tab:
|
|
23
|
-
/**
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
47
|
+
/** A declared library tab: the People tab, the Activities tab, or an app's tab, its cards resolved over the duty kind. */
|
|
48
|
+
export const RosterLibraryTabType = VariantType({ people: NullType, activities: NullType, tab: ScheduleAuthorTabType });
|
|
49
|
+
/**
|
|
50
|
+
* The closed renderer payload. BuilderFrame is internal to the renderer.
|
|
51
|
+
* @property duty - The duty kind: the app's duties read and written through their roles, over bytes at the row type
|
|
52
|
+
* @property people - Every person, from the `people` resource kind's accessors: the calculation scope, whatever the slice shows
|
|
53
|
+
* @property agencies - Every agency, from the `agencies` resource kind's
|
|
54
|
+
* @property periods - The app's weeks: their status and dismissals, and Publish; `none`, no Publish
|
|
55
|
+
* @property targets - The app's targets, a row per slot; `none`, no slot has a target
|
|
56
|
+
* @property groups - The groups, in their order
|
|
57
|
+
* @property shifts - The shifts, in their order
|
|
58
|
+
* @property activities - Every activity: each group's skills and the duties of no group
|
|
59
|
+
* @property positions - The positions, in their order; none for a duty kind with no `position` role
|
|
60
|
+
* @property proposals - The app's suggestions, in key order
|
|
61
|
+
* @property rules - The built-in rules
|
|
62
|
+
* @property pay - The app's pay, from a `PayRequest(R)` as bytes to each duty's cost by code; `none`, no costs show
|
|
63
|
+
* @property currency - How costs print
|
|
64
|
+
* @property check - The app's issues, from a `CheckContext(R)` as bytes
|
|
65
|
+
* @property fit - The app's fit, by its `e3.function`'s name: who fits a Find fix's need; `none`, no Find fix is offered (#1334)
|
|
66
|
+
* @property library - The library's tabs, in order
|
|
67
|
+
* @property inspector - Whether the inspector pane shows
|
|
68
|
+
* @property narrowed - Each narrowed source's keys, paged through its part of `slice`: the people and the activities that show (#1342)
|
|
69
|
+
* @property slice - The narrowing's chrome: a Slice over the duties', the targets', the staff's and the activities' records, one rail
|
|
70
|
+
* @property settings - The first view and the view settings
|
|
71
|
+
* @property id - The viewer's identity
|
|
72
|
+
*/
|
|
34
73
|
export const RosterPayloadType = StructType({
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
74
|
+
duty: ScheduleRosterKindType,
|
|
75
|
+
people: ArrayType(T.RosterPersonType),
|
|
76
|
+
agencies: ArrayType(T.RosterAgencyType),
|
|
77
|
+
periods: OptionType(SchedulePeriodsKindType),
|
|
78
|
+
targets: OptionType(T.RosterTargetsKindType),
|
|
79
|
+
groups: ArrayType(T.RosterGroupType),
|
|
80
|
+
shifts: ArrayType(T.RosterShiftType),
|
|
81
|
+
activities: ArrayType(T.RosterSkillType),
|
|
82
|
+
positions: ArrayType(T.RosterPositionType),
|
|
83
|
+
proposals: ArrayType(T.RosterProposalType),
|
|
84
|
+
rules: T.RosterRulesType,
|
|
85
|
+
pay: OptionType(FunctionType([BlobType], T.RosterPayType)),
|
|
86
|
+
currency: OptionType(StringType),
|
|
87
|
+
check: OptionType(FunctionType([BlobType], ArrayType(T.RosterIssueType))),
|
|
88
|
+
fit: OptionType(FuncBindingType),
|
|
89
|
+
library: ArrayType(RosterLibraryTabType),
|
|
90
|
+
inspector: BooleanType,
|
|
91
|
+
narrowed: StructType({ people: OptionType(RowSourceType(ArrayType(StringType))), activities: OptionType(RowSourceType(ArrayType(StringType))) }),
|
|
92
|
+
slice: OptionType(RecordSlicesChromeType),
|
|
43
93
|
settings: StructType({
|
|
44
94
|
layout: RosterLayoutType, period: RosterPeriodType, date: OptionType(DateTimeType),
|
|
45
95
|
weekStart: VariantType({ monday: NullType, sunday: NullType }),
|
|
46
96
|
density: VariantType({ compact: NullType, comfortable: NullType }), chipSkills: BooleanType, requirements: BooleanType, readOnly: BooleanType,
|
|
47
|
-
}),
|
|
48
|
-
|
|
97
|
+
}),
|
|
98
|
+
id: OptionType(StringType),
|
|
49
99
|
});
|
|
50
100
|
/** Carrier registered by e3-ui-components. */
|
|
51
101
|
export const RosterComponent = EastUI.component("Roster", RosterPayloadType, { optional: true });
|
|
52
|
-
/**
|
|
102
|
+
/** The props §2 removed, each refused by name with the form that replaces it. */
|
|
103
|
+
const REMOVED = [
|
|
104
|
+
["weeks", "`weeks` is gone — the Roster writes the app's own duties, events={{ duty: Schedule.events(Record.bind(duties, [dutiesPatch]), " +
|
|
105
|
+
"{ start, end, resource, shift, group }) }}, and publishes the app's own weeks, periods={Schedule.periods(Record.bind(weeks, [weeksPatch]), { every: \"week\", status })}"],
|
|
106
|
+
["window", "`window` is gone — the Roster reads a week's duties through the duty kind's source of its slice, an interval index from the start to the " +
|
|
107
|
+
"end: slice={{ slice: Slice.bindRecords(key, { duty: { source: Data.bindPaged(duties, { indexes: [byTime] }), range: \"start\" } }) }}, the kind given " +
|
|
108
|
+
"`entries`; or the record whole"],
|
|
109
|
+
["people", "`people` moves to `resources`: resources={{ people: Schedule.resources(staff.read(), { name, icon, label, group, … }) }}, every person's " +
|
|
110
|
+
"position, skills, contract and flags its accessors"],
|
|
111
|
+
["agencies", "`agencies` moves to `resources`: resources={{ people, agencies: Schedule.resources(firms.read(), { name, icon, label }) }}"],
|
|
112
|
+
["forecast", "`forecast` is gone — the targets are the app's own record, which its forecast fills: " +
|
|
113
|
+
"targets={Roster.targets(Record.bind(cover, [coverPatch]), { day, group, shift, positions, hours })}"],
|
|
114
|
+
["costs", "`costs` is gone — pay is the app's own, in its own pay codes: pay={…} currency=\"…\", an East function from " +
|
|
115
|
+
"Roster.Types.PayRequest(R) to Roster.Types.Pay"],
|
|
116
|
+
["visiblePeople", "`visiblePeople` is gone — the Roster reads its people from `slice`'s `people` source: " +
|
|
117
|
+
"slice={{ slice: Slice.bindRecords(key, { people, activities }) }}"],
|
|
118
|
+
["duties", "`duties` is gone — a duty is an activity of no group in `activities` (Roster.activities)"],
|
|
119
|
+
];
|
|
120
|
+
/** The lists the Roster reads, each its declaration's words. */
|
|
121
|
+
const LISTS = [
|
|
122
|
+
["shifts", "Roster.shifts(rows, { label, code, start, hours, order? }) over the app's shift rows"],
|
|
123
|
+
["groups", "Roster.groups(rows, { label, order? }) over the app's group rows"],
|
|
124
|
+
["positions", "Roster.positions(rows, { label, code, lead, order? }) over the app's position rows"],
|
|
125
|
+
["proposals", "Roster.proposals(rows, { person, day, group, shift, reason }) over the app's suggestion rows"],
|
|
126
|
+
];
|
|
127
|
+
/**
|
|
128
|
+
* The people, built from the `people` resource kind's accessors, each called
|
|
129
|
+
* once per row, in key order (§4.2).
|
|
130
|
+
*
|
|
131
|
+
* @param kind - The `people` resource kind, read whole
|
|
132
|
+
* @returns Every person
|
|
133
|
+
* @internal
|
|
134
|
+
*/
|
|
135
|
+
export function rosterPeopleOf(kind) {
|
|
136
|
+
const a = kind.accessors;
|
|
137
|
+
const group = a.group;
|
|
138
|
+
const person = East.function([kind.rowType, kind.keyType], T.RosterPersonType, ($, row, key) => {
|
|
139
|
+
const call = (fn, otherwise) => {
|
|
140
|
+
if (fn === undefined)
|
|
141
|
+
return otherwise;
|
|
142
|
+
const bound = $.const(fn);
|
|
143
|
+
return bound(row, key);
|
|
144
|
+
};
|
|
145
|
+
const labelOf = $.const(a.label);
|
|
146
|
+
const groupOf = $.const(group);
|
|
147
|
+
return {
|
|
148
|
+
key: key, name: labelOf(row, key), group: groupOf(row, key),
|
|
149
|
+
position: call(a.position, ""), skills: call(a.skills, East.value(new Set(), SetType(StringType))),
|
|
150
|
+
contract: call(a.contract, 0.0), agency: call(a.agency, false), trainer: call(a.trainer, false), trainee: call(a.trainee, false),
|
|
151
|
+
usual: call(a.usual, East.value(none, OptionType(StringType))),
|
|
152
|
+
};
|
|
153
|
+
});
|
|
154
|
+
return kind.source.toArray(($, row, key) => {
|
|
155
|
+
const make = $.const(person);
|
|
156
|
+
return make(row, key);
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* The agencies, built from the `agencies` resource kind's accessors, in key order.
|
|
161
|
+
*
|
|
162
|
+
* @param kind - The `agencies` resource kind, read whole
|
|
163
|
+
* @returns Every agency
|
|
164
|
+
* @internal
|
|
165
|
+
*/
|
|
166
|
+
export function rosterAgenciesOf(kind) {
|
|
167
|
+
const label = kind.accessors.label;
|
|
168
|
+
const agency = East.function([kind.rowType, kind.keyType], T.RosterAgencyType, ($, row, key) => {
|
|
169
|
+
const labelOf = $.const(label);
|
|
170
|
+
return { key: key, name: labelOf(row, key) };
|
|
171
|
+
});
|
|
172
|
+
return kind.source.toArray(($, row, key) => {
|
|
173
|
+
const make = $.const(agency);
|
|
174
|
+
return make(row, key);
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* An app's function over a request of the duty row type, checked, then wrapped
|
|
179
|
+
* so the request crosses as bytes.
|
|
180
|
+
*
|
|
181
|
+
* @param fn - The app's function
|
|
182
|
+
* @param asks - The request type over the duty row type
|
|
183
|
+
* @param answers - What it answers
|
|
184
|
+
* @param refusal - What a function of another type is refused with, naming the prop
|
|
185
|
+
* @returns The function over bytes
|
|
186
|
+
* @throws {Error} With `refusal` when the function asks or answers another type
|
|
187
|
+
*/
|
|
188
|
+
function overBytes(fn, asks, answers, refusal) {
|
|
189
|
+
const author = East.value(fn);
|
|
190
|
+
const type = Expr.type(author);
|
|
191
|
+
if (type.type !== "Function" || type.inputs.length !== 1 || !isTypeEqual(type.inputs[0], asks) || !isTypeEqual(type.output, answers)) {
|
|
192
|
+
throw new Error(refusal);
|
|
193
|
+
}
|
|
194
|
+
return East.function([BlobType], answers, ($, bytes) => {
|
|
195
|
+
const call = $.const(author);
|
|
196
|
+
return call(bytes.decodeBeast(asks, "v2"));
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* The fit's binding, checked: `Func.bind` of an `e3.function` from `Roster.Types.FitRequest(R)` to `Roster.Types.FitResult`.
|
|
201
|
+
*
|
|
202
|
+
* @param fit - What the app passed as `fit`
|
|
203
|
+
* @param rowType - The duty kind's row type
|
|
204
|
+
* @returns The binding's descriptor, which names the function
|
|
205
|
+
* @throws {Error} When it is not a `Func.bind` handle, or its function asks or answers another type, naming it
|
|
206
|
+
*/
|
|
207
|
+
function fitBinding(fit, rowType) {
|
|
208
|
+
const signature = boundFuncSignature(fit);
|
|
209
|
+
if (signature === undefined) {
|
|
210
|
+
throw new Error("Roster: `fit` is Func.bind of the app's e3.function from Roster.Types.FitRequest(R) to Roster.Types.FitResult, R the duties' row type");
|
|
211
|
+
}
|
|
212
|
+
const asked = signature.asks;
|
|
213
|
+
if (!isTypeEqual(asked, T.RosterFitRequestTypeFor(rowType))) {
|
|
214
|
+
// A FitRequest over another row: its week's duties' row.
|
|
215
|
+
const week = asked.type === "Struct" ? asked.fields["week"] : undefined;
|
|
216
|
+
const duties = week?.type === "Struct" ? week.fields["assignments"] : undefined;
|
|
217
|
+
const theirs = duties?.type === "Dict" && duties.value.type === "Struct" ? duties.value.fields["row"] : undefined;
|
|
218
|
+
throw new Error(theirs !== undefined && isTypeEqual(asked, T.RosterFitRequestTypeFor(theirs))
|
|
219
|
+
? `Roster: \`fit\` is bound over duty rows ${printType(theirs)}, and the duty kind's rows are ${printType(rowType)} — bind a fit over Roster.Types.FitRequest of the duties' row type`
|
|
220
|
+
: `Roster: \`fit\` asks ${printType(asked)}, not Roster.Types.FitRequest(${printType(rowType)})`);
|
|
221
|
+
}
|
|
222
|
+
if (!isTypeEqual(signature.answers, T.RosterFitResultType)) {
|
|
223
|
+
throw new Error(`Roster: \`fit\` answers ${printType(signature.answers)}, not Roster.Types.FitResult`);
|
|
224
|
+
}
|
|
225
|
+
return fit.binding;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Validates the declarations and assembles the Roster's interface. View and
|
|
229
|
+
* interaction behaviour belong to the renderer, not this factory.
|
|
230
|
+
*
|
|
231
|
+
* @typeParam R - The app's duty row type
|
|
232
|
+
* @param props - The Roster's props
|
|
233
|
+
* @returns The closed payload
|
|
234
|
+
* @throws {Error} Naming the change to make (B4): a removed prop — `weeks`, `window`, `people`, `agencies`, `forecast`,
|
|
235
|
+
* `costs`, `visiblePeople`, `duties`, `inspector={{ assignment, requirement }}` or `rules.agree` — or a list given as
|
|
236
|
+
* Roster values rather than its declaration; `events` holding other than one kind, or `resources` other than `people`
|
|
237
|
+
* and `agencies`; a duty kind whose resource names no `people`, or a resource kind read a window at a time; a `people`
|
|
238
|
+
* kind with no `group`; `positions` beside a duty kind with no `position` role; `pay` without `currency`; a `pay`, a
|
|
239
|
+
* `check` or a `fit` over another type; a library tab listed twice; and as `Schedule`'s checks, the duty kind's
|
|
240
|
+
* build (`buildRoster`) and the slice's (`recordSources`) do
|
|
241
|
+
* @internal
|
|
242
|
+
*/
|
|
53
243
|
export function createRosterPayload(props) {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
244
|
+
const given = props;
|
|
245
|
+
for (const [prop, refusal] of REMOVED) {
|
|
246
|
+
if (given[prop] !== undefined)
|
|
247
|
+
throw new Error(`Roster: ${refusal}`);
|
|
248
|
+
}
|
|
249
|
+
if (props.inspector !== undefined && typeof props.inspector !== "boolean") {
|
|
250
|
+
throw new Error("Roster: `inspector` is true or false — a duty's own form is the duty kind's `inspector` (Schedule.events(record, { …, inspector })), " +
|
|
251
|
+
"a target's `Roster.targets`' `inspector`");
|
|
252
|
+
}
|
|
253
|
+
const rules = props.rules ?? {};
|
|
254
|
+
if (rules instanceof Expr) {
|
|
255
|
+
throw new Error("Roster: `rules` are plain values — rules={{ rest: 10, lead: true, trainer: true, skill: true }}");
|
|
256
|
+
}
|
|
257
|
+
if (rules["agree"] !== undefined) {
|
|
258
|
+
throw new Error("Roster: `rules.agree` is gone — a duty's own fields say what is agreed, and the app's `check` reads them: " +
|
|
259
|
+
"Roster.Types.CheckContext(R) carries each duty's row and its pay");
|
|
260
|
+
}
|
|
261
|
+
if (rules.rest !== undefined && (typeof rules.rest !== "number" || !Number.isFinite(rules.rest) || rules.rest < 0)) {
|
|
262
|
+
throw new Error(`Roster: \`rules.rest\` is the hours of rest between duties, zero or more — and it is ${String(rules.rest)}`);
|
|
263
|
+
}
|
|
264
|
+
// The lists: each its declaration over the app's rows, not Roster values.
|
|
265
|
+
for (const [prop, declaration] of LISTS) {
|
|
266
|
+
const value = given[prop];
|
|
267
|
+
const required = prop === "shifts" || prop === "groups";
|
|
268
|
+
if (value === undefined && !required)
|
|
269
|
+
continue;
|
|
270
|
+
if (!isRosterList(value, prop)) {
|
|
271
|
+
throw new Error(`Roster: \`${prop}\` is ${declaration}${value === undefined ? "" : ` — Roster.Types.${prop === "proposals" ? "Proposal" : prop === "shifts" ? "Shift" : prop === "groups" ? "Group" : "Position"} values are gone`}`);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
if (props.targets !== undefined && !isRosterTargets(props.targets)) {
|
|
275
|
+
throw new Error("Roster: `targets` is Roster.targets(Record.bind(record, [patch]), { day, group, shift, positions, hours }) over the app's own targets");
|
|
276
|
+
}
|
|
277
|
+
// The duty kind: exactly one event kind.
|
|
278
|
+
const kinds = Object.entries(props.events ?? {});
|
|
279
|
+
if (kinds.length !== 1) {
|
|
280
|
+
throw new Error(kinds.length === 0
|
|
281
|
+
? "Roster: `events` holds the duties — events={{ duty: Schedule.events(Record.bind(duties, [dutiesPatch]), { start, end, resource, shift, group }) }}"
|
|
282
|
+
: `Roster: \`events\` holds one kind, the duties — and it holds ${kinds.length} (${kinds.map(([slot]) => slot).join(", ")})`);
|
|
283
|
+
}
|
|
284
|
+
const [slot, kind] = kinds[0];
|
|
285
|
+
// Who is rostered: the people, and optionally the agencies.
|
|
286
|
+
const resources = (props.resources ?? {});
|
|
287
|
+
for (const name of Object.keys(resources)) {
|
|
288
|
+
if (name !== "people" && name !== "agencies") {
|
|
289
|
+
throw new Error(`Roster: \`resources\` holds \`people\`, and optionally \`agencies\` — and it holds \`${name}\``);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
if (resources["people"] === undefined) {
|
|
293
|
+
throw new Error("Roster: `resources` holds `people`, every person rostered: resources={{ people: Schedule.resources(staff.read(), { name, icon, label, group }) }}");
|
|
294
|
+
}
|
|
295
|
+
scheduleCheck(resources, props.events, "Roster");
|
|
296
|
+
if (!kind.takes.includes("people")) {
|
|
297
|
+
throw new Error(`Roster: events.${slot}'s resource names no \`people\` — a duty is rostered to one of the people, resource: { field, of: "people" }, ` +
|
|
298
|
+
"or to one of them or an agency, a case each: of: { staff: \"people\", agency: \"agencies\" }");
|
|
299
|
+
}
|
|
300
|
+
const people = resources["people"];
|
|
301
|
+
const agencies = resources["agencies"];
|
|
302
|
+
for (const [name, resourceKind] of [["people", people], ["agencies", agencies]]) {
|
|
303
|
+
if (resourceKind !== undefined && resourceKind.source === undefined) {
|
|
304
|
+
throw new Error(`Roster: resources.${name} is read whole — coverage, pay and checks read every one — so give the rows as a Dict, ` +
|
|
305
|
+
"usually a record's read(), not a paged read");
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
if (people.accessors.group === undefined) {
|
|
309
|
+
throw new Error("Roster: resources.people gives each person's home group — Schedule.resources(staff.read(), { …, group: (p) => p.team })");
|
|
310
|
+
}
|
|
311
|
+
if (props.positions !== undefined && !kind.roles.includes("position")) {
|
|
312
|
+
throw new Error(`Roster: \`positions\` are the positions a duty holds — and events.${slot} maps no \`position\`: give the kind a \`position\`, a String field of its row, or leave \`positions\` out`);
|
|
313
|
+
}
|
|
314
|
+
if (props.pay !== undefined && props.currency === undefined) {
|
|
315
|
+
throw new Error("Roster: `pay` gives each duty's cost — give `currency` with it, how costs print (currency=\"EUR\")");
|
|
316
|
+
}
|
|
317
|
+
// The app's functions over the duty row type.
|
|
318
|
+
const rowType = kind.rowType;
|
|
319
|
+
const row = printType(rowType);
|
|
320
|
+
const pay = props.pay === undefined ? undefined : overBytes(props.pay, T.RosterPayRequestTypeFor(rowType), T.RosterPayType, `Roster: \`pay\` is an East function from Roster.Types.PayRequest(${row}) to Roster.Types.Pay — each duty's cost by the app's own pay codes`);
|
|
321
|
+
const check = props.check === undefined ? undefined : overBytes(props.check, T.RosterCheckContextTypeFor(rowType), ArrayType(T.RosterIssueType), `Roster: \`check\` is an East function from Roster.Types.CheckContext(${row}) to Array<Roster.Types.Issue>`);
|
|
322
|
+
const fit = props.fit === undefined ? undefined : fitBinding(props.fit, rowType);
|
|
323
|
+
// The narrowing: a source per record it narrows, named after what it narrows.
|
|
324
|
+
const library = props.library ?? [];
|
|
325
|
+
const named = new Set([slot, ...(props.targets === undefined ? [] : ["targets"]), "people", "activities",
|
|
326
|
+
...library.flatMap(tab => tab.kind === "tab" && tab.config.source !== undefined ? [tab.config.source] : [])]);
|
|
327
|
+
const narrowing = recordSources(props.slice, {
|
|
328
|
+
builder: "Roster", names: [...named], what: `its duties (${slot}), its targets, its people and its activities, and the tabs that name a source`,
|
|
329
|
+
takes: name => named.has(name),
|
|
330
|
+
});
|
|
58
331
|
const seen = new Set();
|
|
59
|
-
const
|
|
332
|
+
const tabs = library.map(tab => {
|
|
60
333
|
const key = tab.kind === "tab" ? `tab:${tab.config.name}` : tab.kind;
|
|
61
334
|
if (seen.has(key))
|
|
62
|
-
throw new Error(`Roster:
|
|
335
|
+
throw new Error(`Roster: library tab ${key} is listed twice`);
|
|
63
336
|
seen.add(key);
|
|
64
|
-
return tab.kind === "tab"
|
|
337
|
+
return tab.kind === "tab"
|
|
338
|
+
? East.value(variant("tab", buildScheduleTab(tab, [[slot, kind]], "Roster", narrowing.names)), RosterLibraryTabType)
|
|
65
339
|
: East.value(variant(tab.kind, null), RosterLibraryTabType);
|
|
66
340
|
});
|
|
67
|
-
const
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
341
|
+
const lists = given;
|
|
342
|
+
const positions = lists.positions;
|
|
343
|
+
return Expr.block($ => {
|
|
344
|
+
const bound = narrowing.bind($);
|
|
345
|
+
const keys = bound.keys;
|
|
346
|
+
return East.value({
|
|
347
|
+
// The duties, narrowed through their own source of the slice when the slice has one.
|
|
348
|
+
duty: kind.buildRoster(slot, bound.parts[slot]),
|
|
349
|
+
people: rosterPeopleOf(people),
|
|
350
|
+
agencies: agencies === undefined ? [] : rosterAgenciesOf(agencies),
|
|
351
|
+
periods: props.periods === undefined ? none : some(props.periods.build()),
|
|
352
|
+
targets: props.targets === undefined ? none : some(props.targets.build(bound.parts["targets"])),
|
|
353
|
+
groups: lists.groups.rows, shifts: lists.shifts.rows,
|
|
354
|
+
activities: props.activities ?? [], positions: positions === undefined ? [] : positions.rows,
|
|
355
|
+
proposals: lists.proposals === undefined ? [] : lists.proposals.rows,
|
|
356
|
+
// The lead rule reads the positions: without them, there is none.
|
|
357
|
+
rules: { rest: rules.rest ?? 10.0, lead: (rules.lead ?? true) && positions !== undefined, trainer: rules.trainer ?? true, skill: rules.skill ?? true },
|
|
358
|
+
pay: pay === undefined ? none : some(pay),
|
|
359
|
+
currency: props.currency === undefined ? none : some(props.currency),
|
|
360
|
+
check: check === undefined ? none : some(check),
|
|
361
|
+
fit: fit === undefined ? none : some(fit),
|
|
362
|
+
library: tabs,
|
|
363
|
+
inspector: props.inspector ?? false,
|
|
364
|
+
narrowed: {
|
|
365
|
+
people: keys.people === undefined ? none : some(keys.people),
|
|
366
|
+
activities: keys.activities === undefined ? none : some(keys.activities),
|
|
367
|
+
},
|
|
368
|
+
slice: narrowing.chrome,
|
|
369
|
+
settings: {
|
|
370
|
+
layout: variant(props.view?.layout ?? "shifts", null), period: variant(props.view?.layout === "people" ? "week" : props.view?.period ?? "day", null),
|
|
371
|
+
date: props.view?.date === undefined ? none : some(props.view.date), weekStart: variant(props.week?.start ?? "monday", null),
|
|
372
|
+
density: variant(props.density ?? "comfortable", null), chipSkills: props.chipSkills ?? true,
|
|
373
|
+
requirements: props.requirements ?? true, readOnly: props.readOnly ?? false,
|
|
374
|
+
},
|
|
375
|
+
id: props.id === undefined ? none : some(props.id),
|
|
376
|
+
}, RosterPayloadType);
|
|
377
|
+
});
|
|
378
|
+
}
|
|
379
|
+
// ============================================================================
|
|
380
|
+
// The namespace
|
|
381
|
+
// ============================================================================
|
|
382
|
+
/**
|
|
383
|
+
* Refuses a removed helper by name, with the form that replaces it.
|
|
384
|
+
*
|
|
385
|
+
* @param refusal - The words
|
|
386
|
+
* @returns A function that refuses
|
|
387
|
+
*/
|
|
388
|
+
function removed(refusal) {
|
|
389
|
+
return () => { throw new Error(refusal); };
|
|
96
390
|
}
|
|
97
391
|
/**
|
|
98
|
-
* Plans staffing
|
|
99
|
-
*
|
|
392
|
+
* Plans staffing over the app's own records, with an internal shared
|
|
393
|
+
* BuilderFrame, Slice toolbar and editing history.
|
|
394
|
+
*
|
|
395
|
+
* @param props - The duties, people, lists and optional weeks, targets, pay, check, fit, library and inspector
|
|
100
396
|
* @returns The Roster extension
|
|
101
|
-
* @remarks One gesture is one undo step; Save and Publish
|
|
397
|
+
* @remarks One gesture is one undo step across every record it changes; Save sends each record's changes as its own request, and Publish saves, then the week's status. On narrow containers the same commands are explicit card actions.
|
|
102
398
|
*/
|
|
103
|
-
export const Roster = Object.assign((props) => RosterComponent.Root(createRosterPayload(props)), {
|
|
399
|
+
export const Roster = Object.assign((props) => RosterComponent.Root(createRosterPayload(props)), {
|
|
400
|
+
shifts: rosterShifts, groups: rosterGroups, positions: rosterPositions, activities: rosterActivities, proposals: rosterProposals,
|
|
401
|
+
targets: rosterTargets, coverage: rosterCoverage, check: rosterCheck, fit: rosterFit, answer: rosterAnswer,
|
|
402
|
+
weekHours: rosterWeekHours, rest: rosterRest,
|
|
104
403
|
library: { people: rosterPeopleTab, activities: rosterActivitiesTab, tab: rosterLibraryTab },
|
|
404
|
+
people: removed("Roster.people is gone — the people are resources={{ people: Schedule.resources(staff.read(), { name, icon, label, group, … }) }}"),
|
|
405
|
+
patch: removed("Roster.patch is gone — a card's drop returns Schedule.patch(DutyRowType, { … }), the duty's own fields, as Plan's tabs do"),
|
|
105
406
|
Types: {
|
|
106
|
-
Clock: ScheduleClockType, Slot: T.RosterSlotType, Who: T.RosterWhoType, Assignment: T.
|
|
107
|
-
|
|
108
|
-
Skill: T.RosterSkillType, Group: T.RosterGroupType, Shift: T.RosterShiftType, Position: T.RosterPositionType,
|
|
109
|
-
Agency: T.RosterAgencyType, Person: T.RosterPersonType, Rules: T.RosterRulesType,
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
407
|
+
Clock: ScheduleClockType, Slot: T.RosterSlotType, Who: T.RosterWhoType, Assignment: T.RosterAssignmentTypeFor,
|
|
408
|
+
Requirement: T.RosterRequirementType, Requirements: T.RosterRequirementsType, Status: T.RosterStatusType, Week: T.RosterWeekTypeFor,
|
|
409
|
+
Activity: T.RosterActivityType, Skill: T.RosterSkillType, Group: T.RosterGroupType, Shift: T.RosterShiftType, Position: T.RosterPositionType,
|
|
410
|
+
Agency: T.RosterAgencyType, Person: T.RosterPersonType, Rules: T.RosterRulesType, Context: T.RosterContextType,
|
|
411
|
+
CoverageLine: T.RosterCoverageLineType, Coverage: T.RosterCoverageType, Proposal: T.RosterProposalType, Fix: T.RosterFixType,
|
|
412
|
+
Issue: T.RosterIssueType, CheckContext: T.RosterCheckContextTypeFor, Need: T.RosterNeedType, FitRequest: T.RosterFitRequestTypeFor,
|
|
413
|
+
FitResult: T.RosterFitResultType, Fit: T.RosterFitType, Refusal: T.RosterRefusalType, PayRequest: T.RosterPayRequestTypeFor,
|
|
414
|
+
Pay: T.RosterPayType, Layout: RosterLayoutType, Period: RosterPeriodType,
|
|
113
415
|
},
|
|
114
416
|
});
|
|
115
417
|
//# sourceMappingURL=index.js.map
|