@things-factory/dataset 5.0.0-alpha.12 → 5.0.0-alpha.13
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 +11 -4
- package/client/pages/data-sample.js +59 -14
- package/client/pages/data-sensor.js +0 -7
- package/client/pages/data-set.js +11 -10
- package/dist-server/service/data-sample/data-sample-mutation.js +4 -2
- package/dist-server/service/data-sample/data-sample-mutation.js.map +1 -1
- package/package.json +15 -14
- package/server/service/data-sample/data-sample-mutation.ts +5 -2
- package/translations/en.json +1 -0
- package/translations/ko.json +1 -0
- package/translations/ms.json +1 -0
- package/translations/zh.json +1 -0
package/client/bootstrap.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import {
|
2
|
-
|
2
|
+
OxGristRendererJson5,
|
3
3
|
registerEditor as registerGristEditor,
|
4
4
|
registerRenderer as registerGristRenderer
|
5
5
|
} from '@operato/data-grist'
|
@@ -9,8 +9,8 @@ import { OxGristEditorPartitionKeys } from '@operato/app/grist-editor/ox-grist-e
|
|
9
9
|
|
10
10
|
export default function bootstrap() {
|
11
11
|
registerGristEditor('data-item-spec', OxGristEditorDataItemSpec)
|
12
|
-
registerGristRenderer('data-item-spec',
|
12
|
+
registerGristRenderer('data-item-spec', OxGristRendererJson5)
|
13
13
|
|
14
14
|
registerGristEditor('partition-keys', OxGristEditorPartitionKeys)
|
15
|
-
registerGristRenderer('partition-keys',
|
15
|
+
registerGristRenderer('partition-keys', OxGristRendererJson5)
|
16
16
|
}
|
@@ -1,9 +1,10 @@
|
|
1
|
-
import
|
2
|
-
import { css, html, LitElement } from 'lit'
|
1
|
+
import '@operato/dataset/ox-data-entry-form.js'
|
3
2
|
|
4
|
-
import {
|
3
|
+
import { LitElement, css, html } from 'lit'
|
5
4
|
import { i18next, localize } from '@operato/i18n'
|
6
|
-
|
5
|
+
|
6
|
+
import { client } from '@operato/graphql'
|
7
|
+
import gql from 'graphql-tag'
|
7
8
|
|
8
9
|
class DataEntryForm extends localize(i18next)(LitElement) {
|
9
10
|
static get properties() {
|
@@ -69,6 +70,12 @@ class DataEntryForm extends localize(i18next)(LitElement) {
|
|
69
70
|
dataSample
|
70
71
|
}
|
71
72
|
})
|
73
|
+
|
74
|
+
if (!response.errors) {
|
75
|
+
document.dispatchEvent(
|
76
|
+
new CustomEvent('notify', { detail: { message: i18next.t('text.data sample created successfully') } })
|
77
|
+
)
|
78
|
+
}
|
72
79
|
}
|
73
80
|
}
|
74
81
|
|
@@ -60,7 +60,11 @@ export class DataSample extends connect(store)(localize(i18next)(PageView)) {
|
|
60
60
|
action: this._deleteDataSample.bind(this),
|
61
61
|
...CommonButtonStyles.delete
|
62
62
|
}
|
63
|
-
]
|
63
|
+
],
|
64
|
+
exportable: {
|
65
|
+
name: i18next.t('title.data-sample list'),
|
66
|
+
data: this._exportableData.bind(this)
|
67
|
+
}
|
64
68
|
}
|
65
69
|
}
|
66
70
|
|
@@ -121,7 +125,8 @@ export class DataSample extends connect(store)(localize(i18next)(PageView)) {
|
|
121
125
|
},
|
122
126
|
filter: 'search',
|
123
127
|
sortable: true,
|
124
|
-
width: 120
|
128
|
+
width: 120,
|
129
|
+
imex: true
|
125
130
|
},
|
126
131
|
{
|
127
132
|
type: 'string',
|
@@ -132,7 +137,8 @@ export class DataSample extends connect(store)(localize(i18next)(PageView)) {
|
|
132
137
|
editable: true
|
133
138
|
},
|
134
139
|
filter: 'search',
|
135
|
-
width: 150
|
140
|
+
width: 150,
|
141
|
+
imex: true
|
136
142
|
},
|
137
143
|
{
|
138
144
|
type: 'resource-object',
|
@@ -142,7 +148,8 @@ export class DataSample extends connect(store)(localize(i18next)(PageView)) {
|
|
142
148
|
editable: false
|
143
149
|
},
|
144
150
|
sortable: true,
|
145
|
-
width: 120
|
151
|
+
width: 120,
|
152
|
+
imex: true
|
146
153
|
},
|
147
154
|
{
|
148
155
|
type: 'json5',
|
@@ -151,7 +158,8 @@ export class DataSample extends connect(store)(localize(i18next)(PageView)) {
|
|
151
158
|
record: {
|
152
159
|
editable: false
|
153
160
|
},
|
154
|
-
width: 200
|
161
|
+
width: 200,
|
162
|
+
imex: true
|
155
163
|
},
|
156
164
|
{
|
157
165
|
type: 'json5',
|
@@ -160,7 +168,8 @@ export class DataSample extends connect(store)(localize(i18next)(PageView)) {
|
|
160
168
|
record: {
|
161
169
|
editable: false
|
162
170
|
},
|
163
|
-
width: 200
|
171
|
+
width: 200,
|
172
|
+
imex: true
|
164
173
|
},
|
165
174
|
{
|
166
175
|
type: 'json5',
|
@@ -178,28 +187,32 @@ export class DataSample extends connect(store)(localize(i18next)(PageView)) {
|
|
178
187
|
record: {
|
179
188
|
editable: false
|
180
189
|
},
|
181
|
-
width: 200
|
190
|
+
width: 200,
|
191
|
+
imex: true
|
182
192
|
},
|
183
193
|
{
|
184
194
|
type: 'resource-object',
|
185
195
|
name: 'updater',
|
186
196
|
header: i18next.t('field.updater'),
|
187
197
|
sortable: true,
|
188
|
-
width: 120
|
198
|
+
width: 120,
|
199
|
+
imex: true
|
189
200
|
},
|
190
201
|
{
|
191
202
|
type: 'datetime',
|
192
203
|
name: 'updatedAt',
|
193
204
|
header: i18next.t('field.updated_at'),
|
194
205
|
sortable: true,
|
195
|
-
width: 180
|
206
|
+
width: 180,
|
207
|
+
imex: true
|
196
208
|
},
|
197
209
|
{
|
198
210
|
type: 'datetime',
|
199
211
|
name: 'collectedAt',
|
200
212
|
header: i18next.t('field.collected_at'),
|
201
213
|
sortable: true,
|
202
|
-
width: 180
|
214
|
+
width: 180,
|
215
|
+
imex: true
|
203
216
|
}
|
204
217
|
],
|
205
218
|
rows: {
|
@@ -296,11 +309,43 @@ export class DataSample extends connect(store)(localize(i18next)(PageView)) {
|
|
296
309
|
}
|
297
310
|
}
|
298
311
|
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
312
|
+
_exportableData() {
|
313
|
+
let records = []
|
314
|
+
if (this.grist.selected && this.grist.selected.length > 0) {
|
315
|
+
records = this.grist.selected
|
316
|
+
} else {
|
317
|
+
records = this.grist.data.records
|
303
318
|
}
|
319
|
+
|
320
|
+
var headerSetting = this.grist.compiledConfig.columns
|
321
|
+
.filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
|
322
|
+
.map(column => {
|
323
|
+
return column.imex === true
|
324
|
+
? {
|
325
|
+
header: column.header.renderer(),
|
326
|
+
key: column.name,
|
327
|
+
width: column.width,
|
328
|
+
type: column.type
|
329
|
+
}
|
330
|
+
: column.imex
|
331
|
+
})
|
332
|
+
|
333
|
+
var data = records.map(item => {
|
334
|
+
return {
|
335
|
+
id: item.id,
|
336
|
+
...this.gristConfig.columns
|
337
|
+
.filter(column => column.type !== 'gutter' && column.record !== undefined && column.imex !== undefined)
|
338
|
+
.reduce((record, column) => {
|
339
|
+
const key = column.imex === true ? column.name : column.imex.key
|
340
|
+
record[key] = key
|
341
|
+
.split('.')
|
342
|
+
.reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), item)
|
343
|
+
return record
|
344
|
+
}, {})
|
345
|
+
}
|
346
|
+
})
|
347
|
+
|
348
|
+
return { header: headerSetting, data: data }
|
304
349
|
}
|
305
350
|
}
|
306
351
|
|
@@ -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
@@ -139,12 +139,15 @@ export class DataSet extends connect(store)(localize(i18next)(PageView)) {
|
|
139
139
|
handlers: {
|
140
140
|
click: (columns, data, column, record, rowIndex) => {
|
141
141
|
if (!record.id) return
|
142
|
-
openPopup(html` <data-item-list .dataSet=${record}></data-item-list> `, {
|
142
|
+
const popup = openPopup(html` <data-item-list .dataSet=${record}></data-item-list> `, {
|
143
143
|
backdrop: true,
|
144
144
|
help: 'data-set/ui/data-item-list',
|
145
145
|
size: 'large',
|
146
146
|
title: i18next.t('title.data-item list')
|
147
147
|
})
|
148
|
+
popup.onclosed = () => {
|
149
|
+
this.grist.fetch()
|
150
|
+
}
|
148
151
|
}
|
149
152
|
}
|
150
153
|
},
|
@@ -309,6 +312,7 @@ export class DataSet extends connect(store)(localize(i18next)(PageView)) {
|
|
309
312
|
active
|
310
313
|
tag
|
311
314
|
type
|
315
|
+
unit
|
312
316
|
options
|
313
317
|
quota
|
314
318
|
spec
|
@@ -356,13 +360,6 @@ export class DataSet extends connect(store)(localize(i18next)(PageView)) {
|
|
356
360
|
}
|
357
361
|
}
|
358
362
|
|
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
363
|
async _copyDataSet() {
|
367
364
|
var selected = this.grist.selected
|
368
365
|
if (selected.length == 0) return
|
@@ -381,7 +378,9 @@ export class DataSet extends connect(store)(localize(i18next)(PageView)) {
|
|
381
378
|
}
|
382
379
|
})
|
383
380
|
|
384
|
-
if (!response.errors)
|
381
|
+
if (!response.errors) {
|
382
|
+
this.grist.fetch()
|
383
|
+
}
|
385
384
|
}
|
386
385
|
|
387
386
|
async _updateDataSet() {
|
@@ -412,7 +411,9 @@ export class DataSet extends connect(store)(localize(i18next)(PageView)) {
|
|
412
411
|
}
|
413
412
|
})
|
414
413
|
|
415
|
-
if (!response.errors)
|
414
|
+
if (!response.errors) {
|
415
|
+
this.grist.fetch()
|
416
|
+
}
|
416
417
|
}
|
417
418
|
}
|
418
419
|
|
@@ -35,7 +35,7 @@ const replaceVariables = (keys, dic) => {
|
|
35
35
|
}
|
36
36
|
return keys;
|
37
37
|
};
|
38
|
-
// It is required UTC date for Partitioning File System like AWS S3.
|
38
|
+
// It is required UTC date for Partitioning File System like AWS S3 from Athena.
|
39
39
|
// ex) %YYYY, %MM, %DD
|
40
40
|
const formatDate = (keys, _moment) => {
|
41
41
|
for (const k in keys) {
|
@@ -64,10 +64,12 @@ let DataSampleMutation = class DataSampleMutation {
|
|
64
64
|
spec[dataItem.tag] = Object.assign(Object.assign({}, dataItem.spec), { name: dataItem.name /* do we need ? */ });
|
65
65
|
return spec;
|
66
66
|
}, {});
|
67
|
+
// appending spec to data for reporting and optimizing AWS Athena search
|
68
|
+
dataSample.data = Object.assign(Object.assign({}, dataSample.data), { _spec: JSON.stringify(spec) });
|
67
69
|
var partitionKeys = Object.assign({}, dataSet.partitionKeys);
|
68
70
|
const collectedAt = dataSample.collectedAt || new Date();
|
69
71
|
partitionKeys = formatDate(partitionKeys, (0, moment_1.default)(collectedAt).utc());
|
70
|
-
partitionKeys = replaceVariables(partitionKeys, Object.assign({
|
72
|
+
partitionKeys = replaceVariables(partitionKeys, Object.assign({ domain: domain.subdomain, dataSetId: dataSample.dataSetId }, dataSample.data));
|
71
73
|
return await tx.getRepository(data_sample_1.DataSample).save(Object.assign(Object.assign({ name: dataSet.name, description: dataSet.description }, dataSample), { domain,
|
72
74
|
partitionKeys,
|
73
75
|
spec,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"data-sample-mutation.js","sourceRoot":"","sources":["../../../server/service/data-sample/data-sample-mutation.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,+CAAsE;AACtE,qCAA4B;AAE5B,sDAAiD;AACjD,mDAA8C;AAC9C,+CAA0C;AAC1C,yDAAmE;AAEnE,oDAA2B;AAE3B,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,yDAAyD,CAAC,CAAA;AAEzF,2CAA2C;AAC3C,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;IACrC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QAC3C,OAAO;YACL,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAClB,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACnD,CAAC,CAAC,CAAA;KACL;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,
|
1
|
+
{"version":3,"file":"data-sample-mutation.js","sourceRoot":"","sources":["../../../server/service/data-sample/data-sample-mutation.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@things-factory/dataset",
|
3
|
-
"version": "5.0.0-alpha.
|
3
|
+
"version": "5.0.0-alpha.13",
|
4
4
|
"main": "dist-server/index.js",
|
5
5
|
"browser": "client/index.js",
|
6
6
|
"things-factory": true,
|
@@ -24,18 +24,19 @@
|
|
24
24
|
"migration:create": "node ../../node_modules/typeorm/cli.js migration:create -d ./server/migrations"
|
25
25
|
},
|
26
26
|
"dependencies": {
|
27
|
-
"@operato/app": "1.0.0-alpha.
|
28
|
-
"@operato/data-grist": "1.0.0-alpha.
|
29
|
-
"@operato/dataset": "1.0.0-alpha.
|
30
|
-
"@operato/graphql": "1.0.0-alpha.
|
31
|
-
"@operato/i18n": "1.0.0-alpha.
|
32
|
-
"@operato/layout": "1.0.0-alpha.
|
33
|
-
"@operato/shell": "1.0.0-alpha.
|
34
|
-
"@operato/styles": "1.0.0-alpha.
|
35
|
-
"@operato/utils": "1.0.0-alpha.
|
36
|
-
"@things-factory/auth-base": "^5.0.0-alpha.
|
37
|
-
"@things-factory/env": "^5.0.0-alpha.
|
38
|
-
"@things-factory/shell": "^5.0.0-alpha.
|
27
|
+
"@operato/app": "1.0.0-alpha.33",
|
28
|
+
"@operato/data-grist": "1.0.0-alpha.33",
|
29
|
+
"@operato/dataset": "1.0.0-alpha.33",
|
30
|
+
"@operato/graphql": "1.0.0-alpha.33",
|
31
|
+
"@operato/i18n": "1.0.0-alpha.33",
|
32
|
+
"@operato/layout": "1.0.0-alpha.33",
|
33
|
+
"@operato/shell": "1.0.0-alpha.33",
|
34
|
+
"@operato/styles": "1.0.0-alpha.33",
|
35
|
+
"@operato/utils": "1.0.0-alpha.33",
|
36
|
+
"@things-factory/auth-base": "^5.0.0-alpha.13",
|
37
|
+
"@things-factory/env": "^5.0.0-alpha.13",
|
38
|
+
"@things-factory/shell": "^5.0.0-alpha.13",
|
39
|
+
"moment": "^2.29.1"
|
39
40
|
},
|
40
|
-
"gitHead": "
|
41
|
+
"gitHead": "49704052461599b174959ff494abb9ef1facd887"
|
41
42
|
}
|
@@ -22,7 +22,7 @@ const replaceVariables = (keys, dic) => {
|
|
22
22
|
return keys
|
23
23
|
}
|
24
24
|
|
25
|
-
// It is required UTC date for Partitioning File System like AWS S3.
|
25
|
+
// It is required UTC date for Partitioning File System like AWS S3 from Athena.
|
26
26
|
// ex) %YYYY, %MM, %DD
|
27
27
|
const formatDate = (keys, _moment) => {
|
28
28
|
for (const k in keys) {
|
@@ -63,6 +63,9 @@ export class DataSampleMutation {
|
|
63
63
|
return spec
|
64
64
|
}, {})
|
65
65
|
|
66
|
+
// appending spec to data for reporting and optimizing AWS Athena search
|
67
|
+
dataSample.data = { ...dataSample.data, _spec: JSON.stringify(spec) }
|
68
|
+
|
66
69
|
var partitionKeys = {
|
67
70
|
...dataSet.partitionKeys
|
68
71
|
}
|
@@ -70,7 +73,7 @@ export class DataSampleMutation {
|
|
70
73
|
const collectedAt = dataSample.collectedAt || new Date()
|
71
74
|
partitionKeys = formatDate(partitionKeys, moment(collectedAt).utc())
|
72
75
|
partitionKeys = replaceVariables(partitionKeys, {
|
73
|
-
|
76
|
+
domain: domain.subdomain,
|
74
77
|
dataSetId: dataSample.dataSetId,
|
75
78
|
...dataSample.data
|
76
79
|
})
|
package/translations/en.json
CHANGED
@@ -14,6 +14,7 @@
|
|
14
14
|
"field.spec": "spec",
|
15
15
|
"field.tag": "tag name",
|
16
16
|
"field.unit": "unit",
|
17
|
+
"text.data sample created successfully": "a data sample created successfully",
|
17
18
|
"title.data-entry-form": "data entry form",
|
18
19
|
"title.data-item list": "data item list",
|
19
20
|
"title.data-sample list": "data sample list",
|
package/translations/ko.json
CHANGED
package/translations/ms.json
CHANGED
@@ -14,6 +14,7 @@
|
|
14
14
|
"field.spec": "spec",
|
15
15
|
"field.tag": "tag name",
|
16
16
|
"field.unit": "unit",
|
17
|
+
"text.data sample created successfully": "a data sample created successfully",
|
17
18
|
"title.data-entry-form": "data entry form",
|
18
19
|
"title.data-item list": "data item list",
|
19
20
|
"title.data-sample list": "data sample list",
|
package/translations/zh.json
CHANGED
@@ -14,6 +14,7 @@
|
|
14
14
|
"field.spec": "spec",
|
15
15
|
"field.tag": "tag name",
|
16
16
|
"field.unit": "unit",
|
17
|
+
"text.data sample created successfully": "a data sample created successfully",
|
17
18
|
"title.data-entry-form": "data entry form",
|
18
19
|
"title.data-item list": "data item list",
|
19
20
|
"title.data-sample list": "data sample list",
|