@openinc/parse-server-opendash 2.4.67 → 2.4.68
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/dist/featuremap.json +7 -5
- package/dist/helper/registerPermissions.d.ts +57 -0
- package/dist/helper/registerPermissions.js +107 -0
- package/dist/hooks/Config_open_service.d.ts +4 -0
- package/dist/hooks/Config_open_service.js +36 -0
- package/dist/hooks/MES_Article.d.ts +1 -0
- package/dist/hooks/MES_Article.js +17 -0
- package/dist/hooks/MES_Order.js +105 -49
- package/dist/hooks/Maintenance_Schedule_Template.js +4 -1
- package/dist/hooks/Monitoring_DataHierachies.d.ts +1 -0
- package/dist/hooks/Monitoring_DataHierachies.js +17 -0
- package/dist/hooks/Monitoring_Jobs.d.ts +1 -0
- package/dist/hooks/Monitoring_Jobs.js +17 -0
- package/dist/hooks/Monitoring_ParseTableSensor.d.ts +1 -0
- package/dist/hooks/Monitoring_ParseTableSensor.js +17 -0
- package/dist/hooks/Permission.js +26 -0
- package/dist/types/MES_Article.d.ts +3 -0
- package/dist/types/MES_Article.js +6 -0
- package/dist/types/MES_Order.d.ts +15 -9
- package/dist/types/MES_Order.js +28 -16
- package/dist/types/MES_OrderPlan.d.ts +33 -0
- package/dist/types/MES_OrderPlan.js +53 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.js +4 -2
- package/package.json +3 -2
- package/schema/MES_Article.json +5 -0
- package/schema/MES_Order.json +19 -12
- package/schema/MES_OrderPlan.json +62 -0
package/dist/featuremap.json
CHANGED
|
@@ -17,7 +17,6 @@
|
|
|
17
17
|
"OD3_Dashboard": "MONITORING",
|
|
18
18
|
"OD3_Documentation_Category": "DOCUMENTATION",
|
|
19
19
|
"OD3_Documentation_Document": "DOCUMENTATION",
|
|
20
|
-
"OD3_Group": "CORE",
|
|
21
20
|
"OD3_GTFS_Agency": "GTFS",
|
|
22
21
|
"OD3_GTFS_Bikes_Allowed": "GTFS",
|
|
23
22
|
"OD3_GTFS_Calendar": "GTFS",
|
|
@@ -31,6 +30,7 @@
|
|
|
31
30
|
"OD3_GTFS_Trip": "GTFS",
|
|
32
31
|
"OD3_GTFS_Wheelchair_Accessible": "GTFS",
|
|
33
32
|
"OD3_GTFS_Wheelchair_Boarding": "GTFS",
|
|
33
|
+
"OD3_Group": "CORE",
|
|
34
34
|
"OD3_Knowledge_Article": "KNOWLEDGE",
|
|
35
35
|
"OD3_Knowledge_Category": "KNOWLEDGE",
|
|
36
36
|
"OD3_Knowledge_Chat": "KNOWLEDGE",
|
|
@@ -40,6 +40,10 @@
|
|
|
40
40
|
"OD3_Knowledge_Video": "KNOWLEDGE",
|
|
41
41
|
"OD3_Language": "CORE",
|
|
42
42
|
"OD3_Log": "CORE",
|
|
43
|
+
"OD3_MES_Article": "MONITORING",
|
|
44
|
+
"OD3_MES_Order": "MONITORING",
|
|
45
|
+
"OD3_MES_OrderPlan": "MONITORING",
|
|
46
|
+
"OD3_MIAAS_MDSEndpoint": "MIAAS",
|
|
43
47
|
"OD3_MailTemplate": "MONITORING",
|
|
44
48
|
"OD3_Maintenance_DailySchedule": "MAINTENANCE",
|
|
45
49
|
"OD3_Maintenance_Downtime": "MAINTENANCE",
|
|
@@ -67,9 +71,9 @@
|
|
|
67
71
|
"OD3_Maintenance_Ticket_Kanban_State_Current": "MAINTENANCE",
|
|
68
72
|
"OD3_Maintenance_Ticket_Source": "MAINTENANCE",
|
|
69
73
|
"OD3_Maintenance_Ticket_Title": "MAINTENANCE",
|
|
70
|
-
"OD3_MIAAS_MDSEndpoint": "MIAAS",
|
|
71
74
|
"OD3_Monitoring_DataHierachies": "MONITORING",
|
|
72
75
|
"OD3_Monitoring_Jobs": "MONITORING",
|
|
76
|
+
"OD3_Monitoring_ParseTableSensor": "MONITORING",
|
|
73
77
|
"OD3_Monitoring_ReportImage": "MONITORING",
|
|
74
78
|
"OD3_Monitoring_Slideshow": "MONITORING",
|
|
75
79
|
"OD3_NavigationGroup": "CORE",
|
|
@@ -88,7 +92,5 @@
|
|
|
88
92
|
"OD3_VirtualKPI": "MONITORING",
|
|
89
93
|
"OD3_WebPush": "CORE",
|
|
90
94
|
"OD3_Widget": "MONITORING",
|
|
91
|
-
"OD3_WidgetPreset": "MONITORING"
|
|
92
|
-
"OD3_MES_Order": "MONITORING",
|
|
93
|
-
"OD3_MES_Article": "MONITORING"
|
|
95
|
+
"OD3_WidgetPreset": "MONITORING"
|
|
94
96
|
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Permissions that should be registered in the database by default when the server starts.
|
|
3
|
+
* The ACLs are set to od-admin only.
|
|
4
|
+
* Adding new Permissions here requires the server to restart for registering those.
|
|
5
|
+
*/
|
|
6
|
+
export declare namespace Permissions {
|
|
7
|
+
enum OpenService {
|
|
8
|
+
global = "maintenance:can-access-global",
|
|
9
|
+
monitor = "maintenance:can-access-monitor",
|
|
10
|
+
material = "maintenance:can-access-material",
|
|
11
|
+
scheduletemplate = "maintenance:can-access-scheduletemplate",
|
|
12
|
+
dailySchedule = "maintenance:can-access-dailySchedule",
|
|
13
|
+
downtime = "maintenance:can-access-downtime",
|
|
14
|
+
restriction = "maintenance:can-access-restriction",
|
|
15
|
+
frequency = "maintenance:can-access-frequency",
|
|
16
|
+
downtimeField0 = "maintenance:can-access-downtime-field-0",
|
|
17
|
+
downtimeField1 = "maintenance:can-access-downtime-field-1",
|
|
18
|
+
downtimeField2 = "maintenance:can-access-downtime-field-2",
|
|
19
|
+
downtimeField3 = "maintenance:can-access-downtime-field-3",
|
|
20
|
+
downtimeField4 = "maintenance:can-access-downtime-field-4",
|
|
21
|
+
restrictionField0 = "maintenance:can-access-restriction-field-0",
|
|
22
|
+
restrictionField1 = "maintenance:can-access-restriction-field-1",
|
|
23
|
+
restrictionField2 = "maintenance:can-access-restriction-field-2",
|
|
24
|
+
frequencyField0 = "maintenance:can-access-frequency-field-0",
|
|
25
|
+
frequencyField1 = "maintenance:can-access-frequency-field-1",
|
|
26
|
+
frequencyField2 = "maintenance:can-access-frequency-field-2",
|
|
27
|
+
frequencyField3 = "maintenance:can-access-frequency-field-3",
|
|
28
|
+
frequencyField4 = "maintenance:can-access-frequency-field-4",
|
|
29
|
+
priority = "maintenance:can-access-priority",
|
|
30
|
+
priorityNumber = "maintenance:can-access-priority-number",
|
|
31
|
+
priorityLabel = "maintenance:can-access-priority-label",
|
|
32
|
+
issuecategory = "maintenance:can-update-issuecategory",
|
|
33
|
+
monitorstate = "maintenance:can-update-monitorstate"
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Returns all permissions from the OpenService plugin defined in types/config.ts as an array of Permission objects.
|
|
38
|
+
* @returns all permissions from the OpenService plugin
|
|
39
|
+
*/
|
|
40
|
+
export declare function getAllPermissions(): RegisteredPermission[];
|
|
41
|
+
interface PermissionInterface {
|
|
42
|
+
label: string;
|
|
43
|
+
description: string;
|
|
44
|
+
key: string;
|
|
45
|
+
}
|
|
46
|
+
type FunctionKeys<T> = {
|
|
47
|
+
[K in keyof T]: T[K] extends (...args: any[]) => any ? K : never;
|
|
48
|
+
}[keyof T];
|
|
49
|
+
export declare class RegisteredPermission implements PermissionInterface {
|
|
50
|
+
key: string;
|
|
51
|
+
label: string;
|
|
52
|
+
description: string;
|
|
53
|
+
constructor(key: string, label: string, description: string);
|
|
54
|
+
get<T extends Exclude<keyof RegisteredPermission, FunctionKeys<RegisteredPermission>>>(attribute: T): (typeof this)[T];
|
|
55
|
+
set<T extends Exclude<keyof RegisteredPermission, FunctionKeys<RegisteredPermission>>>(attribute: T, value: (typeof this)[T]): this;
|
|
56
|
+
}
|
|
57
|
+
export {};
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RegisteredPermission = exports.Permissions = void 0;
|
|
4
|
+
exports.getAllPermissions = getAllPermissions;
|
|
5
|
+
/**
|
|
6
|
+
* Permissions that should be registered in the database by default when the server starts.
|
|
7
|
+
* The ACLs are set to od-admin only.
|
|
8
|
+
* Adding new Permissions here requires the server to restart for registering those.
|
|
9
|
+
*/
|
|
10
|
+
var Permissions;
|
|
11
|
+
(function (Permissions) {
|
|
12
|
+
// needs to be exported for getAllPermissions() to work
|
|
13
|
+
let OpenService;
|
|
14
|
+
(function (OpenService) {
|
|
15
|
+
// Access
|
|
16
|
+
OpenService["global"] = "maintenance:can-access-global";
|
|
17
|
+
OpenService["monitor"] = "maintenance:can-access-monitor";
|
|
18
|
+
OpenService["material"] = "maintenance:can-access-material";
|
|
19
|
+
OpenService["scheduletemplate"] = "maintenance:can-access-scheduletemplate";
|
|
20
|
+
OpenService["dailySchedule"] = "maintenance:can-access-dailySchedule";
|
|
21
|
+
OpenService["downtime"] = "maintenance:can-access-downtime";
|
|
22
|
+
OpenService["restriction"] = "maintenance:can-access-restriction";
|
|
23
|
+
OpenService["frequency"] = "maintenance:can-access-frequency";
|
|
24
|
+
OpenService["downtimeField0"] = "maintenance:can-access-downtime-field-0";
|
|
25
|
+
OpenService["downtimeField1"] = "maintenance:can-access-downtime-field-1";
|
|
26
|
+
OpenService["downtimeField2"] = "maintenance:can-access-downtime-field-2";
|
|
27
|
+
OpenService["downtimeField3"] = "maintenance:can-access-downtime-field-3";
|
|
28
|
+
OpenService["downtimeField4"] = "maintenance:can-access-downtime-field-4";
|
|
29
|
+
OpenService["restrictionField0"] = "maintenance:can-access-restriction-field-0";
|
|
30
|
+
OpenService["restrictionField1"] = "maintenance:can-access-restriction-field-1";
|
|
31
|
+
OpenService["restrictionField2"] = "maintenance:can-access-restriction-field-2";
|
|
32
|
+
OpenService["frequencyField0"] = "maintenance:can-access-frequency-field-0";
|
|
33
|
+
OpenService["frequencyField1"] = "maintenance:can-access-frequency-field-1";
|
|
34
|
+
OpenService["frequencyField2"] = "maintenance:can-access-frequency-field-2";
|
|
35
|
+
OpenService["frequencyField3"] = "maintenance:can-access-frequency-field-3";
|
|
36
|
+
OpenService["frequencyField4"] = "maintenance:can-access-frequency-field-4";
|
|
37
|
+
OpenService["priority"] = "maintenance:can-access-priority";
|
|
38
|
+
OpenService["priorityNumber"] = "maintenance:can-access-priority-number";
|
|
39
|
+
OpenService["priorityLabel"] = "maintenance:can-access-priority-label";
|
|
40
|
+
// Update
|
|
41
|
+
OpenService["issuecategory"] = "maintenance:can-update-issuecategory";
|
|
42
|
+
OpenService["monitorstate"] = "maintenance:can-update-monitorstate";
|
|
43
|
+
})(OpenService = Permissions.OpenService || (Permissions.OpenService = {}));
|
|
44
|
+
// can also be used for nested permissions
|
|
45
|
+
// Example:
|
|
46
|
+
// export namespace TestPlugin {
|
|
47
|
+
// export enum TestPermission {
|
|
48
|
+
// test = "test:can-test",
|
|
49
|
+
// }
|
|
50
|
+
// export enum TestPermission2 {
|
|
51
|
+
// test2 = "test:can-test2",
|
|
52
|
+
// }
|
|
53
|
+
// }
|
|
54
|
+
})(Permissions || (exports.Permissions = Permissions = {}));
|
|
55
|
+
/**
|
|
56
|
+
* Returns all permissions from the OpenService plugin defined in types/config.ts as an array of Permission objects.
|
|
57
|
+
* @returns all permissions from the OpenService plugin
|
|
58
|
+
*/
|
|
59
|
+
function getAllPermissions() {
|
|
60
|
+
const permissions = []; // stores all permissions
|
|
61
|
+
for (const key in Permissions) {
|
|
62
|
+
// iterate over the objects / enums of the Permissions namespace
|
|
63
|
+
if (Object.prototype.hasOwnProperty.call(Permissions, key)) {
|
|
64
|
+
const element = Permissions[key]; // get the object / enum
|
|
65
|
+
const createdPermissions = createPermission(element); // create Permission objects recursively
|
|
66
|
+
permissions.push(...createdPermissions);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return permissions;
|
|
70
|
+
}
|
|
71
|
+
class RegisteredPermission {
|
|
72
|
+
constructor(key, label, description) {
|
|
73
|
+
this.key = key;
|
|
74
|
+
this.label = label;
|
|
75
|
+
this.description = description;
|
|
76
|
+
}
|
|
77
|
+
get(attribute) {
|
|
78
|
+
return this[attribute];
|
|
79
|
+
}
|
|
80
|
+
set(attribute, value) {
|
|
81
|
+
this[attribute] = value;
|
|
82
|
+
return this;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
exports.RegisteredPermission = RegisteredPermission;
|
|
86
|
+
/**
|
|
87
|
+
* Recursively creates Permission objects from the input object.
|
|
88
|
+
* @param input a string from an enum or an enum itself
|
|
89
|
+
* @returns an array of Permission objects
|
|
90
|
+
*/
|
|
91
|
+
function createPermission(input) {
|
|
92
|
+
const permissions = []; // all permission objects created from the input
|
|
93
|
+
if (typeof input === "string") {
|
|
94
|
+
// if the input is a string, create a Permission object from it
|
|
95
|
+
permissions.push(new RegisteredPermission(input, input + ".label", input + ".description"));
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
// if the input is an object, iterate over its keys and create Permission objects from the values
|
|
99
|
+
for (const key in input) {
|
|
100
|
+
if (Object.prototype.hasOwnProperty.call(input, key)) {
|
|
101
|
+
const element = input[key];
|
|
102
|
+
permissions.push(...createPermission(element));
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return permissions;
|
|
107
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.init = init;
|
|
4
|
+
const __1 = require("..");
|
|
5
|
+
const types_1 = require("../types");
|
|
6
|
+
/**
|
|
7
|
+
* This handles all config changes for a key starting with 'OPENSERVICE_' in class OD3_Config
|
|
8
|
+
*/
|
|
9
|
+
async function init() {
|
|
10
|
+
(0, __1.beforeSaveHook)(types_1.Config, async (request) => {
|
|
11
|
+
const { object, original, user } = request;
|
|
12
|
+
await (0, __1.defaultHandler)(request);
|
|
13
|
+
//Set custom acl for all keys starting with 'OPENSERVICE_'
|
|
14
|
+
//Read should only be allowed for tenant users
|
|
15
|
+
//Write should be allowed for tenant users
|
|
16
|
+
if (object.get("key").startsWith("OPENSERVICE_")) {
|
|
17
|
+
let acl = object.getACL();
|
|
18
|
+
const tenant = object.get("tenant");
|
|
19
|
+
if (!acl) {
|
|
20
|
+
acl = new Parse.ACL();
|
|
21
|
+
}
|
|
22
|
+
acl.setRoleReadAccess("od-admin", true);
|
|
23
|
+
acl.setRoleWriteAccess("od-admin", true);
|
|
24
|
+
if (tenant?.id) {
|
|
25
|
+
acl.setPublicReadAccess(false);
|
|
26
|
+
acl.setPublicWriteAccess(false);
|
|
27
|
+
acl.setRoleReadAccess(`od-tenant-admin-${tenant?.id}`, true);
|
|
28
|
+
acl.setRoleWriteAccess(`od-tenant-admin-${tenant?.id}`, true);
|
|
29
|
+
acl.setRoleReadAccess(`od-tenant-user-${tenant?.id}`, true);
|
|
30
|
+
acl.setRoleWriteAccess(`od-tenant-user-${tenant?.id}`, true);
|
|
31
|
+
}
|
|
32
|
+
object.setACL(acl);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
(0, __1.afterSaveHook)(types_1.Config, async ({ object, original, user }) => { });
|
|
36
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function init(): Promise<void>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.init = init;
|
|
4
|
+
const __1 = require("..");
|
|
5
|
+
const types_1 = require("../types");
|
|
6
|
+
async function init() {
|
|
7
|
+
(0, __1.beforeSaveHook)(types_1.MES_Article, async (request) => {
|
|
8
|
+
const { object, original, user } = request;
|
|
9
|
+
await (0, __1.defaultHandler)(request);
|
|
10
|
+
await (0, __1.defaultAclHandler)(request);
|
|
11
|
+
// TODO
|
|
12
|
+
});
|
|
13
|
+
(0, __1.afterSaveHook)(types_1.MES_Article, async (request) => {
|
|
14
|
+
const { object, original, user } = request;
|
|
15
|
+
// TODO
|
|
16
|
+
});
|
|
17
|
+
}
|
package/dist/hooks/MES_Order.js
CHANGED
|
@@ -11,24 +11,29 @@ const excludeFields = [
|
|
|
11
11
|
"tenant",
|
|
12
12
|
"source",
|
|
13
13
|
"unitInfo",
|
|
14
|
+
"tag",
|
|
15
|
+
"article",
|
|
14
16
|
];
|
|
15
17
|
const standardFields = [
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"
|
|
18
|
+
"start", //date
|
|
19
|
+
"ordernr", //0
|
|
20
|
+
"status", //1
|
|
21
|
+
"articlenr", //2
|
|
22
|
+
"articlename", //3
|
|
23
|
+
"setup_time", //4
|
|
24
|
+
"duration", //5
|
|
25
|
+
"order_quantity", //6
|
|
26
|
+
"targettime", //7
|
|
23
27
|
];
|
|
24
28
|
const defaultValueTypes = [
|
|
25
|
-
{ unit: "", name: "
|
|
26
|
-
{ unit: "", name: "
|
|
27
|
-
{ unit: "", name: "
|
|
28
|
-
{ unit: "", name: "
|
|
29
|
-
{ unit: "ms", name: "setup_time", type: "Number" },
|
|
30
|
-
{ unit: "ms", name: "duration", type: "Number" },
|
|
31
|
-
{ unit: "#", name: "order_quantity", type: "Number" },
|
|
29
|
+
{ unit: "", name: "ordernr", type: "String" }, //0
|
|
30
|
+
{ unit: "", name: "status", type: "String" }, //1
|
|
31
|
+
{ unit: "", name: "articlenr", type: "String" }, //2
|
|
32
|
+
{ unit: "", name: "articlename", type: "String" }, //3
|
|
33
|
+
{ unit: "ms", name: "setup_time", type: "Number" }, //4
|
|
34
|
+
{ unit: "ms", name: "duration", type: "Number" }, //5
|
|
35
|
+
{ unit: "#", name: "order_quantity", type: "Number" }, //6
|
|
36
|
+
{ unit: "ms", name: "targettime", type: "Number" }, //7
|
|
32
37
|
];
|
|
33
38
|
async function init() {
|
|
34
39
|
(0, __1.beforeSaveHook)(types_1.MES_Order, async (request) => {
|
|
@@ -40,52 +45,89 @@ async function init() {
|
|
|
40
45
|
allowCustomACL: true,
|
|
41
46
|
allowTenantUserWrite: true,
|
|
42
47
|
});
|
|
43
|
-
if (object.
|
|
44
|
-
object.
|
|
45
|
-
!
|
|
46
|
-
|
|
48
|
+
if (!object.tag) {
|
|
49
|
+
const source = await object.get("source")?.fetch({ useMasterKey: true });
|
|
50
|
+
if (!source || !source.tag) {
|
|
51
|
+
throw new Error("No source found in order. Cannot start order.");
|
|
52
|
+
}
|
|
53
|
+
object.set("tag", source.tag);
|
|
54
|
+
}
|
|
55
|
+
if (!object.articlenr) {
|
|
56
|
+
const article = await object
|
|
57
|
+
.get("article")
|
|
58
|
+
?.fetch({ useMasterKey: true });
|
|
59
|
+
if (article) {
|
|
60
|
+
object.set("articlenr", article.get("artnr"));
|
|
61
|
+
object.set("articlename", article?.get("name"));
|
|
62
|
+
object.set("targettime", object.targettime
|
|
63
|
+
? object.targettime
|
|
64
|
+
: article?.get("targettime") || 0);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (object.status === "canceled") {
|
|
47
68
|
}
|
|
48
69
|
// If the order is started and has a source, it is running
|
|
49
70
|
if (object.start &&
|
|
50
71
|
object.start.getTime() < nowThresholded &&
|
|
51
72
|
object.source &&
|
|
52
|
-
!
|
|
53
|
-
object.status
|
|
73
|
+
!object.status) {
|
|
74
|
+
object.set("status", "running");
|
|
75
|
+
}
|
|
76
|
+
if (object.start &&
|
|
77
|
+
object.start.getTime() > Date.now() &&
|
|
78
|
+
object.source &&
|
|
79
|
+
!object.status) {
|
|
80
|
+
object.set("status", "planned");
|
|
54
81
|
}
|
|
55
82
|
// If the order is started and has no source, it is unknown
|
|
56
83
|
if (object.start &&
|
|
57
84
|
object.start.getTime() < nowThresholded &&
|
|
58
|
-
!object.source
|
|
59
|
-
|
|
60
|
-
object.status = "unknown";
|
|
85
|
+
!object.source) {
|
|
86
|
+
object.set("status", "unknown");
|
|
61
87
|
}
|
|
62
88
|
// If the order has been started and ended, it is done
|
|
63
89
|
if (object.start &&
|
|
64
|
-
object.
|
|
65
|
-
object.
|
|
66
|
-
|
|
67
|
-
object.status = "done";
|
|
90
|
+
object.duration &&
|
|
91
|
+
(object.status === "running" || object.status === "planned")) {
|
|
92
|
+
object.set("status", "done");
|
|
68
93
|
}
|
|
69
94
|
});
|
|
70
95
|
(0, __1.afterSaveHook)(types_1.MES_Order, async (request) => {
|
|
71
96
|
const { object, original, user } = request;
|
|
72
97
|
try {
|
|
73
98
|
if (original) {
|
|
99
|
+
// If the order is canceled, publish it as canceled
|
|
100
|
+
if (object.status === "canceled" && original.status !== "canceled") {
|
|
101
|
+
const data = await object2OWItem(object);
|
|
102
|
+
await (0, ow_1.publishDataItem)(data, user?.getEmail(), true);
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
// If the order is rescheduled, publish it as rescheduled
|
|
74
106
|
if ((original?.start?.getTime() || 0) !==
|
|
75
107
|
(object.get("start")?.getTime() || 0)) {
|
|
108
|
+
console.log("-".repeat(20));
|
|
109
|
+
console.log("Publishing rescheduled order");
|
|
110
|
+
console.log("-".repeat(20));
|
|
76
111
|
const rescheduled = await object2OWItem(original);
|
|
77
112
|
rescheduled.values[0].value[0] = "rescheduled";
|
|
78
113
|
await (0, ow_1.publishDataItem)(rescheduled, user?.getEmail(), true);
|
|
114
|
+
return;
|
|
79
115
|
}
|
|
80
116
|
}
|
|
117
|
+
if (object.status === "canceled") {
|
|
118
|
+
// If order was canceled before, do not publish it
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
81
121
|
const data = await object2OWItem(object);
|
|
82
122
|
await (0, ow_1.publishDataItem)(data, user?.getEmail(), true);
|
|
83
|
-
console.log(JSON.stringify(data, null, 2));
|
|
84
123
|
// Publish all running orders separately to make use of these as reference values
|
|
85
124
|
if (object.status === "running") {
|
|
86
125
|
const runningData = { ...data };
|
|
87
126
|
runningData.id = "ow_mes_order_running";
|
|
88
127
|
runningData.name = "Order_Running";
|
|
128
|
+
console.log("-".repeat(20));
|
|
129
|
+
console.log("Publishing running order " + object.id);
|
|
130
|
+
console.log("-".repeat(20));
|
|
89
131
|
await (0, ow_1.publishDataItem)(runningData, user?.getEmail(), true);
|
|
90
132
|
}
|
|
91
133
|
}
|
|
@@ -96,8 +138,12 @@ async function init() {
|
|
|
96
138
|
});
|
|
97
139
|
}
|
|
98
140
|
async function object2OWItem(object) {
|
|
99
|
-
const
|
|
100
|
-
const
|
|
141
|
+
const tag = object.get("tag");
|
|
142
|
+
const configString = await new Parse.Query("OD3_Config")
|
|
143
|
+
.equalTo("key", "ow.mes.unitInfo")
|
|
144
|
+
.descending("priority")
|
|
145
|
+
.first({ useMasterKey: true });
|
|
146
|
+
const fieldInfos = JSON.parse(configString?.get("value") || "{}");
|
|
101
147
|
if (!tag || tag === "") {
|
|
102
148
|
throw new Error("No tag found in source. Cannot publish DataItem.");
|
|
103
149
|
}
|
|
@@ -105,7 +151,7 @@ async function object2OWItem(object) {
|
|
|
105
151
|
//@ts-expect-error
|
|
106
152
|
const schema = await schemaQ.get({ useMasterKey: true });
|
|
107
153
|
const fields = schema.fields;
|
|
108
|
-
const extraVType = await createCustomValueTypes(object, fields);
|
|
154
|
+
const extraVType = await createCustomValueTypes(object, fields, fieldInfos);
|
|
109
155
|
const values = await createValueArrayForObject(object, extraVType, fields);
|
|
110
156
|
const valueTypes = [...defaultValueTypes, ...extraVType];
|
|
111
157
|
return {
|
|
@@ -117,7 +163,7 @@ async function object2OWItem(object) {
|
|
|
117
163
|
values,
|
|
118
164
|
};
|
|
119
165
|
}
|
|
120
|
-
function createCustomValueTypes(object, fields) {
|
|
166
|
+
function createCustomValueTypes(object, fields, fieldInfos) {
|
|
121
167
|
const keyObject = object.toJSON();
|
|
122
168
|
return Object.keys(keyObject)
|
|
123
169
|
.filter((field) => {
|
|
@@ -138,7 +184,7 @@ function createCustomValueTypes(object, fields) {
|
|
|
138
184
|
};
|
|
139
185
|
case "Number":
|
|
140
186
|
return {
|
|
141
|
-
unit:
|
|
187
|
+
unit: fieldInfos[field]?.unit || "",
|
|
142
188
|
name: field,
|
|
143
189
|
type: "Number",
|
|
144
190
|
};
|
|
@@ -171,26 +217,36 @@ async function createValueArrayForObject(object, extraValues, fields) {
|
|
|
171
217
|
const article = articleData?.get("name");
|
|
172
218
|
const articlenr = articleData?.get("artnr");
|
|
173
219
|
const setup_time = object.get("setup_time");
|
|
174
|
-
const
|
|
175
|
-
const end = object.get("end");
|
|
220
|
+
const duration = object.get("duration");
|
|
176
221
|
const order_quantity = object.get("order_quantity");
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
222
|
+
const targettime = object.get("targettime");
|
|
223
|
+
/*
|
|
224
|
+
{ unit: "", name: "ordernr", type: "String" }, //0
|
|
225
|
+
{ unit: "", name: "status", type: "String" }, //1
|
|
226
|
+
{ unit: "", name: "articlenr", type: "String" }, //2
|
|
227
|
+
{ unit: "", name: "articlename", type: "String" }, //3
|
|
228
|
+
{ unit: "ms", name: "setup_time", type: "Number" }, //4
|
|
229
|
+
{ unit: "ms", name: "duration", type: "Number" }, //5
|
|
230
|
+
{ unit: "#", name: "order_quantity", type: "Number" }, //6
|
|
231
|
+
{ unit: "ms", name: "targettime", type: "Number" }, //7
|
|
232
|
+
|
|
233
|
+
*/
|
|
234
|
+
values.push(ordernr || "unknown"); //0
|
|
235
|
+
values.push(status || "unknown"); //1
|
|
236
|
+
values.push(articlenr); //2
|
|
237
|
+
values.push(article); //3
|
|
238
|
+
values.push(setup_time ?? 0); //4
|
|
239
|
+
values.push(duration ?? 0); //5
|
|
240
|
+
values.push(order_quantity ?? 0); //6
|
|
241
|
+
values.push(targettime ?? 0); //7
|
|
188
242
|
for (const extraValue of extraValues) {
|
|
189
243
|
let value = object.get(extraValue.name);
|
|
190
|
-
if (fields[extraValue.name].type === "Date") {
|
|
191
|
-
value
|
|
244
|
+
if (value && fields[extraValue.name].type === "Date") {
|
|
245
|
+
if (value instanceof Date) {
|
|
246
|
+
value = value.getTime();
|
|
247
|
+
}
|
|
192
248
|
}
|
|
193
249
|
values.push(value);
|
|
194
250
|
}
|
|
195
|
-
return [{ date: object.start.getTime(), value: values }];
|
|
251
|
+
return [{ date: object.get("start").getTime(), value: values }];
|
|
196
252
|
}
|
|
@@ -12,6 +12,9 @@ async function init() {
|
|
|
12
12
|
});
|
|
13
13
|
(0, __1.afterSaveHook)(types_1.Maintenance_Schedule_Template, async (request) => {
|
|
14
14
|
const { object, original, user } = request;
|
|
15
|
-
|
|
15
|
+
const cronstring = object.get("cron")["run_cron"];
|
|
16
|
+
// Create a file for bree to run it.
|
|
17
|
+
//TODO: Create notification object
|
|
18
|
+
//TODO: Send mail or anything that is enabled
|
|
16
19
|
});
|
|
17
20
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function init(): Promise<void>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.init = init;
|
|
4
|
+
const __1 = require("..");
|
|
5
|
+
const types_1 = require("../types");
|
|
6
|
+
async function init() {
|
|
7
|
+
(0, __1.beforeSaveHook)(types_1.Monitoring_DataHierachies, async (request) => {
|
|
8
|
+
const { object, original, user } = request;
|
|
9
|
+
await (0, __1.defaultHandler)(request);
|
|
10
|
+
await (0, __1.defaultAclHandler)(request);
|
|
11
|
+
// TODO
|
|
12
|
+
});
|
|
13
|
+
(0, __1.afterSaveHook)(types_1.Monitoring_DataHierachies, async (request) => {
|
|
14
|
+
const { object, original, user } = request;
|
|
15
|
+
// TODO
|
|
16
|
+
});
|
|
17
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function init(): Promise<void>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.init = init;
|
|
4
|
+
const __1 = require("..");
|
|
5
|
+
const types_1 = require("../types");
|
|
6
|
+
async function init() {
|
|
7
|
+
(0, __1.beforeSaveHook)(types_1.Monitoring_Jobs, async (request) => {
|
|
8
|
+
const { object, original, user } = request;
|
|
9
|
+
await (0, __1.defaultHandler)(request);
|
|
10
|
+
await (0, __1.defaultAclHandler)(request);
|
|
11
|
+
// TODO
|
|
12
|
+
});
|
|
13
|
+
(0, __1.afterSaveHook)(types_1.Monitoring_Jobs, async (request) => {
|
|
14
|
+
const { object, original, user } = request;
|
|
15
|
+
// TODO
|
|
16
|
+
});
|
|
17
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function init(): Promise<void>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.init = init;
|
|
4
|
+
const __1 = require("..");
|
|
5
|
+
const types_1 = require("../types");
|
|
6
|
+
async function init() {
|
|
7
|
+
(0, __1.beforeSaveHook)(types_1.Monitoring_ParseTableSensor, async (request) => {
|
|
8
|
+
const { object, original, user } = request;
|
|
9
|
+
await (0, __1.defaultHandler)(request);
|
|
10
|
+
await (0, __1.defaultAclHandler)(request);
|
|
11
|
+
// TODO
|
|
12
|
+
});
|
|
13
|
+
(0, __1.afterSaveHook)(types_1.Monitoring_ParseTableSensor, async (request) => {
|
|
14
|
+
const { object, original, user } = request;
|
|
15
|
+
// TODO
|
|
16
|
+
});
|
|
17
|
+
}
|
package/dist/hooks/Permission.js
CHANGED
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.init = init;
|
|
4
4
|
const __1 = require("..");
|
|
5
|
+
const registerPermissions_1 = require("../helper/registerPermissions");
|
|
5
6
|
const types_1 = require("../types");
|
|
6
7
|
async function init() {
|
|
8
|
+
await registerPermissions();
|
|
7
9
|
(0, __1.beforeSaveHook)(types_1.Permission, async (request) => {
|
|
8
10
|
const { object, original, user } = request;
|
|
9
11
|
await (0, __1.defaultHandler)(request);
|
|
@@ -16,3 +18,27 @@ async function init() {
|
|
|
16
18
|
// TODO
|
|
17
19
|
});
|
|
18
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* Register all permissions in the database, if not already registered.
|
|
23
|
+
*/
|
|
24
|
+
async function registerPermissions() {
|
|
25
|
+
console.log("Register all permissions");
|
|
26
|
+
(0, registerPermissions_1.getAllPermissions)().forEach((permission) => {
|
|
27
|
+
new Parse.Query(types_1.Permission)
|
|
28
|
+
.equalTo("key", permission.key)
|
|
29
|
+
.first({ useMasterKey: true })
|
|
30
|
+
.then((result) => {
|
|
31
|
+
if (!result) {
|
|
32
|
+
console.log("Create permission", permission.key);
|
|
33
|
+
const newPermission = new types_1.Permission();
|
|
34
|
+
newPermission.set("key", permission.key);
|
|
35
|
+
newPermission.set("label", permission.label);
|
|
36
|
+
newPermission.set("description", permission.description);
|
|
37
|
+
newPermission.save({}, { useMasterKey: true });
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
console.log("Permission already exists", permission.key);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
}
|
|
@@ -5,6 +5,7 @@ export interface MES_ArticleAttributes {
|
|
|
5
5
|
updatedAt: Date;
|
|
6
6
|
artnr: string;
|
|
7
7
|
name: string;
|
|
8
|
+
targettime: number;
|
|
8
9
|
}
|
|
9
10
|
export declare class MES_Article extends Parse.Object<MES_ArticleAttributes> {
|
|
10
11
|
static className: string;
|
|
@@ -13,4 +14,6 @@ export declare class MES_Article extends Parse.Object<MES_ArticleAttributes> {
|
|
|
13
14
|
set artnr(value: string);
|
|
14
15
|
get name(): string;
|
|
15
16
|
set name(value: string);
|
|
17
|
+
get targettime(): number;
|
|
18
|
+
set targettime(value: number);
|
|
16
19
|
}
|
|
@@ -17,6 +17,12 @@ class MES_Article extends Parse.Object {
|
|
|
17
17
|
set name(value) {
|
|
18
18
|
super.set("name", value);
|
|
19
19
|
}
|
|
20
|
+
get targettime() {
|
|
21
|
+
return super.get("targettime");
|
|
22
|
+
}
|
|
23
|
+
set targettime(value) {
|
|
24
|
+
super.set("targettime", value);
|
|
25
|
+
}
|
|
20
26
|
}
|
|
21
27
|
exports.MES_Article = MES_Article;
|
|
22
28
|
MES_Article.className = "OD3_MES_Article";
|
|
@@ -7,30 +7,34 @@ export interface MES_OrderAttributes {
|
|
|
7
7
|
createdAt: Date;
|
|
8
8
|
updatedAt: Date;
|
|
9
9
|
article?: MES_Article;
|
|
10
|
-
|
|
10
|
+
articlename?: string;
|
|
11
|
+
articlenr?: string;
|
|
12
|
+
duration: number;
|
|
11
13
|
order_quantity: number;
|
|
12
14
|
ordernr: string;
|
|
13
|
-
rikutec_cycletime: number;
|
|
14
15
|
setup_time: number;
|
|
15
16
|
source?: Source;
|
|
16
17
|
start: Date;
|
|
17
18
|
status?: string;
|
|
19
|
+
tag?: string;
|
|
20
|
+
targettime: number;
|
|
18
21
|
tenant: Tenant;
|
|
19
|
-
unitInfo: any;
|
|
20
22
|
}
|
|
21
23
|
export declare class MES_Order extends Parse.Object<MES_OrderAttributes> {
|
|
22
24
|
static className: string;
|
|
23
25
|
constructor(data?: Partial<MES_OrderAttributes>);
|
|
24
26
|
get article(): MES_Article | undefined;
|
|
25
27
|
set article(value: MES_Article | undefined);
|
|
26
|
-
get
|
|
27
|
-
set
|
|
28
|
+
get articlename(): string | undefined;
|
|
29
|
+
set articlename(value: string | undefined);
|
|
30
|
+
get articlenr(): string | undefined;
|
|
31
|
+
set articlenr(value: string | undefined);
|
|
32
|
+
get duration(): number;
|
|
33
|
+
set duration(value: number);
|
|
28
34
|
get order_quantity(): number;
|
|
29
35
|
set order_quantity(value: number);
|
|
30
36
|
get ordernr(): string;
|
|
31
37
|
set ordernr(value: string);
|
|
32
|
-
get rikutec_cycletime(): number;
|
|
33
|
-
set rikutec_cycletime(value: number);
|
|
34
38
|
get setup_time(): number;
|
|
35
39
|
set setup_time(value: number);
|
|
36
40
|
get source(): Source | undefined;
|
|
@@ -39,8 +43,10 @@ export declare class MES_Order extends Parse.Object<MES_OrderAttributes> {
|
|
|
39
43
|
set start(value: Date);
|
|
40
44
|
get status(): string | undefined;
|
|
41
45
|
set status(value: string | undefined);
|
|
46
|
+
get tag(): string | undefined;
|
|
47
|
+
set tag(value: string | undefined);
|
|
48
|
+
get targettime(): number;
|
|
49
|
+
set targettime(value: number);
|
|
42
50
|
get tenant(): Tenant;
|
|
43
51
|
set tenant(value: Tenant);
|
|
44
|
-
get unitInfo(): any;
|
|
45
|
-
set unitInfo(value: any);
|
|
46
52
|
}
|
package/dist/types/MES_Order.js
CHANGED
|
@@ -11,11 +11,23 @@ class MES_Order extends Parse.Object {
|
|
|
11
11
|
set article(value) {
|
|
12
12
|
super.set("article", value);
|
|
13
13
|
}
|
|
14
|
-
get
|
|
15
|
-
return super.get("
|
|
14
|
+
get articlename() {
|
|
15
|
+
return super.get("articlename");
|
|
16
16
|
}
|
|
17
|
-
set
|
|
18
|
-
super.set("
|
|
17
|
+
set articlename(value) {
|
|
18
|
+
super.set("articlename", value);
|
|
19
|
+
}
|
|
20
|
+
get articlenr() {
|
|
21
|
+
return super.get("articlenr");
|
|
22
|
+
}
|
|
23
|
+
set articlenr(value) {
|
|
24
|
+
super.set("articlenr", value);
|
|
25
|
+
}
|
|
26
|
+
get duration() {
|
|
27
|
+
return super.get("duration");
|
|
28
|
+
}
|
|
29
|
+
set duration(value) {
|
|
30
|
+
super.set("duration", value);
|
|
19
31
|
}
|
|
20
32
|
get order_quantity() {
|
|
21
33
|
return super.get("order_quantity");
|
|
@@ -29,12 +41,6 @@ class MES_Order extends Parse.Object {
|
|
|
29
41
|
set ordernr(value) {
|
|
30
42
|
super.set("ordernr", value);
|
|
31
43
|
}
|
|
32
|
-
get rikutec_cycletime() {
|
|
33
|
-
return super.get("rikutec_cycletime");
|
|
34
|
-
}
|
|
35
|
-
set rikutec_cycletime(value) {
|
|
36
|
-
super.set("rikutec_cycletime", value);
|
|
37
|
-
}
|
|
38
44
|
get setup_time() {
|
|
39
45
|
return super.get("setup_time");
|
|
40
46
|
}
|
|
@@ -59,18 +65,24 @@ class MES_Order extends Parse.Object {
|
|
|
59
65
|
set status(value) {
|
|
60
66
|
super.set("status", value);
|
|
61
67
|
}
|
|
68
|
+
get tag() {
|
|
69
|
+
return super.get("tag");
|
|
70
|
+
}
|
|
71
|
+
set tag(value) {
|
|
72
|
+
super.set("tag", value);
|
|
73
|
+
}
|
|
74
|
+
get targettime() {
|
|
75
|
+
return super.get("targettime");
|
|
76
|
+
}
|
|
77
|
+
set targettime(value) {
|
|
78
|
+
super.set("targettime", value);
|
|
79
|
+
}
|
|
62
80
|
get tenant() {
|
|
63
81
|
return super.get("tenant");
|
|
64
82
|
}
|
|
65
83
|
set tenant(value) {
|
|
66
84
|
super.set("tenant", value);
|
|
67
85
|
}
|
|
68
|
-
get unitInfo() {
|
|
69
|
-
return super.get("unitInfo");
|
|
70
|
-
}
|
|
71
|
-
set unitInfo(value) {
|
|
72
|
-
super.set("unitInfo", value);
|
|
73
|
-
}
|
|
74
86
|
}
|
|
75
87
|
exports.MES_Order = MES_Order;
|
|
76
88
|
MES_Order.className = "OD3_MES_Order";
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { MES_Article } from "./MES_Article";
|
|
2
|
+
import type { Source } from "./Source";
|
|
3
|
+
export interface MES_OrderPlanAttributes {
|
|
4
|
+
id: string;
|
|
5
|
+
objectId: string;
|
|
6
|
+
createdAt: Date;
|
|
7
|
+
updatedAt: Date;
|
|
8
|
+
article?: MES_Article;
|
|
9
|
+
ordernr: string;
|
|
10
|
+
planEnd?: Date;
|
|
11
|
+
planStart?: Date;
|
|
12
|
+
setup_time: number;
|
|
13
|
+
source?: Source;
|
|
14
|
+
target_quantity: number;
|
|
15
|
+
}
|
|
16
|
+
export declare class MES_OrderPlan extends Parse.Object<MES_OrderPlanAttributes> {
|
|
17
|
+
static className: string;
|
|
18
|
+
constructor(data?: Partial<MES_OrderPlanAttributes>);
|
|
19
|
+
get article(): MES_Article | undefined;
|
|
20
|
+
set article(value: MES_Article | undefined);
|
|
21
|
+
get ordernr(): string;
|
|
22
|
+
set ordernr(value: string);
|
|
23
|
+
get planEnd(): Date | undefined;
|
|
24
|
+
set planEnd(value: Date | undefined);
|
|
25
|
+
get planStart(): Date | undefined;
|
|
26
|
+
set planStart(value: Date | undefined);
|
|
27
|
+
get setup_time(): number;
|
|
28
|
+
set setup_time(value: number);
|
|
29
|
+
get source(): Source | undefined;
|
|
30
|
+
set source(value: Source | undefined);
|
|
31
|
+
get target_quantity(): number;
|
|
32
|
+
set target_quantity(value: number);
|
|
33
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MES_OrderPlan = void 0;
|
|
4
|
+
class MES_OrderPlan extends Parse.Object {
|
|
5
|
+
constructor(data) {
|
|
6
|
+
super("OD3_MES_OrderPlan", data);
|
|
7
|
+
}
|
|
8
|
+
get article() {
|
|
9
|
+
return super.get("article");
|
|
10
|
+
}
|
|
11
|
+
set article(value) {
|
|
12
|
+
super.set("article", value);
|
|
13
|
+
}
|
|
14
|
+
get ordernr() {
|
|
15
|
+
return super.get("ordernr");
|
|
16
|
+
}
|
|
17
|
+
set ordernr(value) {
|
|
18
|
+
super.set("ordernr", value);
|
|
19
|
+
}
|
|
20
|
+
get planEnd() {
|
|
21
|
+
return super.get("planEnd");
|
|
22
|
+
}
|
|
23
|
+
set planEnd(value) {
|
|
24
|
+
super.set("planEnd", value);
|
|
25
|
+
}
|
|
26
|
+
get planStart() {
|
|
27
|
+
return super.get("planStart");
|
|
28
|
+
}
|
|
29
|
+
set planStart(value) {
|
|
30
|
+
super.set("planStart", value);
|
|
31
|
+
}
|
|
32
|
+
get setup_time() {
|
|
33
|
+
return super.get("setup_time");
|
|
34
|
+
}
|
|
35
|
+
set setup_time(value) {
|
|
36
|
+
super.set("setup_time", value);
|
|
37
|
+
}
|
|
38
|
+
get source() {
|
|
39
|
+
return super.get("source");
|
|
40
|
+
}
|
|
41
|
+
set source(value) {
|
|
42
|
+
super.set("source", value);
|
|
43
|
+
}
|
|
44
|
+
get target_quantity() {
|
|
45
|
+
return super.get("target_quantity");
|
|
46
|
+
}
|
|
47
|
+
set target_quantity(value) {
|
|
48
|
+
super.set("target_quantity", value);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.MES_OrderPlan = MES_OrderPlan;
|
|
52
|
+
MES_OrderPlan.className = "OD3_MES_OrderPlan";
|
|
53
|
+
Parse.Object.registerSubclass("OD3_MES_OrderPlan", MES_OrderPlan);
|
package/dist/types/index.d.ts
CHANGED
|
@@ -84,6 +84,8 @@ export { MES_Article } from "./MES_Article";
|
|
|
84
84
|
export type { MES_ArticleAttributes } from "./MES_Article";
|
|
85
85
|
export { MES_Order } from "./MES_Order";
|
|
86
86
|
export type { MES_OrderAttributes } from "./MES_Order";
|
|
87
|
+
export { MES_OrderPlan } from "./MES_OrderPlan";
|
|
88
|
+
export type { MES_OrderPlanAttributes } from "./MES_OrderPlan";
|
|
87
89
|
export { MIAAS_MDSEndpoint } from "./MIAAS_MDSEndpoint";
|
|
88
90
|
export type { MIAAS_MDSEndpointAttributes } from "./MIAAS_MDSEndpoint";
|
|
89
91
|
export { MailTemplate } from "./MailTemplate";
|
package/dist/types/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.WidgetPreset = exports.Widget = exports.WebPush = exports.VirtualKPI = exports.UserData = exports.TenantTrustedDomain = exports.TenantMeta = exports.Tenant = exports.SourceMeta = exports.Source = exports.Share = exports.Report = exports.Push = exports.Permission = exports.Notification = exports.NavigationItem = exports.NavigationGroup = exports.Monitoring_Slideshow = exports.Monitoring_ReportImage = exports.Monitoring_ParseTableSensor = exports.Monitoring_Jobs = exports.Monitoring_DataHierachies = exports.Maintenance_Ticket_Title = exports.Maintenance_Ticket_Source = exports.Maintenance_Ticket_Kanban_State_Current = exports.Maintenance_Ticket_Kanban_State = exports.Maintenance_Ticket_Issuecategory = exports.Maintenance_Ticket_Assignment = exports.Maintenance_Ticket = exports.Maintenance_Source_File = exports.Maintenance_SourceMeta = exports.Maintenance_Schedule_Template = exports.Maintenance_Schedule_Step = exports.Maintenance_Schedule_Execution_Step = exports.Maintenance_Schedule_Execution = exports.Maintenance_Restriction = exports.Maintenance_Priority = exports.Maintenance_Order = exports.Maintenance_Message_Body = exports.Maintenance_Message = exports.Maintenance_Media = exports.Maintenance_Kanban_State = exports.Maintenance_Item = void 0;
|
|
3
|
+
exports.Maintenance_Frequency = exports.Maintenance_Duedate = exports.Maintenance_Downtime = exports.Maintenance_DailySchedule = exports.MailTemplate = exports.MIAAS_MDSEndpoint = exports.MES_OrderPlan = exports.MES_Order = exports.MES_Article = exports.Log = exports.Language = exports.Knowledge_Video = exports.Knowledge_DocumentPage = exports.Knowledge_Document = exports.Knowledge_ChatMessage = exports.Knowledge_Chat = exports.Knowledge_Category = exports.Knowledge_Article = exports.Group = exports.GTFS_Wheelchair_Boarding = exports.GTFS_Wheelchair_Accessible = exports.GTFS_Trip = exports.GTFS_Stop_Times = exports.GTFS_Stop = exports.GTFS_Route_Type = exports.GTFS_Route = exports.GTFS_Location_Type = exports.GTFS_Level = exports.GTFS_Direction = exports.GTFS_Calendar = exports.GTFS_Bikes_Allowed = exports.GTFS_Agency = exports.Documentation_Document = exports.Documentation_Category = exports.Dashboard = exports.Core_Token = exports.Core_Email = exports.Contact = exports.Config = exports.Company = exports.BDE_Unit = exports.BDE_Result = exports.BDE_Page = exports.BDE_ListEntry = exports.BDE_List = exports.BDE_Form = exports.Attachment = exports.AlarmWebhook = exports.AlarmAction = exports.Alarm = void 0;
|
|
4
|
+
exports.WidgetPreset = exports.Widget = exports.WebPush = exports.VirtualKPI = exports.UserData = exports.TenantTrustedDomain = exports.TenantMeta = exports.Tenant = exports.SourceMeta = exports.Source = exports.Share = exports.Report = exports.Push = exports.Permission = exports.Notification = exports.NavigationItem = exports.NavigationGroup = exports.Monitoring_Slideshow = exports.Monitoring_ReportImage = exports.Monitoring_ParseTableSensor = exports.Monitoring_Jobs = exports.Monitoring_DataHierachies = exports.Maintenance_Ticket_Title = exports.Maintenance_Ticket_Source = exports.Maintenance_Ticket_Kanban_State_Current = exports.Maintenance_Ticket_Kanban_State = exports.Maintenance_Ticket_Issuecategory = exports.Maintenance_Ticket_Assignment = exports.Maintenance_Ticket = exports.Maintenance_Source_File = exports.Maintenance_SourceMeta = exports.Maintenance_Schedule_Template = exports.Maintenance_Schedule_Step = exports.Maintenance_Schedule_Execution_Step = exports.Maintenance_Schedule_Execution = exports.Maintenance_Restriction = exports.Maintenance_Priority = exports.Maintenance_Order = exports.Maintenance_Message_Body = exports.Maintenance_Message = exports.Maintenance_Media = exports.Maintenance_Kanban_State = exports.Maintenance_Item = exports.Maintenance_Issuecategory = void 0;
|
|
5
5
|
var Alarm_1 = require("./Alarm");
|
|
6
6
|
Object.defineProperty(exports, "Alarm", { enumerable: true, get: function () { return Alarm_1.Alarm; } });
|
|
7
7
|
var AlarmAction_1 = require("./AlarmAction");
|
|
@@ -88,6 +88,8 @@ var MES_Article_1 = require("./MES_Article");
|
|
|
88
88
|
Object.defineProperty(exports, "MES_Article", { enumerable: true, get: function () { return MES_Article_1.MES_Article; } });
|
|
89
89
|
var MES_Order_1 = require("./MES_Order");
|
|
90
90
|
Object.defineProperty(exports, "MES_Order", { enumerable: true, get: function () { return MES_Order_1.MES_Order; } });
|
|
91
|
+
var MES_OrderPlan_1 = require("./MES_OrderPlan");
|
|
92
|
+
Object.defineProperty(exports, "MES_OrderPlan", { enumerable: true, get: function () { return MES_OrderPlan_1.MES_OrderPlan; } });
|
|
91
93
|
var MIAAS_MDSEndpoint_1 = require("./MIAAS_MDSEndpoint");
|
|
92
94
|
Object.defineProperty(exports, "MIAAS_MDSEndpoint", { enumerable: true, get: function () { return MIAAS_MDSEndpoint_1.MIAAS_MDSEndpoint; } });
|
|
93
95
|
var MailTemplate_1 = require("./MailTemplate");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openinc/parse-server-opendash",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.68",
|
|
4
4
|
"description": "Parse Server Cloud Code for open.DASH",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"parse",
|
|
@@ -20,13 +20,14 @@
|
|
|
20
20
|
"schema-up": "parse-server-schema up --prefix OD3_ ./schema",
|
|
21
21
|
"schema-ts": "parse-server-schema typescript --prefix OD3_ --global-sdk ./src/types",
|
|
22
22
|
"typedoc": "typedoc --plugin typedoc-plugin-markdown --hideBreadcrumbs --out docs src/index.ts",
|
|
23
|
-
"predevstart": "cd /usr/src/app && pnpm config set strict-ssl false && echo 'Installing additional packages: ' ${OPENINC_PARSE_ADDITIONAL_PACKAGES} && pnpm install ${OPENINC_PARSE_ADDITIONAL_PACKAGES}
|
|
23
|
+
"predevstart": "cd /usr/src/app && pnpm config set strict-ssl false && echo 'Installing additional packages: ' ${OPENINC_PARSE_ADDITIONAL_PACKAGES} && pnpm install ${OPENINC_PARSE_ADDITIONAL_PACKAGES}",
|
|
24
24
|
"devstart": "parse-server ./config.js",
|
|
25
25
|
"featuremap": "node ./scripts/create-featuremap.js",
|
|
26
26
|
"hooks": "node ./scripts/create-hooks.js"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"@openinc/parse-server-schema": "^1.7.8",
|
|
30
|
+
"bree": "^9.2.4",
|
|
30
31
|
"fast-equals": "^5.0.1",
|
|
31
32
|
"jsonwebtoken": "^9.0.2",
|
|
32
33
|
"node-fetch": "^2.7.0",
|
package/schema/MES_Article.json
CHANGED
package/schema/MES_Order.json
CHANGED
|
@@ -5,10 +5,19 @@
|
|
|
5
5
|
"targetClass": "{{PREFIX}}MES_Article",
|
|
6
6
|
"required": false
|
|
7
7
|
},
|
|
8
|
-
"
|
|
9
|
-
"type": "
|
|
8
|
+
"articlename": {
|
|
9
|
+
"type": "String",
|
|
10
|
+
"required": false
|
|
11
|
+
},
|
|
12
|
+
"articlenr": {
|
|
13
|
+
"type": "String",
|
|
10
14
|
"required": false
|
|
11
15
|
},
|
|
16
|
+
"duration": {
|
|
17
|
+
"type": "Number",
|
|
18
|
+
"required": true,
|
|
19
|
+
"defaultValue": 0
|
|
20
|
+
},
|
|
12
21
|
"order_quantity": {
|
|
13
22
|
"type": "Number",
|
|
14
23
|
"required": false,
|
|
@@ -18,11 +27,6 @@
|
|
|
18
27
|
"type": "String",
|
|
19
28
|
"required": true
|
|
20
29
|
},
|
|
21
|
-
"rikutec_cycletime": {
|
|
22
|
-
"type": "Number",
|
|
23
|
-
"required": true,
|
|
24
|
-
"defaultValue": 0
|
|
25
|
-
},
|
|
26
30
|
"setup_time": {
|
|
27
31
|
"type": "Number",
|
|
28
32
|
"required": false,
|
|
@@ -41,15 +45,18 @@
|
|
|
41
45
|
"type": "String",
|
|
42
46
|
"required": false
|
|
43
47
|
},
|
|
48
|
+
"tag": {
|
|
49
|
+
"type": "String",
|
|
50
|
+
"required": false
|
|
51
|
+
},
|
|
52
|
+
"targettime": {
|
|
53
|
+
"type": "Number",
|
|
54
|
+
"required": true
|
|
55
|
+
},
|
|
44
56
|
"tenant": {
|
|
45
57
|
"type": "Pointer",
|
|
46
58
|
"targetClass": "{{PREFIX}}Tenant",
|
|
47
59
|
"required": true
|
|
48
|
-
},
|
|
49
|
-
"unitInfo": {
|
|
50
|
-
"type": "Object",
|
|
51
|
-
"required": true,
|
|
52
|
-
"defaultValue": {}
|
|
53
60
|
}
|
|
54
61
|
},
|
|
55
62
|
"classLevelPermissions": {
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"fields": {
|
|
3
|
+
"article": {
|
|
4
|
+
"type": "Pointer",
|
|
5
|
+
"targetClass": "{{PREFIX}}MES_Article",
|
|
6
|
+
"required": false
|
|
7
|
+
},
|
|
8
|
+
"ordernr": {
|
|
9
|
+
"type": "String",
|
|
10
|
+
"required": true
|
|
11
|
+
},
|
|
12
|
+
"planEnd": {
|
|
13
|
+
"type": "Date",
|
|
14
|
+
"required": false
|
|
15
|
+
},
|
|
16
|
+
"planStart": {
|
|
17
|
+
"type": "Date",
|
|
18
|
+
"required": false
|
|
19
|
+
},
|
|
20
|
+
"setup_time": {
|
|
21
|
+
"type": "Number",
|
|
22
|
+
"required": true,
|
|
23
|
+
"defaultValue": 0
|
|
24
|
+
},
|
|
25
|
+
"source": {
|
|
26
|
+
"type": "Pointer",
|
|
27
|
+
"targetClass": "{{PREFIX}}Source",
|
|
28
|
+
"required": false
|
|
29
|
+
},
|
|
30
|
+
"target_quantity": {
|
|
31
|
+
"type": "Number",
|
|
32
|
+
"required": true,
|
|
33
|
+
"defaultValue": 0
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"classLevelPermissions": {
|
|
37
|
+
"find": {
|
|
38
|
+
"*": true
|
|
39
|
+
},
|
|
40
|
+
"count": {
|
|
41
|
+
"*": true
|
|
42
|
+
},
|
|
43
|
+
"get": {
|
|
44
|
+
"*": true
|
|
45
|
+
},
|
|
46
|
+
"create": {
|
|
47
|
+
"*": true
|
|
48
|
+
},
|
|
49
|
+
"update": {
|
|
50
|
+
"*": true
|
|
51
|
+
},
|
|
52
|
+
"delete": {
|
|
53
|
+
"*": true
|
|
54
|
+
},
|
|
55
|
+
"addField": {
|
|
56
|
+
"*": true
|
|
57
|
+
},
|
|
58
|
+
"protectedFields": {
|
|
59
|
+
"*": []
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|