@almadar/std 14.26.0 → 14.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/behaviors/registry/app/atoms/std-applicant.orb +496 -42
  2. package/behaviors/registry/app/atoms/std-approval-chain.orb +106 -0
  3. package/behaviors/registry/app/atoms/std-approval-request.orb +433 -593
  4. package/behaviors/registry/app/atoms/std-campaign-goal.orb +438 -228
  5. package/behaviors/registry/app/atoms/std-change-order.orb +565 -307
  6. package/behaviors/registry/app/atoms/std-chart-of-accounts.orb +434 -97
  7. package/behaviors/registry/app/atoms/std-checkin.orb +434 -270
  8. package/behaviors/registry/app/atoms/std-class-roster.orb +495 -61
  9. package/behaviors/registry/app/atoms/std-class-session.orb +485 -104
  10. package/behaviors/registry/app/atoms/std-court-deadline.orb +519 -88
  11. package/behaviors/registry/app/atoms/std-customer-account.orb +577 -97
  12. package/behaviors/registry/app/atoms/std-donation-receipt.orb +498 -55
  13. package/behaviors/registry/app/atoms/std-donor.orb +445 -135
  14. package/behaviors/registry/app/atoms/std-drip-sequence.orb +445 -62
  15. package/behaviors/registry/app/atoms/std-driver.orb +465 -480
  16. package/behaviors/registry/app/atoms/std-dunning.orb +450 -512
  17. package/behaviors/registry/app/atoms/std-email-broadcast.orb +517 -64
  18. package/behaviors/registry/app/atoms/std-event.orb +465 -667
  19. package/behaviors/registry/app/atoms/std-health-score.orb +368 -371
  20. package/behaviors/registry/app/atoms/std-help-article.orb +373 -506
  21. package/behaviors/registry/app/atoms/std-help-category.orb +344 -359
  22. package/behaviors/registry/app/atoms/std-interview-slot.orb +490 -48
  23. package/behaviors/registry/app/atoms/std-invoice.orb +494 -291
  24. package/behaviors/registry/app/atoms/std-kitchen-display.orb +588 -96
  25. package/behaviors/registry/app/atoms/std-lease.orb +506 -190
  26. package/behaviors/registry/app/atoms/std-ledger-entry.orb +483 -154
  27. package/behaviors/registry/app/atoms/std-maintenance-request.orb +642 -192
  28. package/behaviors/registry/app/atoms/std-matter.orb +486 -318
  29. package/behaviors/registry/app/atoms/std-membership.orb +512 -102
  30. package/behaviors/registry/app/atoms/std-menu.orb +775 -183
  31. package/behaviors/registry/app/atoms/std-modifier-group.orb +522 -104
  32. package/behaviors/registry/app/atoms/std-multi-party-transaction.orb +130 -0
  33. package/behaviors/registry/app/atoms/std-nps-survey.orb +319 -327
  34. package/behaviors/registry/app/atoms/std-offer-letter.orb +497 -47
  35. package/behaviors/registry/app/atoms/std-payout-ledger.orb +378 -362
  36. package/behaviors/registry/app/atoms/std-pipeline.orb +139 -0
  37. package/behaviors/registry/app/atoms/std-question-bank.orb +379 -346
  38. package/behaviors/registry/app/atoms/std-receipt.orb +553 -44
  39. package/behaviors/registry/app/atoms/std-recurring-charge.orb +419 -832
  40. package/behaviors/registry/app/atoms/std-recurring-schedule.orb +94 -0
  41. package/behaviors/registry/app/atoms/std-renewal-risk.orb +370 -421
  42. package/behaviors/registry/app/atoms/std-rent-charge.orb +657 -55
  43. package/behaviors/registry/app/atoms/std-reorder-rule.orb +510 -59
  44. package/behaviors/registry/app/atoms/std-response-collector.orb +451 -144
  45. package/behaviors/registry/app/atoms/std-rfi.orb +502 -461
  46. package/behaviors/registry/app/atoms/std-route-optimize.orb +448 -158
  47. package/behaviors/registry/app/atoms/std-segment.orb +360 -98
  48. package/behaviors/registry/app/atoms/std-stock-level.orb +486 -103
  49. package/behaviors/registry/app/atoms/std-submittal.orb +538 -526
  50. package/behaviors/registry/app/atoms/std-table-map.orb +88 -51
  51. package/behaviors/registry/app/atoms/std-technician-dispatch.orb +653 -71
  52. package/behaviors/registry/app/atoms/std-telematics-event.orb +310 -215
  53. package/behaviors/registry/app/atoms/std-template-editor.orb +513 -90
  54. package/behaviors/registry/app/atoms/std-tenant.orb +525 -66
  55. package/behaviors/registry/app/atoms/std-ticket-tier.orb +472 -460
  56. package/behaviors/registry/app/atoms/std-time-entry.orb +354 -317
  57. package/behaviors/registry/app/atoms/std-timeline.orb +108 -0
  58. package/behaviors/registry/app/atoms/std-timesheet.orb +551 -284
  59. package/behaviors/registry/app/atoms/std-trial.orb +410 -317
  60. package/behaviors/registry/app/atoms/std-vehicle.orb +398 -563
  61. package/behaviors/registry/app/atoms/std-waitlist.orb +372 -283
  62. package/behaviors/registry/app/atoms/std-warehouse.orb +273 -214
  63. package/behaviors/registry/app/atoms/std-wizard-branching.orb +129 -0
  64. package/behaviors/registry/app/atoms/std-work-order.orb +628 -240
  65. package/behaviors/registry/app/molecules/std-applicant-form.orb +89 -83
  66. package/behaviors/registry/app/molecules/std-application.orb +178 -263
  67. package/behaviors/registry/app/molecules/std-broadcast-builder.orb +67 -176
  68. package/behaviors/registry/app/molecules/std-cart.orb +78 -72
  69. package/behaviors/registry/app/molecules/std-form-builder.orb +437 -176
  70. package/behaviors/registry/app/molecules/std-ledger-entry-form.orb +608 -89
  71. package/behaviors/registry/app/molecules/std-stock-adjustment.orb +501 -102
  72. package/behaviors/registry/app/molecules/std-vendor-onboarding.orb +383 -469
  73. package/behaviors/registry/core/atoms/std-billable-hour.orb +495 -91
  74. package/behaviors/registry/core/atoms/std-board.orb +1367 -0
  75. package/behaviors/registry/core/atoms/std-branching-logic.orb +271 -600
  76. package/behaviors/registry/core/atoms/std-event-log.orb +777 -0
  77. package/behaviors/registry/core/atoms/std-file-store.orb +534 -164
  78. package/behaviors/registry/core/atoms/std-gallery.orb +118 -101
  79. package/behaviors/registry/core/atoms/std-image-upload-multi.orb +87 -57
  80. package/behaviors/registry/core/atoms/std-multi-party-flow.orb +1313 -0
  81. package/behaviors/registry/core/atoms/std-page-tree.orb +342 -484
  82. package/behaviors/registry/core/atoms/std-recurrence.orb +937 -0
  83. package/behaviors/registry/core/atoms/std-rich-editor.orb +288 -416
  84. package/behaviors/registry/core/atoms/std-step-flow.orb +1155 -0
  85. package/behaviors/registry/core/atoms/std-version-history.orb +454 -430
  86. package/behaviors/registry/core/atoms/std-wizard.orb +1085 -0
  87. package/behaviors/registry/core/molecules/std-wizard-form.orb +222 -147
  88. package/dist/behaviors/registry/app/atoms/std-applicant.orb +496 -42
  89. package/dist/behaviors/registry/app/atoms/std-approval-chain.orb +106 -0
  90. package/dist/behaviors/registry/app/atoms/std-approval-request.orb +433 -593
  91. package/dist/behaviors/registry/app/atoms/std-campaign-goal.orb +438 -228
  92. package/dist/behaviors/registry/app/atoms/std-change-order.orb +565 -307
  93. package/dist/behaviors/registry/app/atoms/std-chart-of-accounts.orb +434 -97
  94. package/dist/behaviors/registry/app/atoms/std-checkin.orb +434 -270
  95. package/dist/behaviors/registry/app/atoms/std-class-roster.orb +495 -61
  96. package/dist/behaviors/registry/app/atoms/std-class-session.orb +485 -104
  97. package/dist/behaviors/registry/app/atoms/std-court-deadline.orb +519 -88
  98. package/dist/behaviors/registry/app/atoms/std-customer-account.orb +577 -97
  99. package/dist/behaviors/registry/app/atoms/std-donation-receipt.orb +498 -55
  100. package/dist/behaviors/registry/app/atoms/std-donor.orb +445 -135
  101. package/dist/behaviors/registry/app/atoms/std-drip-sequence.orb +445 -62
  102. package/dist/behaviors/registry/app/atoms/std-driver.orb +465 -480
  103. package/dist/behaviors/registry/app/atoms/std-dunning.orb +450 -512
  104. package/dist/behaviors/registry/app/atoms/std-email-broadcast.orb +517 -64
  105. package/dist/behaviors/registry/app/atoms/std-event.orb +465 -667
  106. package/dist/behaviors/registry/app/atoms/std-health-score.orb +368 -371
  107. package/dist/behaviors/registry/app/atoms/std-help-article.orb +373 -506
  108. package/dist/behaviors/registry/app/atoms/std-help-category.orb +344 -359
  109. package/dist/behaviors/registry/app/atoms/std-interview-slot.orb +490 -48
  110. package/dist/behaviors/registry/app/atoms/std-invoice.orb +494 -291
  111. package/dist/behaviors/registry/app/atoms/std-kitchen-display.orb +588 -96
  112. package/dist/behaviors/registry/app/atoms/std-lease.orb +506 -190
  113. package/dist/behaviors/registry/app/atoms/std-ledger-entry.orb +483 -154
  114. package/dist/behaviors/registry/app/atoms/std-maintenance-request.orb +642 -192
  115. package/dist/behaviors/registry/app/atoms/std-matter.orb +486 -318
  116. package/dist/behaviors/registry/app/atoms/std-membership.orb +512 -102
  117. package/dist/behaviors/registry/app/atoms/std-menu.orb +775 -183
  118. package/dist/behaviors/registry/app/atoms/std-modifier-group.orb +522 -104
  119. package/dist/behaviors/registry/app/atoms/std-multi-party-transaction.orb +130 -0
  120. package/dist/behaviors/registry/app/atoms/std-nps-survey.orb +319 -327
  121. package/dist/behaviors/registry/app/atoms/std-offer-letter.orb +497 -47
  122. package/dist/behaviors/registry/app/atoms/std-payout-ledger.orb +378 -362
  123. package/dist/behaviors/registry/app/atoms/std-pipeline.orb +139 -0
  124. package/dist/behaviors/registry/app/atoms/std-question-bank.orb +379 -346
  125. package/dist/behaviors/registry/app/atoms/std-receipt.orb +553 -44
  126. package/dist/behaviors/registry/app/atoms/std-recurring-charge.orb +419 -832
  127. package/dist/behaviors/registry/app/atoms/std-recurring-schedule.orb +94 -0
  128. package/dist/behaviors/registry/app/atoms/std-renewal-risk.orb +370 -421
  129. package/dist/behaviors/registry/app/atoms/std-rent-charge.orb +657 -55
  130. package/dist/behaviors/registry/app/atoms/std-reorder-rule.orb +510 -59
  131. package/dist/behaviors/registry/app/atoms/std-response-collector.orb +451 -144
  132. package/dist/behaviors/registry/app/atoms/std-rfi.orb +502 -461
  133. package/dist/behaviors/registry/app/atoms/std-route-optimize.orb +448 -158
  134. package/dist/behaviors/registry/app/atoms/std-segment.orb +360 -98
  135. package/dist/behaviors/registry/app/atoms/std-stock-level.orb +486 -103
  136. package/dist/behaviors/registry/app/atoms/std-submittal.orb +538 -526
  137. package/dist/behaviors/registry/app/atoms/std-table-map.orb +88 -51
  138. package/dist/behaviors/registry/app/atoms/std-technician-dispatch.orb +653 -71
  139. package/dist/behaviors/registry/app/atoms/std-telematics-event.orb +310 -215
  140. package/dist/behaviors/registry/app/atoms/std-template-editor.orb +513 -90
  141. package/dist/behaviors/registry/app/atoms/std-tenant.orb +525 -66
  142. package/dist/behaviors/registry/app/atoms/std-ticket-tier.orb +472 -460
  143. package/dist/behaviors/registry/app/atoms/std-time-entry.orb +354 -317
  144. package/dist/behaviors/registry/app/atoms/std-timeline.orb +108 -0
  145. package/dist/behaviors/registry/app/atoms/std-timesheet.orb +551 -284
  146. package/dist/behaviors/registry/app/atoms/std-trial.orb +410 -317
  147. package/dist/behaviors/registry/app/atoms/std-vehicle.orb +398 -563
  148. package/dist/behaviors/registry/app/atoms/std-waitlist.orb +372 -283
  149. package/dist/behaviors/registry/app/atoms/std-warehouse.orb +273 -214
  150. package/dist/behaviors/registry/app/atoms/std-wizard-branching.orb +129 -0
  151. package/dist/behaviors/registry/app/atoms/std-work-order.orb +628 -240
  152. package/dist/behaviors/registry/app/molecules/std-applicant-form.orb +89 -83
  153. package/dist/behaviors/registry/app/molecules/std-application.orb +178 -263
  154. package/dist/behaviors/registry/app/molecules/std-broadcast-builder.orb +67 -176
  155. package/dist/behaviors/registry/app/molecules/std-cart.orb +78 -72
  156. package/dist/behaviors/registry/app/molecules/std-form-builder.orb +437 -176
  157. package/dist/behaviors/registry/app/molecules/std-ledger-entry-form.orb +608 -89
  158. package/dist/behaviors/registry/app/molecules/std-stock-adjustment.orb +501 -102
  159. package/dist/behaviors/registry/app/molecules/std-vendor-onboarding.orb +383 -469
  160. package/dist/behaviors/registry/core/atoms/std-billable-hour.orb +495 -91
  161. package/dist/behaviors/registry/core/atoms/std-board.orb +1367 -0
  162. package/dist/behaviors/registry/core/atoms/std-branching-logic.orb +271 -600
  163. package/dist/behaviors/registry/core/atoms/std-event-log.orb +777 -0
  164. package/dist/behaviors/registry/core/atoms/std-file-store.orb +534 -164
  165. package/dist/behaviors/registry/core/atoms/std-gallery.orb +118 -101
  166. package/dist/behaviors/registry/core/atoms/std-image-upload-multi.orb +87 -57
  167. package/dist/behaviors/registry/core/atoms/std-multi-party-flow.orb +1313 -0
  168. package/dist/behaviors/registry/core/atoms/std-page-tree.orb +342 -484
  169. package/dist/behaviors/registry/core/atoms/std-recurrence.orb +937 -0
  170. package/dist/behaviors/registry/core/atoms/std-rich-editor.orb +288 -416
  171. package/dist/behaviors/registry/core/atoms/std-step-flow.orb +1155 -0
  172. package/dist/behaviors/registry/core/atoms/std-version-history.orb +454 -430
  173. package/dist/behaviors/registry/core/atoms/std-wizard.orb +1085 -0
  174. package/dist/behaviors/registry/core/molecules/std-wizard-form.orb +222 -147
  175. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "std-work-order",
