@elaraai/e3-ui 1.0.93 → 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.
Files changed (303) hide show
  1. package/dist/src/allocation/adapters.d.ts +159 -0
  2. package/dist/src/allocation/adapters.d.ts.map +1 -0
  3. package/dist/src/allocation/adapters.js +241 -0
  4. package/dist/src/allocation/adapters.js.map +1 -0
  5. package/dist/src/allocation/functions.d.ts +664 -0
  6. package/dist/src/allocation/functions.d.ts.map +1 -0
  7. package/dist/src/allocation/functions.js +782 -0
  8. package/dist/src/allocation/functions.js.map +1 -0
  9. package/dist/src/allocation/index.d.ts +2985 -0
  10. package/dist/src/allocation/index.d.ts.map +1 -0
  11. package/dist/src/allocation/index.js +499 -0
  12. package/dist/src/allocation/index.js.map +1 -0
  13. package/dist/src/allocation/types.d.ts +832 -0
  14. package/dist/src/allocation/types.d.ts.map +1 -0
  15. package/dist/src/allocation/types.js +360 -0
  16. package/dist/src/allocation/types.js.map +1 -0
  17. package/dist/src/bind/func.d.ts +14 -0
  18. package/dist/src/bind/func.d.ts.map +1 -1
  19. package/dist/src/bind/func.js +22 -1
  20. package/dist/src/bind/func.js.map +1 -1
  21. package/dist/src/calendar/index.d.ts +510 -1639
  22. package/dist/src/calendar/index.d.ts.map +1 -1
  23. package/dist/src/calendar/index.js +56 -29
  24. package/dist/src/calendar/index.js.map +1 -1
  25. package/dist/src/flowchart/canvas.d.ts +9 -21
  26. package/dist/src/flowchart/canvas.d.ts.map +1 -1
  27. package/dist/src/flowchart/canvas.js +10 -22
  28. package/dist/src/flowchart/canvas.js.map +1 -1
  29. package/dist/src/flowchart/flowchart.d.ts +19 -13
  30. package/dist/src/flowchart/flowchart.d.ts.map +1 -1
  31. package/dist/src/flowchart/flowchart.js.map +1 -1
  32. package/dist/src/flowchart/index.d.ts +44 -21
  33. package/dist/src/flowchart/index.d.ts.map +1 -1
  34. package/dist/src/flowchart/index.js +43 -20
  35. package/dist/src/flowchart/index.js.map +1 -1
  36. package/dist/src/flowchart/library.d.ts +166 -81
  37. package/dist/src/flowchart/library.d.ts.map +1 -1
  38. package/dist/src/flowchart/library.js +232 -105
  39. package/dist/src/flowchart/library.js.map +1 -1
  40. package/dist/src/flowchart/over.d.ts +9 -16
  41. package/dist/src/flowchart/over.d.ts.map +1 -1
  42. package/dist/src/flowchart/over.js +9 -16
  43. package/dist/src/flowchart/over.js.map +1 -1
  44. package/dist/src/flowchart/payload.d.ts +710 -508
  45. package/dist/src/flowchart/payload.d.ts.map +1 -1
  46. package/dist/src/flowchart/payload.js +128 -74
  47. package/dist/src/flowchart/payload.js.map +1 -1
  48. package/dist/src/flowchart/window.d.ts +132 -347
  49. package/dist/src/flowchart/window.d.ts.map +1 -1
  50. package/dist/src/flowchart/window.js +48 -55
  51. package/dist/src/flowchart/window.js.map +1 -1
  52. package/dist/src/index.d.ts +11 -7
  53. package/dist/src/index.d.ts.map +1 -1
  54. package/dist/src/index.js +14 -6
  55. package/dist/src/index.js.map +1 -1
  56. package/dist/src/internal.d.ts +18 -7
  57. package/dist/src/internal.d.ts.map +1 -1
  58. package/dist/src/internal.js +28 -9
  59. package/dist/src/internal.js.map +1 -1
  60. package/dist/src/plan/event-rows.d.ts +26 -10
  61. package/dist/src/plan/event-rows.d.ts.map +1 -1
  62. package/dist/src/plan/event-rows.js +39 -13
  63. package/dist/src/plan/event-rows.js.map +1 -1
  64. package/dist/src/plan/ir.d.ts +244 -815
  65. package/dist/src/plan/ir.d.ts.map +1 -1
  66. package/dist/src/plan/ir.js +8 -6
  67. package/dist/src/plan/ir.js.map +1 -1
  68. package/dist/src/plan/library.d.ts +3 -0
  69. package/dist/src/plan/library.d.ts.map +1 -1
  70. package/dist/src/plan/library.js +1 -1
  71. package/dist/src/plan/library.js.map +1 -1
  72. package/dist/src/plan/ordered-source.d.ts +1 -0
  73. package/dist/src/plan/ordered-source.d.ts.map +1 -1
  74. package/dist/src/plan/plan.d.ts +559 -1667
  75. package/dist/src/plan/plan.d.ts.map +1 -1
  76. package/dist/src/plan/plan.js +123 -45
  77. package/dist/src/plan/plan.js.map +1 -1
  78. package/dist/src/plan/root.d.ts +16 -20
  79. package/dist/src/plan/root.d.ts.map +1 -1
  80. package/dist/src/plan/root.js +23 -33
  81. package/dist/src/plan/root.js.map +1 -1
  82. package/dist/src/roster/coverage.d.ts +17 -231
  83. package/dist/src/roster/coverage.d.ts.map +1 -1
  84. package/dist/src/roster/coverage.js +94 -90
  85. package/dist/src/roster/coverage.js.map +1 -1
  86. package/dist/src/roster/fit.d.ts +59 -0
  87. package/dist/src/roster/fit.d.ts.map +1 -0
  88. package/dist/src/roster/fit.js +155 -0
  89. package/dist/src/roster/fit.js.map +1 -0
  90. package/dist/src/roster/index.d.ts +2862 -3662
  91. package/dist/src/roster/index.d.ts.map +1 -1
  92. package/dist/src/roster/index.js +383 -81
  93. package/dist/src/roster/index.js.map +1 -1
  94. package/dist/src/roster/library.d.ts +37 -92
  95. package/dist/src/roster/library.d.ts.map +1 -1
  96. package/dist/src/roster/library.js +25 -64
  97. package/dist/src/roster/library.js.map +1 -1
  98. package/dist/src/roster/lists.d.ts +195 -0
  99. package/dist/src/roster/lists.d.ts.map +1 -0
  100. package/dist/src/roster/lists.js +233 -0
  101. package/dist/src/roster/lists.js.map +1 -0
  102. package/dist/src/roster/rules.d.ts +17 -260
  103. package/dist/src/roster/rules.d.ts.map +1 -1
  104. package/dist/src/roster/rules.js +135 -132
  105. package/dist/src/roster/rules.js.map +1 -1
  106. package/dist/src/roster/targets.d.ts +115 -0
  107. package/dist/src/roster/targets.d.ts.map +1 -0
  108. package/dist/src/roster/targets.js +213 -0
  109. package/dist/src/roster/targets.js.map +1 -0
  110. package/dist/src/roster/times.d.ts +251 -0
  111. package/dist/src/roster/times.d.ts.map +1 -0
  112. package/dist/src/roster/times.js +174 -0
  113. package/dist/src/roster/times.js.map +1 -0
  114. package/dist/src/roster/types.d.ts +828 -183
  115. package/dist/src/roster/types.d.ts.map +1 -1
  116. package/dist/src/roster/types.js +224 -97
  117. package/dist/src/roster/types.js.map +1 -1
  118. package/dist/src/schedule/accessor.d.ts +28 -0
  119. package/dist/src/schedule/accessor.d.ts.map +1 -0
  120. package/dist/src/schedule/accessor.js +39 -0
  121. package/dist/src/schedule/accessor.js.map +1 -0
  122. package/dist/src/schedule/events.d.ts +170 -42
  123. package/dist/src/schedule/events.d.ts.map +1 -1
  124. package/dist/src/schedule/events.js +431 -171
  125. package/dist/src/schedule/events.js.map +1 -1
  126. package/dist/src/schedule/index.d.ts +41 -4
  127. package/dist/src/schedule/index.d.ts.map +1 -1
  128. package/dist/src/schedule/index.js +35 -3
  129. package/dist/src/schedule/index.js.map +1 -1
  130. package/dist/src/schedule/library.d.ts +13 -3
  131. package/dist/src/schedule/library.d.ts.map +1 -1
  132. package/dist/src/schedule/library.js +11 -4
  133. package/dist/src/schedule/library.js.map +1 -1
  134. package/dist/src/schedule/periods.d.ts +115 -0
  135. package/dist/src/schedule/periods.d.ts.map +1 -0
  136. package/dist/src/schedule/periods.js +215 -0
  137. package/dist/src/schedule/periods.js.map +1 -0
  138. package/dist/src/schedule/record-window.d.ts +25 -3
  139. package/dist/src/schedule/record-window.d.ts.map +1 -1
  140. package/dist/src/schedule/record-window.js +31 -18
  141. package/dist/src/schedule/record-window.js.map +1 -1
  142. package/dist/src/schedule/resources.d.ts +82 -4
  143. package/dist/src/schedule/resources.d.ts.map +1 -1
  144. package/dist/src/schedule/resources.js +44 -14
  145. package/dist/src/schedule/resources.js.map +1 -1
  146. package/dist/src/schedule/session.d.ts +69 -0
  147. package/dist/src/schedule/session.d.ts.map +1 -0
  148. package/dist/src/schedule/session.js +121 -0
  149. package/dist/src/schedule/session.js.map +1 -0
  150. package/dist/src/schedule/templates.d.ts +14 -2
  151. package/dist/src/schedule/templates.d.ts.map +1 -1
  152. package/dist/src/schedule/templates.js +5 -3
  153. package/dist/src/schedule/templates.js.map +1 -1
  154. package/dist/src/schedule/types.d.ts +1671 -37
  155. package/dist/src/schedule/types.d.ts.map +1 -1
  156. package/dist/src/schedule/types.js +196 -5
  157. package/dist/src/schedule/types.js.map +1 -1
  158. package/dist/src/schedule/window.d.ts +14 -0
  159. package/dist/src/schedule/window.d.ts.map +1 -1
  160. package/dist/src/schedule/window.js +14 -4
  161. package/dist/src/schedule/window.js.map +1 -1
  162. package/dist/src/schedule/words.d.ts +22 -0
  163. package/dist/src/schedule/words.d.ts.map +1 -0
  164. package/dist/src/schedule/words.js +25 -0
  165. package/dist/src/schedule/words.js.map +1 -0
  166. package/dist/src/sheet/index.d.ts +61 -27
  167. package/dist/src/sheet/index.d.ts.map +1 -1
  168. package/dist/src/sheet/index.js +59 -25
  169. package/dist/src/sheet/index.js.map +1 -1
  170. package/dist/src/sheet/library.d.ts +21 -3
  171. package/dist/src/sheet/library.d.ts.map +1 -1
  172. package/dist/src/sheet/library.js +23 -6
  173. package/dist/src/sheet/library.js.map +1 -1
  174. package/dist/src/sheet/registers.d.ts +100 -85
  175. package/dist/src/sheet/registers.d.ts.map +1 -1
  176. package/dist/src/sheet/registers.js +100 -85
  177. package/dist/src/sheet/registers.js.map +1 -1
  178. package/dist/src/sheet/root.d.ts +8 -12
  179. package/dist/src/sheet/root.d.ts.map +1 -1
  180. package/dist/src/sheet/root.js +6 -40
  181. package/dist/src/sheet/root.js.map +1 -1
  182. package/dist/src/sheet/sheet.d.ts +598 -2349
  183. package/dist/src/sheet/sheet.d.ts.map +1 -1
  184. package/dist/src/sheet/sheet.js +124 -37
  185. package/dist/src/sheet/sheet.js.map +1 -1
  186. package/dist/src/sheet/sub-rows.d.ts +74 -28
  187. package/dist/src/sheet/sub-rows.d.ts.map +1 -1
  188. package/dist/src/sheet/sub-rows.js +74 -28
  189. package/dist/src/sheet/sub-rows.js.map +1 -1
  190. package/dist/src/sheet/templates.d.ts +98 -34
  191. package/dist/src/sheet/templates.d.ts.map +1 -1
  192. package/dist/src/sheet/templates.js +102 -58
  193. package/dist/src/sheet/templates.js.map +1 -1
  194. package/dist/src/sheet/types.d.ts +289 -1359
  195. package/dist/src/sheet/types.d.ts.map +1 -1
  196. package/dist/src/sheet/types.js +20 -26
  197. package/dist/src/sheet/types.js.map +1 -1
  198. package/dist/src/sheet/views.d.ts +10 -11
  199. package/dist/src/sheet/views.d.ts.map +1 -1
  200. package/dist/src/sheet/views.js +15 -20
  201. package/dist/src/sheet/views.js.map +1 -1
  202. package/dist/src/{roster/visibility.d.ts → utils/key-visibility.d.ts} +42 -7
  203. package/dist/src/utils/key-visibility.d.ts.map +1 -0
  204. package/dist/src/utils/key-visibility.js +36 -0
  205. package/dist/src/utils/key-visibility.js.map +1 -0
  206. package/dist/src/utils/ordered-source.d.ts +1 -0
  207. package/dist/src/utils/ordered-source.d.ts.map +1 -1
  208. package/dist/src/utils/ordered-source.js +8 -3
  209. package/dist/src/utils/ordered-source.js.map +1 -1
  210. package/dist/src/utils/record-sources.d.ts +107 -0
  211. package/dist/src/utils/record-sources.d.ts.map +1 -0
  212. package/dist/src/utils/record-sources.js +132 -0
  213. package/dist/src/utils/record-sources.js.map +1 -0
  214. package/dist/test/allocation/allocation.examples.d.ts +2902 -0
  215. package/dist/test/allocation/allocation.examples.d.ts.map +1 -0
  216. package/dist/test/allocation/allocation.examples.js +643 -0
  217. package/dist/test/allocation/allocation.examples.js.map +1 -0
  218. package/dist/test/allocation/fit.examples.d.ts +546 -0
  219. package/dist/test/allocation/fit.examples.d.ts.map +1 -0
  220. package/dist/test/allocation/fit.examples.js +171 -0
  221. package/dist/test/allocation/fit.examples.js.map +1 -0
  222. package/dist/test/allocation/kiln-yard.d.ts +181 -0
  223. package/dist/test/allocation/kiln-yard.d.ts.map +1 -0
  224. package/dist/test/allocation/kiln-yard.js +228 -0
  225. package/dist/test/allocation/kiln-yard.js.map +1 -0
  226. package/dist/test/bind/data/data.examples.d.ts +651 -1
  227. package/dist/test/bind/data/data.examples.d.ts.map +1 -1
  228. package/dist/test/bind/data/data.examples.js +140 -2
  229. package/dist/test/bind/data/data.examples.js.map +1 -1
  230. package/dist/test/bind/func/func.examples.d.ts +10 -1
  231. package/dist/test/bind/func/func.examples.d.ts.map +1 -1
  232. package/dist/test/bind/func/func.examples.js +8 -1
  233. package/dist/test/bind/func/func.examples.js.map +1 -1
  234. package/dist/test/bind/record/record.examples.d.ts +633 -1
  235. package/dist/test/bind/record/record.examples.d.ts.map +1 -1
  236. package/dist/test/bind/record/record.examples.js +26 -2
  237. package/dist/test/bind/record/record.examples.js.map +1 -1
  238. package/dist/test/calendar/calendar-records.examples.d.ts.map +1 -1
  239. package/dist/test/calendar/calendar-records.examples.js +18 -14
  240. package/dist/test/calendar/calendar-records.examples.js.map +1 -1
  241. package/dist/test/calendar/calendar.examples.d.ts +521 -16
  242. package/dist/test/calendar/calendar.examples.d.ts.map +1 -1
  243. package/dist/test/calendar/calendar.examples.js +182 -135
  244. package/dist/test/calendar/calendar.examples.js.map +1 -1
  245. package/dist/test/examples-package.d.ts +75 -0
  246. package/dist/test/examples-package.d.ts.map +1 -0
  247. package/dist/test/examples-package.js +263 -0
  248. package/dist/test/examples-package.js.map +1 -0
  249. package/dist/test/flowchart/flowchart.examples.d.ts +211 -19
  250. package/dist/test/flowchart/flowchart.examples.d.ts.map +1 -1
  251. package/dist/test/flowchart/flowchart.examples.js +102 -75
  252. package/dist/test/flowchart/flowchart.examples.js.map +1 -1
  253. package/dist/test/plan/plan-events.examples.d.ts +1439 -209
  254. package/dist/test/plan/plan-events.examples.d.ts.map +1 -1
  255. package/dist/test/plan/plan-events.examples.js +199 -59
  256. package/dist/test/plan/plan-events.examples.js.map +1 -1
  257. package/dist/test/plan/plan-records.examples.d.ts +420 -0
  258. package/dist/test/plan/plan-records.examples.d.ts.map +1 -1
  259. package/dist/test/plan/plan-records.examples.js +70 -19
  260. package/dist/test/plan/plan-records.examples.js.map +1 -1
  261. package/dist/test/plan/plan-windows.examples.d.ts +636 -55
  262. package/dist/test/plan/plan-windows.examples.d.ts.map +1 -1
  263. package/dist/test/plan/plan-windows.examples.js +69 -33
  264. package/dist/test/plan/plan-windows.examples.js.map +1 -1
  265. package/dist/test/plan/plan.examples.d.ts +153 -31
  266. package/dist/test/plan/plan.examples.d.ts.map +1 -1
  267. package/dist/test/plan/plan.examples.js +178 -101
  268. package/dist/test/plan/plan.examples.js.map +1 -1
  269. package/dist/test/roster/domain.examples.d.ts +467 -250
  270. package/dist/test/roster/domain.examples.d.ts.map +1 -1
  271. package/dist/test/roster/domain.examples.js +92 -29
  272. package/dist/test/roster/domain.examples.js.map +1 -1
  273. package/dist/test/roster/roster-records.examples.d.ts +430 -586
  274. package/dist/test/roster/roster-records.examples.d.ts.map +1 -1
  275. package/dist/test/roster/roster-records.examples.js +102 -43
  276. package/dist/test/roster/roster-records.examples.js.map +1 -1
  277. package/dist/test/roster/roster.examples.d.ts +2319 -606
  278. package/dist/test/roster/roster.examples.d.ts.map +1 -1
  279. package/dist/test/roster/roster.examples.js +456 -148
  280. package/dist/test/roster/roster.examples.js.map +1 -1
  281. package/dist/test/roster/warehouse.d.ts +172 -63
  282. package/dist/test/roster/warehouse.d.ts.map +1 -1
  283. package/dist/test/roster/warehouse.js +172 -39
  284. package/dist/test/roster/warehouse.js.map +1 -1
  285. package/dist/test/schedule/schedule.examples.d.ts +3499 -0
  286. package/dist/test/schedule/schedule.examples.d.ts.map +1 -0
  287. package/dist/test/schedule/schedule.examples.js +192 -0
  288. package/dist/test/schedule/schedule.examples.js.map +1 -0
  289. package/dist/test/sheet/sheet-records.examples.d.ts.map +1 -1
  290. package/dist/test/sheet/sheet-records.examples.js +22 -18
  291. package/dist/test/sheet/sheet-records.examples.js.map +1 -1
  292. package/dist/test/sheet/sheet.examples.d.ts +715 -26
  293. package/dist/test/sheet/sheet.examples.d.ts.map +1 -1
  294. package/dist/test/sheet/sheet.examples.js +204 -130
  295. package/dist/test/sheet/sheet.examples.js.map +1 -1
  296. package/package.json +17 -10
  297. package/dist/src/roster/people.d.ts +0 -50
  298. package/dist/src/roster/people.d.ts.map +0 -1
  299. package/dist/src/roster/people.js +0 -32
  300. package/dist/src/roster/people.js.map +0 -1
  301. package/dist/src/roster/visibility.d.ts.map +0 -1
  302. package/dist/src/roster/visibility.js +0 -25
  303. package/dist/src/roster/visibility.js.map +0 -1
