@overvis/hmi-workspace-ui 0.1.2 → 0.1.3

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 (88) hide show
  1. package/README.md +6 -4
  2. package/dist/{alarm-list-DKFio0hg.js → alarm-list-TDg7nwkn.js} +4 -4
  3. package/dist/{alarm-rule-dialog-mb4_nHRW.js → alarm-rule-dialog-DwbRtPZD.js} +10 -10
  4. package/dist/{alarm-rule-lists-CfZXTWkK.js → alarm-rule-lists-Ax7PzbQy.js} +4 -4
  5. package/dist/{alarm-rules-page-DBLSkrrG.js → alarm-rules-page-DisATKLV.js} +11 -11
  6. package/dist/{alert-dialog-D_iDv2lQ.js → alert-dialog-CskdoiGZ.js} +1 -1
  7. package/dist/{base-revision-DLF9EnGV.js → base-revision-C-tNhqGq.js} +3 -3
  8. package/dist/{breadcrumbs-D5R6Fz74.js → breadcrumbs-B5O9let7.js} +3 -3
  9. package/dist/{catalog-list-BkWosvh1.js → catalog-list-3yaB4bJD.js} +1 -1
  10. package/dist/{code-editor-DCM0KdMJ.js → code-editor-B6myrPQm.js} +2 -2
  11. package/dist/{dashboards-page-DLc11Vzu.js → dashboards-page-CoKevu-T.js} +9 -9
  12. package/dist/{de-Z2er-E5v.js → de-CPxvTPak.js} +8 -0
  13. package/dist/{diagnostic-text-CYZFPiND.js → diagnostic-text-BS4rdZcE.js} +2 -2
  14. package/dist/{dialogs-DEOg9lxy.js → dialogs-BUyPGimM.js} +6 -6
  15. package/dist/{dialogs-BX023zml.js → dialogs-CF7Baagf.js} +512 -510
  16. package/dist/{display-VYGzneE0.js → display-DmldtHdd.js} +2 -2
  17. package/dist/{editor-language-CGENZxbI.js → editor-language-8UJkvBgX.js} +1 -1
  18. package/dist/{editor-page-CaN52OQh.js → editor-page-_6TxO_iT.js} +14 -14
  19. package/dist/{en-CKPPL6bQ.js → en-DoFtc9Sn.js} +8 -0
  20. package/dist/{entity-controls-DJT47yeV.js → entity-controls-rdv-ttvP.js} +3 -3
  21. package/dist/{errors-BAWoH_5w.js → errors-BFeJfnyz.js} +2 -2
  22. package/dist/{footer-CbPMP8aq.js → footer-DZUQHVnt.js} +4 -4
  23. package/dist/host.js +28 -27
  24. package/dist/{i18n-ChjEbYEg.js → i18n-D54xfDUE.js} +5 -5
  25. package/dist/i18n.js +1 -1
  26. package/dist/index.js +45 -34
  27. package/dist/{list-page-Fa29SkaJ.js → list-page-Cz5bdD8r.js} +11 -11
  28. package/dist/{location-map-renderer-DvXIYc1Z.js → location-map-renderer-Hb5N0AYH.js} +1 -1
  29. package/dist/{notice-card-V_0K0lO0.js → notice-card-BMNjc7qi.js} +3 -3
  30. package/dist/{page-BorlLnMX.js → page-BKnwJyv5.js} +8 -8
  31. package/dist/{page-DxF7FOve.js → page-CBWLmbIE.js} +11 -11
  32. package/dist/{page-B5te_1Lc.js → page-UoQRnsm3.js} +11 -11
  33. package/dist/{panel-DuZD-cBP.js → panel-Cr3OXiRs.js} +3 -3
  34. package/dist/{pl-DVABrn5G.js → pl-DEPfFtMO.js} +8 -0
  35. package/dist/{presence-code-DsabLTZs.js → presence-code-DIKs9fBe.js} +2 -2
  36. package/dist/{query-gate-BbIo1Xrj.js → query-gate-2sU8OvEb.js} +3 -3
  37. package/dist/{quick-report-BcZsfkCZ.js → quick-report-ZvrI5Jkh.js} +3130 -3102
  38. package/dist/{retention-note-CmMeHV_u.js → retention-note-BrkxE2Wo.js} +9 -6
  39. package/dist/{retention-C7EZsq8u.js → retention-wDvnFMbN.js} +2 -2
  40. package/dist/{ru-CBRLC_xM.js → ru-Ct2zNOs8.js} +8 -0
  41. package/dist/{run-text-CDdfbKbg.js → run-text-Bmkf_u0N.js} +2 -2
  42. package/dist/{search-C6xQ_Hvo.js → search-ADhiRT_S.js} +3 -3
  43. package/dist/{sections-D_SBfVzV.js → sections-BDtBUhxn.js} +1 -1
  44. package/dist/{select-nNLG-AMz.js → select-Cpeslz01.js} +2 -2
  45. package/dist/{spinner-B-KLtBjp.js → spinner-LbVGWBQq.js} +2 -2
  46. package/dist/src/i18n/catalogs/de/api-error.d.ts +3 -0
  47. package/dist/src/i18n/catalogs/de/audit.d.ts +1 -0
  48. package/dist/src/i18n/catalogs/de/edge-program.d.ts +1 -0
  49. package/dist/src/i18n/catalogs/de/parameter.d.ts +1 -0
  50. package/dist/src/i18n/catalogs/de/starter.d.ts +2 -0
  51. package/dist/src/i18n/catalogs/de.d.ts +8 -0
  52. package/dist/src/i18n/catalogs/en/api-error.d.ts +3 -0
  53. package/dist/src/i18n/catalogs/en/audit.d.ts +1 -0
  54. package/dist/src/i18n/catalogs/en/edge-program.d.ts +1 -0
  55. package/dist/src/i18n/catalogs/en/parameter.d.ts +1 -0
  56. package/dist/src/i18n/catalogs/en/starter.d.ts +2 -0
  57. package/dist/src/i18n/catalogs/en.d.ts +8 -0
  58. package/dist/src/i18n/catalogs/pl/api-error.d.ts +3 -0
  59. package/dist/src/i18n/catalogs/pl/audit.d.ts +1 -0
  60. package/dist/src/i18n/catalogs/pl/edge-program.d.ts +1 -0
  61. package/dist/src/i18n/catalogs/pl/parameter.d.ts +1 -0
  62. package/dist/src/i18n/catalogs/pl/starter.d.ts +2 -0
  63. package/dist/src/i18n/catalogs/pl.d.ts +8 -0
  64. package/dist/src/i18n/catalogs/ru/api-error.d.ts +3 -0
  65. package/dist/src/i18n/catalogs/ru/audit.d.ts +1 -0
  66. package/dist/src/i18n/catalogs/ru/edge-program.d.ts +1 -0
  67. package/dist/src/i18n/catalogs/ru/parameter.d.ts +1 -0
  68. package/dist/src/i18n/catalogs/ru/starter.d.ts +2 -0
  69. package/dist/src/i18n/catalogs/ru.d.ts +8 -0
  70. package/dist/src/i18n/catalogs/uk/api-error.d.ts +3 -0
  71. package/dist/src/i18n/catalogs/uk/audit.d.ts +1 -0
  72. package/dist/src/i18n/catalogs/uk/edge-program.d.ts +1 -0
  73. package/dist/src/i18n/catalogs/uk/parameter.d.ts +1 -0
  74. package/dist/src/i18n/catalogs/uk/starter.d.ts +2 -0
  75. package/dist/src/i18n/catalogs/uk.d.ts +8 -0
  76. package/dist/src/version.d.ts +1 -1
  77. package/dist/src/workspace/device-presets/layout.d.ts +2 -0
  78. package/dist/src/workspace/graphics/inspector/item.d.ts +6 -6
  79. package/dist/src/workspace/local-setup-link.d.ts +3 -0
  80. package/dist/src/workspace/parameters/errors.d.ts +5 -0
  81. package/dist/src/workspace/setup/starters/starter-form.d.ts +24 -6
  82. package/dist/starter-fields-BHNS6IQe.js +678 -0
  83. package/dist/styles.css +1 -1
  84. package/dist/ui.js +6 -6
  85. package/dist/{uk-17pbVYZa.js → uk-Dbm1i2uh.js} +8 -0
  86. package/dist/{wireguard-docs-Clb-7xRY.js → wireguard-docs-DIBtCviv.js} +3 -3
  87. package/package.json +2 -2
  88. package/dist/starter-fields-7S3LmtGa.js +0 -583