3
3
  "version": "1.0.0",
4
- "description": "std-work-order — field-service work order lifecycle (created → assigned → en-route → on-site → completed). Owns a WorkOrder entity and a single dispatch trait that loads the queue, renders it in a data-grid, and persists status transitions back to the row.",
4
+ "description": "std-work-order — field-service work order lifecycle (created → assigned → en-route → on-site → completed). Lists work orders in `browsing`; opens detail in `viewing_single` with Assign / Travel / Arrive / Complete / Cancel actions.",
5
5
  "orbitals": [
6
6
  {
7
7
  "name": "WorkOrderOrbital",
@@ -83,18 +83,13 @@
83
83
  "linkedEntity": "WorkOrder",
84
84
  "emits": [
85
85
  {
86
- "event": "ASSIGN",
86
+ "event": "OPEN_ORDER",
87
87
  "payloadSchema": [
88
88
  {
89
89
  "name": "id",
90
90
  "type": "string",
91
91
  "required": true
92
92
  },
93
- {
94
- "name": "assignedTo",
95
- "type": "string",
96
- "required": true
97
- },
98
93
  {
99
94
  "name": "row.id",
100
95
  "type": "string",
@@ -146,7 +141,10 @@
146
141
  ]
147
142
  },
148
143
  {
149
- "event": "START_TRAVEL",
144
+ "event": "CLOSE_VIEW"
145
+ },
146
+ {
147
+ "event": "ASSIGN",
150
148
  "payloadSchema": [
151
149
  {
152
150
  "name": "id",
@@ -154,8 +152,8 @@
154
152
  "required": true
155
153
  },
156
154
  {
157
- "name": "etaMinutes",
158
- "type": "number",
155
+ "name": "assignedTo",
156
+ "type": "string",
159
157
  "required": true
160
158
  },
161
159
  {
@@ -209,13 +207,18 @@
209
207
  ]
210
208
  },
211
209
  {
212
- "event": "ARRIVE",
210
+ "event": "START_TRAVEL",
213
211
  "payloadSchema": [
214
212
  {
215
213
  "name": "id",
216
214
  "type": "string",
217
215
  "required": true
218
216
  },
217
+ {
218
+ "name": "etaMinutes",
219
+ "type": "number",
220
+ "required": true
221
+ },
219
222
  {
220
223
  "name": "row.id",
221
224
  "type": "string",
@@ -267,17 +270,13 @@
267
270
  ]
268
271
  },
269
272
  {
270
- "event": "COMPLETE",
273
+ "event": "ARRIVE",
271
274
  "payloadSchema": [
272
275
  {
273
276
  "name": "id",
274
277
  "type": "string",
275
278
  "required": true
276
279
  },
277
- {
278
- "name": "notes",
279
- "type": "string"
280
- },
281
280
  {
282
281
  "name": "row.id",
283
282
  "type": "string",
@@ -329,7 +328,7 @@
329
328
  ]
330
329
  },
331
330
  {
332
- "event": "CANCEL",
331
+ "event": "COMPLETE",
333
332
  "payloadSchema": [
334
333
  {
335
334
  "name": "id",
@@ -391,30 +390,17 @@
391
390
  ]
392
391
  },
393
392
  {
394
- "event": "WorkOrderLoaded",
395
- "payloadSchema": [
396
- {
397
- "name": "data",
398
- "type": "[WorkOrder]"
399
- }
400
- ]
401
- },
402
- {
403
- "event": "WorkOrderLoadFailed",
393
+ "event": "CANCEL",
404
394
  "payloadSchema": [
405
395
  {
406
- "name": "error",
407
- "type": "string"
396
+ "name": "id",
397
+ "type": "string",
398
+ "required": true
408
399
  },
409
400
  {
410
- "name": "code",
401
+ "name": "notes",
411
402
  "type": "string"
412
- }
413
- ]
414
- },
415
- {
416
- "event": "WorkOrderUpdated",
417
- "payloadSchema": [
403
+ },
418
404
  {
419
405
  "name": "row.id",
420
406
  "type": "string",
@@ -466,7 +452,16 @@
466
452
  ]
467
453
  },
468
454
  {
469
- "event": "WorkOrderUpdateFailed",
455
+ "event": "WorkOrderLoaded",
456
+ "payloadSchema": [
457
+ {
458
+ "name": "data",
459
+ "type": "[WorkOrder]"
460
+ }
461
+ ]
462
+ },
463
+ {
464
+ "event": "WorkOrderLoadFailed",
470
465
  "payloadSchema": [
471
466
  {
472
467
  "name": "error",
@@ -488,6 +483,9 @@
488
483
  {
489
484
  "name": "browsing"
490
485
  },
486
+ {
487
+ "name": "viewing_single"
488
+ },
491
489
  {
492
490
  "name": "error"
493
491
  }
@@ -522,19 +520,14 @@
522
520
  ]
523
521
  },
524
522
  {
525
- "key": "ASSIGN",
526
- "name": "Assign",
523
+ "key": "OPEN_ORDER",
524
+ "name": "Open Order",
527
525
  "payloadSchema": [
528
526
  {
529
527
  "name": "id",
530
528
  "type": "string",
531
529
  "required": true
532
530
  },
533
- {
534
- "name": "assignedTo",
535
- "type": "string",
536
- "required": true
537
- },
538
531
  {
539
532
  "name": "row",
540
533
  "type": "WorkOrder"
@@ -542,8 +535,8 @@
542
535
  ]
543
536
  },
544
537
  {
545
- "key": "START_TRAVEL",
546
- "name": "Start Travel",
538
+ "key": "CANCEL",
539
+ "name": "Cancel",
547
540
  "payloadSchema": [
548
541
  {
549
542
  "name": "id",
@@ -551,9 +544,8 @@
551
544
  "required": true
552
545
  },
553
546
  {
554
- "name": "etaMinutes",
555
- "type": "number",
556
- "required": true
547
+ "name": "notes",
548
+ "type": "string"
557
549
  },
558
550
  {
559
551
  "name": "row",
@@ -562,14 +554,23 @@
562
554
  ]
563
555
  },
564
556
  {
565
- "key": "ARRIVE",
566
- "name": "Arrive",
557
+ "key": "CLOSE_VIEW",
558
+ "name": "Close View"
559
+ },
560
+ {
561
+ "key": "ASSIGN",
562
+ "name": "Assign",
567
563
  "payloadSchema": [
568
564
  {
569
565
  "name": "id",
570
566
  "type": "string",
571
567
  "required": true
572
568
  },
569
+ {
570
+ "name": "assignedTo",
571
+ "type": "string",
572
+ "required": true
573
+ },
573
574
  {
574
575
  "name": "row",
575
576
  "type": "WorkOrder"
@@ -577,8 +578,8 @@
577
578
  ]
578
579
  },
579
580
  {
580
- "key": "COMPLETE",
581
- "name": "Complete",
581
+ "key": "START_TRAVEL",
582
+ "name": "Start Travel",
582
583
  "payloadSchema": [
583
584
  {
584
585
  "name": "id",
@@ -586,8 +587,9 @@
586
587
  "required": true
587
588
  },
588
589
  {
589
- "name": "notes",
590
- "type": "string"
590
+ "name": "etaMinutes",
591
+ "type": "number",
592
+ "required": true
591
593
  },
592
594
  {
593
595
  "name": "row",
@@ -596,18 +598,14 @@
596
598
  ]
597
599
  },
598
600
  {
599
- "key": "CANCEL",
600
- "name": "Cancel",
601
+ "key": "ARRIVE",
602
+ "name": "Arrive",
601
603
  "payloadSchema": [
602
604
  {
603
605
  "name": "id",
604
606
  "type": "string",
605
607
  "required": true
606
608
  },
607
- {
608
- "name": "notes",
609
- "type": "string"
610
- },
611
609
  {
612
610
  "name": "row",
613
611
  "type": "WorkOrder"
@@ -615,26 +613,21 @@
615
613
  ]
616
614
  },
617
615
  {
618
- "key": "WorkOrderUpdated",
619
- "name": "WorkOrder updated",
616
+ "key": "COMPLETE",
617
+ "name": "Complete",
620
618
  "payloadSchema": [
621
619
  {
622
- "name": "row",
623
- "type": "WorkOrder"
624
- }
625
- ]
626
- },
627
- {
628
- "key": "WorkOrderUpdateFailed",
629
- "name": "WorkOrder update failed",
630
- "payloadSchema": [
620
+ "name": "id",
621
+ "type": "string",
622
+ "required": true
623
+ },
631
624
  {
632
- "name": "error",
625
+ "name": "notes",
633
626
  "type": "string"
634
627
  },
635
628
  {
636
- "name": "code",
637
- "type": "string"
629
+ "name": "row",
630
+ "type": "WorkOrder"
638
631
  }
639
632
  ]
640
633
  }
@@ -650,8 +643,8 @@
650
643
  "WorkOrder",
651
644
  {
652
645
  "emit": {
653
- "success": "WorkOrderLoaded",
654
- "failure": "WorkOrderLoadFailed"
646
+ "failure": "WorkOrderLoadFailed",
647
+ "success": "WorkOrderLoaded"
655
648
  }
656
649
  }
657
650
  ],
@@ -659,22 +652,22 @@
659
652
  "render-ui",
660
653
  "main",
661
654
  {
662
- "gap": "md",
663
- "className": "py-12",
655
+ "align": "center",
664
656
  "children": [
665
657
  {
666
658
  "type": "spinner"
667
659
  },
668
660
  {
669
661
  "type": "typography",
670
- "variant": "caption",
671
662
  "color": "muted",
663
+ "variant": "caption",
672
664
  "content": "Loading work orders…"
673
665
  }
674
666
  ],
675
- "align": "center",
676
667
  "type": "stack",
677
- "direction": "vertical"
668
+ "direction": "vertical",
669
+ "gap": "md",
670
+ "className": "py-12"
678
671
  }
679
672
  ]
680
673
  ]
@@ -688,10 +681,11 @@
688
681
  "render-ui",
689
682
  "main",
690
683
  {
684
+ "direction": "vertical",
685
+ "gap": "md",
691
686
  "type": "stack",
692
687
  "children": [
693
688
  {
694
- "gap": "sm",
695
689
  "type": "stack",
696
690
  "direction": "horizontal",
697
691
  "children": [
@@ -701,17 +695,65 @@
701
695
  },
702
696
  {
703
697
  "content": "@config.title",
704
- "variant": "h3",
705
- "type": "typography"
698
+ "type": "typography",
699
+ "variant": "h3"
706
700
  }
707
- ]
701
+ ],
702
+ "align": "center",
703
+ "gap": "sm"
704
+ },
705
+ {
706
+ "type": "simple-grid",
707
+ "children": [
708
+ {
709
+ "value": "@payload.data.length",
710
+ "label": "Total orders",
711
+ "icon": "clipboard-list",
712
+ "type": "stat-display"
713
+ },
714
+ {
715
+ "type": "stat-display",
716
+ "value": "9",
717
+ "label": "Urgent open",
718
+ "icon": "alert-triangle"
719
+ },
720
+ {
721
+ "value": "14",
722
+ "label": "En route",
723
+ "type": "stat-display",
724
+ "icon": "navigation"
725
+ },
726
+ {
727
+ "type": "stat-display",
728
+ "value": "47",
729
+ "icon": "check-circle",
730
+ "label": "Completed today"
731
+ }
732
+ ],
733
+ "cols": 4.0
708
734
  },
709
735
  {
710
736
  "type": "divider"
711
737
  },
712
738
  {
739
+ "itemActions": [
740
+ {
741
+ "event": "OPEN_ORDER",
742
+ "variant": "primary",
743
+ "label": "Open",
744
+ "icon": "arrow-right"
745
+ },
746
+ {
747
+ "icon": "x",
748
+ "variant": "danger",
749
+ "event": "CANCEL",
750
+ "label": "Cancel"
751
+ }
752
+ ],
713
753
  "type": "data-grid",
754
+ "cols": 1.0,
714
755
  "gap": "sm",
756
+ "entity": "@payload.data",
715
757
  "fields": [
716
758
  {
717
759
  "variant": "caption",
@@ -720,73 +762,37 @@
720
762
  },
721
763
  {
722
764
  "label": "Service",
723
- "variant": "caption",
724
- "name": "serviceType"
765
+ "name": "serviceType",
766
+ "variant": "caption"
725
767
  },
726
768
  {
727
- "name": "address",
728
769
  "label": "Address",
770
+ "name": "address",
729
771
  "variant": "caption"
730
772
  },
731
773
  {
774
+ "label": "Priority",
732
775
  "name": "priority",
733
- "variant": "badge",
734
- "label": "Priority"
776
+ "variant": "badge"
735
777
  },
736
778
  {
737
- "name": "status",
779
+ "variant": "badge",
738
780
  "label": "Status",
739
- "variant": "badge"
781
+ "name": "status"
740
782
  },
741
783
  {
742
- "variant": "caption",
784
+ "label": "Assigned",
743
785
  "name": "assignedTo",
744
- "label": "Assigned"
745
- },
746
- {
747
- "name": "etaMinutes",
748
- "label": "ETA (min)",
749
786
  "variant": "caption"
750
- }
751
- ],
752
- "cols": 1.0,
753
- "itemActions": [
754
- {
755
- "label": "Assign",
756
- "variant": "primary",
757
- "icon": "user-plus",
758
- "event": "ASSIGN"
759
- },
760
- {
761
- "icon": "navigation",
762
- "label": "Start Travel",
763
- "event": "START_TRAVEL",
764
- "variant": "secondary"
765
- },
766
- {
767
- "label": "Arrive",
768
- "event": "ARRIVE",
769
- "icon": "map-pin",
770
- "variant": "secondary"
771
- },
772
- {
773
- "label": "Complete",
774
- "icon": "check",
775
- "event": "COMPLETE",
776
- "variant": "primary"
777
787
  },
778
788
  {
779
- "label": "Cancel",
780
- "event": "CANCEL",
781
- "variant": "danger",
782
- "icon": "x"
789
+ "variant": "caption",
790
+ "label": "ETA (min)",
791
+ "name": "etaMinutes"
783
792
  }
784
- ],
785
- "entity": "@payload.data"
793
+ ]
786
794
  }
787
- ],
788
- "gap": "md",
789
- "direction": "vertical"
795
+ ]
790
796
  }
791
797
  ]
792
798
  ]
@@ -800,114 +806,294 @@
800
806
  "render-ui",
801
807
  "main",
802
808
  {
803
- "type": "alert",
809
+ "message": "@payload.error",
804
810
  "variant": "error",
805
- "message": "@payload.error"
811
+ "type": "alert"
806
812
  }
807
813
  ]
808
814
  ]
809
815
  },
810
816
  {
811
817
  "from": "browsing",
812
- "to": "browsing",
813
- "event": "ASSIGN",
818
+ "to": "viewing_single",
819
+ "event": "OPEN_ORDER",
814
820
  "effects": [
815
821
  [
816
822
  "set",
817
823
  "@entity.id",
818
- "@payload.id"
824
+ "@payload.row.id"
819
825
  ],
820
826
  [
821
827
  "set",
822
- "@entity.assignedTo",
823
- "@payload.assignedTo"
828
+ "@entity.customerName",
829
+ "@payload.row.customerName"
824
830
  ],
825
831
  [
826
832
  "set",
827
- "@entity.status",
828
- "assigned"
833
+ "@entity.serviceType",
834
+ "@payload.row.serviceType"
829
835
  ],
830
- [
831
- "persist",
832
- "update",
833
- "WorkOrder",
834
- "@entity",
835
- {
836
- "emit": {
837
- "success": "WorkOrderUpdated",
838
- "failure": "WorkOrderUpdateFailed"
839
- }
840
- }
841
- ]
842
- ]
843
- },
844
- {
845
- "from": "browsing",
846
- "to": "browsing",
847
- "event": "START_TRAVEL",
848
- "effects": [
849
836
  [
850
837
  "set",
851
- "@entity.id",
852
- "@payload.id"
838
+ "@entity.address",
839
+ "@payload.row.address"
853
840
  ],
854
841
  [
855
842
  "set",
856
- "@entity.etaMinutes",
857
- "@payload.etaMinutes"
843
+ "@entity.priority",
844
+ "@payload.row.priority"
858
845
  ],
859
846
  [
860
847
  "set",
861
848
  "@entity.status",
862
- "en-route"
849
+ "@payload.row.status"
863
850
  ],
864
851
  [
865
- "persist",
866
- "update",
867
- "WorkOrder",
868
- "@entity",
869
- {
870
- "emit": {
871
- "failure": "WorkOrderUpdateFailed",
872
- "success": "WorkOrderUpdated"
873
- }
874
- }
875
- ]
876
- ]
877
- },
878
- {
879
- "from": "browsing",
880
- "to": "browsing",
881
- "event": "ARRIVE",
882
- "effects": [
852
+ "set",
853
+ "@entity.assignedTo",
854
+ "@payload.row.assignedTo"
855
+ ],
883
856
  [
884
857
  "set",
885
- "@entity.id",
886
- "@payload.id"
858
+ "@entity.scheduledAt",
859
+ "@payload.row.scheduledAt"
887
860
  ],
888
861
  [
889
862
  "set",
890
- "@entity.status",
891
- "on-site"
863
+ "@entity.etaMinutes",
864
+ "@payload.row.etaMinutes"
892
865
  ],
893
866
  [
894
- "persist",
895
- "update",
896
- "WorkOrder",
897
- "@entity",
898
- {
899
- "emit": {
900
- "success": "WorkOrderUpdated",
901
- "failure": "WorkOrderUpdateFailed"
902
- }
903
- }
904
- ]
905
- ]
906
- },
867
+ "set",
868
+ "@entity.notes",
869
+ "@payload.row.notes"
870
+ ],
871
+ [
872
+ "set",
873
+ "@entity.createdAt",
874
+ "@payload.row.createdAt"
875
+ ],
876
+ [
877
+ "render-ui",
878
+ "main",
879
+ {
880
+ "direction": "vertical",
881
+ "children": [
882
+ {
883
+ "direction": "horizontal",
884
+ "align": "center",
885
+ "type": "stack",
886
+ "gap": "sm",
887
+ "children": [
888
+ {
889
+ "type": "button",
890
+ "label": "Back",
891
+ "action": "CLOSE_VIEW",
892
+ "variant": "ghost"
893
+ },
894
+ {
895
+ "type": "icon",
896
+ "name": "clipboard-list"
897
+ },
898
+ {
899
+ "content": "@entity.customerName",
900
+ "type": "typography",
901
+ "variant": "h3"
902
+ },
903
+ {
904
+ "variant": "primary",
905
+ "type": "badge",
906
+ "label": "@entity.priority"
907
+ },
908
+ {
909
+ "variant": "default",
910
+ "label": "@entity.status",
911
+ "type": "badge"
912
+ }
913
+ ]
914
+ },
915
+ {
916
+ "type": "divider"
917
+ },
918
+ {
919
+ "gap": "sm",
920
+ "direction": "vertical",
921
+ "type": "stack",
922
+ "children": [
923
+ {
924
+ "type": "stack",
925
+ "gap": "md",
926
+ "children": [
927
+ {
928
+ "content": "Service",
929
+ "color": "muted",
930
+ "type": "typography",
931
+ "variant": "caption"
932
+ },
933
+ {
934
+ "type": "typography",
935
+ "content": "@entity.serviceType",
936
+ "variant": "body"
937
+ }
938
+ ],
939
+ "direction": "horizontal"
940
+ },
941
+ {
942
+ "children": [
943
+ {
944
+ "type": "typography",
945
+ "color": "muted",
946
+ "variant": "caption",
947
+ "content": "Address"
948
+ },
949
+ {
950
+ "type": "typography",
951
+ "variant": "body",
952
+ "content": "@entity.address"
953
+ }
954
+ ],
955
+ "type": "stack",
956
+ "gap": "md",
957
+ "direction": "horizontal"
958
+ },
959
+ {
960
+ "direction": "horizontal",
961
+ "gap": "md",
962
+ "children": [
963
+ {
964
+ "type": "typography",
965
+ "variant": "caption",
966
+ "content": "Assigned to",
967
+ "color": "muted"
968
+ },
969
+ {
970
+ "type": "typography",
971
+ "variant": "body",
972
+ "content": "@entity.assignedTo"
973
+ }
974
+ ],
975
+ "type": "stack"
976
+ },
977
+ {
978
+ "type": "stack",
979
+ "direction": "horizontal",
980
+ "children": [
981
+ {
982
+ "variant": "caption",
983
+ "type": "typography",
984
+ "color": "muted",
985
+ "content": "Notes"
986
+ },
987
+ {
988
+ "variant": "body",
989
+ "content": "@entity.notes",
990
+ "type": "typography"
991
+ }
992
+ ],
993
+ "gap": "md"
994
+ }
995
+ ]
996
+ },
997
+ {
998
+ "type": "divider"
999
+ },
1000
+ {
1001
+ "children": [
1002
+ {
1003
+ "icon": "clock",
1004
+ "value": "@entity.etaMinutes",
1005
+ "type": "stat-display",
1006
+ "label": "ETA (min)"
1007
+ },
1008
+ {
1009
+ "icon": "calendar",
1010
+ "type": "stat-display",
1011
+ "label": "Scheduled",
1012
+ "value": "@entity.scheduledAt"
1013
+ },
1014
+ {
1015
+ "value": "@entity.createdAt",
1016
+ "icon": "calendar-plus",
1017
+ "type": "stat-display",
1018
+ "label": "Created"
1019
+ }
1020
+ ],
1021
+ "cols": 3.0,
1022
+ "type": "simple-grid"
1023
+ },
1024
+ {
1025
+ "gap": "sm",
1026
+ "type": "stack",
1027
+ "align": "center",
1028
+ "children": [
1029
+ {
1030
+ "actionPayload": {
1031
+ "assignedTo": "@entity.assignedTo",
1032
+ "id": "@entity.id",
1033
+ "row": "@entity"
1034
+ },
1035
+ "label": "Assign",
1036
+ "variant": "primary",
1037
+ "action": "ASSIGN",
1038
+ "type": "button"
1039
+ },
1040
+ {
1041
+ "actionPayload": {
1042
+ "etaMinutes": 0.0,
1043
+ "id": "@entity.id",
1044
+ "row": "@entity"
1045
+ },
1046
+ "label": "Start Travel",
1047
+ "type": "button",
1048
+ "action": "START_TRAVEL",
1049
+ "variant": "secondary"
1050
+ },
1051
+ {
1052
+ "label": "Arrive",
1053
+ "action": "ARRIVE",
1054
+ "actionPayload": {
1055
+ "row": "@entity",
1056
+ "id": "@entity.id"
1057
+ },
1058
+ "variant": "secondary",
1059
+ "type": "button"
1060
+ },
1061
+ {
1062
+ "action": "COMPLETE",
1063
+ "actionPayload": {
1064
+ "id": "@entity.id",
1065
+ "notes": "@entity.notes",
1066
+ "row": "@entity"
1067
+ },
1068
+ "type": "button",
1069
+ "label": "Complete",
1070
+ "variant": "primary"
1071
+ },
1072
+ {
1073
+ "action": "CANCEL",
1074
+ "actionPayload": {
1075
+ "notes": "@entity.notes",
1076
+ "row": "@entity",
1077
+ "id": "@entity.id"
1078
+ },
1079
+ "type": "button",
1080
+ "label": "Cancel",
1081
+ "variant": "danger"
1082
+ }
1083
+ ],
1084
+ "direction": "horizontal"
1085
+ }
1086
+ ],
1087
+ "type": "stack",
1088
+ "gap": "md"
1089
+ }
1090
+ ]
1091
+ ]
1092
+ },
907
1093
  {
908
1094
  "from": "browsing",
909
- "to": "browsing",
910
- "event": "COMPLETE",
1095
+ "to": "loading",
1096
+ "event": "CANCEL",
911
1097
  "effects": [
912
1098
  [
913
1099
  "set",
@@ -915,33 +1101,126 @@
915
1101
  "@payload.id"
916
1102
  ],
917
1103
  [
918
- "set",
919
- "@entity.notes",
920
- "@payload.notes"
1104
+ "fetch",
1105
+ "WorkOrder",
1106
+ {
1107
+ "emit": {
1108
+ "failure": "WorkOrderLoadFailed",
1109
+ "success": "WorkOrderLoaded"
1110
+ }
1111
+ }
1112
+ ],
1113
+ [
1114
+ "render-ui",
1115
+ "main",
1116
+ {
1117
+ "direction": "vertical",
1118
+ "type": "stack",
1119
+ "align": "center",
1120
+ "className": "py-12",
1121
+ "gap": "md",
1122
+ "children": [
1123
+ {
1124
+ "type": "spinner"
1125
+ },
1126
+ {
1127
+ "type": "typography",
1128
+ "color": "muted",
1129
+ "content": "Cancelling order…",
1130
+ "variant": "caption"
1131
+ }
1132
+ ]
1133
+ }
1134
+ ]
1135
+ ]
1136
+ },
1137
+ {
1138
+ "from": "viewing_single",
1139
+ "to": "loading",
1140
+ "event": "CLOSE_VIEW",
1141
+ "effects": [
1142
+ [
1143
+ "fetch",
1144
+ "WorkOrder",
1145
+ {
1146
+ "emit": {
1147
+ "failure": "WorkOrderLoadFailed",
1148
+ "success": "WorkOrderLoaded"
1149
+ }
1150
+ }
921
1151
  ],
1152
+ [
1153
+ "render-ui",
1154
+ "main",
1155
+ {
1156
+ "gap": "md",
1157
+ "type": "stack",
1158
+ "align": "center",
1159
+ "className": "py-12",
1160
+ "children": [
1161
+ {
1162
+ "type": "spinner"
1163
+ },
1164
+ {
1165
+ "variant": "caption",
1166
+ "type": "typography",
1167
+ "color": "muted",
1168
+ "content": "Loading work orders…"
1169
+ }
1170
+ ],
1171
+ "direction": "vertical"
1172
+ }
1173
+ ]
1174
+ ]
1175
+ },
1176
+ {
1177
+ "from": "viewing_single",
1178
+ "to": "loading",
1179
+ "event": "ASSIGN",
1180
+ "effects": [
922
1181
  [
923
1182
  "set",
924
- "@entity.status",
925
- "completed"
1183
+ "@entity.id",
1184
+ "@payload.id"
926
1185
  ],
927
1186
  [
928
- "persist",
929
- "update",
1187
+ "fetch",
930
1188
  "WorkOrder",
931
- "@entity",
932
1189
  {
933
1190
  "emit": {
934
- "success": "WorkOrderUpdated",
935
- "failure": "WorkOrderUpdateFailed"
1191
+ "failure": "WorkOrderLoadFailed",
1192
+ "success": "WorkOrderLoaded"
936
1193
  }
937
1194
  }
1195
+ ],
1196
+ [
1197
+ "render-ui",
1198
+ "main",
1199
+ {
1200
+ "direction": "vertical",
1201
+ "className": "py-12",
1202
+ "align": "center",
1203
+ "type": "stack",
1204
+ "gap": "md",
1205
+ "children": [
1206
+ {
1207
+ "type": "spinner"
1208
+ },
1209
+ {
1210
+ "content": "Assigning order…",
1211
+ "type": "typography",
1212
+ "color": "muted",
1213
+ "variant": "caption"
1214
+ }
1215
+ ]
1216
+ }
938
1217
  ]
939
1218
  ]
940
1219
  },
