@things-factory/dataset 5.0.0-alpha.3 → 5.0.0-alpha.32

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 (99) hide show
  1. package/README.md +13 -0
  2. package/assets/data-samples.jpg +0 -0
  3. package/client/bootstrap.js +16 -1
  4. package/client/pages/data-entry/data-entry-form.js +85 -0
  5. package/client/pages/data-entry/data-entry-list-page.js +464 -0
  6. package/client/pages/data-ooc/data-ooc-list-page.js +488 -0
  7. package/client/pages/data-ooc/data-ooc-view.js +182 -0
  8. package/client/pages/{data-sample.js → data-sample/data-sample-list-page.js} +153 -59
  9. package/client/pages/data-sample/data-sample-view.js +97 -0
  10. package/client/pages/{data-sensor.js → data-sensor/data-sensor-list-page.js} +11 -16
  11. package/client/pages/{data-item-list.js → data-set/data-item-list.js} +70 -16
  12. package/client/pages/{data-set-importer.js → data-set/data-set-importer.js} +0 -0
  13. package/client/pages/{data-set.js → data-set/data-set-list-page.js} +282 -76
  14. package/client/route.js +14 -6
  15. package/dist-server/controllers/create-data-sample.js +133 -0
  16. package/dist-server/controllers/create-data-sample.js.map +1 -0
  17. package/dist-server/controllers/data-use-case.js +57 -0
  18. package/dist-server/controllers/data-use-case.js.map +1 -0
  19. package/dist-server/controllers/index.js +17 -0
  20. package/dist-server/controllers/index.js.map +1 -1
  21. package/dist-server/index.js +2 -0
  22. package/dist-server/index.js.map +1 -1
  23. package/dist-server/routes.js +9 -24
  24. package/dist-server/routes.js.map +1 -1
  25. package/dist-server/service/data-item/data-item-mutation.js +5 -1
  26. package/dist-server/service/data-item/data-item-mutation.js.map +1 -1
  27. package/dist-server/service/data-item/data-item-type.js +18 -6
  28. package/dist-server/service/data-item/data-item-type.js.map +1 -1
  29. package/dist-server/service/data-item/data-item.js +27 -7
  30. package/dist-server/service/data-item/data-item.js.map +1 -1
  31. package/dist-server/service/data-ooc/data-ooc-mutation.js +92 -0
  32. package/dist-server/service/data-ooc/data-ooc-mutation.js.map +1 -0
  33. package/dist-server/service/data-ooc/data-ooc-query.js +115 -0
  34. package/dist-server/service/data-ooc/data-ooc-query.js.map +1 -0
  35. package/dist-server/service/data-ooc/data-ooc-subscription.js +65 -0
  36. package/dist-server/service/data-ooc/data-ooc-subscription.js.map +1 -0
  37. package/dist-server/service/data-ooc/data-ooc-type.js +107 -0
  38. package/dist-server/service/data-ooc/data-ooc-type.js.map +1 -0
  39. package/dist-server/service/data-ooc/data-ooc.js +237 -0
  40. package/dist-server/service/data-ooc/data-ooc.js.map +1 -0
  41. package/dist-server/service/data-ooc/index.js +10 -0
  42. package/dist-server/service/data-ooc/index.js.map +1 -0
  43. package/dist-server/service/data-sample/data-sample-mutation.js +3 -105
  44. package/dist-server/service/data-sample/data-sample-mutation.js.map +1 -1
  45. package/dist-server/service/data-sample/data-sample-type.js +12 -42
  46. package/dist-server/service/data-sample/data-sample-type.js.map +1 -1
  47. package/dist-server/service/data-sample/data-sample.js +34 -3
  48. package/dist-server/service/data-sample/data-sample.js.map +1 -1
  49. package/dist-server/service/data-set/data-set-mutation.js +1 -2
  50. package/dist-server/service/data-set/data-set-mutation.js.map +1 -1
  51. package/dist-server/service/data-set/data-set-query.js +110 -1
  52. package/dist-server/service/data-set/data-set-query.js.map +1 -1
  53. package/dist-server/service/data-set/data-set-type.js +48 -4
  54. package/dist-server/service/data-set/data-set-type.js.map +1 -1
  55. package/dist-server/service/data-set/data-set.js +59 -15
  56. package/dist-server/service/data-set/data-set.js.map +1 -1
  57. package/dist-server/service/data-spec/data-spec-manager.js +20 -0
  58. package/dist-server/service/data-spec/data-spec-manager.js.map +1 -0
  59. package/dist-server/service/data-spec/data-spec-query.js +48 -0
  60. package/dist-server/service/data-spec/data-spec-query.js.map +1 -0
  61. package/dist-server/service/data-spec/data-spec.js +78 -0
  62. package/dist-server/service/data-spec/data-spec.js.map +1 -0
  63. package/dist-server/service/data-spec/index.js +8 -0
  64. package/dist-server/service/data-spec/index.js.map +1 -0
  65. package/dist-server/service/index.js +12 -4
  66. package/dist-server/service/index.js.map +1 -1
  67. package/package.json +18 -12
  68. package/server/controllers/create-data-sample.ts +175 -0
  69. package/server/controllers/data-use-case.ts +85 -0
  70. package/server/controllers/index.ts +1 -0
  71. package/server/index.ts +3 -0
  72. package/server/routes.ts +17 -31
  73. package/server/service/data-item/data-item-mutation.ts +6 -1
  74. package/server/service/data-item/data-item-type.ts +13 -6
  75. package/server/service/data-item/data-item.ts +21 -5
  76. package/server/service/data-ooc/data-ooc-mutation.ts +150 -0
  77. package/server/service/data-ooc/data-ooc-query.ts +63 -0
  78. package/server/service/data-ooc/data-ooc-subscription.ts +51 -0
  79. package/server/service/data-ooc/data-ooc-type.ts +68 -0
  80. package/server/service/data-ooc/data-ooc.ts +204 -0
  81. package/server/service/data-ooc/index.ts +7 -0
  82. package/server/service/data-sample/data-sample-mutation.ts +6 -128
  83. package/server/service/data-sample/data-sample-type.ts +7 -28
  84. package/server/service/data-sample/data-sample.ts +33 -3
  85. package/server/service/data-set/data-set-mutation.ts +1 -4
  86. package/server/service/data-set/data-set-query.ts +87 -2
  87. package/server/service/data-set/data-set-type.ts +37 -4
  88. package/server/service/data-set/data-set.ts +52 -12
  89. package/server/service/data-spec/data-spec-manager.ts +21 -0
  90. package/server/service/data-spec/data-spec-query.ts +21 -0
  91. package/server/service/data-spec/data-spec.ts +44 -0
  92. package/server/service/data-spec/index.ts +5 -0
  93. package/server/service/index.ts +16 -8
  94. package/things-factory.config.js +14 -6
  95. package/translations/en.json +30 -0
  96. package/translations/ko.json +30 -1
  97. package/translations/ms.json +29 -0
  98. package/translations/zh.json +29 -0
  99. package/yarn-error.log +23244 -0
