@things-factory/dataset 6.0.25 → 6.0.27

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 (154) hide show
  1. package/README.md +26 -11
  2. package/assets/images/ooc.png +0 -0
  3. package/assets/images/oos.png +0 -0
  4. package/client/{bootstrap.js → bootstrap.ts} +2 -0
  5. package/client/components/{data-entry-form.js → data-entry-form.ts} +30 -33
  6. package/client/components/data-ooc-activity-view.ts +153 -0
  7. package/client/pages/data-archive/{data-archive-list-page.js → data-archive-list-page.ts} +67 -53
  8. package/client/pages/data-archive/{data-archive-request-popup.js → data-archive-request-popup.ts} +41 -39
  9. package/client/pages/data-entry/{data-entry-list-page.js → data-entry-list-page.ts} +41 -38
  10. package/client/pages/data-key-set/{data-key-item-list.js → data-key-item-list.ts} +31 -39
  11. package/client/pages/data-key-set/data-key-set-importer.ts +95 -0
  12. package/client/pages/data-key-set/{data-key-set-list-page.js → data-key-set-list-page.ts} +54 -35
  13. package/client/pages/data-ooc/{data-ooc-list-page.js → data-ooc-list-page.ts} +50 -36
  14. package/client/pages/data-ooc/{data-ooc-view.js → data-ooc-view.ts} +66 -76
  15. package/client/pages/data-report/{data-report-embed-page.js → data-report-embed-page.ts} +25 -34
  16. package/client/pages/data-report/{data-report-list-page.js → data-report-list-page.ts} +49 -43
  17. package/client/pages/data-report/{data-report-samples-page.js → data-report-samples-page.ts} +29 -43
  18. package/client/pages/data-report/{jasper-report-oocs-page.js → jasper-report-oocs-page.ts} +22 -34
  19. package/client/pages/data-report/{jasper-report-samples-crosstab-page.js → jasper-report-samples-crosstab-page.ts} +22 -34
  20. package/client/pages/data-report/{jasper-report-samples-page.js → jasper-report-samples-page.ts} +22 -34
  21. package/client/pages/data-sample/{data-sample-list-page.js → data-sample-list-page.ts} +49 -36
  22. package/client/pages/data-sample/{data-sample-search-page.js → data-sample-search-page.ts} +53 -39
  23. package/client/pages/data-sample/{data-sample-view.js → data-sample-view.ts} +29 -33
  24. package/client/pages/data-sensor/{data-sensor-list-page.js → data-sensor-list-page.ts} +41 -35
  25. package/client/pages/data-set/{data-item-list.js → data-item-list.ts} +31 -37
  26. package/client/pages/data-set/data-set-importer.ts +96 -0
  27. package/client/pages/data-set/{data-set-list-page.js → data-set-list-page.ts} +62 -36
  28. package/client/{route.js → route.ts} +1 -1
  29. package/client/tsconfig.json +11 -0
  30. package/dist-client/bootstrap.d.ts +3 -0
  31. package/dist-client/bootstrap.js +14 -0
  32. package/dist-client/bootstrap.js.map +1 -0
  33. package/dist-client/components/data-entry-form.d.ts +15 -0
  34. package/dist-client/components/data-entry-form.js +83 -0
  35. package/dist-client/components/data-entry-form.js.map +1 -0
  36. package/dist-client/components/data-ooc-activity-view.d.ts +1 -0
  37. package/dist-client/components/data-ooc-activity-view.js +154 -0
  38. package/dist-client/components/data-ooc-activity-view.js.map +1 -0
  39. package/dist-client/index.d.ts +1 -0
  40. package/dist-client/index.js +2 -0
  41. package/dist-client/index.js.map +1 -0
  42. package/dist-client/pages/data-archive/data-archive-list-page.d.ts +71 -0
  43. package/dist-client/pages/data-archive/data-archive-list-page.js +287 -0
  44. package/dist-client/pages/data-archive/data-archive-list-page.js.map +1 -0
  45. package/dist-client/pages/data-archive/data-archive-request-popup.d.ts +1 -0
  46. package/dist-client/pages/data-archive/data-archive-request-popup.js +161 -0
  47. package/dist-client/pages/data-archive/data-archive-request-popup.js.map +1 -0
  48. package/dist-client/pages/data-entry/data-entry-list-page.d.ts +36 -0
  49. package/dist-client/pages/data-entry/data-entry-list-page.js +383 -0
  50. package/dist-client/pages/data-entry/data-entry-list-page.js.map +1 -0
  51. package/dist-client/pages/data-key-set/data-key-item-list.d.ts +18 -0
  52. package/dist-client/pages/data-key-set/data-key-item-list.js +188 -0
  53. package/dist-client/pages/data-key-set/data-key-item-list.js.map +1 -0
  54. package/dist-client/pages/data-key-set/data-key-set-importer.d.ts +9 -0
  55. package/dist-client/pages/data-key-set/data-key-set-importer.js +100 -0
  56. package/dist-client/pages/data-key-set/data-key-set-importer.js.map +1 -0
  57. package/dist-client/pages/data-key-set/data-key-set-list-page.d.ts +60 -0
  58. package/dist-client/pages/data-key-set/data-key-set-list-page.js +450 -0
  59. package/dist-client/pages/data-key-set/data-key-set-list-page.js.map +1 -0
  60. package/dist-client/pages/data-ooc/data-ooc-list-page.d.ts +58 -0
  61. package/dist-client/pages/data-ooc/data-ooc-list-page.js +473 -0
  62. package/dist-client/pages/data-ooc/data-ooc-list-page.js.map +1 -0
  63. package/dist-client/pages/data-ooc/data-ooc-view.d.ts +1 -0
  64. package/dist-client/pages/data-ooc/data-ooc-view.js +179 -0
  65. package/dist-client/pages/data-ooc/data-ooc-view.js.map +1 -0
  66. package/dist-client/pages/data-report/data-report-embed-page.d.ts +36 -0
  67. package/dist-client/pages/data-report/data-report-embed-page.js +101 -0
  68. package/dist-client/pages/data-report/data-report-embed-page.js.map +1 -0
  69. package/dist-client/pages/data-report/data-report-list-page.d.ts +36 -0
  70. package/dist-client/pages/data-report/data-report-list-page.js +431 -0
  71. package/dist-client/pages/data-report/data-report-list-page.js.map +1 -0
  72. package/dist-client/pages/data-report/data-report-samples-page.d.ts +32 -0
  73. package/dist-client/pages/data-report/data-report-samples-page.js +164 -0
  74. package/dist-client/pages/data-report/data-report-samples-page.js.map +1 -0
  75. package/dist-client/pages/data-report/jasper-report-oocs-page.d.ts +2 -0
  76. package/dist-client/pages/data-report/jasper-report-oocs-page.js +101 -0
  77. package/dist-client/pages/data-report/jasper-report-oocs-page.js.map +1 -0
  78. package/dist-client/pages/data-report/jasper-report-samples-crosstab-page.d.ts +2 -0
  79. package/dist-client/pages/data-report/jasper-report-samples-crosstab-page.js +101 -0
  80. package/dist-client/pages/data-report/jasper-report-samples-crosstab-page.js.map +1 -0
  81. package/dist-client/pages/data-report/jasper-report-samples-page.d.ts +2 -0
  82. package/dist-client/pages/data-report/jasper-report-samples-page.js +101 -0
  83. package/dist-client/pages/data-report/jasper-report-samples-page.js.map +1 -0
  84. package/dist-client/pages/data-sample/data-sample-list-page.d.ts +58 -0
  85. package/dist-client/pages/data-sample/data-sample-list-page.js +412 -0
  86. package/dist-client/pages/data-sample/data-sample-list-page.js.map +1 -0
  87. package/dist-client/pages/data-sample/data-sample-search-page.d.ts +63 -0
  88. package/dist-client/pages/data-sample/data-sample-search-page.js +413 -0
  89. package/dist-client/pages/data-sample/data-sample-search-page.js.map +1 -0
  90. package/dist-client/pages/data-sample/data-sample-view.d.ts +1 -0
  91. package/dist-client/pages/data-sample/data-sample-view.js +109 -0
  92. package/dist-client/pages/data-sample/data-sample-view.js.map +1 -0
  93. package/dist-client/pages/data-sensor/data-sensor-list-page.d.ts +49 -0
  94. package/dist-client/pages/data-sensor/data-sensor-list-page.js +419 -0
  95. package/dist-client/pages/data-sensor/data-sensor-list-page.js.map +1 -0
  96. package/dist-client/pages/data-set/data-item-list.d.ts +1 -0
  97. package/dist-client/pages/data-set/data-item-list.js +267 -0
  98. package/dist-client/pages/data-set/data-item-list.js.map +1 -0
  99. package/dist-client/pages/data-set/data-set-importer.d.ts +10 -0
  100. package/dist-client/pages/data-set/data-set-importer.js +103 -0
  101. package/dist-client/pages/data-set/data-set-importer.js.map +1 -0
  102. package/dist-client/pages/data-set/data-set-list-page.d.ts +71 -0
  103. package/dist-client/pages/data-set/data-set-list-page.js +759 -0
  104. package/dist-client/pages/data-set/data-set-list-page.js.map +1 -0
  105. package/dist-client/route.d.ts +1 -0
  106. package/dist-client/route.js +47 -0
  107. package/dist-client/route.js.map +1 -0
  108. package/dist-client/tsconfig.tsbuildinfo +1 -0
  109. package/dist-server/controllers/activity-template/activity-ooc.js +59 -0
  110. package/dist-server/controllers/activity-template/activity-ooc.js.map +1 -0
  111. package/dist-server/controllers/create-data-sample.js +38 -1
  112. package/dist-server/controllers/create-data-sample.js.map +1 -1
  113. package/dist-server/controllers/index.js +5 -0
  114. package/dist-server/controllers/index.js.map +1 -1
  115. package/dist-server/index.js +1 -2
  116. package/dist-server/index.js.map +1 -1
  117. package/dist-server/routes.js +2 -2
  118. package/dist-server/routes.js.map +1 -1
  119. package/dist-server/service/data-set/data-set-query.js +5 -4
  120. package/dist-server/service/data-set/data-set-query.js.map +1 -1
  121. package/dist-server/service/data-set/data-set.js +3 -0
  122. package/dist-server/service/data-set/data-set.js.map +1 -1
  123. package/dist-server/service/data-set-history/data-set-history-query.js +4 -3
  124. package/dist-server/service/data-set-history/data-set-history-query.js.map +1 -1
  125. package/dist-server/tsconfig.tsbuildinfo +1 -1
  126. package/package.json +15 -12
  127. package/server/controllers/activity-template/activity-ooc.ts +55 -0
  128. package/server/controllers/create-data-sample.ts +48 -3
  129. package/server/controllers/index.ts +9 -0
  130. package/server/index.ts +1 -2
  131. package/server/routes.ts +2 -4
  132. package/server/service/data-set/data-set-query.ts +5 -4
  133. package/server/service/data-set/data-set.ts +3 -0
  134. package/server/service/data-set-history/data-set-history-query.ts +4 -3
  135. package/server/tsconfig.json +10 -0
  136. package/things-factory.config.js +2 -2
  137. package/translations/en.json +1 -1
  138. package/translations/ko.json +1 -1
  139. package/translations/ms.json +1 -0
  140. package/translations/zh.json +1 -0
  141. package/client/pages/data-key-set/data-key-set-importer.js +0 -105
  142. package/client/pages/data-set/data-set-importer.js +0 -103
  143. package/dist-server/middlewares/index.js +0 -8
  144. package/dist-server/middlewares/index.js.map +0 -1
  145. package/dist-server/migrations/index.js +0 -12
  146. package/dist-server/migrations/index.js.map +0 -1
  147. package/server/middlewares/index.ts +0 -3
  148. package/server/migrations/index.ts +0 -9
  149. package/tsconfig.json +0 -9
  150. /package/assets/{data-report.jpg → images/data-report.jpg} +0 -0
  151. /package/assets/{data-samples.jpg → images/data-samples.jpg} +0 -0
  152. /package/assets/{diagram.jpg → images/dataset-diagram.jpg} +0 -0
  153. /package/assets/{glue-table-indices.png → images/glue-table-indices-for-dataset.png} +0 -0
  154. /package/client/{index.js → index.ts} +0 -0