941
1220
  {
942
- "from": "browsing",
943
- "to": "browsing",
944
- "event": "CANCEL",
1221
+ "from": "viewing_single",
1222
+ "to": "loading",
1223
+ "event": "START_TRAVEL",
945
1224
  "effects": [
946
1225
  [
947
1226
  "set",
@@ -949,58 +1228,167 @@
949
1228
  "@payload.id"
950
1229
  ],
951
1230
  [
952
- "set",
953
- "@entity.notes",
954
- "@payload.notes"
1231
+ "fetch",
1232
+ "WorkOrder",
1233
+ {
1234
+ "emit": {
1235
+ "failure": "WorkOrderLoadFailed",
1236
+ "success": "WorkOrderLoaded"
1237
+ }
1238
+ }
955
1239
  ],
1240
+ [
1241
+ "render-ui",
1242
+ "main",
1243
+ {
1244
+ "className": "py-12",
1245
+ "direction": "vertical",
1246
+ "align": "center",
1247
+ "type": "stack",
1248
+ "gap": "md",
1249
+ "children": [
1250
+ {
1251
+ "type": "spinner"
1252
+ },
1253
+ {
1254
+ "type": "typography",
1255
+ "variant": "caption",
1256
+ "content": "Starting travel…",
1257
+ "color": "muted"
1258
+ }
1259
+ ]
1260
+ }
1261
+ ]
1262
+ ]
1263
+ },
1264
+ {
1265
+ "from": "viewing_single",
1266
+ "to": "loading",
1267
+ "event": "ARRIVE",
1268
+ "effects": [
956
1269
  [
957
1270
  "set",
958
- "@entity.status",
959
- "cancelled"
1271
+ "@entity.id",
1272
+ "@payload.id"
960
1273
  ],
961
1274
  [
962
- "persist",
963
- "update",
1275
+ "fetch",
964
1276
  "WorkOrder",
965
- "@entity",
966
1277
  {
967
1278
  "emit": {
968
- "success": "WorkOrderUpdated",
969
- "failure": "WorkOrderUpdateFailed"
1279
+ "failure": "WorkOrderLoadFailed",
1280
+ "success": "WorkOrderLoaded"
970
1281
  }
971
1282
  }
1283
+ ],
1284
+ [
1285
+ "render-ui",
1286
+ "main",
1287
+ {
1288
+ "direction": "vertical",
1289
+ "children": [
1290
+ {
1291
+ "type": "spinner"
1292
+ },
1293
+ {
1294
+ "type": "typography",
1295
+ "content": "Arriving on site…",
1296
+ "variant": "caption",
1297
+ "color": "muted"
1298
+ }
1299
+ ],
1300
+ "gap": "md",
1301
+ "className": "py-12",
1302
+ "align": "center",
1303
+ "type": "stack"
1304
+ }
972
1305
  ]
973
1306
  ]
974
1307
  },