@@ -27,10 +27,19 @@
27
27
  * beside one, and the keys are Strings, as the canvas seeks them. The Calendar
28
28
  * reads a kind's resources whole, and refuses a paged one.
29
29
  *
30
+ * The builders over the app's own records read their resources through
31
+ * accessors beside Plan's (#1367, `Builder Interfaces Spec.md` §4.2): the
32
+ * Roster's people — a person's position, skills, contract hours, and whether
33
+ * they are an agency's, a trainer or a trainee, and their usual shift — and
34
+ * the Allocation's lanes (`offset`) and resources (`min`, `max`, `note`,
35
+ * `hold`, `jobs`). Each accessor is reified once, held to the type it returns,
36
+ * and the kind carries them all (`accessors`) for its builder to call per row.
37
+ *
30
38
  * @packageDocumentation
31
39
  */
32
- import { BooleanType, DictType, FunctionType, OptionType, StringType, type EastType, type ExprType, type SubtypeExprOrValue } from "@elaraai/east";
33
- import { StatusValueType } from "@elaraai/east-ui";
40
+ import { ArrayType, BooleanType, DictType, FloatType, FunctionType, OptionType, SetType, StringType, type EastType, type ExprType, type SubtypeExprOrValue } from "@elaraai/east";
41
+ import { StatusValueType, TimeStepType } from "@elaraai/east-ui";
42
+ import { AllocationJobType } from "../allocation/types.js";
34
43
  import type { PagedValue } from "../bind/data.js";
