@things-factory/dataset 5.0.0-alpha.12 → 5.0.0-alpha.15
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.
- package/client/bootstrap.js +3 -3
- package/client/pages/data-entry-form.js +14 -5
- package/client/pages/data-ooc.js +418 -0
- package/client/pages/data-sample.js +94 -47
- package/client/pages/data-sensor.js +1 -8
- package/client/pages/data-set.js +72 -10
- package/client/route.js +4 -0
- package/dist-server/controllers/data-use-case.js +57 -0
- package/dist-server/controllers/data-use-case.js.map +1 -0
- package/dist-server/controllers/index.js +17 -0
- package/dist-server/controllers/index.js.map +1 -1
- package/dist-server/index.js +1 -0
- package/dist-server/index.js.map +1 -1
- package/dist-server/service/data-item/data-item-type.js +6 -6
- package/dist-server/service/data-item/data-item-type.js.map +1 -1
- package/dist-server/service/data-item/data-item.js +1 -1
- package/dist-server/service/data-item/data-item.js.map +1 -1
- package/dist-server/service/data-ooc/data-ooc-mutation.js +130 -0
- package/dist-server/service/data-ooc/data-ooc-mutation.js.map +1 -0
- package/dist-server/service/data-ooc/data-ooc-query.js +115 -0
- package/dist-server/service/data-ooc/data-ooc-query.js.map +1 -0
- package/dist-server/service/data-ooc/data-ooc-type.js +99 -0
- package/dist-server/service/data-ooc/data-ooc-type.js.map +1 -0
- package/dist-server/service/data-ooc/data-ooc.js +218 -0
- package/dist-server/service/data-ooc/data-ooc.js.map +1 -0
- package/dist-server/service/data-ooc/index.js +9 -0
- package/dist-server/service/data-ooc/index.js.map +1 -0
- package/dist-server/service/data-sample/data-sample-mutation.js +31 -89
- package/dist-server/service/data-sample/data-sample-mutation.js.map +1 -1
- package/dist-server/service/data-sample/data-sample-type.js +5 -43
- package/dist-server/service/data-sample/data-sample-type.js.map +1 -1
- package/dist-server/service/data-sample/data-sample.js +17 -3
- package/dist-server/service/data-sample/data-sample.js.map +1 -1
- package/dist-server/service/data-set/data-set-mutation.js +1 -2
- package/dist-server/service/data-set/data-set-mutation.js.map +1 -1
- package/dist-server/service/data-set/data-set-query.js +12 -0
- package/dist-server/service/data-set/data-set-query.js.map +1 -1
- package/dist-server/service/data-set/data-set-type.js +19 -3
- package/dist-server/service/data-set/data-set-type.js.map +1 -1
- package/dist-server/service/data-set/data-set.js +22 -10
- package/dist-server/service/data-set/data-set.js.map +1 -1
- package/dist-server/service/index.js +6 -2
- package/dist-server/service/index.js.map +1 -1
- package/package.json +15 -14
- package/server/controllers/data-use-case.ts +85 -0
- package/server/controllers/index.ts +1 -0
- package/server/index.ts +1 -0
- package/server/service/data-item/data-item-type.ts +3 -4
- package/server/service/data-item/data-item.ts +1 -1
- package/server/service/data-ooc/data-ooc-mutation.ts +117 -0
- package/server/service/data-ooc/data-ooc-query.ts +63 -0
- package/server/service/data-ooc/data-ooc-type.ts +62 -0
- package/server/service/data-ooc/data-ooc.ts +188 -0
- package/server/service/data-ooc/index.ts +6 -0
- package/server/service/data-sample/data-sample-mutation.ts +35 -97
- package/server/service/data-sample/data-sample-type.ts +3 -31
- package/server/service/data-sample/data-sample.ts +19 -3
- package/server/service/data-set/data-set-mutation.ts +1 -4
- package/server/service/data-set/data-set-query.ts +8 -1
- package/server/service/data-set/data-set-type.ts +15 -4
- package/server/service/data-set/data-set.ts +17 -7
- package/server/service/index.ts +6 -2
- package/things-factory.config.js +4 -0
- package/translations/en.json +13 -2
- package/translations/ko.json +13 -2
- package/translations/ms.json +13 -2
- package/translations/zh.json +13 -2
@@ -1,10 +1,10 @@
|
|
1
1
|
import '@operato/data-grist'
|
2
2
|
|
3
|
-
import { CommonButtonStyles, ScrollbarStyles } from '@operato/styles'
|
4
3
|
import { PageView, store } from '@operato/shell'
|
5
4
|
import { css, html } from 'lit'
|
6
5
|
import { i18next, localize } from '@operato/i18n'
|
7
6
|
|
7
|
+
import { ScrollbarStyles } from '@operato/styles'
|
8
8
|
import { client } from '@operato/graphql'
|
9
9
|
import { connect } from 'pwa-helpers/connect-mixin'
|
10
10
|
import gql from 'graphql-tag'
|
@@ -54,13 +54,11 @@ export class DataSample extends connect(store)(localize(i18next)(PageView)) {
|
|
54
54
|
return {
|
55
55
|
title: i18next.t('title.data-sample list'),
|
56
56
|
help: 'integration/ui/data-sample',
|
57
|
-
actions: [
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
}
|
63
|
-
]
|
57
|
+
actions: [],
|
58
|
+
exportable: {
|
59
|
+
name: i18next.t('title.data-sample list'),
|
60
|
+
data: this._exportableData.bind(this)
|
61
|
+
}
|
64
62
|
}
|
65
63
|
}
|
66
64
|
|
@@ -117,11 +115,12 @@ export class DataSample extends connect(store)(localize(i18next)(PageView)) {
|
|
117
115
|
label: true,
|
118
116
|
header: i18next.t('field.name'),
|
119
117
|
record: {
|
120
|
-
editable:
|
118
|
+
editable: false
|
121
119
|
},
|
122
120
|
filter: 'search',
|
123
121
|
sortable: true,
|
124
|
-
width: 120
|
122
|
+
width: 120,
|
123
|
+
imex: true
|
125
124
|
},
|
126
125
|
{
|
127
126
|
type: 'string',
|
@@ -129,20 +128,22 @@ export class DataSample extends connect(store)(localize(i18next)(PageView)) {
|
|
129
128
|
label: true,
|
130
129
|
header: i18next.t('field.description'),
|
131
130
|
record: {
|
132
|
-
editable:
|
131
|
+
editable: false
|
133
132
|
},
|
134
133
|
filter: 'search',
|
135
|
-
width: 150
|
134
|
+
width: 150,
|
135
|
+
imex: true
|
136
136
|
},
|
137
137
|
{
|
138
138
|
type: 'resource-object',
|
139
139
|
name: 'dataSet',
|
140
|
-
header: i18next.t('field.
|
140
|
+
header: i18next.t('field.data-set'),
|
141
141
|
record: {
|
142
142
|
editable: false
|
143
143
|
},
|
144
144
|
sortable: true,
|
145
|
-
width: 120
|
145
|
+
width: 120,
|
146
|
+
imex: true
|
146
147
|
},
|
147
148
|
{
|
148
149
|
type: 'json5',
|
@@ -151,7 +152,26 @@ export class DataSample extends connect(store)(localize(i18next)(PageView)) {
|
|
151
152
|
record: {
|
152
153
|
editable: false
|
153
154
|
},
|
154
|
-
width: 200
|
155
|
+
width: 200,
|
156
|
+
imex: true
|
157
|
+
},
|
158
|
+
{
|
159
|
+
type: 'checkbox',
|
160
|
+
name: 'ooc',
|
161
|
+
header: i18next.t('field.ooc'),
|
162
|
+
record: {
|
163
|
+
editable: false
|
164
|
+
},
|
165
|
+
width: 30
|
166
|
+
},
|
167
|
+
{
|
168
|
+
type: 'checkbox',
|
169
|
+
name: 'oos',
|
170
|
+
header: i18next.t('field.oos'),
|
171
|
+
record: {
|
172
|
+
editable: false
|
173
|
+
},
|
174
|
+
width: 30
|
155
175
|
},
|
156
176
|
{
|
157
177
|
type: 'json5',
|
@@ -160,7 +180,8 @@ export class DataSample extends connect(store)(localize(i18next)(PageView)) {
|
|
160
180
|
record: {
|
161
181
|
editable: false
|
162
182
|
},
|
163
|
-
width: 200
|
183
|
+
width: 200,
|
184
|
+
imex: true
|
164
185
|
},
|
165
186
|
{
|
166
187
|
type: 'json5',
|
@@ -178,39 +199,56 @@ export class DataSample extends connect(store)(localize(i18next)(PageView)) {
|
|
178
199
|
record: {
|
179
200
|
editable: false
|
180
201
|
},
|
181
|
-
width: 200
|
202
|
+
width: 200,
|
203
|
+
imex: true
|
182
204
|
},
|
183
205
|
{
|
184
206
|
type: 'resource-object',
|
185
207
|
name: 'updater',
|
186
208
|
header: i18next.t('field.updater'),
|
187
209
|
sortable: true,
|
188
|
-
width: 120
|
210
|
+
width: 120,
|
211
|
+
imex: true
|
189
212
|
},
|
190
213
|
{
|
191
214
|
type: 'datetime',
|
192
215
|
name: 'updatedAt',
|
193
216
|
header: i18next.t('field.updated_at'),
|
194
217
|
sortable: true,
|
195
|
-
width: 180
|
218
|
+
width: 180,
|
219
|
+
imex: true
|
196
220
|
},
|
197
221
|
{
|
198
222
|
type: 'datetime',
|
199
223
|
name: 'collectedAt',
|
200
224
|
header: i18next.t('field.collected_at'),
|
201
225
|
sortable: true,
|
202
|
-
width: 180
|
226
|
+
width: 180,
|
227
|
+
imex: true
|
203
228
|
}
|
204
229
|
],
|
205
230
|
rows: {
|
206
231
|
appendable: false,
|
207
232
|
selectable: {
|
208
233
|
multiple: true
|
234
|
+
},
|
235
|
+
classifier: function (record, rowIndex) {
|
236
|
+
var emphasized
|
237
|
+
if (record['oos']) {
|
238
|
+
emphasized = ['red']
|
239
|
+
} else if (record['ooc']) {
|
240
|
+
emphasized = 'orange'
|
241
|
+
}
|
242
|
+
|
243
|
+
return {
|
244
|
+
emphasized
|
245
|
+
}
|
209
246
|
}
|
210
247
|
},
|
211
248
|
sorters: [
|
212
249
|
{
|
213
|
-
name: '
|
250
|
+
name: 'updatedAt',
|
251
|
+
desc: true
|
214
252
|
}
|
215
253
|
]
|
216
254
|
}
|
@@ -247,6 +285,8 @@ export class DataSample extends connect(store)(localize(i18next)(PageView)) {
|
|
247
285
|
partitionKeys
|
248
286
|
data
|
249
287
|
spec
|
288
|
+
ooc
|
289
|
+
oos
|
250
290
|
updater {
|
251
291
|
id
|
252
292
|
name
|
@@ -271,36 +311,43 @@ export class DataSample extends connect(store)(localize(i18next)(PageView)) {
|
|
271
311
|
}
|
272
312
|
}
|
273
313
|
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
314
|
+
_exportableData() {
|
315
|
+
let records = []
|
316
|
+
if (this.grist.selected && this.grist.selected.length > 0) {
|
317
|
+
records = this.grist.selected
|
318
|
+
} else {
|
319
|
+
records = this.grist.data.records
|
320
|
+
}
|
321
|
+
|
322
|
+
var headerSetting = this.grist.compiledConfig.columns
|
323
|
+
.filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
|
324
|
+
.map(column => {
|
325
|
+
return column.imex === true
|
326
|
+
? {
|
327
|
+
header: column.header.renderer(),
|
328
|
+
key: column.name,
|
329
|
+
width: column.width,
|
330
|
+
type: column.type
|
282
331
|
}
|
283
|
-
|
284
|
-
|
285
|
-
ids
|
286
|
-
}
|
287
|
-
})
|
332
|
+
: column.imex
|
333
|
+
})
|
288
334
|
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
335
|
+
var data = records.map(item => {
|
336
|
+
return {
|
337
|
+
id: item.id,
|
338
|
+
...this.gristConfig.columns
|
339
|
+
.filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
|
340
|
+
.reduce((record, column) => {
|
341
|
+
const key = column.imex === true ? column.name : column.imex.key
|
342
|
+
record[key] = key
|
343
|
+
.split('.')
|
344
|
+
.reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), item)
|
345
|
+
return record
|
346
|
+
}, {})
|
295
347
|
}
|
296
|
-
}
|
297
|
-
}
|
348
|
+
})
|
298
349
|
|
299
|
-
|
300
|
-
if (this.active && this._currentPopupName && !state.layout.viewparts[this._currentPopupName]) {
|
301
|
-
this.grist.fetch()
|
302
|
-
this._currentPopupName = null
|
303
|
-
}
|
350
|
+
return { header: headerSetting, data: data }
|
304
351
|
}
|
305
352
|
}
|
306
353
|
|
@@ -194,7 +194,7 @@ export class DataSensor extends connect(store)(localize(i18next)(PageView)) {
|
|
194
194
|
{
|
195
195
|
type: 'object',
|
196
196
|
name: 'dataSet',
|
197
|
-
header: i18next.t('field.
|
197
|
+
header: i18next.t('field.data-set'),
|
198
198
|
record: {
|
199
199
|
editable: true,
|
200
200
|
options: {
|
@@ -382,13 +382,6 @@ export class DataSensor extends connect(store)(localize(i18next)(PageView)) {
|
|
382
382
|
}
|
383
383
|
}
|
384
384
|
|
385
|
-
async stateChanged(state) {
|
386
|
-
if (this.active && this._currentPopupName && !state.layout.viewparts[this._currentPopupName]) {
|
387
|
-
this.grist.fetch()
|
388
|
-
this._currentPopupName = null
|
389
|
-
}
|
390
|
-
}
|
391
|
-
|
392
385
|
async _copyDataSensor() {
|
393
386
|
var selected = this.grist.selected
|
394
387
|
if (selected.length == 0) return
|
package/client/pages/data-set.js
CHANGED
@@ -9,6 +9,7 @@ import { css, html } from 'lit'
|
|
9
9
|
import { i18next, localize } from '@operato/i18n'
|
10
10
|
import { notify, openPopup } from '@operato/layout'
|
11
11
|
|
12
|
+
import { OxDataItemSpec } from '@operato/dataset'
|
12
13
|
import { client } from '@operato/graphql'
|
13
14
|
import { connect } from 'pwa-helpers/connect-mixin'
|
14
15
|
import gql from 'graphql-tag'
|
@@ -139,12 +140,15 @@ export class DataSet extends connect(store)(localize(i18next)(PageView)) {
|
|
139
140
|
handlers: {
|
140
141
|
click: (columns, data, column, record, rowIndex) => {
|
141
142
|
if (!record.id) return
|
142
|
-
openPopup(html` <data-item-list .dataSet=${record}></data-item-list> `, {
|
143
|
+
const popup = openPopup(html` <data-item-list .dataSet=${record}></data-item-list> `, {
|
143
144
|
backdrop: true,
|
144
145
|
help: 'data-set/ui/data-item-list',
|
145
146
|
size: 'large',
|
146
147
|
title: i18next.t('title.data-item list')
|
147
148
|
})
|
149
|
+
popup.onclosed = () => {
|
150
|
+
this.grist.fetch()
|
151
|
+
}
|
148
152
|
}
|
149
153
|
}
|
150
154
|
},
|
@@ -199,6 +203,47 @@ export class DataSet extends connect(store)(localize(i18next)(PageView)) {
|
|
199
203
|
sortable: true,
|
200
204
|
width: 60
|
201
205
|
},
|
206
|
+
{
|
207
|
+
type: 'select',
|
208
|
+
name: 'type',
|
209
|
+
label: true,
|
210
|
+
header: i18next.t('field.type'),
|
211
|
+
record: {
|
212
|
+
editable: true,
|
213
|
+
options: [
|
214
|
+
{},
|
215
|
+
{
|
216
|
+
display: 'Manually Collected',
|
217
|
+
value: 'manual'
|
218
|
+
},
|
219
|
+
{
|
220
|
+
display: 'Automatically Collected',
|
221
|
+
value: 'automatic'
|
222
|
+
}
|
223
|
+
]
|
224
|
+
},
|
225
|
+
sortable: true,
|
226
|
+
width: 60
|
227
|
+
},
|
228
|
+
{
|
229
|
+
type: 'select',
|
230
|
+
name: 'useCase',
|
231
|
+
label: true,
|
232
|
+
header: i18next.t('field.use-case'),
|
233
|
+
record: {
|
234
|
+
editable: true,
|
235
|
+
options: () => {
|
236
|
+
return ['', ...OxDataItemSpec.getProviderNames()].map(name => {
|
237
|
+
return {
|
238
|
+
display: name,
|
239
|
+
value: name
|
240
|
+
}
|
241
|
+
})
|
242
|
+
}
|
243
|
+
},
|
244
|
+
sortable: true,
|
245
|
+
width: 80
|
246
|
+
},
|
202
247
|
{
|
203
248
|
type: 'partition-keys',
|
204
249
|
name: 'partitionKeys',
|
@@ -235,6 +280,19 @@ export class DataSet extends connect(store)(localize(i18next)(PageView)) {
|
|
235
280
|
},
|
236
281
|
width: 120
|
237
282
|
},
|
283
|
+
{
|
284
|
+
type: 'resource-object',
|
285
|
+
name: 'supervisoryRole',
|
286
|
+
header: i18next.t('field.supervisory-role'),
|
287
|
+
record: {
|
288
|
+
editable: true,
|
289
|
+
options: {
|
290
|
+
queryName: 'roles'
|
291
|
+
}
|
292
|
+
},
|
293
|
+
sortable: true,
|
294
|
+
width: 120
|
295
|
+
},
|
238
296
|
{
|
239
297
|
type: 'resource-object',
|
240
298
|
name: 'updater',
|
@@ -295,8 +353,14 @@ export class DataSet extends connect(store)(localize(i18next)(PageView)) {
|
|
295
353
|
partitionKeys
|
296
354
|
slugger
|
297
355
|
active
|
356
|
+
type
|
357
|
+
useCase
|
298
358
|
schedule
|
299
359
|
timezone
|
360
|
+
supervisoryRole {
|
361
|
+
id
|
362
|
+
name
|
363
|
+
}
|
300
364
|
updater {
|
301
365
|
id
|
302
366
|
name
|
@@ -309,6 +373,7 @@ export class DataSet extends connect(store)(localize(i18next)(PageView)) {
|
|
309
373
|
active
|
310
374
|
tag
|
311
375
|
type
|
376
|
+
unit
|
312
377
|
options
|
313
378
|
quota
|
314
379
|
spec
|
@@ -356,13 +421,6 @@ export class DataSet extends connect(store)(localize(i18next)(PageView)) {
|
|
356
421
|
}
|
357
422
|
}
|
358
423
|
|
359
|
-
async stateChanged(state) {
|
360
|
-
if (this.active && this._currentPopupName && !state.layout.viewparts[this._currentPopupName]) {
|
361
|
-
this.grist.fetch()
|
362
|
-
this._currentPopupName = null
|
363
|
-
}
|
364
|
-
}
|
365
|
-
|
366
424
|
async _copyDataSet() {
|
367
425
|
var selected = this.grist.selected
|
368
426
|
if (selected.length == 0) return
|
@@ -381,7 +439,9 @@ export class DataSet extends connect(store)(localize(i18next)(PageView)) {
|
|
381
439
|
}
|
382
440
|
})
|
383
441
|
|
384
|
-
if (!response.errors)
|
442
|
+
if (!response.errors) {
|
443
|
+
this.grist.fetch()
|
444
|
+
}
|
385
445
|
}
|
386
446
|
|
387
447
|
async _updateDataSet() {
|
@@ -412,7 +472,9 @@ export class DataSet extends connect(store)(localize(i18next)(PageView)) {
|
|
412
472
|
}
|
413
473
|
})
|
414
474
|
|
415
|
-
if (!response.errors)
|
475
|
+
if (!response.errors) {
|
476
|
+
this.grist.fetch()
|
477
|
+
}
|
416
478
|
}
|
417
479
|
}
|
418
480
|
|
package/client/route.js
CHANGED
@@ -0,0 +1,57 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.DataUseCase = void 0;
|
4
|
+
class DataUseCase {
|
5
|
+
static registerUseCase(name, provider) {
|
6
|
+
DataUseCase.registry[name] = provider;
|
7
|
+
}
|
8
|
+
static getUseCaseNames() {
|
9
|
+
return Object.keys(DataUseCase.registry);
|
10
|
+
}
|
11
|
+
static getUseCase(name) {
|
12
|
+
return DataUseCase.registry[name];
|
13
|
+
}
|
14
|
+
static evaluate(dataSet, dataItems, data) {
|
15
|
+
var _a;
|
16
|
+
var ooc = false;
|
17
|
+
var oos = false;
|
18
|
+
if (!dataSet.useCase) {
|
19
|
+
return { ooc, oos };
|
20
|
+
}
|
21
|
+
const useCaseNames = dataSet.useCase.split(',').map(useCaseName => useCaseName.trim());
|
22
|
+
const useCases = useCaseNames.map(useCaseName => DataUseCase.getUseCase(useCaseName)).filter(useCase => !!useCase);
|
23
|
+
for (let i = 0; i < dataItems.length; i++) {
|
24
|
+
const dataItem = dataItems[i];
|
25
|
+
const { active, tag } = dataItem;
|
26
|
+
if (!active || !tag) {
|
27
|
+
continue;
|
28
|
+
}
|
29
|
+
let values = data[tag];
|
30
|
+
if (typeof values === 'undefined') {
|
31
|
+
continue; // TODO what if in case no value ?
|
32
|
+
}
|
33
|
+
if (!(values instanceof Array)) {
|
34
|
+
values = [values];
|
35
|
+
}
|
36
|
+
for (let j = 0; j < useCases.length; j++) {
|
37
|
+
const useCase = useCases[j];
|
38
|
+
const specs = (_a = dataItem.spec) === null || _a === void 0 ? void 0 : _a[dataSet.useCase];
|
39
|
+
if (!specs) {
|
40
|
+
continue;
|
41
|
+
}
|
42
|
+
const result = useCase.evaluate(specs, values);
|
43
|
+
if (result) {
|
44
|
+
ooc || (ooc = result.ooc);
|
45
|
+
oos || (oos = result.oos);
|
46
|
+
}
|
47
|
+
// if (ooc && oos) {
|
48
|
+
// return { ooc, oos }
|
49
|
+
// }
|
50
|
+
}
|
51
|
+
}
|
52
|
+
return { ooc, oos };
|
53
|
+
}
|
54
|
+
}
|
55
|
+
exports.DataUseCase = DataUseCase;
|
56
|
+
DataUseCase.registry = {};
|
57
|
+
//# sourceMappingURL=data-use-case.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"data-use-case.js","sourceRoot":"","sources":["../../server/controllers/data-use-case.ts"],"names":[],"mappings":";;;AAiBA,MAAsB,WAAW;IAGxB,MAAM,CAAC,eAAe,CAAC,IAAY,EAAE,QAAqB;QAC/D,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAA;IACvC,CAAC;IAEM,MAAM,CAAC,eAAe;QAC3B,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;IAC1C,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,IAAY;QACnC,OAAO,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IACnC,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,OAAgB,EAAE,SAAqB,EAAE,IAAS;;QACvE,IAAI,GAAG,GAAG,KAAK,CAAA;QACf,IAAI,GAAG,GAAG,KAAK,CAAA;QAEf,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACpB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;SACpB;QAED,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAA;QACtF,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QAElH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;YAC7B,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAA;YAChC,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE;gBACnB,SAAQ;aACT;YAED,IAAI,MAAM,GAAgB,IAAI,CAAC,GAAG,CAAC,CAAA;YACnC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;gBACjC,SAAQ,CAAC,kCAAkC;aAC5C;YAED,IAAI,CAAC,CAAC,MAAM,YAAY,KAAK,CAAC,EAAE;gBAC9B,MAAM,GAAG,CAAC,MAAM,CAAC,CAAA;aAClB;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACxC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;gBAE3B,MAAM,KAAK,GAAG,MAAA,QAAQ,CAAC,IAAI,0CAAG,OAAO,CAAC,OAAO,CAAC,CAAA;gBAC9C,IAAI,CAAC,KAAK,EAAE;oBACV,SAAQ;iBACT;gBAED,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;gBAE9C,IAAI,MAAM,EAAE;oBACV,GAAG,KAAH,GAAG,GAAK,MAAM,CAAC,GAAG,EAAA;oBAClB,GAAG,KAAH,GAAG,GAAK,MAAM,CAAC,GAAG,EAAA;iBACnB;gBAED,oBAAoB;gBACpB,wBAAwB;gBACxB,IAAI;aACL;SACF;QAED,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;IACrB,CAAC;;AAhEH,kCAmEC;AAlEQ,oBAAQ,GAAoC,EAAE,CAAA"}
|
@@ -1 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
|
+
};
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
+
__exportStar(require("./data-use-case"), exports);
|
1
18
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/controllers/index.ts"],"names":[],"mappings":""}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/controllers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAA+B"}
|
package/dist-server/index.js
CHANGED
@@ -15,6 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
15
15
|
};
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
17
17
|
require("./routes");
|
18
|
+
__exportStar(require("./controllers"), exports);
|
18
19
|
__exportStar(require("./migrations"), exports);
|
19
20
|
__exportStar(require("./middlewares"), exports);
|
20
21
|
__exportStar(require("./service"), exports);
|
package/dist-server/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../server/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oBAAiB;AAEjB,+CAA4B;AAC5B,gDAA6B;AAC7B,4CAAyB;AAEzB,wEAAqD"}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../server/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oBAAiB;AAEjB,gDAA6B;AAC7B,+CAA4B;AAC5B,gDAA6B;AAC7B,4CAAyB;AAEzB,wEAAqD"}
|
@@ -8,7 +8,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
8
8
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
9
9
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
10
10
|
};
|
11
|
-
var _a, _b;
|
11
|
+
var _a, _b, _c;
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
13
13
|
exports.DataItemList = exports.DataItemPatch = void 0;
|
14
14
|
const data_item_1 = require("./data-item");
|
@@ -21,9 +21,9 @@ __decorate([
|
|
21
21
|
__metadata("design:type", String)
|
22
22
|
], DataItemPatch.prototype, "id", void 0);
|
23
23
|
__decorate([
|
24
|
-
(0, type_graphql_1.Field)({ nullable: true }),
|
25
|
-
__metadata("design:type",
|
26
|
-
], DataItemPatch.prototype, "
|
24
|
+
(0, type_graphql_1.Field)(type => shell_1.ObjectRef, { nullable: true }),
|
25
|
+
__metadata("design:type", typeof (_a = typeof shell_1.ObjectRef !== "undefined" && shell_1.ObjectRef) === "function" ? _a : Object)
|
26
|
+
], DataItemPatch.prototype, "dataSet", void 0);
|
27
27
|
__decorate([
|
28
28
|
(0, type_graphql_1.Field)({ nullable: true }),
|
29
29
|
__metadata("design:type", String)
|
@@ -46,7 +46,7 @@ __decorate([
|
|
46
46
|
], DataItemPatch.prototype, "type", void 0);
|
47
47
|
__decorate([
|
48
48
|
(0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true }),
|
49
|
-
__metadata("design:type", typeof (
|
49
|
+
__metadata("design:type", typeof (_b = typeof shell_1.ScalarObject !== "undefined" && shell_1.ScalarObject) === "function" ? _b : Object)
|
50
50
|
], DataItemPatch.prototype, "options", void 0);
|
51
51
|
__decorate([
|
52
52
|
(0, type_graphql_1.Field)({ nullable: true }),
|
@@ -62,7 +62,7 @@ __decorate([
|
|
62
62
|
], DataItemPatch.prototype, "active", void 0);
|
63
63
|
__decorate([
|
64
64
|
(0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true }),
|
65
|
-
__metadata("design:type", typeof (
|
65
|
+
__metadata("design:type", typeof (_c = typeof shell_1.ScalarObject !== "undefined" && shell_1.ScalarObject) === "function" ? _c : Object)
|
66
66
|
], DataItemPatch.prototype, "spec", void 0);
|
67
67
|
__decorate([
|
68
68
|
(0, type_graphql_1.Field)({ nullable: true }),
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"data-item-type.js","sourceRoot":"","sources":["../../../server/service/data-item/data-item-type.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,+CAAoE;
|
1
|
+
{"version":3,"file":"data-item-type.js","sourceRoot":"","sources":["../../../server/service/data-item/data-item-type.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,+CAAoE;AACpE,iDAA+D;AAG/D,IAAa,aAAa,GAA1B,MAAa,aAAa;CAuCzB,CAAA;AArCC;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;yCAC3B;AAGX;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;kDACnC,iBAAS,oBAAT,iBAAS;8CAAA;AAGnB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CACb;AAGb;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;kDACN;AAGpB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACtB;AAGjB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;0CACd;AAGZ;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,wBAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CAC7B;AAGnB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,oBAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;kDACtC,oBAAY,oBAAZ,oBAAY;8CAAA;AAGtB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CACb;AAGb;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;4CACzB;AAGd;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACV;AAGhB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,oBAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;kDACzC,oBAAY,oBAAZ,oBAAY;2CAAA;AAGnB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACX;AAtCJ,aAAa;IADzB,IAAA,wBAAS,GAAE;GACC,aAAa,CAuCzB;AAvCY,sCAAa;AA0C1B,IAAa,YAAY,GAAzB,MAAa,YAAY;CAMxB,CAAA;AAJC;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,oBAAQ,CAAC,CAAC;;2CACT;AAGjB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,CAAC;;2CACN;AALF,YAAY;IADxB,IAAA,yBAAU,GAAE;GACA,YAAY,CAMxB;AANY,oCAAY"}
|
@@ -58,7 +58,7 @@ __decorate([
|
|
58
58
|
], DataItem.prototype, "description", void 0);
|
59
59
|
__decorate([
|
60
60
|
(0, typeorm_1.ManyToOne)(type => data_set_1.DataSet, dataSet => dataSet.dataItems, { onDelete: 'CASCADE' }),
|
61
|
-
(0, type_graphql_1.Field)(type => data_set_1.DataSet, { nullable:
|
61
|
+
(0, type_graphql_1.Field)(type => data_set_1.DataSet, { nullable: false }),
|
62
62
|
__metadata("design:type", data_set_1.DataSet)
|
63
63
|
], DataItem.prototype, "dataSet", void 0);
|
64
64
|
__decorate([
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"data-item.js","sourceRoot":"","sources":["../../../server/service/data-item/data-item.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,qCASgB;AAChB,iDAA4D;AAC5D,+CAA2E;AAE3E,mDAA8C;AAC9C,yDAAgD;AAEhD,IAAY,YAMX;AAND,WAAY,YAAY;IACtB,iCAAiB,CAAA;IACjB,6BAAa,CAAA;IACb,mCAAmB,CAAA;IACnB,iCAAiB,CAAA;IACjB,6BAAa,CAAA;AACf,CAAC,EANW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAMvB;AAED,IAAA,+BAAgB,EAAC,YAAY,EAAE;IAC7B,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,kCAAkC;CAChD,CAAC,CAAA;AAKF,IAAa,QAAQ,GAArB,MAAa,QAAQ;CAgGpB,CAAA;AA7FC;IAFC,IAAA,gCAAsB,EAAC,MAAM,CAAC;IAC9B,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAE,CAAC;;oCACC;AAInB;IAFC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;IACzB,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;kDACjB,cAAM,oBAAN,cAAM;wCAAA;AAGf;IADC,IAAA,oBAAU,EAAC,CAAC,QAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;;0CACnC;AAIjB;IAFC,IAAA,gBAAM,GAAE;IACR,IAAA,oBAAK,GAAE;;sCACI;AAMZ;IAJC,IAAA,gBAAM,EAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACN;AAIpB;IAFC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAO,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACjF,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAO,EAAE,EAAE,QAAQ,EAAE,
|
1
|
+
{"version":3,"file":"data-item.js","sourceRoot":"","sources":["../../../server/service/data-item/data-item.ts"],"names":[],"mappings":"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"}
|