@things-factory/dataset 5.0.2 → 5.0.5

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 (60) hide show
  1. package/client/pages/data-key-set/data-key-item-list.js +196 -0
  2. package/client/pages/data-key-set/data-key-set-importer.js +107 -0
  3. package/client/pages/data-key-set/data-key-set-list-page.js +354 -0
  4. package/client/pages/data-ooc/data-ooc-list-page.js +60 -0
  5. package/client/pages/data-sample/data-sample-list-page.js +55 -16
  6. package/client/pages/data-sample/data-sample-search-page.js +402 -0
  7. package/client/pages/data-sample/data-sample-view.js +48 -33
  8. package/client/pages/data-set/data-set-list-page.js +20 -1
  9. package/client/route.js +9 -1
  10. package/dist-server/controllers/create-data-sample.js +15 -3
  11. package/dist-server/controllers/create-data-sample.js.map +1 -1
  12. package/dist-server/service/data-key-set/data-key-item-type.js +58 -0
  13. package/dist-server/service/data-key-set/data-key-item-type.js.map +1 -0
  14. package/dist-server/service/data-key-set/data-key-set-mutation.js +179 -0
  15. package/dist-server/service/data-key-set/data-key-set-mutation.js.map +1 -0
  16. package/dist-server/service/data-key-set/data-key-set-query.js +110 -0
  17. package/dist-server/service/data-key-set/data-key-set-query.js.map +1 -0
  18. package/dist-server/service/data-key-set/data-key-set-type.js +94 -0
  19. package/dist-server/service/data-key-set/data-key-set-type.js.map +1 -0
  20. package/dist-server/service/data-key-set/data-key-set.js +101 -0
  21. package/dist-server/service/data-key-set/data-key-set.js.map +1 -0
  22. package/dist-server/service/data-key-set/index.js +9 -0
  23. package/dist-server/service/data-key-set/index.js.map +1 -0
  24. package/dist-server/service/data-ooc/data-ooc.js +32 -0
  25. package/dist-server/service/data-ooc/data-ooc.js.map +1 -1
  26. package/dist-server/service/data-sample/data-sample-query.js +29 -1
  27. package/dist-server/service/data-sample/data-sample-query.js.map +1 -1
  28. package/dist-server/service/data-sample/data-sample.js +42 -0
  29. package/dist-server/service/data-sample/data-sample.js.map +1 -1
  30. package/dist-server/service/data-set/data-item-type.js +1 -1
  31. package/dist-server/service/data-set/data-item-type.js.map +1 -1
  32. package/dist-server/service/data-set/data-set-query.js +14 -0
  33. package/dist-server/service/data-set/data-set-query.js.map +1 -1
  34. package/dist-server/service/data-set/data-set-type.js +14 -6
  35. package/dist-server/service/data-set/data-set-type.js.map +1 -1
  36. package/dist-server/service/data-set/data-set.js +32 -54
  37. package/dist-server/service/data-set/data-set.js.map +1 -1
  38. package/dist-server/service/index.js +4 -1
  39. package/dist-server/service/index.js.map +1 -1
  40. package/package.json +2 -2
  41. package/server/controllers/create-data-sample.ts +19 -12
  42. package/server/service/data-key-set/data-key-item-type.ts +31 -0
  43. package/server/service/data-key-set/data-key-set-mutation.ts +198 -0
  44. package/server/service/data-key-set/data-key-set-query.ts +65 -0
  45. package/server/service/data-key-set/data-key-set-type.ts +57 -0
  46. package/server/service/data-key-set/data-key-set.ts +81 -0
  47. package/server/service/data-key-set/index.ts +6 -0
  48. package/server/service/data-ooc/data-ooc.ts +20 -0
  49. package/server/service/data-sample/data-sample-query.ts +29 -0
  50. package/server/service/data-sample/data-sample.ts +34 -0
  51. package/server/service/data-set/data-item-type.ts +1 -1
  52. package/server/service/data-set/data-set-query.ts +11 -0
  53. package/server/service/data-set/data-set-type.ts +6 -0
  54. package/server/service/data-set/data-set.ts +24 -48
  55. package/server/service/index.ts +4 -1
  56. package/things-factory.config.js +8 -0
  57. package/translations/en.json +11 -0
  58. package/translations/ko.json +11 -0
  59. package/translations/ms.json +12 -1
  60. package/translations/zh.json +11 -0
@@ -8,13 +8,14 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
- var _a, _b, _c, _d, _e, _f;
11
+ var _a, _b, _c, _d, _e, _f, _g;
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  exports.DataSet = exports.DataSetReportType = exports.DataSetMonitorType = exports.DataSetEntryType = void 0;
14
14
  const type_graphql_1 = require("type-graphql");
