@things-factory/dataset 5.0.0-alpha.1 → 5.0.0-alpha.4

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 (70) hide show
  1. package/client/bootstrap.js +0 -2
  2. package/client/pages/data-entry-form.js +74 -0
  3. package/client/pages/data-item-list.js +47 -9
  4. package/client/pages/data-sample.js +52 -8
  5. package/client/pages/data-sensor.js +446 -0
  6. package/client/pages/data-set.js +46 -7
  7. package/client/route.js +4 -0
  8. package/dist-server/index.js +1 -0
  9. package/dist-server/index.js.map +1 -1
  10. package/dist-server/routes.js +64 -0
  11. package/dist-server/routes.js.map +1 -1
  12. package/dist-server/service/data-item/data-item-type.js +10 -5
  13. package/dist-server/service/data-item/data-item-type.js.map +1 -1
  14. package/dist-server/service/data-item/data-item.js +17 -4
  15. package/dist-server/service/data-item/data-item.js.map +1 -1
  16. package/dist-server/service/data-sample/data-sample-mutation.js +41 -7
  17. package/dist-server/service/data-sample/data-sample-mutation.js.map +1 -1
  18. package/dist-server/service/data-sample/data-sample-type.js +23 -2
  19. package/dist-server/service/data-sample/data-sample-type.js.map +1 -1
  20. package/dist-server/service/data-sample/data-sample.js +44 -5
  21. package/dist-server/service/data-sample/data-sample.js.map +1 -1
  22. package/dist-server/service/data-sensor/data-sensor-mutation.js +120 -0
  23. package/dist-server/service/data-sensor/data-sensor-mutation.js.map +1 -0
  24. package/dist-server/service/data-sensor/data-sensor-query.js +108 -0
  25. package/dist-server/service/data-sensor/data-sensor-query.js.map +1 -0
  26. package/dist-server/service/data-sensor/data-sensor-type.js +147 -0
  27. package/dist-server/service/data-sensor/data-sensor-type.js.map +1 -0
  28. package/dist-server/service/data-sensor/data-sensor.js +168 -0
  29. package/dist-server/service/data-sensor/data-sensor.js.map +1 -0
  30. package/dist-server/service/data-sensor/index.js +9 -0
  31. package/dist-server/service/data-sensor/index.js.map +1 -0
  32. package/dist-server/service/data-set/data-set-type.js +18 -0
  33. package/dist-server/service/data-set/data-set-type.js.map +1 -1
  34. package/dist-server/service/data-set/data-set.js +22 -3
  35. package/dist-server/service/data-set/data-set.js.map +1 -1
  36. package/dist-server/service/data-spec/data-spec-manager.js +20 -0
  37. package/dist-server/service/data-spec/data-spec-manager.js.map +1 -0
  38. package/dist-server/service/data-spec/data-spec-query.js +48 -0
  39. package/dist-server/service/data-spec/data-spec-query.js.map +1 -0
  40. package/dist-server/service/data-spec/data-spec.js +78 -0
  41. package/dist-server/service/data-spec/data-spec.js.map +1 -0
  42. package/dist-server/service/data-spec/index.js +8 -0
  43. package/dist-server/service/data-spec/index.js.map +1 -0
  44. package/dist-server/service/index.js +10 -2
  45. package/dist-server/service/index.js.map +1 -1
  46. package/package.json +13 -11
  47. package/server/index.ts +2 -0
  48. package/server/routes.ts +76 -0
  49. package/server/service/data-item/data-item-type.ts +7 -4
  50. package/server/service/data-item/data-item.ts +13 -2
  51. package/server/service/data-sample/data-sample-mutation.ts +55 -5
  52. package/server/service/data-sample/data-sample-type.ts +17 -2
  53. package/server/service/data-sample/data-sample.ts +37 -2
  54. package/server/service/data-sensor/data-sensor-mutation.ts +110 -0
  55. package/server/service/data-sensor/data-sensor-query.ts +56 -0
  56. package/server/service/data-sensor/data-sensor-type.ts +98 -0
  57. package/server/service/data-sensor/data-sensor.ts +139 -0
  58. package/server/service/data-sensor/index.ts +6 -0
  59. package/server/service/data-set/data-set-type.ts +14 -0
  60. package/server/service/data-set/data-set.ts +17 -1
  61. package/server/service/data-spec/data-spec-manager.ts +21 -0
  62. package/server/service/data-spec/data-spec-query.ts +21 -0
  63. package/server/service/data-spec/data-spec.ts +44 -0
  64. package/server/service/data-spec/index.ts +5 -0
  65. package/server/service/index.ts +12 -4
  66. package/things-factory.config.js +4 -0
  67. package/translations/en.json +17 -4
  68. package/translations/ko.json +16 -3
  69. package/translations/ms.json +17 -4
  70. package/translations/zh.json +17 -4
@@ -1,3 +1 @@
1
- import { store } from '@things-factory/shell'
2
-
3
1
  export default function bootstrap() {}
