@elaraai/e3-ui 1.0.96 → 1.0.98
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/index.d.ts +258 -7
- package/dist/src/allocation/index.d.ts.map +1 -1
- package/dist/src/allocation/index.js +30 -1
- package/dist/src/allocation/index.js.map +1 -1
- package/dist/src/allocation/types.d.ts +41 -0
- package/dist/src/allocation/types.d.ts.map +1 -1
- package/dist/src/allocation/types.js +35 -0
- package/dist/src/allocation/types.js.map +1 -1
- package/dist/src/bind/data-indexed.d.ts +31 -4
- package/dist/src/bind/data-indexed.d.ts.map +1 -1
- package/dist/src/bind/data-indexed.js +54 -10
- package/dist/src/bind/data-indexed.js.map +1 -1
- package/dist/src/calendar/index.d.ts +540 -14
- package/dist/src/calendar/index.d.ts.map +1 -1
- package/dist/src/calendar/index.js +43 -7
- package/dist/src/calendar/index.js.map +1 -1
- package/dist/src/calendar/paged.d.ts +89 -0
- package/dist/src/calendar/paged.d.ts.map +1 -0
- package/dist/src/calendar/paged.js +148 -0
- package/dist/src/calendar/paged.js.map +1 -0
- package/dist/src/flowchart/payload.d.ts +156 -0
- package/dist/src/flowchart/payload.d.ts.map +1 -1
- package/dist/src/flowchart/window.d.ts +12 -0
- package/dist/src/flowchart/window.d.ts.map +1 -1
- package/dist/src/index.d.ts +11 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +19 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/internal.d.ts +11 -5
- package/dist/src/internal.d.ts.map +1 -1
- package/dist/src/internal.js +28 -7
- package/dist/src/internal.js.map +1 -1
- package/dist/src/plan/builders.d.ts +12 -8
- package/dist/src/plan/builders.d.ts.map +1 -1
- package/dist/src/plan/builders.js +12 -8
- package/dist/src/plan/builders.js.map +1 -1
- package/dist/src/plan/event-rows.d.ts +228 -156
- package/dist/src/plan/event-rows.d.ts.map +1 -1
- package/dist/src/plan/event-rows.js +239 -54
- package/dist/src/plan/event-rows.js.map +1 -1
- package/dist/src/plan/index.d.ts +5 -0
- package/dist/src/plan/index.d.ts.map +1 -1
- package/dist/src/plan/index.js +3 -0
- package/dist/src/plan/index.js.map +1 -1
- package/dist/src/plan/ir.d.ts +70 -0
- package/dist/src/plan/ir.d.ts.map +1 -1
- package/dist/src/plan/ordered-source.d.ts +2038 -1
- package/dist/src/plan/ordered-source.d.ts.map +1 -1
- package/dist/src/plan/ordered-source.js +19 -11
- package/dist/src/plan/ordered-source.js.map +1 -1
- package/dist/src/plan/plan.d.ts +513 -32
- package/dist/src/plan/plan.d.ts.map +1 -1
- package/dist/src/plan/plan.js +119 -32
- package/dist/src/plan/plan.js.map +1 -1
- package/dist/src/plan/root.d.ts +4 -2
- package/dist/src/plan/root.d.ts.map +1 -1
- package/dist/src/plan/root.js +6 -4
- package/dist/src/plan/root.js.map +1 -1
- package/dist/src/plan/series.d.ts +13 -0
- package/dist/src/plan/series.d.ts.map +1 -1
- package/dist/src/plan/series.js +61 -7
- package/dist/src/plan/series.js.map +1 -1
- package/dist/src/plan/types.d.ts +14 -0
- package/dist/src/plan/types.d.ts.map +1 -1
- package/dist/src/plan/types.js +8 -0
- package/dist/src/plan/types.js.map +1 -1
- package/dist/src/roster/index.d.ts +608 -20
- package/dist/src/roster/index.d.ts.map +1 -1
- package/dist/src/roster/index.js +103 -29
- package/dist/src/roster/index.js.map +1 -1
- package/dist/src/roster/library.d.ts +12 -2
- package/dist/src/roster/library.d.ts.map +1 -1
- package/dist/src/roster/library.js +8 -0
- package/dist/src/roster/library.js.map +1 -1
- package/dist/src/roster/lists.d.ts +59 -12
- package/dist/src/roster/lists.d.ts.map +1 -1
- package/dist/src/roster/lists.js +51 -58
- package/dist/src/roster/lists.js.map +1 -1
- package/dist/src/roster/times.d.ts +402 -0
- package/dist/src/roster/times.d.ts.map +1 -1
- package/dist/src/roster/types.d.ts +913 -1
- package/dist/src/roster/types.d.ts.map +1 -1
- package/dist/src/roster/types.js +43 -3
- package/dist/src/roster/types.js.map +1 -1
- package/dist/src/schedule/cell-checks.d.ts +85 -0
- package/dist/src/schedule/cell-checks.d.ts.map +1 -0
- package/dist/src/schedule/cell-checks.js +211 -0
- package/dist/src/schedule/cell-checks.js.map +1 -0
- package/dist/src/schedule/events.d.ts +42 -10
- package/dist/src/schedule/events.d.ts.map +1 -1
- package/dist/src/schedule/events.js +349 -155
- package/dist/src/schedule/events.js.map +1 -1
- package/dist/src/schedule/fields.d.ts +134 -0
- package/dist/src/schedule/fields.d.ts.map +1 -0
- package/dist/src/schedule/fields.js +207 -0
- package/dist/src/schedule/fields.js.map +1 -0
- package/dist/src/schedule/library.d.ts +11 -3
- package/dist/src/schedule/library.d.ts.map +1 -1
- package/dist/src/schedule/library.js +9 -6
- package/dist/src/schedule/library.js.map +1 -1
- package/dist/src/schedule/optimise.d.ts +124 -0
- package/dist/src/schedule/optimise.d.ts.map +1 -0
- package/dist/src/schedule/optimise.js +140 -0
- package/dist/src/schedule/optimise.js.map +1 -0
- package/dist/src/schedule/pages.d.ts +76 -0
- package/dist/src/schedule/pages.d.ts.map +1 -0
- package/dist/src/schedule/pages.js +86 -0
- package/dist/src/schedule/pages.js.map +1 -0
- package/dist/src/schedule/record-window.d.ts +119 -6
- package/dist/src/schedule/record-window.d.ts.map +1 -1
- package/dist/src/schedule/record-window.js +139 -60
- package/dist/src/schedule/record-window.js.map +1 -1
- package/dist/src/schedule/resources.d.ts +8 -4
- package/dist/src/schedule/resources.d.ts.map +1 -1
- package/dist/src/schedule/resources.js +35 -15
- package/dist/src/schedule/resources.js.map +1 -1
- package/dist/src/schedule/session.d.ts +14 -0
- package/dist/src/schedule/session.d.ts.map +1 -1
- package/dist/src/schedule/session.js +29 -17
- package/dist/src/schedule/session.js.map +1 -1
- package/dist/src/schedule/types.d.ts +426 -36
- package/dist/src/schedule/types.d.ts.map +1 -1
- package/dist/src/schedule/types.js +63 -17
- package/dist/src/schedule/types.js.map +1 -1
- package/dist/src/schedule/window.d.ts +30 -9
- package/dist/src/schedule/window.d.ts.map +1 -1
- package/dist/src/schedule/window.js +101 -49
- package/dist/src/schedule/window.js.map +1 -1
- package/dist/src/schematic/index.d.ts +277 -0
- package/dist/src/schematic/index.d.ts.map +1 -0
- package/dist/src/schematic/index.js +206 -0
- package/dist/src/schematic/index.js.map +1 -0
- package/dist/src/schematic/kinds.d.ts +501 -0
- package/dist/src/schematic/kinds.d.ts.map +1 -0
- package/dist/src/schematic/kinds.js +1027 -0
- package/dist/src/schematic/kinds.js.map +1 -0
- package/dist/src/schematic/layers.d.ts +74 -0
- package/dist/src/schematic/layers.d.ts.map +1 -0
- package/dist/src/schematic/layers.js +99 -0
- package/dist/src/schematic/layers.js.map +1 -0
- package/dist/src/schematic/library.d.ts +202 -0
- package/dist/src/schematic/library.d.ts.map +1 -0
- package/dist/src/schematic/library.js +244 -0
- package/dist/src/schematic/library.js.map +1 -0
- package/dist/src/schematic/payload.d.ts +8360 -0
- package/dist/src/schematic/payload.d.ts.map +1 -0
- package/dist/src/schematic/payload.js +446 -0
- package/dist/src/schematic/payload.js.map +1 -0
- package/dist/src/schematic/schematic.d.ts +27 -0
- package/dist/src/schematic/schematic.d.ts.map +1 -0
- package/dist/src/schematic/schematic.js +17 -0
- package/dist/src/schematic/schematic.js.map +1 -0
- package/dist/src/schematic/shapes.d.ts +150 -0
- package/dist/src/schematic/shapes.d.ts.map +1 -0
- package/dist/src/schematic/shapes.js +171 -0
- package/dist/src/schematic/shapes.js.map +1 -0
- package/dist/src/schematic/templates.d.ts +96 -0
- package/dist/src/schematic/templates.d.ts.map +1 -0
- package/dist/src/schematic/templates.js +91 -0
- package/dist/src/schematic/templates.js.map +1 -0
- package/dist/src/schematic/types.d.ts +5766 -0
- package/dist/src/schematic/types.d.ts.map +1 -0
- package/dist/src/schematic/types.js +688 -0
- package/dist/src/schematic/types.js.map +1 -0
- package/dist/src/schematic/window.d.ts +212 -0
- package/dist/src/schematic/window.d.ts.map +1 -0
- package/dist/src/schematic/window.js +337 -0
- package/dist/src/schematic/window.js.map +1 -0
- package/dist/src/sheet/editing-bridge.d.ts +4 -2
- package/dist/src/sheet/editing-bridge.d.ts.map +1 -1
- package/dist/src/sheet/editing-bridge.js +8 -2
- package/dist/src/sheet/editing-bridge.js.map +1 -1
- package/dist/src/sheet/editing-types.d.ts +9 -5
- package/dist/src/sheet/editing-types.d.ts.map +1 -1
- package/dist/src/sheet/editing-types.js +9 -5
- package/dist/src/sheet/editing-types.js.map +1 -1
- package/dist/src/sheet/index.d.ts +18 -8
- package/dist/src/sheet/index.d.ts.map +1 -1
- package/dist/src/sheet/index.js +15 -7
- package/dist/src/sheet/index.js.map +1 -1
- package/dist/src/sheet/optimise.d.ts +69 -0
- package/dist/src/sheet/optimise.d.ts.map +1 -0
- package/dist/src/sheet/optimise.js +81 -0
- package/dist/src/sheet/optimise.js.map +1 -0
- package/dist/src/sheet/registers.d.ts +5 -5
- package/dist/src/sheet/registers.js +5 -5
- package/dist/src/sheet/root.d.ts +2 -0
- package/dist/src/sheet/root.d.ts.map +1 -1
- package/dist/src/sheet/root.js +2 -2
- package/dist/src/sheet/root.js.map +1 -1
- package/dist/src/sheet/sheet.d.ts +753 -573
- package/dist/src/sheet/sheet.d.ts.map +1 -1
- package/dist/src/sheet/sheet.js +45 -13
- package/dist/src/sheet/sheet.js.map +1 -1
- package/dist/src/sheet/types.d.ts +92 -12
- package/dist/src/sheet/types.d.ts.map +1 -1
- package/dist/src/sheet/types.js +4 -8
- package/dist/src/sheet/types.js.map +1 -1
- package/dist/src/utils/keyed-rows.d.ts +41 -0
- package/dist/src/utils/keyed-rows.d.ts.map +1 -0
- package/dist/src/utils/keyed-rows.js +64 -0
- package/dist/src/utils/keyed-rows.js.map +1 -0
- package/dist/src/utils/optimise.d.ts +79 -0
- package/dist/src/utils/optimise.d.ts.map +1 -0
- package/dist/src/utils/optimise.js +46 -0
- package/dist/src/utils/optimise.js.map +1 -0
- package/dist/test/allocation/allocation.examples.d.ts +6 -18
- package/dist/test/allocation/allocation.examples.d.ts.map +1 -1
- package/dist/test/allocation/allocation.examples.js +3 -3
- package/dist/test/allocation/allocation.examples.js.map +1 -1
- package/dist/test/allocation/optimise.examples.d.ts +109 -0
- package/dist/test/allocation/optimise.examples.d.ts.map +1 -0
- package/dist/test/allocation/optimise.examples.js +223 -0
- package/dist/test/allocation/optimise.examples.js.map +1 -0
- package/dist/test/bind/data/data.examples.d.ts +540 -36
- package/dist/test/bind/data/data.examples.d.ts.map +1 -1
- package/dist/test/bind/data/data.examples.js +66 -2
- package/dist/test/bind/data/data.examples.js.map +1 -1
- package/dist/test/bind/record/record.examples.d.ts +1 -3
- package/dist/test/bind/record/record.examples.d.ts.map +1 -1
- package/dist/test/calendar/calendar-records.examples.d.ts.map +1 -1
- package/dist/test/calendar/calendar-records.examples.js +3 -3
- package/dist/test/calendar/calendar-records.examples.js.map +1 -1
- package/dist/test/calendar/calendar-windows.examples.d.ts +9 -0
- package/dist/test/calendar/calendar-windows.examples.d.ts.map +1 -0
- package/dist/test/calendar/calendar-windows.examples.js +111 -0
- package/dist/test/calendar/calendar-windows.examples.js.map +1 -0
- package/dist/test/calendar/calendar.examples.d.ts +7 -21
- package/dist/test/calendar/calendar.examples.d.ts.map +1 -1
- package/dist/test/calendar/calendar.examples.js +7 -7
- package/dist/test/calendar/calendar.examples.js.map +1 -1
- package/dist/test/calendar/optimise.examples.d.ts +132 -0
- package/dist/test/calendar/optimise.examples.d.ts.map +1 -0
- package/dist/test/calendar/optimise.examples.js +75 -0
- package/dist/test/calendar/optimise.examples.js.map +1 -0
- package/dist/test/examples-package.d.ts +46 -10
- package/dist/test/examples-package.d.ts.map +1 -1
- package/dist/test/examples-package.js +142 -32
- package/dist/test/examples-package.js.map +1 -1
- package/dist/test/flowchart/flowchart.examples.d.ts +10 -30
- package/dist/test/flowchart/flowchart.examples.d.ts.map +1 -1
- package/dist/test/plan/optimise.examples.d.ts +207 -0
- package/dist/test/plan/optimise.examples.d.ts.map +1 -0
- package/dist/test/plan/optimise.examples.js +98 -0
- package/dist/test/plan/optimise.examples.js.map +1 -0
- package/dist/test/plan/plan-events.examples.d.ts +8 -24
- package/dist/test/plan/plan-events.examples.d.ts.map +1 -1
- package/dist/test/plan/plan-events.examples.js +3 -3
- package/dist/test/plan/plan-events.examples.js.map +1 -1
- package/dist/test/plan/plan-records.examples.d.ts +200 -19
- package/dist/test/plan/plan-records.examples.d.ts.map +1 -1
- package/dist/test/plan/plan-records.examples.js +125 -28
- package/dist/test/plan/plan-records.examples.js.map +1 -1
- package/dist/test/plan/plan-windows.examples.d.ts +853 -36
- package/dist/test/plan/plan-windows.examples.d.ts.map +1 -1
- package/dist/test/plan/plan-windows.examples.js +166 -29
- package/dist/test/plan/plan-windows.examples.js.map +1 -1
- package/dist/test/plan/plan.examples.d.ts +7 -21
- package/dist/test/plan/plan.examples.d.ts.map +1 -1
- package/dist/test/plan/plan.examples.js +11 -9
- package/dist/test/plan/plan.examples.js.map +1 -1
- package/dist/test/roster/domain.examples.d.ts +804 -0
- package/dist/test/roster/domain.examples.d.ts.map +1 -1
- package/dist/test/roster/domain.examples.js +3 -3
- package/dist/test/roster/domain.examples.js.map +1 -1
- package/dist/test/roster/optimise.examples.d.ts +485 -0
- package/dist/test/roster/optimise.examples.d.ts.map +1 -0
- package/dist/test/roster/optimise.examples.js +155 -0
- package/dist/test/roster/optimise.examples.js.map +1 -0
- package/dist/test/roster/roster-records.examples.d.ts +6 -18
- package/dist/test/roster/roster-records.examples.d.ts.map +1 -1
- package/dist/test/roster/roster-records.examples.js +1 -1
- package/dist/test/roster/roster-records.examples.js.map +1 -1
- package/dist/test/roster/roster.examples.d.ts +3391 -21
- package/dist/test/roster/roster.examples.d.ts.map +1 -1
- package/dist/test/roster/roster.examples.js +54 -7
- package/dist/test/roster/roster.examples.js.map +1 -1
- package/dist/test/roster/warehouse.d.ts +150 -7
- package/dist/test/roster/warehouse.d.ts.map +1 -1
- package/dist/test/roster/warehouse.js +36 -11
- package/dist/test/roster/warehouse.js.map +1 -1
- package/dist/test/schedule/schedule.examples.d.ts +1 -3
- package/dist/test/schedule/schedule.examples.d.ts.map +1 -1
- package/dist/test/schematic/schematic-records.examples.d.ts +444 -0
- package/dist/test/schematic/schematic-records.examples.d.ts.map +1 -0
- package/dist/test/schematic/schematic-records.examples.js +205 -0
- package/dist/test/schematic/schematic-records.examples.js.map +1 -0
- package/dist/test/schematic/schematic.examples.d.ts +2289 -0
- package/dist/test/schematic/schematic.examples.d.ts.map +1 -0
- package/dist/test/schematic/schematic.examples.js +453 -0
- package/dist/test/schematic/schematic.examples.js.map +1 -0
- package/dist/test/sheet/optimise.examples.d.ts +177 -0
- package/dist/test/sheet/optimise.examples.d.ts.map +1 -0
- package/dist/test/sheet/optimise.examples.js +75 -0
- package/dist/test/sheet/optimise.examples.js.map +1 -0
- package/dist/test/sheet/sheet-records.examples.d.ts +95 -204
- package/dist/test/sheet/sheet-records.examples.d.ts.map +1 -1
- package/dist/test/sheet/sheet-records.examples.js +42 -17
- package/dist/test/sheet/sheet-records.examples.js.map +1 -1
- package/dist/test/sheet/sheet.examples.d.ts +17 -33
- package/dist/test/sheet/sheet.examples.d.ts.map +1 -1
- package/dist/test/sheet/sheet.examples.js +18 -15
- package/dist/test/sheet/sheet.examples.js.map +1 -1
- package/package.json +11 -11
|
@@ -0,0 +1,177 @@
|
|
|
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
|
+
/** @jsxImportSource @elaraai/e3-ui */
|
|
6
|
+
/**
|
|
7
|
+
* The Sheet's optimiser (#1409, `Optimise Spec.md` §3): a shop's work orders in,
|
|
8
|
+
* the work orders out — `Sheet.Types.OptimiseRequest(OptimiseWorkOrder)` to
|
|
9
|
+
* `Sheet.Types.OptimiseResult(OptimiseWorkOrder)`, an `e3.function` — bound to
|
|
10
|
+
* the Sheet's `optimise`, which the Elara eye calls once per run and whose
|
|
11
|
+
* answer lands in the session as one edit, cell by cell.
|
|
12
|
+
*/
|
|
13
|
+
import { DateTimeType, DictType, IntegerType, OptionType, SortedMap, StringType, StructType, type ValueTypeOf } from "@elaraai/east";
|
|
14
|
+
/** A work order of a small shop: its reference, its job, its status, when it is due — none until it is scheduled — and its quantity. */
|
|
15
|
+
export declare const OptimiseWorkOrder: StructType<{
|
|
16
|
+
readonly reference: StringType;
|
|
17
|
+
readonly job: StringType;
|
|
18
|
+
readonly status: StringType;
|
|
19
|
+
readonly due: OptionType<DateTimeType>;
|
|
20
|
+
readonly quantity: IntegerType;
|
|
21
|
+
}>;
|
|
22
|
+
/** Eight work orders: five with a due date, three ready and with none. */
|
|
23
|
+
export declare const optimiseWorkOrderRows: SortedMap<string, ValueTypeOf<typeof OptimiseWorkOrder>>;
|
|
24
|
+
/** The work orders, the shop's own record, which the sheet writes through its patch door. */
|
|
25
|
+
export declare const optimiseWorkOrders: import("@elaraai/e3").RecordDef<DictType<StringType, StructType<{
|
|
26
|
+
readonly reference: StringType;
|
|
27
|
+
readonly job: StringType;
|
|
28
|
+
readonly status: StringType;
|
|
29
|
+
readonly due: OptionType<DateTimeType>;
|
|
30
|
+
readonly quantity: IntegerType;
|
|
31
|
+
}>>, [import("@elaraai/east").variant<"field", "records">, import("@elaraai/east").variant<"field", "optimise_work_orders">]>;
|
|
32
|
+
export declare const optimiseWorkOrdersPatch: import("@elaraai/e3").MutationDef<"patch", DictType<StringType, StructType<{
|
|
33
|
+
readonly reference: StringType;
|
|
34
|
+
readonly job: StringType;
|
|
35
|
+
readonly status: StringType;
|
|
36
|
+
readonly due: OptionType<DateTimeType>;
|
|
37
|
+
readonly quantity: IntegerType;
|
|
38
|
+
}>>, [import("@elaraai/east").VariantType<{
|
|
39
|
+
unchanged: import("@elaraai/east").NullType;
|
|
40
|
+
replace: StructType<{
|
|
41
|
+
before: DictType<StringType, StructType<{
|
|
42
|
+
readonly reference: StringType;
|
|
43
|
+
readonly job: StringType;
|
|
44
|
+
readonly status: StringType;
|
|
45
|
+
readonly due: OptionType<DateTimeType>;
|
|
46
|
+
readonly quantity: IntegerType;
|
|
47
|
+
}>>;
|
|
48
|
+
after: DictType<StringType, StructType<{
|
|
49
|
+
readonly reference: StringType;
|
|
50
|
+
readonly job: StringType;
|
|
51
|
+
readonly status: StringType;
|
|
52
|
+
readonly due: OptionType<DateTimeType>;
|
|
53
|
+
readonly quantity: IntegerType;
|
|
54
|
+
}>>;
|
|
55
|
+
}>;
|
|
56
|
+
patch: DictType<StringType, import("@elaraai/east").VariantType<{
|
|
57
|
+
delete: StructType<{
|
|
58
|
+
readonly reference: StringType;
|
|
59
|
+
readonly job: StringType;
|
|
60
|
+
readonly status: StringType;
|
|
61
|
+
readonly due: OptionType<DateTimeType>;
|
|
62
|
+
readonly quantity: IntegerType;
|
|
63
|
+
}>;
|
|
64
|
+
insert: StructType<{
|
|
65
|
+
readonly reference: StringType;
|
|
66
|
+
readonly job: StringType;
|
|
67
|
+
readonly status: StringType;
|
|
68
|
+
readonly due: OptionType<DateTimeType>;
|
|
69
|
+
readonly quantity: IntegerType;
|
|
70
|
+
}>;
|
|
71
|
+
update: import("@elaraai/east").VariantType<{
|
|
72
|
+
unchanged: import("@elaraai/east").NullType;
|
|
73
|
+
replace: StructType<{
|
|
74
|
+
before: StructType<{
|
|
75
|
+
readonly reference: StringType;
|
|
76
|
+
readonly job: StringType;
|
|
77
|
+
readonly status: StringType;
|
|
78
|
+
readonly due: OptionType<DateTimeType>;
|
|
79
|
+
readonly quantity: IntegerType;
|
|
80
|
+
}>;
|
|
81
|
+
after: StructType<{
|
|
82
|
+
readonly reference: StringType;
|
|
83
|
+
readonly job: StringType;
|
|
84
|
+
readonly status: StringType;
|
|
85
|
+
readonly due: OptionType<DateTimeType>;
|
|
86
|
+
readonly quantity: IntegerType;
|
|
87
|
+
}>;
|
|
88
|
+
}>;
|
|
89
|
+
patch: StructType<{
|
|
90
|
+
readonly reference: import("@elaraai/east").VariantType<{
|
|
91
|
+
unchanged: import("@elaraai/east").NullType;
|
|
92
|
+
replace: StructType<{
|
|
93
|
+
before: StringType;
|
|
94
|
+
after: StringType;
|
|
95
|
+
}>;
|
|
96
|
+
}>;
|
|
97
|
+
readonly job: import("@elaraai/east").VariantType<{
|
|
98
|
+
unchanged: import("@elaraai/east").NullType;
|
|
99
|
+
replace: StructType<{
|
|
100
|
+
before: StringType;
|
|
101
|
+
after: StringType;
|
|
102
|
+
}>;
|
|
103
|
+
}>;
|
|
104
|
+
readonly status: import("@elaraai/east").VariantType<{
|
|
105
|
+
unchanged: import("@elaraai/east").NullType;
|
|
106
|
+
replace: StructType<{
|
|
107
|
+
before: StringType;
|
|
108
|
+
after: StringType;
|
|
109
|
+
}>;
|
|
110
|
+
}>;
|
|
111
|
+
readonly due: import("@elaraai/east").VariantType<{
|
|
112
|
+
unchanged: import("@elaraai/east").NullType;
|
|
113
|
+
replace: StructType<{
|
|
114
|
+
before: OptionType<DateTimeType>;
|
|
115
|
+
after: OptionType<DateTimeType>;
|
|
116
|
+
}>;
|
|
117
|
+
patch: import("@elaraai/east").VariantType<{
|
|
118
|
+
none: import("@elaraai/east").VariantType<{
|
|
119
|
+
unchanged: import("@elaraai/east").NullType;
|
|
120
|
+
replace: StructType<{
|
|
121
|
+
before: import("@elaraai/east").NullType;
|
|
122
|
+
after: import("@elaraai/east").NullType;
|
|
123
|
+
}>;
|
|
124
|
+
}>;
|
|
125
|
+
some: import("@elaraai/east").VariantType<{
|
|
126
|
+
unchanged: import("@elaraai/east").NullType;
|
|
127
|
+
replace: StructType<{
|
|
128
|
+
before: DateTimeType;
|
|
129
|
+
after: DateTimeType;
|
|
130
|
+
}>;
|
|
131
|
+
}>;
|
|
132
|
+
}>;
|
|
133
|
+
}>;
|
|
134
|
+
readonly quantity: import("@elaraai/east").VariantType<{
|
|
135
|
+
unchanged: import("@elaraai/east").NullType;
|
|
136
|
+
replace: StructType<{
|
|
137
|
+
before: IntegerType;
|
|
138
|
+
after: IntegerType;
|
|
139
|
+
}>;
|
|
140
|
+
}>;
|
|
141
|
+
}>;
|
|
142
|
+
}>;
|
|
143
|
+
}>>;
|
|
144
|
+
}>]>;
|
|
145
|
+
/**
|
|
146
|
+
* The shop's optimiser's body: every order with no due date is given one — the day after the latest due the orders hold,
|
|
147
|
+
* then a day later for each in key order — and set Scheduled; every other order stays as it is.
|
|
148
|
+
*/
|
|
149
|
+
export declare const sheetOptimiseBody: import("@elaraai/east").CallableFunctionExpr<[import("@elaraai/e3-ui").SheetOptimiseRequestType<StructType<{
|
|
150
|
+
readonly reference: StringType;
|
|
151
|
+
readonly job: StringType;
|
|
152
|
+
readonly status: StringType;
|
|
153
|
+
readonly due: OptionType<DateTimeType>;
|
|
154
|
+
readonly quantity: IntegerType;
|
|
155
|
+
}>, StringType>], import("@elaraai/e3-ui").SheetOptimiseResultType<StructType<{
|
|
156
|
+
readonly reference: StringType;
|
|
157
|
+
readonly job: StringType;
|
|
158
|
+
readonly status: StringType;
|
|
159
|
+
readonly due: OptionType<DateTimeType>;
|
|
160
|
+
readonly quantity: IntegerType;
|
|
161
|
+
}>, StringType>>;
|
|
162
|
+
/** The shop's optimiser, on e3: every order with no due date given one, and set Scheduled. */
|
|
163
|
+
export declare const setDueDates: import("@elaraai/e3").FunctionDef<[import("@elaraai/e3-ui").SheetOptimiseRequestType<StructType<{
|
|
164
|
+
readonly reference: StringType;
|
|
165
|
+
readonly job: StringType;
|
|
166
|
+
readonly status: StringType;
|
|
167
|
+
readonly due: OptionType<DateTimeType>;
|
|
168
|
+
readonly quantity: IntegerType;
|
|
169
|
+
}>, StringType>], import("@elaraai/e3-ui").SheetOptimiseResultType<StructType<{
|
|
170
|
+
readonly reference: StringType;
|
|
171
|
+
readonly job: StringType;
|
|
172
|
+
readonly status: StringType;
|
|
173
|
+
readonly due: OptionType<DateTimeType>;
|
|
174
|
+
readonly quantity: IntegerType;
|
|
175
|
+
}>, StringType>>;
|
|
176
|
+
export declare const sheetOptimise: import("@elaraai/east").ExampleDef<[], any>;
|
|
177
|
+
//# sourceMappingURL=optimise.examples.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optimise.examples.d.ts","sourceRoot":"","sources":["../../../test/sheet/optimise.examples.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AACH,sCAAsC;AACtC;;;;;;GAMG;AACH,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAQ,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAmC,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAK5K,wIAAwI;AACxI,eAAO,MAAM,iBAAiB;;;;;;EAAmI,CAAC;AAClK,0EAA0E;AAC1E,eAAO,MAAM,qBAAqB,EAAE,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,iBAAiB,CAAC,CASjE,CAAC;AAC3B,6FAA6F;AAC7F,eAAO,MAAM,kBAAkB;;;;;;6HAAoG,CAAC;AACpI,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAwC,CAAC;AAE7E;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;gBAiB5B,CAAC;AACH,8FAA8F;AAC9F,eAAO,MAAM,WAAW;;;;;;;;;;;;gBAAwD,CAAC;AAEjF,eAAO,MAAM,aAAa,6CAmBxB,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { jsx as _jsx } from "@elaraai/e3-ui/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
4
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
5
|
+
*/
|
|
6
|
+
/** @jsxImportSource @elaraai/e3-ui */
|
|
7
|
+
/**
|
|
8
|
+
* The Sheet's optimiser (#1409, `Optimise Spec.md` §3): a shop's work orders in,
|
|
9
|
+
* the work orders out — `Sheet.Types.OptimiseRequest(OptimiseWorkOrder)` to
|
|
10
|
+
* `Sheet.Types.OptimiseResult(OptimiseWorkOrder)`, an `e3.function` — bound to
|
|
11
|
+
* the Sheet's `optimise`, which the Elara eye calls once per run and whose
|
|
12
|
+
* answer lands in the session as one edit, cell by cell.
|
|
13
|
+
*/
|
|
14
|
+
import { DateTimeType, DictType, East, IntegerType, OptionType, SortedMap, StringType, StructType, compareFor, example, none, some } from "@elaraai/east";
|
|
15
|
+
import e3 from "@elaraai/e3";
|
|
16
|
+
import { Box, Reactive, UIComponentType } from "@elaraai/east-ui";
|
|
17
|
+
import { Func, Record, Sheet } from "@elaraai/e3-ui";
|
|
18
|
+
/** A work order of a small shop: its reference, its job, its status, when it is due — none until it is scheduled — and its quantity. */
|
|
19
|
+
export const OptimiseWorkOrder = StructType({ reference: StringType, job: StringType, status: StringType, due: OptionType(DateTimeType), quantity: IntegerType });
|
|
20
|
+
/** Eight work orders: five with a due date, three ready and with none. */
|
|
21
|
+
export const optimiseWorkOrderRows = new SortedMap([
|
|
22
|
+
["WO-1001", { reference: "WO-1001", job: "Cut panels", status: "Scheduled", due: some(new Date("2026-10-06T00:00:00Z")), quantity: 400n }],
|
|
23
|
+
["WO-1002", { reference: "WO-1002", job: "Edge band", status: "Scheduled", due: some(new Date("2026-10-07T00:00:00Z")), quantity: 1200n }],
|
|
24
|
+
["WO-1003", { reference: "WO-1003", job: "Inspect", status: "Done", due: some(new Date("2026-10-02T00:00:00Z")), quantity: 300n }],
|
|
25
|
+
["WO-1004", { reference: "WO-1004", job: "Pack", status: "Scheduled", due: some(new Date("2026-10-08T00:00:00Z")), quantity: 150n }],
|
|
26
|
+
["WO-1005", { reference: "WO-1005", job: "Cut panels", status: "Ready", due: none, quantity: 800n }],
|
|
27
|
+
["WO-1006", { reference: "WO-1006", job: "Edge band", status: "Scheduled", due: some(new Date("2026-10-09T00:00:00Z")), quantity: 600n }],
|
|
28
|
+
["WO-1007", { reference: "WO-1007", job: "Inspect", status: "Ready", due: none, quantity: 200n }],
|
|
29
|
+
["WO-1008", { reference: "WO-1008", job: "Pack", status: "Ready", due: none, quantity: 500n }],
|
|
30
|
+
], compareFor(StringType));
|
|
31
|
+
/** The work orders, the shop's own record, which the sheet writes through its patch door. */
|
|
32
|
+
export const optimiseWorkOrders = e3.record("optimise_work_orders", DictType(StringType, OptimiseWorkOrder), optimiseWorkOrderRows);
|
|
33
|
+
export const optimiseWorkOrdersPatch = e3.mutation.patch(optimiseWorkOrders);
|
|
34
|
+
/**
|
|
35
|
+
* The shop's optimiser's body: every order with no due date is given one — the day after the latest due the orders hold,
|
|
36
|
+
* then a day later for each in key order — and set Scheduled; every other order stays as it is.
|
|
37
|
+
*/
|
|
38
|
+
export const sheetOptimiseBody = East.function([Sheet.Types.OptimiseRequest(OptimiseWorkOrder)], Sheet.Types.OptimiseResult(OptimiseWorkOrder), ($, req) => {
|
|
39
|
+
const rows = $.let(new Map(), DictType(StringType, OptimiseWorkOrder));
|
|
40
|
+
// The latest due date the orders hold: the first order scheduled is due the day after it.
|
|
41
|
+
const latest = $.let(new Date("2026-10-01T00:00:00Z"), DateTimeType);
|
|
42
|
+
$.for(req.rows, ($2, order) => {
|
|
43
|
+
$2.match(order.due, { some: ($3, due) => { $3.if(East.less(latest, due), ($4) => { $4.assign(latest, due); }); } });
|
|
44
|
+
});
|
|
45
|
+
$.for(req.rows, ($2, order, key) => {
|
|
46
|
+
$2.match(order.due, {
|
|
47
|
+
some: ($3) => { $3(rows.insert(key, order)); },
|
|
48
|
+
none: ($3) => {
|
|
49
|
+
$3.assign(latest, latest.addDays(1n));
|
|
50
|
+
$3(rows.insert(key, { reference: order.reference, job: order.job, status: "Scheduled", due: some(latest), quantity: order.quantity }));
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
return { rows };
|
|
55
|
+
});
|
|
56
|
+
/** The shop's optimiser, on e3: every order with no due date given one, and set Scheduled. */
|
|
57
|
+
export const setDueDates = e3.function("sheet_set_due_dates", sheetOptimiseBody);
|
|
58
|
+
export const sheetOptimise = example({
|
|
59
|
+
inputs: [],
|
|
60
|
+
description: "A sheet of work orders with the Elara eye (#1409): `optimise` is Func.bind of the shop's optimiser on e3 — Sheet.Types.OptimiseRequest(OptimiseWorkOrder) in, the run number and the rows in view by key as the session holds them; Sheet.Types.OptimiseResult(OptimiseWorkOrder) out, the rows complete, each order with no due date given one and set Scheduled. A click on the eye runs it once; the result lands in the session as one edit, cell by cell, which one Undo reverts and Save commits with everything else.",
|
|
61
|
+
keywords: ["Sheet", "optimise", "Optimise", "Elara", "OptimiseRequest", "OptimiseResult", "Func.bind", "e3.function", "one edit", "Undo", "Record.bind", "Sheet.column.date", "Sheet.column.integer"],
|
|
62
|
+
fn: East.function([], UIComponentType, _$ => _jsx(Reactive, { children: $ => {
|
|
63
|
+
const orders = $.let(Record.bind(optimiseWorkOrders, [optimiseWorkOrdersPatch]));
|
|
64
|
+
// The app's optimiser: the eye calls it once per run over the rows in view, and its answer is one edit.
|
|
65
|
+
const optimise = $.let(Func.bind(setDueDates));
|
|
66
|
+
return _jsx(Box, { height: "560px", children: _jsx(Sheet, { record: orders, name: "sheetOptimise", optimise: optimise, columns: {
|
|
67
|
+
reference: Sheet.column.text(OptimiseWorkOrder, { header: "Reference", width: "136px" }),
|
|
68
|
+
job: Sheet.column.text(OptimiseWorkOrder, { header: "Job", width: "180px" }),
|
|
69
|
+
status: Sheet.column.text(OptimiseWorkOrder, { header: "Status", width: "120px" }),
|
|
70
|
+
due: Sheet.column.date(OptimiseWorkOrder, { header: "Due", width: "144px" }),
|
|
71
|
+
quantity: Sheet.column.integer(OptimiseWorkOrder, { header: "Quantity", width: "112px" }),
|
|
72
|
+
} }) });
|
|
73
|
+
} })),
|
|
74
|
+
});
|
|
75
|
+
//# sourceMappingURL=optimise.examples.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optimise.examples.js","sourceRoot":"","sources":["../../../test/sheet/optimise.examples.tsx"],"names":[],"mappings":"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"}
|