15
15
  const typeorm_1 = require("typeorm");
16
16
  const auth_base_1 = require("@things-factory/auth-base");
17
17
  const shell_1 = require("@things-factory/shell");
18
+ const data_key_set_1 = require("../data-key-set/data-key-set");
18
19
  const data_item_type_1 = require("./data-item-type");
19
20
  var DataSetEntryType;
20
21
  (function (DataSetEntryType) {
@@ -74,9 +75,7 @@ __decorate([
74
75
  __metadata("design:type", String)
75
76
  ], DataSet.prototype, "name", void 0);
76
77
  __decorate([
77
- (0, typeorm_1.Column)({
78
- nullable: true
79
- }),
78
+ (0, typeorm_1.Column)({ nullable: true }),
80
79
  (0, type_graphql_1.Field)({ nullable: true }),
81
80
  __metadata("design:type", String)
82
81
  ], DataSet.prototype, "description", void 0);
@@ -86,80 +85,69 @@ __decorate([
86
85
  __metadata("design:type", Number)
87
86
  ], DataSet.prototype, "version", void 0);
88
87
  __decorate([
89
- (0, typeorm_1.Column)({
90
- nullable: true
91
- }),
88
+ (0, typeorm_1.Column)({ nullable: true }),
92
89
  (0, type_graphql_1.Field)({ nullable: true }),
93
90
  __metadata("design:type", Boolean)
94
91
  ], DataSet.prototype, "active", void 0);
95
92
  __decorate([
96
- (0, typeorm_1.ManyToOne)(type => auth_base_1.Role, {
97
- nullable: true
98
- }),
99
- (0, type_graphql_1.Field)(type => auth_base_1.Role, { nullable: true }),
93
+ (0, typeorm_1.ManyToOne)(type => data_key_set_1.DataKeySet, { nullable: true }),
94
+ (0, type_graphql_1.Field)(type => data_key_set_1.DataKeySet, { nullable: true }),
100
95
  __metadata("design:type", typeof (_b = typeof auth_base_1.Role !== "undefined" && auth_base_1.Role) === "function" ? _b : Object)
96
+ ], DataSet.prototype, "dataKeySet", void 0);
97
+ __decorate([
98
+ (0, typeorm_1.RelationId)((dataSet) => dataSet.dataKeySet),
99
+ __metadata("design:type", String)
100
+ ], DataSet.prototype, "dataKeySetId", void 0);
101
+ __decorate([
102
+ (0, typeorm_1.ManyToOne)(type => auth_base_1.Role, { nullable: true }),
103
+ (0, type_graphql_1.Field)(type => auth_base_1.Role, { nullable: true }),
104
+ __metadata("design:type", typeof (_c = typeof auth_base_1.Role !== "undefined" && auth_base_1.Role) === "function" ? _c : Object)
101
105
  ], DataSet.prototype, "entryRole", void 0);
102
106
  __decorate([
103
107
  (0, typeorm_1.RelationId)((dataSet) => dataSet.entryRole),
104
108
  __metadata("design:type", String)
105
109
  ], DataSet.prototype, "entryRoleId", void 0);
106
110
  __decorate([
107
- (0, typeorm_1.ManyToOne)(type => auth_base_1.Role, {
108
- nullable: true
109
- }),
111
+ (0, typeorm_1.ManyToOne)(type => auth_base_1.Role, { nullable: true }),
110
112
  (0, type_graphql_1.Field)(type => auth_base_1.Role, { nullable: true }),
111
- __metadata("design:type", typeof (_c = typeof auth_base_1.Role !== "undefined" && auth_base_1.Role) === "function" ? _c : Object)
113
+ __metadata("design:type", typeof (_d = typeof auth_base_1.Role !== "undefined" && auth_base_1.Role) === "function" ? _d : Object)
112
114
  ], DataSet.prototype, "supervisoryRole", void 0);
113
115
  __decorate([
114
116
  (0, typeorm_1.RelationId)((dataSet) => dataSet.supervisoryRole),
115
117
  __metadata("design:type", String)
116
118
  ], DataSet.prototype, "supervisoryRoleId", void 0);
117
119
  __decorate([
118
- (0, typeorm_1.Column)({
119
- nullable: true
120
- }),
120
+ (0, typeorm_1.Column)({ nullable: true }),
121
121
  (0, type_graphql_1.Field)({ nullable: true }),
122
122
  __metadata("design:type", String)
123
123
  ], DataSet.prototype, "type", void 0);
124
124
  __decorate([
125
- (0, typeorm_1.Column)({
126
- nullable: true
127
- }),
125
+ (0, typeorm_1.Column)({ nullable: true }),
128
126
  (0, type_graphql_1.Field)({ nullable: true }),
129
127
  __metadata("design:type", String)
130
128
  ], DataSet.prototype, "entryType", void 0);
131
129
  __decorate([
132
- (0, typeorm_1.Column)({
133
- nullable: true
134
- }),
130
+ (0, typeorm_1.Column)({ nullable: true }),
135
131
  (0, type_graphql_1.Field)({ nullable: true }),
136
132
  __metadata("design:type", String)
137
133
  ], DataSet.prototype, "entryView", void 0);
138
134
  __decorate([
139
- (0, typeorm_1.Column)({
140
- nullable: true
141
- }),
135
+ (0, typeorm_1.Column)({ nullable: true }),
142
136
  (0, type_graphql_1.Field)({ nullable: true }),
143
137
  __metadata("design:type", String)
144
138
  ], DataSet.prototype, "monitorType", void 0);
145
139
  __decorate([
146
- (0, typeorm_1.Column)({
147
- nullable: true
148
- }),
140
+ (0, typeorm_1.Column)({ nullable: true }),
149
141
  (0, type_graphql_1.Field)({ nullable: true }),
150
142
  __metadata("design:type", String)
151
143
  ], DataSet.prototype, "monitorView", void 0);
152
144
  __decorate([
153
- (0, typeorm_1.Column)({
154
- nullable: true
155
- }),
145
+ (0, typeorm_1.Column)({ nullable: true }),
156
146
  (0, type_graphql_1.Field)({ nullable: true }),
157
147
  __metadata("design:type", String)
158
148
  ], DataSet.prototype, "reportType", void 0);
159
149
  __decorate([
160
- (0, typeorm_1.Column)({
161
- nullable: true
162
- }),
150
+ (0, typeorm_1.Column)({ nullable: true }),
163
151
  (0, type_graphql_1.Field)({ nullable: true }),
164
152
  __metadata("design:type", String)
165
153
  ], DataSet.prototype, "reportView", void 0);
@@ -168,16 +156,14 @@ __decorate([
168
156
  __metadata("design:type", String)
169
157
  ], DataSet.prototype, "reportTemplate", void 0);
170
158
  __decorate([
171
- (0, typeorm_1.Column)({
172
- nullable: true
173
- }),
159
+ (0, typeorm_1.Column)({ nullable: true }),
174
160
  (0, type_graphql_1.Field)({ nullable: true }),
175
161
  __metadata("design:type", String)
176
162
  ], DataSet.prototype, "useCase", void 0);
177
163
  __decorate([
178
164
  (0, typeorm_1.Column)('simple-json', { nullable: true }),
179
165
  (0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true }),
180
- __metadata("design:type", typeof (_d = typeof shell_1.ScalarObject !== "undefined" && shell_1.ScalarObject) === "function" ? _d : Object)
166
+ __metadata("design:type", typeof (_e = typeof shell_1.ScalarObject !== "undefined" && shell_1.ScalarObject) === "function" ? _e : Object)
181
167
  ], DataSet.prototype, "partitionKeys", void 0);
182
168
  __decorate([
183
169
  (0, typeorm_1.Column)('simple-json', { nullable: true }),
@@ -185,16 +171,12 @@ __decorate([
185
171
  __metadata("design:type", Array)
186
172
  ], DataSet.prototype, "dataItems", void 0);
187
173
  __decorate([
188
- (0, typeorm_1.Column)({
189
- nullable: true
190
- }),
174
+ (0, typeorm_1.Column)({ nullable: true }),
191
175
  (0, type_graphql_1.Field)({ nullable: true }),
192
176
  __metadata("design:type", String)
193
177
  ], DataSet.prototype, "schedule", void 0);
194
178
  __decorate([
195
- (0, typeorm_1.Column)({
196
- nullable: true
197
- }),
179
+ (0, typeorm_1.Column)({ nullable: true }),
198
180
  (0, type_graphql_1.Field)({ nullable: true }),
199
181
  __metadata("design:type", String)
200
182
  ], DataSet.prototype, "timezone", void 0);
@@ -209,22 +191,18 @@ __decorate([
209
191
  __metadata("design:type", Date)
210
192
  ], DataSet.prototype, "updatedAt", void 0);
211
193
  __decorate([
212
- (0, typeorm_1.ManyToOne)(type => auth_base_1.User, {
213
- nullable: true
214
- }),
194
+ (0, typeorm_1.ManyToOne)(type => auth_base_1.User, { nullable: true }),
215
195
  (0, type_graphql_1.Field)({ nullable: true }),
216
- __metadata("design:type", typeof (_e = typeof auth_base_1.User !== "undefined" && auth_base_1.User) === "function" ? _e : Object)
196
+ __metadata("design:type", typeof (_f = typeof auth_base_1.User !== "undefined" && auth_base_1.User) === "function" ? _f : Object)
217
197
  ], DataSet.prototype, "creator", void 0);
218
198
  __decorate([
219
199
  (0, typeorm_1.RelationId)((dataSet) => dataSet.creator),
220
200
  __metadata("design:type", String)
221
201
  ], DataSet.prototype, "creatorId", void 0);
222
202
  __decorate([
223
- (0, typeorm_1.ManyToOne)(type => auth_base_1.User, {
224
- nullable: true
225
- }),
203
+ (0, typeorm_1.ManyToOne)(type => auth_base_1.User, { nullable: true }),
226
204
  (0, type_graphql_1.Field)({ nullable: true }),
227
- __metadata("design:type", typeof (_f = typeof auth_base_1.User !== "undefined" && auth_base_1.User) === "function" ? _f : Object)
205
+ __metadata("design:type", typeof (_g = typeof auth_base_1.User !== "undefined" && auth_base_1.User) === "function" ? _g : Object)
228
206
  ], DataSet.prototype, "updater", void 0);
229
207
  __decorate([
230
208
  (0, typeorm_1.RelationId)((dataSet) => dataSet.creator),
@@ -1 +1 @@
1
- {"version":3,"file":"data-set.js","sourceRoot":"","sources":["../../../server/service/data-set/data-set.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,+CAAsE;AACtE,qCAUgB;AAEhB,yDAAsD;AACtD,iDAA4D;AAE5D,qDAA2C;AAE3C,IAAY,gBAKX;AALD,WAAY,gBAAgB;IAC1B,2CAAuB,CAAA;IACvB,mCAAe,CAAA;IACf,iCAAa,CAAA;IACb,4CAAwB,CAAA;AAC1B,CAAC,EALW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAK3B;AAED,IAAA,+BAAgB,EAAC,gBAAgB,EAAE;IACjC,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE,qCAAqC;CACnD,CAAC,CAAA;AAEF,IAAY,kBAKX;AALD,WAAY,kBAAkB;IAC5B,6CAAuB,CAAA;IACvB,qCAAe,CAAA;IACf,mCAAa,CAAA;IACb,8CAAwB,CAAA;AAC1B,CAAC,EALW,kBAAkB,GAAlB,0BAAkB,KAAlB,0BAAkB,QAK7B;AAED,IAAA,+BAAgB,EAAC,kBAAkB,EAAE;IACnC,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE,uCAAuC;CACrD,CAAC,CAAA;AAEF,IAAY,iBAKX;AALD,WAAY,iBAAiB;IAC3B,4CAAuB,CAAA;IACvB,oCAAe,CAAA;IACf,kCAAa,CAAA;IACb,6CAAwB,CAAA;AAC1B,CAAC,EALW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAK5B;AAED,IAAA,+BAAgB,EAAC,iBAAiB,EAAE;IAClC,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE,sCAAsC;CACpD,CAAC,CAAA;AAKF,IAAa,OAAO,GAApB,MAAa,OAAO;IAApB;QAwBE,YAAO,GAAY,CAAC,CAAA;IA0HtB,CAAC;CAAA,CAAA;AA/IC;IAFC,IAAA,gCAAsB,EAAC,MAAM,CAAC;IAC9B,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAE,CAAC;;mCACC;AAInB;IAFC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;IACzB,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;kDACjB,cAAM,oBAAN,cAAM;uCAAA;AAGf;IADC,IAAA,oBAAU,EAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;;yCAChC;AAIjB;IAFC,IAAA,gBAAM,GAAE;IACR,IAAA,oBAAK,GAAE;;qCACI;AAMZ;IAJC,IAAA,gBAAM,EAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;4CACN;AAIpB;IAFC,IAAA,uBAAa,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAC7C,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;wCACN;AAMpB;IAJC,IAAA,gBAAM,EAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;uCACV;AAMhB;IAJC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE;QACvB,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;kDAC5B,gBAAI,oBAAJ,gBAAI;0CAAA;AAGhB;IADC,IAAA,oBAAU,EAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;;4CAChC;AAMpB;IAJC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE;QACvB,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;kDACtB,gBAAI,oBAAJ,gBAAI;gDAAA;AAGtB;IADC,IAAA,oBAAU,EAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC;;kDAChC;AAM1B;IAJC,IAAA,gBAAM,EAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qCACY;AAMtC;IAJC,IAAA,gBAAM,EAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;0CACE;AAM5B;IAJC,IAAA,gBAAM,EAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;0CACR;AAMlB;IAJC,IAAA,gBAAM,EAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;4CACM;AAMhC;IAJC,IAAA,gBAAM,EAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;4CACN;AAMpB;IAJC,IAAA,gBAAM,EAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CACI;AAM9B;IAJC,IAAA,gBAAM,EAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CACP;AAGnB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACH;AAMvB;IAJC,IAAA,gBAAM,EAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;wCACV;AAIhB;IAFC,IAAA,gBAAM,EAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACzC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,oBAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;kDAChC,oBAAY,oBAAZ,oBAAY;8CAAA;AAI5B;IAFC,IAAA,gBAAM,EAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACzC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,yBAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;0CACzB;AAMrB;IAJC,IAAA,gBAAM,EAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;yCACT;AAMjB;IAJC,IAAA,gBAAM,EAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;yCACT;AAIjB;IAFC,IAAA,0BAAgB,GAAE;IAClB,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACd,IAAI;0CAAA;AAIhB;IAFC,IAAA,0BAAgB,GAAE;IAClB,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACd,IAAI;0CAAA;AAMhB;IAJC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE;QACvB,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;kDAChB,gBAAI,oBAAJ,gBAAI;wCAAA;AAGd;IADC,IAAA,oBAAU,EAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;;0CAChC;AAMlB;IAJC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE;QACvB,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;kDAChB,gBAAI,oBAAJ,gBAAI;wCAAA;AAGd;IADC,IAAA,oBAAU,EAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;;0CAChC;AAjJP,OAAO;IAHnB,IAAA,gBAAM,GAAE;IACR,IAAA,eAAK,EAAC,eAAe,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC9F,IAAA,yBAAU,EAAC,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAC;GACrC,OAAO,CAkJnB;AAlJY,0BAAO"}
1
+ {"version":3,"file":"data-set.js","sourceRoot":"","sources":["../../../server/service/data-set/data-set.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.schema = exports.subscribers = exports.entities = void 0;
18
18
  const data_item_1 = require("./data-item");
19
- /* IMPORT ENTITIES AND RESOLVERS */
19
+ const data_key_set_1 = require("./data-key-set");
20
20
  const data_ooc_1 = require("./data-ooc");
21
21
  const data_sample_1 = require("./data-sample");
22
22
  const data_sensor_1 = require("./data-sensor");
@@ -24,6 +24,7 @@ const data_set_1 = require("./data-set");
24
24
  const data_set_history_1 = require("./data-set-history");
25
25
  const data_spec_1 = require("./data-spec");
26
26
  /* EXPORT ENTITY TYPES */
27
+ __exportStar(require("./data-key-set/data-key-set"), exports);
27
28
  __exportStar(require("./data-ooc/data-ooc"), exports);
28
29
  __exportStar(require("./data-sensor/data-sensor"), exports);
29
30
  __exportStar(require("./data-sample/data-sample"), exports);
@@ -33,6 +34,7 @@ __exportStar(require("./data-set/data-item-type"), exports);
33
34
  __exportStar(require("./data-spec/data-spec"), exports);
34
35
  exports.entities = [
35
36
  /* ENTITIES */
37
+ ...data_key_set_1.entities,
36
38
  ...data_item_1.entities,
37
39
  ...data_ooc_1.entities,
38
40
  ...data_sensor_1.entities,
@@ -48,6 +50,7 @@ exports.subscribers = [
48
50
  exports.schema = {
49
51
  resolverClasses: [
50
52
  /* RESOLVER CLASSES */
53
+ ...data_key_set_1.resolvers,
51
54
  ...data_ooc_1.resolvers,
52
55
  ...data_sensor_1.resolvers,
53
56
  ...data_sample_1.resolvers,
@@ -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,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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/service/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2CAA0D;AAC1D,iDAAiG;AACjG,yCAAuF;AACvF,+CAAgG;AAChG,+CAAgG;AAChG,yCAAuF;AACvF,yDAI2B;AAC3B,2CAA0F;AAE1F,yBAAyB;AACzB,8DAA2C;AAC3C,sDAAmC;AACnC,4DAAyC;AACzC,4DAAyC;AACzC,sDAAmC;AACnC,sEAAmD;AACnD,4DAAyC;AACzC,wDAAqC;AAExB,QAAA,QAAQ,GAAG;IACtB,cAAc;IACd,GAAG,uBAAkB;IACrB,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,wBAAmB;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.2",
3
+ "version": "5.0.5",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
@@ -43,5 +43,5 @@
43
43
  "cron-parser": "^4.3.0",
44
44
  "moment-timezone": "^0.5.34"
45
45
  },
46
- "gitHead": "009cda6cb65e0930988fb2b1c1a309b9a7973383"
46
+ "gitHead": "6a82800ed0252cf65918e2fe934ad3f3ba72e153"
47
47
  }
@@ -13,6 +13,17 @@ import { DataUseCase } from './data-use-case'
13
13
 
14
14
  const debug = require('debug')('things-factory:dataset:controller/save-data-sample')
15
15
 
16
+ const fillDataKeys = (dataKeySet, data) => {
17
+ const keys = dataKeySet?.dataKeyItems || []
18
+ return keys.reduce((sum, key, index) => {
19
+ const value = data[key.dataKey]
20
+ if (value != null) {
21
+ sum[`key0${index + 1}`] = value instanceof Array ? value[0] : value
22
+ }
23
+ return sum
24
+ }, {})
25
+ }
26
+
16
27
  // parse variable javascript string pattern
17
28
  const replaceVariables = (keys, dic) => {
18
29
  for (const k in keys) {
@@ -40,18 +51,13 @@ const formatDate = (keys, _moment) => {
40
51
 
41
52
  export async function createDataSample(
42
53
  dataSample: NewDataSample,
43
- context: {
44
- state: {
45
- domain: Domain
46
- user: User
47
- tx: EntityManager
48
- }
49
- }
54
+ context: { state: { domain: Domain; user: User; tx: EntityManager } }
50
55
  ): Promise<DataSample> {
51
56
  const { domain, user, tx } = context.state
52
57
 
53
58
  const dataSet = await tx.getRepository(DataSet).findOne({
54
- where: { id: dataSample.dataSet.id }
59
+ where: { id: dataSample.dataSet.id },
60
+ relations: ['dataKeySet']
55
61
  })
56
62
 
57
63
  const dataItems = dataSet.dataItems
@@ -80,9 +86,9 @@ export async function createDataSample(
80
86
  }
81
87
 
82
88
  partitionKeys = formatDate(partitionKeys, localDateTz)
83
- partitionKeys = replaceVariables(partitionKeys, {
84
- ...dataSample.data
85
- })
89
+ partitionKeys = replaceVariables(partitionKeys, dataSample.data)
90
+
91
+ const dataKeys = fillDataKeys(dataSet?.dataKeySet, dataSample.data)
86
92
 
87
93
  const { ooc, oos, judgment } = DataUseCase.evaluate(dataSet, dataItems, dataSample.data) || {}
88
94
  const result = await tx.getRepository(DataSample).save({
@@ -90,6 +96,7 @@ export async function createDataSample(
90
96
  description: dataSet.description,
91
97
  useCase: dataSet.useCase,
92
98
  ...dataSample,
99
+ ...dataKeys,
93
100
  dataSetVersion: dataSet.version,
94
101
  domain,
95
102
  partitionKeys,
@@ -137,4 +144,4 @@ export async function createDataSample(
137
144
  }
138
145
 
139
146
  return result
140
- }
147
+ }
@@ -0,0 +1,31 @@
1
+ import { Field, InputType, ObjectType } from 'type-graphql'
2
+
3
+ @ObjectType({ description: 'Entity for DataKeyItem' })
4
+ export class DataKeyItem {
5
+ @Field()
6
+ name: string
7
+
8
+ @Field({ nullable: true })
9
+ description?: string
10
+
11
+ @Field({ nullable: true })
12
+ dataKey: string
13
+
14
+ @Field({ nullable: true })
15
+ tKey?: string
16
+ }
17
+
18
+ @InputType()
19
+ export class DataKeyItemPatch {
20
+ @Field({ nullable: true })
21
+ name?: string
22
+
23
+ @Field({ nullable: true })
24
+ description?: string
25
+
26
+ @Field({ nullable: true })
27
+ dataKey?: string
28
+
29
+ @Field({ nullable: true })
30
+ tKey?: string
31
+ }
@@ -0,0 +1,198 @@
1
+ import { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'
2
+ import { getRepository, In } from 'typeorm'
3
+
4
+ import { createAttachment, deleteAttachmentsByRef } from '@things-factory/attachment-base'
5
+
6
+ import { DataKeySet } from './data-key-set'
7
+ import { NewDataKeySet, DataKeySetPatch } from './data-key-set-type'
8
+
9
+ @Resolver(DataKeySet)
10
+ export class DataKeySetMutation {
11
+ @Directive('@transaction')
12
+ @Mutation(returns => DataKeySet, { description: 'To create new DataKeySet' })
13
+ async createDataKeySet(@Arg('dataKeySet') dataKeySet: NewDataKeySet, @Ctx() context: any): Promise<DataKeySet> {
14
+ const { domain, user, tx } = context.state
15
+
16
+ const result = await tx.getRepository(DataKeySet).save({
17
+ ...dataKeySet,
18
+ domain,
19
+ creator: user,
20
+ updater: user
21
+ })
22
+
23
+ if (dataKeySet.thumbnail) {
24
+ await createAttachment(
25
+ null,
26
+ {
27
+ attachment: {
28
+ file: dataKeySet.thumbnail,
29
+ refType: DataKeySet.name,
30
+ refBy: result.id
31
+ }
32
+ },
33
+ context
34
+ )
35
+ }
36
+
37
+ return result
38
+ }
39
+
40
+ @Directive('@transaction')
41
+ @Mutation(returns => DataKeySet, { description: 'To modify DataKeySet information' })
42
+ async updateDataKeySet(
43
+ @Arg('id') id: string,
44
+ @Arg('patch') patch: DataKeySetPatch,
45
+ @Ctx() context: any
46
+ ): Promise<DataKeySet> {
47
+ const { domain, user, tx } = context.state
48
+
49
+ const repository = tx.getRepository(DataKeySet)
50
+ const dataKeySet = await repository.findOne({
51
+ where: { domain, id }
52
+ })
53
+
54
+ const result = await repository.save({
55
+ ...dataKeySet,
56
+ ...patch,
57
+ updater: user
58
+ })
59
+
60
+ if (patch.thumbnail) {
61
+ await deleteAttachmentsByRef(null, { refBys: [result.id] }, context)
62
+ await createAttachment(
63
+ null,
64
+ {
65
+ attachment: {
66
+ file: patch.thumbnail,
67
+ refType: DataKeySet.name,
68
+ refBy: result.id
69
+ }
70
+ },
71
+ context
72
+ )
73
+ }
74
+
75
+ return result
76
+ }
77
+
78
+ @Directive('@transaction')
79
+ @Mutation(returns => [DataKeySet], { description: "To modify multiple DataKeySets' information" })
80
+ async updateMultipleDataKeySet(
81
+ @Arg('patches', type => [DataKeySetPatch]) patches: DataKeySetPatch[],
82
+ @Ctx() context: any
83
+ ): Promise<DataKeySet[]> {
84
+ const { domain, user, tx } = context.state
85
+
86
+ let results = []
87
+ const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')
88
+ const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')
89
+ const dataKeySetRepo = tx.getRepository(DataKeySet)
90
+
91
+ if (_createRecords.length > 0) {
92
+ for (let i = 0; i < _createRecords.length; i++) {
93
+ const newRecord = _createRecords[i]
94
+
95
+ const result = await dataKeySetRepo.save({
96
+ ...newRecord,
97
+ domain,
98
+ creator: user,
99
+ updater: user
100
+ })
101
+
102
+ if (newRecord.thumbnail) {
103
+ await createAttachment(
104
+ null,
105
+ {
106
+ attachment: {
107
+ file: newRecord.thumbnail,
108
+ refType: DataKeySet.name,
109
+ refBy: result.id
110
+ }
111
+ },
112
+ context
113
+ )
114
+ }
115
+
116
+ results.push({ ...result, cuFlag: '+' })
117
+ }
118
+ }
119
+
120
+ if (_updateRecords.length > 0) {
121
+ for (let i = 0; i < _updateRecords.length; i++) {
122
+ const updateRecord = _updateRecords[i]
123
+ const dataKeySet = await dataKeySetRepo.findOne(updateRecord.id)
124
+
125
+ const result = await dataKeySetRepo.save({
126
+ ...dataKeySet,
127
+ ...updateRecord,
128
+ updater: user
129
+ })
130
+
131
+ if (updateRecord.thumbnail) {
132
+ await deleteAttachmentsByRef(null, { refBys: [result.id] }, context)
133
+ await createAttachment(
134
+ null,
135
+ {
136
+ attachment: {
137
+ file: updateRecord.thumbnail,
138
+ refType: DataKeySet.name,
139
+ refBy: result.id
140
+ }
141
+ },
142
+ context
143
+ )
144
+ }
145
+
146
+ results.push({ ...result, cuFlag: 'M' })
147
+ }
148
+ }
149
+
150
+ return results
151
+ }
152
+
153
+ @Directive('@transaction')
154
+ @Mutation(returns => Boolean, { description: 'To delete DataKeySet' })
155
+ async deleteDataKeySet(@Arg('id') id: string, @Ctx() context: any): Promise<boolean> {
156
+ const { domain, tx } = context.state
157
+
158
+ await tx.getRepository(DataKeySet).delete({ domain, id })
159
+ await deleteAttachmentsByRef(null, { refBys: [id] }, context)
160
+
161
+ return true
162
+ }
163
+
164
+ @Directive('@transaction')
165
+ @Mutation(returns => Boolean, { description: 'To delete multiple DataKeySets' })
166
+ async deleteDataKeySets(
167
+ @Arg('ids', type => [String]) ids: string[],
168
+ @Ctx() context: any
169
+ ): Promise<boolean> {
170
+ const { domain, tx } = context.state
171
+
172
+ await tx.getRepository(DataKeySet).delete({
173
+ domain,
174
+ id: In(ids)
175
+ })
176
+
177
+ await deleteAttachmentsByRef(null, { refBys: ids }, context)
178
+
179
+ return true
180
+ }
181
+
182
+ @Directive('@transaction')
183
+ @Mutation(returns => Boolean, { description: 'To import multiple DataKeySets' })
184
+ async importDataKeySets(
185
+ @Arg('dataKeySets', type => [DataKeySetPatch]) dataKeySets: DataKeySetPatch[],
186
+ @Ctx() context: any
187
+ ): Promise<boolean> {
188
+ const { domain, tx } = context.state
189
+
190
+ await Promise.all(
191
+ dataKeySets.map(async (dataKeySet: DataKeySetPatch) => {
192
+ const createdDataKeySet: DataKeySet = await tx.getRepository(DataKeySet).save({ domain, ...dataKeySet })
193
+ })
194
+ )
195
+
196
+ return true
197
+ }
198
+ }
@@ -0,0 +1,65 @@
1
+ import { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'
2
+ import { getRepository } from 'typeorm'
3
+
4
+ import { Attachment } from '@things-factory/attachment-base'
5
+ import { User } from '@things-factory/auth-base'
6
+ import { Domain, getQueryBuilderFromListParams, ListParam } from '@things-factory/shell'
7
+
8
+ import { DataKeySet } from './data-key-set'
9
+ import { DataKeySetList } from './data-key-set-type'
10
+
11
+ @Resolver(DataKeySet)
12
+ export class DataKeySetQuery {
13
+ @Query(returns => DataKeySet!, { nullable: true, description: 'To fetch a DataKeySet' })
14
+ async dataKeySet(@Arg('id') id: string, @Ctx() context: any): Promise<DataKeySet> {
15
+ const { domain } = context.state
16
+
17
+ return await getRepository(DataKeySet).findOne({
18
+ where: { domain, id }
19
+ })
20
+ }
21
+
22
+ @Query(returns => DataKeySetList, { description: 'To fetch multiple DataKeySets' })
23
+ async dataKeySets(@Args() params: ListParam, @Ctx() context: any): Promise<DataKeySetList> {
24
+ const { domain } = context.state
25
+
26
+ const queryBuilder = getQueryBuilderFromListParams({
27
+ domain,
28
+ params,
29
+ repository: await getRepository(DataKeySet),
30
+ searchables: ['name', 'description']
31
+ })
32
+
33
+ const [items, total] = await queryBuilder.getManyAndCount()
34
+
35
+ return { items, total }
36
+ }
37
+
38
+ @FieldResolver(type => String)
39
+ async thumbnail(@Root() dataKeySet: DataKeySet): Promise<string | undefined> {
40
+ const attachment: Attachment = await getRepository(Attachment).findOne({
41
+ where: {
42
+ domain: dataKeySet.domainId,
43
+ refType: DataKeySet.name,
44
+ refBy: dataKeySet.id
45
+ }
46
+ })
47
+
48
+ return attachment?.fullpath
49
+ }
50
+
51
+ @FieldResolver(type => Domain)
52
+ async domain(@Root() dataKeySet: DataKeySet): Promise<Domain> {
53
+ return await getRepository(Domain).findOne(dataKeySet.domainId)
54
+ }
55
+
56
+ @FieldResolver(type => User)
57
+ async updater(@Root() dataKeySet: DataKeySet): Promise<User> {
58
+ return await getRepository(User).findOne(dataKeySet.updaterId)
59
+ }
60
+
61
+ @FieldResolver(type => User)
62
+ async creator(@Root() dataKeySet: DataKeySet): Promise<User> {
63
+ return await getRepository(User).findOne(dataKeySet.creatorId)
64
+ }
65
+ }