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.
@@ -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 + '&nbsp;&nbsp;' + '<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
- if (label.textContent === 'undefined' || label.textContent === undefined) {
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-->>", usersMetadata[i].fullName);
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
- if (this.userConsoleData[i].userName === "-" || this.userConsoleData[i].userName === "--") {
373
- this.userConsoleData.splice(i, 1); // 2nd parameter means remove one item only
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].userName);
474
- if (AlluserDetails[i].userName === undefined) {
475
- AlluserDetails[i].userName = "--";
476
- }
477
- if (AlluserDetails[i].userName === "--") {
478
- //AlluserDetails.splice(i, 1); // 2nd parameter means remove one item only
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
- resourceArrayForTableChart = [teacherName, teacherSubject, currentDate, startTime, endTime, duration, roomDetail, subject, grade, chapter, teachingpoint, AssestDetail];
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.21";
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
- // console.log(' IN --> 8 loadChart');
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
- this.chartDataTable = this.myChartDataMatrix;
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 + '&nbsp;&nbsp;' + '<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
- if (label.textContent === 'undefined' || label.textContent === undefined) {
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 = () => [