35
44
  import { type PlanSeriesValue } from "../plan/series.js";
36
45
  import { PlanRollupType, type PlanAxisKindLiteral, type PlanRollupLiteral } from "../plan/types.js";
@@ -68,6 +77,73 @@ export interface ScheduleResourcesConfig<K extends EastType, R extends EastType>
68
77
  collapsed?: boolean | ((row: ExprType<R>, key: ExprType<K>) => SubtypeExprOrValue<BooleanType>);
69
78
  /** Plan: the read-only rows under each resource, in order — `Plan.series.heat`, `table` or `chart` over the resources' rows. */
70
79
  measures?: readonly PlanSeriesValue<PlanAxisKindLiteral>[];
80
+ /** The Roster's people: a person's default position, a key of its `positions`. */
81
+ position?: (row: ExprType<R>, key: ExprType<K>) => SubtypeExprOrValue<StringType>;
82
+ /** The Roster's people: the skills a person holds, keys of its `activities`. */
83
+ skills?: (row: ExprType<R>, key: ExprType<K>) => SubtypeExprOrValue<SetType<StringType>>;
84
+ /** The Roster's people: a person's contracted weekly hours. */
85
+ contract?: (row: ExprType<R>, key: ExprType<K>) => SubtypeExprOrValue<FloatType>;
86
+ /** The Roster's people: whether a person is a named agency worker. */
87
+ agency?: (row: ExprType<R>, key: ExprType<K>) => SubtypeExprOrValue<BooleanType>;
88
+ /** The Roster's people: whether a person trains others. */
89
+ trainer?: (row: ExprType<R>, key: ExprType<K>) => SubtypeExprOrValue<BooleanType>;
90
+ /** The Roster's people: whether a person needs a trainer beside them. */
91
+ trainee?: (row: ExprType<R>, key: ExprType<K>) => SubtypeExprOrValue<BooleanType>;
92
+ /** The Roster's people: a person's usual shift, a key of its `shifts`, or none. */
93
+ usual?: (row: ExprType<R>, key: ExprType<K>) => SubtypeExprOrValue<OptionType<StringType>>;
94
+ /** The Allocation's lanes: how far past each slot's start a lane's bins are booked (`variant("minutes", 15)`). */
95
+ offset?: (row: ExprType<R>, key: ExprType<K>) => SubtypeExprOrValue<TimeStepType>;
96
+ /** The Allocation's resources: a resource's minimum, in the quantity's unit. The Allocation requires it. */
97
+ min?: (row: ExprType<R>, key: ExprType<K>) => SubtypeExprOrValue<FloatType>;
98
+ /** The Allocation's resources: a resource's maximum, in the quantity's unit. The Allocation requires it. */
99
+ max?: (row: ExprType<R>, key: ExprType<K>) => SubtypeExprOrValue<FloatType>;
100
+ /** The Allocation's resources: a line about a resource's next job. */
101
+ note?: (row: ExprType<R>, key: ExprType<K>) => SubtypeExprOrValue<OptionType<StringType>>;
102
+ /** The Allocation's resources: how long a reservation on a resource is checked for, and held while it holds only reservations. */
103
+ hold?: (row: ExprType<R>, key: ExprType<K>) => SubtypeExprOrValue<TimeStepType>;
104
+ /** The Allocation's resources: the other work on a resource. */
105
+ jobs?: (row: ExprType<R>, key: ExprType<K>) => SubtypeExprOrValue<ArrayType<AllocationJobType>>;
106
+ }
107
+ /** One of a resource kind's accessors, reified: an East function over a resource's row and its key, erased over both. */
108
+ export type ScheduleResourceAccessor<T extends EastType> = ExprType<FunctionType<[EastType, EastType], T>>;
109
+ /**
110
+ * A resource kind's accessors, each reified once (#1367): what a builder over
111
+ * the app's own records calls per row. One the kind was not given is
112
+ * `undefined`.
113
+ */
114
+ export interface ScheduleResourceAccessors {
115
+ /** A resource's name. */
116
+ readonly label: ScheduleResourceAccessor<StringType>;
117
+ /** A resource's second line: `none` for a kind with no `meta`. */
118
+ readonly meta: ScheduleResourceAccessor<OptionType<StringType>>;
119
+ /** The group a resource sits under: a person's home group, a resource's group. */
120
+ readonly group: ScheduleResourceAccessor<StringType> | undefined;
121
+ /** The Roster's people: a person's default position. */
122
+ readonly position: ScheduleResourceAccessor<StringType> | undefined;
123
+ /** The Roster's people: the skills a person holds. */
124
+ readonly skills: ScheduleResourceAccessor<SetType<StringType>> | undefined;
125
+ /** The Roster's people: a person's contracted weekly hours. */
126
+ readonly contract: ScheduleResourceAccessor<FloatType> | undefined;
127
+ /** The Roster's people: whether a person is a named agency worker. */
128
+ readonly agency: ScheduleResourceAccessor<BooleanType> | undefined;
129
+ /** The Roster's people: whether a person trains others. */
130
+ readonly trainer: ScheduleResourceAccessor<BooleanType> | undefined;
131
+ /** The Roster's people: whether a person needs a trainer beside them. */
132
+ readonly trainee: ScheduleResourceAccessor<BooleanType> | undefined;
133
+ /** The Roster's people: a person's usual shift. */
134
+ readonly usual: ScheduleResourceAccessor<OptionType<StringType>> | undefined;
135
+ /** The Allocation's lanes: how far past each slot's start a lane's bins are booked. */
136
+ readonly offset: ScheduleResourceAccessor<TimeStepType> | undefined;
137
+ /** The Allocation's resources: a resource's minimum. */
138
+ readonly min: ScheduleResourceAccessor<FloatType> | undefined;
139
+ /** The Allocation's resources: a resource's maximum. */
140
+ readonly max: ScheduleResourceAccessor<FloatType> | undefined;
141
+ /** The Allocation's resources: a line about a resource's next job. */
142
+ readonly note: ScheduleResourceAccessor<OptionType<StringType>> | undefined;
143
+ /** The Allocation's resources: how long a reservation on a resource is held. */
144
+ readonly hold: ScheduleResourceAccessor<TimeStepType> | undefined;
145
+ /** The Allocation's resources: the other work on a resource. */
146
+ readonly jobs: ScheduleResourceAccessor<ArrayType<AllocationJobType>> | undefined;
71
147
  }