975
1308
  {
976
- "from": "browsing",
1309
+ "from": "viewing_single",
977
1310
  "to": "loading",
978
- "event": "WorkOrderUpdated",
1311
+ "event": "COMPLETE",
979
1312
  "effects": [
1313
+ [
1314
+ "set",
1315
+ "@entity.id",
1316
+ "@payload.id"
1317
+ ],
980
1318
  [
981
1319
  "fetch",
982
1320
  "WorkOrder",
983
1321
  {
984
1322
  "emit": {
985
- "success": "WorkOrderLoaded",
986
- "failure": "WorkOrderLoadFailed"
1323
+ "failure": "WorkOrderLoadFailed",
1324
+ "success": "WorkOrderLoaded"
987
1325
  }
988
1326
  }
1327
+ ],
1328
+ [
1329
+ "render-ui",
1330
+ "main",
1331
+ {
1332
+ "type": "stack",
1333
+ "align": "center",
1334
+ "className": "py-12",
1335
+ "children": [
1336
+ {
1337
+ "type": "spinner"
1338
+ },
1339
+ {
1340
+ "type": "typography",
1341
+ "content": "Completing order…",
1342
+ "variant": "caption",
1343
+ "color": "muted"
1344
+ }
1345
+ ],
1346
+ "gap": "md",
1347
+ "direction": "vertical"
1348
+ }
989
1349
  ]
990
1350
  ]
991
1351
  },
