3 var _allAppsArray =
new Array();
4 var _allContextNames =
new Array();
5 var _allClassNames =
new Array();
6 var _arrayOnDisplayTable =
new Array();
7 var intersectionArray =
new Array();
32 Debug.log(
"Calibrations init");
43 then(
function(result){
51 filterByClickingOnItem();
55 setTimeout(
function(){
68 function getContextNames(){
70 return new Promise(
function(resolve, reject){
72 DesktopContent.XMLHttpRequest(
"Request?RequestType=getContextMemberNames",
"",
75 var memberNames = req.responseXML.getElementsByTagName(
"ContextMember");
76 _allContextNames =
new Array();
78 for(var i=0;i<memberNames.length;++i)
80 _allContextNames.push(memberNames[i].getAttribute(
"value"));
83 if(_allContextNames.length == 0)
85 Debug.log(
"Empty context member list found!",Debug.HIGH_PRIORITY);
86 reject(
"Empty context member list found!");
91 resolve(_allContextNames);
101 function getAppsArray(){
103 return new Promise(
function(resolve, reject){
104 DesktopContent.XMLHttpRequest(
"Request?RequestType=getAppStatus",
"",
107 var appNames, appUrls, appIds, appStatus, appTime, appClasses, appProgress, appContexts;
110 _allAppsArray =
new Array();
111 _allClassNames =
new Array();
113 appNames = req.responseXML.getElementsByTagName(
"name");
114 appIds = req.responseXML.getElementsByTagName(
"id");
115 appStatus = req.responseXML.getElementsByTagName(
"status");
116 appTime = req.responseXML.getElementsByTagName(
"time");
117 appProgress = req.responseXML.getElementsByTagName(
"progress");
118 appClasses = req.responseXML.getElementsByTagName(
"class");
119 appUrls = req.responseXML.getElementsByTagName(
"url");
120 appContexts = req.responseXML.getElementsByTagName(
"context");
123 for (i = 0; i< appNames.length; i++)
126 "name" : appNames[i].getAttribute(
"value"),
127 "id" : appIds[i].getAttribute(
"value"),
128 "status" : appStatus[i].getAttribute(
"value"),
129 "time" : appTime[i].getAttribute(
"value"),
130 "progress" : appProgress[i].getAttribute(
"value"),
131 "class" : appClasses[i].getAttribute(
"value"),
132 "url" : appUrls[i].getAttribute(
"value"),
133 "context" : appContexts[i].getAttribute(
"value")
137 _allClassNames.push(appClasses[i].getAttribute(
"value"));
140 if(_allAppsArray.length == 0)
142 Debug.log(
"Empty apps array!",Debug.HIGH_PRIORITY);
143 reject(
"Empty Empty apps array!");
147 resolve(_allAppsArray);
159 function updateAppsArray() {
163 _arrayOnDisplayTable = setIntersection(_allAppsArray, _arrayOnDisplayTable);
164 displayTable(_arrayOnDisplayTable);
166 setTimeout(updateAppsArray, 4000);
172 function displayTable(appsArray){
175 var statusDivElement = document.getElementById(
"statusDiv");
176 statusDivElement.innerHTML =
"";
179 var table = document.createElement(
"TABLE");
183 var columnNames = [
"Name",
"App ID",
"Status",
"Time",
"Progress",
"Class",
"Application Url",
"Context"];
184 var columnCount = columnNames.length;
187 var row = table.insertRow(-1);
188 for (var i = 0; i < columnCount; i++) {
189 var headerCell = document.createElement(
"TH");
190 headerCell.innerHTML = columnNames[i];
191 row.appendChild(headerCell);
195 for (var i = 0; i < appsArray.length; i++) {
196 row = table.insertRow(-1);
197 for (var key in appsArray[i]) {
198 var cell = row.insertCell(-1);
199 cell.innerHTML = appsArray[i][key];
202 switch(appsArray[i][key]) {
204 cell.style.backgroundColor =
"#77D0FF"
207 cell.style.backgroundColor =
"#4AB597";
210 cell.style.backgroundColor =
"red";
220 statusDivElement.appendChild(table);
223 _arrayOnDisplayTable = appsArray;
232 function createFilterList() {
233 var contextUl = document.getElementById(
'contextUl');
234 var classUl = document.getElementById(
'classUl');
236 renderFilterList(_allContextNames, contextUl,
"contextName");
237 renderFilterList(_allClassNames, classUl,
"className");
239 function renderFilterList(elemArray, ulelem, cbName) {
241 for (var i = 0; i < elemArray.length; i++)
243 var li = document.createElement(
'li');
244 var cb_input = document.createElement(
'input');
245 cb_input.setAttribute(
"type",
"checkbox");
246 cb_input.setAttribute(
"class", cbName);
247 cb_input.checked =
false;
248 cb_input.setAttribute(
"value", elemArray[i]);
251 li.setAttribute(
'class',
'item');
252 li.appendChild(cb_input);
255 if (cbName ==
"className")
257 textnode = document.createTextNode(elemArray[i].slice(5));
261 textnode = document.createTextNode(elemArray[i]);
264 li.appendChild(textnode);
265 ulelem.appendChild(li);
275 function collapsibleList(){
277 var collapsible = document.getElementsByClassName(
"collapsible");
279 for (var i = 0; i < collapsible.length; i++)
281 collapsible[i].addEventListener(
"click",
function() {
283 this.firstElementChild.style.visibility =
"hidden";
285 this.classList.toggle(
"active");
286 var content = this.nextElementSibling;
287 if (content.style.display ===
"block") {
288 content.style.display =
"none";
290 content.style.display =
"block";
298 function filterByClickingOnItem() {
300 var listElements = document.getElementsByTagName(
"li");
302 for (let i = 0; i < listElements.length; i++) {
303 listElements[i].addEventListener(
"click",
function() {
306 var listChildren = listElements[i].childNodes;
308 for (let j = 0; j < listChildren.length; j++) {
310 if(listChildren[j].className ==
"selectAll"){
311 if(listChildren[j].checked)
313 listChildren[j].checked =
false;
317 listChildren[j].checked =
true;
320 checkAllBoxes(listChildren[j].checked);
322 function checkAllBoxes(cbvalue){
323 var parentUl = listChildren[j].parentElement.parentElement;
324 var listSiblings = parentUl.childNodes;
326 for (let k = 0; k < listSiblings.length; k++) {
327 if(listSiblings[k].nodeName ==
"LI"){
328 listSiblings[k].firstChild.checked = cbvalue;
336 if(listChildren[j].nodeName ==
"INPUT")
338 listChildren[j].checked =
true;
353 var filteredClass = getFilteredArray(
"className");
354 var filteredContext = getFilteredArray(
"contextName");
357 if (filteredClass.length == 0 && filteredContext.length == 0) {
358 displayTable(_allAppsArray);
365 var notInFilteredClass =
new Array();
368 for (let i = 0; i < filteredContext.length; i++) {
371 for (let j = 0; j < filteredClass.length; j++) {
372 if (isEquivalent(filteredContext[i], filteredClass[j])) {
378 if (common ==
false) {
379 notInFilteredClass.push(filteredContext[i]);
385 var result = filteredClass.concat(notInFilteredClass);
388 displayTable(result);
392 function getFilteredArray(className){
394 var filterobjects = document.getElementsByClassName(className);
395 var checkedItems =
new Array();
398 for(var i = 0; i < filterobjects.length; i++)
400 if (filterobjects[i].checked ==
true)
402 var val = filterobjects[i].getAttribute(
"value");
403 checkedItems.push(val);
408 var filtered = _allAppsArray.filter(
function(app) {
410 return checkedItems.includes(app.class) || checkedItems.includes(app.context);
418 function isEquivalent(a, b) {
420 var aProps = Object.getOwnPropertyNames(a);
421 var bProps = Object.getOwnPropertyNames(b);
425 if (aProps.length != bProps.length) {
429 for (var i = 0; i < aProps.length; i++) {
430 var propName = aProps[i];
434 if (a[propName] !== b[propName]) {
446 function setIntersection(list1, list2) {
449 for (let i = 0; i < list1.length; i++) {
451 for(let j = 0; j < list2.length; j++){
452 if (list1[i].
id == list2[j].
id)
454 result.push(list1[i]);