@things-factory/dataset 5.0.0-alpha.10 → 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.
@@ -1,12 +1,16 @@
1
1
  import {
2
- Json5Renderer,
2
+ OxGristRendererJson5,
3
3
  registerEditor as registerGristEditor,
4
4
  registerRenderer as registerGristRenderer
5
5
  } from '@operato/data-grist'
6
6
 
7
- import { OxDataItemSpecEditor } from '@operato/dataset/grist-editor'
7
+ import { OxGristEditorDataItemSpec } from '@operato/dataset/grist-editor'
8
+ import { OxGristEditorPartitionKeys } from '@operato/app/grist-editor/ox-grist-editor-partition-keys.js'
8
9
 
9
10
  export default function bootstrap() {
10
- registerGristEditor('data-item-spec', OxDataItemSpecEditor)
11
- registerGristRenderer('data-item-spec', Json5Renderer)
11
+ registerGristEditor('data-item-spec', OxGristEditorDataItemSpec)
12
+ registerGristRenderer('data-item-spec', OxGristRendererJson5)
13
+
14
+ registerGristEditor('partition-keys', OxGristEditorPartitionKeys)
15
+ registerGristRenderer('partition-keys', OxGristRendererJson5)
12
16
  }
@@ -1,9 +1,10 @@
1
- import gql from 'graphql-tag'
2
- import { css, html, LitElement } from 'lit'
1
+ import '@operato/dataset/ox-data-entry-form.js'
3
2
 
4
- import { client } from '@operato/graphql'
3
+ import { LitElement, css, html } from 'lit'
5
4
  import { i18next, localize } from '@operato/i18n'
6
- import '@operato/dataset/ox-data-entry-form.js'
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
 
@@ -1,15 +1,15 @@
1
1
  import '@operato/data-grist'
2
2
 
3
- import gql from 'graphql-tag'
3
+ import { CommonButtonStyles, ScrollbarStyles } from '@operato/styles'
4
+ import { PageView, store } from '@operato/shell'
4
5
  import { css, html } from 'lit'
5
- import { connect } from 'pwa-helpers/connect-mixin'
6
+ import { i18next, localize } from '@operato/i18n'
6
7
 
7
8
  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, ScrollbarStyles } from '@operato/styles'
9
+ import { connect } from 'pwa-helpers/connect-mixin'
10
+ import gql from 'graphql-tag'
12
11
  import { isMobileDevice } from '@operato/utils'
12
+ import { notify } from '@operato/layout'
13
13
 
14
14
  export class DataSample extends connect(store)(localize(i18next)(PageView)) {
15
15
  static get properties() {
@@ -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,16 +148,18 @@ 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',
149
156
  name: 'partitionKeys',
150
- header: i18next.t('field.partitionKeys'),
157
+ header: i18next.t('field.partition-keys'),
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
- async stateChanged(state) {
300
- if (this.active && this._currentPopupName && !state.layout.viewparts[this._currentPopupName]) {
301
- this.grist.fetch()
302
- this._currentPopupName = null
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
 
@@ -1,15 +1,15 @@
1
1
  import '@operato/data-grist'
2
2
 
3
- import gql from 'graphql-tag'
3
+ import { CommonButtonStyles, ScrollbarStyles } from '@operato/styles'
4
+ import { PageView, store } from '@operato/shell'
4
5
  import { css, html } from 'lit'
5
- import { connect } from 'pwa-helpers/connect-mixin'
6
+ import { i18next, localize } from '@operato/i18n'
6
7
 
7
8
  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, ScrollbarStyles } from '@operato/styles'
9
+ import { connect } from 'pwa-helpers/connect-mixin'
10
+ import gql from 'graphql-tag'
12
11
  import { isMobileDevice } from '@operato/utils'
12
+ import { notify } from '@operato/layout'
13
13
 
14
14
  export class DataSensor extends connect(store)(localize(i18next)(PageView)) {
15
15
  static get properties() {
@@ -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
@@ -3,17 +3,17 @@ import './data-item-list'
3
3
  import './data-set-importer'
4
4
  import './data-entry-form'
5
5
 
6
- import gql from 'graphql-tag'
6
+ import { CommonButtonStyles, ScrollbarStyles } from '@operato/styles'
7
+ import { PageView, store } from '@operato/shell'
7
8
  import { css, html } from 'lit'
8
- import moment from 'moment-timezone'
9
- import { connect } from 'pwa-helpers/connect-mixin'
10
-
11
- import { client } from '@operato/graphql'
12
9
  import { i18next, localize } from '@operato/i18n'
13
10
  import { notify, openPopup } from '@operato/layout'
14
- import { PageView, store } from '@operato/shell'
15
- import { CommonButtonStyles, ScrollbarStyles } from '@operato/styles'
11
+
12
+ import { client } from '@operato/graphql'
13
+ import { connect } from 'pwa-helpers/connect-mixin'
14
+ import gql from 'graphql-tag'
16
15
  import { isMobileDevice } from '@operato/utils'
16
+ import moment from 'moment-timezone'
17
17
 
18
18
  export class DataSet extends connect(store)(localize(i18next)(PageView)) {
19
19
  static get properties() {
@@ -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
  },
@@ -200,11 +203,14 @@ export class DataSet extends connect(store)(localize(i18next)(PageView)) {
200
203
  width: 60
201
204
  },
202
205
  {
203
- type: 'json',
206
+ type: 'partition-keys',
204
207
  name: 'partitionKeys',
205
- header: i18next.t('field.partitionKeys'),
208
+ header: i18next.t('field.partition-keys'),
206
209
  record: {
207
- editable: true
210
+ editable: true,
211
+ options: {
212
+ objectified: true /* transfered as a object type */
213
+ }
208
214
  },
209
215
  width: 200
210
216
  },
@@ -214,7 +220,10 @@ export class DataSet extends connect(store)(localize(i18next)(PageView)) {
214
220
  label: true,
215
221
  header: i18next.t('field.schedule'),
216
222
  record: {
217
- editable: true
223
+ editable: true,
224
+ options: {
225
+ objectified: true
226
+ }
218
227
  },
219
228
  width: 80,
220
229
  label: true
@@ -303,6 +312,7 @@ export class DataSet extends connect(store)(localize(i18next)(PageView)) {
303
312
  active
304
313
  tag
305
314
  type
315
+ unit
306
316
  options
307
317
  quota
308
318
  spec
@@ -350,13 +360,6 @@ export class DataSet extends connect(store)(localize(i18next)(PageView)) {
350
360
  }
351
361
  }
352
362
 
353
- async stateChanged(state) {
354
- if (this.active && this._currentPopupName && !state.layout.viewparts[this._currentPopupName]) {
355
- this.grist.fetch()
356
- this._currentPopupName = null
357
- }
358
- }
359
-
360
363
  async _copyDataSet() {
361
364
  var selected = this.grist.selected
362
365
  if (selected.length == 0) return
@@ -375,7 +378,9 @@ export class DataSet extends connect(store)(localize(i18next)(PageView)) {
375
378
  }
376
379
  })
377
380
 
378
- if (!response.errors) this.grist.fetch()
381
+ if (!response.errors) {
382
+ this.grist.fetch()
383
+ }
379
384
  }
380
385
 
381
386
  async _updateDataSet() {
@@ -406,7 +411,9 @@ export class DataSet extends connect(store)(localize(i18next)(PageView)) {
406
411
  }
407
412
  })
408
413
 
409
- if (!response.errors) this.grist.fetch()
414
+ if (!response.errors) {
415
+ this.grist.fetch()
416
+ }
410
417
  }
411
418
  }
412
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({ domainId: domain.id, dataSetId: dataSample.dataSetId }, dataSample.data));
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":"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"}
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.10",
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,17 +24,19 @@
24
24
  "migration:create": "node ../../node_modules/typeorm/cli.js migration:create -d ./server/migrations"
25
25
  },