72
148
  /**
73
149
  * A resource kind, declared: what a builder's `resources` takes, by slot.
@@ -106,6 +182,8 @@ export interface ScheduleResourceKind<K extends EastType, R extends EastType> {
106
182
  readonly nested: boolean;
107
183
  /** Plan: how a parent's bands roll its children's events up. */
108
184
  readonly rollup: ExprType<PlanRollupType>;
185
+ /** Its accessors, each reified once: what a builder over the app's own records calls per row (#1367). */
186
+ readonly accessors: ScheduleResourceAccessors;
109
187
  /**
110
188
  * The kind on the wire, under its slot: the Calendar's.
111
189
  *
@@ -131,9 +209,9 @@ export interface ScheduleResourceKind<K extends EastType, R extends EastType> {
131
209
  * @param config - Its name, its icon, each resource's label and second line, and Plan's options
132
210
  * @returns The kind, for a builder's `resources`
133
211
  * @throws {Error} When `rows` is not a `Dict`, or a paged read of one (#1199) keyed by anything but a String or
134
- * beside `group` or `parent`; a `window`, which is gone; a `rollup` that is not a way to roll up; and a measure that
212
+ * beside `group` or `parent`; a `window`, which is gone; a `rollup` that is not a way to roll up; a measure that
135
213
  * is not a `Plan.series.heat`, `table` or `chart` over the resources' rows written in place, that nests, or whose
136
- * key another measure has
214
+ * key another measure has; and an accessor returning another type than it takes, naming what it returns (#1367)
137
215
  * @example
138
216
  * ```tsx
139
217
  * import { DictType, East, StringType, StructType, some } from "@elaraai/east";
@@ -1 +1 @@
1
- {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../src/schedule/resources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../src/schedule/resources.ts"],"names":[],"mappings":"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"}
@@ -27,13 +27,23 @@
27
27
  * beside one, and the keys are Strings, as the canvas seeks them. The Calendar
28
28
  * reads a kind's resources whole, and refuses a paged one.
29
29
  *
30
+ * The builders over the app's own records read their resources through
31
+ * accessors beside Plan's (#1367, `Builder Interfaces Spec.md` §4.2): the
32
+ * Roster's people — a person's position, skills, contract hours, and whether
33
+ * they are an agency's, a trainer or a trainee, and their usual shift — and
34
+ * the Allocation's lanes (`offset`) and resources (`min`, `max`, `note`,
35
+ * `hold`, `jobs`). Each accessor is reified once, held to the type it returns,
36
+ * and the kind carries them all (`accessors`) for its builder to call per row.
37
+ *
30
38
  * @packageDocumentation
31
39
  */