@@ -8,15 +8,25 @@ 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;
11
+ var _a, _b, _c, _d, _e;
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.DataSet = void 0;
13
+ exports.DataSet = exports.DataSetViewType = 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
18
  const data_item_1 = require("../data-item/data-item");
19
- const data_sample_1 = require("../data-sample/data-sample");
19
+ var DataSetViewType;
20
+ (function (DataSetViewType) {
21
+ DataSetViewType["Generated"] = "generated";
22
+ DataSetViewType["Board"] = "board";
23
+ DataSetViewType["Page"] = "page";
24
+ DataSetViewType["ExternalURL"] = "external";
25
+ })(DataSetViewType = exports.DataSetViewType || (exports.DataSetViewType = {}));
26
+ (0, type_graphql_1.registerEnumType)(DataSetViewType, {
27
+ name: 'DataSetViewType',
28
+ description: 'view type enumeration for data-set'
29
+ });
20
30
  let DataSet = class DataSet {
21
31
  };
22
32
  __decorate([
@@ -52,6 +62,17 @@ __decorate([
52
62
  (0, type_graphql_1.Field)({ nullable: true }),
53
63
  __metadata("design:type", Boolean)
54
64
  ], DataSet.prototype, "active", void 0);
65
+ __decorate([
66
+ (0, typeorm_1.ManyToOne)(type => auth_base_1.Role, {
67
+ nullable: true
68
+ }),
69
+ (0, type_graphql_1.Field)(type => auth_base_1.Role, { nullable: true }),
70
+ __metadata("design:type", typeof (_b = typeof auth_base_1.Role !== "undefined" && auth_base_1.Role) === "function" ? _b : Object)
71
+ ], DataSet.prototype, "supervisoryRole", void 0);
72
+ __decorate([
73
+ (0, typeorm_1.RelationId)((dataSet) => dataSet.supervisoryRole),
74
+ __metadata("design:type", String)
75
+ ], DataSet.prototype, "supervisoryRoleId", void 0);
55
76
  __decorate([
56
77
  (0, typeorm_1.Column)({
57
78
  nullable: true
@@ -60,27 +81,50 @@ __decorate([
60
81
  __metadata("design:type", String)
61
82
  ], DataSet.prototype, "type", void 0);
62
83
  __decorate([
63
- (0, typeorm_1.Column)('simple-json', { nullable: true }),
64
- (0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true }),
65
- __metadata("design:type", typeof (_b = typeof shell_1.ScalarObject !== "undefined" && shell_1.ScalarObject) === "function" ? _b : Object)
66
- ], DataSet.prototype, "partitionKeys", void 0);
84
+ (0, typeorm_1.Column)({
85
+ nullable: true
86
+ }),
87
+ (0, type_graphql_1.Field)({ nullable: true }),
88
+ __metadata("design:type", String)
89
+ ], DataSet.prototype, "entryType", void 0);
90
+ __decorate([
91
+ (0, typeorm_1.Column)({
92
+ nullable: true
93
+ }),
94
+ (0, type_graphql_1.Field)({ nullable: true }),
95
+ __metadata("design:type", String)
96
+ ], DataSet.prototype, "entryView", void 0);
67
97
  __decorate([
68
98
  (0, typeorm_1.Column)({
69
99
  nullable: true
70
100
  }),
71
101
  (0, type_graphql_1.Field)({ nullable: true }),
72
102
  __metadata("design:type", String)
73
- ], DataSet.prototype, "slugger", void 0);
103
+ ], DataSet.prototype, "monitorType", void 0);
104
+ __decorate([
105
+ (0, typeorm_1.Column)({
106
+ nullable: true
107
+ }),
108
+ (0, type_graphql_1.Field)({ nullable: true }),
109
+ __metadata("design:type", String)
110
+ ], DataSet.prototype, "monitorView", void 0);
111
+ __decorate([
112
+ (0, typeorm_1.Column)({
113
+ nullable: true
114
+ }),
115
+ (0, type_graphql_1.Field)({ nullable: true }),
116
+ __metadata("design:type", String)
117
+ ], DataSet.prototype, "useCase", void 0);
118
+ __decorate([
119
+ (0, typeorm_1.Column)('simple-json', { nullable: true }),
120
+ (0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true }),
121
+ __metadata("design:type", typeof (_c = typeof shell_1.ScalarObject !== "undefined" && shell_1.ScalarObject) === "function" ? _c : Object)
122
+ ], DataSet.prototype, "partitionKeys", void 0);
74
123
  __decorate([
75
124
  (0, typeorm_1.OneToMany)(type => data_item_1.DataItem, dataItem => dataItem.dataSet),
76
125
  (0, type_graphql_1.Field)(type => [data_item_1.DataItem], { nullable: true }),
77
126
  __metadata("design:type", Array)
78
127
  ], DataSet.prototype, "dataItems", void 0);
