@things-factory/dataset 5.0.0-alpha.8 → 5.0.0-zeta.0
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/README.md +9 -0
- package/assets/data-samples.jpg +0 -0
- package/client/bootstrap.js +21 -1
- package/client/pages/{data-entry-form.js → data-entry/data-entry-form.js} +15 -3
- package/client/pages/data-entry/data-entry-list-page.js +390 -0
- package/client/pages/data-ooc/data-ooc-list-page.js +416 -0
- package/client/pages/data-ooc/data-ooc-view.js +183 -0
- package/client/pages/data-report/data-report-embed-page.js +113 -0
- package/client/pages/data-report/data-report-list-page.js +432 -0
- package/client/pages/data-report/jasper-report-oocs-page.js +122 -0
- package/client/pages/data-report/jasper-report-samples-crosstab-page.js +122 -0
- package/client/pages/data-report/jasper-report-samples-page.js +122 -0
- package/client/pages/data-sample/data-sample-list-page.js +372 -0
- package/client/pages/data-sample/data-sample-view.js +98 -0
- package/client/pages/{data-sensor.js → data-sensor/data-sensor-list-page.js} +43 -68
- package/client/pages/{data-item-list.js → data-set/data-item-list.js} +36 -11
- package/client/pages/{data-set-importer.js → data-set/data-set-importer.js} +0 -0
- package/client/pages/data-set/data-set-list-page.js +739 -0
- package/client/route.js +34 -6
- package/config/config.development.js +13 -0
- package/config/config.production.js +1 -0
- package/dist-server/controllers/create-data-sample.js +133 -0
- package/dist-server/controllers/create-data-sample.js.map +1 -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 +18 -0
- package/dist-server/controllers/index.js.map +1 -1
- package/dist-server/controllers/jasper-report.js +156 -0
- package/dist-server/controllers/jasper-report.js.map +1 -0
- package/dist-server/index.js +1 -0
- package/dist-server/index.js.map +1 -1
- package/dist-server/routes.js +13 -24
- package/dist-server/routes.js.map +1 -1
- package/dist-server/service/data-item/data-item-mutation.js +5 -1
- package/dist-server/service/data-item/data-item-mutation.js.map +1 -1
- package/dist-server/service/data-item/data-item-query.js +6 -2
- package/dist-server/service/data-item/data-item-query.js.map +1 -1
- package/dist-server/service/data-item/data-item-type.js +15 -7
- package/dist-server/service/data-item/data-item-type.js.map +1 -1
- package/dist-server/service/data-item/data-item.js +17 -3
- package/dist-server/service/data-item/data-item.js.map +1 -1
- package/dist-server/service/data-ooc/data-ooc-mutation.js +92 -0
- package/dist-server/service/data-ooc/data-ooc-mutation.js.map +1 -0
- package/dist-server/service/data-ooc/data-ooc-query.js +120 -0
- package/dist-server/service/data-ooc/data-ooc-query.js.map +1 -0
- package/dist-server/service/data-ooc/data-ooc-subscription.js +65 -0
- package/dist-server/service/data-ooc/data-ooc-subscription.js.map +1 -0
- package/dist-server/service/data-ooc/data-ooc-type.js +107 -0
- package/dist-server/service/data-ooc/data-ooc-type.js.map +1 -0
- package/dist-server/service/data-ooc/data-ooc.js +237 -0
- package/dist-server/service/data-ooc/data-ooc.js.map +1 -0
- package/dist-server/service/data-ooc/index.js +10 -0
- package/dist-server/service/data-ooc/index.js.map +1 -0
- package/dist-server/service/data-sample/data-sample-mutation.js +2 -138
- package/dist-server/service/data-sample/data-sample-mutation.js.map +1 -1
- package/dist-server/service/data-sample/data-sample-query.js +7 -2
- package/dist-server/service/data-sample/data-sample-query.js.map +1 -1
- package/dist-server/service/data-sample/data-sample-type.js +12 -42
- package/dist-server/service/data-sample/data-sample-type.js.map +1 -1
- package/dist-server/service/data-sample/data-sample.js +34 -3
- package/dist-server/service/data-sample/data-sample.js.map +1 -1
- package/dist-server/service/data-sensor/data-sensor-query.js +7 -2
- package/dist-server/service/data-sensor/data-sensor-query.js.map +1 -1
- package/dist-server/service/data-set/data-set-mutation.js +40 -14
- package/dist-server/service/data-set/data-set-mutation.js.map +1 -1
- package/dist-server/service/data-set/data-set-query.js +190 -3
- package/dist-server/service/data-set/data-set-query.js.map +1 -1
- package/dist-server/service/data-set/data-set-type.js +84 -3
- package/dist-server/service/data-set/data-set-type.js.map +1 -1
- package/dist-server/service/data-set/data-set.js +110 -15
- 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 +19 -13
- package/server/controllers/create-data-sample.ts +177 -0
- package/server/controllers/data-use-case.ts +85 -0
- package/server/controllers/index.ts +2 -0
- package/server/controllers/jasper-report.ts +170 -0
- package/server/index.ts +1 -0
- package/server/routes.ts +21 -31
- package/server/service/data-item/data-item-mutation.ts +6 -1
- package/server/service/data-item/data-item-query.ts +8 -3
- package/server/service/data-item/data-item-type.ts +10 -6
- package/server/service/data-item/data-item.ts +15 -4
- package/server/service/data-ooc/data-ooc-mutation.ts +150 -0
- package/server/service/data-ooc/data-ooc-query.ts +69 -0
- package/server/service/data-ooc/data-ooc-subscription.ts +51 -0
- package/server/service/data-ooc/data-ooc-type.ts +68 -0
- package/server/service/data-ooc/data-ooc.ts +204 -0
- package/server/service/data-ooc/index.ts +7 -0
- package/server/service/data-sample/data-sample-mutation.ts +3 -168
- package/server/service/data-sample/data-sample-query.ts +9 -3
- package/server/service/data-sample/data-sample-type.ts +7 -28
- package/server/service/data-sample/data-sample.ts +33 -3
- package/server/service/data-sensor/data-sensor-query.ts +9 -3
- package/server/service/data-set/data-set-mutation.ts +53 -14
- package/server/service/data-set/data-set-query.ts +161 -4
- package/server/service/data-set/data-set-type.ts +65 -4
- package/server/service/data-set/data-set.ts +100 -12
- package/server/service/index.ts +6 -2
- package/things-factory.config.js +35 -7
- package/translations/en.json +46 -3
- package/translations/ko.json +45 -3
- package/translations/ms.json +44 -3
- package/translations/zh.json +44 -3
- package/client/pages/data-sample.js +0 -307
- package/client/pages/data-set.js +0 -457
@@ -8,20 +8,22 @@ import { client } from '@operato/graphql'
|
|
8
8
|
import { i18next, localize } from '@operato/i18n'
|
9
9
|
import { notify } from '@operato/layout'
|
10
10
|
import { PageView, store } from '@operato/shell'
|
11
|
-
import { CommonButtonStyles, ScrollbarStyles } from '@operato/styles'
|
11
|
+
import { CommonButtonStyles, CommonGristStyles, ScrollbarStyles } from '@operato/styles'
|
12
12
|
import { isMobileDevice } from '@operato/utils'
|
13
13
|
|
14
|
-
export class
|
14
|
+
export class DataSensorListPage extends connect(store)(localize(i18next)(PageView)) {
|
15
15
|
static get properties() {
|
16
16
|
return {
|
17
17
|
active: String,
|
18
|
-
gristConfig: Object
|
18
|
+
gristConfig: Object,
|
19
|
+
mode: String
|
19
20
|
}
|
20
21
|
}
|
21
22
|
|
22
23
|
static get styles() {
|
23
24
|
return [
|
24
25
|
ScrollbarStyles,
|
26
|
+
CommonGristStyles,
|
25
27
|
css`
|
26
28
|
:host {
|
27
29
|
display: flex;
|
@@ -34,18 +36,6 @@ export class DataSensor extends connect(store)(localize(i18next)(PageView)) {
|
|
34
36
|
overflow-y: auto;
|
35
37
|
flex: 1;
|
36
38
|
}
|
37
|
-
|
38
|
-
#filters {
|
39
|
-
display: flex;
|
40
|
-
flex-direction: row;
|
41
|
-
justify-content: space-between;
|
42
|
-
|
43
|
-
background-color: white;
|
44
|
-
}
|
45
|
-
|
46
|
-
#filters > * {
|
47
|
-
padding: var(--padding-default) var(--padding-wide);
|
48
|
-
}
|
49
39
|
`
|
50
40
|
]
|
51
41
|
}
|
@@ -53,7 +43,7 @@ export class DataSensor extends connect(store)(localize(i18next)(PageView)) {
|
|
53
43
|
get context() {
|
54
44
|
return {
|
55
45
|
title: i18next.t('title.data-sensor list'),
|
56
|
-
help: '
|
46
|
+
help: 'dataset/data-sensor',
|
57
47
|
actions: [
|
58
48
|
{
|
59
49
|
title: i18next.t('button.copy'),
|
@@ -75,14 +65,42 @@ export class DataSensor extends connect(store)(localize(i18next)(PageView)) {
|
|
75
65
|
}
|
76
66
|
|
77
67
|
render() {
|
68
|
+
const mode = this.mode || (isMobileDevice() ? 'LIST' : 'GRID')
|
69
|
+
|
78
70
|
return html`
|
79
71
|
<ox-grist
|
80
|
-
.mode=${
|
72
|
+
.mode=${mode}
|
81
73
|
.config=${this.gristConfig}
|
82
74
|
.fetchHandler=${this.fetchHandler.bind(this)}
|
75
|
+
?url-params-sensitive=${this.active}
|
83
76
|
>
|
84
|
-
<div slot="headroom"
|
85
|
-
<
|
77
|
+
<div slot="headroom">
|
78
|
+
<div id="filters">
|
79
|
+
<ox-filters-form></ox-filters-form>
|
80
|
+
</div>
|
81
|
+
|
82
|
+
<div id="sorters">
|
83
|
+
Sort
|
84
|
+
<mwc-icon
|
85
|
+
@click=${e => {
|
86
|
+
const target = e.currentTarget
|
87
|
+
this.renderRoot.querySelector('#sorter-control').open({
|
88
|
+
right: 0,
|
89
|
+
top: target.offsetTop + target.offsetHeight
|
90
|
+
})
|
91
|
+
}}
|
92
|
+
>expand_more</mwc-icon
|
93
|
+
>
|
94
|
+
<ox-popup id="sorter-control">
|
95
|
+
<ox-sorters-control> </ox-sorters-control>
|
96
|
+
</ox-popup>
|
97
|
+
</div>
|
98
|
+
|
99
|
+
<div id="modes">
|
100
|
+
<mwc-icon @click=${() => (this.mode = 'GRID')} ?active=${mode == 'GRID'}>grid_on</mwc-icon>
|
101
|
+
<mwc-icon @click=${() => (this.mode = 'LIST')} ?active=${mode == 'LIST'}>format_list_bulleted</mwc-icon>
|
102
|
+
<mwc-icon @click=${() => (this.mode = 'CARD')} ?active=${mode == 'CARD'}>apps</mwc-icon>
|
103
|
+
</div>
|
86
104
|
</div>
|
87
105
|
</ox-grist>
|
88
106
|
`
|
@@ -92,30 +110,7 @@ export class DataSensor extends connect(store)(localize(i18next)(PageView)) {
|
|
92
110
|
return this.renderRoot.querySelector('ox-grist')
|
93
111
|
}
|
94
112
|
|
95
|
-
// update with url params value
|
96
|
-
_updateSearchConfig(lifecycle) {
|
97
|
-
// this.searchConfig = this.searchConfig.map(conf => {
|
98
|
-
// if (conf.name in lifecycle.params) {
|
99
|
-
// conf.value = lifecycle.params[conf.name]
|
100
|
-
// } else {
|
101
|
-
// delete conf.value
|
102
|
-
// }
|
103
|
-
// return conf
|
104
|
-
// })
|
105
|
-
}
|
106
|
-
|
107
|
-
// set default field value to record with searchConfig
|
108
|
-
_setDefaultFieldsValue(fields) {
|
109
|
-
// this.searchConfig.forEach(conf => {
|
110
|
-
// if (!fields[conf.name] && conf.value) {
|
111
|
-
// fields[conf.name] = conf.value
|
112
|
-
// }
|
113
|
-
// })
|
114
|
-
}
|
115
|
-
|
116
113
|
async pageInitialized(lifecycle) {
|
117
|
-
this._updateSearchConfig(lifecycle)
|
118
|
-
|
119
114
|
this.gristConfig = {
|
120
115
|
list: { fields: ['name', 'description', 'active'] },
|
121
116
|
columns: [
|
@@ -153,6 +148,7 @@ export class DataSensor extends connect(store)(localize(i18next)(PageView)) {
|
|
153
148
|
editable: true
|
154
149
|
},
|
155
150
|
sortable: true,
|
151
|
+
filter: true,
|
156
152
|
width: 60
|
157
153
|
},
|
158
154
|
{
|
@@ -176,6 +172,7 @@ export class DataSensor extends connect(store)(localize(i18next)(PageView)) {
|
|
176
172
|
editable: true
|
177
173
|
},
|
178
174
|
sortable: true,
|
175
|
+
filter: 'search',
|
179
176
|
width: 150
|
180
177
|
},
|
181
178
|
{
|
@@ -194,7 +191,7 @@ export class DataSensor extends connect(store)(localize(i18next)(PageView)) {
|
|
194
191
|
{
|
195
192
|
type: 'object',
|
196
193
|
name: 'dataSet',
|
197
|
-
header: i18next.t('field.
|
194
|
+
header: i18next.t('field.data-set'),
|
198
195
|
record: {
|
199
196
|
editable: true,
|
200
197
|
options: {
|
@@ -271,8 +268,8 @@ export class DataSensor extends connect(store)(localize(i18next)(PageView)) {
|
|
271
268
|
},
|
272
269
|
{
|
273
270
|
type: 'datetime',
|
274
|
-
name: '
|
275
|
-
header: i18next.t('field.
|
271
|
+
name: 'updatedAt',
|
272
|
+
header: i18next.t('field.updated_at'),
|
276
273
|
record: {
|
277
274
|
editable: false
|
278
275
|
},
|
@@ -291,20 +288,6 @@ export class DataSensor extends connect(store)(localize(i18next)(PageView)) {
|
|
291
288
|
}
|
292
289
|
]
|
293
290
|
}
|
294
|
-
|
295
|
-
await this.updateComplete
|
296
|
-
|
297
|
-
this.grist.fetch()
|
298
|
-
}
|
299
|
-
|
300
|
-
async pageUpdated(changes, lifecycle) {
|
301
|
-
if (this.active) {
|
302
|
-
// update with url params value
|
303
|
-
this._updateSearchConfig(lifecycle)
|
304
|
-
await this.updateComplete
|
305
|
-
|
306
|
-
this.grist.fetch()
|
307
|
-
}
|
308
291
|
}
|
309
292
|
|
310
293
|
async fetchHandler({ page, limit, sortings = [], filters = [] }) {
|
@@ -382,13 +365,6 @@ export class DataSensor extends connect(store)(localize(i18next)(PageView)) {
|
|
382
365
|
}
|
383
366
|
}
|
384
367
|
|
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
368
|
async _copyDataSensor() {
|
393
369
|
var selected = this.grist.selected
|
394
370
|
if (selected.length == 0) return
|
@@ -419,7 +395,6 @@ export class DataSensor extends connect(store)(localize(i18next)(PageView)) {
|
|
419
395
|
for (let key in dirtyFields) {
|
420
396
|
patchField[key] = dirtyFields[key].after
|
421
397
|
}
|
422
|
-
this._setDefaultFieldsValue(patchField)
|
423
398
|
patchField.cuFlag = patch.__dirty__
|
424
399
|
|
425
400
|
return patchField
|
@@ -443,4 +418,4 @@ export class DataSensor extends connect(store)(localize(i18next)(PageView)) {
|
|
443
418
|
}
|
444
419
|
}
|
445
420
|
|
446
|
-
window.customElements.define('data-sensor-page',
|
421
|
+
window.customElements.define('data-sensor-list-page', DataSensorListPage)
|
@@ -61,8 +61,6 @@ class DataItemList extends localize(i18next)(LitElement) {
|
|
61
61
|
`
|
62
62
|
}
|
63
63
|
|
64
|
-
async updated(changedProps) {}
|
65
|
-
|
66
64
|
async firstUpdated() {
|
67
65
|
this.gristConfig = {
|
68
66
|
list: { fields: ['name', 'description', 'active'] },
|
@@ -132,6 +130,17 @@ class DataItemList extends localize(i18next)(LitElement) {
|
|
132
130
|
sortable: true,
|
133
131
|
width: 60
|
134
132
|
},
|
133
|
+
{
|
134
|
+
type: 'checkbox',
|
135
|
+
name: 'hidden',
|
136
|
+
label: true,
|
137
|
+
header: i18next.t('field.hidden'),
|
138
|
+
record: {
|
139
|
+
editable: true
|
140
|
+
},
|
141
|
+
sortable: true,
|
142
|
+
width: 60
|
143
|
+
},
|
135
144
|
{
|
136
145
|
type: 'string',
|
137
146
|
name: 'tag',
|
@@ -157,9 +166,7 @@ class DataItemList extends localize(i18next)(LitElement) {
|
|
157
166
|
header: i18next.t('field.options'),
|
158
167
|
record: {
|
159
168
|
editable: true,
|
160
|
-
renderer:
|
161
|
-
return typeof value === 'string' ? value : typeof value === 'object' ? JSON.stringify(value) : ''
|
162
|
-
},
|
169
|
+
renderer: 'json5',
|
163
170
|
options: async (value, column, record, row, field) => {
|
164
171
|
return {
|
165
172
|
name: record.type,
|
@@ -168,7 +175,7 @@ class DataItemList extends localize(i18next)(LitElement) {
|
|
168
175
|
record.type === 'select'
|
169
176
|
? [
|
170
177
|
{
|
171
|
-
type: 'options'
|
178
|
+
type: 'options' /* property-editor type */,
|
172
179
|
name: 'options',
|
173
180
|
label: 'options'
|
174
181
|
}
|
@@ -181,6 +188,15 @@ class DataItemList extends localize(i18next)(LitElement) {
|
|
181
188
|
},
|
182
189
|
width: 120
|
183
190
|
},
|
191
|
+
{
|
192
|
+
type: 'string',
|
193
|
+
name: 'unit',
|
194
|
+
header: i18next.t('field.unit'),
|
195
|
+
record: {
|
196
|
+
editable: true
|
197
|
+
},
|
198
|
+
width: 120
|
199
|
+
},
|
184
200
|
{
|
185
201
|
type: 'number',
|
186
202
|
name: 'quota',
|
@@ -191,11 +207,16 @@ class DataItemList extends localize(i18next)(LitElement) {
|
|
191
207
|
width: 60
|
192
208
|
},
|
193
209
|
{
|
194
|
-
type: '
|
210
|
+
type: 'data-item-spec',
|
195
211
|
name: 'spec',
|
196
212
|
header: i18next.t('field.spec'),
|
197
213
|
record: {
|
198
|
-
editable: true
|
214
|
+
editable: true,
|
215
|
+
options: {
|
216
|
+
name: '',
|
217
|
+
help: '',
|
218
|
+
objectified: true /* prevent from stringifying */
|
219
|
+
}
|
199
220
|
},
|
200
221
|
width: 200
|
201
222
|
}
|
@@ -216,13 +237,13 @@ class DataItemList extends localize(i18next)(LitElement) {
|
|
216
237
|
}
|
217
238
|
}
|
218
239
|
|
219
|
-
async fetchHandler({ filters, page, limit,
|
240
|
+
async fetchHandler({ filters, page, limit, sortings = [] }) {
|
220
241
|
const response = await client.query({
|
221
242
|
query: gql`
|
222
243
|
query {
|
223
244
|
dataItems (
|
224
245
|
filters: {
|
225
|
-
name: "
|
246
|
+
name: "dataSetId",
|
226
247
|
value: "${this.dataSet.id}",
|
227
248
|
operator: "eq"
|
228
249
|
},
|
@@ -234,9 +255,11 @@ class DataItemList extends localize(i18next)(LitElement) {
|
|
234
255
|
description
|
235
256
|
sequence
|
236
257
|
active
|
258
|
+
hidden
|
237
259
|
tag
|
238
260
|
type
|
239
261
|
options
|
262
|
+
unit
|
240
263
|
quota
|
241
264
|
spec
|
242
265
|
}
|
@@ -279,7 +302,9 @@ class DataItemList extends localize(i18next)(LitElement) {
|
|
279
302
|
}
|
280
303
|
})
|
281
304
|
|
282
|
-
if (!response.errors)
|
305
|
+
if (!response.errors) {
|
306
|
+
this.grist.fetch()
|
307
|
+
}
|
283
308
|
}
|
284
309
|
}
|
285
310
|
|
File without changes
|