@things-factory/dataset 4.4.0-alpha.0 → 4.4.0-alpha.1

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.
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.renderJasperReport = void 0;
7
+ const form_data_1 = __importDefault(require("form-data"));
8
+ const node_fetch_1 = __importDefault(require("node-fetch"));
9
+ const attachment_base_1 = require("@things-factory/attachment-base");
10
+ const aws_base_1 = require("@things-factory/aws-base");
11
+ const env_1 = require("@things-factory/env");
12
+ const dataReportConfig = env_1.config.get('dataReport');
13
+ const { jasper: { endpoint: { protocol, host, port }, datasource: { database } } } = dataReportConfig;
14
+ /** author: ywnam123 */
15
+ function transformValuesToRows(queryResult) {
16
+ var parseData = [];
17
+ let index = 1;
18
+ for (let i = 0; i < queryResult.Items.length; i++) {
19
+ var j = 0;
20
+ const data = JSON.parse(queryResult.Items[i].data);
21
+ const spec = JSON.parse(queryResult.Items[i].spec);
22
+ for (let key in data) {
23
+ if (Array.isArray(data[key])) {
24
+ for (j = 0; j < data[key].length; j++) {
25
+ for (let specKey in spec) {
26
+ if (key === specKey) {
27
+ parseData.push({
28
+ item: spec[specKey].name,
29
+ index: index + j,
30
+ value: String(data[key][j])
31
+ });
32
+ }
33
+ }
34
+ }
35
+ }
36
+ else {
37
+ parseData.push({
38
+ item: key,
39
+ index,
40
+ value: String(data[key])
41
+ });
42
+ }
43
+ }
44
+ if (j !== 0) {
45
+ index = index + j;
46
+ }
47
+ else {
48
+ index = index + 1;
49
+ }
50
+ }
51
+ }
52
+ /** @todo considering trasformation in lambda, as massive dataset */
53
+ function pivotData(rows) {
54
+ var _a, _b;
55
+ var parseData = [];
56
+ let index = 1;
57
+ for (let i = 0; i < rows.length; i++) {
58
+ var j = 0;
59
+ const data = JSON.parse(rows[i].data);
60
+ const spec = JSON.parse(rows[i].spec);
61
+ for (let key in data) {
62
+ /** @todo rule to display or not, about unspecified spec */
63
+ const value = data[key];
64
+ !((_a = spec[key]) === null || _a === void 0 ? void 0 : _a.hidden) && parseData.push({
65
+ item: ((_b = spec[key]) === null || _b === void 0 ? void 0 : _b.name) || key,
66
+ index,
67
+ value: Array.isArray(value) ? value.join(', ') : value
68
+ });
69
+ }
70
+ if (j !== 0) {
71
+ index = index + j;
72
+ }
73
+ else {
74
+ index = index + 1;
75
+ }
76
+ }
77
+ return parseData;
78
+ }
79
+ const athenaClient = new aws_base_1.AthenaController();
80
+ async function queryAthena(params) {
81
+ const queryData = {
82
+ sql: `select data, spec, from_unixtime(collected_at/1000/1000) collected_at
83
+ from ${params['table']}
84
+ where domain='${params['domain']}'
85
+ and datasetid = '${params['dataSetId']}'
86
+ and workdate >= '${params['fromWorkDate']}'
87
+ and workdate <= '${params['toWorkDate']}'
88
+ and workshift = '${params['workShift'] || 'NA'}'
89
+ order by collected_at`,
90
+ db: database
91
+ };
92
+ // and json_extract_scalar(data, '$.dauid') = 'A8032AD81730'
93
+ return await athenaClient.query(queryData);
94
+ }
95
+ async function renderJasperReport(context) {
96
+ const { state: { domain }, query } = context;
97
+ const template = await attachment_base_1.STORAGE.readFile(query['template'] || 'dynamic_header_sample.jrxml', 'utf-8');
98
+ let templateType = 'crosstab';
99
+ let parsedData = [];
100
+ query['domain'] = domain === null || domain === void 0 ? void 0 : domain.subdomain;
101
+ const queryResult = await queryAthena(query);
102
+ const rows = queryResult.Items;
103
+ if (templateType === 'crosstab') {
104
+ parsedData = pivotData(rows);
105
+ }
106
+ else {
107
+ /** unused */
108
+ for (let i = 0; i < rows.length; i++) {
109
+ const data = JSON.parse(rows[i].data);
110
+ for (let key in data) {
111
+ if (Array.isArray(data[key])) {
112
+ data[key] = data[key].toString();
113
+ }
114
+ }
115
+ parsedData.push(data);
116
+ }
117
+ }
118
+ const formData = new form_data_1.default();
119
+ formData.append('template', template);
120
+ formData.append('jsonString', JSON.stringify(parsedData));
121
+ const reportUrl = `${protocol || 'http'}://${host}:${port}/rest/report/show_html`;
122
+ const response = await (0, node_fetch_1.default)(reportUrl, {
123
+ method: 'POST',
124
+ body: formData
125
+ });
126
+ return await response.text();
127
+ }
128
+ exports.renderJasperReport = renderJasperReport;
129
+ //# sourceMappingURL=jasper-report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jasper-report.js","sourceRoot":"","sources":["../../server/controllers/jasper-report.ts"],"names":[],"mappings":";;;;;;AAAA,0DAAgC;AAChC,4DAA8B;AAE9B,qEAAyD;AACzD,uDAA2D;AAC3D,6CAA4C;AAE5C,MAAM,gBAAgB,GAAG,YAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;AACjD,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,gBAAgB,CAAA;AAErG,uBAAuB;AACvB,SAAS,qBAAqB,CAAC,WAAW;IACxC,IAAI,SAAS,GAAG,EAAE,CAAA;IAChB,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACjD,IAAI,CAAC,GAAG,CAAC,CAAA;QACT,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAElD,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YACpB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC5B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACrC,KAAK,IAAI,OAAO,IAAI,IAAI,EAAE;wBACxB,IAAI,GAAG,KAAK,OAAO,EAAE;4BACnB,SAAS,CAAC,IAAI,CAAC;gCACb,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI;gCACxB,KAAK,EAAE,KAAK,GAAG,CAAC;gCAChB,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;6BAC5B,CAAC,CAAA;yBACH;qBACF;iBACF;aACF;iBAAM;gBACL,SAAS,CAAC,IAAI,CAAC;oBACb,IAAI,EAAE,GAAG;oBACT,KAAK;oBACL,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACzB,CAAC,CAAA;aACH;SACF;QACD,IAAI,CAAC,KAAK,CAAC,EAAE;YACX,KAAK,GAAG,KAAK,GAAG,CAAC,CAAA;SAClB;aAAM;YACL,KAAK,GAAG,KAAK,GAAG,CAAC,CAAA;SAClB;KACF;AACL,CAAC;AAED,oEAAoE;AACpE,SAAS,SAAS,CAAC,IAAI;;IACrB,IAAI,SAAS,GAAG,EAAE,CAAA;IAClB,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACpC,IAAI,CAAC,GAAG,CAAC,CAAA;QACT,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAErC,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YACpB,2DAA2D;YAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;YACvB,CAAC,CAAC,MAAA,IAAI,CAAC,GAAG,CAAC,0CAAE,MAAM,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC;gBACrC,IAAI,EAAE,CAAA,MAAA,IAAI,CAAC,GAAG,CAAC,0CAAE,IAAI,KAAI,GAAG;gBAC5B,KAAK;gBACL,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK;aACvD,CAAC,CAAA;SACH;QACD,IAAI,CAAC,KAAK,CAAC,EAAE;YACX,KAAK,GAAG,KAAK,GAAG,CAAC,CAAA;SAClB;aAAM;YACL,KAAK,GAAG,KAAK,GAAG,CAAC,CAAA;SAClB;KACF;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,YAAY,GAAG,IAAI,2BAAgB,EAAE,CAAA;AAC3C,KAAK,UAAU,WAAW,CAAC,MAAM;IAC/B,MAAM,SAAS,GAAG;QAChB,GAAG,EAAE;WACE,MAAM,CAAC,OAAO,CAAC;oBACN,MAAM,CAAC,QAAQ,CAAC;uBACb,MAAM,CAAC,WAAW,CAAC;uBACnB,MAAM,CAAC,cAAc,CAAC;uBACtB,MAAM,CAAC,YAAY,CAAC;uBACpB,MAAM,CAAC,WAAW,CAAC,IAAI,IAAI;0BACxB;QACtB,EAAE,EAAE,QAAQ;KACb,CAAA;IACD,4DAA4D;IAE5D,OAAO,MAAM,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;AAC5C,CAAC;AACM,KAAK,UAAU,kBAAkB,CAAC,OAAY;IACnD,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;IAC5C,MAAM,QAAQ,GAAG,MAAM,yBAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,6BAA6B,EAAE,OAAO,CAAC,CAAA;IACpG,IAAI,YAAY,GAAG,UAAU,CAAA;IAC7B,IAAI,UAAU,GAAG,EAAE,CAAA;IAEnB,KAAK,CAAC,QAAQ,CAAC,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,CAAA;IACnC,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,CAAA;IAC5C,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAA;IAE9B,IAAI,YAAY,KAAK,UAAU,EAAE;QAC/B,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;KAC7B;SAAM;QACL,aAAa;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;YACrC,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;gBACpB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAA;iBACjC;aACF;YACD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;SACtB;KACF;IAED,MAAM,QAAQ,GAAG,IAAI,mBAAQ,EAAE,CAAA;IAC/B,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IACrC,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAA;IAEzD,MAAM,SAAS,GAAG,GAAG,QAAQ,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,wBAAwB,CAAA;IACjF,MAAM,QAAQ,GAAG,MAAM,IAAA,oBAAK,EAAC,SAAS,EAAE;QACtC,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,QAAQ;KACf,CAAC,CAAA;IAEF,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;AAC9B,CAAC;AApCD,gDAoCC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/dataset",
3
- "version": "4.4.0-alpha.0",
3
+ "version": "4.4.0-alpha.1",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
@@ -31,8 +31,8 @@
31
31
  "@operato/shell": "^0.4.6",
32
32
  "@operato/styles": "^0.4.6",
33
33
  "@operato/utils": "^0.4.6",
34
- "@things-factory/auth-base": "^4.4.0-alpha.0",
35
- "@things-factory/shell": "^4.4.0-alpha.0"
34
+ "@things-factory/auth-base": "^4.4.0-alpha.1",
35
+ "@things-factory/shell": "^4.4.0-alpha.1"
36
36
  },
37
- "gitHead": "5972c622d8359263909c2a699c6f26978b937c8c"
37
+ "gitHead": "f54ea8e94de1e8d2f7fa722d1fd7b2bc6f96ec75"
38
38
  }