@@ -41,6 +41,7 @@ declare const _default: {
41
41
  readonly audit_target_type_workspace: "Робочий простір";
42
42
  readonly audit_target_type_workspace_permission: "Доступ до робочого простору";
43
43
  readonly audit_target_type_workspace_invitation: "Запрошення";
44
+ readonly audit_target_type_workspace_public_link: "Публічна адреса";
44
45
  readonly audit_target_type_workspace_file: "Файл робочого простору";
45
46
  readonly audit_target_type_dashboard: "Панель";
46
47
  readonly audit_target_type_endpoint: "Підключення";
@@ -201,6 +201,7 @@ declare const _default: {
201
201
  readonly taskfile_warning_filename_invalid: "{filename} не є ім’ям файлу 8.3, тому пристрій його пропускає.";
202
202
  readonly taskfile_warning_implicit_indirect_index: "Визначте індексну змінну до її використання; з невизначеною пристрій може поводитися непередбачувано.";
203
203
  readonly taskfile_warning_memory_log_target: "Журналювання параметра в пам’яті пристрою завершується помилкою й зупиняє все журналювання програм. Натомість відобразіть його на регістр Modbus пристрою.";
204
+ readonly taskfile_warning_missing_return: "{name} викликається через CALL або TRYCALL, але її дії можуть без RETURN перейти в іншу функцію або за кінець файлу. RETURN одразу після IF виконується, лише коли умова істинна.";
204
205
  readonly taskfile_warning_nonstandard_holding_name: "Пристрій приймає тут це ім’я, але воно не відповідає звичайним правилам іменування.";
205
206
  readonly taskfile_warning_string_output_limit: "Цей рядок може стати довшим за {limit} байтів, і пристрій обріже решту.";
206
207
  readonly taskfile_warning_unknown: "Можлива проблема: {code}.";
@@ -220,6 +220,7 @@ declare const _default: {
220
220
  readonly parameter_field_addresses_placeholder: "0, 1, 2";
221
221
  readonly parameter_field_addresses_invalid: "Введіть 1–64 адреси (0–65535), через кому.";
222
222
  readonly parameter_field_addresses_too_short: "Адреси дають {available} Б, а цьому типу значення потрібно {required} Б. Кожен регістр дає 2 байти, кожен дискретний вихід або вхід — 1. Додайте адреси або змініть тип значення.";
223
+ readonly parameter_field_write_limit_exceeds_storage: "Ця межа запису не вміщується у сховище типу значення. Змініть межу або змініть тип значення й потім запишіть значення знову.";
223
224
  readonly parameter_field_write_function: "Функція запису";
224
225
  readonly parameter_field_source_invalid: "Конфігурація джерела некоректна.";
225
226
  readonly parameter_field_value_type_invalid: "Конфігурація типу значення некоректна.";
@@ -8,6 +8,8 @@ declare const _default: {
8
8
  readonly starter_add_row: "Додати";
9
9
  readonly starter_remove_row: "Видалити: {row}";
10
10
  readonly starter_recipients_none: "Нікого";
11
+ readonly starter_unit: "Одиниця виміру";
12
+ readonly starter_unit_ms: "мс";
11
13
  readonly starter_unit_s: "с";
12
14
  readonly starter_unit_min: "хв";
13
15
  readonly starter_unit_h: "год";
@@ -102,6 +102,7 @@ declare const _default: {
102
102
  readonly error_device_api_device_error_status: "Пристрій відповів помилкою {status}.";
103
103
  readonly error_input_invalid: "Надіслані дані містять помилки.";
104
104
  readonly error_workspace_no_access: "У вас немає доступу до цього робочого простору.";
105
+ readonly error_workspace_public_link_not_found: "Ця публічна адреса недоступна.";
105
106
  readonly error_workspace_suspended: "Цей робочий простір призупинено. Відкрийте його, щоб дізнатися причину.";
106
107
  readonly error_workspace_not_owner: "Лише власник робочого простору може це зробити.";
107
108
  readonly error_workspace_not_admin: "Лише адміністратор або власник робочого простору може це зробити.";
@@ -329,6 +330,8 @@ declare const _default: {
329
330
  readonly error_authentication_required: "Увійдіть, щоб продовжити.";
330
331
  readonly error_admission_required: "Ваш обліковий запис ще не має доступу. Скористайтеся запрошенням або кодом доступу, щоб продовжити.";
331
332
  readonly error_onboarding_required: "Заповніть свій профіль у вебзастосунку, щоб продовжити.";
333
+ readonly error_guest_not_allowed: "Увійдіть, щоб зробити це. Гості можуть лише переглядати цей робочий простір.";
334
+ readonly error_guest_rate_limited: "Забагато запитів із вашої мережі. Зачекайте хвилину або увійдіть.";
332
335
  readonly error_audit_invalid_cursor: "Ця сторінка історії вже недійсна. Оновіть історію.";
333
336
  readonly error_audit_archived_workspace_required: "Виберіть видалений робочий простір, щоб переглянути його історію.";
334
337
  readonly error_checkpoint_not_found: "Цієї контрольної точки більше немає. Оновіть історію.";
@@ -1240,6 +1243,7 @@ declare const _default: {
1240
1243
  readonly parameter_field_addresses_placeholder: "0, 1, 2";
1241
1244
  readonly parameter_field_addresses_invalid: "Введіть 1–64 адреси (0–65535), через кому.";
1242
1245
  readonly parameter_field_addresses_too_short: "Адреси дають {available} Б, а цьому типу значення потрібно {required} Б. Кожен регістр дає 2 байти, кожен дискретний вихід або вхід — 1. Додайте адреси або змініть тип значення.";
1246
+ readonly parameter_field_write_limit_exceeds_storage: "Ця межа запису не вміщується у сховище типу значення. Змініть межу або змініть тип значення й потім запишіть значення знову.";
1243
1247
  readonly parameter_field_write_function: "Функція запису";
1244
1248
  readonly parameter_field_source_invalid: "Конфігурація джерела некоректна.";
1245
1249
  readonly parameter_field_value_type_invalid: "Конфігурація типу значення некоректна.";
@@ -1431,6 +1435,7 @@ declare const _default: {
1431
1435
  readonly audit_target_type_workspace: "Робочий простір";
1432
1436
  readonly audit_target_type_workspace_permission: "Доступ до робочого простору";
1433
1437
  readonly audit_target_type_workspace_invitation: "Запрошення";
1438
+ readonly audit_target_type_workspace_public_link: "Публічна адреса";
1434
1439
  readonly audit_target_type_workspace_file: "Файл робочого простору";
1435
1440
  readonly audit_target_type_dashboard: "Панель";
1436
1441
  readonly audit_target_type_endpoint: "Підключення";
@@ -2582,6 +2587,8 @@ declare const _default: {
2582
2587
  readonly starter_add_row: "Додати";
2583
2588
  readonly starter_remove_row: "Видалити: {row}";
2584
2589
  readonly starter_recipients_none: "Нікого";
2590
+ readonly starter_unit: "Одиниця виміру";
2591
+ readonly starter_unit_ms: "мс";
2585
2592
  readonly starter_unit_s: "с";
2586
2593
  readonly starter_unit_min: "хв";
2587
2594
  readonly starter_unit_h: "год";
@@ -3253,6 +3260,7 @@ declare const _default: {
3253
3260
  readonly taskfile_warning_filename_invalid: "{filename} не є ім’ям файлу 8.3, тому пристрій його пропускає.";
3254
3261
  readonly taskfile_warning_implicit_indirect_index: "Визначте індексну змінну до її використання; з невизначеною пристрій може поводитися непередбачувано.";
3255
3262
  readonly taskfile_warning_memory_log_target: "Журналювання параметра в пам’яті пристрою завершується помилкою й зупиняє все журналювання програм. Натомість відобразіть його на регістр Modbus пристрою.";
3263
+ readonly taskfile_warning_missing_return: "{name} викликається через CALL або TRYCALL, але її дії можуть без RETURN перейти в іншу функцію або за кінець файлу. RETURN одразу після IF виконується, лише коли умова істинна.";
3256
3264
  readonly taskfile_warning_nonstandard_holding_name: "Пристрій приймає тут це ім’я, але воно не відповідає звичайним правилам іменування.";
3257
3265
  readonly taskfile_warning_string_output_limit: "Цей рядок може стати довшим за {limit} байтів, і пристрій обріже решту.";
3258
3266
  readonly taskfile_warning_unknown: "Можлива проблема: {code}.";
@@ -1,2 +1,2 @@
1
1
  /** This package's version, sent to the API as `workspace-ui/<version>` by local workspace hosts. */
2
- export declare const WORKSPACE_UI_VERSION = "0.1.2";
2
+ export declare const WORKSPACE_UI_VERSION = "0.1.3";
@@ -17,6 +17,8 @@ export interface DevicePresetPageContext<Page extends string> {
17
17
  connected: boolean;
18
18
  /** Reads the page's values from the device again. */
19
19
  readAgain: () => void;
20
+ /** The operator has not paused the dashboard; a page's own polling should stop while false. */
21
+ live: boolean;
20
22
  }
21
23
  /**
22
24
  * A device dashboard: the device header with live controls, tabs for its pages, the banner of a
@@ -678,18 +678,18 @@ export declare function changeGraphicsItem(document: GraphicsDocument, next: Gra
678
678
  parentId?: string | null;
679
679
  locked?: boolean;
680
680
  from: {
681
- elementId: string;
682
- port: string;
683
- } | {
684
681
  x: number;
685
682
  y: number;
686
- };
687
- to: {
683
+ } | {
688
684
  elementId: string;
689
685
  port: string;
690
- } | {
686
+ };
687
+ to: {
691
688
  x: number;
692
689
  y: number;
690
+ } | {
691
+ elementId: string;
692
+ port: string;
693
693
  };
694
694
  route: "curve" | "orthogonal" | "straight";
695
695
  bends: {
@@ -12,5 +12,8 @@ export declare const loadLocalDashboardSetup: LoadLocalDashboardSetup;
12
12
  * Shows a dashboard's unpushed local configuration from `setup.db` in place of the saved one, for
13
13
  * `dashboard.get` and `graphics.get`. A local drawing reports the revision the API will give it
14
14
  * after a push, so saving over unpushed local changes is refused as a conflict.
15
+ * A dashboard created locally and never pushed has no API row: it resolves from local setup once
16
+ * `workspace.get` confirms access to its workspace, and its Maps queries use the workspace scope.
17
+ * Every other dashboard still needs its API read.
15
18
  */
16
19
  export declare function localSetupLink(load?: LoadLocalDashboardSetup): TRPCLink<PublicAppRouter>;
@@ -13,3 +13,8 @@ export declare const parameterCodeFields: {
13
13
  * value type needs (`modbus_source_too_short`), or null for any other failure.
14
14
  */
15
15
  export declare function modbusSourceTooShortError(error: unknown): (() => string) | null;
16
+ /**
17
+ * Value type field text for a save rejected because a write limit does not fit the storage
18
+ * (`const_write_limit_exceeds_storage`), or null for any other failure.
19
+ */
20
+ export declare function constWriteLimitError(error: unknown): (() => string) | null;
@@ -1,5 +1,5 @@
1
1
  import type { AutomationRecipients } from "@overvis/hmi-shared/automation";
2
- import { type StarterPlaceholder, type StarterProblem, type StarterScalarPlaceholder, type StarterValues } from "@overvis/hmi-shared/starter";
2
+ import { type StarterDurationUnit, type StarterPlaceholder, type StarterProblem, type StarterScalarPlaceholder, type StarterValues } from "@overvis/hmi-shared/starter";
3
3
  export type StarterRole = Extract<AutomationRecipients, {
4
4
  kind: "roles";
5
5
  }>["roles"][number];
@@ -9,11 +9,17 @@ export interface StarterRecipientsValue {
9
9
  roles: StarterRole[];
10
10
  memberIds: string[];
11
11
  }
12
+ /** A duration as typed in, with the unit it is typed in. */
13
+ export interface StarterDurationValue {
14
+ kind: "duration";
15
+ amount: string;
16
+ unit: StarterDurationUnit;
17
+ }
12
18
  /**
13
19
  * What the form holds for one scalar placeholder: text for typed-in and chosen values (empty
14
- * when nothing is given), a switch, weekdays, or recipients.
20
+ * when nothing is given), a duration, a switch, weekdays, or recipients.
15
21
  */
16
- export type StarterFieldValue = string | boolean | number[] | StarterRecipientsValue;
22
+ export type StarterFieldValue = string | boolean | number[] | StarterDurationValue | StarterRecipientsValue;
17
23
  export interface StarterFormRow {
18
24
  /** Stable across edits, for React keys. */
19
25
  key: string;
@@ -21,15 +27,26 @@ export interface StarterFormRow {
21
27
  }
22
28
  export type StarterFormValue = StarterFieldValue | StarterFormRow[];
23
29
  export type StarterFormValues = Record<string, StarterFormValue>;
24
- /** A duration in the placeholder's unit, as the form shows it. */
25
- export declare function durationInUnit(placeholder: StarterScalarPlaceholder & {
30
+ type DurationPlaceholder = StarterScalarPlaceholder & {
26
31
  kind: "duration";
27
- }, ms: number): string;
32
+ };
33
+ /** The units a duration field offers, largest first. */
34
+ export declare function durationUnits(placeholder: DurationPlaceholder): StarterDurationUnit[];
35
+ /**
36
+ * A duration as the form shows it: in the placeholder's own unit when it offers no other, else in
37
+ * the largest offered unit that holds it whole.
38
+ */
39
+ export declare function durationInUnits(placeholder: DurationPlaceholder, ms: number): {
40
+ amount: string;
41
+ unit: StarterDurationUnit;
42
+ };
28
43
  /** The form value of a scalar placeholder before anything is filled in: its default, or empty. */
29
44
  export declare function initialStarterField(placeholder: StarterScalarPlaceholder): StarterFieldValue;
30
45
  export declare function newStarterRow(fields: readonly StarterScalarPlaceholder[], key: string): StarterFormRow;
31
46
  /** Form values of a starter before anything is filled in; lists start with their fewest rows. */
32
47
  export declare function newStarterFormValues(placeholders: readonly StarterPlaceholder[]): StarterFormValues;
48
+ /** Whole milliseconds of a typed-in duration; null while it is not a number. */
49
+ export declare function durationMs(value: StarterDurationValue): number | null;
33
50
  export type StarterFormConversion = {
34
51
  ok: true;
35
52
  values: StarterValues;
@@ -48,3 +65,4 @@ export declare function asField(value: StarterFormValue | undefined): StarterFie
48
65
  export declare function asRows(value: StarterFormValue | undefined): StarterFormRow[];
49
66
  /** Problems by the path of the field they belong to; a list's own problems sit on the list. */
50
67
  export declare function starterProblemsByPath(problems: readonly StarterProblem[]): Map<string, StarterProblem[]>;
68
+ export {};