@almadar/std 14.26.0 → 14.27.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 (151) hide show
  1. package/behaviors/registry/app/atoms/std-applicant.orb +496 -42
  2. package/behaviors/registry/app/atoms/std-approval-request.orb +433 -593
  3. package/behaviors/registry/app/atoms/std-campaign-goal.orb +438 -228
  4. package/behaviors/registry/app/atoms/std-change-order.orb +565 -307
  5. package/behaviors/registry/app/atoms/std-chart-of-accounts.orb +434 -97
  6. package/behaviors/registry/app/atoms/std-checkin.orb +434 -270
  7. package/behaviors/registry/app/atoms/std-class-roster.orb +495 -61
  8. package/behaviors/registry/app/atoms/std-class-session.orb +485 -104
  9. package/behaviors/registry/app/atoms/std-court-deadline.orb +519 -88
  10. package/behaviors/registry/app/atoms/std-customer-account.orb +577 -97
  11. package/behaviors/registry/app/atoms/std-donation-receipt.orb +498 -55
  12. package/behaviors/registry/app/atoms/std-donor.orb +445 -135
  13. package/behaviors/registry/app/atoms/std-drip-sequence.orb +445 -62
  14. package/behaviors/registry/app/atoms/std-driver.orb +465 -480
  15. package/behaviors/registry/app/atoms/std-dunning.orb +450 -512
  16. package/behaviors/registry/app/atoms/std-email-broadcast.orb +517 -64
  17. package/behaviors/registry/app/atoms/std-event.orb +465 -667
  18. package/behaviors/registry/app/atoms/std-health-score.orb +368 -371
  19. package/behaviors/registry/app/atoms/std-help-article.orb +373 -506
  20. package/behaviors/registry/app/atoms/std-help-category.orb +344 -359
  21. package/behaviors/registry/app/atoms/std-interview-slot.orb +490 -48
  22. package/behaviors/registry/app/atoms/std-invoice.orb +494 -291
  23. package/behaviors/registry/app/atoms/std-kitchen-display.orb +588 -96
  24. package/behaviors/registry/app/atoms/std-lease.orb +506 -190
  25. package/behaviors/registry/app/atoms/std-ledger-entry.orb +483 -154
  26. package/behaviors/registry/app/atoms/std-maintenance-request.orb +642 -192
  27. package/behaviors/registry/app/atoms/std-matter.orb +486 -318
  28. package/behaviors/registry/app/atoms/std-membership.orb +512 -102
  29. package/behaviors/registry/app/atoms/std-menu.orb +775 -183
  30. package/behaviors/registry/app/atoms/std-modifier-group.orb +522 -104
  31. package/behaviors/registry/app/atoms/std-nps-survey.orb +319 -327
  32. package/behaviors/registry/app/atoms/std-offer-letter.orb +497 -47
  33. package/behaviors/registry/app/atoms/std-payout-ledger.orb +378 -362
  34. package/behaviors/registry/app/atoms/std-question-bank.orb +379 -346
  35. package/behaviors/registry/app/atoms/std-receipt.orb +553 -44
  36. package/behaviors/registry/app/atoms/std-recurring-charge.orb +419 -832
  37. package/behaviors/registry/app/atoms/std-renewal-risk.orb +370 -421
  38. package/behaviors/registry/app/atoms/std-rent-charge.orb +657 -55
  39. package/behaviors/registry/app/atoms/std-reorder-rule.orb +510 -59
  40. package/behaviors/registry/app/atoms/std-response-collector.orb +451 -144
  41. package/behaviors/registry/app/atoms/std-rfi.orb +502 -461
  42. package/behaviors/registry/app/atoms/std-route-optimize.orb +448 -158
  43. package/behaviors/registry/app/atoms/std-segment.orb +360 -98
  44. package/behaviors/registry/app/atoms/std-stock-level.orb +486 -103
  45. package/behaviors/registry/app/atoms/std-submittal.orb +538 -526
  46. package/behaviors/registry/app/atoms/std-table-map.orb +88 -51
  47. package/behaviors/registry/app/atoms/std-technician-dispatch.orb +653 -71
  48. package/behaviors/registry/app/atoms/std-telematics-event.orb +310 -215
  49. package/behaviors/registry/app/atoms/std-template-editor.orb +513 -90
  50. package/behaviors/registry/app/atoms/std-tenant.orb +525 -66
  51. package/behaviors/registry/app/atoms/std-ticket-tier.orb +472 -460
  52. package/behaviors/registry/app/atoms/std-time-entry.orb +354 -317
  53. package/behaviors/registry/app/atoms/std-timesheet.orb +551 -284
  54. package/behaviors/registry/app/atoms/std-trial.orb +410 -317
  55. package/behaviors/registry/app/atoms/std-vehicle.orb +398 -563
  56. package/behaviors/registry/app/atoms/std-waitlist.orb +372 -283
  57. package/behaviors/registry/app/atoms/std-warehouse.orb +273 -214
  58. package/behaviors/registry/app/atoms/std-work-order.orb +628 -240
  59. package/behaviors/registry/app/molecules/std-applicant-form.orb +89 -83
  60. package/behaviors/registry/app/molecules/std-application.orb +178 -263
  61. package/behaviors/registry/app/molecules/std-broadcast-builder.orb +67 -176
  62. package/behaviors/registry/app/molecules/std-cart.orb +78 -72
  63. package/behaviors/registry/app/molecules/std-form-builder.orb +437 -176
  64. package/behaviors/registry/app/molecules/std-ledger-entry-form.orb +608 -89
  65. package/behaviors/registry/app/molecules/std-stock-adjustment.orb +501 -102
  66. package/behaviors/registry/app/molecules/std-vendor-onboarding.orb +383 -469
  67. package/behaviors/registry/core/atoms/std-billable-hour.orb +495 -91
  68. package/behaviors/registry/core/atoms/std-branching-logic.orb +271 -600
  69. package/behaviors/registry/core/atoms/std-file-store.orb +534 -164
  70. package/behaviors/registry/core/atoms/std-gallery.orb +118 -101
  71. package/behaviors/registry/core/atoms/std-image-upload-multi.orb +87 -57
  72. package/behaviors/registry/core/atoms/std-page-tree.orb +342 -484
  73. package/behaviors/registry/core/atoms/std-rich-editor.orb +288 -416
  74. package/behaviors/registry/core/atoms/std-version-history.orb +454 -430
  75. package/behaviors/registry/core/molecules/std-wizard-form.orb +222 -147
  76. package/dist/behaviors/registry/app/atoms/std-applicant.orb +496 -42
  77. package/dist/behaviors/registry/app/atoms/std-approval-request.orb +433 -593
  78. package/dist/behaviors/registry/app/atoms/std-campaign-goal.orb +438 -228
  79. package/dist/behaviors/registry/app/atoms/std-change-order.orb +565 -307
  80. package/dist/behaviors/registry/app/atoms/std-chart-of-accounts.orb +434 -97
  81. package/dist/behaviors/registry/app/atoms/std-checkin.orb +434 -270
  82. package/dist/behaviors/registry/app/atoms/std-class-roster.orb +495 -61
  83. package/dist/behaviors/registry/app/atoms/std-class-session.orb +485 -104
  84. package/dist/behaviors/registry/app/atoms/std-court-deadline.orb +519 -88
  85. package/dist/behaviors/registry/app/atoms/std-customer-account.orb +577 -97
  86. package/dist/behaviors/registry/app/atoms/std-donation-receipt.orb +498 -55
  87. package/dist/behaviors/registry/app/atoms/std-donor.orb +445 -135
  88. package/dist/behaviors/registry/app/atoms/std-drip-sequence.orb +445 -62
  89. package/dist/behaviors/registry/app/atoms/std-driver.orb +465 -480
  90. package/dist/behaviors/registry/app/atoms/std-dunning.orb +450 -512
  91. package/dist/behaviors/registry/app/atoms/std-email-broadcast.orb +517 -64
  92. package/dist/behaviors/registry/app/atoms/std-event.orb +465 -667
  93. package/dist/behaviors/registry/app/atoms/std-health-score.orb +368 -371
  94. package/dist/behaviors/registry/app/atoms/std-help-article.orb +373 -506
  95. package/dist/behaviors/registry/app/atoms/std-help-category.orb +344 -359
  96. package/dist/behaviors/registry/app/atoms/std-interview-slot.orb +490 -48
  97. package/dist/behaviors/registry/app/atoms/std-invoice.orb +494 -291
  98. package/dist/behaviors/registry/app/atoms/std-kitchen-display.orb +588 -96
  99. package/dist/behaviors/registry/app/atoms/std-lease.orb +506 -190
  100. package/dist/behaviors/registry/app/atoms/std-ledger-entry.orb +483 -154
  101. package/dist/behaviors/registry/app/atoms/std-maintenance-request.orb +642 -192
  102. package/dist/behaviors/registry/app/atoms/std-matter.orb +486 -318
  103. package/dist/behaviors/registry/app/atoms/std-membership.orb +512 -102
  104. package/dist/behaviors/registry/app/atoms/std-menu.orb +775 -183
  105. package/dist/behaviors/registry/app/atoms/std-modifier-group.orb +522 -104
  106. package/dist/behaviors/registry/app/atoms/std-nps-survey.orb +319 -327
  107. package/dist/behaviors/registry/app/atoms/std-offer-letter.orb +497 -47
  108. package/dist/behaviors/registry/app/atoms/std-payout-ledger.orb +378 -362
  109. package/dist/behaviors/registry/app/atoms/std-question-bank.orb +379 -346
  110. package/dist/behaviors/registry/app/atoms/std-receipt.orb +553 -44
  111. package/dist/behaviors/registry/app/atoms/std-recurring-charge.orb +419 -832
  112. package/dist/behaviors/registry/app/atoms/std-renewal-risk.orb +370 -421
  113. package/dist/behaviors/registry/app/atoms/std-rent-charge.orb +657 -55
  114. package/dist/behaviors/registry/app/atoms/std-reorder-rule.orb +510 -59
  115. package/dist/behaviors/registry/app/atoms/std-response-collector.orb +451 -144
  116. package/dist/behaviors/registry/app/atoms/std-rfi.orb +502 -461
  117. package/dist/behaviors/registry/app/atoms/std-route-optimize.orb +448 -158
  118. package/dist/behaviors/registry/app/atoms/std-segment.orb +360 -98
  119. package/dist/behaviors/registry/app/atoms/std-stock-level.orb +486 -103
  120. package/dist/behaviors/registry/app/atoms/std-submittal.orb +538 -526
  121. package/dist/behaviors/registry/app/atoms/std-table-map.orb +88 -51
  122. package/dist/behaviors/registry/app/atoms/std-technician-dispatch.orb +653 -71
  123. package/dist/behaviors/registry/app/atoms/std-telematics-event.orb +310 -215
  124. package/dist/behaviors/registry/app/atoms/std-template-editor.orb +513 -90
  125. package/dist/behaviors/registry/app/atoms/std-tenant.orb +525 -66
  126. package/dist/behaviors/registry/app/atoms/std-ticket-tier.orb +472 -460
  127. package/dist/behaviors/registry/app/atoms/std-time-entry.orb +354 -317
  128. package/dist/behaviors/registry/app/atoms/std-timesheet.orb +551 -284
  129. package/dist/behaviors/registry/app/atoms/std-trial.orb +410 -317
  130. package/dist/behaviors/registry/app/atoms/std-vehicle.orb +398 -563
  131. package/dist/behaviors/registry/app/atoms/std-waitlist.orb +372 -283
  132. package/dist/behaviors/registry/app/atoms/std-warehouse.orb +273 -214
  133. package/dist/behaviors/registry/app/atoms/std-work-order.orb +628 -240
  134. package/dist/behaviors/registry/app/molecules/std-applicant-form.orb +89 -83
  135. package/dist/behaviors/registry/app/molecules/std-application.orb +178 -263
  136. package/dist/behaviors/registry/app/molecules/std-broadcast-builder.orb +67 -176
  137. package/dist/behaviors/registry/app/molecules/std-cart.orb +78 -72
  138. package/dist/behaviors/registry/app/molecules/std-form-builder.orb +437 -176
  139. package/dist/behaviors/registry/app/molecules/std-ledger-entry-form.orb +608 -89
  140. package/dist/behaviors/registry/app/molecules/std-stock-adjustment.orb +501 -102
  141. package/dist/behaviors/registry/app/molecules/std-vendor-onboarding.orb +383 -469
  142. package/dist/behaviors/registry/core/atoms/std-billable-hour.orb +495 -91
  143. package/dist/behaviors/registry/core/atoms/std-branching-logic.orb +271 -600
  144. package/dist/behaviors/registry/core/atoms/std-file-store.orb +534 -164
  145. package/dist/behaviors/registry/core/atoms/std-gallery.orb +118 -101
  146. package/dist/behaviors/registry/core/atoms/std-image-upload-multi.orb +87 -57
  147. package/dist/behaviors/registry/core/atoms/std-page-tree.orb +342 -484
  148. package/dist/behaviors/registry/core/atoms/std-rich-editor.orb +288 -416
  149. package/dist/behaviors/registry/core/atoms/std-version-history.orb +454 -430
  150. package/dist/behaviors/registry/core/molecules/std-wizard-form.orb +222 -147
  151. 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
  ]