@things-factory/dataset 5.0.0-zeta.7 → 5.0.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/client/bootstrap.js +2 -3
- package/client/{pages/data-entry → components}/data-entry-form.js +1 -1
- package/client/index.js +1 -0
- package/client/pages/data-entry/data-entry-list-page.js +2 -3
- package/client/pages/data-ooc/data-ooc-list-page.js +13 -18
- package/client/pages/data-ooc/data-ooc-view.js +19 -14
- package/client/pages/data-report/data-report-list-page.js +1 -2
- package/client/pages/data-sample/data-sample-list-page.js +12 -13
- package/client/pages/data-sample/data-sample-view.js +3 -2
- package/client/pages/data-sensor/data-sensor-list-page.js +1 -1
- package/client/pages/data-set/data-item-list.js +32 -98
- package/client/pages/data-set/data-set-list-page.js +3 -3
- package/config/config.development.js +1 -1
- package/config/config.production.js +13 -1
- package/dist-server/controllers/create-data-sample.js +10 -44
- package/dist-server/controllers/create-data-sample.js.map +1 -1
- package/dist-server/controllers/data-use-case.js +11 -5
- package/dist-server/controllers/data-use-case.js.map +1 -1
- package/dist-server/controllers/index.js +1 -1
- package/dist-server/controllers/index.js.map +1 -1
- package/dist-server/controllers/jasper-report.js +14 -9
- package/dist-server/controllers/jasper-report.js.map +1 -1
- package/dist-server/service/data-item/index.js +1 -4
- package/dist-server/service/data-item/index.js.map +1 -1
- package/dist-server/service/data-ooc/data-ooc-query.js +15 -10
- package/dist-server/service/data-ooc/data-ooc-query.js.map +1 -1
- package/dist-server/service/data-ooc/data-ooc-type.js +4 -0
- package/dist-server/service/data-ooc/data-ooc-type.js.map +1 -1
- package/dist-server/service/data-ooc/data-ooc.js +11 -14
- package/dist-server/service/data-ooc/data-ooc.js.map +1 -1
- package/dist-server/service/data-sample/data-sample-query.js +18 -0
- package/dist-server/service/data-sample/data-sample-query.js.map +1 -1
- package/dist-server/service/data-sample/data-sample-type.js +4 -0
- package/dist-server/service/data-sample/data-sample-type.js.map +1 -1
- package/dist-server/service/data-sample/data-sample.js +12 -3
- package/dist-server/service/data-sample/data-sample.js.map +1 -1
- package/dist-server/service/{data-item → data-set}/data-item-type.js +60 -33
- package/dist-server/service/data-set/data-item-type.js.map +1 -0
- package/dist-server/service/data-set/data-set-mutation.js +21 -61
- package/dist-server/service/data-set/data-set-mutation.js.map +1 -1
- package/dist-server/service/data-set/data-set-query.js +4 -0
- package/dist-server/service/data-set/data-set-query.js.map +1 -1
- package/dist-server/service/data-set/data-set-type.js +21 -9
- package/dist-server/service/data-set/data-set-type.js.map +1 -1
- package/dist-server/service/data-set/data-set.js +11 -3
- package/dist-server/service/data-set/data-set.js.map +1 -1
- package/dist-server/service/data-set-history/data-set-history-query.js +173 -0
- package/dist-server/service/data-set-history/data-set-history-query.js.map +1 -0
- package/dist-server/service/data-set-history/data-set-history-type.js +29 -0
- package/dist-server/service/data-set-history/data-set-history-type.js.map +1 -0
- package/dist-server/service/data-set-history/data-set-history.js +196 -0
- package/dist-server/service/data-set-history/data-set-history.js.map +1 -0
- package/dist-server/service/data-set-history/event-subscriber.js +26 -0
- package/dist-server/service/data-set-history/event-subscriber.js.map +1 -0
- package/dist-server/service/data-set-history/index.js +10 -0
- package/dist-server/service/data-set-history/index.js.map +1 -0
- package/dist-server/service/index.js +11 -4
- package/dist-server/service/index.js.map +1 -1
- package/package.json +18 -17
- package/server/controllers/create-data-sample.ts +13 -50
- package/server/controllers/data-use-case.ts +19 -7
- package/server/controllers/index.ts +1 -1
- package/server/controllers/jasper-report.ts +58 -48
- package/server/service/data-item/index.ts +0 -3
- package/server/service/data-ooc/data-ooc-query.ts +13 -8
- package/server/service/data-ooc/data-ooc-type.ts +3 -0
- package/server/service/data-ooc/data-ooc.ts +9 -14
- package/server/service/data-sample/data-sample-query.ts +14 -1
- package/server/service/data-sample/data-sample-type.ts +3 -0
- package/server/service/data-sample/data-sample.ts +10 -3
- package/server/service/data-set/data-item-type.ts +82 -0
- package/server/service/data-set/data-set-mutation.ts +33 -60
- package/server/service/data-set/data-set-query.ts +5 -0
- package/server/service/data-set/data-set-type.ts +9 -1
- package/server/service/data-set/data-set.ts +8 -4
- package/server/service/data-set-history/data-set-history-query.ts +110 -0
- package/server/service/data-set-history/data-set-history-type.ts +12 -0
- package/server/service/data-set-history/data-set-history.ts +161 -0
- package/server/service/data-set-history/event-subscriber.ts +17 -0
- package/server/service/data-set-history/index.ts +7 -0
- package/server/service/index.ts +16 -4
- package/translations/en.json +5 -5
- package/translations/ko.json +10 -10
- package/translations/ms.json +5 -5
- package/translations/zh.json +5 -5
- package/dist-server/service/data-item/data-item-mutation.js +0 -73
- package/dist-server/service/data-item/data-item-mutation.js.map +0 -1
- package/dist-server/service/data-item/data-item-query.js +0 -104
- package/dist-server/service/data-item/data-item-query.js.map +0 -1
- package/dist-server/service/data-item/data-item-type.js.map +0 -1
- package/server/service/data-item/data-item-mutation.ts +0 -61
- package/server/service/data-item/data-item-query.ts +0 -58
- package/server/service/data-item/data-item-type.ts +0 -57
- package/yarn-error.log +0 -23244
package/client/bootstrap.js
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
import '@operato/app/filter-renderer.js' /* register resource-object filter renderer */
|
2
2
|
|
3
|
+
import { OxGristEditorCode } from '@operato/app/grist-editor/ox-grist-editor-code.js'
|
3
4
|
import {
|
4
5
|
OxGristRendererJson5,
|
5
6
|
registerEditor as registerGristEditor,
|
6
7
|
registerRenderer as registerGristRenderer
|
7
8
|
} from '@operato/data-grist'
|
8
|
-
|
9
|
-
import { OxGristEditorCode } from '@operato/app/grist-editor/ox-grist-editor-code.js'
|
10
9
|
import { OxGristEditorDataItemSpec } from '@operato/dataset/grist-editor'
|
11
|
-
import { OxGristEditorPartitionKeys } from '@operato/
|
10
|
+
import { OxGristEditorPartitionKeys } from '@operato/grist-editor/ox-grist-editor-partition-keys.js'
|
12
11
|
|
13
12
|
export default function bootstrap() {
|
14
13
|
registerGristEditor('data-item-spec', OxGristEditorDataItemSpec)
|
@@ -7,7 +7,7 @@ import { client } from '@operato/graphql'
|
|
7
7
|
import { i18next, localize } from '@operato/i18n'
|
8
8
|
import { ScrollbarStyles } from '@operato/styles'
|
9
9
|
|
10
|
-
class DataEntryForm extends localize(i18next)(LitElement) {
|
10
|
+
export class DataEntryForm extends localize(i18next)(LitElement) {
|
11
11
|
static get properties() {
|
12
12
|
return {
|
13
13
|
dataSet: Object
|
package/client/index.js
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
export * from './components/data-entry-form.js'
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import '@operato/data-grist'
|
2
|
-
import './data-entry-form'
|
3
2
|
import '@operato/board/ox-board-viewer.js'
|
3
|
+
import '../../components/data-entry-form.js'
|
4
4
|
|
5
5
|
import gql from 'graphql-tag'
|
6
6
|
import { css, html } from 'lit'
|
@@ -121,7 +121,7 @@ export class DataEntryListPage extends connect(store)(localize(i18next)(PageView
|
|
121
121
|
>
|
122
122
|
<div slot="headroom">
|
123
123
|
<div id="filters">
|
124
|
-
<ox-filters-form></ox-filters-form>
|
124
|
+
<ox-filters-form autofocus></ox-filters-form>
|
125
125
|
</div>
|
126
126
|
|
127
127
|
<div id="sorters">
|
@@ -356,7 +356,6 @@ export class DataEntryListPage extends connect(store)(localize(i18next)(PageView
|
|
356
356
|
dataItems {
|
357
357
|
name
|
358
358
|
description
|
359
|
-
sequence
|
360
359
|
active
|
361
360
|
tag
|
362
361
|
type
|
@@ -71,7 +71,7 @@ export class DataOocListPage extends connect(store)(localize(i18next)(PageView))
|
|
71
71
|
>
|
72
72
|
<div slot="headroom">
|
73
73
|
<div id="filters">
|
74
|
-
<ox-filters-form></ox-filters-form>
|
74
|
+
<ox-filters-form autofocus></ox-filters-form>
|
75
75
|
</div>
|
76
76
|
|
77
77
|
<div id="sorters">
|
@@ -108,7 +108,7 @@ export class DataOocListPage extends connect(store)(localize(i18next)(PageView))
|
|
108
108
|
async pageInitialized(lifecycle) {
|
109
109
|
this.gristConfig = {
|
110
110
|
list: {
|
111
|
-
fields: ['dataSet', 'data', '
|
111
|
+
fields: ['dataSet', 'data', 'correctiveAction', 'corrector', 'correctedAt', 'collectedAt', 'creator']
|
112
112
|
},
|
113
113
|
columns: [
|
114
114
|
{ type: 'gutter', gutterName: 'sequence' },
|
@@ -186,7 +186,7 @@ export class DataOocListPage extends connect(store)(localize(i18next)(PageView))
|
|
186
186
|
type: 'select',
|
187
187
|
name: 'state',
|
188
188
|
label: true,
|
189
|
-
header: i18next.t('field.
|
189
|
+
header: i18next.t('field.status'),
|
190
190
|
record: {
|
191
191
|
editable: false,
|
192
192
|
options: ['', 'CREATED', 'REVIEWED', 'CORRECTED']
|
@@ -237,15 +237,6 @@ export class DataOocListPage extends connect(store)(localize(i18next)(PageView))
|
|
237
237
|
width: 200,
|
238
238
|
imex: true
|
239
239
|
},
|
240
|
-
{
|
241
|
-
type: 'json5',
|
242
|
-
name: 'spec',
|
243
|
-
header: i18next.t('field.spec'),
|
244
|
-
record: {
|
245
|
-
editable: false
|
246
|
-
},
|
247
|
-
width: 200
|
248
|
-
},
|
249
240
|
{
|
250
241
|
type: 'text',
|
251
242
|
name: 'rawData',
|
@@ -305,7 +296,7 @@ export class DataOocListPage extends connect(store)(localize(i18next)(PageView))
|
|
305
296
|
},
|
306
297
|
sorters: [
|
307
298
|
{
|
308
|
-
name: '
|
299
|
+
name: 'collectedAt',
|
309
300
|
desc: true
|
310
301
|
}
|
311
302
|
]
|
@@ -325,21 +316,25 @@ export class DataOocListPage extends connect(store)(localize(i18next)(PageView))
|
|
325
316
|
id
|
326
317
|
name
|
327
318
|
description
|
319
|
+
useCase
|
328
320
|
dataSet {
|
329
321
|
id
|
330
322
|
name
|
331
323
|
}
|
332
|
-
|
333
|
-
|
324
|
+
partitionKeys
|
325
|
+
dataItems {
|
334
326
|
name
|
327
|
+
description
|
328
|
+
tag
|
329
|
+
unit
|
330
|
+
spec
|
335
331
|
}
|
336
|
-
partitionKeys
|
337
332
|
data
|
338
333
|
rawData
|
339
|
-
|
340
|
-
spec
|
334
|
+
judgment
|
341
335
|
ooc
|
342
336
|
oos
|
337
|
+
state
|
343
338
|
history
|
344
339
|
workDate
|
345
340
|
workShift
|
@@ -82,25 +82,29 @@ class DataOocView extends localize(i18next)(LitElement) {
|
|
82
82
|
<ox-data-ooc-view .dataSet=${this.dataSet} .dataOoc=${this.dataOoc}></ox-data-ooc-view>
|
83
83
|
</div>
|
84
84
|
|
85
|
-
${
|
86
|
-
|
85
|
+
${
|
86
|
+
state === 'CREATED' || state === 'REVIEWED'
|
87
|
+
? html`
|
87
88
|
<label comment>
|
88
89
|
<div><mwc-icon>build_circle</mwc-icon> <span>correction activity</span></div>
|
89
90
|
<textarea placeholder="조치 내용을 입력해주세요."></textarea>
|
90
91
|
</label>
|
91
92
|
`
|
92
|
-
|
93
|
+
: html``
|
94
|
+
}
|
93
95
|
|
94
96
|
<div class="button-container">
|
95
|
-
${
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
97
|
+
${
|
98
|
+
state === 'CREATED'
|
99
|
+
? html`<mwc-button raised @click=${() => this._processOoc('REVIEWED')}
|
100
|
+
>${i18next.t('button.reviewed')}</mwc-button
|
101
|
+
>`
|
102
|
+
: state === 'REVIEWED'
|
103
|
+
? html`<mwc-button raised @click=${() => this._processOoc('CORRECTED')}
|
104
|
+
>${i18next.t('button.corrected')}</mwc-button
|
105
|
+
>`
|
106
|
+
: html``
|
107
|
+
}
|
104
108
|
</div>
|
105
109
|
`
|
106
110
|
}
|
@@ -124,13 +128,14 @@ class DataOocView extends localize(i18next)(LitElement) {
|
|
124
128
|
description
|
125
129
|
useCase
|
126
130
|
dataItems {
|
127
|
-
id
|
128
131
|
name
|
129
132
|
description
|
130
133
|
active
|
131
|
-
unit
|
132
134
|
tag
|
133
135
|
type
|
136
|
+
unit
|
137
|
+
options
|
138
|
+
quota
|
134
139
|
spec
|
135
140
|
}
|
136
141
|
}
|
@@ -156,7 +156,7 @@ export class DataReportListPage extends connect(store)(localize(i18next)(PageVie
|
|
156
156
|
>
|
157
157
|
<div slot="headroom">
|
158
158
|
<div id="filters">
|
159
|
-
<ox-filters-form></ox-filters-form>
|
159
|
+
<ox-filters-form autofocus></ox-filters-form>
|
160
160
|
</div>
|
161
161
|
|
162
162
|
<div id="sorters">
|
@@ -398,7 +398,6 @@ export class DataReportListPage extends connect(store)(localize(i18next)(PageVie
|
|
398
398
|
dataItems {
|
399
399
|
name
|
400
400
|
description
|
401
|
-
sequence
|
402
401
|
active
|
403
402
|
tag
|
404
403
|
type
|
@@ -65,7 +65,7 @@ export class DataSampleListPage extends connect(store)(localize(i18next)(PageVie
|
|
65
65
|
>
|
66
66
|
<div slot="headroom">
|
67
67
|
<div id="filters">
|
68
|
-
<ox-filters-form></ox-filters-form>
|
68
|
+
<ox-filters-form autofocus></ox-filters-form>
|
69
69
|
</div>
|
70
70
|
|
71
71
|
<div id="sorters">
|
@@ -101,7 +101,7 @@ export class DataSampleListPage extends connect(store)(localize(i18next)(PageVie
|
|
101
101
|
|
102
102
|
async pageInitialized(lifecycle) {
|
103
103
|
this.gristConfig = {
|
104
|
-
list: { fields: ['dataSet', 'data', '
|
104
|
+
list: { fields: ['dataSet', 'data', 'updater', 'updatedAt'] },
|
105
105
|
columns: [
|
106
106
|
{ type: 'gutter', gutterName: 'sequence' },
|
107
107
|
{ type: 'gutter', gutterName: 'row-selector', multiple: true },
|
@@ -196,15 +196,6 @@ export class DataSampleListPage extends connect(store)(localize(i18next)(PageVie
|
|
196
196
|
width: 200,
|
197
197
|
imex: true
|
198
198
|
},
|
199
|
-
{
|
200
|
-
type: 'json5',
|
201
|
-
name: 'spec',
|
202
|
-
header: i18next.t('field.spec'),
|
203
|
-
record: {
|
204
|
-
editable: false
|
205
|
-
},
|
206
|
-
width: 200
|
207
|
-
},
|
208
199
|
{
|
209
200
|
type: 'text',
|
210
201
|
name: 'rawData',
|
@@ -276,7 +267,7 @@ export class DataSampleListPage extends connect(store)(localize(i18next)(PageVie
|
|
276
267
|
},
|
277
268
|
sorters: [
|
278
269
|
{
|
279
|
-
name: '
|
270
|
+
name: 'collectedAt',
|
280
271
|
desc: true
|
281
272
|
}
|
282
273
|
]
|
@@ -292,17 +283,25 @@ export class DataSampleListPage extends connect(store)(localize(i18next)(PageVie
|
|
292
283
|
id
|
293
284
|
name
|
294
285
|
description
|
286
|
+
useCase
|
295
287
|
dataSet {
|
296
288
|
id
|
297
289
|
name
|
298
290
|
description
|
299
291
|
}
|
300
292
|
partitionKeys
|
293
|
+
dataItems {
|
294
|
+
name
|
295
|
+
description
|
296
|
+
tag
|
297
|
+
unit
|
298
|
+
spec
|
299
|
+
}
|
301
300
|
data
|
302
301
|
rawData
|
303
|
-
spec
|
304
302
|
ooc
|
305
303
|
oos
|
304
|
+
judgment
|
306
305
|
workDate
|
307
306
|
workShift
|
308
307
|
updater {
|
@@ -91,16 +91,6 @@ class DataItemList extends localize(i18next)(LitElement) {
|
|
91
91
|
click: 'move-down'
|
92
92
|
}
|
93
93
|
},
|
94
|
-
{
|
95
|
-
type: 'number',
|
96
|
-
name: 'sequence',
|
97
|
-
hidden: true
|
98
|
-
},
|
99
|
-
{
|
100
|
-
type: 'string',
|
101
|
-
name: 'id',
|
102
|
-
hidden: true
|
103
|
-
},
|
104
94
|
{
|
105
95
|
type: 'string',
|
106
96
|
name: 'name',
|
@@ -229,114 +219,58 @@ class DataItemList extends localize(i18next)(LitElement) {
|
|
229
219
|
pagination: {
|
230
220
|
infinite: true
|
231
221
|
},
|
232
|
-
sorters: [
|
233
|
-
{
|
234
|
-
name: 'sequence'
|
235
|
-
}
|
236
|
-
]
|
222
|
+
sorters: []
|
237
223
|
}
|
238
224
|
}
|
239
225
|
|
240
226
|
async fetchHandler({ filters, page, limit, sortings = [] }) {
|
241
|
-
const
|
242
|
-
query: gql`
|
243
|
-
query {
|
244
|
-
dataItems (
|
245
|
-
filters: {
|
246
|
-
name: "dataSetId",
|
247
|
-
value: "${this.dataSet.id}",
|
248
|
-
operator: "eq"
|
249
|
-
},
|
250
|
-
sortings: { name: "sequence" }
|
251
|
-
) {
|
252
|
-
items {
|
253
|
-
id
|
254
|
-
name
|
255
|
-
description
|
256
|
-
sequence
|
257
|
-
active
|
258
|
-
hidden
|
259
|
-
tag
|
260
|
-
type
|
261
|
-
options
|
262
|
-
unit
|
263
|
-
quota
|
264
|
-
spec
|
265
|
-
}
|
266
|
-
total
|
267
|
-
}
|
268
|
-
}
|
269
|
-
`
|
270
|
-
})
|
227
|
+
const dataItems = this.dataSet.dataItems || []
|
271
228
|
|
272
229
|
return {
|
273
|
-
total:
|
274
|
-
records:
|
230
|
+
total: dataItems.length,
|
231
|
+
records: dataItems
|
275
232
|
}
|
276
233
|
}
|
277
234
|
|
278
235
|
async _updateDataItems() {
|
279
|
-
|
280
|
-
if (patches && patches.length) {
|
281
|
-
patches = patches.map(patch => {
|
282
|
-
var patchField = {}
|
283
|
-
const dirtyFields = patch.__dirtyfields__
|
284
|
-
for (let key in dirtyFields) {
|
285
|
-
patchField[key] = dirtyFields[key].after
|
286
|
-
}
|
287
|
-
|
288
|
-
return { ...patch.__origin__, ...patchField }
|
289
|
-
})
|
290
|
-
|
291
|
-
const response = await client.mutate({
|
292
|
-
mutation: gql`
|
293
|
-
mutation ($dataSetId: String!, $patches: [DataItemPatch!]!) {
|
294
|
-
updateMultipleDataItem(dataSetId: $dataSetId, patches: $patches) {
|
295
|
-
name
|
296
|
-
}
|
297
|
-
}
|
298
|
-
`,
|
299
|
-
variables: {
|
300
|
-
dataSetId: this.dataSet.id,
|
301
|
-
patches
|
302
|
-
}
|
303
|
-
})
|
304
|
-
|
305
|
-
if (!response.errors) {
|
306
|
-
this.grist.fetch()
|
307
|
-
}
|
308
|
-
}
|
309
|
-
}
|
310
|
-
|
311
|
-
async _deleteDataItems() {
|
312
|
-
if (!confirm(i18next.t('text.sure_to_x', { x: i18next.t('text.delete') }))) return
|
313
|
-
|
314
|
-
const ids = this.grist.selected.map(record => record.id)
|
315
|
-
if (!(ids && ids.length > 0)) return
|
236
|
+
this.grist.commit()
|
316
237
|
|
317
238
|
const response = await client.mutate({
|
318
239
|
mutation: gql`
|
319
|
-
mutation ($
|
320
|
-
|
240
|
+
mutation ($id: String!, $patch: DataSetPatch!) {
|
241
|
+
updateDataSet(id: $id, patch: $patch) {
|
242
|
+
name
|
243
|
+
}
|
321
244
|
}
|
322
245
|
`,
|
323
246
|
variables: {
|
324
|
-
|
247
|
+
id: this.dataSet.id,
|
248
|
+
patch: {
|
249
|
+
dataItems: this.grist.data.records,
|
250
|
+
cuFlag: 'M'
|
251
|
+
}
|
325
252
|
}
|
326
253
|
})
|
327
254
|
|
328
|
-
if (response.errors)
|
255
|
+
if (!response.errors) {
|
256
|
+
await document.dispatchEvent(
|
257
|
+
new CustomEvent('notify', {
|
258
|
+
detail: {
|
259
|
+
message: i18next.t('text.info_x_successfully', {
|
260
|
+
x: i18next.t('button.save')
|
261
|
+
})
|
262
|
+
}
|
263
|
+
})
|
264
|
+
)
|
265
|
+
}
|
266
|
+
}
|
267
|
+
|
268
|
+
async _deleteDataItems() {
|
269
|
+
if (!confirm(i18next.t('text.sure_to_x', { x: i18next.t('text.delete') }))) {
|
270
|
+
return
|
271
|
+
}
|
329
272
|
|
330
|
-
this.grist.
|
331
|
-
await document.dispatchEvent(
|
332
|
-
new CustomEvent('notify', {
|
333
|
-
detail: {
|
334
|
-
message: i18next.t('text.info_x_successfully', {
|
335
|
-
x: i18next.t('text.delete')
|
336
|
-
})
|
337
|
-
}
|
338
|
-
})
|
339
|
-
)
|
273
|
+
this.grist.deleteSelectedRecords(false)
|
340
274
|
}
|
341
275
|
}
|
342
276
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import '@operato/data-grist'
|
2
2
|
import './data-item-list.js'
|
3
3
|
import './data-set-importer.js'
|
4
|
-
import '
|
4
|
+
import '../../components/data-entry-form.js'
|
5
5
|
|
6
6
|
import gql from 'graphql-tag'
|
7
7
|
import { css, html } from 'lit'
|
@@ -165,7 +165,7 @@ export class DataSetListPage extends connect(store)(localize(i18next)(PageView))
|
|
165
165
|
>
|
166
166
|
<div slot="headroom">
|
167
167
|
<div id="filters">
|
168
|
-
<ox-filters-form></ox-filters-form>
|
168
|
+
<ox-filters-form autofocus></ox-filters-form>
|
169
169
|
</div>
|
170
170
|
|
171
171
|
<div id="sorters">
|
@@ -577,8 +577,8 @@ export class DataSetListPage extends connect(store)(localize(i18next)(PageView))
|
|
577
577
|
dataItems {
|
578
578
|
name
|
579
579
|
description
|
580
|
-
sequence
|
581
580
|
active
|
581
|
+
hidden
|
582
582
|
tag
|
583
583
|
type
|
584
584
|
unit
|
@@ -6,12 +6,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.createDataSample = void 0;
|
7
7
|
const moment_timezone_1 = __importDefault(require("moment-timezone"));
|
8
8
|
const shell_1 = require("@things-factory/shell");
|
9
|
-
const
|
9
|
+
const work_shift_1 = require("@things-factory/work-shift");
|
10
10
|
const data_ooc_1 = require("../service/data-ooc/data-ooc");
|
11
11
|
const data_sample_1 = require("../service/data-sample/data-sample");
|
12
12
|
const data_set_1 = require("../service/data-set/data-set");
|
13
13
|
const data_use_case_1 = require("./data-use-case");
|
14
|
-
const work_shift_1 = require("@things-factory/work-shift");
|
15
14
|
const debug = require('debug')('things-factory:dataset:controller/save-data-sample');
|
16
15
|
// parse variable javascript string pattern
|
17
16
|
const replaceVariables = (keys, dic) => {
|
@@ -41,61 +40,35 @@ async function createDataSample(dataSample, context) {
|
|
41
40
|
const dataSet = await tx.getRepository(data_set_1.DataSet).findOne({
|
42
41
|
where: { id: dataSample.dataSet.id }
|
43
42
|
});
|
44
|
-
const dataItems =
|
45
|
-
where: {
|
46
|
-
domain,
|
47
|
-
dataSet
|
48
|
-
},
|
49
|
-
order: {
|
50
|
-
sequence: 'DESC'
|
51
|
-
}
|
52
|
-
});
|
53
|
-
const spec = dataItems.reduce((spec, dataItem) => {
|
54
|
-
spec[dataItem.tag] = Object.assign(Object.assign({}, dataItem.spec), { name: dataItem.name, hidden: dataItem.hidden });
|
55
|
-
return spec;
|
56
|
-
}, {});
|
43
|
+
const dataItems = dataSet.dataItems;
|
57
44
|
const collectedAt = dataSample.collectedAt || new Date();
|
58
45
|
const timezone = dataSet.timezone || domain.timezone || 'UTC';
|
59
46
|
const format = 'YYYY-MM-DD';
|
60
47
|
// workDate ex) 2022-04-04
|
61
48
|
const { workDate, workShift } = await (0, work_shift_1.getWorkDateAndShift)(domain, collectedAt, { timezone, format });
|
62
49
|
// local time dataSet timezone or domain timezone or default 'UTC'
|
63
|
-
// const collectedAt = dataSample.collectedAt || new Date()
|
64
50
|
const localDateTz = (0, moment_timezone_1.default)(collectedAt).tz(timezone);
|
65
51
|
const defaultPartitionKeys = {
|
66
52
|
domain: domain.subdomain,
|
67
|
-
datasetid: dataSample.dataSet.id
|
68
|
-
date: localDateTz.format(format)
|
69
|
-
workdate: workDate
|
53
|
+
datasetid: dataSample.dataSet.id /* It should not be 'data_set_id' as column name duplicated for Glue */,
|
54
|
+
date: localDateTz.format(format) /* local time date */,
|
55
|
+
workdate: workDate /* working date */,
|
70
56
|
workshift: workShift
|
71
57
|
};
|
72
58
|
var partitionKeys = Object.assign(Object.assign({}, defaultPartitionKeys), dataSet.partitionKeys);
|
73
59
|
partitionKeys = formatDate(partitionKeys, localDateTz);
|
74
60
|
partitionKeys = replaceVariables(partitionKeys, Object.assign({}, dataSample.data));
|
75
|
-
const { ooc, oos } = data_use_case_1.DataUseCase.evaluate(dataSet, dataItems, dataSample.data) || {};
|
76
|
-
const result = await tx.getRepository(data_sample_1.DataSample).save(Object.assign(Object.assign({ name: dataSet.name, description: dataSet.description, useCase: dataSet.useCase }, dataSample), { domain,
|
61
|
+
const { ooc, oos, judgment } = data_use_case_1.DataUseCase.evaluate(dataSet, dataItems, dataSample.data) || {};
|
62
|
+
const result = await tx.getRepository(data_sample_1.DataSample).save(Object.assign(Object.assign({ name: dataSet.name, description: dataSet.description, useCase: dataSet.useCase }, dataSample), { dataSetVersion: dataSet.version, domain,
|
77
63
|
partitionKeys,
|
78
|
-
spec,
|
79
64
|
ooc,
|
80
65
|
oos,
|
66
|
+
judgment,
|
81
67
|
collectedAt,
|
82
68
|
workDate,
|
83
69
|
workShift, creator: user, updater: user }));
|
84
70
|
if (ooc || oos) {
|
85
|
-
const dataOoc = await tx.getRepository(data_ooc_1.DataOoc).save({
|
86
|
-
name: dataSet.name,
|
87
|
-
description: dataSet.description,
|
88
|
-
useCase: dataSet.useCase,
|
89
|
-
dataSet,
|
90
|
-
dataSample: result,
|
91
|
-
data: dataSample.data,
|
92
|
-
rawData: dataSample.rawData,
|
93
|
-
domain,
|
94
|
-
partitionKeys,
|
95
|
-
spec,
|
96
|
-
ooc,
|
97
|
-
oos,
|
98
|
-
history: [
|
71
|
+
const dataOoc = await tx.getRepository(data_ooc_1.DataOoc).save(Object.assign(Object.assign({}, result), { history: [
|
99
72
|
{
|
100
73
|
user: {
|
101
74
|
id: user.id,
|
@@ -104,14 +77,7 @@ async function createDataSample(dataSample, context) {
|
|
104
77
|
state: data_ooc_1.DataOocStatus.CREATED,
|
105
78
|
timestamp: Date.now()
|
106
79
|
}
|
107
|
-
],
|
108
|
-
state: data_ooc_1.DataOocStatus.CREATED,
|
109
|
-
workDate,
|
110
|
-
workShift,
|
111
|
-
collectedAt,
|
112
|
-
creator: user,
|
113
|
-
updater: user
|
114
|
-
});
|
80
|
+
], state: data_ooc_1.DataOocStatus.CREATED }));
|
115
81
|
shell_1.pubsub.publish('data-ooc', {
|
116
82
|
dataOoc,
|
117
83
|
supervisoryRoleId: dataSet.supervisoryRoleId
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"create-data-sample.js","sourceRoot":"","sources":["../../server/controllers/create-data-sample.ts"],"names":[],"mappings":";;;;;;AAAA,sEAAoC;AAIpC,iDAAgF;
|
1
|
+
{"version":3,"file":"create-data-sample.js","sourceRoot":"","sources":["../../server/controllers/create-data-sample.ts"],"names":[],"mappings":"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"}
|