26
26
  "dependencies": {
27
- "@operato/data-grist": "1.0.0-alpha.23",
28
- "@operato/dataset": "1.0.0-alpha.23",
29
- "@operato/graphql": "1.0.0-alpha.23",
30
- "@operato/i18n": "1.0.0-alpha.23",
31
- "@operato/layout": "1.0.0-alpha.23",
32
- "@operato/shell": "1.0.0-alpha.23",
33
- "@operato/styles": "1.0.0-alpha.23",
34
- "@operato/utils": "1.0.0-alpha.23",
35
- "@things-factory/auth-base": "^5.0.0-alpha.10",
36
- "@things-factory/env": "^5.0.0-alpha.10",
37
- "@things-factory/shell": "^5.0.0-alpha.10"
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"
38
40
  },
39
- "gitHead": "24e85b0265d10cb664b8279bb927ea2a86227775"
41
+ "gitHead": "49704052461599b174959ff494abb9ef1facd887"
40
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
- domainId: domain.id,
76
+ domain: domain.subdomain,
74
77
  dataSetId: dataSample.dataSetId,
75
78
  ...dataSample.data
76
79
  })
@@ -6,7 +6,7 @@
6
6
  "field.device-id": "device id",
7
7
  "field.netmask": "network mask",
8
8
  "field.options": "options",
9
- "field.partitionKeys": "partition keys",
9
+ "field.partition-keys": "partition keys",
10
10
  "field.quota": "sampling #",
11
11
  "field.raw-data": "raw data",
12
12
  "field.ref-by": "ref. by",
@@ -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",
@@ -6,7 +6,7 @@
6
6
  "field.device-id": "디바이스 아이디",
7
7
  "field.netmask": "네트워크마스크",
8
8
  "field.options": "선택옵션",
9
- "field.partitionKeys": "파티션 키",
9
+ "field.partition-keys": "파티션 키",
10
10
  "field.quota": "샘플수",
11
11
  "field.raw-data": "데이타 원본",
12
12
  "field.ref-by": "참조아이템",
@@ -14,6 +14,7 @@
14
14
  "field.spec": "명세",
15
15
  "field.tag": "태그이름",
16
16
  "field.unit": "단위",
17
+ "text.data sample created successfully": "데이타 샘플이 성공적으로 생성되었습니다",
17
18
  "title.data-entry-form": "데이타 입력",
18
19
  "title.data-item list": "데이타 아이템 조회",
19
20
  "title.data-sample list": "데이타 샘플 조회",
@@ -6,7 +6,7 @@
6
6
  "field.device-id": "device id",
7
7
  "field.netmask": "network mask",
8
8
  "field.options": "options",
9
- "field.partitionKeys": "partition keys",
9
+ "field.partition-keys": "partition keys",
10
10
  "field.quota": "sampling #",
11
11
  "field.raw-data": "raw data",
12
12
  "field.ref-by": "ref. by",
@@ -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",
@@ -6,7 +6,7 @@
6
6
  "field.device-id": "device id",
7
7
  "field.netmask": "network mask",
8
8
  "field.options": "options",
9
- "field.partitionKeys": "partition keys",
9
+ "field.partition-keys": "partition keys",
10
10
  "field.quota": "sampling #",
11
11
  "field.raw-data": "raw data",
12
12
  "field.ref-by": "ref. by",
@@ -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",