@@ -0,0 +1,74 @@
1
+ import gql from 'graphql-tag'
2
+ import { css, html, LitElement } from 'lit'
3
+
4
+ import { client } from '@operato/graphql'
5
+ import { i18next, localize } from '@operato/i18n'
6
+ import '@operato/dataset/ox-data-entry-form.js'
7
+
8
+ class DataEntryForm extends localize(i18next)(LitElement) {
9
+ static get properties() {
10
+ return {
11
+ dataSet: Object
12
+ }
13
+ }
14
+
15
+ static get styles() {
16
+ return [
17
+ css`
18
+ :host {
19
+ display: flex;
20
+ flex-direction: column;
21
+
22
+ background-color: #fff;
23
+ }
24
+
25
+ ox-data-entry-form {
26
+ flex: 1;
27
+ }
28
+
29
+ .button-container {
30
+ display: flex;
31
+ margin-left: auto;
32
+ padding: var(--padding-default);
33
+ }
34
+ `
35
+ ]
36
+ }
37
+
38
+ get entryForm() {
39
+ return this.renderRoot.querySelector('ox-data-entry-form')
40
+ }
41
+
42
+ render() {
43
+ return html`
44
+ <ox-data-entry-form .dataSet=${this.dataSet}></ox-data-entry-form>
45
+ <div class="button-container">
46
+ <mwc-button raised @click=${this._updateDataItems.bind(this)}>${i18next.t('button.save')}</mwc-button>
47
+ </div>
48
+ `
49
+ }
50
+
51
+ async _updateDataItems() {
52
+ const data = this.entryForm.buildValue()
53
+ const dataSample = {
54
+ dataSetId: this.dataSet.id,
55
+ data
56
+ }
57
+
58
+ const response = await client.mutate({
59
+ mutation: gql`
60
+ mutation ($dataSample: NewDataSample!) {
61
+ createDataSample(dataSample: $dataSample) {
62
+ id
63
+ collectedAt
64
+ }
65
+ }
66
+ `,
67
+ variables: {
68
+ dataSample
69
+ }
70
+ })
71
+ }
72
+ }
73
+
74
+ window.customElements.define('data-entry-form', DataEntryForm)
@@ -33,9 +33,6 @@ class DataItemList extends localize(i18next)(LitElement) {
33
33
  padding: var(--padding-default);
34
34
  }
35
35
 
36
- form {
37
- position: relative;
38
- }
39
36
  [danger] {
40
37
  --mdc-theme-primary: var(--mdc-danger-button-primary-color);
41
38
  }
@@ -46,7 +43,7 @@ class DataItemList extends localize(i18next)(LitElement) {
46
43
  ]
47
44
  }
48
45
 