32
- import { ArrayType, BooleanType, DictType, East, FunctionType, OptionType, StringType, isTypeEqual, none, printType, some, } from "@elaraai/east";
33
- import { StatusValueType } from "@elaraai/east-ui";
40
+ import { ArrayType, BooleanType, DictType, East, FloatType, FunctionType, OptionType, SetType, StringType, isTypeEqual, none, printType, some, } from "@elaraai/east";
41
+ import { StatusValueType, TimeStepType } from "@elaraai/east-ui";
34
42
  import { resolveRowSource, resolveTag } from "@elaraai/east-ui/internal";
43
+ import { AllocationJobType } from "../allocation/types.js";
35
44
  import { planSeriesFacts } from "../plan/series.js";
36
45
  import { PlanRollupType } from "../plan/types.js";
46
+ import { scheduleAccessor } from "./accessor.js";
37
47
  import { PlanResourceRowType, PlanResourcesType, ScheduleResourceRowType, ScheduleResourcesType } from "./types.js";
38
48
  import { scheduleEntryByKey } from "./window.js";
39
49
  /** The key a schedule's definitions carry their sort under. */
@@ -75,10 +85,11 @@ export function scheduleResources(rows, input) {
75
85
  const keyType = type.key;
76
86
  const rowType = type.value;
77
87
  const optString = OptionType(StringType);
78
- // Each accessor, one East function, called per row (`shared/reify.ts`'s rule).
79
- const label = East.function([rowType, keyType], StringType, (_$, row, key) => config.label(row, key));
80
- const author = config.meta;
81
- const meta = East.function([rowType, keyType], optString, (_$, row, key) => author === undefined ? East.value(none, optString) : author(row, key));
88
+ // Each accessor, one East function, called per row (`shared/reify.ts`'s rule), held to the type it returns (#1367).
89
+ const accessor = (prop, out, what, fn) => fn === undefined ? undefined
90
+ : scheduleAccessor(rowType, keyType, out, fn, (returns) => `${where}: \`${prop}\` returns ${what} — and this one returns ${returns}`);
91
+ const label = accessor("label", StringType, "a String, a resource's name", config.label);
92
+ const meta = accessor("meta", optString, "an Option of a String, a resource's second line", config.meta ?? (() => East.value(none, optString)));
82
93
  // A String key is its own text; any other key as East prints it.
83
94
  const text = keyType.type === "String"
84
95
  ? East.function([StringType], StringType, (_$, key) => key)
@@ -131,15 +142,33 @@ export function scheduleResources(rows, input) {
131
142
  }
132
143
  }
133
144
  }
134
- // Plan's accessors, each one East function, called per row.
135
- const accessor = (out, fn) => fn === undefined ? undefined : East.function([rowType, keyType], out, (_$, row, key) => fn(row, key));
136
- const groupOf = accessor(StringType, config.group);
137
- const parentOf = accessor(optString, config.parent);
138
- const subOf = accessor(optString, config.sub);
139
- const valueOf = accessor(optString, config.value);
140
- const statusOf = accessor(OptionType(StatusValueType), config.status);
145
+ // Plan's accessors.
146
+ const groupOf = accessor("group", StringType, "a String, the group a resource sits under", config.group);
147
+ const parentOf = accessor("parent", optString, "an Option of a String, the key's text of the resource it nests under", config.parent);
148
+ const subOf = accessor("sub", optString, "an Option of a String, the gutter's sub line", config.sub);
149
+ const valueOf = accessor("value", optString, "an Option of a String, the gutter's value slot", config.value);
150
+ const statusOf = accessor("status", OptionType(StatusValueType), "an Option of a StatusValue, the gutter's status dot", config.status);
141
151
  const collapsed = config.collapsed;
