@controleonline/ui-common 1.2.70

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 (203) hide show
  1. package/.github/agents/developer.agent.md +30 -0
  2. package/.github/agents/devops.agent.md +30 -0
  3. package/.github/agents/qa.agent.md +30 -0
  4. package/.github/agents/security.agent.md +30 -0
  5. package/.github/workflows/npmjs.yml +35 -0
  6. package/.github/workflows/pull-request-checks.yml +19 -0
  7. package/.scrutinizer.yml +24 -0
  8. package/FUNDING.yml +1 -0
  9. package/package.json +28 -0
  10. package/src/api/fetch.js +74 -0
  11. package/src/api/index.js +155 -0
  12. package/src/api/localDB.js +131 -0
  13. package/src/api/queue.js +66 -0
  14. package/src/react/assets/tap.mp3 +0 -0
  15. package/src/react/components/AddImportModal.js +157 -0
  16. package/src/react/components/AddImportModal.styles.js +81 -0
  17. package/src/react/components/BackgroundRuntimeBridge.js +219 -0
  18. package/src/react/components/BottomNavigationBar.config.js +238 -0
  19. package/src/react/components/BottomNavigationBar.js +120 -0
  20. package/src/react/components/BottomNavigationBar.styles.js +110 -0
  21. package/src/react/components/CategoryForm.js +572 -0
  22. package/src/react/components/CategoryForm.styles.js +334 -0
  23. package/src/react/components/ConfirmModal.js +24 -0
  24. package/src/react/components/ConfirmModal.styles.js +43 -0
  25. package/src/react/components/ContextHelpButton.js +69 -0
  26. package/src/react/components/ContextHelpButton.styles.js +62 -0
  27. package/src/react/components/DefaultProvider.native.js +848 -0
  28. package/src/react/components/DefaultProvider.styles.js +21 -0
  29. package/src/react/components/DefaultProvider.web.js +909 -0
  30. package/src/react/components/DeliveryPushBridge.native.js +314 -0
  31. package/src/react/components/DeliveryPushBridge.web.js +5 -0
  32. package/src/react/components/DeviceAlertSoundService.js +499 -0
  33. package/src/react/components/EntityLogContent.js +909 -0
  34. package/src/react/components/EntityLogContent.styles.js +400 -0
  35. package/src/react/components/EventBus.js +12 -0
  36. package/src/react/components/KioskModeBridge.js +65 -0
  37. package/src/react/components/LauncherModeBridge.js +47 -0
  38. package/src/react/components/LinkedOrderProductsTab.js +388 -0
  39. package/src/react/components/LinkedOrderProductsTab.styles.js +180 -0
  40. package/src/react/components/ManagerPushBridge.native.js +345 -0
  41. package/src/react/components/MessageService.js +314 -0
  42. package/src/react/components/Paywall/Google.js +89 -0
  43. package/src/react/components/PrintService.js +778 -0
  44. package/src/react/components/ProductCatalogCacheService.js +45 -0
  45. package/src/react/components/RemoteCheckoutService.js +292 -0
  46. package/src/react/components/RuntimeBottomNavigationBar.js +151 -0
  47. package/src/react/components/RuntimeInfoFooter.js +214 -0
  48. package/src/react/components/RuntimeInfoFooter.styles.js +56 -0
  49. package/src/react/components/SystemErrorToast.js +29 -0
  50. package/src/react/components/SystemErrorToast.styles.js +38 -0
  51. package/src/react/components/TouchFeedbackProvider.js +65 -0
  52. package/src/react/components/UnifiedPaymentBar.js +155 -0
  53. package/src/react/components/UnifiedPaymentBar.styles.js +174 -0
  54. package/src/react/components/WebsocketListener.native.js +487 -0
  55. package/src/react/components/WebsocketListener.web.js +102 -0
  56. package/src/react/components/inputs/IdInput.js +49 -0
  57. package/src/react/components/inputs/IdInput.styles.js +26 -0
  58. package/src/react/components/inputs/InvoiceDueDateFilterInput.js +74 -0
  59. package/src/react/components/inputs/InvoiceDueDateFilterInput.styles.js +34 -0
  60. package/src/react/components/inputs/InvoiceDueDateRangeFilterInput.js +115 -0
  61. package/src/react/components/inputs/InvoiceDueDateRangeFilterInput.styles.js +39 -0
  62. package/src/react/components/lists/CategoriesList.js +56 -0
  63. package/src/react/components/lists/PaymentTypeList.js +55 -0
  64. package/src/react/components/lists/ReceiverList.js +56 -0
  65. package/src/react/components/lists/SelectList.styles.js +18 -0
  66. package/src/react/components/lists/StatusList.js +55 -0
  67. package/src/react/components/lists/WalletList.js +54 -0
  68. package/src/react/components/radio/Spotify.js +144 -0
  69. package/src/react/components/radio/Spotify.styles.js +32 -0
  70. package/src/react/components/radio/YouTube.js +82 -0
  71. package/src/react/components/radio/YouTube.styles.js +16 -0
  72. package/src/react/components/toastConfig.js +16 -0
  73. package/src/react/config/deviceConfigBootstrap.js +571 -0
  74. package/src/react/index.js +4 -0
  75. package/src/react/localStorage.js +30 -0
  76. package/src/react/pages/EntityLogPage.js +124 -0
  77. package/src/react/pages/EntityLogPage.styles.js +17 -0
  78. package/src/react/pages/GenericLogPage.js +760 -0
  79. package/src/react/pages/GenericLogPage.styles.js +401 -0
  80. package/src/react/pages/Imports.js +361 -0
  81. package/src/react/pages/Imports.styles.js +223 -0
  82. package/src/react/pages/SettingsPage/PaymentTypesByWalletTab.js +462 -0
  83. package/src/react/pages/SettingsPage/index.js +1171 -0
  84. package/src/react/pages/SettingsPage/index.styles.js +122 -0
  85. package/src/react/print/jobs.js +147 -0
  86. package/src/react/print/providers/local.js +53 -0
  87. package/src/react/print/providers/remote.js +81 -0
  88. package/src/react/print/selection.js +296 -0
  89. package/src/react/print/usePrintButtonController.js +474 -0
  90. package/src/react/router/routes.js +42 -0
  91. package/src/react/services/NetworkPrinterService.native.js +391 -0
  92. package/src/react/services/NetworkPrinterService.web.js +15 -0
  93. package/src/react/stores/index.js +128 -0
  94. package/src/react/stores/storeErrorBridge.js +36 -0
  95. package/src/react/utils/backgroundRuntimeRegistration.js +69 -0
  96. package/src/react/utils/cashPayment.js +87 -0
  97. package/src/react/utils/commercialDocumentOrders.js +269 -0
  98. package/src/react/utils/dateRangeFilter.js +264 -0
  99. package/src/react/utils/deviceRuntime.js +193 -0
  100. package/src/react/utils/entityDisplay.js +231 -0
  101. package/src/react/utils/entityLog.js +649 -0
  102. package/src/react/utils/fileUrl.js +102 -0
  103. package/src/react/utils/frontendDebugLog.js +45 -0
  104. package/src/react/utils/googleMapsConfig.js +49 -0
  105. package/src/react/utils/importStatus.js +100 -0
  106. package/src/react/utils/invoiceDueDateMessages.js +14 -0
  107. package/src/react/utils/invoicePresentation.js +46 -0
  108. package/src/react/utils/logSettings.js +143 -0
  109. package/src/react/utils/maintenanceSettings.js +53 -0
  110. package/src/react/utils/managerOrderNotifications.js +523 -0
  111. package/src/react/utils/mapNavigation.js +76 -0
  112. package/src/react/utils/menuCatalogConfig.js +8 -0
  113. package/src/react/utils/menuCatalogDownload.js +157 -0
  114. package/src/react/utils/networkCameraDevices.js +175 -0
  115. package/src/react/utils/networkDeviceProfiles.js +135 -0
  116. package/src/react/utils/normalizedCatalogDownload.js +157 -0
  117. package/src/react/utils/notificationNavigation.js +94 -0
  118. package/src/react/utils/notificationSound.js +42 -0
  119. package/src/react/utils/paymentDevices.js +397 -0
  120. package/src/react/utils/paymentGatewayExecution.js +91 -0
  121. package/src/react/utils/paymentOptions.js +88 -0
  122. package/src/react/utils/peopleDisplay.js +39 -0
  123. package/src/react/utils/printerDevices.js +465 -0
  124. package/src/react/utils/remotePayment.js +61 -0
  125. package/src/react/utils/runtimeFooter.js +475 -0
  126. package/src/react/utils/runtimeLanguage.js +50 -0
  127. package/src/react/utils/runtimeMenu.js +224 -0
  128. package/src/react/utils/screenMetrics.js +30 -0
  129. package/src/react/utils/shopConfig.js +294 -0
  130. package/src/react/utils/shopFranchises.js +114 -0
  131. package/src/react/utils/socketRuntimePipeline.js +454 -0
  132. package/src/react/utils/spoolAckTracker.js +77 -0
  133. package/src/react/utils/storeColumns.js +427 -0
  134. package/src/react/utils/systemErrorChannel.js +109 -0
  135. package/src/react/utils/systemErrorMessage.js +67 -0
  136. package/src/react/utils/toastPresentation.js +53 -0
  137. package/src/react/utils/websocketSharedRuntime.js +826 -0
  138. package/src/store/acl/getters.js +4 -0
  139. package/src/store/acl/index.js +19 -0
  140. package/src/store/acl/mutation_types.js +4 -0
  141. package/src/store/acl/mutations.js +17 -0
  142. package/src/store/address/city.js +22 -0
  143. package/src/store/categories/category_file/index.js +25 -0
  144. package/src/store/categories/index.js +93 -0
  145. package/src/store/configs/customActions.js +131 -0
  146. package/src/store/configs/index.js +25 -0
  147. package/src/store/connections/customActions.js +26 -0
  148. package/src/store/connections/index.js +124 -0
  149. package/src/store/device/index.js +22 -0
  150. package/src/store/device_config/customActions.js +190 -0
  151. package/src/store/device_config/index.js +28 -0
  152. package/src/store/entity_log/customActions.js +63 -0
  153. package/src/store/entity_log/index.js +25 -0
  154. package/src/store/extra/data.js +85 -0
  155. package/src/store/extra/fields.js +88 -0
  156. package/src/store/file/actions.js +27 -0
  157. package/src/store/file/index.js +24 -0
  158. package/src/store/imports/index.js +88 -0
  159. package/src/store/print/customActions.js +251 -0
  160. package/src/store/print/index.js +28 -0
  161. package/src/store/printer/customActions.js +54 -0
  162. package/src/store/printer/index.js +26 -0
  163. package/src/store/runtime_debug/customActions.js +71 -0
  164. package/src/store/runtime_debug/index.js +30 -0
  165. package/src/store/status/index.js +65 -0
  166. package/src/store/timezones/index.js +43 -0
  167. package/src/store/websocket/customActions.js +24 -0
  168. package/src/store/websocket/index.js +28 -0
  169. package/src/tests/react/components/LauncherModeBridge.test.js +93 -0
  170. package/src/tests/react/config/deviceConfigBootstrap.test.js +337 -0
  171. package/src/tests/react/print/localPrintProvider.test.js +45 -0
  172. package/src/tests/react/utils/backgroundRuntimeRegistration.test.js +123 -0
  173. package/src/tests/react/utils/cashPayment.test.js +41 -0
  174. package/src/tests/react/utils/dateRangeFilter.test.mjs +29 -0
  175. package/src/tests/react/utils/entityDisplay.test.js +18 -0
  176. package/src/tests/react/utils/googleMapsConfig.test.js +32 -0
  177. package/src/tests/react/utils/importStatus.test.js +85 -0
  178. package/src/tests/react/utils/invoicePresentation.test.mjs +40 -0
  179. package/src/tests/react/utils/managerOrderNotifications.test.js +127 -0
  180. package/src/tests/react/utils/mapNavigation.test.js +58 -0
  181. package/src/tests/react/utils/notificationNavigation.test.js +39 -0
  182. package/src/tests/react/utils/notificationSound.test.js +27 -0
  183. package/src/tests/react/utils/paymentDevices.test.js +88 -0
  184. package/src/tests/react/utils/runtimeFooter.test.js +429 -0
  185. package/src/tests/react/utils/runtimeLanguage.test.js +80 -0
  186. package/src/tests/react/utils/runtimeMenu.test.js +174 -0
  187. package/src/tests/react/utils/shopFranchises.test.js +82 -0
  188. package/src/tests/react/utils/socketRuntimePipeline.test.js +124 -0
  189. package/src/tests/react/utils/spoolAckTracker.test.js +40 -0
  190. package/src/tests/react/utils/storeErrorBridge.test.js +66 -0
  191. package/src/tests/react/utils/systemErrorChannel.test.js +58 -0
  192. package/src/tests/react/utils/systemErrorMessage.test.js +59 -0
  193. package/src/tests/react/utils/toastPresentation.test.js +75 -0
  194. package/src/tests/react/utils/translate.test.mjs +396 -0
  195. package/src/tests/react/utils/websocketSharedRuntime.test.js +245 -0
  196. package/src/utils/apiEntryPoint.js +31 -0
  197. package/src/utils/appDomain.js +50 -0
  198. package/src/utils/config.js +14 -0
  199. package/src/utils/formatter.js +419 -0
  200. package/src/utils/integrationConfigs.js +79 -0
  201. package/src/utils/methods.js +23 -0
  202. package/src/utils/oauth.js +42 -0
  203. package/src/utils/translate.js +620 -0