79
- __decorate([
80
- (0, typeorm_1.OneToMany)(type => data_sample_1.DataSample, dataSample => dataSample.dataSet),
81
- (0, type_graphql_1.Field)(type => [data_sample_1.DataSample], { nullable: true }),
82
- __metadata("design:type", Array)
83
- ], DataSet.prototype, "dataSamples", void 0);
84
128
  __decorate([
85
129
  (0, typeorm_1.Column)({
86
130
  nullable: true
@@ -110,7 +154,7 @@ __decorate([
110
154
  nullable: true
111
155
  }),
112
156
  (0, type_graphql_1.Field)({ nullable: true }),
113
- __metadata("design:type", typeof (_c = typeof auth_base_1.User !== "undefined" && auth_base_1.User) === "function" ? _c : Object)
157
+ __metadata("design:type", typeof (_d = typeof auth_base_1.User !== "undefined" && auth_base_1.User) === "function" ? _d : Object)
114
158
  ], DataSet.prototype, "creator", void 0);
115
159
  __decorate([
116
160
  (0, typeorm_1.RelationId)((dataSet) => dataSet.creator),
@@ -121,7 +165,7 @@ __decorate([
121
165
  nullable: true
122
166
  }),
123
167
  (0, type_graphql_1.Field)({ nullable: true }),
124
- __metadata("design:type", typeof (_d = typeof auth_base_1.User !== "undefined" && auth_base_1.User) === "function" ? _d : Object)
168
+ __metadata("design:type", typeof (_e = typeof auth_base_1.User !== "undefined" && auth_base_1.User) === "function" ? _e : Object)
125
169
  ], DataSet.prototype, "updater", void 0);
126
170
  __decorate([
127
171
  (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":"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"}
1
+ {"version":3,"file":"data-set.js","sourceRoot":"","sources":["../../../server/service/data-set/data-set.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataSpecManager = void 0;
4
+ class DataSpecManager {
5
+ static getDataSpec(type) {
6
+ return DataSpecManager.specRegistry[type];
7
+ }
8
+ static registerDataSpec(type, dataSpec) {
9
+ DataSpecManager.specRegistry[type] = dataSpec;
10
+ }
11
+ static unregisterDataSpec(type) {
12
+ delete DataSpecManager.specRegistry[type];
13
+ }
14
+ static getDataSpecs() {
15
+ return Object.values(DataSpecManager.specRegistry);
16
+ }
17
+ }
18
+ exports.DataSpecManager = DataSpecManager;
19
+ DataSpecManager.specRegistry = {};
20
+ //# sourceMappingURL=data-spec-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-spec-manager.js","sourceRoot":"","sources":["../../../server/service/data-spec/data-spec-manager.ts"],"names":[],"mappings":";;;AAEA,MAAa,eAAe;IAG1B,MAAM,CAAC,WAAW,CAAC,IAAY;QAC7B,OAAO,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IAC3C,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,IAAY,EAAE,QAAkB;QACtD,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAA;IAC/C,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,IAAY;QACpC,OAAO,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IAC3C,CAAC;IAED,MAAM,CAAC,YAAY;QACjB,OAAO,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;IACpD,CAAC;;AAjBH,0CAkBC;AAjBQ,4BAAY,GAAiC,EAAE,CAAA"}
@@ -0,0 +1,48 @@
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
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.DataSpecQuery = void 0;
16
+ const type_graphql_1 = require("type-graphql");
17
+ const data_spec_1 = require("./data-spec");
18
+ const data_spec_manager_1 = require("./data-spec-manager");
19
+ let DataSpecQuery = class DataSpecQuery {
20
+ dataSpec(name) {
21
+ return data_spec_manager_1.DataSpecManager.getDataSpec(name);
22
+ }
23
+ dataSpecs() {
24
+ const items = data_spec_manager_1.DataSpecManager.getDataSpecs();
25
+ return {
26
+ items,
27
+ total: items.length
28
+ };
29
+ }
30
+ };
31
+ __decorate([
32
+ (0, type_graphql_1.Query)(returns => data_spec_1.DataSpec, { description: 'To fetch a data-spec' }),
33
+ __param(0, (0, type_graphql_1.Arg)('name')),
34
+ __metadata("design:type", Function),
35
+ __metadata("design:paramtypes", [String]),
36
+ __metadata("design:returntype", data_spec_1.DataSpec)
37
+ ], DataSpecQuery.prototype, "dataSpec", null);
38
+ __decorate([
39
+ (0, type_graphql_1.Query)(returns => data_spec_1.DataSpecList, { description: 'To fetch all data-specs' }),
40
+ __metadata("design:type", Function),
41
+ __metadata("design:paramtypes", []),
42
+ __metadata("design:returntype", data_spec_1.DataSpecList)
43
+ ], DataSpecQuery.prototype, "dataSpecs", null);
44
+ DataSpecQuery = __decorate([
45
+ (0, type_graphql_1.Resolver)(data_spec_1.DataSpec)
46
+ ], DataSpecQuery);
47
+ exports.DataSpecQuery = DataSpecQuery;
48
+ //# sourceMappingURL=data-spec-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-spec-query.js","sourceRoot":"","sources":["../../../server/service/data-spec/data-spec-query.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,+CAAmD;AACnD,2CAAoD;AACpD,2DAAqD;AAGrD,IAAa,aAAa,GAA1B,MAAa,aAAa;IAExB,QAAQ,CAAc,IAAY;QAChC,OAAO,mCAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IAC1C,CAAC;IAGD,SAAS;QACP,MAAM,KAAK,GAAG,mCAAe,CAAC,YAAY,EAAE,CAAA;QAE5C,OAAO;YACL,KAAK;YACL,KAAK,EAAE,KAAK,CAAC,MAAM;SACpB,CAAA;IACH,CAAC;CACF,CAAA;AAbC;IADC,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,oBAAQ,EAAE,EAAE,WAAW,EAAE,sBAAsB,EAAE,CAAC;IAC1D,WAAA,IAAA,kBAAG,EAAC,MAAM,CAAC,CAAA;;;oCAAgB,oBAAQ;6CAE5C;AAGD;IADC,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,wBAAY,EAAE,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAAC;;;oCAC9D,wBAAY;8CAOxB;AAdU,aAAa;IADzB,IAAA,uBAAQ,EAAC,oBAAQ,CAAC;GACN,aAAa,CAezB;AAfY,sCAAa"}
@@ -0,0 +1,78 @@
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
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var _a;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.DataSpecList = exports.DataSpec = exports.DataSpecItem = void 0;
14
+ const type_graphql_1 = require("type-graphql");
15
+ const shell_1 = require("@things-factory/shell");
16
+ let DataSpecItem = class DataSpecItem {
17
+ };
18
+ __decorate([
19
+ (0, type_graphql_1.Field)(),
20
+ __metadata("design:type", String)
21
+ ], DataSpecItem.prototype, "type", void 0);
22
+ __decorate([
23
+ (0, type_graphql_1.Field)(),
24
+ __metadata("design:type", String)
25
+ ], DataSpecItem.prototype, "label", void 0);
26
+ __decorate([
27
+ (0, type_graphql_1.Field)(),
28
+ __metadata("design:type", String)
29
+ ], DataSpecItem.prototype, "name", void 0);
30
+ __decorate([
31
+ (0, type_graphql_1.Field)({ nullable: true }),
32
+ __metadata("design:type", String)
33
+ ], DataSpecItem.prototype, "placeholder", void 0);
34
+ __decorate([
35
+ (0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true }),
36
+ __metadata("design:type", typeof (_a = typeof shell_1.ScalarObject !== "undefined" && shell_1.ScalarObject) === "function" ? _a : Object)
37
+ ], DataSpecItem.prototype, "property", void 0);
38
+ DataSpecItem = __decorate([
39
+ (0, type_graphql_1.ObjectType)()
40
+ ], DataSpecItem);
41
+ exports.DataSpecItem = DataSpecItem;
42
+ let DataSpec = class DataSpec {
43
+ };
44
+ __decorate([
45
+ (0, type_graphql_1.Field)(),
46
+ __metadata("design:type", String)
47
+ ], DataSpec.prototype, "name", void 0);
48
+ __decorate([
49
+ (0, type_graphql_1.Field)({ nullable: true }),
50
+ __metadata("design:type", String)
51
+ ], DataSpec.prototype, "description", void 0);
52
+ __decorate([
53
+ (0, type_graphql_1.Field)({ nullable: true }),
54
+ __metadata("design:type", String)
55
+ ], DataSpec.prototype, "help", void 0);
56
+ __decorate([
57
+ (0, type_graphql_1.Field)(type => [DataSpecItem], { nullable: true }),
58
+ __metadata("design:type", Array)
59
+ ], DataSpec.prototype, "specItems", void 0);
60
+ DataSpec = __decorate([
61
+ (0, type_graphql_1.ObjectType)()
62
+ ], DataSpec);
63
+ exports.DataSpec = DataSpec;
64
+ let DataSpecList = class DataSpecList {
65
+ };
66
+ __decorate([
67
+ (0, type_graphql_1.Field)(type => [DataSpec]),
68
+ __metadata("design:type", Array)
69
+ ], DataSpecList.prototype, "items", void 0);
70
+ __decorate([
71
+ (0, type_graphql_1.Field)(type => type_graphql_1.Int),
72
+ __metadata("design:type", Number)
73
+ ], DataSpecList.prototype, "total", void 0);
74
+ DataSpecList = __decorate([
75
+ (0, type_graphql_1.ObjectType)()
76
+ ], DataSpecList);
77
+ exports.DataSpecList = DataSpecList;
78
+ //# sourceMappingURL=data-spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-spec.js","sourceRoot":"","sources":["../../../server/service/data-spec/data-spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,+CAAqD;AACrD,iDAAoD;AAGpD,IAAa,YAAY,GAAzB,MAAa,YAAY;CAexB,CAAA;AAbC;IADC,IAAA,oBAAK,GAAE;;0CACI;AAGZ;IADC,IAAA,oBAAK,GAAE;;2CACK;AAGb;IADC,IAAA,oBAAK,GAAE;;0CACI;AAGZ;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACN;AAGpB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,oBAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;kDACrC,oBAAY,oBAAZ,oBAAY;8CAAA;AAdZ,YAAY;IADxB,IAAA,yBAAU,GAAE;GACA,YAAY,CAexB;AAfY,oCAAY;AAkBzB,IAAa,QAAQ,GAArB,MAAa,QAAQ;CAYpB,CAAA;AAVC;IADC,IAAA,oBAAK,GAAE;;sCACI;AAGZ;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACP;AAGnB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;sCACd;AAGZ;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CACzB;AAXd,QAAQ;IADpB,IAAA,yBAAU,GAAE;GACA,QAAQ,CAYpB;AAZY,4BAAQ;AAerB,IAAa,YAAY,GAAzB,MAAa,YAAY;CAMxB,CAAA;AAJC;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;;2CACT;AAGjB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,CAAC;;2CACN;AALF,YAAY;IADxB,IAAA,yBAAU,GAAE;GACA,YAAY,CAMxB;AANY,oCAAY"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolvers = exports.entities = void 0;
4
+ const data_spec_1 = require("./data-spec");
5
+ const data_spec_query_1 = require("./data-spec-query");
6
+ exports.entities = [data_spec_1.DataSpec];
7
+ exports.resolvers = [data_spec_query_1.DataSpecQuery];
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/service/data-spec/index.ts"],"names":[],"mappings":";;;AAAA,2CAAsC;AACtC,uDAAiD;AAEpC,QAAA,QAAQ,GAAG,CAAC,oBAAQ,CAAC,CAAA;AACrB,QAAA,SAAS,GAAG,CAAC,+BAAa,CAAC,CAAA"}
@@ -15,30 +15,38 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.schema = exports.entities = void 0;
18
+ const data_item_1 = require("./data-item");
18
19
  /* IMPORT ENTITIES AND RESOLVERS */
19
- const data_sensor_1 = require("./data-sensor");
20
+ const data_ooc_1 = require("./data-ooc");
20
21
  const data_sample_1 = require("./data-sample");
21
- const data_item_1 = require("./data-item");
22
+ const data_sensor_1 = require("./data-sensor");
22
23
  const data_set_1 = require("./data-set");
24
+ const data_spec_1 = require("./data-spec");
23
25
  /* EXPORT ENTITY TYPES */
26
+ __exportStar(require("./data-ooc/data-ooc"), exports);
24
27
  __exportStar(require("./data-sensor/data-sensor"), exports);
25
28
  __exportStar(require("./data-sample/data-sample"), exports);
26
29
  __exportStar(require("./data-item/data-item"), exports);
27
30
  __exportStar(require("./data-set/data-set"), exports);
31
+ __exportStar(require("./data-spec/data-spec"), exports);
28
32
  exports.entities = [
29
33
  /* ENTITIES */
34
+ ...data_ooc_1.entities,
30
35
  ...data_sensor_1.entities,
31
36
  ...data_sample_1.entities,
32
37
  ...data_item_1.entities,
33
- ...data_set_1.entities
38
+ ...data_set_1.entities,
39
+ ...data_spec_1.entities
34
40
  ];
35
41
  exports.schema = {
36
42
  resolverClasses: [
37
43
  /* RESOLVER CLASSES */
44
+ ...data_ooc_1.resolvers,
38
45
  ...data_sensor_1.resolvers,
39
46
  ...data_sample_1.resolvers,
40
47
  ...data_item_1.resolvers,
41
- ...data_set_1.resolvers
48
+ ...data_set_1.resolvers,
49
+ ...data_spec_1.resolvers
42
50
  ]
43
51
  };
44
52
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/service/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,mCAAmC;AACnC,+CAAgG;AAChG,+CAAgG;AAChG,2CAA0F;AAC1F,yCAAuF;AAEvF,yBAAyB;AACzB,4DAAyC;AACzC,4DAAyC;AACzC,wDAAqC;AACrC,sDAAmC;AAEtB,QAAA,QAAQ,GAAG;IACtB,cAAc;IACf,GAAG,sBAAkB;IACrB,GAAG,sBAAkB;IACpB,GAAG,oBAAgB;IACnB,GAAG,mBAAe;CACnB,CAAA;AAEY,QAAA,MAAM,GAAG;IACpB,eAAe,EAAE;QACf,sBAAsB;QACxB,GAAG,uBAAmB;QACtB,GAAG,uBAAmB;QACpB,GAAG,qBAAiB;QACpB,GAAG,oBAAgB;KACpB;CACF,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/service/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2CAA0F;AAC1F,mCAAmC;AACnC,yCAAuF;AACvF,+CAAgG;AAChG,+CAAgG;AAChG,yCAAuF;AACvF,2CAA0F;AAE1F,yBAAyB;AACzB,sDAAmC;AACnC,4DAAyC;AACzC,4DAAyC;AACzC,wDAAqC;AACrC,sDAAmC;AACnC,wDAAqC;AAExB,QAAA,QAAQ,GAAG;IACtB,cAAc;IACd,GAAG,mBAAe;IAClB,GAAG,sBAAkB;IACrB,GAAG,sBAAkB;IACrB,GAAG,oBAAgB;IACnB,GAAG,mBAAe;IAClB,GAAG,oBAAgB;CACpB,CAAA;AAEY,QAAA,MAAM,GAAG;IACpB,eAAe,EAAE;QACf,sBAAsB;QACtB,GAAG,oBAAgB;QACnB,GAAG,uBAAmB;QACtB,GAAG,uBAAmB;QACtB,GAAG,qBAAiB;QACpB,GAAG,oBAAgB;QACnB,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-alpha.3",
3
+ "version": "5.0.0-alpha.32",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
@@ -24,16 +24,22 @@
24
24
  "migration:create": "node ../../node_modules/typeorm/cli.js migration:create -d ./server/migrations"
25
25
  },
26
26
  "dependencies": {
27
- "@operato/data-grist": "^0.4.3",
28
- "@operato/graphql": "^0.4.3",
29
- "@operato/i18n": "^0.4.3",
30
- "@operato/layout": "^0.4.3",
31
- "@operato/shell": "^0.4.3",
32
- "@operato/styles": "^0.4.3",
33
- "@operato/utils": "^0.4.3",
34
- "@things-factory/auth-base": "^5.0.0-alpha.3",
35
- "@things-factory/env": "^5.0.0-alpha.3",
36
- "@things-factory/shell": "^5.0.0-alpha.3"
27
+ "@operato/app": "1.0.0-beta.1",
28
+ "@operato/data-grist": "1.0.0-beta.1",
29
+ "@operato/dataset": "1.0.0-beta.1",
30
+ "@operato/graphql": "1.0.0-beta.1",
31
+ "@operato/i18n": "1.0.0-beta.1",
32
+ "@operato/layout": "1.0.0-beta.1",
33
+ "@operato/shell": "1.0.0-beta.1",
34
+ "@operato/styles": "1.0.0-beta.1",
35
+ "@operato/utils": "1.0.0-beta.1",
36
+ "@things-factory/auth-base": "^5.0.0-alpha.32",
37
+ "@things-factory/board-service": "^5.0.0-alpha.32",
38
+ "@things-factory/env": "^5.0.0-alpha.32",
39
+ "@things-factory/shell": "^5.0.0-alpha.32",
40
+ "@things-factory/work-shift": "^5.0.0-alpha.32",
41
+ "cron-parser": "^4.3.0",
42
+ "moment-timezone": "^0.5.34"
37
43
  },
38
- "gitHead": "0584a36ba889ff0b426cc87c0d9c8f14ffa2f677"
44
+ "gitHead": "c29fd7ecf652108bc3a333a6e0a766c11e1ea9f0"
39
45
  }
@@ -0,0 +1,175 @@
1
+ import moment from 'moment-timezone'
2
+ import { EntityManager } from 'typeorm'
3
+
4
+ import { User } from '@things-factory/auth-base'
5
+ import { Domain, getRedirectSubdomainPath, pubsub } from '@things-factory/shell'
6
+
7
+ import { DataItem } from '../service/data-item/data-item'
8
+ import { DataOoc, DataOocStatus } from '../service/data-ooc/data-ooc'
9
+ import { DataSample } from '../service/data-sample/data-sample'
10
+ import { NewDataSample } from '../service/data-sample/data-sample-type'
11
+ import { DataSet } from '../service/data-set/data-set'
12
+ import { DataUseCase } from './data-use-case'
13
+ import { getWorkDateAndShift } from '@things-factory/work-shift'
14
+
15
+
16
+ const debug = require('debug')('things-factory:dataset:controller/save-data-sample')
17
+
18
+ // parse variable javascript string pattern
19
+ const replaceVariables = (keys, dic) => {
20
+ for (const k in keys) {
21
+ const matches = keys[k].match(/\$\{\w*\}/g)
22
+ matches &&
23
+ matches.forEach(m => {
24
+ keys[k] = keys[k].replace(m, dic[m.slice(2, -1)])
25
+ })
26
+ }
27
+ return keys
28
+ }
29
+
30
+ // It is required UTC date for Partitioning File System like AWS S3 from Athena.
31
+ // ex) %YYYY, %MM, %DD
32
+ const formatDate = (keys, _moment) => {
33
+ for (const k in keys) {
34
+ const matches = keys[k].match(/%\w*/g)
35
+ matches &&
36
+ matches.forEach(m => {
37
+ keys[k] = keys[k].replace(m, _moment.format(m.substr(1)))
38
+ })
39
+ }
40
+ return keys
41
+ }
42
+
43
+ export async function createDataSample(
44
+ dataSample: NewDataSample,
45
+ context: {
46
+ state: {
47
+ domain: Domain
48
+ user: User
49
+ tx: EntityManager
50
+ }
51
+ }
52
+ ): Promise<DataSample> {
53
+ const { domain, user, tx } = context.state
54
+
55
+ const dataSet = await tx.getRepository(DataSet).findOne({
56
+ where: { id: dataSample.dataSet.id }
57
+ })
58
+
59
+ const dataItems = await tx.getRepository(DataItem).find({
60
+ where: {
61
+ domain,
62
+ dataSet
63
+ },
64
+ order: {
65
+ sequence: 'DESC'
66
+ }
67
+ })
68
+
69
+ const spec = dataItems.reduce((spec, dataItem) => {
70
+ spec[dataItem.tag] = {
71
+ ...dataItem.spec,
72
+ name: dataItem.name, /* do we need ? */
73
+ hidden: dataItem.hidden
74
+ }
75
+
76
+ return spec
77
+ }, {})
78
+
79
+ const collectedAt = dataSample.collectedAt || new Date()
80
+ // workDate ex) 2022-04-04
81
+ const { workDate, workShift } = await getWorkDateAndShift(domain, collectedAt)
82
+
83
+ const dateFormat = 'YYYY-MM-DD'
84
+ // local time dataSet timezone or domain timezone or default 'UTC'
85
+ const timezone = dataSet['timezone'] || domain['timezone'] || 'UTC'
86
+
87
+ // const collectedAt = dataSample.collectedAt || new Date()
88
+ const localDateTz = moment(collectedAt).tz(timezone)
89
+ const defaultPartitionKeys = {
90
+ domain: domain.subdomain,
91
+ datasetid: dataSample.dataSet.id, /* It should not be 'data_set_id' as column name duplicated for Glue */
92
+ date: localDateTz.format(dateFormat), /* local time date */
93
+ workdate: workDate, /* working date */
94
+ workshift: workShift
95
+ }
96
+
97
+ var partitionKeys = {
98
+ ...defaultPartitionKeys,
99
+ ...dataSet.partitionKeys
100
+ }
101
+
102
+ partitionKeys = formatDate(partitionKeys, localDateTz)
103
+ partitionKeys = replaceVariables(partitionKeys, {
104
+ ...dataSample.data
105
+ })
106
+
107
+ const { ooc, oos } = DataUseCase.evaluate(dataSet, dataItems, dataSample.data) || {}
108
+ const result = await tx.getRepository(DataSample).save({
109
+ name: dataSet.name,
110
+ description: dataSet.description,
111
+ useCase: dataSet.useCase,
112
+ ...dataSample,
113
+ domain,
114
+ partitionKeys,
115
+ spec,
116
+ ooc,
117
+ oos,
118
+ collectedAt,
119
+ workDate,
120
+ workShift,
121
+ creator: user,
122
+ updater: user
123
+ })
124
+
125
+ if (ooc || oos) {
126
+ const dataOoc = await tx.getRepository(DataOoc).save({
127
+ name: dataSet.name,
128
+ description: dataSet.description,
129
+ useCase: dataSet.useCase,
130
+ dataSet,
131
+ dataSample: result,
132
+ data: dataSample.data,
133
+ rawData: dataSample.rawData,
134
+ domain,
135
+ partitionKeys,
136
+ spec,
137
+ ooc,
138
+ oos,
139
+ history: [
140
+ {
141
+ user: {
142
+ id: user.id,
143
+ name: user.name
144
+ },
145
+ state: DataOocStatus.CREATED,
146
+ timestamp: Date.now()
147
+ }
148
+ ],
149
+ state: DataOocStatus.CREATED,
150
+ workDate,
151
+ workShift,
152
+ collectedAt,
153
+ creator: user,
154
+ updater: user
155
+ })
156
+
157
+ pubsub.publish('data-ooc', {
158
+ dataOoc,
159
+ supervisoryRoleId: dataSet.supervisoryRoleId
160
+ })
161
+
162
+ pubsub.publish('notification', {
163
+ notification: {
164
+ domain,
165
+ type: 'error',
166
+ title: `Data OOC occurred on '${dataSet.name}'`,
167
+ body: `Data OOC occurred on '${dataSet.name}'`,
168
+ url: getRedirectSubdomainPath(context, domain.subdomain, `/data-ooc/${dataOoc.id}`),
169
+ timestamp: collectedAt
170
+ }
171
+ })
172
+ }
173
+
174
+ return result
175
+ }