49
- get dataGrist() {
46
+ get grist() {
50
47
  return this.renderRoot.querySelector('ox-grist')
51
48
  }
52
49
 
@@ -135,16 +132,55 @@ class DataItemList extends localize(i18next)(LitElement) {
135
132
  sortable: true,
136
133
  width: 60
137
134
  },
135
+ {
136
+ type: 'string',
137
+ name: 'tag',
138
+ header: i18next.t('field.tag'),
139
+ record: {
140
+ editable: true
141
+ },
142
+ width: 180
143
+ },
138
144
  {
139
145
  type: 'select',
140
146
  name: 'type',
141
147
  header: i18next.t('field.type'),
142
148
  record: {
143
- options: ['number', 'text', 'select', 'boolean'],
149
+ options: ['', 'number', 'text', 'select', 'boolean', 'file'],
144
150
  editable: true
145
151
  },
146
152
  width: 120
147
153
  },
154
+ {
155
+ type: 'parameters',
156
+ name: 'options',
157
+ header: i18next.t('field.options'),
158
+ record: {
159
+ editable: true,
160
+ renderer: (value, column, record, rowIndex, field) => {
161
+ return typeof value === 'string' ? value : typeof value === 'object' ? JSON.stringify(value) : ''
162
+ },
163
+ options: async (value, column, record, row, field) => {
164
+ return {
165
+ name: record.type,
166
+ help: '',
167
+ spec:
168
+ record.type === 'select'
169
+ ? [
170
+ {
171
+ type: 'options',
172
+ name: 'options',
173
+ label: 'options'
174
+ }
175
+ ]
176
+ : [],
177
+ context: this.grist,
178
+ objectified: true
179
+ }
180
+ }
181
+ },
182
+ width: 120
183
+ },
148
184
  {
149
185
  type: 'number',
150
186
  name: 'quota',
@@ -198,7 +234,9 @@ class DataItemList extends localize(i18next)(LitElement) {
198
234
  description
199
235
  sequence
200
236
  active
237
+ tag
201
238
  type
239
+ options
202
240
  quota
203
241
  spec
204
242
  }
@@ -215,7 +253,7 @@ class DataItemList extends localize(i18next)(LitElement) {
215
253
  }
216
254
 
217
255
  async _updateDataItems() {
218
- let patches = this.dataGrist._data.records
256
+ let patches = this.grist._data.records
219
257
  if (patches && patches.length) {
220
258
  patches = patches.map(patch => {
221
259
  var patchField = {}
@@ -241,14 +279,14 @@ class DataItemList extends localize(i18next)(LitElement) {
241
279
  }
242
280
  })
243
281
 
244
- if (!response.errors) this.dataGrist.fetch()
282
+ if (!response.errors) this.grist.fetch()
245
283
  }
246
284
  }
247
285
 
248
286
  async _deleteDataItems() {
249
287
  if (!confirm(i18next.t('text.sure_to_x', { x: i18next.t('text.delete') }))) return
250
288
 
251
- const ids = this.dataGrist.selected.map(record => record.id)
289
+ const ids = this.grist.selected.map(record => record.id)
252
290
  if (!(ids && ids.length > 0)) return
253
291
 
254
292
  const response = await client.mutate({
@@ -264,7 +302,7 @@ class DataItemList extends localize(i18next)(LitElement) {
264
302
 
265
303
  if (response.errors) return
266
304
 
267
- this.dataGrist.fetch()
305
+ this.grist.fetch()
268
306
  await document.dispatchEvent(
269
307
  new CustomEvent('notify', {
270
308
  detail: {
@@ -121,7 +121,7 @@ export class DataSample extends connect(store)(localize(i18next)(PageView)) {
121
121
  },
122
122
  filter: 'search',
123
123
  sortable: true,
124
- width: 150
124
+ width: 120
125
125
  },
126
126
  {
127
127
  type: 'string',
@@ -132,19 +132,39 @@ export class DataSample extends connect(store)(localize(i18next)(PageView)) {
132
132
  editable: true
133
133
  },
134
134
  filter: 'search',
135
- width: 200
135
+ width: 150
136
136
  },
137
137
  {
138
- type: 'string',
139
- name: 'dataSetId',
140
- hidden: true
138
+ type: 'object',
139
+ name: 'dataSet',
140
+ header: i18next.t('field.dataSet'),
141
+ record: {
142
+ editable: false
143
+ },
144
+ sortable: true,
145
+ width: 120
146
+ },
147
+ {
148
+ type: 'json',
149
+ name: 'partitionKeys',
150
+ header: i18next.t('field.partitionKeys'),
151
+ record: {
152
+ editable: false,
153
+ renderer: (value, column, record, rowIndex, field) => {
154
+ return typeof value === 'string' ? value : typeof value === 'object' ? JSON.stringify(value) : ''
155
+ }
156
+ },
157
+ width: 200
141
158
  },
142
159
  {
143
160
  type: 'json',
144
161
  name: 'data',
145
162
  header: i18next.t('field.data'),
146
163
  record: {
147
- editable: false
164
+ editable: false,
165
+ renderer: (value, column, record, rowIndex, field) => {
166
+ return typeof value === 'string' ? value : typeof value === 'object' ? JSON.stringify(value) : ''
167
+ }
148
168
  },
149
169
  width: 200
150
170
  },
@@ -152,12 +172,23 @@ export class DataSample extends connect(store)(localize(i18next)(PageView)) {
152
172
  type: 'json',
153
173
  name: 'spec',
154
174
  header: i18next.t('field.spec'),
175
+ record: {
176
+ editable: false,
177
+ renderer: (value, column, record, rowIndex, field) => {
178
+ return typeof value === 'string' ? value : typeof value === 'object' ? JSON.stringify(value) : ''
179
+ }
180
+ },
181
+ width: 200
182
+ },
183
+ {
184
+ type: 'code',
185
+ name: 'rawData',
186
+ header: i18next.t('field.raw-data'),
155
187
  record: {
156
188
  editable: false
157
189
  },
158
190
  width: 200
159
191
  },
160
-
161
192
  {
162
193
  type: 'object',
163
194
  name: 'updater',
@@ -171,6 +202,13 @@ export class DataSample extends connect(store)(localize(i18next)(PageView)) {
171
202
  header: i18next.t('field.updated_at'),
172
203
  sortable: true,
173
204
  width: 180
205
+ },
206
+ {
207
+ type: 'datetime',
208
+ name: 'collectedAt',
209
+ header: i18next.t('field.collected_at'),
210
+ sortable: true,
211
+ width: 180
174
212
  }
175
213
  ],
176
214
  rows: {
@@ -210,7 +248,12 @@ export class DataSample extends connect(store)(localize(i18next)(PageView)) {
210
248
  id
211
249
  name
212
250
  description
213
- dataSetId
251
+ dataSet {
252
+ id
253
+ name
254
+ description
255
+ }
256
+ partitionKeys
214
257
  data
215
258
  spec
216
259
  updater {
@@ -218,6 +261,7 @@ export class DataSample extends connect(store)(localize(i18next)(PageView)) {
218
261
  name
219
262
  }
220
263
  updatedAt
264
+ collectedAt
221
265
  }
222
266
  total
223
267
  }