992
1352
  {
993
- "from": "browsing",
994
- "to": "browsing",
995
- "event": "WorkOrderUpdateFailed",
1353
+ "from": "viewing_single",
1354
+ "to": "loading",
1355
+ "event": "CANCEL",
996
1356
  "effects": [
1357
+ [
1358
+ "set",
1359
+ "@entity.id",
1360
+ "@payload.id"
1361
+ ],
1362
+ [
1363
+ "fetch",
1364
+ "WorkOrder",
1365
+ {
1366
+ "emit": {
1367
+ "success": "WorkOrderLoaded",
1368
+ "failure": "WorkOrderLoadFailed"
1369
+ }
1370
+ }
1371
+ ],
997
1372
  [
998
1373
  "render-ui",
999
1374
  "main",
1000
1375
  {
1001
- "type": "alert",
1002
- "message": "@payload.error",
1003
- "variant": "error"
1376
+ "type": "stack",
1377
+ "align": "center",
1378
+ "children": [
1379
+ {
1380
+ "type": "spinner"
1381
+ },
1382
+ {
1383
+ "variant": "caption",
1384
+ "type": "typography",
1385
+ "color": "muted",
1386
+ "content": "Cancelling order…"
1387
+ }
1388
+ ],
1389
+ "className": "py-12",
1390
+ "direction": "vertical",
1391
+ "gap": "md"
1004
1392
  }
1005
1393
  ]
1006
1394
  ]
@@ -1024,8 +1412,8 @@
1024
1412
  "render-ui",
1025
1413
  "main",
1026
1414
  {
1027
- "type": "spinner",
1028
- "size": "sm"
1415
+ "size": "sm",
1416
+ "type": "spinner"
1029
1417
  }
1030
1418
  ]
1031
1419
  ]