@@ -0,0 +1,251 @@
1
+ import {api} from '@controleonline/ui-common/src/api';
2
+ import * as types from '@controleonline/ui-default/src/store/default/mutation_types';
3
+
4
+ const normalizePeopleKey = value =>
5
+ String(value || '')
6
+ .replace(/\D+/g, '')
7
+ .trim();
8
+
9
+ export function printOrder({commit}, params = {}) {
10
+ commit(types.SET_ISLOADING);
11
+
12
+ const options = {
13
+ method: 'POST',
14
+ body: params,
15
+ };
16
+
17
+ return api
18
+ .fetch('/orders/' + params.id + '/print', options)
19
+
20
+ .then(data => {
21
+ commit(types.SET_ISLOADING, false);
22
+
23
+ return data;
24
+ })
25
+ .catch(e => {
26
+ commit(types.SET_ISLOADING, false);
27
+
28
+ commit(types.SET_ERROR, e.message);
29
+ throw e;
30
+ });
31
+ }
32
+
33
+ export function printOrderProduct({commit}, params = {}) {
34
+ commit(types.SET_ISLOADING);
35
+
36
+ const options = {
37
+ method: 'POST',
38
+ body: params,
39
+ };
40
+
41
+ return api
42
+ .fetch('/order_products/' + params.id + '/print', options)
43
+
44
+ .then(data => {
45
+ commit(types.SET_ISLOADING, false);
46
+
47
+ return data;
48
+ })
49
+ .catch(e => {
50
+ commit(types.SET_ISLOADING, false);
51
+
52
+ commit(types.SET_ERROR, e.message);
53
+ throw e;
54
+ });
55
+ }
56
+
57
+ export function printOrderProductQueue({commit}, params = {}) {
58
+ commit(types.SET_ISLOADING);
59
+
60
+ const options = {
61
+ method: 'POST',
62
+ body: params,
63
+ };
64
+
65
+ return api
66
+ .fetch('/order_product_queues/' + params.id + '/print', options)
67
+
68
+ .then(data => {
69
+ commit(types.SET_ISLOADING, false);
70
+
71
+ return data;
72
+ })
73
+ .catch(e => {
74
+ commit(types.SET_ISLOADING, false);
75
+
76
+ commit(types.SET_ERROR, e.message);
77
+ throw e;
78
+ });
79
+ }
80
+
81
+ export function getCashRegisterPrint({commit}, params = {}) {
82
+ commit(types.SET_ISLOADING);
83
+
84
+ const options = {
85
+ method: 'POST',
86
+ body: params,
87
+ };
88
+
89
+ return api
90
+ .fetch('/cash-register/print', options)
91
+
92
+ .then(data => {
93
+ commit(types.SET_ISLOADING, false);
94
+
95
+ return data;
96
+ })
97
+ .catch(e => {
98
+ commit(types.SET_ISLOADING, false);
99
+
100
+ commit(types.SET_ERROR, e.message);
101
+ throw e;
102
+ });
103
+ }
104
+ export function printPurchasingSuggestion({commit}, params = {}) {
105
+ commit(types.SET_ISLOADING);
106
+
107
+ const options = {
108
+ method: 'POST',
109
+ body: params,
110
+ };
111
+
112
+ return api
113
+ .fetch('/products/purchasing-suggestion/print', options)
114
+
115
+ .then(data => {
116
+ commit(types.SET_ISLOADING, false);
117
+
118
+ return data;
119
+ })
120
+ .catch(e => {
121
+ commit(types.SET_ISLOADING, false);
122
+
123
+ commit(types.SET_ERROR, e.message);
124
+ throw e;
125
+ });
126
+ }
127
+
128
+ export function makePrintDone({commit}, id = {}) {
129
+ commit(types.SET_ISLOADING);
130
+
131
+ const options = {
132
+ method: 'PUT',
133
+ };
134
+
135
+ return api
136
+ .fetch('/print/'+id+'/done', options)
137
+ .then(data => {
138
+ commit(types.SET_ISLOADING, false);
139
+ return data;
140
+ })
141
+ .catch(e => {
142
+ commit(types.SET_ISLOADING, false);
143
+
144
+ commit(types.SET_ERROR, e.message);
145
+ throw e;
146
+ });
147
+ }
148
+
149
+ export function printInventory({commit}, params = {}) {
150
+ commit(types.SET_ISLOADING);
151
+
152
+ const options = {
153
+ method: 'POST',
154
+ body: params,
155
+ };
156
+
157
+ return api
158
+ .fetch('/products/inventory/print', options)
159
+ .then(data => {
160
+ commit(types.SET_ISLOADING, false);
161
+ return data;
162
+ })
163
+ .catch(e => {
164
+ commit(types.SET_ISLOADING, false);
165
+
166
+ commit(types.SET_ERROR, e.message);
167
+ throw e;
168
+ });
169
+ }
170
+
171
+ export function printProductLabel({commit}, params = {}) {
172
+ commit(types.SET_ISLOADING);
173
+
174
+ const options = {
175
+ method: 'POST',
176
+ body: params,
177
+ };
178
+
179
+ return api
180
+ .fetch('/products/labels/print', options)
181
+ .then(data => {
182
+ commit(types.SET_ISLOADING, false);
183
+ return data;
184
+ })
185
+ .catch(e => {
186
+ commit(types.SET_ISLOADING, false);
187
+
188
+ commit(types.SET_ERROR, e.message);
189
+ throw e;
190
+ });
191
+ }
192
+
193
+ export const addToPrint = ({commit, getters}, print) => {
194
+ let spool = [...getters.print];
195
+ spool.push(print);
196
+ commit(types.SET_PRINT, spool);
197
+ };
198
+
199
+ export const requestPrint = ({commit, getters}, printRequest) => {
200
+ let queue = [...(getters.print || [])];
201
+ queue.push(printRequest);
202
+ commit(types.SET_PRINT, queue);
203
+ };
204
+
205
+ export const setSelection = ({commit, getters}, {key, value} = {}) => {
206
+ if (!key) {
207
+ return;
208
+ }
209
+
210
+ commit(types.SET_SELECTIONS, {
211
+ ...(getters.selections || {}),
212
+ [key]: value || '',
213
+ });
214
+ };
215
+
216
+ export const clearSelection = ({commit, getters}, key) => {
217
+ if (!key) {
218
+ return;
219
+ }
220
+
221
+ const nextSelections = {...(getters.selections || {})};
222
+ delete nextSelections[key];
223
+ commit(types.SET_SELECTIONS, nextSelections);
224
+ };
225
+
226
+ export const ensurePrintDependenciesLoaded = async (
227
+ {dispatch},
228
+ {companyId = null} = {},
229
+ ) => {
230
+ const peopleKey = normalizePeopleKey(companyId);
231
+ if (!peopleKey) {
232
+ return {
233
+ printers: [],
234
+ deviceConfigs: [],
235
+ };
236
+ }
237
+
238
+ const [printers, deviceConfigs] = await Promise.all([
239
+ dispatch('printer/ensureCompanyPrintersLoaded', {
240
+ people: peopleKey,
241
+ }),
242
+ dispatch('device_config/ensureCompanyDeviceConfigsLoaded', {
243
+ people: peopleKey,
244
+ }),
245
+ ]);
246
+
247
+ return {
248
+ printers,
249
+ deviceConfigs,
250
+ };
251
+ };
@@ -0,0 +1,28 @@
1
+ import * as actions from '@controleonline/ui-default/src/store/default/actions';
2
+ import * as getters from '@controleonline/ui-default/src/store/default/getters';
3
+ import mutations from '@controleonline/ui-default/src/store/default/mutations';
4
+ import * as customActions from './customActions';
5
+
6
+ export default {
7
+ namespaced: true,
8
+ state: {
9
+ item: {},
10
+ items: [],
11
+ resourceEndpoint: 'spools',
12
+ isLoading: false,
13
+ reload: false,
14
+ error: '',
15
+ totalItems: 0,messages:[], message:{},
16
+ summary: {},
17
+ filters: {},
18
+ columns: [],
19
+ print: [],
20
+ selections: {},
21
+ selectorModalKey: '',
22
+ activeRequestKey: '',
23
+ lastCompletedRequest: null,
24
+ },
25
+ actions: {...actions, ...customActions},
26
+ getters,
27
+ mutations,
28
+ };
@@ -0,0 +1,54 @@
1
+ import {api} from '@controleonline/ui-common/src/api';
2
+ import * as types from '@controleonline/ui-default/src/store/default/mutation_types';
3
+
4
+ const normalizePeopleKey = value =>
5
+ String(value || '')
6
+ .replace(/\D+/g, '')
7
+ .trim();
8
+
9
+ export const getPrinters = ({commit, getters}, params = {}) => {
10
+ const peopleKey = normalizePeopleKey(params?.people);
11
+ commit(types.SET_ISLOADING, true);
12
+ if (getters.items != null) commit(types.SET_ITEMS, []);
13
+ commit(types.SET_TOTALITEMS, 0);
14
+ return api
15
+ .fetch(getters.resourceEndpoint, {params: params})
16
+ .then(data => {
17
+ commit(types.SET_ITEMS, data['member']);
18
+ commit(types.SET_TOTALITEMS, data['totalItems']);
19
+ commit(types.SET_LOADED_KEY, peopleKey);
20
+ commit(types.SET_LOADED_AT, Date.now());
21
+
22
+ return data['member'];
23
+ })
24
+ .catch(e => {
25
+ commit(types.SET_ERROR, e.message);
26
+ throw e;
27
+ })
28
+ .finally(() => {
29
+ commit(types.SET_ISLOADING, false);
30
+ });
31
+ };
32
+
33
+ export const ensureCompanyPrintersLoaded = (context, params = {}) => {
34
+ const peopleKey = normalizePeopleKey(params?.people);
35
+ if (!peopleKey) {
36
+ return Promise.resolve([]);
37
+ }
38
+
39
+ if (
40
+ context.getters.loadedKey === peopleKey &&
41
+ Array.isArray(context.getters.items)
42
+ ) {
43
+ return Promise.resolve(context.getters.items);
44
+ }
45
+
46
+ if (context.getters.isLoading) {
47
+ return Promise.resolve(context.getters.items || []);
48
+ }
49
+
50
+ return getPrinters(context, {
51
+ ...params,
52
+ people: peopleKey,
53
+ });
54
+ };
@@ -0,0 +1,26 @@
1
+ import * as actions from '@controleonline/ui-default/src/store/default/actions';
2
+ import * as getters from '@controleonline/ui-default/src/store/default/getters';
3
+ import mutations from '@controleonline/ui-default/src/store/default/mutations';
4
+ import * as customActions from './customActions';
5
+
6
+ export default {
7
+ namespaced: true,
8
+ state: {
9
+ item: {},
10
+ items: [],
11
+ resourceEndpoint: 'printers',
12
+ isLoading: false,
13
+ reload: false,
14
+ error: '',
15
+ totalItems: 0,messages:[], message:{},
16
+ summary: {},
17
+ loadedKey: '',
18
+ loadedAt: 0,
19
+ filters: {},
20
+ columns: [],
21
+ print: [],
22
+ },
23
+ actions: {...actions, ...customActions},
24
+ getters,
25
+ mutations,
26
+ };
@@ -0,0 +1,71 @@
1
+ import * as types from '@controleonline/ui-default/src/store/default/mutation_types';
2
+
3
+ const normalizeText = value => String(value || '').trim();
4
+
5
+ const normalizeEntry = entry => {
6
+ if (!entry || typeof entry !== 'object') {
7
+ return null;
8
+ }
9
+
10
+ const key = normalizeText(entry.key);
11
+ if (!key) {
12
+ return null;
13
+ }
14
+
15
+ const normalizedLines = Array.isArray(entry.lines)
16
+ ? entry.lines.map(line => normalizeText(line)).filter(Boolean)
17
+ : [];
18
+ const fallbackText = normalizeText(entry.text);
19
+ const lines = normalizedLines.length > 0
20
+ ? normalizedLines
21
+ : (fallbackText ? [fallbackText] : []);
22
+
23
+ return {
24
+ ...entry,
25
+ key,
26
+ lines,
27
+ order: Number.isFinite(Number(entry.order)) ? Number(entry.order) : 100,
28
+ updatedAt: normalizeText(entry.updatedAt) || new Date().toISOString(),
29
+ };
30
+ };
31
+
32
+ export const setFooterEntry = ({commit, getters}, entry) => {
33
+ const normalizedEntry = normalizeEntry(entry);
34
+ if (!normalizedEntry) {
35
+ return null;
36
+ }
37
+
38
+ const currentSummary =
39
+ getters.summary && typeof getters.summary === 'object' ? getters.summary : {};
40
+ const nextEntries = {
41
+ ...(currentSummary.entries || {}),
42
+ [normalizedEntry.key]: normalizedEntry,
43
+ };
44
+
45
+ commit(types.SET_SUMMARY, {
46
+ ...currentSummary,
47
+ entries: nextEntries,
48
+ });
49
+
50
+ return normalizedEntry;
51
+ };
52
+
53
+ export const clearFooterEntry = ({commit, getters}, key) => {
54
+ const normalizedKey = normalizeText(key);
55
+ const currentSummary =
56
+ getters.summary && typeof getters.summary === 'object' ? getters.summary : {};
57
+
58
+ if (!normalizedKey || !currentSummary.entries?.[normalizedKey]) {
59
+ return null;
60
+ }
61
+
62
+ const nextEntries = {...currentSummary.entries};
63
+ delete nextEntries[normalizedKey];
64
+
65
+ commit(types.SET_SUMMARY, {
66
+ ...currentSummary,
67
+ entries: nextEntries,
68
+ });
69
+
70
+ return null;
71
+ };
@@ -0,0 +1,30 @@
1
+ import * as actions from '@controleonline/ui-default/src/store/default/actions';
2
+ import * as getters from '@controleonline/ui-default/src/store/default/getters';
3
+ import mutations from '@controleonline/ui-default/src/store/default/mutations';
4
+ import * as customActions from './customActions';
5
+
6
+ export default {
7
+ namespaced: true,
8
+ state: {
9
+ item: {},
10
+ items: [],
11
+ resourceEndpoint: 'runtime_debug',
12
+ isLoading: false,
13
+ isSaving: false,
14
+ error: '',
15
+ totalItems: 0,
16
+ summary: {
17
+ entries: {},
18
+ },
19
+ filters: {},
20
+ columns: [],
21
+ messages: [],
22
+ message: {},
23
+ },
24
+ actions: {
25
+ ...actions,
26
+ ...customActions,
27
+ },
28
+ getters,
29
+ mutations,
30
+ };
@@ -0,0 +1,65 @@
1
+ import * as actions from "@controleonline/ui-default/src/store/default/actions";
2
+ import * as getters from "@controleonline/ui-default/src/store/default/getters";
3
+ import mutations from "@controleonline/ui-default/src/store/default/mutations";
4
+
5
+
6
+ export default {
7
+ namespaced: true,
8
+ state: {
9
+ item: {},
10
+ items: [],
11
+ resourceEndpoint: "statuses",
12
+ isLoading: false,
13
+ error: "",
14
+ totalItems: 0, messages: [], message: {},
15
+ summary: {},
16
+ filters: {},
17
+ columns: [
18
+ {
19
+ editable: false,
20
+ isIdentity: true,
21
+ sortable: true,
22
+ name: "id",
23
+ align: "left",
24
+ label: "id",
25
+ sum: false,
26
+ format: function (value) {
27
+ return "#" + value;
28
+ },
29
+ },
30
+ {
31
+ externalFilter: false,
32
+ sortable: true,
33
+ name: "status",
34
+ align: "left",
35
+ label: "status",
36
+ sum: false,
37
+ format: function (value) {
38
+ return value;
39
+ },
40
+ },
41
+ {
42
+ sortable: true,
43
+ name: "color",
44
+ align: "left",
45
+ label: "color",
46
+ inputType: "color",
47
+ format: function (value) {
48
+ return value;
49
+ },
50
+ },
51
+ {
52
+ sortable: true,
53
+ name: "realStatus",
54
+ align: "left",
55
+ label: "realStatus",
56
+ format: function (value) {
57
+ return value;
58
+ },
59
+ }
60
+ ],
61
+ },
62
+ actions: actions,
63
+ getters,
64
+ mutations,
65
+ };
@@ -0,0 +1,43 @@
1
+ import * as actions from '@controleonline/ui-default/src/store/default/actions';
2
+ import * as getters from '@controleonline/ui-default/src/store/default/getters';
3
+ import mutations from '@controleonline/ui-default/src/store/default/mutations';
4
+
5
+ export default {
6
+ namespaced: true,
7
+ state: {
8
+ item: {},
9
+ items: [],
10
+ resourceEndpoint: 'timezones',
11
+ isLoading: false,
12
+ error: '',
13
+ totalItems: 0,
14
+ messages: [],
15
+ message: {},
16
+ summary: {},
17
+ filters: {},
18
+ columns: [
19
+ {
20
+ isIdentity: true,
21
+ sortable: true,
22
+ name: 'id',
23
+ label: 'id',
24
+ align: 'left',
25
+ format(value) {
26
+ return value;
27
+ },
28
+ },
29
+ {
30
+ sortable: true,
31
+ name: 'name',
32
+ label: 'name',
33
+ align: 'left',
34
+ format(value) {
35
+ return value;
36
+ },
37
+ },
38
+ ],
39
+ },
40
+ actions,
41
+ getters,
42
+ mutations,
43
+ };
@@ -0,0 +1,24 @@
1
+ import { api } from '@controleonline/ui-common/src/api';
2
+ import * as types from '@controleonline/ui-default/src/store/default/mutation_types';
3
+
4
+ export const send = ({ commit, getters }, params = {}) => {
5
+ commit(types.SET_ISSAVING, true);
6
+ commit(types.SET_ERROR, '');
7
+
8
+ return api
9
+ .fetch(getters.resourceEndpoint, {
10
+ method: 'POST',
11
+ body: params,
12
+ })
13
+ .then(data => {
14
+ commit(types.SET_ITEM, data || {});
15
+ return data;
16
+ })
17
+ .catch(e => {
18
+ commit(types.SET_ERROR, e.message);
19
+ throw e;
20
+ })
21
+ .finally(() => {
22
+ commit(types.SET_ISSAVING, false);
23
+ });
24
+ };
@@ -0,0 +1,28 @@
1
+ import * as actions from '@controleonline/ui-default/src/store/default/actions';
2
+ import * as getters from '@controleonline/ui-default/src/store/default/getters';
3
+ import mutations from '@controleonline/ui-default/src/store/default/mutations';
4
+ import * as customActions from './customActions';
5
+
6
+ export default {
7
+ namespaced: true,
8
+ state: {
9
+ item: {},
10
+ items: [],
11
+ resourceEndpoint: 'websocket',
12
+ isLoading: false,
13
+ isSaving: false,
14
+ error: '',
15
+ totalItems: 0,
16
+ summary: {},
17
+ filters: {},
18
+ columns: [],
19
+ messages: [],
20
+ message: {},
21
+ },
22
+ actions: {
23
+ ...actions,
24
+ ...customActions,
25
+ },
26
+ getters,
27
+ mutations,
28
+ };