@@ -0,0 +1,419 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import '@operato/data-grist';
3
+ import gql from 'graphql-tag';
4
+ import { css, html } from 'lit';
5
+ import { customElement, query, state } from 'lit/decorators.js';
6
+ import { connect } from 'pwa-helpers/connect-mixin';
7
+ import { client } from '@operato/graphql';
8
+ import { i18next, localize } from '@operato/i18n';
9
+ import { notify } from '@operato/layout';
10
+ import { PageView, store } from '@operato/shell';
11
+ import { CommonButtonStyles, CommonGristStyles, ScrollbarStyles } from '@operato/styles';
12
+ import { isMobileDevice } from '@operato/utils';
13
+ import { DataGrist } from '@operato/data-grist';
14
+ import { OxPopup } from '@operato/popup';
15
+ let DataSensorListPage = class DataSensorListPage extends connect(store)(localize(i18next)(PageView)) {
16
+ constructor() {
17
+ super(...arguments);
18
+ this.mode = isMobileDevice() ? 'CARD' : 'GRID';
19
+ }
20
+ get context() {
21
+ return {
22
+ search: {
23
+ handler: (search) => {
24
+ this.grist.searchText = search;
25
+ },
26
+ placeholder: i18next.t('title.data-sensor list'),
27
+ value: this.grist.searchText
28
+ },
29
+ filter: {
30
+ handler: () => {
31
+ this.grist.toggleHeadroom();
32
+ }
33
+ },
34
+ help: 'dataset/data-sensor',
35
+ actions: [
36
+ Object.assign({ title: i18next.t('button.copy'), action: this._copyDataSensor.bind(this) }, CommonButtonStyles.copy),
37
+ Object.assign({ title: i18next.t('button.save'), action: this._updateDataSensor.bind(this) }, CommonButtonStyles.save),
38
+ Object.assign({ title: i18next.t('button.delete'), action: this._deleteDataSensor.bind(this) }, CommonButtonStyles.delete)
39
+ ]
40
+ };
41
+ }
42
+ render() {
43
+ const mode = this.mode || (isMobileDevice() ? 'LIST' : 'GRID');
44
+ return html `
45
+ <ox-grist
46
+ .mode=${mode}
47
+ .config=${this.gristConfig}
48
+ .fetchHandler=${this.fetchHandler.bind(this)}
49
+ ?url-params-sensitive=${this.active}
50
+ >
51
+ <div slot="headroom">
52
+ <div id="filters">
53
+ <ox-filters-form autofocus without-search></ox-filters-form>
54
+ </div>
55
+
56
+ <div id="sorters">
57
+ Sort
58
+ <mwc-icon
59
+ @click=${e => {
60
+ const target = e.currentTarget;
61
+ this.sortersControl.open({
62
+ right: 0,
63
+ top: target.offsetTop + target.offsetHeight
64
+ });
65
+ }}
66
+ >expand_more</mwc-icon
67
+ >
68
+ <ox-popup id="sorter-control">
69
+ <ox-sorters-control> </ox-sorters-control>
70
+ </ox-popup>
71
+ </div>
72
+
73
+ <div id="modes">
74
+ <mwc-icon @click=${() => (this.mode = 'GRID')} ?active=${mode == 'GRID'}>grid_on</mwc-icon>
75
+ <mwc-icon @click=${() => (this.mode = 'LIST')} ?active=${mode == 'LIST'}>format_list_bulleted</mwc-icon>
76
+ <mwc-icon @click=${() => (this.mode = 'CARD')} ?active=${mode == 'CARD'}>apps</mwc-icon>
77
+ </div>
78
+ </div>
79
+ </ox-grist>
80
+ `;
81
+ }
82
+ async pageInitialized(lifecycle) {
83
+ this.gristConfig = {
84
+ list: { fields: ['name', 'description', 'active'] },
85
+ columns: [
86
+ { type: 'gutter', gutterName: 'sequence' },
87
+ { type: 'gutter', gutterName: 'row-selector', multiple: true },
88
+ {
89
+ type: 'string',
90
+ name: 'name',
91
+ label: true,
92
+ header: i18next.t('field.name'),
93
+ record: {
94
+ editable: true
95
+ },
96
+ filter: 'search',
97
+ sortable: true,
98
+ width: 150
99
+ },
100
+ {
101
+ type: 'string',
102
+ name: 'description',
103
+ label: true,
104
+ header: i18next.t('field.description'),
105
+ record: {
106
+ editable: true
107
+ },
108
+ filter: 'search',
109
+ width: 200
110
+ },
111
+ {
112
+ type: 'checkbox',
113
+ name: 'active',
114
+ label: true,
115
+ header: i18next.t('field.active'),
116
+ record: {
117
+ editable: true
118
+ },
119
+ sortable: true,
120
+ filter: true,
121
+ width: 60
122
+ },
123
+ {
124
+ type: 'string',
125
+ name: 'deviceId',
126
+ label: true,
127
+ header: i18next.t('field.device-id'),
128
+ record: {
129
+ editable: true
130
+ },
131
+ filter: 'search',
132
+ sortable: true,
133
+ width: 150
134
+ },
135
+ {
136
+ type: 'string',
137
+ name: 'tag',
138
+ label: true,
139
+ header: i18next.t('field.tag'),
140
+ record: {
141
+ editable: true
142
+ },
143
+ sortable: true,
144
+ filter: 'search',
145
+ width: 150
146
+ },
147
+ {
148
+ type: 'object',
149
+ name: 'appliance',
150
+ header: i18next.t('field.appliance'),
151
+ record: {
152
+ editable: true,
153
+ options: {
154
+ queryName: 'appliances'
155
+ }
156
+ },
157
+ sortable: true,
158
+ width: 120
159
+ },
160
+ {
161
+ type: 'object',
162
+ name: 'dataSet',
163
+ header: i18next.t('field.data-set'),
164
+ record: {
165
+ editable: true,
166
+ options: {
167
+ queryName: 'dataSets'
168
+ }
169
+ },
170
+ sortable: true,
171
+ width: 120
172
+ },
173
+ {
174
+ type: 'string',
175
+ name: 'refBy',
176
+ label: true,
177
+ header: i18next.t('field.ref-by'),
178
+ record: {
179
+ editable: true
180
+ },
181
+ sortable: true,
182
+ width: 150
183
+ },
184
+ {
185
+ type: 'string',
186
+ name: 'model',
187
+ label: true,
188
+ header: i18next.t('field.model'),
189
+ record: {
190
+ editable: true
191
+ },
192
+ sortable: true,
193
+ width: 150
194
+ },
195
+ {
196
+ type: 'string',
197
+ name: 'brand',
198
+ label: true,
199
+ header: i18next.t('field.brand'),
200
+ record: {
201
+ editable: true
202
+ },
203
+ sortable: true,
204
+ width: 150
205
+ },
206
+ {
207
+ type: 'string',
208
+ name: 'serialNo',
209
+ label: true,
210
+ header: i18next.t('field.serial-no'),
211
+ record: {
212
+ editable: true
213
+ },
214
+ sortable: true,
215
+ width: 150
216
+ },
217
+ {
218
+ type: 'string',
219
+ name: 'netmask',
220
+ label: true,
221
+ header: i18next.t('field.netmask'),
222
+ record: {
223
+ editable: true
224
+ },
225
+ sortable: true,
226
+ width: 150
227
+ },
228
+ {
229
+ type: 'object',
230
+ name: 'updater',
231
+ header: i18next.t('field.updater'),
232
+ record: {
233
+ editable: false
234
+ },
235
+ sortable: true,
236
+ width: 120
237
+ },
238
+ {
239
+ type: 'datetime',
240
+ name: 'updatedAt',
241
+ header: i18next.t('field.updated_at'),
242
+ record: {
243
+ editable: false
244
+ },
245
+ sortable: true,
246
+ width: 180
247
+ }
248
+ ],
249
+ rows: {
250
+ selectable: {
251
+ multiple: true
252
+ }
253
+ },
254
+ sorters: [
255
+ {
256
+ name: 'name'
257
+ }
258
+ ]
259
+ };
260
+ }
261
+ async fetchHandler({ page, limit, sortings = [], filters = [] }) {
262
+ const response = await client.query({
263
+ query: gql `
264
+ query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {
265
+ responses: dataSensors(filters: $filters, pagination: $pagination, sortings: $sortings) {
266
+ items {
267
+ id
268
+ name
269
+ description
270
+ active
271
+ deviceId
272
+ tag
273
+ appliance {
274
+ id
275
+ name
276
+ description
277
+ }
278
+ dataSet {
279
+ id
280
+ name
281
+ description
282
+ }
283
+ refBy
284
+ brand
285
+ model
286
+ serialNo
287
+ netmask
288
+ updater {
289
+ id
290
+ name
291
+ }
292
+ updatedAt
293
+ }
294
+ total
295
+ }
296
+ }
297
+ `,
298
+ variables: {
299
+ filters,
300
+ pagination: { page, limit },
301
+ sortings
302
+ }
303
+ });
304
+ return {
305
+ total: response.data.responses.total || 0,
306
+ records: response.data.responses.items || []
307
+ };
308
+ }
309
+ async _deleteDataSensor() {
310
+ if (confirm(i18next.t('text.sure_to_x', { x: i18next.t('text.delete') }))) {
311
+ const ids = this.grist.selected.map(record => record.id);
312
+ if (ids && ids.length > 0) {
313
+ const response = await client.mutate({
314
+ mutation: gql `
315
+ mutation ($ids: [String!]!) {
316
+ deleteDataSensors(ids: $ids)
317
+ }
318
+ `,
319
+ variables: {
320
+ ids
321
+ }
322
+ });
323
+ if (!response.errors) {
324
+ this.grist.fetch();
325
+ notify({
326
+ message: i18next.t('text.info_x_successfully', { x: i18next.t('text.delete') })
327
+ });
328
+ }
329
+ }
330
+ }
331
+ }
332
+ async _copyDataSensor() {
333
+ var selected = this.grist.selected;
334
+ if (selected.length == 0)
335
+ return;
336
+ if (!confirm(i18next.t('text.sure_to_x', { x: i18next.t('text.copy') })))
337
+ return;
338
+ var response = await client.mutate({
339
+ mutation: gql `
340
+ mutation ($ids: [String!]!) {
341
+ copyDataSensors(ids: $ids) {
342
+ id
343
+ }
344
+ }
345
+ `,
346
+ variables: {
347
+ ids: selected.map(r => r.id)
348
+ }
349
+ });
350
+ if (!response.errors)
351
+ this.grist.fetch();
352
+ }
353
+ async _updateDataSensor() {
354
+ let patches = this.grist.dirtyRecords;
355
+ if (patches && patches.length) {
356
+ patches = patches.map(patch => {
357
+ let patchField = patch.id ? { id: patch.id } : {};
358
+ const dirtyFields = patch.__dirtyfields__;
359
+ for (let key in dirtyFields) {
360
+ patchField[key] = dirtyFields[key].after;
361
+ }
362
+ patchField.cuFlag = patch.__dirty__;
363
+ return patchField;
364
+ });
365
+ const response = await client.mutate({
366
+ mutation: gql `
367
+ mutation ($patches: [DataSensorPatch!]!) {
368
+ updateMultipleDataSensor(patches: $patches) {
369
+ name
370
+ }
371
+ }
372
+ `,
373
+ variables: {
374
+ patches
375
+ }
376
+ });
377
+ if (!response.errors)
378
+ this.grist.fetch();
379
+ }
380
+ }
381
+ };
382
+ DataSensorListPage.styles = [
383
+ ScrollbarStyles,
384
+ CommonGristStyles,
385
+ css `
386
+ :host {
387
+ display: flex;
388
+ flex-direction: column;
389
+
390
+ overflow: hidden;
391
+ }
392
+
393
+ ox-grist {
394
+ overflow-y: auto;
395
+ flex: 1;
396
+ }
397
+ `
398
+ ];
399
+ __decorate([
400
+ state(),
401
+ __metadata("design:type", Object)
402
+ ], DataSensorListPage.prototype, "gristConfig", void 0);
403
+ __decorate([
404
+ state(),
405
+ __metadata("design:type", String)
406
+ ], DataSensorListPage.prototype, "mode", void 0);
407
+ __decorate([
408
+ query('ox-grist'),
409
+ __metadata("design:type", DataGrist)
410
+ ], DataSensorListPage.prototype, "grist", void 0);
411
+ __decorate([
412
+ query('#sorter-control'),
413
+ __metadata("design:type", OxPopup)
414
+ ], DataSensorListPage.prototype, "sortersControl", void 0);
415
+ DataSensorListPage = __decorate([
416
+ customElement('data-sensor-list-page')
417
+ ], DataSensorListPage);
418
+ export { DataSensorListPage };
419
+ //# sourceMappingURL=data-sensor-list-page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-sensor-list-page.js","sourceRoot":"","sources":["../../../client/pages/data-sensor/data-sensor-list-page.ts"],"names":[],"mappings":";AAAA,OAAO,qBAAqB,CAAA;AAE5B,OAAO,GAAG,MAAM,aAAa,CAAA;AAC7B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC/B,OAAO,EAAE,aAAa,EAAY,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAEzE,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAEnD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACxF,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAgB,SAAS,EAA+B,MAAM,qBAAqB,CAAA;AAC1F,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAGjC,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;IAA5E;;QAoBI,SAAI,GAA6B,cAAc,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAA;IAoY9E,CAAC;IA/XC,IAAI,OAAO;QACT,OAAO;YACL,MAAM,EAAE;gBACN,OAAO,EAAE,CAAC,MAAc,EAAE,EAAE;oBAC1B,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAA;gBAChC,CAAC;gBACD,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;gBAChD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU;aAC7B;YACD,MAAM,EAAE;gBACN,OAAO,EAAE,GAAG,EAAE;oBACZ,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAA;gBAC7B,CAAC;aACF;YACD,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE;gCAEL,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,EAC/B,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IACpC,kBAAkB,CAAC,IAAI;gCAG1B,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,EAC/B,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IACtC,kBAAkB,CAAC,IAAI;gCAG1B,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,EACjC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IACtC,kBAAkB,CAAC,MAAM;aAE/B;SACF,CAAA;IACH,CAAC;IAED,MAAM;QACJ,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;QAE9D,OAAO,IAAI,CAAA;;gBAEC,IAAI;kBACF,IAAI,CAAC,WAAW;wBACV,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;gCACpB,IAAI,CAAC,MAAM;;;;;;;;;;uBAUpB,CAAC,CAAC,EAAE;YACX,MAAM,MAAM,GAAG,CAAC,CAAC,aAAa,CAAA;YAC9B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;gBACvB,KAAK,EAAE,CAAC;gBACR,GAAG,EAAE,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,YAAY;aAC5C,CAAC,CAAA;QACJ,CAAC;;;;;;;;;+BASgB,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,YAAY,IAAI,IAAI,MAAM;+BACpD,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,YAAY,IAAI,IAAI,MAAM;+BACpD,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,YAAY,IAAI,IAAI,MAAM;;;;KAI9E,CAAA;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,SAAS;QAC7B,IAAI,CAAC,WAAW,GAAG;YACjB,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE;YACnD,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE;gBAC1C,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC9D;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC;oBAC/B,MAAM,EAAE;wBACN,QAAQ,EAAE,IAAI;qBACf;oBACD,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,GAAG;iBACX;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,aAAa;oBACnB,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC;oBACtC,MAAM,EAAE;wBACN,QAAQ,EAAE,IAAI;qBACf;oBACD,MAAM,EAAE,QAAQ;oBAChB,KAAK,EAAE,GAAG;iBACX;gBACD;oBACE,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC;oBACjC,MAAM,EAAE;wBACN,QAAQ,EAAE,IAAI;qBACf;oBACD,QAAQ,EAAE,IAAI;oBACd,MAAM,EAAE,IAAI;oBACZ,KAAK,EAAE,EAAE;iBACV;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,UAAU;oBAChB,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC;oBACpC,MAAM,EAAE;wBACN,QAAQ,EAAE,IAAI;qBACf;oBACD,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,GAAG;iBACX;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,KAAK;oBACX,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC;oBAC9B,MAAM,EAAE;wBACN,QAAQ,EAAE,IAAI;qBACf;oBACD,QAAQ,EAAE,IAAI;oBACd,MAAM,EAAE,QAAQ;oBAChB,KAAK,EAAE,GAAG;iBACX;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,WAAW;oBACjB,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC;oBACpC,MAAM,EAAE;wBACN,QAAQ,EAAE,IAAI;wBACd,OAAO,EAAE;4BACP,SAAS,EAAE,YAAY;yBACxB;qBACF;oBACD,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,GAAG;iBACX;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,SAAS;oBACf,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC;oBACnC,MAAM,EAAE;wBACN,QAAQ,EAAE,IAAI;wBACd,OAAO,EAAE;4BACP,SAAS,EAAE,UAAU;yBACtB;qBACF;oBACD,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,GAAG;iBACX;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC;oBACjC,MAAM,EAAE;wBACN,QAAQ,EAAE,IAAI;qBACf;oBACD,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,GAAG;iBACX;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC;oBAChC,MAAM,EAAE;wBACN,QAAQ,EAAE,IAAI;qBACf;oBACD,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,GAAG;iBACX;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC;oBAChC,MAAM,EAAE;wBACN,QAAQ,EAAE,IAAI;qBACf;oBACD,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,GAAG;iBACX;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,UAAU;oBAChB,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC;oBACpC,MAAM,EAAE;wBACN,QAAQ,EAAE,IAAI;qBACf;oBACD,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,GAAG;iBACX;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;oBAClC,MAAM,EAAE;wBACN,QAAQ,EAAE,IAAI;qBACf;oBACD,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,GAAG;iBACX;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,SAAS;oBACf,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;oBAClC,MAAM,EAAE;wBACN,QAAQ,EAAE,KAAK;qBAChB;oBACD,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,GAAG;iBACX;gBACD;oBACE,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,WAAW;oBACjB,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC;oBACrC,MAAM,EAAE;wBACN,QAAQ,EAAE,KAAK;qBAChB;oBACD,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,GAAG;iBACX;aACF;YACD,IAAI,EAAE;gBACJ,UAAU,EAAE;oBACV,QAAQ,EAAE,IAAI;iBACf;aACF;YACD,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;iBACb;aACF;SACF,CAAA;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAe;QAC1E,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;YAClC,KAAK,EAAE,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCT;YACD,SAAS,EAAE;gBACT,OAAO;gBACP,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;gBAC3B,QAAQ;aACT;SACF,CAAC,CAAA;QAEF,OAAO;YACL,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;YACzC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;SAC7C,CAAA;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE;YACzE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YACxD,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;oBACnC,QAAQ,EAAE,GAAG,CAAA;;;;WAIZ;oBACD,SAAS,EAAE;wBACT,GAAG;qBACJ;iBACF,CAAC,CAAA;gBAEF,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;oBACpB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;oBAClB,MAAM,CAAC;wBACL,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,0BAA0B,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC;qBAChF,CAAC,CAAA;iBACH;aACF;SACF;IACH,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAA;QAClC,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC;YAAE,OAAM;QAEhC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAAE,OAAM;QAChF,IAAI,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;YACjC,QAAQ,EAAE,GAAG,CAAA;;;;;;OAMZ;YACD,SAAS,EAAE;gBACT,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC7B;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,MAAM;YAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IAC1C,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAA;QACrC,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;YAC7B,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBAC5B,IAAI,UAAU,GAAQ,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;gBACtD,MAAM,WAAW,GAAG,KAAK,CAAC,eAAe,CAAA;gBACzC,KAAK,IAAI,GAAG,IAAI,WAAW,EAAE;oBAC3B,UAAU,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,CAAA;iBACzC;gBACD,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,SAAS,CAAA;gBAEnC,OAAO,UAAU,CAAA;YACnB,CAAC,CAAC,CAAA;YAEF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;gBACnC,QAAQ,EAAE,GAAG,CAAA;;;;;;SAMZ;gBACD,SAAS,EAAE;oBACT,OAAO;iBACR;aACF,CAAC,CAAA;YAEF,IAAI,CAAC,QAAQ,CAAC,MAAM;gBAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;SACzC;IACH,CAAC;;AAtZM,yBAAM,GAAG;IACd,eAAe;IACf,iBAAiB;IACjB,GAAG,CAAA;;;;;;;;;;;;KAYF;CACF,CAAA;AAED;IAAC,KAAK,EAAE;;uDAAiB;AACzB;IAAC,KAAK,EAAE;;gDAAoE;AAE5E;IAAC,KAAK,CAAC,UAAU,CAAC;8BAAiB,SAAS;iDAAA;AAC5C;IAAC,KAAK,CAAC,iBAAiB,CAAC;8BAA0B,OAAO;0DAAA;AAvB/C,kBAAkB;IAD9B,aAAa,CAAC,uBAAuB,CAAC;GAC1B,kBAAkB,CAwZ9B;SAxZY,kBAAkB","sourcesContent":["import '@operato/data-grist'\n\nimport gql from 'graphql-tag'\nimport { css, html } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\n\nimport { connect } from 'pwa-helpers/connect-mixin'\n\nimport { client } from '@operato/graphql'\nimport { i18next, localize } from '@operato/i18n'\nimport { notify } from '@operato/layout'\nimport { PageView, store } from '@operato/shell'\nimport { CommonButtonStyles, CommonGristStyles, ScrollbarStyles } from '@operato/styles'\nimport { isMobileDevice } from '@operato/utils'\nimport { ColumnConfig, DataGrist, FetchOption, SortersControl } from '@operato/data-grist'\nimport { OxPopup } from '@operato/popup'\n\n@customElement('data-sensor-list-page')\nexport class DataSensorListPage extends connect(store)(localize(i18next)(PageView)) {\n static styles = [\n ScrollbarStyles,\n CommonGristStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n\n overflow: hidden;\n }\n\n ox-grist {\n overflow-y: auto;\n flex: 1;\n }\n `\n ]\n\n @state() gristConfig: any\n @state() mode: 'CARD' | 'GRID' | 'LIST' = isMobileDevice() ? 'CARD' : 'GRID'\n\n @query('ox-grist') private grist!: DataGrist\n @query('#sorter-control') private sortersControl!: OxPopup\n\n get context() {\n return {\n search: {\n handler: (search: string) => {\n this.grist.searchText = search\n },\n placeholder: i18next.t('title.data-sensor list'),\n value: this.grist.searchText\n },\n filter: {\n handler: () => {\n this.grist.toggleHeadroom()\n }\n },\n help: 'dataset/data-sensor',\n actions: [\n {\n title: i18next.t('button.copy'),\n action: this._copyDataSensor.bind(this),\n ...CommonButtonStyles.copy\n },\n {\n title: i18next.t('button.save'),\n action: this._updateDataSensor.bind(this),\n ...CommonButtonStyles.save\n },\n {\n title: i18next.t('button.delete'),\n action: this._deleteDataSensor.bind(this),\n ...CommonButtonStyles.delete\n }\n ]\n }\n }\n\n render() {\n const mode = this.mode || (isMobileDevice() ? 'LIST' : 'GRID')\n\n return html`\n <ox-grist\n .mode=${mode}\n .config=${this.gristConfig}\n .fetchHandler=${this.fetchHandler.bind(this)}\n ?url-params-sensitive=${this.active}\n >\n <div slot=\"headroom\">\n <div id=\"filters\">\n <ox-filters-form autofocus without-search></ox-filters-form>\n </div>\n\n <div id=\"sorters\">\n Sort\n <mwc-icon\n @click=${e => {\n const target = e.currentTarget\n this.sortersControl.open({\n right: 0,\n top: target.offsetTop + target.offsetHeight\n })\n }}\n >expand_more</mwc-icon\n >\n <ox-popup id=\"sorter-control\">\n <ox-sorters-control> </ox-sorters-control>\n </ox-popup>\n </div>\n\n <div id=\"modes\">\n <mwc-icon @click=${() => (this.mode = 'GRID')} ?active=${mode == 'GRID'}>grid_on</mwc-icon>\n <mwc-icon @click=${() => (this.mode = 'LIST')} ?active=${mode == 'LIST'}>format_list_bulleted</mwc-icon>\n <mwc-icon @click=${() => (this.mode = 'CARD')} ?active=${mode == 'CARD'}>apps</mwc-icon>\n </div>\n </div>\n </ox-grist>\n `\n }\n\n async pageInitialized(lifecycle) {\n this.gristConfig = {\n list: { fields: ['name', 'description', 'active'] },\n columns: [\n { type: 'gutter', gutterName: 'sequence' },\n { type: 'gutter', gutterName: 'row-selector', multiple: true },\n {\n type: 'string',\n name: 'name',\n label: true,\n header: i18next.t('field.name'),\n record: {\n editable: true\n },\n filter: 'search',\n sortable: true,\n width: 150\n },\n {\n type: 'string',\n name: 'description',\n label: true,\n header: i18next.t('field.description'),\n record: {\n editable: true\n },\n filter: 'search',\n width: 200\n },\n {\n type: 'checkbox',\n name: 'active',\n label: true,\n header: i18next.t('field.active'),\n record: {\n editable: true\n },\n sortable: true,\n filter: true,\n width: 60\n },\n {\n type: 'string',\n name: 'deviceId',\n label: true,\n header: i18next.t('field.device-id'),\n record: {\n editable: true\n },\n filter: 'search',\n sortable: true,\n width: 150\n },\n {\n type: 'string',\n name: 'tag',\n label: true,\n header: i18next.t('field.tag'),\n record: {\n editable: true\n },\n sortable: true,\n filter: 'search',\n width: 150\n },\n {\n type: 'object',\n name: 'appliance',\n header: i18next.t('field.appliance'),\n record: {\n editable: true,\n options: {\n queryName: 'appliances'\n }\n },\n sortable: true,\n width: 120\n },\n {\n type: 'object',\n name: 'dataSet',\n header: i18next.t('field.data-set'),\n record: {\n editable: true,\n options: {\n queryName: 'dataSets'\n }\n },\n sortable: true,\n width: 120\n },\n {\n type: 'string',\n name: 'refBy',\n label: true,\n header: i18next.t('field.ref-by'),\n record: {\n editable: true\n },\n sortable: true,\n width: 150\n },\n {\n type: 'string',\n name: 'model',\n label: true,\n header: i18next.t('field.model'),\n record: {\n editable: true\n },\n sortable: true,\n width: 150\n },\n {\n type: 'string',\n name: 'brand',\n label: true,\n header: i18next.t('field.brand'),\n record: {\n editable: true\n },\n sortable: true,\n width: 150\n },\n {\n type: 'string',\n name: 'serialNo',\n label: true,\n header: i18next.t('field.serial-no'),\n record: {\n editable: true\n },\n sortable: true,\n width: 150\n },\n {\n type: 'string',\n name: 'netmask',\n label: true,\n header: i18next.t('field.netmask'),\n record: {\n editable: true\n },\n sortable: true,\n width: 150\n },\n {\n type: 'object',\n name: 'updater',\n header: i18next.t('field.updater'),\n record: {\n editable: false\n },\n sortable: true,\n width: 120\n },\n {\n type: 'datetime',\n name: 'updatedAt',\n header: i18next.t('field.updated_at'),\n record: {\n editable: false\n },\n sortable: true,\n width: 180\n }\n ],\n rows: {\n selectable: {\n multiple: true\n }\n },\n sorters: [\n {\n name: 'name'\n }\n ]\n }\n }\n\n async fetchHandler({ page, limit, sortings = [], filters = [] }: FetchOption) {\n const response = await client.query({\n query: gql`\n query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {\n responses: dataSensors(filters: $filters, pagination: $pagination, sortings: $sortings) {\n items {\n id\n name\n description\n active\n deviceId\n tag\n appliance {\n id\n name\n description\n }\n dataSet {\n id\n name\n description\n }\n refBy\n brand\n model\n serialNo\n netmask\n updater {\n id\n name\n }\n updatedAt\n }\n total\n }\n }\n `,\n variables: {\n filters,\n pagination: { page, limit },\n sortings\n }\n })\n\n return {\n total: response.data.responses.total || 0,\n records: response.data.responses.items || []\n }\n }\n\n async _deleteDataSensor() {\n if (confirm(i18next.t('text.sure_to_x', { x: i18next.t('text.delete') }))) {\n const ids = this.grist.selected.map(record => record.id)\n if (ids && ids.length > 0) {\n const response = await client.mutate({\n mutation: gql`\n mutation ($ids: [String!]!) {\n deleteDataSensors(ids: $ids)\n }\n `,\n variables: {\n ids\n }\n })\n\n if (!response.errors) {\n this.grist.fetch()\n notify({\n message: i18next.t('text.info_x_successfully', { x: i18next.t('text.delete') })\n })\n }\n }\n }\n }\n\n async _copyDataSensor() {\n var selected = this.grist.selected\n if (selected.length == 0) return\n\n if (!confirm(i18next.t('text.sure_to_x', { x: i18next.t('text.copy') }))) return\n var response = await client.mutate({\n mutation: gql`\n mutation ($ids: [String!]!) {\n copyDataSensors(ids: $ids) {\n id\n }\n }\n `,\n variables: {\n ids: selected.map(r => r.id)\n }\n })\n\n if (!response.errors) this.grist.fetch()\n }\n\n async _updateDataSensor() {\n let patches = this.grist.dirtyRecords\n if (patches && patches.length) {\n patches = patches.map(patch => {\n let patchField: any = patch.id ? { id: patch.id } : {}\n const dirtyFields = patch.__dirtyfields__\n for (let key in dirtyFields) {\n patchField[key] = dirtyFields[key].after\n }\n patchField.cuFlag = patch.__dirty__\n\n return patchField\n })\n\n const response = await client.mutate({\n mutation: gql`\n mutation ($patches: [DataSensorPatch!]!) {\n updateMultipleDataSensor(patches: $patches) {\n name\n }\n }\n `,\n variables: {\n patches\n }\n })\n\n if (!response.errors) this.grist.fetch()\n }\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ export {};