ofsc-utility 1.0.16 → 1.0.18
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/index.d.ts +8 -1
- package/dist/index.js +13 -2
- package/dist/metadata/activityTypeGroup.d.ts +4 -0
- package/dist/metadata/activityTypeGroup.js +45 -0
- package/dist/metadata/activityTypes.d.ts +3 -0
- package/dist/metadata/activityTypes.js +74 -0
- package/dist/metadata/applictaionsIntegration.d.ts +7 -0
- package/dist/metadata/applictaionsIntegration.js +81 -0
- package/dist/metadata/capacity.d.ts +4 -0
- package/dist/metadata/capacity.js +58 -0
- package/dist/metadata/capacityCategories.d.ts +4 -0
- package/dist/metadata/capacityCategories.js +48 -0
- package/dist/metadata/form.d.ts +4 -0
- package/dist/metadata/form.js +30 -0
- package/dist/metadata/index.d.ts +1 -0
- package/dist/metadata/index.js +78 -0
- package/dist/metadata/inventoryTypes.d.ts +4 -0
- package/dist/metadata/inventoryTypes.js +45 -0
- package/dist/metadata/languages.d.ts +4 -0
- package/dist/metadata/languages.js +33 -0
- package/dist/metadata/nonWorkingReasons.d.ts +4 -0
- package/dist/metadata/nonWorkingReasons.js +32 -0
- package/dist/metadata/properties.d.ts +4 -0
- package/dist/metadata/properties.js +45 -0
- package/dist/metadata/resourceTypes.d.ts +4 -0
- package/dist/metadata/resourceTypes.js +33 -0
- package/dist/metadata/shifts.d.ts +4 -0
- package/dist/metadata/shifts.js +35 -0
- package/dist/metadata/timeSlots.d.ts +4 -0
- package/dist/metadata/timeSlots.js +35 -0
- package/dist/metadata/workSkillConditions.d.ts +6 -0
- package/dist/metadata/workSkillConditions.js +87 -0
- package/dist/metadata/workSkills.d.ts +4 -0
- package/dist/metadata/workSkills.js +35 -0
- package/dist/metadata/workZoneKey.d.ts +4 -0
- package/dist/metadata/workZoneKey.js +44 -0
- package/dist/metadata/workZones.d.ts +4 -0
- package/dist/metadata/workZones.js +31 -0
- package/dist/resources/index.d.ts +5 -0
- package/dist/resources/index.js +27 -0
- package/dist/utilities/index.d.ts +4 -0
- package/dist/utilities/index.js +156 -0
- package/package.json +4 -2
- package/readme.md +5 -4
- package/dist/ofsc-utility.esm.js +0 -3411
- package/dist/ofsc-utility.esm.js.map +0 -1
- package/dist/ofsc-utility.min.js +0 -1
- package/dist/ofsc-utility.min.js.map +0 -1
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getNonWorkingReasonMetaData = getNonWorkingReasonMetaData;
|
|
4
|
+
exports.transformData = transformData;
|
|
5
|
+
const utilities_1 = require("../utilities");
|
|
6
|
+
async function getNonWorkingReasonMetaData(clientId, clientSecret, instanceUrl, token = "") {
|
|
7
|
+
let responsedata = [];
|
|
8
|
+
let offset = 0;
|
|
9
|
+
const limit = 100;
|
|
10
|
+
while (true) {
|
|
11
|
+
const url = `https://${instanceUrl}.fs.ocs.oraclecloud.com/rest/ofscMetadata/v1/nonWorkingReasons?offset=${offset}&limit=${limit}`;
|
|
12
|
+
const res = await (0, utilities_1.fetchWithRetry)(url, clientId, clientSecret, instanceUrl, token);
|
|
13
|
+
token = res.token;
|
|
14
|
+
responsedata = [...responsedata, ...res.data.items];
|
|
15
|
+
if (!res.data.hasMore)
|
|
16
|
+
break;
|
|
17
|
+
offset = res.data.offset + limit;
|
|
18
|
+
}
|
|
19
|
+
const sheet = transformData(responsedata);
|
|
20
|
+
return sheet;
|
|
21
|
+
}
|
|
22
|
+
function transformData(data) {
|
|
23
|
+
const sheets = {};
|
|
24
|
+
// Sheet 1: Activity Type Groups Overview
|
|
25
|
+
const overview = data.map(d => ({
|
|
26
|
+
Label: d.label,
|
|
27
|
+
Name: d.name,
|
|
28
|
+
"Status": d.active ? "Active" : "Inactive",
|
|
29
|
+
}));
|
|
30
|
+
sheets['Non Working Reasons'] = overview;
|
|
31
|
+
return sheets;
|
|
32
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
type SheetData = Record<string, any[]>;
|
|
2
|
+
export declare function getPropertiesMetaData(clientId: string, clientSecret: string, instanceUrl: string, allUsedPropes: any[], token?: string): Promise<SheetData>;
|
|
3
|
+
export declare function transformData(data: any[], allUsedPropes: any[]): SheetData;
|
|
4
|
+
export {};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPropertiesMetaData = getPropertiesMetaData;
|
|
4
|
+
exports.transformData = transformData;
|
|
5
|
+
const utilities_1 = require("../utilities");
|
|
6
|
+
async function getPropertiesMetaData(clientId, clientSecret, instanceUrl, allUsedPropes, token = "") {
|
|
7
|
+
let responsedata = [];
|
|
8
|
+
let offset = 0;
|
|
9
|
+
const limit = 100;
|
|
10
|
+
while (true) {
|
|
11
|
+
const url = `https://${instanceUrl}.fs.ocs.oraclecloud.com/rest/ofscMetadata/v1/properties?offset=${offset}&limit=${limit}`;
|
|
12
|
+
const res = await (0, utilities_1.fetchWithRetry)(url, clientId, clientSecret, instanceUrl, token);
|
|
13
|
+
token = res.token;
|
|
14
|
+
responsedata = [...responsedata, ...res.data.items];
|
|
15
|
+
if (!res.data.hasMore)
|
|
16
|
+
break;
|
|
17
|
+
offset = res.data.offset + limit;
|
|
18
|
+
}
|
|
19
|
+
const sheet = transformData(responsedata, allUsedPropes);
|
|
20
|
+
return sheet;
|
|
21
|
+
}
|
|
22
|
+
function transformData(data, allUsedPropes) {
|
|
23
|
+
const sheets = {};
|
|
24
|
+
// Sheet 1: Activity Type Groups Overview
|
|
25
|
+
const overview = data.map(d => {
|
|
26
|
+
const comments = [
|
|
27
|
+
...new Set(allUsedPropes
|
|
28
|
+
.filter((p) => p.label === d.label)
|
|
29
|
+
.map((p) => p.comment)
|
|
30
|
+
.filter(Boolean) // remove null / undefined
|
|
31
|
+
)
|
|
32
|
+
].join(', ');
|
|
33
|
+
return {
|
|
34
|
+
Label: d.label,
|
|
35
|
+
Name: d.name,
|
|
36
|
+
"Data Type": d.type,
|
|
37
|
+
"Entity": d.entity,
|
|
38
|
+
"GUI": d.gui,
|
|
39
|
+
"Clone Flag": d.cloneFlag,
|
|
40
|
+
"Comments": comments
|
|
41
|
+
};
|
|
42
|
+
});
|
|
43
|
+
sheets['Properties Overview'] = overview;
|
|
44
|
+
return sheets;
|
|
45
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getResourceTypesMetaData = getResourceTypesMetaData;
|
|
4
|
+
exports.transformData = transformData;
|
|
5
|
+
const utilities_1 = require("../utilities");
|
|
6
|
+
async function getResourceTypesMetaData(clientId, clientSecret, instanceUrl, token = "") {
|
|
7
|
+
let responsedata = [];
|
|
8
|
+
let offset = 0;
|
|
9
|
+
const limit = 100;
|
|
10
|
+
while (true) {
|
|
11
|
+
const url = `https://${instanceUrl}.fs.ocs.oraclecloud.com/rest/ofscMetadata/v1/resourceTypes?offset=${offset}&limit=${limit}`;
|
|
12
|
+
const res = await (0, utilities_1.fetchWithRetry)(url, clientId, clientSecret, instanceUrl, token);
|
|
13
|
+
token = res.token;
|
|
14
|
+
responsedata = [...responsedata, ...res.data.items];
|
|
15
|
+
if (!res.data.hasMore)
|
|
16
|
+
break;
|
|
17
|
+
offset = res.data.offset + limit;
|
|
18
|
+
}
|
|
19
|
+
const sheet = transformData(responsedata);
|
|
20
|
+
return sheet;
|
|
21
|
+
}
|
|
22
|
+
function transformData(data) {
|
|
23
|
+
const sheets = {};
|
|
24
|
+
// Sheet 1: Activity Type Groups Overview
|
|
25
|
+
const overview = data.map(d => ({
|
|
26
|
+
// "Label": d.label,
|
|
27
|
+
"Name": d.name,
|
|
28
|
+
"Status": d.active ? "Active" : "Inactive",
|
|
29
|
+
"Applictaion Role": d.role,
|
|
30
|
+
}));
|
|
31
|
+
sheets['Resource Types Overview'] = overview;
|
|
32
|
+
return sheets;
|
|
33
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getShiftMetaData = getShiftMetaData;
|
|
4
|
+
exports.transformData = transformData;
|
|
5
|
+
const utilities_1 = require("../utilities");
|
|
6
|
+
async function getShiftMetaData(clientId, clientSecret, instanceUrl, token = "") {
|
|
7
|
+
let responsedata = [];
|
|
8
|
+
let offset = 0;
|
|
9
|
+
const limit = 100;
|
|
10
|
+
while (true) {
|
|
11
|
+
const url = `https://${instanceUrl}.fs.ocs.oraclecloud.com/rest/ofscMetadata/v1/shifts?offset=${offset}&limit=${limit}`;
|
|
12
|
+
const res = await (0, utilities_1.fetchWithRetry)(url, clientId, clientSecret, instanceUrl, token);
|
|
13
|
+
token = res.token;
|
|
14
|
+
responsedata = [...responsedata, ...res.data.items];
|
|
15
|
+
if (!res.data.hasMore)
|
|
16
|
+
break;
|
|
17
|
+
offset = res.data.offset + limit;
|
|
18
|
+
}
|
|
19
|
+
const sheet = transformData(responsedata);
|
|
20
|
+
return sheet;
|
|
21
|
+
}
|
|
22
|
+
function transformData(data) {
|
|
23
|
+
const sheets = {};
|
|
24
|
+
// Sheet 1: Activity Type Groups Overview
|
|
25
|
+
const overview = data.map(d => ({
|
|
26
|
+
// "label": d.label,
|
|
27
|
+
"Shift Name": d.name,
|
|
28
|
+
"Status": d.active ? "Active" : "Inactive",
|
|
29
|
+
"Type": d.type,
|
|
30
|
+
"WorkTimeStart": d.workTimeStart,
|
|
31
|
+
"WorkTimeEnd": d.workTimeEnd,
|
|
32
|
+
}));
|
|
33
|
+
sheets['Shifts Overview'] = overview;
|
|
34
|
+
return sheets;
|
|
35
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getTimeSlotsMetaData = getTimeSlotsMetaData;
|
|
4
|
+
exports.transformData = transformData;
|
|
5
|
+
const utilities_1 = require("../utilities");
|
|
6
|
+
async function getTimeSlotsMetaData(clientId, clientSecret, instanceUrl, token = "") {
|
|
7
|
+
let responsedata = [];
|
|
8
|
+
let offset = 0;
|
|
9
|
+
const limit = 100;
|
|
10
|
+
while (true) {
|
|
11
|
+
const url = `https://${instanceUrl}.fs.ocs.oraclecloud.com/rest/ofscMetadata/v1/timeSlots?offset=${offset}&limit=${limit}`;
|
|
12
|
+
const res = await (0, utilities_1.fetchWithRetry)(url, clientId, clientSecret, instanceUrl, token);
|
|
13
|
+
token = res.token;
|
|
14
|
+
responsedata = [...responsedata, ...res.data.items];
|
|
15
|
+
if (!res.data.hasMore)
|
|
16
|
+
break;
|
|
17
|
+
offset = res.data.offset + limit;
|
|
18
|
+
}
|
|
19
|
+
const sheet = transformData(responsedata);
|
|
20
|
+
return sheet;
|
|
21
|
+
}
|
|
22
|
+
function transformData(data) {
|
|
23
|
+
const sheets = {};
|
|
24
|
+
// Sheet 1: Activity Type Groups Overview
|
|
25
|
+
const overview = data.map(d => ({
|
|
26
|
+
// "label": d.label,
|
|
27
|
+
"Time Slot Name": d.name,
|
|
28
|
+
"Status": d.active ? "Active" : "Inactive",
|
|
29
|
+
"isAllDay": d.isAllDay ? "Yes" : "",
|
|
30
|
+
"Time Start": d.timeStart,
|
|
31
|
+
"Time End": d.timeEnd,
|
|
32
|
+
}));
|
|
33
|
+
sheets['Time Slots Overview'] = overview;
|
|
34
|
+
return sheets;
|
|
35
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
type SheetData = Record<string, any[]>;
|
|
2
|
+
export declare function getWorkSkillsMetaData(clientId: string, clientSecret: string, instanceUrl: string, token?: string): Promise<SheetData>;
|
|
3
|
+
export declare function getWorkSkillConditionsMetaData(clientId: string, clientSecret: string, instanceUrl: string, wsData: any[], token?: string): Promise<SheetData>;
|
|
4
|
+
export declare function transformData(data: any[], wsData: any[]): any;
|
|
5
|
+
export declare function transformDataWS(data: any[]): SheetData;
|
|
6
|
+
export {};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getWorkSkillsMetaData = getWorkSkillsMetaData;
|
|
4
|
+
exports.getWorkSkillConditionsMetaData = getWorkSkillConditionsMetaData;
|
|
5
|
+
exports.transformData = transformData;
|
|
6
|
+
exports.transformDataWS = transformDataWS;
|
|
7
|
+
const utilities_1 = require("../utilities");
|
|
8
|
+
async function getWorkSkillsMetaData(clientId, clientSecret, instanceUrl, token = "") {
|
|
9
|
+
let responsedata = [];
|
|
10
|
+
let offset = 0;
|
|
11
|
+
const limit = 100;
|
|
12
|
+
while (true) {
|
|
13
|
+
const url = `https://${instanceUrl}.fs.ocs.oraclecloud.com/rest/ofscMetadata/v1/workSkills?offset=${offset}&limit=${limit}`;
|
|
14
|
+
const res = await (0, utilities_1.fetchWithRetry)(url, clientId, clientSecret, instanceUrl, token);
|
|
15
|
+
token = res.token;
|
|
16
|
+
responsedata = [...responsedata, ...res.data.items];
|
|
17
|
+
if (!res.data.hasMore)
|
|
18
|
+
break;
|
|
19
|
+
offset = res.data.offset + limit;
|
|
20
|
+
}
|
|
21
|
+
const sheet = transformDataWS(responsedata);
|
|
22
|
+
const WSCSheet = await getWorkSkillConditionsMetaData(clientId, clientSecret, instanceUrl, responsedata, token);
|
|
23
|
+
return {
|
|
24
|
+
// ...sheet,
|
|
25
|
+
...WSCSheet
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
async function getWorkSkillConditionsMetaData(clientId, clientSecret, instanceUrl, wsData, token = "") {
|
|
29
|
+
let responsedata = [];
|
|
30
|
+
let offset = 0;
|
|
31
|
+
const limit = 100;
|
|
32
|
+
while (true) {
|
|
33
|
+
const url = `https://${instanceUrl}.fs.ocs.oraclecloud.com/rest/ofscMetadata/v1/workSkillConditions?offset=${offset}&limit=${limit}`;
|
|
34
|
+
const res = await (0, utilities_1.fetchWithRetry)(url, clientId, clientSecret, instanceUrl, token);
|
|
35
|
+
token = res.token;
|
|
36
|
+
responsedata = [...responsedata, ...res.data.items];
|
|
37
|
+
if (!res.data.hasMore)
|
|
38
|
+
break;
|
|
39
|
+
offset = res.data.offset + limit;
|
|
40
|
+
}
|
|
41
|
+
const sheet = transformData(responsedata, wsData);
|
|
42
|
+
return sheet;
|
|
43
|
+
}
|
|
44
|
+
function transformData(data, wsData) {
|
|
45
|
+
const sheets = {};
|
|
46
|
+
// Sheet 2: Activity Type Groups Activities
|
|
47
|
+
const wsConditions = [];
|
|
48
|
+
data.forEach(d => {
|
|
49
|
+
if (!Array.isArray(d.conditions))
|
|
50
|
+
return;
|
|
51
|
+
d.conditions.forEach((ts) => {
|
|
52
|
+
wsConditions.push({
|
|
53
|
+
"Work Skill Name": d.label,
|
|
54
|
+
"Work Skill Status": wsData.find((ws) => ws.label === d.label).active ? "Active" : "Inactive",
|
|
55
|
+
"Property": ts.label,
|
|
56
|
+
"Function": ts.function,
|
|
57
|
+
"Value List": JSON.stringify(ts.valueList)
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
const props = wsConditions.reduce((acc, curr) => {
|
|
62
|
+
acc.push({
|
|
63
|
+
label: curr["Property"],
|
|
64
|
+
comment: "It is being used in Work Skill Condition"
|
|
65
|
+
});
|
|
66
|
+
return acc;
|
|
67
|
+
}, []);
|
|
68
|
+
return {
|
|
69
|
+
data: { 'Work Skills Conditions': wsConditions },
|
|
70
|
+
props
|
|
71
|
+
};
|
|
72
|
+
;
|
|
73
|
+
}
|
|
74
|
+
function transformDataWS(data) {
|
|
75
|
+
const sheets = {};
|
|
76
|
+
const wsConditions = [];
|
|
77
|
+
data.forEach(d => {
|
|
78
|
+
wsConditions.push({
|
|
79
|
+
// "label": "ALM",
|
|
80
|
+
"WS Name": d.name,
|
|
81
|
+
"status": d.active ? "Active" : "Inactive",
|
|
82
|
+
"Sharing": d.sharing,
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
sheets['Work Skills Overview'] = wsConditions;
|
|
86
|
+
return sheets;
|
|
87
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getWorkSkillsMetaData = getWorkSkillsMetaData;
|
|
4
|
+
exports.transformData = transformData;
|
|
5
|
+
const utilities_1 = require("../utilities");
|
|
6
|
+
async function getWorkSkillsMetaData(clientId, clientSecret, instanceUrl, token = "") {
|
|
7
|
+
let responsedata = [];
|
|
8
|
+
let offset = 0;
|
|
9
|
+
const limit = 100;
|
|
10
|
+
while (true) {
|
|
11
|
+
const url = `https://${instanceUrl}.fs.ocs.oraclecloud.com/rest/ofscMetadata/v1/workSkills?offset=${offset}&limit=${limit}`;
|
|
12
|
+
const res = await (0, utilities_1.fetchWithRetry)(url, clientId, clientSecret, instanceUrl, token);
|
|
13
|
+
token = res.token;
|
|
14
|
+
responsedata = [...responsedata, ...res.data.items];
|
|
15
|
+
if (!res.data.hasMore)
|
|
16
|
+
break;
|
|
17
|
+
offset = res.data.offset + limit;
|
|
18
|
+
}
|
|
19
|
+
const sheet = transformData(responsedata);
|
|
20
|
+
return sheet;
|
|
21
|
+
}
|
|
22
|
+
function transformData(data) {
|
|
23
|
+
const sheets = {};
|
|
24
|
+
const wsConditions = [];
|
|
25
|
+
data.forEach(d => {
|
|
26
|
+
wsConditions.push({
|
|
27
|
+
// "label": "ALM",
|
|
28
|
+
"WS Name": "ALM",
|
|
29
|
+
"status": d.active ? "Active" : "Inactive",
|
|
30
|
+
"Sharing": d.sharing,
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
sheets['Work Skills Overview'] = wsConditions;
|
|
34
|
+
return sheets;
|
|
35
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getWorkZoneKeyMetaData = getWorkZoneKeyMetaData;
|
|
4
|
+
exports.transformData = transformData;
|
|
5
|
+
const utilities_1 = require("../utilities");
|
|
6
|
+
async function getWorkZoneKeyMetaData(clientId, clientSecret, instanceUrl, token = "") {
|
|
7
|
+
let responsedata = [];
|
|
8
|
+
let offset = 0;
|
|
9
|
+
const limit = 100;
|
|
10
|
+
while (true) {
|
|
11
|
+
const url = `https://${instanceUrl}.fs.ocs.oraclecloud.com/rest/ofscMetadata/v1/workZoneKey?offset=${offset}&limit=${limit}`;
|
|
12
|
+
const res = await (0, utilities_1.fetchWithRetry)(url, clientId, clientSecret, instanceUrl, token);
|
|
13
|
+
token = res.token;
|
|
14
|
+
responsedata = [...responsedata, ...res.data.current];
|
|
15
|
+
if (!res.data.hasMore)
|
|
16
|
+
break;
|
|
17
|
+
offset = res.data.offset + limit;
|
|
18
|
+
}
|
|
19
|
+
const sheet = transformData(responsedata);
|
|
20
|
+
return sheet;
|
|
21
|
+
}
|
|
22
|
+
function transformData(data) {
|
|
23
|
+
const sheets = {};
|
|
24
|
+
// Sheet 1: workZoneKey Overview
|
|
25
|
+
const overview = data.map(d => ({
|
|
26
|
+
"Label": d.label,
|
|
27
|
+
"Length": d.length,
|
|
28
|
+
"Function": d.function,
|
|
29
|
+
"Order": d.order,
|
|
30
|
+
"Api Parameter Name": d.apiParameterName
|
|
31
|
+
}));
|
|
32
|
+
const props = overview.reduce((acc, curr) => {
|
|
33
|
+
acc.push({
|
|
34
|
+
label: curr["Api Parameter Name"],
|
|
35
|
+
comment: "It is being used in work zone key"
|
|
36
|
+
});
|
|
37
|
+
return acc;
|
|
38
|
+
}, []);
|
|
39
|
+
return {
|
|
40
|
+
data: { 'Work Zone Key': overview },
|
|
41
|
+
props
|
|
42
|
+
};
|
|
43
|
+
;
|
|
44
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getWorkZonesMetaData = getWorkZonesMetaData;
|
|
4
|
+
exports.transformData = transformData;
|
|
5
|
+
const utilities_1 = require("../utilities");
|
|
6
|
+
async function getWorkZonesMetaData(clientId, clientSecret, instanceUrl, token = "") {
|
|
7
|
+
let responsedata = [];
|
|
8
|
+
let offset = 0;
|
|
9
|
+
const limit = 100;
|
|
10
|
+
while (true) {
|
|
11
|
+
const url = `https://${instanceUrl}.fs.ocs.oraclecloud.com/rest/ofscMetadata/v1/workZones?offset=${offset}&limit=${limit}`;
|
|
12
|
+
const res = await (0, utilities_1.fetchWithRetry)(url, clientId, clientSecret, instanceUrl, token);
|
|
13
|
+
token = res.token;
|
|
14
|
+
responsedata = [...responsedata, ...res.data.items];
|
|
15
|
+
if (!res.data.hasMore)
|
|
16
|
+
break;
|
|
17
|
+
offset = res.data.offset + limit;
|
|
18
|
+
}
|
|
19
|
+
const sheet = transformData(responsedata);
|
|
20
|
+
return sheet;
|
|
21
|
+
}
|
|
22
|
+
function transformData(data) {
|
|
23
|
+
const sheets = {};
|
|
24
|
+
// Sheet 1: Activity Type Groups Overview
|
|
25
|
+
const overview = data.map(d => ({
|
|
26
|
+
"Work Zone Name": d.workZoneName,
|
|
27
|
+
"status": d.status ? "Active" : "Inactive",
|
|
28
|
+
}));
|
|
29
|
+
sheets['Work Zone Overview'] = overview;
|
|
30
|
+
return sheets;
|
|
31
|
+
}
|
|
@@ -1 +1,6 @@
|
|
|
1
1
|
export declare function downloadAllResourcesCSV(clientId: string, clientSecret: string, instanceUrl: string): Promise<void>;
|
|
2
|
+
export declare function AllResources(clientId: string, clientSecret: string, instanceUrl: string, initialToken?: string): Promise<any[]>;
|
|
3
|
+
export declare function getworkSkillsOfResource(clientId: string, clientSecret: string, instanceUrl: string, resourceId: number, token?: string): Promise<{
|
|
4
|
+
token: string;
|
|
5
|
+
data: any;
|
|
6
|
+
}>;
|
package/dist/resources/index.js
CHANGED
|
@@ -37,9 +37,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.downloadAllResourcesCSV = downloadAllResourcesCSV;
|
|
40
|
+
exports.AllResources = AllResources;
|
|
41
|
+
exports.getworkSkillsOfResource = getworkSkillsOfResource;
|
|
40
42
|
const fs = __importStar(require("fs"));
|
|
41
43
|
const node_fetch_1 = __importDefault(require("node-fetch"));
|
|
42
44
|
const index_1 = require("../oauthTokenService/index");
|
|
45
|
+
const utilities_1 = require("../utilities");
|
|
43
46
|
async function downloadAllResourcesCSV(clientId, clientSecret, instanceUrl) {
|
|
44
47
|
let offset = 0;
|
|
45
48
|
const limit = 100;
|
|
@@ -113,3 +116,27 @@ async function downloadAllResourcesCSV(clientId, clientSecret, instanceUrl) {
|
|
|
113
116
|
console.log(`🧩 Date Time: ${new Date()}`);
|
|
114
117
|
console.log("-------------------------------------");
|
|
115
118
|
}
|
|
119
|
+
async function AllResources(clientId, clientSecret, instanceUrl, initialToken = "") {
|
|
120
|
+
const fetchResources = async (offset, token) => {
|
|
121
|
+
const url = `https://${instanceUrl}.fs.ocs.oraclecloud.com/rest/ofscCore/v1/resources/?offset=${offset}&limit=100`;
|
|
122
|
+
const res = await (0, utilities_1.fetchWithRetry)(url, clientId, clientSecret, instanceUrl, token);
|
|
123
|
+
const { items, totalResults } = res.data;
|
|
124
|
+
const totalFetched = items.length;
|
|
125
|
+
console.log(`✔ Received ${totalFetched} items (Total: ${offset + totalFetched})`);
|
|
126
|
+
if (offset + totalFetched >= totalResults) {
|
|
127
|
+
return items;
|
|
128
|
+
}
|
|
129
|
+
const nextItems = await fetchResources(offset + totalFetched, res.token);
|
|
130
|
+
return [...items, ...nextItems];
|
|
131
|
+
};
|
|
132
|
+
return fetchResources(0, initialToken);
|
|
133
|
+
}
|
|
134
|
+
async function getworkSkillsOfResource(clientId, clientSecret, instanceUrl, resourceId, token = "") {
|
|
135
|
+
const url = `https://${instanceUrl}.fs.ocs.oraclecloud.com/rest/ofscCore/v1/resources/${encodeURIComponent(resourceId)}/workSkills`;
|
|
136
|
+
console.log(`➡️ Fetching workSkills by resourceID: ${url}`);
|
|
137
|
+
const response = await (0, utilities_1.fetchWithRetry)(url, clientId, clientSecret, instanceUrl, token);
|
|
138
|
+
return {
|
|
139
|
+
token: response.token,
|
|
140
|
+
data: response.data.items
|
|
141
|
+
};
|
|
142
|
+
}
|
|
@@ -15,3 +15,7 @@ export declare const fetchWithRetry: (url: string, clientId: string, clientSecre
|
|
|
15
15
|
}>;
|
|
16
16
|
export declare function saveCsv<T extends Record<string, any>>(rows: T[], filePath: string): void;
|
|
17
17
|
export declare function xmlNodeToObjects(xmlString: string, parentNodeName: string): Record<string, string>[];
|
|
18
|
+
type SheetRow = Record<string, unknown>;
|
|
19
|
+
type SheetsData = Record<string, SheetRow[]>;
|
|
20
|
+
export declare function createExcelFile(sheetsData: SheetsData, filename?: string): void;
|
|
21
|
+
export {};
|
package/dist/utilities/index.js
CHANGED
|
@@ -1,4 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
37
|
};
|
|
@@ -6,6 +39,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
39
|
exports.fetchWithRetry = void 0;
|
|
7
40
|
exports.saveCsv = saveCsv;
|
|
8
41
|
exports.xmlNodeToObjects = xmlNodeToObjects;
|
|
42
|
+
exports.createExcelFile = createExcelFile;
|
|
43
|
+
const XLSX = __importStar(require("xlsx-js-style"));
|
|
9
44
|
const xmldom_1 = require("xmldom");
|
|
10
45
|
const oauthTokenService_1 = require("../oauthTokenService");
|
|
11
46
|
/**
|
|
@@ -115,3 +150,124 @@ function xmlNodeToObjects(xmlString, parentNodeName) {
|
|
|
115
150
|
return obj;
|
|
116
151
|
});
|
|
117
152
|
}
|
|
153
|
+
function createExcelFile(sheetsData, filename = 'file.xlsx') {
|
|
154
|
+
const workbook = XLSX.utils.book_new();
|
|
155
|
+
/* ============================
|
|
156
|
+
Create INDEX sheet first
|
|
157
|
+
============================ */
|
|
158
|
+
const indexData = Object.keys(sheetsData).map(sheetName => ({
|
|
159
|
+
"OFSC Master Configuration Sheet": sheetName
|
|
160
|
+
}));
|
|
161
|
+
const indexSheet = XLSX.utils.json_to_sheet(indexData);
|
|
162
|
+
// Style INDEX header
|
|
163
|
+
const indexHeaderCell = indexSheet['A1'];
|
|
164
|
+
if (indexHeaderCell) {
|
|
165
|
+
indexHeaderCell.s = {
|
|
166
|
+
fill: { fgColor: { rgb: 'FFD9D9D9' } },
|
|
167
|
+
font: { bold: true, size: 18 },
|
|
168
|
+
alignment: { horizontal: 'center' }
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
// Add hyperlinks
|
|
172
|
+
indexData.forEach((_, i) => {
|
|
173
|
+
const row = i + 2; // data starts after header
|
|
174
|
+
const cellAddress = `A${row}`;
|
|
175
|
+
const cell = indexSheet[cellAddress];
|
|
176
|
+
if (cell) {
|
|
177
|
+
cell.l = {
|
|
178
|
+
Target: `#'${cell.v}'!A1`,
|
|
179
|
+
Tooltip: `Go to ${cell.v}`
|
|
180
|
+
};
|
|
181
|
+
cell.s = {
|
|
182
|
+
font: {
|
|
183
|
+
color: { rgb: 'FF0563C1' }, // Excel hyperlink blue
|
|
184
|
+
underline: true
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
indexSheet['!cols'] = [{ wch: 30 }];
|
|
190
|
+
XLSX.utils.book_append_sheet(workbook, indexSheet, 'INDEX');
|
|
191
|
+
/* ============================
|
|
192
|
+
Create data sheets
|
|
193
|
+
============================ */
|
|
194
|
+
Object.entries(sheetsData).forEach(([sheetName, data]) => {
|
|
195
|
+
const worksheet = XLSX.utils.json_to_sheet(data);
|
|
196
|
+
if (data.length > 0) {
|
|
197
|
+
const keys = Object.keys(data[0]);
|
|
198
|
+
// Auto-size columns
|
|
199
|
+
worksheet['!cols'] = keys.map(key => {
|
|
200
|
+
const maxLength = Math.max(key.length, ...data.map(row => String(row[key] ?? '').length));
|
|
201
|
+
return { wch: Math.min(maxLength + 2, 50) };
|
|
202
|
+
});
|
|
203
|
+
// Highlight header row
|
|
204
|
+
keys.forEach((_, colIndex) => {
|
|
205
|
+
const addr = XLSX.utils.encode_cell({ r: 0, c: colIndex });
|
|
206
|
+
const cell = worksheet[addr];
|
|
207
|
+
if (!cell)
|
|
208
|
+
return;
|
|
209
|
+
cell.s = {
|
|
210
|
+
fill: { fgColor: { rgb: 'FFD9D9D9' } },
|
|
211
|
+
font: { bold: false, sz: 14, },
|
|
212
|
+
alignment: { horizontal: 'center' }
|
|
213
|
+
};
|
|
214
|
+
});
|
|
215
|
+
// Process data rows
|
|
216
|
+
data.forEach((row, rowIndex) => {
|
|
217
|
+
const rowIsInactive = row.Status === 'Inactive' ||
|
|
218
|
+
JSON.stringify(row).toUpperCase().includes('INACTIVE') || JSON.stringify(row).toUpperCase().includes('INACTIVATE');
|
|
219
|
+
keys.forEach((key, colIndex) => {
|
|
220
|
+
const addr = XLSX.utils.encode_cell({
|
|
221
|
+
r: rowIndex + 1,
|
|
222
|
+
c: colIndex
|
|
223
|
+
});
|
|
224
|
+
const cell = worksheet[addr];
|
|
225
|
+
if (!cell)
|
|
226
|
+
return;
|
|
227
|
+
const value = String(row[key] ?? '').toLowerCase();
|
|
228
|
+
cell.s = cell.s || {};
|
|
229
|
+
// "read write" highlight
|
|
230
|
+
if (value.includes('read write')) {
|
|
231
|
+
cell.s.font = {
|
|
232
|
+
...(cell.s.font || {}),
|
|
233
|
+
bold: true,
|
|
234
|
+
color: { rgb: 'FFCC0000' }
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
if (value.includes('nonserialized')) {
|
|
238
|
+
cell.s.font = {
|
|
239
|
+
...(cell.s.font || {}),
|
|
240
|
+
bold: true,
|
|
241
|
+
color: { rgb: 'FF006100' }
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
if (value.includes('it is being used')) {
|
|
245
|
+
cell.s.font = {
|
|
246
|
+
...(cell.s.font || {}),
|
|
247
|
+
bold: true,
|
|
248
|
+
color: { rgb: 'FF006100' }
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
if (value.includes('on-call')) {
|
|
252
|
+
cell.s.font = {
|
|
253
|
+
...(cell.s.font || {}),
|
|
254
|
+
bold: true,
|
|
255
|
+
color: { rgb: 'FF0563C1' }
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
// Inactive row highlight
|
|
259
|
+
if (rowIsInactive) {
|
|
260
|
+
cell.s.fill = { fgColor: { rgb: 'FFFFCCCC' } };
|
|
261
|
+
cell.s.font = {
|
|
262
|
+
...(cell.s.font || {}),
|
|
263
|
+
color: { rgb: 'FFCC0000' }
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
XLSX.utils.book_append_sheet(workbook, worksheet, sheetName);
|
|
270
|
+
});
|
|
271
|
+
XLSX.writeFile(workbook, filename);
|
|
272
|
+
console.log(`✓ Excel file created: ${filename}`);
|
|
273
|
+
}
|