@elaraai/e3-ui 1.0.86 → 1.0.87
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/bind/data-indexed.d.ts +159 -0
- package/dist/src/bind/data-indexed.d.ts.map +1 -0
- package/dist/src/bind/data-indexed.js +105 -0
- package/dist/src/bind/data-indexed.js.map +1 -0
- package/dist/src/bind/data.d.ts +5 -3
- package/dist/src/bind/data.d.ts.map +1 -1
- package/dist/src/bind/data.js +6 -0
- package/dist/src/bind/data.js.map +1 -1
- package/dist/src/bind/record.d.ts +34 -23
- package/dist/src/bind/record.d.ts.map +1 -1
- package/dist/src/bind/record.js +46 -19
- package/dist/src/bind/record.js.map +1 -1
- package/dist/src/calendar/index.d.ts +2923 -0
- package/dist/src/calendar/index.d.ts.map +1 -0
- package/dist/src/calendar/index.js +135 -0
- package/dist/src/calendar/index.js.map +1 -0
- package/dist/src/decision/queue.d.ts +3 -3
- package/dist/src/decision/queue.d.ts.map +1 -1
- package/dist/src/decision/queue.js +2 -2
- package/dist/src/decision/queue.js.map +1 -1
- package/dist/src/decision/types.d.ts +4 -0
- package/dist/src/decision/types.d.ts.map +1 -1
- package/dist/src/decision/types.js +4 -0
- package/dist/src/decision/types.js.map +1 -1
- package/dist/src/flowchart/canvas.d.ts +114 -0
- package/dist/src/flowchart/canvas.d.ts.map +1 -0
- package/dist/src/flowchart/canvas.js +84 -0
- package/dist/src/flowchart/canvas.js.map +1 -0
- package/dist/src/flowchart/flowchart.d.ts +79 -0
- package/dist/src/flowchart/flowchart.d.ts.map +1 -0
- package/dist/src/flowchart/flowchart.js +9 -0
- package/dist/src/flowchart/flowchart.js.map +1 -0
- package/dist/src/flowchart/index.d.ts +305 -0
- package/dist/src/flowchart/index.d.ts.map +1 -0
- package/dist/src/flowchart/index.js +267 -0
- package/dist/src/flowchart/index.js.map +1 -0
- package/dist/src/flowchart/library.d.ts +720 -0
- package/dist/src/flowchart/library.d.ts.map +1 -0
- package/dist/src/flowchart/library.js +611 -0
- package/dist/src/flowchart/library.js.map +1 -0
- package/dist/src/flowchart/over.d.ts +234 -0
- package/dist/src/flowchart/over.d.ts.map +1 -0
- package/dist/src/flowchart/over.js +220 -0
- package/dist/src/flowchart/over.js.map +1 -0
- package/dist/src/flowchart/patch.d.ts +64 -0
- package/dist/src/flowchart/patch.d.ts.map +1 -0
- package/dist/src/flowchart/patch.js +67 -0
- package/dist/src/flowchart/patch.js.map +1 -0
- package/dist/src/flowchart/payload.d.ts +8220 -0
- package/dist/src/flowchart/payload.d.ts.map +1 -0
- package/dist/src/flowchart/payload.js +521 -0
- package/dist/src/flowchart/payload.js.map +1 -0
- package/dist/src/flowchart/types.d.ts +393 -0
- package/dist/src/flowchart/types.d.ts.map +1 -0
- package/dist/src/flowchart/types.js +216 -0
- package/dist/src/flowchart/types.js.map +1 -0
- package/dist/src/flowchart/values.d.ts +267 -0
- package/dist/src/flowchart/values.d.ts.map +1 -0
- package/dist/src/flowchart/values.js +216 -0
- package/dist/src/flowchart/values.js.map +1 -0
- package/dist/src/flowchart/window.d.ts +521 -0
- package/dist/src/flowchart/window.d.ts.map +1 -0
- package/dist/src/flowchart/window.js +69 -0
- package/dist/src/flowchart/window.js.map +1 -0
- package/dist/src/index.d.ts +25 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +48 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/internal.d.ts +35 -3
- package/dist/src/internal.d.ts.map +1 -1
- package/dist/src/internal.js +72 -3
- package/dist/src/internal.js.map +1 -1
- package/dist/src/plan/assemble.d.ts +2224 -0
- package/dist/src/plan/assemble.d.ts.map +1 -0
- package/dist/src/plan/assemble.js +210 -0
- package/dist/src/plan/assemble.js.map +1 -0
- package/dist/src/plan/builders.d.ts +790 -0
- package/dist/src/plan/builders.d.ts.map +1 -0
- package/dist/src/plan/builders.js +749 -0
- package/dist/src/plan/builders.js.map +1 -0
- package/dist/src/plan/event-rows.d.ts +2565 -0
- package/dist/src/plan/event-rows.d.ts.map +1 -0
- package/dist/src/plan/event-rows.js +689 -0
- package/dist/src/plan/event-rows.js.map +1 -0
- package/dist/src/plan/factories.d.ts +458 -0
- package/dist/src/plan/factories.d.ts.map +1 -0
- package/dist/src/plan/factories.js +484 -0
- package/dist/src/plan/factories.js.map +1 -0
- package/dist/src/plan/index.d.ts +672 -0
- package/dist/src/plan/index.d.ts.map +1 -0
- package/dist/src/plan/index.js +532 -0
- package/dist/src/plan/index.js.map +1 -0
- package/dist/src/plan/ir.d.ts +2594 -0
- package/dist/src/plan/ir.d.ts.map +1 -0
- package/dist/src/plan/ir.js +78 -0
- package/dist/src/plan/ir.js.map +1 -0
- package/dist/src/plan/library.d.ts +772 -0
- package/dist/src/plan/library.d.ts.map +1 -0
- package/dist/src/plan/library.js +424 -0
- package/dist/src/plan/library.js.map +1 -0
- package/dist/src/plan/ordered-source.d.ts +27 -0
- package/dist/src/plan/ordered-source.d.ts.map +1 -0
- package/dist/src/plan/ordered-source.js +48 -0
- package/dist/src/plan/ordered-source.js.map +1 -0
- package/dist/src/plan/over.d.ts +247 -0
- package/dist/src/plan/over.d.ts.map +1 -0
- package/dist/src/plan/over.js +266 -0
- package/dist/src/plan/over.js.map +1 -0
- package/dist/src/plan/pick.d.ts +78 -0
- package/dist/src/plan/pick.d.ts.map +1 -0
- package/dist/src/plan/pick.js +146 -0
- package/dist/src/plan/pick.js.map +1 -0
- package/dist/src/plan/plan.d.ts +11611 -0
- package/dist/src/plan/plan.d.ts.map +1 -0
- package/dist/src/plan/plan.js +428 -0
- package/dist/src/plan/plan.js.map +1 -0
- package/dist/src/plan/refs.d.ts +218 -0
- package/dist/src/plan/refs.d.ts.map +1 -0
- package/dist/src/plan/refs.js +226 -0
- package/dist/src/plan/refs.js.map +1 -0
- package/dist/src/plan/root.d.ts +290 -0
- package/dist/src/plan/root.d.ts.map +1 -0
- package/dist/src/plan/root.js +463 -0
- package/dist/src/plan/root.js.map +1 -0
- package/dist/src/plan/series.d.ts +13554 -0
- package/dist/src/plan/series.d.ts.map +1 -0
- package/dist/src/plan/series.js +1921 -0
- package/dist/src/plan/series.js.map +1 -0
- package/dist/src/plan/types.d.ts +12400 -0
- package/dist/src/plan/types.d.ts.map +1 -0
- package/dist/src/plan/types.js +1335 -0
- package/dist/src/plan/types.js.map +1 -0
- package/dist/src/roster/coverage.d.ts +240 -0
- package/dist/src/roster/coverage.d.ts.map +1 -0
- package/dist/src/roster/coverage.js +109 -0
- package/dist/src/roster/coverage.js.map +1 -0
- package/dist/src/roster/index.d.ts +4028 -0
- package/dist/src/roster/index.d.ts.map +1 -0
- package/dist/src/roster/index.js +115 -0
- package/dist/src/roster/index.js.map +1 -0
- package/dist/src/roster/library.d.ts +106 -0
- package/dist/src/roster/library.d.ts.map +1 -0
- package/dist/src/roster/library.js +78 -0
- package/dist/src/roster/library.js.map +1 -0
- package/dist/src/roster/people.d.ts +50 -0
- package/dist/src/roster/people.d.ts.map +1 -0
- package/dist/src/roster/people.js +32 -0
- package/dist/src/roster/people.js.map +1 -0
- package/dist/src/roster/rules.d.ts +275 -0
- package/dist/src/roster/rules.d.ts.map +1 -0
- package/dist/src/roster/rules.js +162 -0
- package/dist/src/roster/rules.js.map +1 -0
- package/dist/src/roster/types.d.ts +672 -0
- package/dist/src/roster/types.d.ts.map +1 -0
- package/dist/src/roster/types.js +248 -0
- package/dist/src/roster/types.js.map +1 -0
- package/dist/src/roster/visibility.d.ts +66 -0
- package/dist/src/roster/visibility.d.ts.map +1 -0
- package/dist/src/roster/visibility.js +25 -0
- package/dist/src/roster/visibility.js.map +1 -0
- package/dist/src/schedule/days.d.ts +54 -0
- package/dist/src/schedule/days.d.ts.map +1 -0
- package/dist/src/schedule/days.js +68 -0
- package/dist/src/schedule/days.js.map +1 -0
- package/dist/src/schedule/events.d.ts +433 -0
- package/dist/src/schedule/events.d.ts.map +1 -0
- package/dist/src/schedule/events.js +851 -0
- package/dist/src/schedule/events.js.map +1 -0
- package/dist/src/schedule/index.d.ts +150 -0
- package/dist/src/schedule/index.d.ts.map +1 -0
- package/dist/src/schedule/index.js +132 -0
- package/dist/src/schedule/index.js.map +1 -0
- package/dist/src/schedule/library.d.ts +70 -0
- package/dist/src/schedule/library.d.ts.map +1 -0
- package/dist/src/schedule/library.js +102 -0
- package/dist/src/schedule/library.js.map +1 -0
- package/dist/src/schedule/patch.d.ts +74 -0
- package/dist/src/schedule/patch.d.ts.map +1 -0
- package/dist/src/schedule/patch.js +68 -0
- package/dist/src/schedule/patch.js.map +1 -0
- package/dist/src/schedule/record-window.d.ts +189 -0
- package/dist/src/schedule/record-window.d.ts.map +1 -0
- package/dist/src/schedule/record-window.js +95 -0
- package/dist/src/schedule/record-window.js.map +1 -0
- package/dist/src/schedule/resources.d.ts +165 -0
- package/dist/src/schedule/resources.d.ts.map +1 -0
- package/dist/src/schedule/resources.js +234 -0
- package/dist/src/schedule/resources.js.map +1 -0
- package/dist/src/schedule/templates.d.ts +47 -0
- package/dist/src/schedule/templates.d.ts.map +1 -0
- package/dist/src/schedule/templates.js +61 -0
- package/dist/src/schedule/templates.js.map +1 -0
- package/dist/src/schedule/types.d.ts +1677 -0
- package/dist/src/schedule/types.d.ts.map +1 -0
- package/dist/src/schedule/types.js +374 -0
- package/dist/src/schedule/types.js.map +1 -0
- package/dist/src/schedule/window.d.ts +154 -0
- package/dist/src/schedule/window.d.ts.map +1 -0
- package/dist/src/schedule/window.js +363 -0
- package/dist/src/schedule/window.js.map +1 -0
- package/dist/src/sheet/bridge.d.ts +385 -0
- package/dist/src/sheet/bridge.d.ts.map +1 -0
- package/dist/src/sheet/bridge.js +809 -0
- package/dist/src/sheet/bridge.js.map +1 -0
- package/dist/src/sheet/columns.d.ts +410 -0
- package/dist/src/sheet/columns.d.ts.map +1 -0
- package/dist/src/sheet/columns.js +99 -0
- package/dist/src/sheet/columns.js.map +1 -0
- package/dist/src/sheet/context-bridge.d.ts +48 -0
- package/dist/src/sheet/context-bridge.d.ts.map +1 -0
- package/dist/src/sheet/context-bridge.js +216 -0
- package/dist/src/sheet/context-bridge.js.map +1 -0
- package/dist/src/sheet/draft-bridge.d.ts +37 -0
- package/dist/src/sheet/draft-bridge.d.ts.map +1 -0
- package/dist/src/sheet/draft-bridge.js +153 -0
- package/dist/src/sheet/draft-bridge.js.map +1 -0
- package/dist/src/sheet/drafts.d.ts +14 -0
- package/dist/src/sheet/drafts.d.ts.map +1 -0
- package/dist/src/sheet/drafts.js +14 -0
- package/dist/src/sheet/drafts.js.map +1 -0
- package/dist/src/sheet/editing-bridge.d.ts +40 -0
- package/dist/src/sheet/editing-bridge.d.ts.map +1 -0
- package/dist/src/sheet/editing-bridge.js +231 -0
- package/dist/src/sheet/editing-bridge.js.map +1 -0
- package/dist/src/sheet/editing-types.d.ts +268 -0
- package/dist/src/sheet/editing-types.d.ts.map +1 -0
- package/dist/src/sheet/editing-types.js +34 -0
- package/dist/src/sheet/editing-types.js.map +1 -0
- package/dist/src/sheet/edits.d.ts +37 -0
- package/dist/src/sheet/edits.d.ts.map +1 -0
- package/dist/src/sheet/edits.js +31 -0
- package/dist/src/sheet/edits.js.map +1 -0
- package/dist/src/sheet/fields.d.ts +693 -0
- package/dist/src/sheet/fields.d.ts.map +1 -0
- package/dist/src/sheet/fields.js +280 -0
- package/dist/src/sheet/fields.js.map +1 -0
- package/dist/src/sheet/group.d.ts +165 -0
- package/dist/src/sheet/group.d.ts.map +1 -0
- package/dist/src/sheet/group.js +52 -0
- package/dist/src/sheet/group.js.map +1 -0
- package/dist/src/sheet/index.d.ts +542 -0
- package/dist/src/sheet/index.d.ts.map +1 -0
- package/dist/src/sheet/index.js +387 -0
- package/dist/src/sheet/index.js.map +1 -0
- package/dist/src/sheet/library.d.ts +284 -0
- package/dist/src/sheet/library.d.ts.map +1 -0
- package/dist/src/sheet/library.js +259 -0
- package/dist/src/sheet/library.js.map +1 -0
- package/dist/src/sheet/link.d.ts +398 -0
- package/dist/src/sheet/link.d.ts.map +1 -0
- package/dist/src/sheet/link.js +228 -0
- package/dist/src/sheet/link.js.map +1 -0
- package/dist/src/sheet/record.d.ts +75 -0
- package/dist/src/sheet/record.d.ts.map +1 -0
- package/dist/src/sheet/record.js +128 -0
- package/dist/src/sheet/record.js.map +1 -0
- package/dist/src/sheet/registers.d.ts +681 -0
- package/dist/src/sheet/registers.d.ts.map +1 -0
- package/dist/src/sheet/registers.js +671 -0
- package/dist/src/sheet/registers.js.map +1 -0
- package/dist/src/sheet/root.d.ts +329 -0
- package/dist/src/sheet/root.d.ts.map +1 -0
- package/dist/src/sheet/root.js +511 -0
- package/dist/src/sheet/root.js.map +1 -0
- package/dist/src/sheet/seed-bridge.d.ts +14 -0
- package/dist/src/sheet/seed-bridge.d.ts.map +1 -0
- package/dist/src/sheet/seed-bridge.js +51 -0
- package/dist/src/sheet/seed-bridge.js.map +1 -0
- package/dist/src/sheet/sheet.d.ts +11819 -0
- package/dist/src/sheet/sheet.d.ts.map +1 -0
- package/dist/src/sheet/sheet.js +236 -0
- package/dist/src/sheet/sheet.js.map +1 -0
- package/dist/src/sheet/sub-rows.d.ts +299 -0
- package/dist/src/sheet/sub-rows.d.ts.map +1 -0
- package/dist/src/sheet/sub-rows.js +272 -0
- package/dist/src/sheet/sub-rows.js.map +1 -0
- package/dist/src/sheet/templates.d.ts +161 -0
- package/dist/src/sheet/templates.d.ts.map +1 -0
- package/dist/src/sheet/templates.js +122 -0
- package/dist/src/sheet/templates.js.map +1 -0
- package/dist/src/sheet/transactions.d.ts +76 -0
- package/dist/src/sheet/transactions.d.ts.map +1 -0
- package/dist/src/sheet/transactions.js +40 -0
- package/dist/src/sheet/transactions.js.map +1 -0
- package/dist/src/sheet/types.d.ts +15226 -0
- package/dist/src/sheet/types.d.ts.map +1 -0
- package/dist/src/sheet/types.js +1070 -0
- package/dist/src/sheet/types.js.map +1 -0
- package/dist/src/sheet/views.d.ts +29 -0
- package/dist/src/sheet/views.d.ts.map +1 -0
- package/dist/src/sheet/views.js +43 -0
- package/dist/src/sheet/views.js.map +1 -0
- package/dist/src/studio/component.d.ts.map +1 -1
- package/dist/src/studio/component.js +11 -8
- package/dist/src/studio/component.js.map +1 -1
- package/dist/src/utils/derive.d.ts +134 -8
- package/dist/src/utils/derive.d.ts.map +1 -1
- package/dist/src/utils/derive.js +409 -7
- package/dist/src/utils/derive.js.map +1 -1
- package/dist/src/utils/ordered-source.d.ts +38 -0
- package/dist/src/utils/ordered-source.d.ts.map +1 -0
- package/dist/src/utils/ordered-source.js +45 -0
- package/dist/src/utils/ordered-source.js.map +1 -0
- package/dist/src/utils/row-inspector.d.ts +36 -0
- package/dist/src/utils/row-inspector.d.ts.map +1 -0
- package/dist/src/utils/row-inspector.js +49 -0
- package/dist/src/utils/row-inspector.js.map +1 -0
- package/dist/test/bind/data/data.examples.d.ts +21 -19
- package/dist/test/bind/data/data.examples.d.ts.map +1 -1
- package/dist/test/bind/data/data.examples.js +122 -122
- package/dist/test/bind/data/data.examples.js.map +1 -1
- package/dist/test/bind/record/record.examples.d.ts.map +1 -1
- package/dist/test/bind/record/record.examples.js +9 -9
- package/dist/test/bind/record/record.examples.js.map +1 -1
- package/dist/test/calendar/calendar-records.examples.d.ts +228 -0
- package/dist/test/calendar/calendar-records.examples.d.ts.map +1 -0
- package/dist/test/calendar/calendar-records.examples.js +91 -0
- package/dist/test/calendar/calendar-records.examples.js.map +1 -0
- package/dist/test/calendar/calendar.examples.d.ts +776 -0
- package/dist/test/calendar/calendar.examples.d.ts.map +1 -0
- package/dist/test/calendar/calendar.examples.js +336 -0
- package/dist/test/calendar/calendar.examples.js.map +1 -0
- package/dist/test/decision/journal.examples.d.ts +28 -28
- package/dist/test/decision/journal.examples.d.ts.map +1 -1
- package/dist/test/decision/journal.examples.js +4 -4
- package/dist/test/decision/journal.examples.js.map +1 -1
- package/dist/test/decision/queue.examples.d.ts.map +1 -1
- package/dist/test/decision/queue.examples.js +5 -7
- package/dist/test/decision/queue.examples.js.map +1 -1
- package/dist/test/flowchart/flowchart.examples.d.ts +3713 -0
- package/dist/test/flowchart/flowchart.examples.d.ts.map +1 -0
- package/dist/test/flowchart/flowchart.examples.js +465 -0
- package/dist/test/flowchart/flowchart.examples.js.map +1 -0
- package/dist/test/plan/plan-events.examples.d.ts +3666 -0
- package/dist/test/plan/plan-events.examples.d.ts.map +1 -0
- package/dist/test/plan/plan-events.examples.js +773 -0
- package/dist/test/plan/plan-events.examples.js.map +1 -0
- package/dist/test/plan/plan-records.examples.d.ts +3 -0
- package/dist/test/plan/plan-records.examples.d.ts.map +1 -0
- package/dist/test/plan/plan-records.examples.js +45 -0
- package/dist/test/plan/plan-records.examples.js.map +1 -0
- package/dist/test/plan/plan-windows.examples.d.ts +588 -0
- package/dist/test/plan/plan-windows.examples.d.ts.map +1 -0
- package/dist/test/plan/plan-windows.examples.js +170 -0
- package/dist/test/plan/plan-windows.examples.js.map +1 -0
- package/dist/test/plan/plan.examples.d.ts +8095 -0
- package/dist/test/plan/plan.examples.d.ts.map +1 -0
- package/dist/test/plan/plan.examples.js +2500 -0
- package/dist/test/plan/plan.examples.js.map +1 -0
- package/dist/test/roster/domain.examples.d.ts +367 -0
- package/dist/test/roster/domain.examples.d.ts.map +1 -0
- package/dist/test/roster/domain.examples.js +72 -0
- package/dist/test/roster/domain.examples.js.map +1 -0
- package/dist/test/roster/roster-records.examples.d.ts +729 -0
- package/dist/test/roster/roster-records.examples.d.ts.map +1 -0
- package/dist/test/roster/roster-records.examples.js +86 -0
- package/dist/test/roster/roster-records.examples.js.map +1 -0
- package/dist/test/roster/roster.examples.d.ts +750 -0
- package/dist/test/roster/roster.examples.d.ts.map +1 -0
- package/dist/test/roster/roster.examples.js +198 -0
- package/dist/test/roster/roster.examples.js.map +1 -0
- package/dist/test/roster/warehouse.d.ts +87 -0
- package/dist/test/roster/warehouse.d.ts.map +1 -0
- package/dist/test/roster/warehouse.js +883 -0
- package/dist/test/roster/warehouse.js.map +1 -0
- package/dist/test/sheet/sheet-link.examples.d.ts +7 -0
- package/dist/test/sheet/sheet-link.examples.d.ts.map +1 -0
- package/dist/test/sheet/sheet-link.examples.js +41 -0
- package/dist/test/sheet/sheet-link.examples.js.map +1 -0
- package/dist/test/sheet/sheet-records.examples.d.ts +421 -0
- package/dist/test/sheet/sheet-records.examples.d.ts.map +1 -0
- package/dist/test/sheet/sheet-records.examples.js +79 -0
- package/dist/test/sheet/sheet-records.examples.js.map +1 -0
- package/dist/test/sheet/sheet-transactions.examples.d.ts +7 -0
- package/dist/test/sheet/sheet-transactions.examples.d.ts.map +1 -0
- package/dist/test/sheet/sheet-transactions.examples.js +58 -0
- package/dist/test/sheet/sheet-transactions.examples.js.map +1 -0
- package/dist/test/sheet/sheet.examples.d.ts +5562 -0
- package/dist/test/sheet/sheet.examples.d.ts.map +1 -0
- package/dist/test/sheet/sheet.examples.js +1178 -0
- package/dist/test/sheet/sheet.examples.js.map +1 -0
- package/dist/test/studio/studio.examples.d.ts.map +1 -1
- package/dist/test/studio/studio.examples.js +11 -11
- package/dist/test/studio/studio.examples.js.map +1 -1
- package/package.json +12 -9
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
import { ArrayType, BooleanType, DateTimeType, DictType, FloatType, IntegerType, NullType, OptionType, SetType, StringType, StructType, VariantType, } from "@elaraai/east";
|
|
6
|
+
import { StatusTokenType } from "@elaraai/east-ui";
|
|
7
|
+
import { ScheduleClockType } from "../schedule/types.js";
|
|
8
|
+
/**
|
|
9
|
+
* One shift of one group on one day. Day zero is the record key's UTC date.
|
|
10
|
+
* @remarks Slot keys compare by East value, including when decoded in the browser.
|
|
11
|
+
* @property day - Day within the week, from zero to six
|
|
12
|
+
* @property group - Group key
|
|
13
|
+
* @property shift - Shift key
|
|
14
|
+
*/
|
|
15
|
+
export const RosterSlotType = StructType({ day: IntegerType, group: StringType, shift: StringType });
|
|
16
|
+
/**
|
|
17
|
+
* The subject of an assignment.
|
|
18
|
+
* @remarks Requests reserve positions without pretending an agency has supplied a named person.
|
|
19
|
+
* @property person - The original staff record key
|
|
20
|
+
* @property request - The agency asked to supply someone
|
|
21
|
+
*/
|
|
22
|
+
export const RosterWhoType = VariantType({ person: StringType, request: StringType });
|
|
23
|
+
/**
|
|
24
|
+
* An assignment stored within one week.
|
|
25
|
+
* @remarks A start offset moves the start; overtime extends the end. Agreement is absent for an unchanged shift.
|
|
26
|
+
* @property slot - The day, group and shift
|
|
27
|
+
* @property who - A named person or an agency request
|
|
28
|
+
* @property position - Position held on this assignment
|
|
29
|
+
* @property activity - One skill or duty, or none
|
|
30
|
+
* @property offset - Start offset in hours, negative for an early start
|
|
31
|
+
* @property overtime - Additional hours after the shift
|
|
32
|
+
* @property agreed - Whether the person agreed to changed hours
|
|
33
|
+
*/
|
|
34
|
+
export const RosterAssignmentType = StructType({
|
|
35
|
+
slot: RosterSlotType, who: RosterWhoType, position: StringType, activity: OptionType(StringType),
|
|
36
|
+
offset: FloatType, overtime: FloatType, agreed: OptionType(BooleanType),
|
|
37
|
+
});
|
|
38
|
+
/**
|
|
39
|
+
* A slot's staffing and work targets.
|
|
40
|
+
* @remarks A duty needs assigned hours, whereas a skill also has holder capacity.
|
|
41
|
+
* @property positions - Positions to fill
|
|
42
|
+
* @property hours - Hours required by skill or duty key
|
|
43
|
+
*/
|
|
44
|
+
export const RosterRequirementType = StructType({ positions: IntegerType, hours: DictType(StringType, FloatType) });
|
|
45
|
+
/** Targets keyed by the complete slot. @remarks Use East's comparator for these struct keys. */
|
|
46
|
+
export const RosterRequirementsType = DictType(RosterSlotType, RosterRequirementType);
|
|
47
|
+
/**
|
|
48
|
+
* The durable status of a week.
|
|
49
|
+
* @remarks Publishing saves the complete week and its status atomically.
|
|
50
|
+
* @property draft - An editable week
|
|
51
|
+
* @property published - A read-only week and its publication instant
|
|
52
|
+
*/
|
|
53
|
+
export const RosterStatusType = VariantType({ draft: NullType, published: StructType({ at: DateTimeType }) });
|
|
54
|
+
/**
|
|
55
|
+
* The single atomic entry in the roster record.
|
|
56
|
+
* @remarks Assignments, targets, dismissals and publication share one optimistic patch baseline.
|
|
57
|
+
* @property status - Draft or published
|
|
58
|
+
* @property assignments - Assignments by stable identifier
|
|
59
|
+
* @property requirements - Targets by slot
|
|
60
|
+
* @property dismissed - Proposal identifiers rejected for this week
|
|
61
|
+
*/
|
|
62
|
+
export const RosterWeekType = StructType({
|
|
63
|
+
status: RosterStatusType, assignments: DictType(StringType, RosterAssignmentType),
|
|
64
|
+
requirements: RosterRequirementsType, dismissed: SetType(StringType),
|
|
65
|
+
});
|
|
66
|
+
/** Weeks keyed by their first day at UTC midnight. @remarks This is the roster record's stored wire type. */
|
|
67
|
+
export const RosterWeeksType = DictType(DateTimeType, RosterWeekType);
|
|
68
|
+
/**
|
|
69
|
+
* A skill within a group, or a duty available to every group.
|
|
70
|
+
* @remarks Keys are unique across all skills and duties.
|
|
71
|
+
* @property key - Stable identifier
|
|
72
|
+
* @property label - Display name
|
|
73
|
+
* @property code - Short code on assignment chips
|
|
74
|
+
*/
|
|
75
|
+
export const RosterSkillType = StructType({ key: StringType, label: StringType, code: StringType });
|
|
76
|
+
/**
|
|
77
|
+
* A group of people and the skills its work requires.
|
|
78
|
+
* @remarks The array order controls the grid and library order.
|
|
79
|
+
* @property key - Stable identifier
|
|
80
|
+
* @property label - Display name
|
|
81
|
+
* @property skills - Skills in display order
|
|
82
|
+
*/
|
|
83
|
+
export const RosterGroupType = StructType({ key: StringType, label: StringType, skills: ArrayType(RosterSkillType) });
|
|
84
|
+
/**
|
|
85
|
+
* A recurring shift's time and nominal hours.
|
|
86
|
+
* @remarks An end past midnight belongs to the following day; the assignment still belongs to its start day.
|
|
87
|
+
* @property key - Stable identifier
|
|
88
|
+
* @property label - Display name
|
|
89
|
+
* @property code - Short code in the week layout
|
|
90
|
+
* @property start - Start time in UTC, shared with Schedule
|
|
91
|
+
* @property hours - Nominal shift duration
|
|
92
|
+
*/
|
|
93
|
+
export const RosterShiftType = StructType({
|
|
94
|
+
key: StringType, label: StringType, code: StringType, start: ScheduleClockType, hours: FloatType,
|
|
95
|
+
});
|
|
96
|
+
/**
|
|
97
|
+
* A position someone may hold on a shift.
|
|
98
|
+
* @remarks Position order determines lead ordering in the grid.
|
|
99
|
+
* @property key - Stable identifier
|
|
100
|
+
* @property label - Display name
|
|
101
|
+
* @property code - Chip badge
|
|
102
|
+
* @property lead - Whether this position satisfies the lead rule
|
|
103
|
+
*/
|
|
104
|
+
export const RosterPositionType = StructType({ key: StringType, label: StringType, code: StringType, lead: BooleanType });
|
|
105
|
+
/**
|
|
106
|
+
* An agency from which positions may be requested.
|
|
107
|
+
* @remarks The first agency supplies the suggested open-position fix.
|
|
108
|
+
* @property key - Stable identifier
|
|
109
|
+
* @property name - Display name
|
|
110
|
+
*/
|
|
111
|
+
export const RosterAgencyType = StructType({ key: StringType, name: StringType });
|
|
112
|
+
/**
|
|
113
|
+
* A person resolved from the author's keyed staff data.
|
|
114
|
+
* @remarks Roster reads staff; all edits go to the weeks record.
|
|
115
|
+
* @property key - Original staff key
|
|
116
|
+
* @property name - Display name
|
|
117
|
+
* @property group - Home group
|
|
118
|
+
* @property position - Default position
|
|
119
|
+
* @property skills - Skill keys held
|
|
120
|
+
* @property contract - Contracted weekly hours
|
|
121
|
+
* @property agency - Whether this is a named agency worker
|
|
122
|
+
* @property trainer - Whether this person trains others
|
|
123
|
+
* @property trainee - Whether this person needs a trainer
|
|
124
|
+
* @property usual - Usual shift, or none
|
|
125
|
+
*/
|
|
126
|
+
export const RosterPersonType = StructType({
|
|
127
|
+
key: StringType, name: StringType, group: StringType, position: StringType, skills: SetType(StringType),
|
|
128
|
+
contract: FloatType, agency: BooleanType, trainer: BooleanType, trainee: BooleanType, usual: OptionType(StringType),
|
|
129
|
+
});
|
|
130
|
+
/**
|
|
131
|
+
* Built-in checks enabled for the roster.
|
|
132
|
+
* @remarks Rest reads this week only; double booking is always reported.
|
|
133
|
+
* @property rest - Minimum hours between shifts; zero disables the rest check
|
|
134
|
+
* @property lead - Check staffed slots for a lead
|
|
135
|
+
* @property trainer - Check trainees have a trainer
|
|
136
|
+
* @property skill - Check activities against held skills
|
|
137
|
+
* @property agree - Report unagreed changed hours
|
|
138
|
+
*/
|
|
139
|
+
export const RosterRulesType = StructType({ rest: FloatType, lead: BooleanType, trainer: BooleanType, skill: BooleanType, agree: BooleanType });
|
|
140
|
+
/**
|
|
141
|
+
* Optional costing configuration.
|
|
142
|
+
* @remarks Omitting costs hides monetary readouts; it does not affect staffing checks.
|
|
143
|
+
* @property currency - Currency identifier for the shared formatter
|
|
144
|
+
* @property rates - Permanent, overtime and agency hourly rates
|
|
145
|
+
* @property budget - Daily budget, or none
|
|
146
|
+
*/
|
|
147
|
+
export const RosterCostsType = StructType({
|
|
148
|
+
currency: StringType, rates: StructType({ permanent: FloatType, overtime: FloatType, agency: FloatType }), budget: OptionType(FloatType),
|
|
149
|
+
});
|
|
150
|
+
/**
|
|
151
|
+
* Complete reference data used by coverage and checks.
|
|
152
|
+
* @remarks Visibility filters never remove people from this context.
|
|
153
|
+
* @property people - All resolved staff by original key
|
|
154
|
+
* @property groups - Groups and their skills
|
|
155
|
+
* @property duties - Activities available to every group
|
|
156
|
+
* @property shifts - Shift definitions
|
|
157
|
+
* @property positions - Position definitions
|
|
158
|
+
* @property agencies - Agencies available for gap fixes
|
|
159
|
+
* @property rules - Enabled rules
|
|
160
|
+
* @property costs - Optional monetary configuration
|
|
161
|
+
*/
|
|
162
|
+
export const RosterContextType = StructType({
|
|
163
|
+
people: DictType(StringType, RosterPersonType), groups: ArrayType(RosterGroupType), duties: ArrayType(RosterSkillType),
|
|
164
|
+
shifts: ArrayType(RosterShiftType), positions: ArrayType(RosterPositionType), agencies: ArrayType(RosterAgencyType),
|
|
165
|
+
rules: RosterRulesType, costs: OptionType(RosterCostsType),
|
|
166
|
+
});
|
|
167
|
+
/**
|
|
168
|
+
* Coverage for one required activity.
|
|
169
|
+
* @remarks Duties have no holder count or capacity and no skill gap.
|
|
170
|
+
* @property skill - Skill or duty key
|
|
171
|
+
* @property needed - Required hours
|
|
172
|
+
* @property holders - Number of people holding the skill, or none for a duty
|
|
173
|
+
* @property capacity - Nominal hours available from holders, or none for a duty
|
|
174
|
+
* @property gap - Positive shortfall in skill capacity
|
|
175
|
+
* @property assigned - Hours explicitly assigned to this activity
|
|
176
|
+
*/
|
|
177
|
+
export const RosterCoverageLineType = StructType({
|
|
178
|
+
skill: StringType, needed: FloatType, holders: OptionType(IntegerType), capacity: OptionType(FloatType), gap: FloatType, assigned: FloatType,
|
|
179
|
+
});
|
|
180
|
+
/**
|
|
181
|
+
* Staffing, work and costs for a complete slot.
|
|
182
|
+
* @remarks Requests fill positions and contribute requested hours, but never count as named people or skilled holders.
|
|
183
|
+
* @property positions - Required positions
|
|
184
|
+
* @property filled - Assignments including requests
|
|
185
|
+
* @property open - Unfilled positions, at least zero
|
|
186
|
+
* @property people - Named people assigned
|
|
187
|
+
* @property hours - Permanent, agency, overtime, requested, needed and total rostered hours
|
|
188
|
+
* @property lines - Required skills in group order, then duties
|
|
189
|
+
* @property cost - Total cost, zero when costs are absent
|
|
190
|
+
* @property lead - A named person holds a lead position
|
|
191
|
+
* @property trainer - A trainer is assigned
|
|
192
|
+
*/
|
|
193
|
+
export const RosterCoverageType = StructType({
|
|
194
|
+
positions: IntegerType, filled: IntegerType, open: IntegerType, people: IntegerType,
|
|
195
|
+
hours: StructType({ permanent: FloatType, agency: FloatType, overtime: FloatType, requested: FloatType, needed: FloatType, rostered: FloatType }),
|
|
196
|
+
lines: ArrayType(RosterCoverageLineType), cost: FloatType, lead: BooleanType, trainer: BooleanType,
|
|
197
|
+
});
|
|
198
|
+
/**
|
|
199
|
+
* An externally computed staffing proposal.
|
|
200
|
+
* @remarks Acceptance creates an assignment; rejection stores this key in the week's dismissed set.
|
|
201
|
+
* @property key - Proposal identifier
|
|
202
|
+
* @property week - Week's first day
|
|
203
|
+
* @property slot - Suggested destination
|
|
204
|
+
* @property person - Original staff key
|
|
205
|
+
* @property reason - Explanation presented to the planner
|
|
206
|
+
*/
|
|
207
|
+
export const RosterProposalType = StructType({ key: StringType, week: DateTimeType, slot: RosterSlotType, person: StringType, reason: StringType });
|
|
208
|
+
/**
|
|
209
|
+
* A corrective action offered for an issue.
|
|
210
|
+
* @remarks Every data-changing action is one gesture of the shared edit session.
|
|
211
|
+
* @property request - Request someone from this agency
|
|
212
|
+
* @property agree - Mark the assignment agreed
|
|
213
|
+
* @property accept - Accept this proposal key
|
|
214
|
+
* @property move - Move the assignment to this shift
|
|
215
|
+
* @property start - Set this start offset in hours
|
|
216
|
+
* @property find - Show leads, trainers or holders of a skill in the library
|
|
217
|
+
*/
|
|
218
|
+
export const RosterFixType = VariantType({
|
|
219
|
+
request: StringType, agree: NullType, accept: StringType, move: StringType, start: FloatType,
|
|
220
|
+
find: VariantType({ leads: NullType, trainers: NullType, skill: StringType }),
|
|
221
|
+
});
|
|
222
|
+
/**
|
|
223
|
+
* One explanation or warning about the drafted roster.
|
|
224
|
+
* @remarks Warnings do not introduce a separate validation barrier to Save or Publish.
|
|
225
|
+
* @property kind - Breach, gap, agreement or proposal
|
|
226
|
+
* @property tone - Shared semantic tone
|
|
227
|
+
* @property title - Short explanation
|
|
228
|
+
* @property detail - Supporting explanation
|
|
229
|
+
* @property slot - Affected slot, or none
|
|
230
|
+
* @property assignment - Affected assignment key, or none
|
|
231
|
+
* @property flag - Short text on a chip, or none
|
|
232
|
+
* @property fix - Offered action, or none
|
|
233
|
+
*/
|
|
234
|
+
export const RosterIssueType = StructType({
|
|
235
|
+
kind: VariantType({ breach: NullType, gap: NullType, agree: NullType, proposal: NullType }),
|
|
236
|
+
tone: StatusTokenType, title: StringType, detail: StringType, slot: OptionType(RosterSlotType),
|
|
237
|
+
assignment: OptionType(StringType), flag: OptionType(StringType), fix: OptionType(RosterFixType),
|
|
238
|
+
});
|
|
239
|
+
/**
|
|
240
|
+
* Input to an application's additional roster checks.
|
|
241
|
+
* @remarks The built-in coverage has already been calculated for the same draft.
|
|
242
|
+
* @property start - Week's first day
|
|
243
|
+
* @property week - Drafted week
|
|
244
|
+
* @property context - Complete reference data
|
|
245
|
+
* @property coverage - Coverage for every configured slot
|
|
246
|
+
*/
|
|
247
|
+
export const RosterCheckContextType = StructType({ start: DateTimeType, week: RosterWeekType, context: RosterContextType, coverage: DictType(RosterSlotType, RosterCoverageType) });
|
|
248
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/roster/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/** Project indexed staff windows to their original identities, never a row predicate. */
|
|
6
|
+
import { ArrayType, SetType, StringType, type ExprType, type StructType } from "@elaraai/east";
|
|
7
|
+
/**
|
|
8
|
+
* Preserve inline key sets and adapt Slice.rows(recordSlice) through shared paging.
|
|
9
|
+
* Full staff remains a separate input for coverage, costs and validation.
|
|
10
|
+
* @param input - Original staff keys, or indexed staff windows.
|
|
11
|
+
* @returns The existing inline set or a source of original keys.
|
|
12
|
+
*/
|
|
13
|
+
export declare function rosterVisibility(input: unknown): {
|
|
14
|
+
inline: ExprType<SetType<StringType>>;
|
|
15
|
+
source?: never;
|
|
16
|
+
} | {
|
|
17
|
+
source: import("@elaraai/east").VariantExpr<{
|
|
18
|
+
readonly inline: ArrayType<StringType>;
|
|
19
|
+
readonly paged: StructType<{
|
|
20
|
+
readonly id: StringType;
|
|
21
|
+
readonly page: import("@elaraai/east").FunctionType<[import("@elaraai/east").IntegerType, import("@elaraai/east").IntegerType], import("@elaraai/east").OptionType<ArrayType<StringType>>>;
|
|
22
|
+
readonly total: import("@elaraai/east").FunctionType<[], import("@elaraai/east").OptionType<import("@elaraai/east").IntegerType>>;
|
|
23
|
+
readonly seek: import("@elaraai/east").OptionType<import("@elaraai/east").FunctionType<[import("@elaraai/east").VariantType<{
|
|
24
|
+
readonly key: StringType;
|
|
25
|
+
readonly prefix: StringType;
|
|
26
|
+
readonly fields: StructType<{
|
|
27
|
+
readonly values: ArrayType<StringType>;
|
|
28
|
+
readonly prefix: import("@elaraai/east").OptionType<StringType>;
|
|
29
|
+
}>;
|
|
30
|
+
readonly range: StructType<{
|
|
31
|
+
readonly from: ArrayType<StringType>;
|
|
32
|
+
readonly to: ArrayType<StringType>;
|
|
33
|
+
}>;
|
|
34
|
+
}>], import("@elaraai/east").OptionType<StructType<{
|
|
35
|
+
readonly found: import("@elaraai/east").BooleanType;
|
|
36
|
+
readonly row: import("@elaraai/east").IntegerType;
|
|
37
|
+
readonly count: import("@elaraai/east").IntegerType;
|
|
38
|
+
}>>>>;
|
|
39
|
+
}>;
|
|
40
|
+
readonly pinned: StructType<{
|
|
41
|
+
readonly id: StringType;
|
|
42
|
+
readonly page: import("@elaraai/east").FunctionType<[import("@elaraai/east").IntegerType, import("@elaraai/east").IntegerType], import("@elaraai/east").OptionType<ArrayType<StringType>>>;
|
|
43
|
+
readonly total: import("@elaraai/east").FunctionType<[], import("@elaraai/east").OptionType<import("@elaraai/east").IntegerType>>;
|
|
44
|
+
readonly seek: import("@elaraai/east").OptionType<import("@elaraai/east").FunctionType<[import("@elaraai/east").VariantType<{
|
|
45
|
+
readonly key: StringType;
|
|
46
|
+
readonly prefix: StringType;
|
|
47
|
+
readonly fields: StructType<{
|
|
48
|
+
readonly values: ArrayType<StringType>;
|
|
49
|
+
readonly prefix: import("@elaraai/east").OptionType<StringType>;
|
|
50
|
+
}>;
|
|
51
|
+
readonly range: StructType<{
|
|
52
|
+
readonly from: ArrayType<StringType>;
|
|
53
|
+
readonly to: ArrayType<StringType>;
|
|
54
|
+
}>;
|
|
55
|
+
}>], import("@elaraai/east").OptionType<StructType<{
|
|
56
|
+
readonly found: import("@elaraai/east").BooleanType;
|
|
57
|
+
readonly row: import("@elaraai/east").IntegerType;
|
|
58
|
+
readonly count: import("@elaraai/east").IntegerType;
|
|
59
|
+
}>>>>;
|
|
60
|
+
readonly revision: import("@elaraai/east").FunctionType<[], import("@elaraai/east").OptionType<StringType>>;
|
|
61
|
+
readonly refresh: import("@elaraai/east").FunctionType<[import("@elaraai/east").OptionType<StringType>], import("@elaraai/east").NullType>;
|
|
62
|
+
}>;
|
|
63
|
+
}>;
|
|
64
|
+
inline?: never;
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=visibility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visibility.d.ts","sourceRoot":"","sources":["../../../src/roster/visibility.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,yFAAyF;AACzF,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAe,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAG5G;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO;YAGL,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQtE"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/** Project indexed staff windows to their original identities, never a row predicate. */
|
|
6
|
+
import { ArrayType, SetType, StringType, isTypeEqual } from "@elaraai/east";
|
|
7
|
+
import { buildRowSource, resolveRowSource } from "@elaraai/east-ui/internal";
|
|
8
|
+
/**
|
|
9
|
+
* Preserve inline key sets and adapt Slice.rows(recordSlice) through shared paging.
|
|
10
|
+
* Full staff remains a separate input for coverage, costs and validation.
|
|
11
|
+
* @param input - Original staff keys, or indexed staff windows.
|
|
12
|
+
* @returns The existing inline set or a source of original keys.
|
|
13
|
+
*/
|
|
14
|
+
export function rosterVisibility(input) {
|
|
15
|
+
const resolved = resolveRowSource(input, "Roster.visiblePeople");
|
|
16
|
+
if (resolved.kind === "inline" && isTypeEqual(resolved.collectionType, SetType(StringType))) {
|
|
17
|
+
return { inline: resolved.rows };
|
|
18
|
+
}
|
|
19
|
+
if (resolved.kind !== "ordered" || !resolved.pinned || !isTypeEqual(resolved.keyType, StringType)) {
|
|
20
|
+
throw new Error("Roster.visiblePeople requires a Set of staff keys or Slice.rows of a record Slice with String primary keys");
|
|
21
|
+
}
|
|
22
|
+
const source = buildRowSource(resolved, ArrayType(StringType), rows => rows.map((_$, entry) => entry.key));
|
|
23
|
+
return { source };
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=visibility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visibility.js","sourceRoot":"","sources":["../../../src/roster/visibility.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,yFAAyF;AACzF,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAkC,MAAM,eAAe,CAAC;AAC5G,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7E;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC3C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;IACjE,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,WAAW,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QAC1F,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAqC,EAAE,CAAC;IACtE,CAAC;IACD,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC;QAChG,MAAM,IAAI,KAAK,CAAC,4GAA4G,CAAC,CAAC;IAClI,CAAC;IACD,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,EAAE,CACjE,IAAwC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAA2B,CAAC,CAAC,CAAC;IACrG,OAAO,EAAE,MAAM,EAAE,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* The keys a large record's day index files an event under (#1218,
|
|
7
|
+
* `Calendar Spec.md` §3.4): East functions an `e3.recordIndex`'s `keys`
|
|
8
|
+
* calls, so a builder reads the days in view, and the backlog, through the
|
|
9
|
+
* index instead of the whole record.
|
|
10
|
+
*
|
|
11
|
+
* Times are UTC, as every time a schedule shows is: a day is a UTC day.
|
|
12
|
+
*
|
|
13
|
+
* @packageDocumentation
|
|
14
|
+
*/
|
|
15
|
+
import { DateTimeType, OptionType, SetType } from "@elaraai/east";
|
|
16
|
+
/**
|
|
17
|
+
* The days an event touches: the UTC midnight of every day from its start's
|
|
18
|
+
* to its end's, leaving out an end that falls exactly on midnight. An event
|
|
19
|
+
* of no length, or one ending before it starts, touches its start's day.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* import { DateTimeType, DictType, East, SetType, StringType, StructType } from "@elaraai/east";
|
|
24
|
+
* import { Schedule } from "@elaraai/e3-ui";
|
|
25
|
+
*
|
|
26
|
+
* const ShiftType = StructType({ title: StringType, start: DateTimeType, end: DateTimeType });
|
|
27
|
+
*
|
|
28
|
+
* // A night shift from 22:00 to 06:00 touches two days.
|
|
29
|
+
* const touched = East.function([], SetType(DateTimeType), ($) => {
|
|
30
|
+
* const days = $.const(Schedule.days);
|
|
31
|
+
* return days(new Date("2026-10-01T22:00:00Z"), new Date("2026-10-02T06:00:00Z"));
|
|
32
|
+
* });
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare const scheduleDays: import("@elaraai/east").CallableFunctionExpr<[DateTimeType, DateTimeType], SetType<DateTimeType>>;
|
|
36
|
+
/**
|
|
37
|
+
* The key a backlog index files a row under: its due date when it has no
|
|
38
|
+
* start (`none` when it has no due date either), and nothing once it is
|
|
39
|
+
* scheduled — so the index holds exactly the backlog, ordered by due date.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```ts
|
|
43
|
+
* import { DateTimeType, East, OptionType, SetType, none, some } from "@elaraai/east";
|
|
44
|
+
* import { Schedule } from "@elaraai/e3-ui";
|
|
45
|
+
*
|
|
46
|
+
* // An unscheduled job due on Friday is filed under Friday.
|
|
47
|
+
* const filed = East.function([], SetType(OptionType(DateTimeType)), ($) => {
|
|
48
|
+
* const unscheduled = $.const(Schedule.unscheduled);
|
|
49
|
+
* return unscheduled(none, some(new Date("2026-10-02T00:00:00Z")));
|
|
50
|
+
* });
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export declare const scheduleUnscheduled: import("@elaraai/east").CallableFunctionExpr<[OptionType<DateTimeType>, OptionType<DateTimeType>], SetType<OptionType<DateTimeType>>>;
|
|
54
|
+
//# sourceMappingURL=days.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"days.d.ts","sourceRoot":"","sources":["../../../src/schedule/days.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;GASG;AAEH,OAAO,EAAE,YAAY,EAAQ,UAAU,EAAE,OAAO,EAAe,MAAM,eAAe,CAAC;AAErF;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,YAAY,mGAUvB,CAAC;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,mBAAmB,uIAO/B,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* The keys a large record's day index files an event under (#1218,
|
|
7
|
+
* `Calendar Spec.md` §3.4): East functions an `e3.recordIndex`'s `keys`
|
|
8
|
+
* calls, so a builder reads the days in view, and the backlog, through the
|
|
9
|
+
* index instead of the whole record.
|
|
10
|
+
*
|
|
11
|
+
* Times are UTC, as every time a schedule shows is: a day is a UTC day.
|
|
12
|
+
*
|
|
13
|
+
* @packageDocumentation
|
|
14
|
+
*/
|
|
15
|
+
import { DateTimeType, East, OptionType, SetType } from "@elaraai/east";
|
|
16
|
+
/**
|
|
17
|
+
* The days an event touches: the UTC midnight of every day from its start's
|
|
18
|
+
* to its end's, leaving out an end that falls exactly on midnight. An event
|
|
19
|
+
* of no length, or one ending before it starts, touches its start's day.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* import { DateTimeType, DictType, East, SetType, StringType, StructType } from "@elaraai/east";
|
|
24
|
+
* import { Schedule } from "@elaraai/e3-ui";
|
|
25
|
+
*
|
|
26
|
+
* const ShiftType = StructType({ title: StringType, start: DateTimeType, end: DateTimeType });
|
|
27
|
+
*
|
|
28
|
+
* // A night shift from 22:00 to 06:00 touches two days.
|
|
29
|
+
* const touched = East.function([], SetType(DateTimeType), ($) => {
|
|
30
|
+
* const days = $.const(Schedule.days);
|
|
31
|
+
* return days(new Date("2026-10-01T22:00:00Z"), new Date("2026-10-02T06:00:00Z"));
|
|
32
|
+
* });
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export const scheduleDays = East.function([DateTimeType, DateTimeType], SetType(DateTimeType), ($, start, end) => {
|
|
36
|
+
const days = $.let(new Set(), SetType(DateTimeType));
|
|
37
|
+
const day = $.let(East.DateTime.roundDownDay(start, 1n));
|
|
38
|
+
$(days.insert(day));
|
|
39
|
+
$.assign(day, day.addDays(1n));
|
|
40
|
+
$.while(East.less(day, end), ($) => {
|
|
41
|
+
$(days.insert(day));
|
|
42
|
+
$.assign(day, day.addDays(1n));
|
|
43
|
+
});
|
|
44
|
+
return days;
|
|
45
|
+
});
|
|
46
|
+
/**
|
|
47
|
+
* The key a backlog index files a row under: its due date when it has no
|
|
48
|
+
* start (`none` when it has no due date either), and nothing once it is
|
|
49
|
+
* scheduled — so the index holds exactly the backlog, ordered by due date.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```ts
|
|
53
|
+
* import { DateTimeType, East, OptionType, SetType, none, some } from "@elaraai/east";
|
|
54
|
+
* import { Schedule } from "@elaraai/e3-ui";
|
|
55
|
+
*
|
|
56
|
+
* // An unscheduled job due on Friday is filed under Friday.
|
|
57
|
+
* const filed = East.function([], SetType(OptionType(DateTimeType)), ($) => {
|
|
58
|
+
* const unscheduled = $.const(Schedule.unscheduled);
|
|
59
|
+
* return unscheduled(none, some(new Date("2026-10-02T00:00:00Z")));
|
|
60
|
+
* });
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
export const scheduleUnscheduled = East.function([OptionType(DateTimeType), OptionType(DateTimeType)], SetType(OptionType(DateTimeType)), ($, start, due) => {
|
|
64
|
+
const keys = $.let(new Set(), SetType(OptionType(DateTimeType)));
|
|
65
|
+
$.if(start.hasTag("none"), ($) => { $(keys.insert(due)); });
|
|
66
|
+
return keys;
|
|
67
|
+
});
|
|
68
|
+
//# sourceMappingURL=days.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"days.js","sourceRoot":"","sources":["../../../src/schedule/days.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;GASG;AAEH,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAe,MAAM,eAAe,CAAC;AAErF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;IAC7G,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,EAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACpB,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;QAC/B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACpB,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,QAAQ,CAC5C,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EACvF,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;IACd,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,EAAgB,EAAE,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC/E,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,OAAO,IAAI,CAAC;AAChB,CAAC,CACJ,CAAC"}
|