@antelopejs/dms 0.7.6 → 0.7.8

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 (75) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/dist/test/unit/interfaces/dms-base/column-display.test.js +15 -0
  3. package/dist/test/unit/interfaces/dms-base/column-display.test.js.map +1 -1
  4. package/dist/test/unit/interfaces/dms-base/page-live.test.d.ts +1 -0
  5. package/dist/test/unit/interfaces/dms-base/page-live.test.js +66 -0
  6. package/dist/test/unit/interfaces/dms-base/page-live.test.js.map +1 -0
  7. package/dist/test/unit/interfaces/dms-base/table-view-source-reorder.test.js +16 -0
  8. package/dist/test/unit/interfaces/dms-base/table-view-source-reorder.test.js.map +1 -1
  9. package/frontend-vue/layers/dms-core/app/composables/period/usePeriod.ts +23 -3
  10. package/frontend-vue/layers/dms-core/i18n/locales/core-en-GB.json +2 -1
  11. package/frontend-vue/layers/dms-core/i18n/locales/core-fr-FR.json +2 -1
  12. package/frontend-vue/layers/dms-layout/app/build/components/layout/RowSidePanel.vue +134 -0
  13. package/frontend-vue/layers/dms-layout/app/build/composables/layout/rowSidePanel.ts +129 -0
  14. package/frontend-vue/layers/dms-layout/app/pages/[...slug].vue +6 -0
  15. package/frontend-vue/layers/dms-layout/app/types/page.ts +3 -0
  16. package/frontend-vue/layers/dms-layout/i18n/locales/layout-en-GB.json +5 -1
  17. package/frontend-vue/layers/dms-layout/i18n/locales/layout-fr-FR.json +5 -1
  18. package/frontend-vue/layers/dms-ui/app/build/components/form/FormSectionNav.vue +30 -15
  19. package/frontend-vue/layers/dms-ui/app/build/components/table/Table.vue +44 -8
  20. package/frontend-vue/layers/dms-ui/app/build/components/table-view/LiveHoldBanner.vue +35 -0
  21. package/frontend-vue/layers/dms-ui/app/build/composables/actions/rowNavigation.ts +17 -0
  22. package/frontend-vue/layers/dms-ui/app/build/composables/actions/useActionTargets.ts +107 -12
  23. package/frontend-vue/layers/dms-ui/app/build/composables/blocks/useRefreshTriggers.ts +26 -11
  24. package/frontend-vue/layers/dms-ui/app/build/composables/data-types/cellHelpers.ts +24 -0
  25. package/frontend-vue/layers/dms-ui/app/build/composables/data-types/metricCells.ts +58 -16
  26. package/frontend-vue/layers/dms-ui/app/build/composables/data-types/registerDefaults.ts +30 -3
  27. package/frontend-vue/layers/dms-ui/app/build/composables/live/currentPageLive.ts +107 -0
  28. package/frontend-vue/layers/dms-ui/app/build/composables/live/formatElapsed.ts +25 -0
  29. package/frontend-vue/layers/dms-ui/app/build/composables/live/pageLiveController.ts +229 -0
  30. package/frontend-vue/layers/dms-ui/app/build/composables/live/shortcuts.ts +8 -0
  31. package/frontend-vue/layers/dms-ui/app/build/composables/live/useLiveToggleShortcut.ts +25 -0
  32. package/frontend-vue/layers/dms-ui/app/build/composables/live/usePageLiveHost.ts +46 -0
  33. package/frontend-vue/layers/dms-ui/app/build/composables/period/periodQuery.ts +330 -0
  34. package/frontend-vue/layers/dms-ui/app/build/composables/period/usePeriodLocation.ts +189 -0
  35. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableListData.ts +15 -3
  36. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableLiveHold.ts +77 -0
  37. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableRows.ts +53 -18
  38. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableViewConfig.ts +1 -0
  39. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/utils/recordLink.ts +61 -2
  40. package/frontend-vue/layers/dms-ui/app/build/utils/rowClickTrigger.ts +73 -0
  41. package/frontend-vue/layers/dms-ui/app/components/blocks/LiveToggleBlock.vue +92 -0
  42. package/frontend-vue/layers/dms-ui/app/components/field-row/FieldRow.vue +10 -4
  43. package/frontend-vue/layers/dms-ui/app/components/period/PeriodSelector.vue +19 -0
  44. package/frontend-vue/layers/dms-ui/app/components/table-view/TableView.vue +90 -12
  45. package/frontend-vue/layers/dms-ui/app/composables/form/types/field.ts +1 -1
  46. package/frontend-vue/layers/dms-ui/app/composables/live/usePageLive.ts +52 -0
  47. package/frontend-vue/layers/dms-ui/app/composables/table-view/shortcuts/index.ts +8 -0
  48. package/frontend-vue/layers/dms-ui/app/composables/table-view/shortcuts/tableViewRowPanel.ts +30 -0
  49. package/frontend-vue/layers/dms-ui/app/composables/table-view/types/action-target.ts +15 -0
  50. package/frontend-vue/layers/dms-ui/app/composables/table-view/types/config.ts +4 -0
  51. package/frontend-vue/layers/dms-ui/app/config/shortcuts-registry.ts +5 -0
  52. package/frontend-vue/layers/dms-ui/app/types/live.ts +8 -0
  53. package/frontend-vue/layers/dms-ui/app/types/row-action.ts +5 -2
  54. package/frontend-vue/layers/dms-ui/app/utils/blockRefresh.ts +44 -6
  55. package/frontend-vue/layers/dms-ui/i18n/locales/ui-en-GB.json +28 -0
  56. package/frontend-vue/layers/dms-ui/i18n/locales/ui-fr-FR.json +28 -0
  57. package/frontend-vue/tests/chart-live-pause.test.ts +74 -0
  58. package/frontend-vue/tests/field-row.test.ts +14 -0
  59. package/frontend-vue/tests/form-section-nav-groups.test.ts +75 -14
  60. package/frontend-vue/tests/live-hold-banner.test.ts +37 -0
  61. package/frontend-vue/tests/live-toggle.test.ts +162 -0
  62. package/frontend-vue/tests/page-live-gate.test.ts +241 -0
  63. package/frontend-vue/tests/period-live-pause.test.ts +120 -0
  64. package/frontend-vue/tests/period-selector-url.test.ts +268 -0
  65. package/frontend-vue/tests/period-url-query.test.ts +351 -0
  66. package/frontend-vue/tests/row-side-panel.test.ts +653 -0
  67. package/frontend-vue/tests/table-cell-tones.test.ts +176 -0
  68. package/frontend-vue/tests/table-live-hold.test.ts +204 -0
  69. package/frontend-vue/tests/table-source-period-scope.test.ts +144 -0
  70. package/frontend-vue/tests/table-view-refresh.test.ts +2 -2
  71. package/frontend-vue/tests/table-view-sources.test.ts +40 -0
  72. package/frontend-vue/tests/vue-inventory.test.ts +1 -1
  73. package/package.json +2 -2
  74. package/skills/dms/SKILL.md +11 -3
  75. package/skills/dms-pages/REFERENCE.md +5 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,40 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.7.8