142
- const collapsedOf = typeof collapsed === "function" ? accessor(BooleanType, collapsed) : undefined;
152
+ const collapsedOf = typeof collapsed === "function" ? accessor("collapsed", BooleanType, "a Boolean, whether a resource starts folded", collapsed) : undefined;
153
+ // The builders' over the app's own records (#1367): the Roster's people, the Allocation's lanes and resources.
154
+ const accessors = {
155
+ label,
156
+ meta,
157
+ group: groupOf,
158
+ position: accessor("position", StringType, "a String, a person's default position", config.position),
159
+ skills: accessor("skills", SetType(StringType), "a Set of String, the skills a person holds", config.skills),
160
+ contract: accessor("contract", FloatType, "a Float, a person's contracted weekly hours", config.contract),
161
+ agency: accessor("agency", BooleanType, "a Boolean, whether a person is a named agency worker", config.agency),
162
+ trainer: accessor("trainer", BooleanType, "a Boolean, whether a person trains others", config.trainer),
163
+ trainee: accessor("trainee", BooleanType, "a Boolean, whether a person needs a trainer beside them", config.trainee),
164
+ usual: accessor("usual", optString, "an Option of a String, a person's usual shift", config.usual),
165
+ offset: accessor("offset", TimeStepType, "a TimeStep, how far past each slot's start a lane's bins are booked", config.offset),
166
+ min: accessor("min", FloatType, "a Float, a resource's minimum", config.min),
167
+ max: accessor("max", FloatType, "a Float, a resource's maximum", config.max),
168
+ note: accessor("note", optString, "an Option of a String, a line about a resource's next job", config.note),
169
+ hold: accessor("hold", TimeStepType, "a TimeStep, how long a reservation on a resource is held", config.hold),
170
+ jobs: accessor("jobs", ArrayType(AllocationJobType), "an Array of Allocation.Types.Job, the other work on a resource", config.jobs),
171
+ };
143
172
  // One resource as Plan's builder takes it.
