@things-factory/dataset 5.0.0-zeta.9 → 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/{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 -2
- package/client/pages/data-ooc/data-ooc-list-page.js +12 -17
- package/client/pages/data-report/data-report-list-page.js +1 -1
- package/client/pages/data-sample/data-sample-list-page.js +11 -12
- package/client/pages/data-sensor/data-sensor-list-page.js +1 -1
- package/client/pages/data-set/data-set-list-page.js +3 -2
- package/config/config.development.js +1 -1
- package/config/config.production.js +13 -1
- package/dist-server/controllers/create-data-sample.js +4 -37
- 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/jasper-report.js +14 -9
- package/dist-server/controllers/jasper-report.js.map +1 -1
- package/dist-server/service/data-ooc/data-ooc-query.js +4 -17
- package/dist-server/service/data-ooc/data-ooc-query.js.map +1 -1
- package/dist-server/service/data-ooc/data-ooc.js +7 -15
- package/dist-server/service/data-ooc/data-ooc.js.map +1 -1
- package/dist-server/service/data-sample/data-sample-query.js +4 -4
- package/dist-server/service/data-sample/data-sample-query.js.map +1 -1
- package/dist-server/service/data-sample/data-sample.js +7 -3
- package/dist-server/service/data-sample/data-sample.js.map +1 -1
- package/dist-server/service/data-set/data-set-mutation.js +5 -22
- package/dist-server/service/data-set/data-set-mutation.js.map +1 -1
- package/dist-server/service/data-set/data-set-query.js +1 -1
- package/dist-server/service/data-set/data-set-type.js +12 -9
- package/dist-server/service/data-set/data-set-type.js.map +1 -1
- package/dist-server/service/data-set/data-set.js +1 -4
- package/dist-server/service/data-set/data-set.js.map +1 -1
- package/dist-server/service/data-set-history/data-set-history-query.js +2 -2
- package/dist-server/service/data-set-history/data-set-history-query.js.map +1 -1
- package/dist-server/service/data-set-history/data-set-history.js +46 -55
- package/dist-server/service/data-set-history/data-set-history.js.map +1 -1
- 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 +3 -1
- package/dist-server/service/data-set-history/index.js.map +1 -1
- package/dist-server/service/index.js +5 -1
- package/dist-server/service/index.js.map +1 -1
- package/package.json +18 -18
- package/server/controllers/create-data-sample.ts +5 -37
- package/server/controllers/data-use-case.ts +17 -6
- package/server/controllers/jasper-report.ts +58 -48
- package/server/service/data-ooc/data-ooc-query.ts +3 -11
- package/server/service/data-ooc/data-ooc.ts +6 -16
- package/server/service/data-sample/data-sample-query.ts +3 -3
- package/server/service/data-sample/data-sample.ts +6 -4
- package/server/service/data-set/data-set-mutation.ts +0 -31
- package/server/service/data-set/data-set-query.ts +1 -1
- package/server/service/data-set/data-set-type.ts +2 -1
- package/server/service/data-set/data-set.ts +3 -5
- package/server/service/data-set-history/data-set-history-query.ts +2 -2
- package/server/service/data-set-history/data-set-history.ts +61 -60
- package/server/service/data-set-history/event-subscriber.ts +17 -0
- package/server/service/data-set-history/index.ts +2 -0
- package/server/service/index.ts +10 -1
- package/translations/en.json +1 -1
- package/translations/ko.json +2 -2
- package/translations/ms.json +1 -1
- package/translations/zh.json +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"data-set-history.js","sourceRoot":"","sources":["../../../server/service/data-set-history/data-set-history.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,+CAAoD;AACpD,
|
1
|
+
{"version":3,"file":"data-set-history.js","sourceRoot":"","sources":["../../../server/service/data-set-history/data-set-history.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
7
|
+
};
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
9
|
+
exports.DataSetHistoryEntitySubscriber = void 0;
|
10
|
+
const typeorm_1 = require("typeorm");
|
11
|
+
const typeorm_history_1 = require("@anchan828/typeorm-history");
|
12
|
+
const data_set_1 = require("../data-set/data-set");
|
13
|
+
const data_set_history_1 = require("./data-set-history");
|
14
|
+
let DataSetHistoryEntitySubscriber = class DataSetHistoryEntitySubscriber extends typeorm_history_1.HistoryEntitySubscriber {
|
15
|
+
get entity() {
|
16
|
+
return data_set_1.DataSet;
|
17
|
+
}
|
18
|
+
get historyEntity() {
|
19
|
+
return data_set_history_1.DataSetHistory;
|
20
|
+
}
|
21
|
+
};
|
22
|
+
DataSetHistoryEntitySubscriber = __decorate([
|
23
|
+
(0, typeorm_1.EventSubscriber)()
|
24
|
+
], DataSetHistoryEntitySubscriber);
|
25
|
+
exports.DataSetHistoryEntitySubscriber = DataSetHistoryEntitySubscriber;
|
26
|
+
//# sourceMappingURL=event-subscriber.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"event-subscriber.js","sourceRoot":"","sources":["../../../server/service/data-set-history/event-subscriber.ts"],"names":[],"mappings":";;;;;;;;;AAAA,qCAAyC;AAEzC,gEAAoE;AAEpE,mDAA8C;AAC9C,yDAAmD;AAGnD,IAAa,8BAA8B,GAA3C,MAAa,8BAA+B,SAAQ,yCAAgD;IAClG,IAAW,MAAM;QACf,OAAO,kBAAO,CAAA;IAChB,CAAC;IAED,IAAW,aAAa;QACtB,OAAO,iCAAc,CAAA;IACvB,CAAC;CACF,CAAA;AARY,8BAA8B;IAD1C,IAAA,yBAAe,GAAE;GACL,8BAA8B,CAQ1C;AARY,wEAA8B"}
|
@@ -1,8 +1,10 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.resolvers = exports.entities = void 0;
|
3
|
+
exports.subscribers = exports.resolvers = exports.entities = void 0;
|
4
4
|
const data_set_history_1 = require("./data-set-history");
|
5
5
|
const data_set_history_query_1 = require("./data-set-history-query");
|
6
|
+
const event_subscriber_1 = require("./event-subscriber");
|
6
7
|
exports.entities = [data_set_history_1.DataSetHistory];
|
7
8
|
exports.resolvers = [data_set_history_query_1.DataSetHistoryQuery];
|
9
|
+
exports.subscribers = [event_subscriber_1.DataSetHistoryEntitySubscriber];
|
8
10
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/service/data-set-history/index.ts"],"names":[],"mappings":";;;AAAA,yDAAmD;AACnD,qEAA8D;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/service/data-set-history/index.ts"],"names":[],"mappings":";;;AAAA,yDAAmD;AACnD,qEAA8D;AAC9D,yDAAmE;AAEtD,QAAA,QAAQ,GAAG,CAAC,iCAAc,CAAC,CAAA;AAC3B,QAAA,SAAS,GAAG,CAAC,4CAAmB,CAAC,CAAA;AACjC,QAAA,WAAW,GAAG,CAAC,iDAA8B,CAAC,CAAA"}
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
15
|
};
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
-
exports.schema = exports.entities = void 0;
|
17
|
+
exports.schema = exports.subscribers = exports.entities = void 0;
|
18
18
|
const data_item_1 = require("./data-item");
|
19
19
|
/* IMPORT ENTITIES AND RESOLVERS */
|
20
20
|
const data_ooc_1 = require("./data-ooc");
|
@@ -41,6 +41,10 @@ exports.entities = [
|
|
41
41
|
...data_set_history_1.entities,
|
42
42
|
...data_spec_1.entities
|
43
43
|
];
|
44
|
+
exports.subscribers = [
|
45
|
+
/* SUBSCRIBERS */
|
46
|
+
...data_set_history_1.subscribers
|
47
|
+
];
|
44
48
|
exports.schema = {
|
45
49
|
resolverClasses: [
|
46
50
|
/* RESOLVER CLASSES */
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/service/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2CAA0D;AAC1D,mCAAmC;AACnC,yCAAuF;AACvF,+CAAgG;AAChG,+CAAgG;AAChG,yCAAuF;AACvF,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/service/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2CAA0D;AAC1D,mCAAmC;AACnC,yCAAuF;AACvF,+CAAgG;AAChG,+CAAgG;AAChG,yCAAuF;AACvF,yDAI2B;AAC3B,2CAA0F;AAE1F,yBAAyB;AACzB,sDAAmC;AACnC,4DAAyC;AACzC,4DAAyC;AACzC,sDAAmC;AACnC,sEAAmD;AACnD,4DAAyC;AACzC,wDAAqC;AAExB,QAAA,QAAQ,GAAG;IACtB,cAAc;IACd,GAAG,oBAAgB;IACnB,GAAG,mBAAe;IAClB,GAAG,sBAAkB;IACrB,GAAG,sBAAkB;IACrB,GAAG,mBAAe;IAClB,GAAG,2BAAsB;IACzB,GAAG,oBAAgB;CACpB,CAAA;AAEY,QAAA,WAAW,GAAG;IACzB,iBAAiB;IACjB,GAAG,8BAAyB;CAC7B,CAAA;AAEY,QAAA,MAAM,GAAG;IACpB,eAAe,EAAE;QACf,sBAAsB;QACtB,GAAG,oBAAgB;QACnB,GAAG,uBAAmB;QACtB,GAAG,uBAAmB;QACtB,GAAG,oBAAgB;QACnB,GAAG,4BAAuB;QAC1B,GAAG,qBAAiB;KACrB;CACF,CAAA"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@things-factory/dataset",
|
3
|
-
"version": "5.0.0
|
3
|
+
"version": "5.0.0",
|
4
4
|
"main": "dist-server/index.js",
|
5
5
|
"browser": "client/index.js",
|
6
6
|
"things-factory": true,
|
@@ -24,24 +24,24 @@
|
|
24
24
|
"migration:create": "node ../../node_modules/typeorm/cli.js migration:create -d ./server/migrations"
|
25
25
|
},
|
26
26
|
"dependencies": {
|
27
|
-
"@operato/app": "^1.0.0
|
28
|
-
"@operato/data-grist": "^1.0.0
|
29
|
-
"@operato/dataset": "^1.0.0
|
30
|
-
"@operato/graphql": "^1.0.0
|
31
|
-
"@operato/grist-editor": "^1.0.0
|
32
|
-
"@operato/i18n": "^1.0.0
|
33
|
-
"@operato/layout": "^1.0.0
|
34
|
-
"@operato/shell": "^1.0.0
|
35
|
-
"@operato/styles": "^1.0.0
|
36
|
-
"@operato/utils": "^1.0.0
|
37
|
-
"@things-factory/auth-base": "^5.0.0
|
38
|
-
"@things-factory/aws-base": "^5.0.0
|
39
|
-
"@things-factory/board-service": "^5.0.0
|
40
|
-
"@things-factory/env": "^5.0.0
|
41
|
-
"@things-factory/shell": "^5.0.0
|
42
|
-
"@things-factory/work-shift": "^5.0.0
|
27
|
+
"@operato/app": "^1.0.0",
|
28
|
+
"@operato/data-grist": "^1.0.0",
|
29
|
+
"@operato/dataset": "^1.0.0",
|
30
|
+
"@operato/graphql": "^1.0.0",
|
31
|
+
"@operato/grist-editor": "^1.0.0",
|
32
|
+
"@operato/i18n": "^1.0.0",
|
33
|
+
"@operato/layout": "^1.0.0",
|
34
|
+
"@operato/shell": "^1.0.0",
|
35
|
+
"@operato/styles": "^1.0.0",
|
36
|
+
"@operato/utils": "^1.0.0",
|
37
|
+
"@things-factory/auth-base": "^5.0.0",
|
38
|
+
"@things-factory/aws-base": "^5.0.0",
|
39
|
+
"@things-factory/board-service": "^5.0.0",
|
40
|
+
"@things-factory/env": "^5.0.0",
|
41
|
+
"@things-factory/shell": "^5.0.0",
|
42
|
+
"@things-factory/work-shift": "^5.0.0",
|
43
43
|
"cron-parser": "^4.3.0",
|
44
44
|
"moment-timezone": "^0.5.34"
|
45
45
|
},
|
46
|
-
"gitHead": "
|
46
|
+
"gitHead": "32cb91663e38de9ab1bb7a72af923c3bf8ac187b"
|
47
47
|
}
|
@@ -55,20 +55,6 @@ export async function createDataSample(
|
|
55
55
|
})
|
56
56
|
|
57
57
|
const dataItems = dataSet.dataItems
|
58
|
-
|
59
|
-
// TODO spec should be removed
|
60
|
-
// const spec = dataItems.reduce((spec, dataItem) => {
|
61
|
-
// spec[dataItem.tag] = {
|
62
|
-
// spec: dataItem.spec,
|
63
|
-
// name: dataItem.name,
|
64
|
-
// description: dataItem.description,
|
65
|
-
// unit: dataItem.unit,
|
66
|
-
// hidden: dataItem.hidden
|
67
|
-
// }
|
68
|
-
|
69
|
-
// return spec
|
70
|
-
// }, {})
|
71
|
-
|
72
58
|
const collectedAt = dataSample.collectedAt || new Date()
|
73
59
|
|
74
60
|
const timezone = dataSet.timezone || domain.timezone || 'UTC'
|
@@ -79,7 +65,6 @@ export async function createDataSample(
|
|
79
65
|
|
80
66
|
// local time dataSet timezone or domain timezone or default 'UTC'
|
81
67
|
|
82
|
-
// const collectedAt = dataSample.collectedAt || new Date()
|
83
68
|
const localDateTz = moment(collectedAt).tz(timezone)
|
84
69
|
const defaultPartitionKeys = {
|
85
70
|
domain: domain.subdomain,
|
@@ -99,7 +84,7 @@ export async function createDataSample(
|
|
99
84
|
...dataSample.data
|
100
85
|
})
|
101
86
|
|
102
|
-
const { ooc, oos } = DataUseCase.evaluate(dataSet, dataItems, dataSample.data) || {}
|
87
|
+
const { ooc, oos, judgment } = DataUseCase.evaluate(dataSet, dataItems, dataSample.data) || {}
|
103
88
|
const result = await tx.getRepository(DataSample).save({
|
104
89
|
name: dataSet.name,
|
105
90
|
description: dataSet.description,
|
@@ -108,9 +93,9 @@ export async function createDataSample(
|
|
108
93
|
dataSetVersion: dataSet.version,
|
109
94
|
domain,
|
110
95
|
partitionKeys,
|
111
|
-
// spec, // TODO spec should be removed
|
112
96
|
ooc,
|
113
97
|
oos,
|
98
|
+
judgment,
|
114
99
|
collectedAt,
|
115
100
|
workDate,
|
116
101
|
workShift,
|
@@ -120,19 +105,7 @@ export async function createDataSample(
|
|
120
105
|
|
121
106
|
if (ooc || oos) {
|
122
107
|
const dataOoc = await tx.getRepository(DataOoc).save({
|
123
|
-
|
124
|
-
description: dataSet.description,
|
125
|
-
useCase: dataSet.useCase,
|
126
|
-
dataSet,
|
127
|
-
dataSetVersion: dataSet.version,
|
128
|
-
dataSample: result,
|
129
|
-
data: dataSample.data,
|
130
|
-
rawData: dataSample.rawData,
|
131
|
-
domain,
|
132
|
-
partitionKeys,
|
133
|
-
// spec, // TODO spec should be removed
|
134
|
-
ooc,
|
135
|
-
oos,
|
108
|
+
...result,
|
136
109
|
history: [
|
137
110
|
{
|
138
111
|
user: {
|
@@ -143,12 +116,7 @@ export async function createDataSample(
|
|
143
116
|
timestamp: Date.now()
|
144
117
|
}
|
145
118
|
],
|
146
|
-
state: DataOocStatus.CREATED
|
147
|
-
workDate,
|
148
|
-
workShift,
|
149
|
-
collectedAt,
|
150
|
-
creator: user,
|
151
|
-
updater: user
|
119
|
+
state: DataOocStatus.CREATED
|
152
120
|
})
|
153
121
|
|
154
122
|
pubsub.publish('data-ooc', {
|
@@ -169,4 +137,4 @@ export async function createDataSample(
|
|
169
137
|
}
|
170
138
|
|
171
139
|
return result
|
172
|
-
}
|
140
|
+
}
|
@@ -14,7 +14,11 @@ export type DataItemSpecSet = {
|
|
14
14
|
specs: DataItemSpec[]
|
15
15
|
}
|
16
16
|
|
17
|
-
export type EvaluationResult = {
|
17
|
+
export type EvaluationResult = {
|
18
|
+
oos: boolean
|
19
|
+
ooc: boolean
|
20
|
+
judgment?: { [tag: string]: { ooc: boolean; oos: boolean } }
|
21
|
+
}
|
18
22
|
|
19
23
|
export abstract class DataUseCase {
|
20
24
|
static registry: { [name: string]: DataUseCase } = {}
|
@@ -34,6 +38,7 @@ export abstract class DataUseCase {
|
|
34
38
|
public static evaluate(dataSet: DataSet, dataItems: DataItem[], data: any): EvaluationResult {
|
35
39
|
var ooc = false
|
36
40
|
var oos = false
|
41
|
+
var judgment: { [tag: string]: { ooc: boolean; oos: boolean } } = {}
|
37
42
|
|
38
43
|
if (!dataSet.useCase) {
|
39
44
|
return { ooc, oos }
|
@@ -50,7 +55,7 @@ export abstract class DataUseCase {
|
|
50
55
|
}
|
51
56
|
|
52
57
|
let values: any | any[] = data[tag]
|
53
|
-
if (
|
58
|
+
if (values == null) {
|
54
59
|
continue // TODO what if in case no value ?
|
55
60
|
}
|
56
61
|
|
@@ -58,6 +63,9 @@ export abstract class DataUseCase {
|
|
58
63
|
values = [values]
|
59
64
|
}
|
60
65
|
|
66
|
+
let oocForTag = false
|
67
|
+
let oosForTag = false
|
68
|
+
|
61
69
|
for (let j = 0; j < useCases.length; j++) {
|
62
70
|
const useCase = useCases[j]
|
63
71
|
|
@@ -69,17 +77,20 @@ export abstract class DataUseCase {
|
|
69
77
|
const result = useCase.evaluate(specs, values)
|
70
78
|
|
71
79
|
if (result) {
|
80
|
+
oocForTag ||= result.ooc
|
81
|
+
oosForTag ||= result.oos
|
72
82
|
ooc ||= result.ooc
|
73
83
|
oos ||= result.oos
|
74
84
|
}
|
85
|
+
}
|
75
86
|
|
76
|
-
|
77
|
-
|
78
|
-
|
87
|
+
judgment[tag] = {
|
88
|
+
ooc: oocForTag,
|
89
|
+
oos: oosForTag
|
79
90
|
}
|
80
91
|
}
|
81
92
|
|
82
|
-
return { ooc, oos }
|
93
|
+
return { ooc, oos, judgment }
|
83
94
|
}
|
84
95
|
|
85
96
|
public abstract evaluate(specs: any, values: any[]): EvaluationResult
|
@@ -6,47 +6,53 @@ import { AthenaController } from '@things-factory/aws-base'
|
|
6
6
|
import { config } from '@things-factory/env'
|
7
7
|
|
8
8
|
const dataReportConfig = config.get('dataReport')
|
9
|
-
const {
|
10
|
-
|
11
|
-
|
12
|
-
|
9
|
+
const {
|
10
|
+
jasper: {
|
11
|
+
endpoint: { protocol: PROTOCOL, host: HOST, port: PORT },
|
12
|
+
datasource: { database: DATABASE }
|
13
|
+
}
|
14
|
+
} = dataReportConfig || {
|
15
|
+
jasper: {
|
16
|
+
endpoint: {},
|
17
|
+
datasource: {}
|
18
|
+
}
|
19
|
+
}
|
13
20
|
|
14
|
-
/** author: ywnam123 */
|
15
21
|
function transformValuesToRows(queryResult) {
|
16
22
|
var parseData = []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
}
|
23
|
+
let index = 1
|
24
|
+
for (let i = 0; i < queryResult.Items.length; i++) {
|
25
|
+
var j = 0
|
26
|
+
const data = JSON.parse(queryResult.Items[i].data)
|
27
|
+
const spec = JSON.parse(queryResult.Items[i].spec)
|
28
|
+
|
29
|
+
for (let key in data) {
|
30
|
+
if (Array.isArray(data[key])) {
|
31
|
+
for (j = 0; j < data[key].length; j++) {
|
32
|
+
for (let specKey in spec) {
|
33
|
+
if (key === specKey) {
|
34
|
+
parseData.push({
|
35
|
+
item: spec[specKey].name,
|
36
|
+
index: index + j,
|
37
|
+
value: String(data[key][j])
|
38
|
+
})
|
34
39
|
}
|
35
40
|
}
|
36
|
-
} else {
|
37
|
-
parseData.push({
|
38
|
-
item: key,
|
39
|
-
index,
|
40
|
-
value: String(data[key])
|
41
|
-
})
|
42
41
|
}
|
43
|
-
}
|
44
|
-
if (j !== 0) {
|
45
|
-
index = index + j
|
46
42
|
} else {
|
47
|
-
|
43
|
+
parseData.push({
|
44
|
+
item: key,
|
45
|
+
index,
|
46
|
+
value: String(data[key])
|
47
|
+
})
|
48
48
|
}
|
49
49
|
}
|
50
|
+
if (j !== 0) {
|
51
|
+
index = index + j
|
52
|
+
} else {
|
53
|
+
index = index + 1
|
54
|
+
}
|
55
|
+
}
|
50
56
|
}
|
51
57
|
|
52
58
|
/** @todo considering trasformation in lambda, as massive dataset */
|
@@ -61,11 +67,12 @@ function pivotData(rows) {
|
|
61
67
|
for (let key in data) {
|
62
68
|
/** @todo rule to display or not, about unspecified spec */
|
63
69
|
const value = data[key]
|
64
|
-
!
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
70
|
+
!spec[key]?.hidden &&
|
71
|
+
parsedData.push({
|
72
|
+
item: spec[key]?.name || key,
|
73
|
+
index,
|
74
|
+
value: Array.isArray(value) ? value.join(', ') : value
|
75
|
+
})
|
69
76
|
}
|
70
77
|
if (j !== 0) {
|
71
78
|
index = index + j
|
@@ -95,6 +102,7 @@ function parseJsonDataField(rows) {
|
|
95
102
|
}
|
96
103
|
|
97
104
|
const athenaClient = new AthenaController()
|
105
|
+
|
98
106
|
async function queryAthena(params) {
|
99
107
|
const { table, domain, dataSetId, fromWorkDate, toWorkDate, workShift, timezone } = params
|
100
108
|
const queryData = {
|
@@ -108,7 +116,7 @@ async function queryAthena(params) {
|
|
108
116
|
AND datasetid = '${dataSetId}'
|
109
117
|
AND workdate >= '${fromWorkDate}'
|
110
118
|
AND workdate <= '${toWorkDate}'
|
111
|
-
${workShift ?
|
119
|
+
${workShift ? "AND workshift = '" + workShift + "'" : ''}
|
112
120
|
ORDER BY collected_at`,
|
113
121
|
db: DATABASE
|
114
122
|
}
|
@@ -116,19 +124,23 @@ async function queryAthena(params) {
|
|
116
124
|
|
117
125
|
return await athenaClient.query(queryData)
|
118
126
|
}
|
119
|
-
|
120
|
-
|
127
|
+
|
128
|
+
export async function renderJasperReport(context: any) {
|
129
|
+
const {
|
130
|
+
state: { domain },
|
131
|
+
query
|
132
|
+
} = context
|
121
133
|
|
122
134
|
const template = await STORAGE.readFile(query['template'] || 'dynamic_header_sample.jrxml', 'utf-8')
|
123
135
|
let templateType = query['templateType'] || 'crosstab'
|
124
136
|
let parsedData = []
|
125
137
|
|
126
138
|
// @todo: get dataset timezone
|
127
|
-
/**
|
139
|
+
/**
|
128
140
|
* const variables = await gql(dataSet(id:${dataSetId}) {
|
129
141
|
* name, description, partition_keys, timezone
|
130
142
|
* })
|
131
|
-
|
143
|
+
*/
|
132
144
|
|
133
145
|
query['domain'] = domain?.subdomain
|
134
146
|
query['timezone'] = domain?.timezone
|
@@ -137,8 +149,7 @@ export async function renderJasperReport(context: any) {
|
|
137
149
|
|
138
150
|
if (!rows.length) {
|
139
151
|
return '<h3>Not found result.</h3>'
|
140
|
-
}
|
141
|
-
else {
|
152
|
+
} else {
|
142
153
|
const firstRow = rows[0]
|
143
154
|
// uses the first row values as data-set has no history data.
|
144
155
|
const parameters = {
|
@@ -146,18 +157,18 @@ export async function renderJasperReport(context: any) {
|
|
146
157
|
description: firstRow.description,
|
147
158
|
...query
|
148
159
|
}
|
149
|
-
|
160
|
+
|
150
161
|
if (templateType === 'crosstab') {
|
151
162
|
parsedData = pivotData(rows)
|
152
163
|
} else {
|
153
164
|
parsedData = parseJsonDataField(rows)
|
154
165
|
}
|
155
|
-
|
166
|
+
|
156
167
|
const formData = new FormData()
|
157
168
|
formData.append('template', template)
|
158
169
|
formData.append('jsonString', JSON.stringify(parsedData))
|
159
170
|
formData.append('parameters', JSON.stringify(parameters))
|
160
|
-
|
171
|
+
|
161
172
|
const reportUrl = `${PROTOCOL || 'http'}://${HOST}:${PORT}/rest/report/show_html`
|
162
173
|
const response = await fetch(reportUrl, {
|
163
174
|
method: 'POST',
|
@@ -166,5 +177,4 @@ export async function renderJasperReport(context: any) {
|
|
166
177
|
|
167
178
|
return await response.text()
|
168
179
|
}
|
169
|
-
|
170
180
|
}
|
@@ -4,7 +4,6 @@ import { getRepository } from 'typeorm'
|
|
4
4
|
import { User } from '@things-factory/auth-base'
|
5
5
|
import { Domain, getQueryBuilderFromListParams, ListParam } from '@things-factory/shell'
|
6
6
|
|
7
|
-
import { DataSample } from '../data-sample/data-sample'
|
8
7
|
import { DataSetHistory } from '../data-set-history/data-set-history'
|
9
8
|
import { DataItem } from '../data-set/data-item-type'
|
10
9
|
import { DataSet } from '../data-set/data-set'
|
@@ -41,14 +40,14 @@ export class DataOocQuery {
|
|
41
40
|
}
|
42
41
|
|
43
42
|
@FieldResolver(type => [DataItem])
|
44
|
-
async
|
43
|
+
async dataItems(@Root() dataOoc: DataOoc): Promise<DataItem[]> {
|
45
44
|
const dataSetHistory: DataSetHistory = await getRepository(DataSetHistory).findOne({
|
46
45
|
where: {
|
47
|
-
|
46
|
+
originalId: dataOoc.dataSetId,
|
48
47
|
version: dataOoc.dataSetVersion
|
49
48
|
}
|
50
49
|
})
|
51
|
-
return dataSetHistory?.dataItems ||
|
50
|
+
return dataSetHistory?.dataItems || []
|
52
51
|
}
|
53
52
|
|
54
53
|
@FieldResolver(type => DataSet)
|
@@ -58,13 +57,6 @@ export class DataOocQuery {
|
|
58
57
|
})
|
59
58
|
}
|
60
59
|
|
61
|
-
@FieldResolver(type => DataSample)
|
62
|
-
async dataSample(@Root() dataOoc: DataOoc): Promise<DataSample> {
|
63
|
-
return await getRepository(DataSample).findOne({
|
64
|
-
id: dataOoc.dataSampleId
|
65
|
-
})
|
66
|
-
}
|
67
|
-
|
68
60
|
@FieldResolver(type => Domain)
|
69
61
|
async domain(@Root() dataOoc: DataOoc): Promise<Domain> {
|
70
62
|
return await getRepository(Domain).findOne(dataOoc.domainId)
|
@@ -4,9 +4,7 @@ import {
|
|
4
4
|
CreateDateColumn,
|
5
5
|
Entity,
|
6
6
|
Index,
|
7
|
-
JoinColumn,
|
8
7
|
ManyToOne,
|
9
|
-
OneToOne,
|
10
8
|
PrimaryGeneratedColumn,
|
11
9
|
RelationId,
|
12
10
|
UpdateDateColumn
|
@@ -16,7 +14,7 @@ import { User } from '@things-factory/auth-base'
|
|
16
14
|
import { config } from '@things-factory/env'
|
17
15
|
import { Domain, ScalarObject } from '@things-factory/shell'
|
18
16
|
|
19
|
-
import {
|
17
|
+
import { DataItem } from '../data-set/data-item-type'
|
20
18
|
import { DataSet } from '../data-set/data-set'
|
21
19
|
|
22
20
|
const ORMCONFIG = config.get('ormconfig', {})
|
@@ -34,9 +32,7 @@ registerEnumType(DataOocStatus, {
|
|
34
32
|
})
|
35
33
|
|
36
34
|
@Entity()
|
37
|
-
@Index('ix_data_ooc_0', (dataOoc: DataOoc) => [dataOoc.domain, dataOoc.dataSet], { unique: false })
|
38
|
-
@Index('ix_data_ooc_1', (dataOoc: DataOoc) => [dataOoc.domain, dataOoc.dataSample], { unique: true })
|
39
|
-
@Index('ix_data_ooc_2', (dataOoc: DataOoc) => [dataOoc.domain, dataOoc.collectedAt], { unique: false })
|
35
|
+
@Index('ix_data_ooc_0', (dataOoc: DataOoc) => [dataOoc.domain, dataOoc.dataSet, dataOoc.collectedAt], { unique: false })
|
40
36
|
@ObjectType({ description: 'Entity for Out of control data' })
|
41
37
|
export class DataOoc {
|
42
38
|
@PrimaryGeneratedColumn('uuid')
|
@@ -71,14 +67,6 @@ export class DataOoc {
|
|
71
67
|
@Field({ nullable: true })
|
72
68
|
dataSetVersion?: number
|
73
69
|
|
74
|
-
@OneToOne(type => DataSample)
|
75
|
-
@JoinColumn()
|
76
|
-
@Field(type => DataSample, { nullable: true })
|
77
|
-
dataSample?: DataSample
|
78
|
-
|
79
|
-
@RelationId((dataOoc: DataOoc) => dataOoc.dataSample)
|
80
|
-
dataSampleId?: string
|
81
|
-
|
82
70
|
@Column({
|
83
71
|
nullable: true
|
84
72
|
})
|
@@ -129,10 +117,12 @@ export class DataOoc {
|
|
129
117
|
@Field(type => ScalarObject, { nullable: true })
|
130
118
|
data?: ScalarObject
|
131
119
|
|
132
|
-
// TODO spec should be removed
|
133
120
|
@Column('simple-json', { nullable: true })
|
134
121
|
@Field(type => ScalarObject, { nullable: true })
|
135
|
-
|
122
|
+
judgment?: ScalarObject
|
123
|
+
|
124
|
+
@Field(type => [DataItem], { nullable: true })
|
125
|
+
dataItems?: DataItem[]
|
136
126
|
|
137
127
|
@Column('simple-json', { nullable: true })
|
138
128
|
@Field(type => ScalarObject, { nullable: true })
|
@@ -40,14 +40,14 @@ export class DataSampleQuery {
|
|
40
40
|
}
|
41
41
|
|
42
42
|
@FieldResolver(type => [DataItem])
|
43
|
-
async
|
43
|
+
async dataItems(@Root() dataSample: DataSample): Promise<DataItem[]> {
|
44
44
|
const dataSetHistory: DataSetHistory = await getRepository(DataSetHistory).findOne({
|
45
45
|
where: {
|
46
|
-
|
46
|
+
originalId: dataSample.dataSetId,
|
47
47
|
version: dataSample.dataSetVersion
|
48
48
|
}
|
49
49
|
})
|
50
|
-
return dataSetHistory?.dataItems ||
|
50
|
+
return dataSetHistory?.dataItems || []
|
51
51
|
}
|
52
52
|
|
53
53
|
@FieldResolver(type => DataSet)
|
@@ -14,14 +14,14 @@ import { User } from '@things-factory/auth-base'
|
|
14
14
|
import { config } from '@things-factory/env'
|
15
15
|
import { Domain, ScalarObject } from '@things-factory/shell'
|
16
16
|
|
17
|
+
import { DataItem } from '../data-set/data-item-type'
|
17
18
|
import { DataSet } from '../data-set/data-set'
|
18
19
|
|
19
20
|
const ORMCONFIG = config.get('ormconfig', {})
|
20
21
|
const DATABASE_TYPE = ORMCONFIG.type
|
21
22
|
@Entity()
|
22
|
-
@Index('ix_data_sample_0', (dataSample: DataSample) => [dataSample.domain, dataSample.dataSet], { unique: false })
|
23
23
|
@Index(
|
24
|
-
'
|
24
|
+
'ix_data_sample_0',
|
25
25
|
(dataSample: DataSample) => [dataSample.domain, dataSample.dataSet, dataSample.collectedAt],
|
26
26
|
{ unique: false }
|
27
27
|
)
|
@@ -79,10 +79,12 @@ export class DataSample {
|
|
79
79
|
@Field(type => ScalarObject, { nullable: true })
|
80
80
|
data?: ScalarObject
|
81
81
|
|
82
|
-
// TODO spec should be removed
|
83
82
|
@Column('simple-json', { nullable: true })
|
84
83
|
@Field(type => ScalarObject, { nullable: true })
|
85
|
-
|
84
|
+
judgment?: ScalarObject
|
85
|
+
|
86
|
+
@Field(type => [DataItem], { nullable: true })
|
87
|
+
dataItems?: DataItem[]
|
86
88
|
|
87
89
|
@Column({
|
88
90
|
nullable: true,
|