4
+
5
+ [compare changes](https://github.com/AntelopeJS/dms/compare/v0.7.7...v0.7.8)
6
+
7
+ ### 🚀 Enhancements
8
+
9
+ - **table-view:** Tone duration and text cells from a row field ([#201](https://github.com/AntelopeJS/dms/pull/201))
10
+ - **period-selector:** Keep the period in the page URL ([#204](https://github.com/AntelopeJS/dms/pull/204))
11
+ - **table-view:** Open rows in a side panel action target ([#202](https://github.com/AntelopeJS/dms/pull/202))
12
+ - **page:** Add a Direct / Pause live mode over the page realtime ([#203](https://github.com/AntelopeJS/dms/pull/203))
13
+
14
+ ### 🩹 Fixes
15
+
16
+ - **field-row:** Span both form columns when a row has no label ([#205](https://github.com/AntelopeJS/dms/pull/205))
17
+
18
+ ### 🏡 Chore
19
+
20
+ - **release:** @antelopejs/interface-dms v0.5.4 ([78deb34](https://github.com/AntelopeJS/dms/commit/78deb34))
21
+
22
+ ### ❤️ Contributors
23
+
24
+ - Antony Rizzitelli <rizzitelli.antony@pm.me>
25
+
26
+ ## v0.7.7
27
+
28
+ [compare changes](https://github.com/AntelopeJS/dms/compare/v0.7.6...v0.7.7)
29
+
30
+ ### 🚀 Enhancements
31
+
32
+ - **dms:** Group the jump navigation chips by navGroup ([#200](https://github.com/AntelopeJS/dms/pull/200))
33
+
34
+ ### ❤️ Contributors
35
+
36
+ - Antony Rizzitelli <rizzitelli.antony@pm.me>
37
+
3
38
  ## v0.7.6
4
39
 
5
40
  [compare changes](https://github.com/AntelopeJS/dms/compare/v0.7.5...v0.7.6)
@@ -43,6 +43,7 @@ describe("[unit] interfaces/dms-base — column displays", () => {
43
43
  display: { type: "identity", options: {} },
44
44
  };
45
45
  new table_view_1.DefaultDisplays.IdentityDisplay({ avatar: "photo" });
46
+ new table_view_1.DefaultDisplays.DurationDisplay({ format: "seconds" });
46
47
  (0, chai_1.expect)(column.name).to.equal("Member");
47
48
  });
48
49
  it("serializes the metric displays to the cell types drawing them", () => {
@@ -84,6 +85,20 @@ describe("[unit] interfaces/dms-base — column displays", () => {
84
85
  new table_view_1.DefaultDisplays.StatusPillDisplay({ toneField: "httpTone" }),
85
86
  { type: "status_pill", options: { toneField: "httpTone" } },
86
87
  ],
88
+ [
89
+ new table_view_1.DefaultDisplays.DurationDisplay({
90
+ format: "ms",
91
+ toneField: "durationTone",
92
+ }),
93
+ {
94
+ type: "duration",
95
+ options: { format: "ms", toneField: "durationTone" },
96
+ },
97
+ ],
98
+ [
99
+ new table_view_1.DefaultDisplays.TextDisplay({ toneField: "errorTone" }),
100
+ { type: "string", options: { toneField: "errorTone" } },
101
+ ],
87
102
  [new table_view_1.DefaultDisplays.BytesDisplay(), { type: "bytes" }],
88
103
  [
89
104
  new table_view_1.DefaultDisplays.MonoDisplay({ copy: true }),
@@ -1 +1 @@
1
- {"version":3,"file":"column-display.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/interfaces/dms-base/column-display.test.ts"],"names":[],"mappings":";;;;;;;;AAAA,+BAA8B;AAC9B,2FAA2F;AAC3F,0EAMmD;AACnD,sGAA2G;AAO3G,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,0BAA8B;CAAG,CAAA;AAAzD,eAAe;IADpB,IAAA,4BAAe,EAAC,qBAAqB,CAAC;GACjC,eAAe,CAA0C;AAE/D,MAAM,mBAAoB,SAAQ,0BAAa;CAAG;AAElD,QAAQ,CAAC,8CAA8C,EAAE,GAAG,EAAE;IAC5D,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,IAAA,aAAM,EACJ,IAAA,uCAAsB,EACpB,IAAI,4BAAe,CAAC,eAAe,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,CAChE,CACF,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QAC3E,IAAA,aAAM,EACJ,IAAA,uCAAsB,EAAC,IAAI,4BAAe,CAAC,gBAAgB,EAAE,CAAC,CAC/D,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,IAAA,aAAM,EACJ;YACE,IAAI,4BAAe,CAAC,eAAe,EAAE;YACrC,IAAI,4BAAe,CAAC,YAAY,EAAE;YAClC,IAAI,4BAAe,CAAC,mBAAmB,EAAE;YACzC,IAAI,4BAAe,CAAC,gBAAgB,EAAE;SACvC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAA,uCAAsB,EAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAC1D,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,IAAA,aAAM,EACJ,IAAA,uCAAsB,EAAC,IAAI,eAAe,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAC5D,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,IAAA,aAAM,EAAC,GAAG,EAAE,CAAC,IAAA,uCAAsB,EAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CACtE,uCAAuC,CACxC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,MAAM,MAAM,GAAkB;YAC5B,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,IAAI,gCAAgB,CAAC,UAAU,EAAE;YAEvC,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE;SAC3C,CAAC;QAEF,IAAI,4BAAe,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QACzD,IAAA,aAAM,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,KAAK,GAA2C;YACpD;gBACE,IAAI,4BAAe,CAAC,iBAAiB,CAAC;oBACpC,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;oBAC3B,QAAQ,EAAE,WAAW;iBACtB,CAAC;gBACF;oBACE,IAAI,EAAE,aAAa;oBACnB,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE;iBAChE;aACF;YACD;gBACE,IAAI,4BAAe,CAAC,eAAe,CAAC;oBAClC,SAAS,EAAE,MAAM;oBACjB,UAAU,EAAE,OAAO;oBACnB,UAAU,EAAE,QAAQ;iBACrB,CAAC;gBACF;oBACE,IAAI,EAAE,UAAU;oBAChB,OAAO,EAAE;wBACP,SAAS,EAAE,MAAM;wBACjB,UAAU,EAAE,OAAO;wBACnB,UAAU,EAAE,QAAQ;qBACrB;iBACF;aACF;YACD;gBACE,IAAI,4BAAe,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;gBAC3D,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;aACtD;YACD;gBACE,IAAI,4BAAe,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;gBAClD,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;aAC7C;YACD;gBACE,IAAI,4BAAe,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;gBAChE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE;aAC5D;YACD,CAAC,IAAI,4BAAe,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YACvD;gBACE,IAAI,4BAAe,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBAC/C,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;aAC1C;SACF,CAAC;QACF,KAAK,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,KAAK,EAAE,CAAC;YAC1C,IAAA,aAAM,EAAC,IAAA,uCAAsB,EAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,OAAO,GAA6C;YACxD,IAAI;YACJ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE;YACjD,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE;SACpC,CAAC;QAEF,MAAM,MAAM,GAA6B,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;QAC5E,IAAA,aAAM,EAAC,CAAC,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAE/C,IAAI,4BAAe,CAAC,eAAe,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sFAAsF,EAAE,GAAG,EAAE;QAC9F,MAAM,KAAK,GAA2C;YACpD;gBACE,IAAI,4BAAe,CAAC,iBAAiB,CAAC;oBACpC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE;oBAC/C,QAAQ,EAAE,cAAc;oBACxB,OAAO,EAAE,OAAO;iBACjB,CAAC;gBACF;oBACE,IAAI,EAAE,aAAa;oBACnB,OAAO,EAAE;wBACP,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE;wBAC/C,QAAQ,EAAE,cAAc;wBACxB,OAAO,EAAE,OAAO;qBACjB;iBACF;aACF;YACD;gBACE,IAAI,4BAAe,CAAC,cAAc,CAAC;oBACjC,YAAY,EAAE,gBAAgB;oBAC9B,QAAQ,EAAE,aAAa;oBACvB,UAAU,EAAE,6BAA6B;iBAC1C,CAAC;gBACF;oBACE,IAAI,EAAE,UAAU;oBAChB,OAAO,EAAE;wBACP,YAAY,EAAE,gBAAgB;wBAC9B,QAAQ,EAAE,aAAa;wBACvB,UAAU,EAAE,6BAA6B;qBAC1C;iBACF;aACF;YACD;gBACE,IAAI,4BAAe,CAAC,eAAe,CAAC;oBAClC,UAAU,EAAE,8BAA8B;oBAC1C,SAAS,EAAE,YAAY;oBACvB,YAAY,EAAE,OAAO;iBACtB,CAAC;gBACF;oBACE,IAAI,EAAE,UAAU;oBAChB,OAAO,EAAE;wBACP,UAAU,EAAE,8BAA8B;wBAC1C,SAAS,EAAE,YAAY;wBACvB,YAAY,EAAE,OAAO;qBACtB;iBACF;aACF;SACF,CAAC;QACF,KAAK,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,KAAK,EAAE,CAAC;YAC1C,IAAA,aAAM,EAAC,IAAA,uCAAsB,EAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACpE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,QAAQ,GAAuB;YACnC,YAAY;YACZ,EAAE,GAAG,EAAE,qCAAqC,EAAE;YAC9C;gBACE,IAAI,EAAE;oBACJ,GAAG,EAAE,+BAA+B;oBACpC,MAAM,EAAE;wBACN,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE;qBAC3D;iBACF;gBACD,IAAI,EAAE,OAAO;aACd;SACF,CAAC;QAEF,MAAM,SAAS,GAAqB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACrE,IAAA,aAAM,EAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACnC,IAAA,aAAM,EAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,IAAA,aAAM,EAAC,IAAA,uCAAsB,EAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"column-display.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/interfaces/dms-base/column-display.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const interface_core_1 = require("@antelopejs/interface-core");
4
+ const chai_1 = require("chai");
5
+ const live_toggle_1 = require("@antelopejs/interface-dms/base/live-toggle");
6
+ const block_types_1 = require("@antelopejs/interface-dms/base/block-types");
7
+ const default_types_1 = require("@antelopejs/interface-dms/base/data-types/default-types");
8
+ const table_view_1 = require("@antelopejs/interface-dms/base/table-view");
9
+ const page_1 = require("@antelopejs/interface-dms/page");
10
+ const STRING = new default_types_1.DefaultDataTypes.StringType();
11
+ describe("[unit] interfaces/dms-base — page live mode", () => {
12
+ it("carries the page's live option to the browser", () => {
13
+ const page = (0, page_1.PageController)("live-page", {
14
+ displayName: "Live page",
15
+ category: page_1.pagesCategory,
16
+ live: { maxRate: 5 },
17
+ });
18
+ (0, chai_1.expect)((0, interface_core_1.GetMetadata)(page, page_1.PageMetadata).pageInfo?.live).to.deep.equal({
19
+ maxRate: 5,
20
+ });
21
+ });
22
+ it("refuses a maxRate that is not a positive number of seconds", () => {
23
+ for (const maxRate of [0, -1, Number.NaN, Number.POSITIVE_INFINITY]) {
24
+ (0, chai_1.expect)(() => (0, page_1.PageController)(`live-page-bad-${maxRate}`, {
25
+ displayName: "Live page",
26
+ category: page_1.pagesCategory,
27
+ live: { maxRate },
28
+ })).to.throw(/live\.maxRate/);
29
+ }
30
+ });
31
+ it("accepts live without a rate", () => {
32
+ const page = (0, page_1.PageController)("live-page-uncapped", {
33
+ displayName: "Live page",
34
+ category: page_1.pagesCategory,
35
+ live: {},
36
+ });
37
+ (0, chai_1.expect)((0, interface_core_1.GetMetadata)(page, page_1.PageMetadata).pageInfo?.live).to.deep.equal({});
38
+ });
39
+ it("serializes the LiveToggle block under its block component name", () => {
40
+ const serialized = (0, live_toggle_1.LiveToggle)({ align: "left" }).serializeSync();
41
+ (0, chai_1.expect)(serialized.componentName).to.equal("dms-live-toggle-block");
42
+ (0, chai_1.expect)(serialized.options).to.deep.equal({ align: "left" });
43
+ (0, chai_1.expect)((0, live_toggle_1.LiveToggle)().serializeSync().options).to.deep.equal({});
44
+ });
45
+ it("lists the LiveToggle block in the catalog", () => {
46
+ const block = (0, block_types_1.GetBlockType)("LiveToggle");
47
+ (0, chai_1.expect)(block?.componentName).to.equal("dms-live-toggle-block");
48
+ (0, chai_1.expect)(block?.config.align?.enum).to.deep.equal([
49
+ "left",
50
+ "center",
51
+ "right",
52
+ ]);
53
+ (0, chai_1.expect)(block?.config.showUpdatedAt?.type).to.equal("boolean");
54
+ });
55
+ it("hands a source table's liveHold to its renderer", () => {
56
+ const options = table_view_1.TableView.fromSource({
57
+ fetchUrl: "/api/request-log",
58
+ columns: { path: { name: "Path", type: STRING } },
59
+ realtimeTopic: "api:requests",
60
+ liveHold: true,
61
+ }).serializeSync().options;
62
+ (0, chai_1.expect)(options.liveHold).to.equal(true);
63
+ (0, chai_1.expect)(options.realtimeTopic).to.equal("api:requests");
64
+ });
65
+ });
66
+ //# sourceMappingURL=page-live.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-live.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/interfaces/dms-base/page-live.test.ts"],"names":[],"mappings":"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"}
@@ -114,6 +114,22 @@ describe("[unit] interfaces/dms-base — table view sources and reorder", () =>
114
114
  });
115
115
  (0, chai_1.expect)(options.realtime).to.equal(false);
116
116
  });
117
+ it("serves the route reading one row, and refuses one without {id}", () => {
118
+ (0, chai_1.expect)(sourceOf({ fetchRowUrl: "/api/request-log/{id}" }).source).to.deep.equal({
119
+ fetchUrl: "/api/request-log",
120
+ fetchRowUrl: "/api/request-log/{id}",
121
+ capabilities: {},
122
+ });
123
+ (0, chai_1.expect)(() => sourceOf({ fetchRowUrl: "/api/request-log/one" })).to.throw(/fetchRowUrl without \{id\}/);
124
+ });
125
+ it("serves the period scope a source table follows", () => {
126
+ const options = sourceOf({ periodScope: "report" });
127
+ (0, chai_1.expect)(options.source).to.deep.equal({
128
+ fetchUrl: "/api/request-log",
129
+ capabilities: {},
130
+ periodScope: "report",
131
+ });
132
+ });
117
133
  it("searches and sorts a paging route's rows only where the route does", () => {
118
134
  const paged = sourceOf({ capabilities: { paginate: true } });
119
135
  (0, chai_1.expect)(paged.searchable).to.equal(false);
@@ -1 +1 @@
1
- {"version":3,"file":"table-view-source-reorder.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/interfaces/dms-base/table-view-source-reorder.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"table-view-source-reorder.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/interfaces/dms-base/table-view-source-reorder.test.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,14 @@ export interface UsePeriodOptions {
24
24
  defaultComparison?: PeriodComparison;
25
25
  presets?: PeriodPreset[];
26
26
  comparisons?: PeriodComparison[];
27
+ /**
28
+ * While it answers true, a relative preset stops sliding: the period keeps
29
+ * the range it had, so nothing reading it refetches on the clock. The
30
+ * minutes it skipped are caught up once, when it answers false again. A
31
+ * period the user changes still applies at once. The selector holds it
32
+ * while its live page is paused.
33
+ */
34
+ holdClock?: () => boolean;
27
35
  }
28
36
 
29
37
  export interface UsePeriodReturn {
@@ -46,10 +54,16 @@ const DEFAULT_PRESET: PeriodPreset = "this-month";
46
54
  const DEFAULT_COMPARISON: PeriodComparison = "none";
47
55
  const RELATIVE_REFRESH_INTERVAL_MS = 60000;
48
56
 
49
- function useRelativePresetClock(preset: Ref<PeriodPreset>): Ref<number> {
57
+ const NEVER_HELD = () => false;
58
+
59
+ function useRelativePresetClock(
60
+ preset: Ref<PeriodPreset>,
61
+ isHeld: () => boolean = NEVER_HELD,
62
+ ): Ref<number> {
50
63
  const tick = ref(0);
51
64
  if (typeof window === "undefined") return tick;
52
65
  let timer: ReturnType<typeof setInterval> | null = null;
66
+ let hasSkippedTick = false;
53
67
  const stop = () => {
54
68
  if (timer !== null) clearInterval(timer);
55
69
  timer = null;
@@ -60,11 +74,17 @@ function useRelativePresetClock(preset: Ref<PeriodPreset>): Ref<number> {
60
74
  stop();
61
75
  if (!isRelative) return;
62
76
  timer = setInterval(() => {
63
- tick.value += 1;
77
+ if (isHeld()) hasSkippedTick = true;
78
+ else tick.value += 1;
64
79
  }, RELATIVE_REFRESH_INTERVAL_MS);
65
80
  },
66
81
  { immediate: true },
67
82
  );
83
+ watch(isHeld, (held) => {
84
+ if (held || !hasSkippedTick) return;
85
+ hasSkippedTick = false;
86
+ tick.value += 1;
87
+ });
68
88
  if (getCurrentScope()) onScopeDispose(stop);
69
89
  return tick;
70
90
  }
@@ -156,7 +176,7 @@ export function usePeriod(options: UsePeriodOptions = {}): UsePeriodReturn {
156
176
  const comparisons = computed<PeriodComparison[]>(
157
177
  () => options.comparisons ?? DEFAULT_COMPARISONS,
158
178
  );
159
- const relativeClock = useRelativePresetClock(refs.preset);
179
+ const relativeClock = useRelativePresetClock(refs.preset, options.holdClock);
160
180
  const state = computed<PeriodState>(() => {
161
181
  void relativeClock.value;
162
182
  return buildState(refs);
@@ -432,7 +432,8 @@
432
432
  "components": {
433
433
  "tableview": "📄 TableView",
434
434
  "tab": "🗂️ Tab",
435
- "global": "🌐 Global"
435
+ "global": "🌐 Global",
436
+ "livetoggle": "📡 Live toggle"
436
437
  },
437
438
  "chart": {
438
439
  "no_data": "No data",
@@ -432,7 +432,8 @@
432
432
  "components": {
433
433
  "tableview": "📄 TableView",
434
434
  "tab": "🗂️ Onglet",
435
- "global": "🌐 Global"
435
+ "global": "🌐 Global",
436
+ "livetoggle": "📡 Direct / Pause"
436
437
  },
437
438
  "chart": {
438
439
  "no_data": "Aucune donnée",
@@ -0,0 +1,134 @@
1
+ <script setup lang="ts">
2
+ /**
3
+ * The body of the side panel a `sidePanel` action target opens on a row (see
4
+ * `rowSidePanel.ts`). The DMS draws the header: the title, the row's position
5
+ * among the rows the table shows, previous and next (J and K too) and close
6
+ * (Escape too). Below it, the module's component receives the row as a
7
+ * drawer's component does, mounted anew on each row. The position follows the
8
+ * table: a refresh that moves or drops the row updates it.
9
+ */
10
+ import { computed, onBeforeUnmount, onMounted } from "vue";
11
+ import {
12
+ listenRowPanelClose,
13
+ listenRowSteps,
14
+ rowNavigation,
15
+ } from "#dms-ui/app/build/composables/actions/rowNavigation";
16
+ import {
17
+ closeRowSidePanel,
18
+ useRowSidePanelContent,
19
+ } from "../../composables/layout/rowSidePanel";
20
+
21
+ const DEFAULT_POSITION_KEY = "side_panel.position";
22
+
23
+ const { t } = useI18n();
24
+ const { processI18n } = useTranslation();
25
+ const content = useRowSidePanelContent();
26
+
27
+ const navigation = computed(() => {
28
+ const current = content.value;
29
+ if (!current?.row || !current.source) return undefined;
30
+ return rowNavigation(current.source, current.row, current.showRow);
31
+ });
32
+
33
+ const position = computed(() => {
34
+ if (!navigation.value) return undefined;
35
+ const params = {
36
+ index: navigation.value.index + 1,
37
+ total: navigation.value.total,
38
+ };
39
+ const label = content.value?.positionLabel;
40
+ return label ? processI18n(label, params) : t(DEFAULT_POSITION_KEY, params);
41
+ });
42
+
43
+ const componentProps = computed(() => ({
44
+ ...content.value?.componentOptions,
45
+ rowData: content.value?.row,
46
+ navigation: navigation.value,
47
+ }));
48
+
49
+ const close = () => closeRowSidePanel();
50
+
51
+ let stopKeys: Array<() => void> = [];
52
+
53
+ onMounted(() => {
54
+ stopKeys = [
55
+ listenRowSteps(() => navigation.value),
56
+ listenRowPanelClose(close),
57
+ ];
58
+ });
59
+
60
+ // Another side panel took its place, or the user signed out: the row is no
61
+ // longer open.
62
+ onBeforeUnmount(() => {
63
+ stopKeys.forEach((stop) => stop());
64
+ close();
65
+ });
66
+ </script>
67
+
68
+ <template>
69
+ <div v-if="content" data-dms-row-side-panel class="flex min-h-0 flex-col">
70
+ <header
71
+ class="border-default flex shrink-0 items-start gap-2 border-b py-3 ps-4 pe-3"
72
+ >
73
+ <div class="min-w-0 flex-1 self-center">
74
+ <h2
75
+ class="text-highlighted truncate text-[15px] leading-[1.3] font-[650] tracking-[-0.015em]"
76
+ >
77
+ {{ content.title }}
78
+ </h2>
79
+ <p
80
+ v-if="position"
81
+ data-dms-row-side-panel-position
82
+ class="text-muted mt-0.5 text-[12.5px] tabular-nums"
83
+ >
84
+ {{ position }}
85
+ </p>
86
+ </div>
87
+ <div class="flex shrink-0 items-center gap-0.5">
88
+ <template v-if="navigation">
89
+ <UButton
90
+ data-dms-row-side-panel-prev
91
+ icon="i-ph-caret-up"
92
+ color="neutral"
93
+ variant="ghost"
94
+ size="sm"
95
+ square
96
+ :aria-label="t('side_panel.previous')"
97
+ :disabled="!navigation.hasPrev"
98
+ @click="navigation.prev()"
99
+ />
100
+ <UButton
101
+ data-dms-row-side-panel-next
102
+ icon="i-ph-caret-down"
103
+ color="neutral"
104
+ variant="ghost"
105
+ size="sm"
106
+ square
107
+ :aria-label="t('side_panel.next')"
108
+ :disabled="!navigation.hasNext"
109
+ @click="navigation.next()"
110
+ />
111
+ </template>
112
+ <UButton
113
+ data-dms-row-side-panel-close
114
+ icon="i-ph-x"
115
+ color="neutral"
116
+ variant="ghost"
117
+ size="sm"
118
+ square
119
+ :aria-label="t('side_panel.close')"
120
+ @click="close"
121
+ />
122
+ </div>
123
+ </header>
124
+ <div class="min-h-0 flex-1 overflow-y-auto p-4">
125
+ <Suspense>
126
+ <component
127
+ :is="content.component"
128
+ :key="content.rowKey"
129
+ v-bind="componentProps"
130
+ />
131
+ </Suspense>
132
+ </div>
133
+ </div>
134
+ </template>
@@ -0,0 +1,129 @@
1
+ import { type Component, type ShallowRef, shallowRef } from "vue";
2
+ import type { RowNavigationSource } from "#dms-ui/app/build/composables/actions/rowNavigation";
3
+ import {
4
+ registerSidePanel,
5
+ unregisterSidePanel,
6
+ } from "../../../composables/useAppSidePanels";
7
+ import {
8
+ isSidePanelOpen,
9
+ setOpenSidePanel,
10
+ useSidePanelPreferences,
11
+ } from "./sidePanelState";
12
+
13
+ /**
14
+ * Id of the side panel a `sidePanel` action target opens. It is registered
15
+ * only while a row is open, so a side panel cookie still naming it after a
16
+ * reload shows nothing.
17
+ *
18
+ * @internal
19
+ */
20
+ export const ROW_SIDE_PANEL_ID = "dms:row-side-panel";
21
+ /** Registered name of `RowSidePanel.vue` (the layer's `Dms` prefix applied). */
22
+ const ROW_SIDE_PANEL_COMPONENT = "DmsRowSidePanel";
23
+
24
+ /**
25
+ * What the row side panel shows: the header the DMS draws, the module's
26
+ * component and the row it receives.
27
+ *
28
+ * @internal
29
+ */
30
+ export interface RowSidePanelContent {
31
+ /** One run of an action: rows shown by stepping share it. */
32
+ session: symbol;
33
+ /** The table (or button bar) that opened the panel; see {@link rowSidePanelOwnerKey}. */
34
+ ownerKey: string;
35
+ title: string;
36
+ /** i18n key (`$`-prefixed) of the position, receiving `{ index, total }`. */
37
+ positionLabel?: string;
38
+ component: Component;
39
+ /** Props of the component besides `rowData` and `navigation`. */
40
+ componentOptions: Record<string, unknown>;
41
+ row?: Data;
42
+ /** Id of `row`: the key the component is mounted under, the row the table highlights. */
43
+ rowKey?: string;
44
+ /** The rows shown, which the panel steps through (J / K). */
45
+ source?: RowNavigationSource;
46
+ /** Shows another row of the same run in place. */
47
+ showRow: (row: Data) => void;
48
+ /** Runs once the panel closes, whatever closed it. */
49
+ onClose?: () => void;
50
+ }
51
+
52
+ // Written on the client only (a click, a table mounting on a deep link), never
53
+ // while the server renders a request, so a module-level ref is safe here. It
54
+ // holds a component and callbacks, which no shared state may serialize.
55
+ const content = shallowRef<RowSidePanelContent | null>(null);
56
+
57
+ /**
58
+ * The key a table's open row is kept under, which the table compares to
59
+ * highlight it.
60
+ *
61
+ * @internal
62
+ */
63
+ export function rowSidePanelOwnerKey(
64
+ pageId: string,
65
+ componentId: string,
66
+ ): string {
67
+ return `${pageId}-${componentId}`;
68
+ }
69
+
70
+ /** @internal */
71
+ export function useRowSidePanelContent(): Readonly<
72
+ ShallowRef<RowSidePanelContent | null>
73
+ > {
74
+ return content;
75
+ }
76
+
77
+ /**
78
+ * Shows `next` in the row side panel, opening it (and closing any other side
79
+ * panel) when it is closed. Another run's content gives way: its `onClose`
80
+ * runs first.
81
+ *
82
+ * @internal
83
+ */
84
+ export function openRowSidePanel(next: RowSidePanelContent): void {
85
+ const current = content.value;
86
+ if (current && current.session !== next.session) current.onClose?.();
87
+ content.value = next;
88
+ if (current?.title !== next.title) {
89
+ registerSidePanel({
90
+ id: ROW_SIDE_PANEL_ID,
91
+ component: ROW_SIDE_PANEL_COMPONENT,
92
+ ariaLabel: next.title,
93
+ });
94
+ }
95
+ setOpenSidePanel(useSidePanelPreferences(), ROW_SIDE_PANEL_ID);
96
+ }
97
+
98
+ function closeContent(current: RowSidePanelContent): void {
99
+ content.value = null;
100
+ unregisterSidePanel(ROW_SIDE_PANEL_ID);
101
+ const preferences = useSidePanelPreferences();
102
+ if (isSidePanelOpen(preferences, ROW_SIDE_PANEL_ID)) {
103
+ setOpenSidePanel(preferences, null);
104
+ }
105
+ current.onClose?.();
106
+ }
107
+
108
+ /**
109
+ * Closes the row side panel; with `session`, only while it still shows that
110
+ * run.
111
+ *
112
+ * @internal
113
+ */
114
+ export function closeRowSidePanel(session?: symbol): void {
115
+ const current = content.value;
116
+ if (!current || (session && current.session !== session)) return;
117
+ closeContent(current);
118
+ }
119
+
120
+ /**
121
+ * Closes the row side panel when `ownerKey` opened it: the table it belongs
122
+ * to is gone.
123
+ *
124
+ * @internal
125
+ */
126
+ export function closeRowSidePanelOf(ownerKey: string): void {
127
+ const current = content.value;
128
+ if (current?.ownerKey === ownerKey) closeContent(current);
129
+ }
@@ -2,6 +2,7 @@
2
2
  import { withoutTrailingSlash } from "ufo";
3
3
  import { holdPageHeaderActions } from "../composables/layout/usePageHeaderActions";
4
4
  import { useDevReloading } from "../build/composables/dev-reload/useDevReloadHolder";
5
+ import { usePageLiveHost } from "#dms-ui/app/build/composables/live/usePageLiveHost";
5
6
 
6
7
  defineOptions({ inheritAttrs: false });
7
8
 
@@ -216,6 +217,11 @@ const { permissions: userPermissions } = usePermissions();
216
217
  const realtimePageId = computed(() => pagelayoutMetadata.value?.fullId ?? "");
217
218
  const realtime = usePageRealtime(realtimePageId);
218
219
  providePageRealtime(realtime);
220
+ // Before the blocks set up: their refetches go through the page's live gate.
221
+ usePageLiveHost(() => ({
222
+ pageId: pagelayoutMetadata.value?.fullId,
223
+ live: pagelayoutMetadata.value?.live,
224
+ }));
219
225
 
220
226
  function buildPageSetupContext(
221
227
  pageInfo: PageInfo,
@@ -1,5 +1,6 @@
1
1
  import type { BlockText } from "#dms-core/app/types/composed-text";
2
2
  import type { BlockAction } from "#dms-ui/app/build/components/blocks/BlockActions.vue";
3
+ import type { PageLiveOptions } from "#dms-ui/app/types/live";
3
4
 
4
5
  export type MenuItemType = "label" | "link";
5
6
  // MenuItemVariant / MenuItemStatus / MenuItemQuery live in dms-core, the layer
@@ -28,6 +29,8 @@ export interface MenuOptions {
28
29
  status?: MenuItemStatus;
29
30
  badge?: string;
30
31
  bypassTenantAccessGate?: boolean;
32
+ /** The page's Direct / Pause valve (see `PageLiveOptions`). */
33
+ live?: PageLiveOptions;
31
34
  }
32
35
 
33
36
  export interface CategoryInfo extends Omit<MenuOptions, "category"> {
@@ -895,6 +895,10 @@
895
895
  "close": "Don't show again"
896
896
  },
897
897
  "side_panel": {
898
- "resize": "Resize the panel"
898
+ "resize": "Resize the panel",
899
+ "position": "{index} of {total}",
900
+ "previous": "Previous",
901
+ "next": "Next",
902
+ "close": "Close"
899
903
  }
900
904
  }
@@ -899,6 +899,10 @@
899
899
  "close": "Ne plus afficher"
900
900
  },
901
901
  "side_panel": {
902
- "resize": "Redimensionner le panneau"
902
+ "resize": "Redimensionner le panneau",
903
+ "position": "{index} sur {total}",
904
+ "previous": "Précédent",
905
+ "next": "Suivant",
906
+ "close": "Fermer"
903
907
  }
904
908
  }