144
173
  const planRow = East.function([rowType, keyType], PlanResourceRowType, ($, row, key) => {
145
174
  const keyText = $.const(text);
@@ -192,6 +221,7 @@ export function scheduleResources(rows, input) {
192
221
  grouped: config.group !== undefined,
193
222
  nested: config.parent !== undefined,
194
223
  rollup,
224
+ accessors,
195
225
  build(slot) {
196
226
  // The Calendar reads a kind's resources whole, and pages none.
197
227
  if (source === undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../../src/schedule/resources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../../src/schedule/resources.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
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 shared editing session over a record a builder writes (#1199, #1367):
7
+ * whole entries keyed by the record's key, each Save one patch commit through
8
+ * the record's patch door (`Record.onApply(record, { keyed: true })`). Its
9
+ * base is the record's snapshot — or, for a record read by key through a paged
10
+ * read of its own entries (`entries`, `Data.bindPaged(record)`), its revision,
11
+ * every entry it reads read by its key.
12
+ *
13
+ * An event kind's session (`Schedule.events`) and a builder's periods'
14
+ * (`Schedule.periods`) are this one session, so a builder keeps each record it
15
+ * writes in one session of one history, as the Calendar's and Plan's kinds are.
16
+ *
17
+ * @packageDocumentation
18
+ */
19
+ import { NullType, OptionType, StringType, type DictType, type EastType, type ExprType, type FunctionType, type VariantType } from "@elaraai/east";
20
+ import { EditingType } from "@elaraai/east-ui/internal";
21
+ import { ScheduleEntriesType } from "./types.js";
22
+ /** One entry read by its key: still reading, absent, or held. */
23
+ type KeyRead = VariantType<{
24
+ reading: NullType;
25
+ absent: NullType;
26
+ held: EastType;
27
+ }>;
28
+ /**
29
+ * A record's session, declared (see the module docs): what a builder reads the
30
+ * record through, and its session's wire, built where the builder builds it.
31
+ */
32
+ export interface ScheduleRecordSession {
33
+ /** The record's entries, read whole. */
34
+ readonly readAll: () => ExprType<DictType<EastType, EastType>>;
35
+ /** One entry by its key's text, through `entries`; `undefined` for a record read whole. */
36
+ readonly byKey: ExprType<FunctionType<[StringType], KeyRead>> | undefined;
37
+ /** The record's largest key's text, through `entries`; `undefined` for a record read whole. */
38
+ readonly lastKey: ExprType<FunctionType<[], OptionType<OptionType<StringType>>>> | undefined;
39
+ /** A key's text: a String key as it is, any other key as East prints it. */
40
+ readonly idOf: ExprType<FunctionType<[EastType], StringType>>;
41
+ /** A key from its text. */
42
+ readonly keyOf: ExprType<FunctionType<[StringType], EastType>>;
43
+ /** The record's commits, newest first, as its handle reads them. */
44
+ readonly history: ExprType<EastType>;
45
+ /**
46
+ * The session's wire: the shared `EditingType` over the record, and its read by key.
47
+ *
48
+ * @returns `editing`, the session; `entries`, the record read by key, `none` for a record read whole
49
+ */
50
+ build(): {
51
+ editing: ExprType<typeof EditingType>;
52
+ entries: ExprType<OptionType<typeof ScheduleEntriesType>>;
53
+ };
54
+ }
55
+ /**
56
+ * Declares the session over a record (see the module docs).
57
+ *
58
+ * @param record - The record, `Record.bind(record, [e3.mutation.patch(record)])`
59
+ * @param keyType - The record's key type
60
+ * @param rowType - The record's row type
61
+ * @param entries - A paged read of the record's own entries, checked (`checkEntries`); `undefined` for a record read whole
62
+ * @returns The session, declared
63
+ * @throws {Error} When the record is not bound with its patch mutation (`Record.onApply`'s refusal)
64
+ */
65
+ export declare function scheduleRecordSession(record: unknown, keyType: EastType, rowType: EastType, entries: ExprType<EastType> | undefined): ScheduleRecordSession;
66
+ /** Whether an expression's type is a struct: a bound record's handle is. */
67
+ export declare function isHandle(record: unknown): boolean;
68
+ export {};
69
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/schedule/session.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACgC,QAAQ,EAAE,UAAU,EAAE,UAAU,EACnE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAmB,KAAK,WAAW,EACpG,MAAM,eAAe,CAAC;AACvB,OAAO,EAA0E,WAAW,EAAwB,MAAM,2BAA2B,CAAC;AAEtJ,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGjD,iEAAiE;AACjE,KAAK,OAAO,GAAG,WAAW,CAAC;IAAE,OAAO,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAC;AAEpF;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IAClC,wCAAwC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC/D,2FAA2F;IAC3F,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAC1E,+FAA+F;IAC/F,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAC7F,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IAC9D,2BAA2B;IAC3B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC/D,oEAAoE;IACpE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrC;;;;OAIG;IACH,KAAK,IAAI;QAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,WAAW,CAAC,CAAC;QAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAA;KAAE,CAAC;CACjH;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,SAAS,GAAG,qBAAqB,CAoF3J;AAED,4EAA4E;AAC5E,wBAAgB,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAEjD"}
@@ -0,0 +1,121 @@
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 shared editing session over a record a builder writes (#1199, #1367):
7
+ * whole entries keyed by the record's key, each Save one patch commit through
8
+ * the record's patch door (`Record.onApply(record, { keyed: true })`). Its
9
+ * base is the record's snapshot — or, for a record read by key through a paged
10
+ * read of its own entries (`entries`, `Data.bindPaged(record)`), its revision,
11
+ * every entry it reads read by its key.
12
+ *
13
+ * An event kind's session (`Schedule.events`) and a builder's periods'
14
+ * (`Schedule.periods`) are this one session, so a builder keeps each record it
15
+ * writes in one session of one history, as the Calendar's and Plan's kinds are.
16
+ *
17
+ * @packageDocumentation
18
+ */
19
+ import { BlobType, East, Expr, IntegerType, NullType, OptionType, StringType, none, some, toEastTypeValue, variant, } from "@elaraai/east";
20
+ import { EditingApplyResultType, EditingChangeSetTypeFor, EditingDraftFieldType, EditingType, EditingWireApplyType } from "@elaraai/east-ui/internal";
21
+ import { Record } from "../bind/record.js";
22
+ import { ScheduleEntriesType } from "./types.js";
23
+ import { scheduleEntryByKey, scheduleLastKey } from "./window.js";
24
+ /**
25
+ * Declares the session over a record (see the module docs).
26
+ *
27
+ * @param record - The record, `Record.bind(record, [e3.mutation.patch(record)])`
28
+ * @param keyType - The record's key type
29
+ * @param rowType - The record's row type
30
+ * @param entries - A paged read of the record's own entries, checked (`checkEntries`); `undefined` for a record read whole
31
+ * @returns The session, declared
32
+ * @throws {Error} When the record is not bound with its patch mutation (`Record.onApply`'s refusal)
33
+ */
34
+ export function scheduleRecordSession(record, keyType, rowType, entries) {
35
+ const handle = record;
36
+ // The Save: one patch commit through the record's patch door, its entries checked against what the drafts began from.
37
+ // Declared now, so a record bound without its patch door is refused where the builder's kind is.
38
+ const apply = Record.onApply(record, { keyed: true });
39
+ const readAll = handle["read"];
40
+ const byKey = entries === undefined ? undefined : scheduleEntryByKey(entries, keyType, rowType);
41
+ const lastKey = entries === undefined ? undefined : scheduleLastKey(entries, keyType);
42
+ // An entry's id is its key's text: a String key as it is, any other key as East prints it.
43
+ const idOf = (keyType.type === "String"
44
+ ? East.function([StringType], StringType, (_$, key) => key)
45
+ : East.function([keyType], StringType, (_$, key) => East.print(key)));
46
+ const keyOf = (keyType.type === "String"
47
+ ? East.function([StringType], StringType, (_$, id) => id)
48
+ : East.function([StringType], keyType, (_$, id) => id.parse(keyType)));
49
+ const draftType = EditingDraftFieldType(rowType);
50
+ return {
51
+ readAll,
52
+ byKey,
53
+ lastKey,
54
+ idOf,
55
+ keyOf,
56
+ history: handle["history"],
57
+ build() {
58
+ // The shared session over the record: whole-entry drafts, keyed batches, Save through the patch door.
59
+ // Its base is the record's snapshot — or, for a record read by key (#1199), its revision, every entry
60
+ // it reads read by its key through the record's own entries.
61
+ const batchType = EditingChangeSetTypeFor(rowType, keyType);
62
+ const encodedEntry = (row) => East.value(some(East.Blob.encodeBeast(row, "v2")), OptionType(BlobType));
63
+ const readEntry = byKey === undefined
64
+ ? East.function([StringType, IntegerType], OptionType(BlobType), ($, id, _offset) => {
65
+ const parse = $.const(keyOf);
66
+ const held = $.const(readAll());
67
+ return held.tryGet(parse(id)).match({
68
+ some: (_$2, row) => encodedEntry(row),
69
+ none: (_$2) => East.value(none, OptionType(BlobType)),
70
+ });
71
+ })
72
+ : East.function([StringType, IntegerType], OptionType(BlobType), ($, id, _offset) => {
73
+ const find = $.const(byKey);
74
+ const result = $.let(none, OptionType(BlobType));
75
+ $.match(find(id), { held: ($2, row) => { $2.assign(result, encodedEntry(row)); } });
76
+ return result;
77
+ });
78
+ const onApply = East.asyncFunction([BlobType], EditingApplyResultType, ($, blob) => {
79
+ const commit = $.const(apply);
80
+ return commit(blob.decodeBeast(batchType, "v2"));
81
+ });
82
+ const editing = East.value({
83
+ sourceId: handle["binding"].name,
84
+ entryType: toEastTypeValue(rowType),
85
+ idField: none,
86
+ draftType: toEastTypeValue(draftType),
87
+ children: none,
88
+ keyType: some(toEastTypeValue(keyType)),
89
+ snapshot: byKey === undefined ? some(East.Blob.encodeBeast(readAll(), "v2")) : none,
90
+ readEntry,
91
+ onPatch: none,
92
+ onApply: some(East.value(variant("async", onApply), EditingWireApplyType)),
93
+ mode: variant("batch", null),
94
+ }, EditingType);
95
+ // The record read by key (#1199): its revision and a move to another, one entry's row, and its largest key.
96
+ let seam;
97
+ if (entries === undefined || byKey === undefined || lastKey === undefined) {
98
+ seam = East.value(none, OptionType(ScheduleEntriesType));
99
+ }
100
+ else {
101
+ const pinned = entries;
102
+ const entry = East.function([StringType], OptionType(OptionType(BlobType)), ($, id) => {
103
+ const find = $.const(byKey);
104
+ const result = $.let(none, OptionType(OptionType(BlobType)));
105
+ $.match(find(id), {
106
+ held: ($2, row) => { $2.assign(result, some(encodedEntry(row))); },
107
+ absent: ($2) => { $2.assign(result, some(none)); },
108
+ });
109
+ return result;
110
+ });
111
+ seam = East.value(some({ revision: pinned.revision, refresh: pinned.refresh, entry, last: lastKey }), OptionType(ScheduleEntriesType));
112
+ }
113
+ return { editing, entries: seam };
114
+ },
115
+ };
116
+ }
117
+ /** Whether an expression's type is a struct: a bound record's handle is. */
118
+ export function isHandle(record) {
119
+ return record instanceof Expr && Expr.type(record).type === "Struct";
120
+ }
121
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/schedule/session.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,10 @@ export interface ScheduleTemplates<V extends StructType> {
14
14
  readonly valuesType: V;
15
15
  /** The templates, with each initial value encoded at its own type. */
16
16
  readonly items: ExprType<ArrayType<ScheduleTemplateType>>;
17
+ /** The builder's Slice source whose shown keys filter these templates, by their record keys; `undefined`, every one shows (#1343). */
18
+ readonly source: string | undefined;
19
+ /** Whether each gives how long its event runs (`duration`): a span kind's templates do, an instant kind's do not (#1344). */
20
+ readonly timed: boolean;
17
21
  }
18
22
  /** Accessors describing one template record row. Each receives the row and its key. */
19
23
  export interface ScheduleTemplatesConfig<K extends EastType, R extends EastType, V extends StructType> {
@@ -23,10 +27,18 @@ export interface ScheduleTemplatesConfig<K extends EastType, R extends EastType,
23
27
  group?: (row: ExprType<R>, key: ExprType<K>) => SubtypeExprOrValue<OptionType<StringType>>;
24
28
  /** Its optional start time for a drop onto a whole day. */
25
29
  at?: (row: ExprType<R>, key: ExprType<K>) => SubtypeExprOrValue<OptionType<ScheduleClockType>>;
26
- /** The length of an event made from this template. */
27
- duration: (row: ExprType<R>, key: ExprType<K>) => SubtypeExprOrValue<ScheduleDurationType>;
30
+ /**
31
+ * The length of an event made from this template: a span kind's templates give it, and an instant kind's
32
+ * (`at`), whose events are one time, give none (#1344).
33
+ */
34
+ duration?: (row: ExprType<R>, key: ExprType<K>) => SubtypeExprOrValue<ScheduleDurationType>;
28
35
  /** Every initial event field except its start, end and resource. */
29
36
  values: (row: ExprType<R>, key: ExprType<K>) => ExprType<V>;
37
+ /**
38
+ * The builder's `Slice.bindRecords` source over these templates' record (`jobTemplates`): its shown keys filter
39
+ * the Templates tab's cards, each template's key its record key. Omitted, every template shows (#1343).
40
+ */
41
+ source?: string;
30
42
  }
31
43
  /**
32
44
  * Reads templates from keyed data, usually a bound record's read(). Each
@@ -1 +1 @@
1
- {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../../src/schedule/templates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACH,SAAS,EAAE,QAAQ,EAAc,UAAU,EAAE,UAAU,EACvD,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAqB,KAAK,UAAU,EAAE,KAAK,kBAAkB,EAC5F,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAE3F,kEAAkE;AAClE,eAAO,MAAM,kBAAkB,EAAE,OAAO,MAAqC,CAAC;AAE9E,6EAA6E;AAC7E,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,UAAU;IACnD,kCAAkC;IAClC,QAAQ,CAAC,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC;IACpC,0EAA0E;IAC1E,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACvB,sEAAsE;IACtE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC;CAC7D;AAED,uFAAuF;AACvF,MAAM,WAAW,uBAAuB,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,UAAU;IACjG,0CAA0C;IAC1C,IAAI,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC7E,kCAAkC;IAClC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,kBAAkB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3F,2DAA2D;IAC3D,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,kBAAkB,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC/F,sDAAsD;IACtD,QAAQ,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,kBAAkB,CAAC,oBAAoB,CAAC,CAAC;IAC3F,oEAAoE;IACpE,MAAM,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC;CAC/D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,UAAU,EAC1F,IAAI,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GACnF,iBAAiB,CAAC,CAAC,CAAC,CA4BtB;AAED,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,iBAAiB,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAMzJ"}
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../../src/schedule/templates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACH,SAAS,EAAE,QAAQ,EAAc,UAAU,EAAE,UAAU,EACvD,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAqB,KAAK,UAAU,EAAE,KAAK,kBAAkB,EAC5F,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAE3F,kEAAkE;AAClE,eAAO,MAAM,kBAAkB,EAAE,OAAO,MAAqC,CAAC;AAE9E,6EAA6E;AAC7E,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,UAAU;IACnD,kCAAkC;IAClC,QAAQ,CAAC,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC;IACpC,0EAA0E;IAC1E,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACvB,sEAAsE;IACtE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC1D,sIAAsI;IACtI,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,6HAA6H;IAC7H,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CAC3B;AAED,uFAAuF;AACvF,MAAM,WAAW,uBAAuB,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,UAAU;IACjG,0CAA0C;IAC1C,IAAI,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC7E,kCAAkC;IAClC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,kBAAkB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3F,2DAA2D;IAC3D,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,kBAAkB,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC/F;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,kBAAkB,CAAC,oBAAoB,CAAC,CAAC;IAC5F,oEAAoE;IACpE,MAAM,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5D;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,UAAU,EAC1F,IAAI,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GACnF,iBAAiB,CAAC,CAAC,CAAC,CA8BtB;AAED,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,iBAAiB,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAMzJ"}
@@ -2,7 +2,7 @@
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
- import { ArrayType, DictType, East, Expr, OptionType, StringType, isTypeEqual, none, printType, } from "@elaraai/east";
5
+ import { ArrayType, DictType, East, Expr, OptionType, StringType, isTypeEqual, none, printType, variant, } from "@elaraai/east";
6
6
  import { ScheduleClockType, ScheduleDurationType, ScheduleTemplateType } from "./types.js";
7
7
  /** Identifies a declaration of templates read from keyed data. */
8
8
  export const SCHEDULE_TEMPLATES = Symbol("Schedule.templates");
@@ -33,6 +33,7 @@ export function scheduleTemplates(rows, config) {
33
33
  const keyText = keyType.type === "String"
34
34
  ? East.function([StringType], StringType, (_$, key) => key)
35
35
  : East.function([keyType], StringType, (_$, key) => East.print(key));
36
+ const duration = config.duration;
36
37
  const describe = East.function([rowType, keyType], ScheduleTemplateType, ($, row, key) => {
37
38
  const text = $.const(keyText);
38
39
  const initial = $.const(values);
@@ -40,7 +41,8 @@ export function scheduleTemplates(rows, config) {
40
41
  key: text(key), name: config.name(row, key),
41
42
  group: config.group === undefined ? none : config.group(row, key),
42
43
  at: config.at === undefined ? none : config.at(row, key),
43
- duration: config.duration(row, key),
44
+ // An instant kind's template is one time: it lasts no time, as one written in the code does.
45
+ duration: duration === undefined ? variant("minutes", 0) : duration(row, key),
44
46
  values: East.Blob.encodeBeast(initial(row, key), "v2"),
45
47
  };
46
48
  });
@@ -48,7 +50,7 @@ export function scheduleTemplates(rows, config) {
48
50
  const describeRow = $.const(describe);
49
51
  return describeRow(row, key);
50
52
  });
51
- return { [SCHEDULE_TEMPLATES]: true, valuesType, items };
53
+ return { [SCHEDULE_TEMPLATES]: true, valuesType, items, source: config.source, timed: duration !== undefined };
52
54
  }
53
55
  /** Checks a bound template's initial values against the fields its kind requires. */
54
56
  export function checkedTemplates(templates, expected, where) {
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/schedule/templates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/schedule/templates.ts"],"names":[],"mappings":"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"}