principal-dashboard-lib-v2 0.0.21 → 0.0.23
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/bundles/principal-dashboard-lib-v2.umd.js +143 -28
- package/bundles/principal-dashboard-lib-v2.umd.js.map +1 -1
- package/bundles/principal-dashboard-lib-v2.umd.min.js +1 -1
- package/bundles/principal-dashboard-lib-v2.umd.min.js.map +1 -1
- package/esm2015/lib/chartheader/chartheader.component.js +2 -2
- package/esm2015/lib/chartview/chartview.component.js +8 -4
- package/esm2015/lib/principal-dashboard-lib-v2.service.js +53 -18
- package/esm2015/lib/tableview/tableview.component.js +80 -7
- package/fesm2015/principal-dashboard-lib-v2.js +139 -27
- package/fesm2015/principal-dashboard-lib-v2.js.map +1 -1
- package/lib/tableview/tableview.component.d.ts +2 -0
- package/package.json +1 -1
- package/principal-dashboard-lib-v2.metadata.json +1 -1
|
@@ -21,6 +21,7 @@ export class TableviewComponent {
|
|
|
21
21
|
this.myXmlData = JSON.parse(response);
|
|
22
22
|
if (this.myXmlData) {
|
|
23
23
|
// get current data list
|
|
24
|
+
console.log("AAA myXmlData-->>", this.myXmlData);
|
|
24
25
|
let genarateUserReqiuredData = this.pdService.genarateUserReqiuredData(this.myXmlData);
|
|
25
26
|
this.currentdataList = genarateUserReqiuredData.userConsoleData;
|
|
26
27
|
// get all user list
|
|
@@ -53,14 +54,71 @@ export class TableviewComponent {
|
|
|
53
54
|
}
|
|
54
55
|
});
|
|
55
56
|
}
|
|
57
|
+
findAndSimplifyNestedArray(data) {
|
|
58
|
+
console.log('this.tableViewData', data);
|
|
59
|
+
for (let i = 0; i < data.length; i++) {
|
|
60
|
+
if (Array.isArray(data[i])) {
|
|
61
|
+
const nestedArray = data[i];
|
|
62
|
+
if (nestedArray.every(item => Array.isArray(item) && item.every(val => val === item[0]))) {
|
|
63
|
+
data[i] = [[nestedArray[0][0]]];
|
|
64
|
+
}
|
|
65
|
+
return data[i];
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return "No nested array found.";
|
|
69
|
+
}
|
|
56
70
|
showCurrentDataUser() {
|
|
57
71
|
this.tableViewData = this.pdService.dataForTableView(this.currentdataList, this.currentResoursedataList);
|
|
72
|
+
//this.tableViewData = this.findAndSimplifyNestedArray(this.tableViewData);
|
|
73
|
+
let newTableViewData;
|
|
74
|
+
for (var i = 0; i < this.tableViewData.length; i++) {
|
|
75
|
+
newTableViewData = this.findAndSimplifyNestedArray(this.tableViewData[i]);
|
|
76
|
+
newTableViewData[newTableViewData.length - 1] = newTableViewData[newTableViewData.length - 1][0];
|
|
77
|
+
}
|
|
78
|
+
let anotherTableViewData;
|
|
79
|
+
for (var j = 0; j < this.tableViewData.length; j++) {
|
|
80
|
+
anotherTableViewData = this.mergerSourceWithRoomData(this.tableViewData[j]);
|
|
81
|
+
}
|
|
58
82
|
if (this.tableViewData) {
|
|
83
|
+
//this.ueserWiseTableView(this.tableViewData);
|
|
59
84
|
this.ueserWiseTableView(this.tableViewData);
|
|
60
85
|
}
|
|
86
|
+
console.log('AAA mlaunchedFromm tableViewData', this.tableViewData);
|
|
87
|
+
}
|
|
88
|
+
mergerSourceWithRoomData(tableViewData) {
|
|
89
|
+
let lastIndexValue = tableViewData[tableViewData.length - 1].join(' ');
|
|
90
|
+
// Merge last index value into the 6th index
|
|
91
|
+
console.log('lastIndexValue', lastIndexValue);
|
|
92
|
+
if (lastIndexValue === 'ce6') {
|
|
93
|
+
//lastIndexValue = '<span style="color:black;"><i class="fa fa-windows" aria-hidden="true"></i></span>';
|
|
94
|
+
lastIndexValue = '<span style="color:black;"></span>';
|
|
95
|
+
}
|
|
96
|
+
else if (lastIndexValue === 'ce6-a') {
|
|
97
|
+
lastIndexValue = '<span style="color:#1b60d1;font-weight:bold;font-size:14px;"><i class="fa fa-android" aria-hidden="true"></i></span>';
|
|
98
|
+
}
|
|
99
|
+
else if (lastIndexValue === 'c') {
|
|
100
|
+
lastIndexValue = '<span style="color:#1b60d1;font-weight:bold;font-size:14px; display:flex;"><i style="margin-top:-1px;" class="fa fa-android" aria-hidden="true"></i><i style="margin-left:5px;" class="fa fa-desktop" aria-hidden="true"></i></span>';
|
|
101
|
+
}
|
|
102
|
+
//tableViewData[6] = tableViewData[6] + '\n' + lastIndexValue;
|
|
103
|
+
//tableViewData[6] = '<div style="display: flex;flex-direction: row;align-content: center;justify-content: flex-start;align-items: center;">'+lastIndexValue + ' ' + '<span style="font-size:11px !important;color:gray;font-weight:600;">'+tableViewData[6]+'</span></div>';
|
|
104
|
+
tableViewData[6] = '<div style="display: flex;flex-direction: row;align-content: center;justify-content: flex-start;align-items: center;">' + '<span style="font-size:11px !important;color:gray;font-weight:600;">' + tableViewData[6] + '</span>' + '<span style="color:transparent">-</span>' + lastIndexValue + '</div>';
|
|
105
|
+
// Optional: remove the last element (if no longer needed)
|
|
106
|
+
tableViewData.pop();
|
|
61
107
|
}
|
|
62
108
|
showAllUser() {
|
|
63
109
|
this.tableViewData = this.pdService.dataForTableView(this.alluserList, this.currentResoursedataList);
|
|
110
|
+
//console.log('AAA userConsoleMatrix tableViewData', this.tableViewData)
|
|
111
|
+
let newTableViewData;
|
|
112
|
+
for (var i = 0; i < this.tableViewData.length; i++) {
|
|
113
|
+
newTableViewData = this.findAndSimplifyNestedArray(this.tableViewData[i]);
|
|
114
|
+
if (newTableViewData[newTableViewData.length - 1]) {
|
|
115
|
+
newTableViewData[newTableViewData.length - 1] = newTableViewData[newTableViewData.length - 1][0];
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
let anotherTableViewData;
|
|
119
|
+
for (var j = 0; j < this.tableViewData.length; j++) {
|
|
120
|
+
anotherTableViewData = this.mergerSourceWithRoomData(this.tableViewData[j]);
|
|
121
|
+
}
|
|
64
122
|
if (this.tableViewData) {
|
|
65
123
|
this.ueserWiseTableView(this.tableViewData);
|
|
66
124
|
}
|
|
@@ -85,15 +143,30 @@ export class TableviewComponent {
|
|
|
85
143
|
let cnt = 0;
|
|
86
144
|
for (let i = 0; i < resoureMetadata.length; i++) {
|
|
87
145
|
for (let j = 0; j < 12; j++) {
|
|
88
|
-
let label = document.createElement('label');
|
|
89
|
-
label.appendChild(document.createTextNode(resoureMetadata[i][j]));
|
|
90
|
-
|
|
146
|
+
//let label = document.createElement('label');
|
|
147
|
+
//label.appendChild(document.createTextNode(resoureMetadata[i][j]));
|
|
148
|
+
let label = document.createElement('div');
|
|
149
|
+
label.innerHTML = (resoureMetadata[i][j]);
|
|
150
|
+
console.log('label.textContent', label.textContent);
|
|
151
|
+
if (label.textContent === 'undefined' ||
|
|
152
|
+
label.textContent === undefined ||
|
|
153
|
+
label.textContent === 'undefined\nce6-a' ||
|
|
154
|
+
label.textContent === 'undefined\nce6' ||
|
|
155
|
+
label.textContent === 'undefined\n' ||
|
|
156
|
+
label.textContent === 'undefined\nAndroid' ||
|
|
157
|
+
label.textContent === 'undefined\nWeb' ||
|
|
158
|
+
label.textContent === 'undefined\n' ||
|
|
159
|
+
label.textContent === '\nundefined' ||
|
|
160
|
+
label.textContent === ' undefined' ||
|
|
161
|
+
label.textContent === 'undefined-' ||
|
|
162
|
+
label.textContent === 'undefined-c' ||
|
|
163
|
+
label.textContent === 'undefined- ') {
|
|
91
164
|
label.textContent = '';
|
|
92
165
|
}
|
|
93
166
|
labelArray.push(label);
|
|
94
|
-
// console.log("label",label);
|
|
95
167
|
}
|
|
96
168
|
}
|
|
169
|
+
//console.log("labelArray",labelArray);
|
|
97
170
|
for (let j = 0; j <= resoureMetadata.length; j++) {
|
|
98
171
|
let row = document.createElement('tr');
|
|
99
172
|
let cell;
|
|
@@ -113,8 +186,8 @@ export class TableviewComponent {
|
|
|
113
186
|
TableviewComponent.decorators = [
|
|
114
187
|
{ type: Component, args: [{
|
|
115
188
|
selector: 'lib-tableview',
|
|
116
|
-
template: "\n <div id=\"tableViewDiv\" class=\"pd-tableViewDiv\">\n \n <table class=\"table table-bordered\" id=\"tableRow\">\n <thead class=\"table-head\">\n <tr class=\"table-headerRow\">\n <th scope=\"col\">Teacher Name</th>\n <th scope=\"col\">Subjects</th>\n <th scope=\"col\">Date</th>\n <th scope=\"col\">Start Time</th>\n <th scope=\"col\">End Time</th>\n <th scope=\"col\">Duration (mins)</th>\n <th scope=\"col\">Room</th>\n <th scope=\"col\">Subject</th>\n <th scope=\"col\">Topic of Class</th>\n <th scope=\"col\">Chapter Name</th>\n <th scope=\"col\">Topic Name</th>\n <th scope=\"col\">Assets Details</th>\n </tr>\n </thead>\n <tbody id=\"tblBody\">\n \n </tbody>\n </table>\n </div>\n \n",
|
|
117
|
-
styles: [".pd-tableViewDiv{width:100%;height:744px;overflow:scroll}.pd-tableViewDiv #tableRow{font-size:small;width:100%;margin-left:24px;margin-top:10px}.pd-tableViewDiv .table-headerRow{font-weight:700}.pd-tableViewDiv .table-head{position:sticky;top:0;background:#fff}"]
|
|
189
|
+
template: "\n <div id=\"tableViewDiv\" class=\"pd-tableViewDiv\">\n \n <table class=\"table table-bordered\" id=\"tableRow\">\n <thead class=\"table-head\">\n <tr class=\"table-headerRow\">\n <th scope=\"col\">Teacher Name</th>\n <th scope=\"col\">Subjects</th>\n <th scope=\"col\">Date</th>\n <th scope=\"col\">Start Time</th>\n <th scope=\"col\">End Time</th>\n <th scope=\"col\">Duration (mins)</th>\n <th scope=\"col\">Room</th>\n <th scope=\"col\">Subject</th>\n <th scope=\"col\">Topic of Class</th>\n <th scope=\"col\">Chapter Name</th>\n <th scope=\"col\">Topic Name</th>\n <th scope=\"col\">Assets Details</th>\n \n </tr>\n </thead>\n <tbody id=\"tblBody\">\n \n </tbody>\n </table>\n </div>\n \n",
|
|
190
|
+
styles: [".pd-tableViewDiv{width:100%;height:744px;overflow:scroll}.pd-tableViewDiv #tableRow{font-size:small;width:100%;margin-left:24px;margin-top:10px}.pd-tableViewDiv .table-headerRow{font-weight:700}.pd-tableViewDiv .table-head{position:sticky;top:0;background:#fff}.roomCell{display:flex;flex-direction:row;align-content:center;justify-content:flex-start;align-items:center}"]
|
|
118
191
|
},] }
|
|
119
192
|
];
|
|
120
193
|
TableviewComponent.ctorParameters = () => [
|
|
@@ -123,4 +196,4 @@ TableviewComponent.ctorParameters = () => [
|
|
|
123
196
|
TableviewComponent.propDecorators = {
|
|
124
197
|
data: [{ type: Input }]
|
|
125
198
|
};
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByaW5jaXBhbC1kYXNoYm9hcmQtbGliLXYyL3NyYy9saWIvdGFibGV2aWV3L3RhYmxldmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBUWxELE1BQU0sT0FBTyxrQkFBa0I7SUFNN0IsWUFDVSxTQUF5QztRQUF6QyxjQUFTLEdBQVQsU0FBUyxDQUFnQztRQVFuRCxnQkFBVyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFLOUIsZUFBVSxHQUFHLElBQUksQ0FBQztJQVpmLENBQUM7SUFQSixJQUFhLElBQUksQ0FBQyxHQUFRO1FBQ3hCLElBQUcsR0FBRyxLQUFJLElBQUksRUFBQztZQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBaUJELFFBQVE7SUFFUixDQUFDO0lBQ0QsU0FBUyxDQUFDLFFBQWE7UUFDckIsK0JBQStCO1FBQy9CLHVFQUF1RTtRQUN2RSxJQUFHLFFBQVEsRUFBQztZQUNWLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0QyxJQUFHLElBQUksQ0FBQyxTQUFTLEVBQUM7Z0JBQ2hCLHdCQUF3QjtnQkFDeEIsSUFBSSx3QkFBd0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDdkYsSUFBSSxDQUFDLGVBQWUsR0FBRSx3QkFBd0IsQ0FBQyxlQUFlLENB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QUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUMzQixJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFcEMsSUFBSSxHQUFHLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRTtvQkFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDbEMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDdkI7Z0JBQ0QsR0FBRyxFQUFFLENBQUM7YUFDUDtZQUNELElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLDJDQUEyQztTQUM1QztJQUVILENBQUM7OztZQW5JRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGVBQWU7Z0JBQ3pCLDgxQkFBeUM7O2FBRTFDOzs7WUFQUSw4QkFBOEI7OzttQkFVcEMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0ICxJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcmluY2lwYWxEYXNoYm9hcmRMaWJWMlNlcnZpY2UgfSBmcm9tICcuLi9wcmluY2lwYWwtZGFzaGJvYXJkLWxpYi12Mi5zZXJ2aWNlJztcbmltcG9ydCB7IENoYXJ0VHlwZSB9IGZyb20gJ2FuZ3VsYXItZ29vZ2xlLWNoYXJ0cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi10YWJsZXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGV2aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGV2aWV3LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuXG5leHBvcnQgY2xhc3MgVGFibGV2aWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgc2V0IGRhdGEocmVzOiBhbnkpIHtcbiAgICBpZihyZXMhPT0gbnVsbCl7XG4gICAgICB0aGlzLmxvYWRUYWJsZShyZXMpO1xuICAgIH1cbiAgfVxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBkU2VydmljZTogUHJpbmNpcGFsRGFzaGJvYXJkTGliVjJTZXJ2aWNlXG4gICkge31cbiAgcmVzb3Vyc2VNZXRhZGF0YTogYW55O1xuICB0YWJsZVJvdzogYW55O1xuICB1c2VyTWV0YWRhdGE6IGFueTtcbiAgdGFibGVWaWV3RGl2OiBhbnk7XG4gIHRibEJvZHk6IGFueTtcbiAgbXlYbWxEYXRhOiBhbnk7XG4gIG15Q2hhcnRUeXBlID0gQ2hhcnRUeXBlLlRhYmxlO1xuICBjdXJyZW50ZGF0YUxpc3Q6YW55O1xuICBjdXJyZW50UmVzb3Vyc2VkYXRhTGlzdDphbnk7XG4gIHRhYmxlVmlld0RhdGE6YW55O1xuICBhbGx1c2VyTGlzdDphbnk7XG4gIGlzVXNlcldpc2UgPSB0cnVlO1xuIFxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgXG4gIH1cbiAgbG9hZFRhYmxlKHJlc3BvbnNlOiBhbnkpe1xuICAgIC8vIGxldCBwYXJzZSA9IG5ldyBET01QYXJzZXIoKTtcbiAgICAvLyB0aGlzLm15WG1sRGF0YSA9IHBhcnNlLnBhcnNlRnJvbVN0cmluZyhyZXNwb25zZSwgJ2FwcGxpY2F0aW9uL3htbCcpO1xuICAgIGlmKHJlc3BvbnNlKXtcbiAgICAgIHRoaXMubXlYbWxEYXRhID0gSlNPTi5wYXJzZShyZXNwb25zZSk7XG4gICAgICBpZih0aGlzLm15WG1sRGF0YSl7XG4gICAgICAgIC8vIGdldCBjdXJyZW50IGRhdGEgbGlzdFxuICAgICAgICBsZXQgZ2VuYXJhdGVVc2VyUmVxaXVyZWREYXRhID0gdGhpcy5wZFNlcnZpY2UuZ2VuYXJhdGVVc2VyUmVxaXVyZWREYXRhKHRoaXMubXlYbWxEYXRhKTtcbiAgICAgICAgdGhpcy5jdXJyZW50ZGF0YUxpc3QgPWdlbmFyYXRlVXNlclJlcWl1cmVkRGF0YS51c2VyQ29uc29sZURhdGE7XG4gICAgICAvLyAgZ2V0IGFsbCB1c2VyIGxpc3QgXG4gICAgICAgIGxldCBmZXRjaEFsbHVzZXJMaXN0ID0gdGhpcy5wZFNlcnZpY2UuYWxsVXNlckNoYXJ0RGF0YSgpO1xuICAgICAgICB0aGlzLmFsbHVzZXJMaXN0ID0gZmV0Y2hBbGx1c2VyTGlzdC5mb3JkdXJhdGlvblRhYmxlO1xuICAgICAgICAvLyByZXNvdXJlTWV0YWRhdGEgbGlzdFxuICAgICAgICAgdGhpcy5jdXJyZW50UmVzb3Vyc2VkYXRhTGlzdCA9IHRoaXMucGRTZXJ2aWNlLmdlbmFyYXRlUmVzb3Vyc2VSZXFpdXJlZERhdGEodGhpcy5teVhtbERhdGEpO1xuICAgICAgICAgY29uc29sZS5sb2coXCJBQUEgZ2VuYXJhdGVVc2VyUmVxaXVyZWREYXRhLS0+PlwiLGdlbmFyYXRlVXNlclJlcWl1cmVkRGF0YSlcbiAgICAgICAgIGNvbnNvbGUubG9nKFwiQUFBIHRoaXMuY3VycmVudFJlc291cnNlZGF0YUxpc3QtLT4+XCIsdGhpcy5jdXJyZW50UmVzb3Vyc2VkYXRhTGlzdClcbiAgICAgIH1cbiAgICB9XG4gICBcbiAgICBcbiAgICB0aGlzLnRhYmxlVmlld0RpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YWJsZVZpZXdEaXYnKTtcbiAgICB0aGlzLnRhYmxlUm93ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhYmxlUm93Jyk7XG4gICAgdGhpcy50YmxCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RibEJvZHknKTtcbiAgICB0aGlzLnRhYmxlVmlld0Rpdi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgXG4gICAgdGhpcy5wZFNlcnZpY2UuY2hhcnRUeXBlLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgdGhpcy51cGRhdGVDaGFydFR5cGUoZGF0YSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5wZFNlcnZpY2UuaXNVc2VyV2lzZV9kYXRhLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVEYXRhVHlwZShkYXRhKTtcbiAgICB9KTtcbiAgICB0aGlzLnBkU2VydmljZS5pc0FsbFVzZXJzLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICBpZihkYXRhKXtcbiAgICAgIHRoaXMuc2hvd0FsbFVzZXIoKTtcbiAgICAgfWVsc2V7XG4gICAgICB0aGlzLnNob3dDdXJyZW50RGF0YVVzZXIoKTtcbiAgICAgfVxuICAgICAgXG4gICAgfSk7XG4gIH1cbiAgc2hvd0N1cnJlbnREYXRhVXNlcigpIHtcbiAgICB0aGlzLnRhYmxlVmlld0RhdGEgPSB0aGlzLnBkU2VydmljZS5kYXRhRm9yVGFibGVWaWV3KHRoaXMuY3VycmVudGRhdGFMaXN0LHRoaXMuY3VycmVudFJlc291cnNlZGF0YUxpc3QpO1xuICAgIGlmKHRoaXMudGFibGVWaWV3RGF0YSl7XG4gICAgICB0aGlzLnVlc2VyV2lzZVRhYmxlVmlldyh0aGlzLnRhYmxlVmlld0RhdGEpO1xuICAgIH1cbiAgfVxuICBzaG93QWxsVXNlcigpIHtcbiAgICB0aGlzLnRhYmxlVmlld0RhdGEgPSB0aGlzLnBkU2VydmljZS5kYXRhRm9yVGFibGVWaWV3KHRoaXMuYWxsdXNlckxpc3QgLHRoaXMuY3VycmVudFJlc291cnNlZGF0YUxpc3QpO1xuICAgIGlmKHRoaXMudGFibGVWaWV3RGF0YSl7XG4gICAgICB0aGlzLnVlc2VyV2lzZVRhYmxlVmlldyh0aGlzLnRhYmxlVmlld0RhdGEpO1xuICAgIH1cbiAgfVxuICB1cGRhdGVEYXRhVHlwZShkYXRhVHlwZTogYW55KSB7XG4gICAgdGhpcy5pc1VzZXJXaXNlID0gZGF0YVR5cGU7XG4gIH1cbiAgdXBkYXRlQ2hhcnRUeXBlKGRhdGFUeXBlOiBhbnkpIHtcbiAgICB0aGlzLm15Q2hhcnRUeXBlID0gZGF0YVR5cGU7XG4gICAgICBpZiAodGhpcy5teUNoYXJ0VHlwZSA9PSBDaGFydFR5cGUuVGltZWxpbmUpIHtcbiAgICAgIHRoaXMudGFibGVWaWV3RGl2LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGFibGVWaWV3RGl2LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgIH1cbiAgfVxuIFxuICB1ZXNlcldpc2VUYWJsZVZpZXcocmVzb3VyZU1ldGFkYXRhOiBhbnkpIHtcbiAgICBjb25zb2xlLmxvZygnQUFBIHJlc291cmVNZXRhZGF0YScsIHJlc291cmVNZXRhZGF0YSk7XG4gICAgLy8gIHRoaXMuZGVsZXRlcm93KFwidGFibGVSb3dcIik7XG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ0YmxCb2R5XCIpLmlubmVySFRNTCA9IFwiXCI7XG4gICAgbGV0IGxhYmVsQXJyYXkgPSBuZXcgQXJyYXkoKTtcbiAgICBsZXQgY250ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc291cmVNZXRhZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCAxMjsgaisrKSB7XG4gICAgICAgIGxldCBsYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xhYmVsJyk7XG4gICAgICAgIGxhYmVsLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHJlc291cmVNZXRhZGF0YVtpXVtqXSkpO1xuICAgICAgICBpZiAobGFiZWwudGV4dENvbnRlbnQgPT09ICd1bmRlZmluZWQnIHx8IGxhYmVsLnRleHRDb250ZW50PT09dW5kZWZpbmVkKSB7XG4gICAgICAgIGxhYmVsLnRleHRDb250ZW50ID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgbGFiZWxBcnJheS5wdXNoKGxhYmVsKTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJsYWJlbFwiLGxhYmVsKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPD0gcmVzb3VyZU1ldGFkYXRhLmxlbmd0aDsgaisrKSB7XG4gICAgICBsZXQgcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTtcbiAgICAgIFxuICAgICAgbGV0IGNlbGw6IGFueTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgICBjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTtcbiAgICAgICAgXG4gICAgICAgIGlmIChjbnQgPCBsYWJlbEFycmF5Lmxlbmd0aCkge1xuICAgICAgICAgIGNlbGwuYXBwZW5kQ2hpbGQobGFiZWxBcnJheVtjbnRdKTtcbiAgICAgICAgICByb3cuYXBwZW5kQ2hpbGQoY2VsbCk7XG4gICAgICAgIH1cbiAgICAgICAgY250Kys7XG4gICAgICB9XG4gICAgICB0aGlzLnRibEJvZHkuYXBwZW5kQ2hpbGQocm93KTtcbiAgICAgIC8vIHRoaXMudGFibGVSb3cuYXBwZW5kQ2hpbGQodGhpcy50YmxCb2R5KTtcbiAgICB9XG4gICBcbiAgfVxufVxuIl19
|
|
199
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByaW5jaXBhbC1kYXNoYm9hcmQtbGliLXYyL3NyYy9saWIvdGFibGV2aWV3L3RhYmxldmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBUWxELE1BQU0sT0FBTyxrQkFBa0I7SUFNN0IsWUFDVSxTQUF5QztRQUF6QyxjQUFTLEdBQVQsU0FBUyxDQUFnQztRQVFuRCxnQkFBVyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFLOUIsZUFBVSxHQUFHLElBQUksQ0FBQztJQVpmLENBQUM7SUFQSixJQUFhLElBQUksQ0FBQyxHQUFRO1FBQ3hCLElBQUcsR0FBRyxLQUFJLElBQUksRUFBQztZQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBaUJELFFBQVE7SUFFUixDQUFDO0lBQ0QsU0FBUyxDQUFDLFFBQWE7UUFDckIsK0JBQStCO1FBQy9CLHVFQUF1RTtRQUN2RSxJQUFHLFFBQVEsRUFBQztZQUNWLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0QyxJQUFHLElBQUksQ0FBQyxTQUFTLEVBQUM7Z0JBQ2hCLHdCQUF3QjtnQkFDeEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7Z0JBQy9DLElBQUksd0JBQXdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENB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QUMsQ0FBQzthQUV4QjtTQUNGO1FBQ0QsdUNBQXVDO1FBQ3ZDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2hELElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFdkMsSUFBSSxJQUFTLENBQUM7WUFDZCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUMzQixJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFcEMsSUFBSSxHQUFHLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRTtvQkFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDbEMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDdkI7Z0JBQ0QsR0FBRyxFQUFFLENBQUM7YUFDUDtZQUNELElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLDJDQUEyQztTQUM1QztJQUVILENBQUM7OztZQXBPRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGVBQWU7Z0JBQ3pCLDAyQkFBeUM7O2FBRTFDOzs7WUFQUSw4QkFBOEI7OzttQkFVcEMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0ICxJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcmluY2lwYWxEYXNoYm9hcmRMaWJWMlNlcnZpY2UgfSBmcm9tICcuLi9wcmluY2lwYWwtZGFzaGJvYXJkLWxpYi12Mi5zZXJ2aWNlJztcbmltcG9ydCB7IENoYXJ0VHlwZSB9IGZyb20gJ2FuZ3VsYXItZ29vZ2xlLWNoYXJ0cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi10YWJsZXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGV2aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGV2aWV3LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuXG5leHBvcnQgY2xhc3MgVGFibGV2aWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgc2V0IGRhdGEocmVzOiBhbnkpIHtcbiAgICBpZihyZXMhPT0gbnVsbCl7XG4gICAgICB0aGlzLmxvYWRUYWJsZShyZXMpO1xuICAgIH1cbiAgfVxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBkU2VydmljZTogUHJpbmNpcGFsRGFzaGJvYXJkTGliVjJTZXJ2aWNlXG4gICkge31cbiAgcmVzb3Vyc2VNZXRhZGF0YTogYW55O1xuICB0YWJsZVJvdzogYW55O1xuICB1c2VyTWV0YWRhdGE6IGFueTtcbiAgdGFibGVWaWV3RGl2OiBhbnk7XG4gIHRibEJvZHk6IGFueTtcbiAgbXlYbWxEYXRhOiBhbnk7XG4gIG15Q2hhcnRUeXBlID0gQ2hhcnRUeXBlLlRhYmxlO1xuICBjdXJyZW50ZGF0YUxpc3Q6YW55O1xuICBjdXJyZW50UmVzb3Vyc2VkYXRhTGlzdDphbnk7XG4gIHRhYmxlVmlld0RhdGE6YW55O1xuICBhbGx1c2VyTGlzdDphbnk7XG4gIGlzVXNlcldpc2UgPSB0cnVlO1xuIFxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgXG4gIH1cbiAgbG9hZFRhYmxlKHJlc3BvbnNlOiBhbnkpe1xuICAgIC8vIGxldCBwYXJzZSA9IG5ldyBET01QYXJzZXIoKTtcbiAgICAvLyB0aGlzLm15WG1sRGF0YSA9IHBhcnNlLnBhcnNlRnJvbVN0cmluZyhyZXNwb25zZSwgJ2FwcGxpY2F0aW9uL3htbCcpO1xuICAgIGlmKHJlc3BvbnNlKXtcbiAgICAgIHRoaXMubXlYbWxEYXRhID0gSlNPTi5wYXJzZShyZXNwb25zZSk7XG4gICAgICBpZih0aGlzLm15WG1sRGF0YSl7XG4gICAgICAgIC8vIGdldCBjdXJyZW50IGRhdGEgbGlzdFxuICAgICAgICBjb25zb2xlLmxvZyhcIkFBQSBteVhtbERhdGEtLT4+XCIsdGhpcy5teVhtbERhdGEpXG4gICAgICAgIGxldCBnZW5hcmF0ZVVzZXJSZXFpdXJlZERhdGEgPSB0aGlzLnBkU2VydmljZS5nZW5hcmF0ZVVzZXJSZXFpdXJlZERhdGEodGhpcy5teVhtbERhdGEpO1xuICAgICAgICB0aGlzLmN1cnJlbnRkYXRhTGlzdCA9Z2VuYXJhdGVVc2VyUmVxaXVyZWREYXRhLnVzZXJDb25zb2xlRGF0YTtcbiAgICAgIC8vICBnZXQgYWxsIHVzZXIgbGlzdCBcbiAgICAgICAgbGV0IGZldGNoQWxsdXNlckxpc3QgPSB0aGlzLnBkU2VydmljZS5hbGxVc2VyQ2hhcnREYXRhKCk7XG4gICAgICAgIHRoaXMuYWxsdXNlckxpc3QgPSBmZXRjaEFsbHVzZXJMaXN0LmZvcmR1cmF0aW9uVGFibGU7XG4gICAgICAgIC8vIHJlc291cmVNZXRhZGF0YSBsaXN0XG4gICAgICAgICB0aGlzLmN1cnJlbnRSZXNvdXJzZWRhdGFMaXN0ID0gdGhpcy5wZFNlcnZpY2UuZ2VuYXJhdGVSZXNvdXJzZVJlcWl1cmVkRGF0YSh0aGlzLm15WG1sRGF0YSk7XG4gICAgICAgICBjb25zb2xlLmxvZyhcIkFBQSBnZW5hcmF0ZVVzZXJSZXFpdXJlZERhdGEtLT4+XCIsZ2VuYXJhdGVVc2VyUmVxaXVyZWREYXRhKVxuICAgICAgICAgY29uc29sZS5sb2coXCJBQUEgdGhpcy5jdXJyZW50UmVzb3Vyc2VkYXRhTGlzdC0tPj5cIix0aGlzLmN1cnJlbnRSZXNvdXJzZWRhdGFMaXN0KVxuICAgICAgfVxuICAgIH1cbiAgIFxuICAgIFxuICAgIHRoaXMudGFibGVWaWV3RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhYmxlVmlld0RpdicpO1xuICAgIHRoaXMudGFibGVSb3cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFibGVSb3cnKTtcbiAgICB0aGlzLnRibEJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGJsQm9keScpO1xuICAgIHRoaXMudGFibGVWaWV3RGl2LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICBcbiAgICB0aGlzLnBkU2VydmljZS5jaGFydFR5cGUuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICB0aGlzLnVwZGF0ZUNoYXJ0VHlwZShkYXRhKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnBkU2VydmljZS5pc1VzZXJXaXNlX2RhdGEuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZURhdGFUeXBlKGRhdGEpO1xuICAgIH0pO1xuICAgIHRoaXMucGRTZXJ2aWNlLmlzQWxsVXNlcnMuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgIGlmKGRhdGEpe1xuICAgICAgdGhpcy5zaG93QWxsVXNlcigpO1xuICAgICB9ZWxzZXtcbiAgICAgIHRoaXMuc2hvd0N1cnJlbnREYXRhVXNlcigpO1xuICAgICB9XG4gICAgICBcbiAgICB9KTtcbiAgfVxuICBmaW5kQW5kU2ltcGxpZnlOZXN0ZWRBcnJheShkYXRhKSB7XG4gICAgY29uc29sZS5sb2coJ3RoaXMudGFibGVWaWV3RGF0YScsZGF0YSlcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGFbaV0pKSB7XG4gICAgICAgIGNvbnN0IG5lc3RlZEFycmF5ID0gZGF0YVtpXTtcbiAgICAgICAgaWYgKG5lc3RlZEFycmF5LmV2ZXJ5KGl0ZW0gPT4gQXJyYXkuaXNBcnJheShpdGVtKSAmJiBpdGVtLmV2ZXJ5KHZhbCA9PiB2YWwgPT09IGl0ZW1bMF0pKSkge1xuICAgICAgICAgIGRhdGFbaV0gPSBbW25lc3RlZEFycmF5WzBdWzBdXV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGFbaV07IFxuICAgICAgfVxuICAgIH1cbiAgXG4gICAgcmV0dXJuIFwiTm8gbmVzdGVkIGFycmF5IGZvdW5kLlwiO1xuICB9XG5cbiBcbiAgc2hvd0N1cnJlbnREYXRhVXNlcigpIHtcbiAgICB0aGlzLnRhYmxlVmlld0RhdGEgPSB0aGlzLnBkU2VydmljZS5kYXRhRm9yVGFibGVWaWV3KHRoaXMuY3VycmVudGRhdGFMaXN0LHRoaXMuY3VycmVudFJlc291cnNlZGF0YUxpc3QpO1xuICAgIFxuICAgIC8vdGhpcy50YWJsZVZpZXdEYXRhID0gdGhpcy5maW5kQW5kU2ltcGxpZnlOZXN0ZWRBcnJheSh0aGlzLnRhYmxlVmlld0RhdGEpO1xuICAgIGxldCBuZXdUYWJsZVZpZXdEYXRhOiBhbnk7XG5cbiAgIFxuICAgIFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy50YWJsZVZpZXdEYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIG5ld1RhYmxlVmlld0RhdGEgPSB0aGlzLmZpbmRBbmRTaW1wbGlmeU5lc3RlZEFycmF5KHRoaXMudGFibGVWaWV3RGF0YVtpXSk7XG4gICAgICBuZXdUYWJsZVZpZXdEYXRhW25ld1RhYmxlVmlld0RhdGEubGVuZ3RoLTFdID0gbmV3VGFibGVWaWV3RGF0YVtuZXdUYWJsZVZpZXdEYXRhLmxlbmd0aC0xXVswXVxuICAgIH1cblxuICAgIGxldCBhbm90aGVyVGFibGVWaWV3RGF0YTogYW55O1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy50YWJsZVZpZXdEYXRhLmxlbmd0aDsgaisrKXtcbiAgICAgIGFub3RoZXJUYWJsZVZpZXdEYXRhID0gdGhpcy5tZXJnZXJTb3VyY2VXaXRoUm9vbURhdGEodGhpcy50YWJsZVZpZXdEYXRhW2pdKTsgXG4gICAgfVxuXG4gICAgaWYodGhpcy50YWJsZVZpZXdEYXRhKXtcbiAgICAgIC8vdGhpcy51ZXNlcldpc2VUYWJsZVZpZXcodGhpcy50YWJsZVZpZXdEYXRhKTtcbiAgICAgIHRoaXMudWVzZXJXaXNlVGFibGVWaWV3KHRoaXMudGFibGVWaWV3RGF0YSk7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKCdBQUEgbWxhdW5jaGVkRnJvbW0gdGFibGVWaWV3RGF0YScsIHRoaXMudGFibGVWaWV3RGF0YSlcbiAgfVxuXG4gIG1lcmdlclNvdXJjZVdpdGhSb29tRGF0YSh0YWJsZVZpZXdEYXRhKXtcbiAgICBsZXQgbGFzdEluZGV4VmFsdWUgPSB0YWJsZVZpZXdEYXRhW3RhYmxlVmlld0RhdGEubGVuZ3RoIC0gMV0uam9pbignICcpO1xuICAgIC8vIE1lcmdlIGxhc3QgaW5kZXggdmFsdWUgaW50byB0aGUgNnRoIGluZGV4XG4gICAgY29uc29sZS5sb2coJ2xhc3RJbmRleFZhbHVlJyxsYXN0SW5kZXhWYWx1ZSlcbiAgICBpZihsYXN0SW5kZXhWYWx1ZSA9PT0gJ2NlNicpXG4gICAge1xuICAgICAgLy9sYXN0SW5kZXhWYWx1ZSA9ICc8c3BhbiBzdHlsZT1cImNvbG9yOmJsYWNrO1wiPjxpIGNsYXNzPVwiZmEgZmEtd2luZG93c1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48L3NwYW4+JztcbiAgICAgIGxhc3RJbmRleFZhbHVlID0gJzxzcGFuIHN0eWxlPVwiY29sb3I6YmxhY2s7XCI+PC9zcGFuPic7XG4gICAgfWVsc2UgaWYobGFzdEluZGV4VmFsdWUgPT09ICdjZTYtYScpe1xuICAgICAgbGFzdEluZGV4VmFsdWUgPSAnPHNwYW4gc3R5bGU9XCJjb2xvcjojMWI2MGQxO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjE0cHg7XCI+PGkgY2xhc3M9XCJmYSBmYS1hbmRyb2lkXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvc3Bhbj4nO1xuICAgIH1lbHNlIGlmKGxhc3RJbmRleFZhbHVlID09PSAnYycpe1xuICAgICAgbGFzdEluZGV4VmFsdWUgPSAnPHNwYW4gc3R5bGU9XCJjb2xvcjojMWI2MGQxO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjE0cHg7IGRpc3BsYXk6ZmxleDtcIj48aSBzdHlsZT1cIm1hcmdpbi10b3A6LTFweDtcIiBjbGFzcz1cImZhIGZhLWFuZHJvaWRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PGkgc3R5bGU9XCJtYXJnaW4tbGVmdDo1cHg7XCIgY2xhc3M9XCJmYSBmYS1kZXNrdG9wXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvc3Bhbj4nO1xuICAgIH1cbiAgICAvL3RhYmxlVmlld0RhdGFbNl0gPSB0YWJsZVZpZXdEYXRhWzZdICsgJ1xcbicgKyBsYXN0SW5kZXhWYWx1ZTtcbiAgICAvL3RhYmxlVmlld0RhdGFbNl0gPSAnPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7ZmxleC1kaXJlY3Rpb246IHJvdzthbGlnbi1jb250ZW50OiBjZW50ZXI7anVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O2FsaWduLWl0ZW1zOiBjZW50ZXI7XCI+JytsYXN0SW5kZXhWYWx1ZSArICcmbmJzcDsmbmJzcDsnICsgJzxzcGFuIHN0eWxlPVwiZm9udC1zaXplOjExcHggIWltcG9ydGFudDtjb2xvcjpncmF5O2ZvbnQtd2VpZ2h0OjYwMDtcIj4nK3RhYmxlVmlld0RhdGFbNl0rJzwvc3Bhbj48L2Rpdj4nO1xuXG4gICAgdGFibGVWaWV3RGF0YVs2XSA9ICc8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDtmbGV4LWRpcmVjdGlvbjogcm93O2FsaWduLWNvbnRlbnQ6IGNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7YWxpZ24taXRlbXM6IGNlbnRlcjtcIj4nKyc8c3BhbiBzdHlsZT1cImZvbnQtc2l6ZToxMXB4ICFpbXBvcnRhbnQ7Y29sb3I6Z3JheTtmb250LXdlaWdodDo2MDA7XCI+Jyt0YWJsZVZpZXdEYXRhWzZdKyc8L3NwYW4+JysgJzxzcGFuIHN0eWxlPVwiY29sb3I6dHJhbnNwYXJlbnRcIj4tPC9zcGFuPicgK2xhc3RJbmRleFZhbHVlICsgJzwvZGl2Pic7XG4gICAgXG4gICAgLy8gT3B0aW9uYWw6IHJlbW92ZSB0aGUgbGFzdCBlbGVtZW50IChpZiBubyBsb25nZXIgbmVlZGVkKVxuICAgIHRhYmxlVmlld0RhdGEucG9wKCk7XG4gIH1cblxuXG4gIHNob3dBbGxVc2VyKCkge1xuICAgIHRoaXMudGFibGVWaWV3RGF0YSA9IHRoaXMucGRTZXJ2aWNlLmRhdGFGb3JUYWJsZVZpZXcodGhpcy5hbGx1c2VyTGlzdCAsdGhpcy5jdXJyZW50UmVzb3Vyc2VkYXRhTGlzdCk7XG4gICAgLy9jb25zb2xlLmxvZygnQUFBIHVzZXJDb25zb2xlTWF0cml4IHRhYmxlVmlld0RhdGEnLCB0aGlzLnRhYmxlVmlld0RhdGEpXG4gICAgbGV0IG5ld1RhYmxlVmlld0RhdGE6IGFueTtcbiAgICBcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMudGFibGVWaWV3RGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICBuZXdUYWJsZVZpZXdEYXRhID0gdGhpcy5maW5kQW5kU2ltcGxpZnlOZXN0ZWRBcnJheSh0aGlzLnRhYmxlVmlld0RhdGFbaV0pO1xuICAgICAgaWYobmV3VGFibGVWaWV3RGF0YVtuZXdUYWJsZVZpZXdEYXRhLmxlbmd0aC0xXSl7XG4gICAgICAgIG5ld1RhYmxlVmlld0RhdGFbbmV3VGFibGVWaWV3RGF0YS5sZW5ndGgtMV0gPSBuZXdUYWJsZVZpZXdEYXRhW25ld1RhYmxlVmlld0RhdGEubGVuZ3RoLTFdWzBdXG4gICAgICB9XG4gICAgICBcbiAgICB9XG5cbiAgICBsZXQgYW5vdGhlclRhYmxlVmlld0RhdGE6IGFueTtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRoaXMudGFibGVWaWV3RGF0YS5sZW5ndGg7IGorKyl7XG4gICAgICBhbm90aGVyVGFibGVWaWV3RGF0YSA9IHRoaXMubWVyZ2VyU291cmNlV2l0aFJvb21EYXRhKHRoaXMudGFibGVWaWV3RGF0YVtqXSk7IFxuICAgIH1cbiAgICBpZih0aGlzLnRhYmxlVmlld0RhdGEpe1xuICAgICAgdGhpcy51ZXNlcldpc2VUYWJsZVZpZXcodGhpcy50YWJsZVZpZXdEYXRhKTtcbiAgICB9XG4gIH1cbiAgdXBkYXRlRGF0YVR5cGUoZGF0YVR5cGU6IGFueSkge1xuICAgIHRoaXMuaXNVc2VyV2lzZSA9IGRhdGFUeXBlO1xuICB9XG4gIHVwZGF0ZUNoYXJ0VHlwZShkYXRhVHlwZTogYW55KSB7XG4gICAgdGhpcy5teUNoYXJ0VHlwZSA9IGRhdGFUeXBlO1xuICAgICAgaWYgKHRoaXMubXlDaGFydFR5cGUgPT0gQ2hhcnRUeXBlLlRpbWVsaW5lKSB7XG4gICAgICB0aGlzLnRhYmxlVmlld0Rpdi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRhYmxlVmlld0Rpdi5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICB9XG4gIH1cbiBcbiAgdWVzZXJXaXNlVGFibGVWaWV3KHJlc291cmVNZXRhZGF0YTogYW55KSB7XG4gICAgY29uc29sZS5sb2coJ0FBQSByZXNvdXJlTWV0YWRhdGEnLCByZXNvdXJlTWV0YWRhdGEpO1xuICAgIC8vICB0aGlzLmRlbGV0ZXJvdyhcInRhYmxlUm93XCIpO1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidGJsQm9keVwiKS5pbm5lckhUTUwgPSBcIlwiO1xuICAgIGxldCBsYWJlbEFycmF5ID0gbmV3IEFycmF5KCk7XG4gICAgbGV0IGNudCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNvdXJlTWV0YWRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgMTI7IGorKykge1xuICAgICAgICAvL2xldCBsYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xhYmVsJyk7XG4gICAgICAgIC8vbGFiZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocmVzb3VyZU1ldGFkYXRhW2ldW2pdKSk7XG5cbiAgICAgICAgbGV0IGxhYmVsOmFueSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBsYWJlbC5pbm5lckhUTUwgPSAocmVzb3VyZU1ldGFkYXRhW2ldW2pdKTtcblxuICAgICAgICBjb25zb2xlLmxvZygnbGFiZWwudGV4dENvbnRlbnQnLGxhYmVsLnRleHRDb250ZW50KVxuICAgICAgICBpZiAoXG4gICAgICAgICAgbGFiZWwudGV4dENvbnRlbnQgPT09ICd1bmRlZmluZWQnIHx8IFxuICAgICAgICAgIGxhYmVsLnRleHRDb250ZW50ID09PSB1bmRlZmluZWQgfHwgXG4gICAgICAgICAgbGFiZWwudGV4dENvbnRlbnQgPT09ICd1bmRlZmluZWRcXG5jZTYtYScgfHwgXG4gICAgICAgICAgbGFiZWwudGV4dENvbnRlbnQgPT09ICd1bmRlZmluZWRcXG5jZTYnIHx8IFxuICAgICAgICAgIGxhYmVsLnRleHRDb250ZW50ID09PSAndW5kZWZpbmVkXFxuJyB8fFxuICAgICAgICAgIGxhYmVsLnRleHRDb250ZW50ID09PSAndW5kZWZpbmVkXFxuQW5kcm9pZCcgfHwgXG4gICAgICAgICAgbGFiZWwudGV4dENvbnRlbnQgPT09ICd1bmRlZmluZWRcXG5XZWInIHx8IFxuICAgICAgICAgIGxhYmVsLnRleHRDb250ZW50ID09PSAndW5kZWZpbmVkXFxuJyB8fFxuICAgICAgICAgIGxhYmVsLnRleHRDb250ZW50ID09PSAnXFxudW5kZWZpbmVkJyB8fFxuICAgICAgICAgIGxhYmVsLnRleHRDb250ZW50ID09PSAnIHVuZGVmaW5lZCcgfHxcbiAgICAgICAgICBsYWJlbC50ZXh0Q29udGVudCA9PT0gJ3VuZGVmaW5lZC0nIHx8XG4gICAgICAgICAgbGFiZWwudGV4dENvbnRlbnQgPT09ICd1bmRlZmluZWQtYycgfHxcbiAgICAgICAgICBsYWJlbC50ZXh0Q29udGVudCA9PT0gJ3VuZGVmaW5lZC0gJyBcblxuICAgICAgICAgIFxuICAgICAgICApIHtcbiAgICAgICAgICBsYWJlbC50ZXh0Q29udGVudCA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBsYWJlbEFycmF5LnB1c2gobGFiZWwpO1xuICAgICAgICBcbiAgICAgIH1cbiAgICB9XG4gICAgLy9jb25zb2xlLmxvZyhcImxhYmVsQXJyYXlcIixsYWJlbEFycmF5KTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8PSByZXNvdXJlTWV0YWRhdGEubGVuZ3RoOyBqKyspIHtcbiAgICAgIGxldCByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpO1xuICAgICAgXG4gICAgICBsZXQgY2VsbDogYW55O1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgIGNlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpO1xuICAgICAgICBcbiAgICAgICAgaWYgKGNudCA8IGxhYmVsQXJyYXkubGVuZ3RoKSB7XG4gICAgICAgICAgY2VsbC5hcHBlbmRDaGlsZChsYWJlbEFycmF5W2NudF0pO1xuICAgICAgICAgIHJvdy5hcHBlbmRDaGlsZChjZWxsKTtcbiAgICAgICAgfVxuICAgICAgICBjbnQrKztcbiAgICAgIH1cbiAgICAgIHRoaXMudGJsQm9keS5hcHBlbmRDaGlsZChyb3cpO1xuICAgICAgLy8gdGhpcy50YWJsZVJvdy5hcHBlbmRDaGlsZCh0aGlzLnRibEJvZHkpO1xuICAgIH1cbiAgIFxuICB9XG59XG4iXX0=
|
|
@@ -146,7 +146,7 @@ class PrincipalDashboardLibV2Service {
|
|
|
146
146
|
let listOfUser = {};
|
|
147
147
|
if (usersMetadata[i].userId != "") {
|
|
148
148
|
userId = usersMetadata[i].userId;
|
|
149
|
-
console.log("--chartDataUserWise-->>",
|
|
149
|
+
//console.log("--chartDataUserWise-->>",usersMetadata[i].terminalIP)
|
|
150
150
|
if (usersMetadata[i].fullName !== undefined) {
|
|
151
151
|
userName = usersMetadata[i].fullName; // get name of user w.r.t. ID
|
|
152
152
|
}
|
|
@@ -169,7 +169,9 @@ class PrincipalDashboardLibV2Service {
|
|
|
169
169
|
}
|
|
170
170
|
}
|
|
171
171
|
for (var i = 0; i < usersMetadataMatrix.length; i++) {
|
|
172
|
+
console.log('usersMetadataMatrix-->', usersMetadataMatrix[i].userName);
|
|
172
173
|
usersMetadataMatrix.forEach(element => {
|
|
174
|
+
console.log('element.userName-->>', element.userName);
|
|
173
175
|
if (usersMetadataMatrix[i].userName === element.userName) {
|
|
174
176
|
usermetadataMatrixUpdated.push(usersMetadataMatrix[i]); //array of same name users
|
|
175
177
|
usersMetadataMatrix.splice(i, 1); //delete the same name users from usermetadataMatrix
|
|
@@ -248,6 +250,8 @@ class PrincipalDashboardLibV2Service {
|
|
|
248
250
|
let userName;
|
|
249
251
|
let userSubjects;
|
|
250
252
|
let terminalLocation;
|
|
253
|
+
let launchedFrom = [];
|
|
254
|
+
console.log('myuserConsole', userConsole[index]);
|
|
251
255
|
//----------//user iD
|
|
252
256
|
if (userConsole[index].userId !== undefined) {
|
|
253
257
|
userId = userConsole[index].userId; // get name of user w.r.t. ID
|
|
@@ -302,14 +306,21 @@ class PrincipalDashboardLibV2Service {
|
|
|
302
306
|
if (userConsoleResources.userConsoleResource !== undefined) {
|
|
303
307
|
// satyajit resource wise duration added
|
|
304
308
|
userConsoleResources.userConsoleResource.forEach(item => {
|
|
309
|
+
console.log("lookingFor: ", item);
|
|
305
310
|
resourceMetauserConsoleData.push(item.resourceId); // get name of user w.r.t. ID
|
|
306
311
|
resourceDurationFromConsole.push(item.duration);
|
|
312
|
+
if (item.launchedFrom) {
|
|
313
|
+
launchedFrom.push(item.launchedFrom);
|
|
314
|
+
}
|
|
315
|
+
//
|
|
307
316
|
});
|
|
308
317
|
// resourceMetauserConsoleData = userConsoleResources.userConsoleResource[index]resourceId; // get name of user w.r.t. ID
|
|
309
318
|
}
|
|
310
319
|
else {
|
|
320
|
+
console.log("lookingFor: ELSE ");
|
|
311
321
|
resourceMetauserConsoleData = [];
|
|
312
322
|
resourceDurationFromConsole = [];
|
|
323
|
+
launchedFrom = [];
|
|
313
324
|
}
|
|
314
325
|
}
|
|
315
326
|
//----------// userName and userSubjects
|
|
@@ -342,6 +353,7 @@ class PrincipalDashboardLibV2Service {
|
|
|
342
353
|
terminalIP: terminalIP,
|
|
343
354
|
resourceMetauserConsoleData: resourceMetauserConsoleData,
|
|
344
355
|
resourceDurationFromConsole: resourceDurationFromConsole,
|
|
356
|
+
launchedFrom: launchedFrom,
|
|
345
357
|
duration: duration,
|
|
346
358
|
terminalLocation: terminalLocation,
|
|
347
359
|
userSubjects: userSubjects
|
|
@@ -363,17 +375,27 @@ class PrincipalDashboardLibV2Service {
|
|
|
363
375
|
let dataTableforChart = new Array();
|
|
364
376
|
dataTableforChart = [];
|
|
365
377
|
if (this.userConsoleData) {
|
|
366
|
-
console.log("chartDataUserWiseNew-->>", this.userConsoleData);
|
|
367
378
|
if (this.userConsoleData.length > 0) {
|
|
368
379
|
for (let i = 0; i < this.userConsoleData.length; i++) {
|
|
380
|
+
console.log("chartDataUserWiseNew-->>", this.userConsoleData);
|
|
381
|
+
//console.log("chartDataUserWiseNew-->>",this.userConsoleData.userName)
|
|
382
|
+
if (typeof this.userConsoleData[i].userName === undefined) {
|
|
383
|
+
this.userConsoleData[i].userName = (Math.floor(Math.random() * 100)).toString();
|
|
384
|
+
}
|
|
385
|
+
/// SATYAJIT TO CHECK 19 SEPT.
|
|
369
386
|
if (this.userConsoleData[i].userName === undefined) {
|
|
370
387
|
this.userConsoleData[i].userName = "-";
|
|
388
|
+
//this.userConsoleData.splice(i, 1);
|
|
371
389
|
}
|
|
372
|
-
|
|
373
|
-
|
|
390
|
+
/*
|
|
391
|
+
if(this.userConsoleData[i].userName === "-"){
|
|
392
|
+
this.userConsoleData.splice(i, 1); // 2nd parameter means remove one item only
|
|
393
|
+
}*/
|
|
394
|
+
//if(this.userConsoleData[i].userName !== undefined || this.userConsoleData[i].userName !== '-' || this.userConsoleData[i].userName !== '--')
|
|
395
|
+
{
|
|
396
|
+
let userData = [this.userConsoleData[i].userName, this.userConsoleData[i].startTime, this.userConsoleData[i].endTime];
|
|
397
|
+
dataTableforChart.push(userData);
|
|
374
398
|
}
|
|
375
|
-
let userData = [this.userConsoleData[i].userName, this.userConsoleData[i].startTime, this.userConsoleData[i].endTime];
|
|
376
|
-
dataTableforChart.push(userData);
|
|
377
399
|
//console.log("chartDataUserWiseNewNew-->>",userData)
|
|
378
400
|
}
|
|
379
401
|
}
|
|
@@ -470,15 +492,21 @@ class PrincipalDashboardLibV2Service {
|
|
|
470
492
|
}
|
|
471
493
|
setTimeout(() => {
|
|
472
494
|
for (let i = 0; i < AlluserDetails.length; i++) {
|
|
473
|
-
console.log("alluser-3->>", AlluserDetails[i]
|
|
474
|
-
if (AlluserDetails[i].userName
|
|
475
|
-
AlluserDetails[i].userName = "--"
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
495
|
+
console.log("alluser-3->>", AlluserDetails[i]);
|
|
496
|
+
if (AlluserDetails[i].userName == undefined) {
|
|
497
|
+
//AlluserDetails[i].userName = "--"
|
|
498
|
+
AlluserDetails.splice(i, 1); // 2nd parameter means remove one item only
|
|
499
|
+
}
|
|
500
|
+
//if(AlluserDetails[i].userName !== undefined || AlluserDetails[i].userName !== '-' || AlluserDetails[i].userName !== '--')
|
|
501
|
+
{
|
|
502
|
+
if (AlluserDetails[i].userName === "--") {
|
|
503
|
+
AlluserDetails.splice(i, 1); // 2nd parameter means remove one item only
|
|
504
|
+
}
|
|
505
|
+
setTimeout(function () {
|
|
506
|
+
let userData = [AlluserDetails[i].userName, AlluserDetails[i].startTime, AlluserDetails[i].endTime];
|
|
507
|
+
dataTableforChart.push(userData);
|
|
508
|
+
}, 300);
|
|
479
509
|
}
|
|
480
|
-
let userData = [AlluserDetails[i].userName, AlluserDetails[i].startTime, AlluserDetails[i].endTime];
|
|
481
|
-
dataTableforChart.push(userData);
|
|
482
510
|
}
|
|
483
511
|
}, 50);
|
|
484
512
|
/*
|
|
@@ -540,7 +568,7 @@ class PrincipalDashboardLibV2Service {
|
|
|
540
568
|
return { forChartData: dataTableforChart, fordurationTable: allRoomsDetails };
|
|
541
569
|
}
|
|
542
570
|
dataForTableView(userConsoleMatrix, resourceMetadataMatrix) {
|
|
543
|
-
console.log("AAA userConsoleMatrix", userConsoleMatrix);
|
|
571
|
+
console.log("AAA userConsoleMatrix", userConsoleMatrix, "-resourceMetadataMatrix->", resourceMetadataMatrix);
|
|
544
572
|
let currentDate;
|
|
545
573
|
let resourceMatrixForTableChart = new Array();
|
|
546
574
|
let resourceMatrixForExcel = new Array();
|
|
@@ -566,6 +594,7 @@ class PrincipalDashboardLibV2Service {
|
|
|
566
594
|
let resourceArrayForExcel = new Array();
|
|
567
595
|
let resourceArrayForTableChart = new Array();
|
|
568
596
|
let userConsoleDataMatrix = new Array();
|
|
597
|
+
let launchedFrom;
|
|
569
598
|
resourceArrayForTableChart = [];
|
|
570
599
|
userConsoleDataMatrix = [];
|
|
571
600
|
//----------------- for subject and Name
|
|
@@ -585,6 +614,11 @@ class PrincipalDashboardLibV2Service {
|
|
|
585
614
|
let roomDetail = location + ' ' + terminalIP;
|
|
586
615
|
resourceMetadataIDs = userConsoleMatrix[i].resourceMetauserConsoleData;
|
|
587
616
|
resourceMetadataIDsDuration = userConsoleMatrix[i].resourceDurationFromConsole;
|
|
617
|
+
//console.log('mlaunchedFrom-->> ',(typeof userConsoleMatrix[i].launchedFrom));
|
|
618
|
+
//console.log('mlaunchedFrom-->> ',( userConsoleMatrix[i].launchedFrom));
|
|
619
|
+
let launchDataArr = Array(userConsoleMatrix[i].launchedFrom);
|
|
620
|
+
console.log('mlaunchedFrom len-->> ', launchDataArr);
|
|
621
|
+
launchedFrom = launchDataArr;
|
|
588
622
|
if (resourceMetadataIDs.length === 0) {
|
|
589
623
|
subject = undefined;
|
|
590
624
|
grade = undefined;
|
|
@@ -593,7 +627,7 @@ class PrincipalDashboardLibV2Service {
|
|
|
593
627
|
AssestDetail = undefined;
|
|
594
628
|
resourceTitle = undefined;
|
|
595
629
|
resourceType = undefined;
|
|
596
|
-
resourceArrayForTableChart = [teacherName, teacherSubject, currentDate, startTime, endTime, duration, roomDetail, subject, grade, chapter, teachingpoint, AssestDetail];
|
|
630
|
+
resourceArrayForTableChart = [teacherName, teacherSubject, currentDate, startTime, endTime, duration, roomDetail, subject, grade, chapter, teachingpoint, AssestDetail, launchedFrom];
|
|
597
631
|
resourceMatrixForTableChart.push(resourceArrayForTableChart);
|
|
598
632
|
}
|
|
599
633
|
else {
|
|
@@ -616,7 +650,8 @@ class PrincipalDashboardLibV2Service {
|
|
|
616
650
|
AssestDetail = this.getDisplaytypeValue(resourceMetadataMatrix[i].type) + " : " + resourceMetadataMatrix[i].title + ' : ' + this.convertSeconds(resourceMetadataIDsDuration[k]);
|
|
617
651
|
}
|
|
618
652
|
//AssestDetail = this.getDisplaytypeValue(resourceMetadataMatrix[i].type) + " : " + resourceMetadataMatrix[i].title + ' : ' + resourceMetadataIDsDuration[k];
|
|
619
|
-
|
|
653
|
+
console.log('roomDetail', roomDetail);
|
|
654
|
+
resourceArrayForTableChart = [teacherName, teacherSubject, currentDate, startTime, endTime, duration, roomDetail, subject, grade, chapter, teachingpoint, AssestDetail, launchedFrom];
|
|
620
655
|
resourceMatrixForTableChart.push(resourceArrayForTableChart);
|
|
621
656
|
teacherName = undefined;
|
|
622
657
|
teacherSubject = undefined;
|
|
@@ -835,7 +870,7 @@ class ChartheaderComponent {
|
|
|
835
870
|
this.isChartView = true;
|
|
836
871
|
}
|
|
837
872
|
ngOnInit() {
|
|
838
|
-
this.libVersion = "0.0.
|
|
873
|
+
this.libVersion = "0.0.23";
|
|
839
874
|
// this.myIcon = document.getElementById('myIconImg');
|
|
840
875
|
// this.changeChatType()
|
|
841
876
|
}
|
|
@@ -894,7 +929,7 @@ class ChartviewComponent {
|
|
|
894
929
|
}
|
|
895
930
|
ngOnInit() { }
|
|
896
931
|
loadChart(response) {
|
|
897
|
-
|
|
932
|
+
console.log(' INloadChart -->', response);
|
|
898
933
|
this.totalUsers = 0;
|
|
899
934
|
this.eligibleUsers = 0;
|
|
900
935
|
this.currentUsers = 0;
|
|
@@ -981,7 +1016,8 @@ class ChartviewComponent {
|
|
|
981
1016
|
while (labels.firstChild) {
|
|
982
1017
|
labels.removeChild(labels.lastChild);
|
|
983
1018
|
}
|
|
984
|
-
|
|
1019
|
+
const filteredData = this.myChartDataMatrix.filter(node => node[0] !== "-" && node[0] !== "--");
|
|
1020
|
+
this.chartDataTable = filteredData; //this.myChartDataMatrix;
|
|
985
1021
|
console.log("this.myChartDataMatrix", this.myChartDataMatrix);
|
|
986
1022
|
(this.myChartOptions = {
|
|
987
1023
|
tooltip: {
|
|
@@ -1003,6 +1039,9 @@ class ChartviewComponent {
|
|
|
1003
1039
|
}, 1000);
|
|
1004
1040
|
}
|
|
1005
1041
|
calulateTotalDuration(detailViewMatrix) {
|
|
1042
|
+
console.log('detailViewMatrix-->', detailViewMatrix);
|
|
1043
|
+
const filteredData = detailViewMatrix.filter(item => item.userName !== "-" && item.userName !== "--");
|
|
1044
|
+
detailViewMatrix = filteredData;
|
|
1006
1045
|
let id_durationArray;
|
|
1007
1046
|
let id_durationMatrix = new Array();
|
|
1008
1047
|
id_durationMatrix = [];
|
|
@@ -1237,7 +1276,7 @@ class ChartviewComponent {
|
|
|
1237
1276
|
ChartviewComponent.decorators = [
|
|
1238
1277
|
{ type: Component, args: [{
|
|
1239
1278
|
selector: 'lib-chartview',
|
|
1240
|
-
template: "<div id=\"pd-chartview-main-container\" class=\"pd-chartview-main-container\">\n <div id=\"userSummary\">\n <table class=\"summaryTable\">\n <tbody>\n <tr>\n <td id=\"totalUsers\" class=\"chartview-navigationbar\">\n Total users: {{totalUsers}}\n </td>\n <td id=\"eligibleUsers\" class=\"chartview-navigationbar\">\n Eligible users: {{eligibleUsers}}\n </td>\n <td id=\"currentUsers\" class=\"chartview-navigationbar\">\n Current users: {{currentUsers}}\n </td>\n <td id=\"totalRooms\" class=\"chartview-navigationbar\">\n Installed Classrooms: {{installedClassrooms}}\n </td>\n <td id=\"currentRooms\" class=\"chartview-navigationbar\">\n Current Classrooms: {{currentRooms}}\n </td>\n <!-- <td\n id=\"currentRooms\"\n \n >\n <span id=\"totalUsers_list\" class=\"activeAll\">User List</span>\n </td> -->\n </tr>\n </tbody>\n </table>\n </div>\n <div id=\"pd-messageDivContainer\" class='pd-messageDivContainer'>\n <div id=\"pd-messageDiv\" class='pd-messageDiv'>Click the bars to view details of content accessed by a teacher.</div>\n <div id=\"pd-toggleContainer\" class=\"pd-toggleContainer\">\n \n <div id=\"pd-currentUserBtn\" class=\"pd-currentUserBtn-div pd-commonStyleBtn\" (click)=\"showCurrentUser()\" [ngStyle]=\"{ color: isAllUsers ? '#000000' : '#ffffff' , backgroundColor: isAllUsers ? '#c4c4c4' : '#000000'}\">\n {{currentList}}</div>\n <div id=\"pd-allUserBtn\" class=\"pd-allUserBtn-div pd-commonStyleBtn\" (click)=\"showAllUser()\" [ngStyle]=\"{ color: isAllUsers ? '#ffffff' : '#000000' , backgroundColor: isAllUsers ? '#000000' : '#c4c4c4'}\">\n {{allList}}</div>\n </div>\n </div>\n <div id=\"pd-chartview\" class=\"pd-chartview\">\n <div id=\"myChartDiv\">\n <div id=\"myTimeLine\">\n <google-chart\n [type]=\"myChartType\"\n [data]=\"chartDataTable\"\n [options]=\"myChartOptions\"\n [width]=\"myChartwidth\"\n [height]=\"myChartHeight\"\n (select)=\"onSelectRowData($event)\"\n (ready)=\"myChartReady()\"\n > \n </google-chart>\n \n </div>\n <div class=\"inline\" id=\"labels\"></div> \n \n \n </div>\n</div>\n",
|
|
1279
|
+
template: "<div id=\"pd-chartview-main-container\" class=\"pd-chartview-main-container\">\n <div id=\"userSummary\">\n <table class=\"summaryTable\">\n <tbody>\n <tr>\n <td id=\"totalUsers\" class=\"chartview-navigationbar\">\n Total users: {{totalUsers}}\n </td>\n <td id=\"eligibleUsers\" class=\"chartview-navigationbar\">\n Eligible users: {{eligibleUsers}}\n </td>\n <td id=\"currentUsers\" class=\"chartview-navigationbar\">\n Current users: {{currentUsers}}\n </td>\n <td id=\"totalRooms\" class=\"chartview-navigationbar\">\n Installed Classrooms: {{installedClassrooms}}\n </td>\n <td id=\"currentRooms\" class=\"chartview-navigationbar\">\n Current Classrooms: {{currentRooms}}\n </td>\n <!-- <td\n id=\"currentRooms\"\n \n >\n <span id=\"totalUsers_list\" class=\"activeAll\">User List</span>\n </td> -->\n </tr>\n </tbody>\n </table>\n </div>\n <div id=\"pd-messageDivContainer\" class='pd-messageDivContainer'>\n <div id=\"pd-messageDiv\" class='pd-messageDiv'>Click the bars to view details of content accessed by a teacher.</div>\n <div id=\"pd-toggleContainer\" class=\"pd-toggleContainer\">\n \n <div id=\"pd-currentUserBtn\" class=\"pd-currentUserBtn-div pd-commonStyleBtn\" (click)=\"showCurrentUser()\" [ngStyle]=\"{ color: isAllUsers ? '#000000' : '#ffffff' , backgroundColor: isAllUsers ? '#c4c4c4' : '#000000'}\">\n {{currentList}}</div>\n <div id=\"pd-allUserBtn\" class=\"pd-allUserBtn-div pd-commonStyleBtn\" (click)=\"showAllUser()\" [ngStyle]=\"{ color: isAllUsers ? '#ffffff' : '#000000' , backgroundColor: isAllUsers ? '#000000' : '#c4c4c4'}\">\n {{allList}}</div>\n </div>\n </div>\n <div id=\"pd-chartview\" class=\"pd-chartview\">\n <div id=\"myChartDiv\">\n <div id=\"myTimeLine\">\n <google-chart\n [type]=\"myChartType\"\n [data]=\"chartDataTable\"\n [options]=\"myChartOptions\"\n [width]=\"myChartwidth\"\n [height]=\"myChartHeight\"\n (select)=\"onSelectRowData($event)\"\n (ready)=\"myChartReady()\"\n > \n </google-chart>\n \n </div>\n <div class=\"inline babloo\" id=\"labels\"></div> \n \n \n </div>\n</div>\n",
|
|
1241
1280
|
styles: [".pd-chartview-main-container .pd-chartview{display:block;overflow:scroll;width:100%;height:484px;font-family:Tahoma;font-size:12pt;font-weight:400;color:#666;margin:10 auto;text-align:center;padding-top:1px}.pd-chartview-main-container #userSummary{background:#e0e0e0;margin-top:1px}.pd-chartview-main-container #roomSummary,.pd-chartview-main-container #userSummary{position:relative;width:100%;text-align:center;padding-top:6px;padding-bottom:6px;font-size:13px}.pd-chartview-main-container .pd-messageDivContainer{margin-top:1px}.pd-chartview-main-container .pd-messageDivContainer .pd-messageDiv{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;position:absolute;margin-left:5px;font-size:13px}.pd-chartview-main-container .pd-messageDivContainer .pd-toggleContainer{line-height:30px;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;float:right;margin:5px 0}.pd-chartview-main-container .pd-messageDivContainer .pd-allUserBtn-div{border-radius:0 5px 5px 0}.pd-chartview-main-container .pd-messageDivContainer .pd-currentUserBtn-div{border-radius:5px 0 0 5px}.pd-chartview-main-container .pd-messageDivContainer .pd-commonStyleBtn{display:inline-block;cursor:pointer;font-size:12px;width:92px;text-align:center}.pd-chartview-main-container .summaryTable{width:100%;border-collapse:collapse;border-spacing:2px;border-color:grey}.pd-chartview-main-container .activeAll{cursor:pointer;background:none!important;border-radius:13px;border:none;width:64px;height:18px!important;line-height:18px!important;color:#45a1da;margin-right:0!important;padding:1px 5px;vertical-align:sub}.pd-chartview-main-container #myTimeLine{width:89%;height:60%;margin-left:5px;overflow-x:scroll;overflow-y:hidden;float:left}.pd-chartview-main-container #myTimeLine2{width:71px;position:relative;overflow-x:hidden;overflow-y:hidden}.pd-chartview-main-container #myChartDiv{width:100%}.pd-chartview-main-container .chartview-navigationbar{border-collapse:collapse;border-right:1px solid #999;text-align:center}.pd-chartview-main-container #labels{border-right:1px solid #b7b7b7;border-top:1px solid #b7b7b7;width:10%;float:left;font-size:1.2vw;overflow-x:hidden;overflow-y:hidden}.inline{vertical-align:top;position:relative}"]
|
|
1242
1281
|
},] }
|
|
1243
1282
|
];
|
|
@@ -2224,6 +2263,7 @@ class TableviewComponent {
|
|
|
2224
2263
|
this.myXmlData = JSON.parse(response);
|
|
2225
2264
|
if (this.myXmlData) {
|
|
2226
2265
|
// get current data list
|
|
2266
|
+
console.log("AAA myXmlData-->>", this.myXmlData);
|
|
2227
2267
|
let genarateUserReqiuredData = this.pdService.genarateUserReqiuredData(this.myXmlData);
|
|
2228
2268
|
this.currentdataList = genarateUserReqiuredData.userConsoleData;
|
|
2229
2269
|
// get all user list
|
|
@@ -2256,14 +2296,71 @@ class TableviewComponent {
|
|
|
2256
2296
|
}
|
|
2257
2297
|
});
|
|
2258
2298
|
}
|
|
2299
|
+
findAndSimplifyNestedArray(data) {
|
|
2300
|
+
console.log('this.tableViewData', data);
|
|
2301
|
+
for (let i = 0; i < data.length; i++) {
|
|
2302
|
+
if (Array.isArray(data[i])) {
|
|
2303
|
+
const nestedArray = data[i];
|
|
2304
|
+
if (nestedArray.every(item => Array.isArray(item) && item.every(val => val === item[0]))) {
|
|
2305
|
+
data[i] = [[nestedArray[0][0]]];
|
|
2306
|
+
}
|
|
2307
|
+
return data[i];
|
|
2308
|
+
}
|
|
2309
|
+
}
|
|
2310
|
+
return "No nested array found.";
|
|
2311
|
+
}
|
|
2259
2312
|
showCurrentDataUser() {
|
|
2260
2313
|
this.tableViewData = this.pdService.dataForTableView(this.currentdataList, this.currentResoursedataList);
|
|
2314
|
+
//this.tableViewData = this.findAndSimplifyNestedArray(this.tableViewData);
|
|
2315
|
+
let newTableViewData;
|
|
2316
|
+
for (var i = 0; i < this.tableViewData.length; i++) {
|
|
2317
|
+
newTableViewData = this.findAndSimplifyNestedArray(this.tableViewData[i]);
|
|
2318
|
+
newTableViewData[newTableViewData.length - 1] = newTableViewData[newTableViewData.length - 1][0];
|
|
2319
|
+
}
|
|
2320
|
+
let anotherTableViewData;
|
|
2321
|
+
for (var j = 0; j < this.tableViewData.length; j++) {
|
|
2322
|
+
anotherTableViewData = this.mergerSourceWithRoomData(this.tableViewData[j]);
|
|
2323
|
+
}
|
|
2261
2324
|
if (this.tableViewData) {
|
|
2325
|
+
//this.ueserWiseTableView(this.tableViewData);
|
|
2262
2326
|
this.ueserWiseTableView(this.tableViewData);
|
|
2263
2327
|
}
|
|
2328
|
+
console.log('AAA mlaunchedFromm tableViewData', this.tableViewData);
|
|
2329
|
+
}
|
|
2330
|
+
mergerSourceWithRoomData(tableViewData) {
|
|
2331
|
+
let lastIndexValue = tableViewData[tableViewData.length - 1].join(' ');
|
|
2332
|
+
// Merge last index value into the 6th index
|
|
2333
|
+
console.log('lastIndexValue', lastIndexValue);
|
|
2334
|
+
if (lastIndexValue === 'ce6') {
|
|
2335
|
+
//lastIndexValue = '<span style="color:black;"><i class="fa fa-windows" aria-hidden="true"></i></span>';
|
|
2336
|
+
lastIndexValue = '<span style="color:black;"></span>';
|
|
2337
|
+
}
|
|
2338
|
+
else if (lastIndexValue === 'ce6-a') {
|
|
2339
|
+
lastIndexValue = '<span style="color:#1b60d1;font-weight:bold;font-size:14px;"><i class="fa fa-android" aria-hidden="true"></i></span>';
|
|
2340
|
+
}
|
|
2341
|
+
else if (lastIndexValue === 'c') {
|
|
2342
|
+
lastIndexValue = '<span style="color:#1b60d1;font-weight:bold;font-size:14px; display:flex;"><i style="margin-top:-1px;" class="fa fa-android" aria-hidden="true"></i><i style="margin-left:5px;" class="fa fa-desktop" aria-hidden="true"></i></span>';
|
|
2343
|
+
}
|
|
2344
|
+
//tableViewData[6] = tableViewData[6] + '\n' + lastIndexValue;
|
|
2345
|
+
//tableViewData[6] = '<div style="display: flex;flex-direction: row;align-content: center;justify-content: flex-start;align-items: center;">'+lastIndexValue + ' ' + '<span style="font-size:11px !important;color:gray;font-weight:600;">'+tableViewData[6]+'</span></div>';
|
|
2346
|
+
tableViewData[6] = '<div style="display: flex;flex-direction: row;align-content: center;justify-content: flex-start;align-items: center;">' + '<span style="font-size:11px !important;color:gray;font-weight:600;">' + tableViewData[6] + '</span>' + '<span style="color:transparent">-</span>' + lastIndexValue + '</div>';
|
|
2347
|
+
// Optional: remove the last element (if no longer needed)
|
|
2348
|
+
tableViewData.pop();
|
|
2264
2349
|
}
|
|
2265
2350
|
showAllUser() {
|
|
2266
2351
|
this.tableViewData = this.pdService.dataForTableView(this.alluserList, this.currentResoursedataList);
|
|
2352
|
+
//console.log('AAA userConsoleMatrix tableViewData', this.tableViewData)
|
|
2353
|
+
let newTableViewData;
|
|
2354
|
+
for (var i = 0; i < this.tableViewData.length; i++) {
|
|
2355
|
+
newTableViewData = this.findAndSimplifyNestedArray(this.tableViewData[i]);
|
|
2356
|
+
if (newTableViewData[newTableViewData.length - 1]) {
|
|
2357
|
+
newTableViewData[newTableViewData.length - 1] = newTableViewData[newTableViewData.length - 1][0];
|
|
2358
|
+
}
|
|
2359
|
+
}
|
|
2360
|
+
let anotherTableViewData;
|
|
2361
|
+
for (var j = 0; j < this.tableViewData.length; j++) {
|
|
2362
|
+
anotherTableViewData = this.mergerSourceWithRoomData(this.tableViewData[j]);
|
|
2363
|
+
}
|
|
2267
2364
|
if (this.tableViewData) {
|
|
2268
2365
|
this.ueserWiseTableView(this.tableViewData);
|
|
2269
2366
|
}
|
|
@@ -2288,15 +2385,30 @@ class TableviewComponent {
|
|
|
2288
2385
|
let cnt = 0;
|
|
2289
2386
|
for (let i = 0; i < resoureMetadata.length; i++) {
|
|
2290
2387
|
for (let j = 0; j < 12; j++) {
|
|
2291
|
-
let label = document.createElement('label');
|
|
2292
|
-
label.appendChild(document.createTextNode(resoureMetadata[i][j]));
|
|
2293
|
-
|
|
2388
|
+
//let label = document.createElement('label');
|
|
2389
|
+
//label.appendChild(document.createTextNode(resoureMetadata[i][j]));
|
|
2390
|
+
let label = document.createElement('div');
|
|
2391
|
+
label.innerHTML = (resoureMetadata[i][j]);
|
|
2392
|
+
console.log('label.textContent', label.textContent);
|
|
2393
|
+
if (label.textContent === 'undefined' ||
|
|
2394
|
+
label.textContent === undefined ||
|
|
2395
|
+
label.textContent === 'undefined\nce6-a' ||
|
|
2396
|
+
label.textContent === 'undefined\nce6' ||
|
|
2397
|
+
label.textContent === 'undefined\n' ||
|
|
2398
|
+
label.textContent === 'undefined\nAndroid' ||
|
|
2399
|
+
label.textContent === 'undefined\nWeb' ||
|
|
2400
|
+
label.textContent === 'undefined\n' ||
|
|
2401
|
+
label.textContent === '\nundefined' ||
|
|
2402
|
+
label.textContent === ' undefined' ||
|
|
2403
|
+
label.textContent === 'undefined-' ||
|
|
2404
|
+
label.textContent === 'undefined-c' ||
|
|
2405
|
+
label.textContent === 'undefined- ') {
|
|
2294
2406
|
label.textContent = '';
|
|
2295
2407
|
}
|
|
2296
2408
|
labelArray.push(label);
|
|
2297
|
-
// console.log("label",label);
|
|
2298
2409
|
}
|
|
2299
2410
|
}
|
|
2411
|
+
//console.log("labelArray",labelArray);
|
|
2300
2412
|
for (let j = 0; j <= resoureMetadata.length; j++) {
|
|
2301
2413
|
let row = document.createElement('tr');
|
|
2302
2414
|
let cell;
|
|
@@ -2316,8 +2428,8 @@ class TableviewComponent {
|
|
|
2316
2428
|
TableviewComponent.decorators = [
|
|
2317
2429
|
{ type: Component, args: [{
|
|
2318
2430
|
selector: 'lib-tableview',
|
|
2319
|
-
template: "\n <div id=\"tableViewDiv\" class=\"pd-tableViewDiv\">\n \n <table class=\"table table-bordered\" id=\"tableRow\">\n <thead class=\"table-head\">\n <tr class=\"table-headerRow\">\n <th scope=\"col\">Teacher Name</th>\n <th scope=\"col\">Subjects</th>\n <th scope=\"col\">Date</th>\n <th scope=\"col\">Start Time</th>\n <th scope=\"col\">End Time</th>\n <th scope=\"col\">Duration (mins)</th>\n <th scope=\"col\">Room</th>\n <th scope=\"col\">Subject</th>\n <th scope=\"col\">Topic of Class</th>\n <th scope=\"col\">Chapter Name</th>\n <th scope=\"col\">Topic Name</th>\n <th scope=\"col\">Assets Details</th>\n </tr>\n </thead>\n <tbody id=\"tblBody\">\n \n </tbody>\n </table>\n </div>\n \n",
|
|
2320
|
-
styles: [".pd-tableViewDiv{width:100%;height:744px;overflow:scroll}.pd-tableViewDiv #tableRow{font-size:small;width:100%;margin-left:24px;margin-top:10px}.pd-tableViewDiv .table-headerRow{font-weight:700}.pd-tableViewDiv .table-head{position:sticky;top:0;background:#fff}"]
|
|
2431
|
+
template: "\n <div id=\"tableViewDiv\" class=\"pd-tableViewDiv\">\n \n <table class=\"table table-bordered\" id=\"tableRow\">\n <thead class=\"table-head\">\n <tr class=\"table-headerRow\">\n <th scope=\"col\">Teacher Name</th>\n <th scope=\"col\">Subjects</th>\n <th scope=\"col\">Date</th>\n <th scope=\"col\">Start Time</th>\n <th scope=\"col\">End Time</th>\n <th scope=\"col\">Duration (mins)</th>\n <th scope=\"col\">Room</th>\n <th scope=\"col\">Subject</th>\n <th scope=\"col\">Topic of Class</th>\n <th scope=\"col\">Chapter Name</th>\n <th scope=\"col\">Topic Name</th>\n <th scope=\"col\">Assets Details</th>\n \n </tr>\n </thead>\n <tbody id=\"tblBody\">\n \n </tbody>\n </table>\n </div>\n \n",
|
|
2432
|
+
styles: [".pd-tableViewDiv{width:100%;height:744px;overflow:scroll}.pd-tableViewDiv #tableRow{font-size:small;width:100%;margin-left:24px;margin-top:10px}.pd-tableViewDiv .table-headerRow{font-weight:700}.pd-tableViewDiv .table-head{position:sticky;top:0;background:#fff}.roomCell{display:flex;flex-direction:row;align-content:center;justify-content:flex-start;align-items:center}"]
|
|
2321
2433
|
},] }
|
|
2322
2434
|
];
|
|
2323
2435
|
TableviewComponent.ctorParameters = () => [
|