@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.
Files changed (94) hide show
  1. package/client/bootstrap.js +2 -3
  2. package/client/{pages/data-entry → components}/data-entry-form.js +1 -1
  3. package/client/index.js +1 -0
  4. package/client/pages/data-entry/data-entry-list-page.js +2 -3
  5. package/client/pages/data-ooc/data-ooc-list-page.js +13 -18
  6. package/client/pages/data-ooc/data-ooc-view.js +19 -14
  7. package/client/pages/data-report/data-report-list-page.js +1 -2
  8. package/client/pages/data-sample/data-sample-list-page.js +12 -13
  9. package/client/pages/data-sample/data-sample-view.js +3 -2
  10. package/client/pages/data-sensor/data-sensor-list-page.js +1 -1
  11. package/client/pages/data-set/data-item-list.js +32 -98
  12. package/client/pages/data-set/data-set-list-page.js +3 -3
  13. package/config/config.development.js +1 -1
  14. package/config/config.production.js +13 -1
  15. package/dist-server/controllers/create-data-sample.js +10 -44
  16. package/dist-server/controllers/create-data-sample.js.map +1 -1
  17. package/dist-server/controllers/data-use-case.js +11 -5
  18. package/dist-server/controllers/data-use-case.js.map +1 -1
  19. package/dist-server/controllers/index.js +1 -1
  20. package/dist-server/controllers/index.js.map +1 -1
  21. package/dist-server/controllers/jasper-report.js +14 -9
  22. package/dist-server/controllers/jasper-report.js.map +1 -1
  23. package/dist-server/service/data-item/index.js +1 -4
  24. package/dist-server/service/data-item/index.js.map +1 -1
  25. package/dist-server/service/data-ooc/data-ooc-query.js +15 -10
  26. package/dist-server/service/data-ooc/data-ooc-query.js.map +1 -1
  27. package/dist-server/service/data-ooc/data-ooc-type.js +4 -0
  28. package/dist-server/service/data-ooc/data-ooc-type.js.map +1 -1
  29. package/dist-server/service/data-ooc/data-ooc.js +11 -14
  30. package/dist-server/service/data-ooc/data-ooc.js.map +1 -1
  31. package/dist-server/service/data-sample/data-sample-query.js +18 -0
  32. package/dist-server/service/data-sample/data-sample-query.js.map +1 -1
  33. package/dist-server/service/data-sample/data-sample-type.js +4 -0
  34. package/dist-server/service/data-sample/data-sample-type.js.map +1 -1
  35. package/dist-server/service/data-sample/data-sample.js +12 -3
  36. package/dist-server/service/data-sample/data-sample.js.map +1 -1
  37. package/dist-server/service/{data-item → data-set}/data-item-type.js +60 -33
  38. package/dist-server/service/data-set/data-item-type.js.map +1 -0
  39. package/dist-server/service/data-set/data-set-mutation.js +21 -61
  40. package/dist-server/service/data-set/data-set-mutation.js.map +1 -1
  41. package/dist-server/service/data-set/data-set-query.js +4 -0
  42. package/dist-server/service/data-set/data-set-query.js.map +1 -1
  43. package/dist-server/service/data-set/data-set-type.js +21 -9
  44. package/dist-server/service/data-set/data-set-type.js.map +1 -1
  45. package/dist-server/service/data-set/data-set.js +11 -3
  46. package/dist-server/service/data-set/data-set.js.map +1 -1
  47. package/dist-server/service/data-set-history/data-set-history-query.js +173 -0
  48. package/dist-server/service/data-set-history/data-set-history-query.js.map +1 -0
  49. package/dist-server/service/data-set-history/data-set-history-type.js +29 -0
  50. package/dist-server/service/data-set-history/data-set-history-type.js.map +1 -0
  51. package/dist-server/service/data-set-history/data-set-history.js +196 -0
  52. package/dist-server/service/data-set-history/data-set-history.js.map +1 -0
  53. package/dist-server/service/data-set-history/event-subscriber.js +26 -0
  54. package/dist-server/service/data-set-history/event-subscriber.js.map +1 -0
  55. package/dist-server/service/data-set-history/index.js +10 -0
  56. package/dist-server/service/data-set-history/index.js.map +1 -0
  57. package/dist-server/service/index.js +11 -4
  58. package/dist-server/service/index.js.map +1 -1
  59. package/package.json +18 -17
  60. package/server/controllers/create-data-sample.ts +13 -50
  61. package/server/controllers/data-use-case.ts +19 -7
  62. package/server/controllers/index.ts +1 -1
  63. package/server/controllers/jasper-report.ts +58 -48
  64. package/server/service/data-item/index.ts +0 -3
  65. package/server/service/data-ooc/data-ooc-query.ts +13 -8
  66. package/server/service/data-ooc/data-ooc-type.ts +3 -0
  67. package/server/service/data-ooc/data-ooc.ts +9 -14
  68. package/server/service/data-sample/data-sample-query.ts +14 -1
  69. package/server/service/data-sample/data-sample-type.ts +3 -0
  70. package/server/service/data-sample/data-sample.ts +10 -3
  71. package/server/service/data-set/data-item-type.ts +82 -0
  72. package/server/service/data-set/data-set-mutation.ts +33 -60
  73. package/server/service/data-set/data-set-query.ts +5 -0
  74. package/server/service/data-set/data-set-type.ts +9 -1
  75. package/server/service/data-set/data-set.ts +8 -4
  76. package/server/service/data-set-history/data-set-history-query.ts +110 -0
  77. package/server/service/data-set-history/data-set-history-type.ts +12 -0
  78. package/server/service/data-set-history/data-set-history.ts +161 -0
  79. package/server/service/data-set-history/event-subscriber.ts +17 -0
  80. package/server/service/data-set-history/index.ts +7 -0
  81. package/server/service/index.ts +16 -4
  82. package/translations/en.json +5 -5
  83. package/translations/ko.json +10 -10
  84. package/translations/ms.json +5 -5
  85. package/translations/zh.json +5 -5
  86. package/dist-server/service/data-item/data-item-mutation.js +0 -73
  87. package/dist-server/service/data-item/data-item-mutation.js.map +0 -1
  88. package/dist-server/service/data-item/data-item-query.js +0 -104
  89. package/dist-server/service/data-item/data-item-query.js.map +0 -1
  90. package/dist-server/service/data-item/data-item-type.js.map +0 -1
  91. package/server/service/data-item/data-item-mutation.ts +0 -61
  92. package/server/service/data-item/data-item-query.ts +0 -58
  93. package/server/service/data-item/data-item-type.ts +0 -57
  94. package/yarn-error.log +0 -23244
@@ -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/app/grist-editor/ox-grist-editor-partition-keys.js'
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', 'spec', 'correctiveAction', 'corrector', 'correctedAt', 'collectedAt', 'creator']
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.state'),
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: 'updatedAt',
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
- dataSample {
333
- id
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
- state
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
- ${state === 'CREATED' || state === 'REVIEWED'
86
- ? html`
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
- : html``}
93
+ : html``
94
+ }
93
95
 
94
96
  <div class="button-container">
95
- ${state === 'CREATED'
96
- ? html`<mwc-button raised @click=${() => this._processOoc('REVIEWED')}
97
- >${i18next.t('button.reviewed')}</mwc-button
98
- >`
99
- : state === 'REVIEWED'
100
- ? html`<mwc-button raised @click=${() => this._processOoc('CORRECTED')}
101
- >${i18next.t('button.corrected')}</mwc-button
102
- >`
103
- : html``}
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', 'spec', 'updater', 'updatedAt'] },
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: 'updatedAt',
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 {
@@ -73,13 +73,14 @@ class DataSampleView extends localize(i18next)(LitElement) {
73
73
  description
74
74
  useCase
75
75
  dataItems {
76
- id
77
76
  name
78
77
  description
79
78
  active
80
- unit
81
79
  tag
82
80
  type
81
+ unit
82
+ options
83
+ quota
83
84
  spec
84
85
  }
85
86
  }
@@ -76,7 +76,7 @@ export class DataSensorListPage extends connect(store)(localize(i18next)(PageVie
76
76
  >
77
77
  <div slot="headroom">
78
78
  <div id="filters">
79
- <ox-filters-form></ox-filters-form>
79
+ <ox-filters-form autofocus></ox-filters-form>
80
80
  </div>
81
81
 
82
82
  <div id="sorters">
@@ -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 response = await client.query({
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: response.data.dataItems.total || 0,
274
- records: response.data.dataItems.items || []
230
+ total: dataItems.length,
231
+ records: dataItems
275
232
  }
276
233
  }
277
234
 
278
235
  async _updateDataItems() {
279
- let patches = this.grist._data.records
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 ($ids: [String!]!) {
320
- deleteDataItems(ids: $ids)
240
+ mutation ($id: String!, $patch: DataSetPatch!) {
241
+ updateDataSet(id: $id, patch: $patch) {
242
+ name
243
+ }
321
244
  }
322
245
  `,
323
246
  variables: {
324
- ids
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) return
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.fetch()
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 '../data-entry/data-entry-form.js'
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,7 +6,7 @@ module.exports = {
6
6
  port: 8090
7
7
  },
8
8
  datasource: {
9
- database: 'things-factory'
9
+ database: ''
10
10
  }
11
11
  }
12
12
  }
@@ -1 +1,13 @@
1
- module.exports = {}
1
+ module.exports = {
2
+ dataReport: {
3
+ jasper: {
4
+ endpoint: {
5
+ host: 'localhost',
6
+ port: 8090
7
+ },
8
+ datasource: {
9
+ database: ''
10
+ }
11
+ }
12
+ }
13
+ }
@@ -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 data_item_1 = require("../service/data-item/data-item");
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 = await tx.getRepository(data_item_1.DataItem).find({
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":"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"}
1
+ {"version":3,"file":"create-data-sample.js","sourceRoot":"","sources":["../../server/controllers/create-data-sample.ts"],"names":[],"mappings":"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"}