diff options
author | Hengye <yehui.wang@est.tech> | 2020-02-25 09:15:58 +0800 |
---|---|---|
committer | Hengye <yehui.wang@est.tech> | 2020-03-03 09:26:05 +0800 |
commit | 7fa12fdd8d4428a8b21ad143943858a1ca2e0e27 (patch) | |
tree | 770f902b866e426776a5b450c431ae1799c48a7f /gui-pdp-monitoring/src/main/resources/webapp/js/MonitoringMain.js | |
parent | fd7eb2d478674ae0922abee899d784441c7f3487 (diff) |
Create PDP Monitoring GUI Model
Monitorning GUI to monitor PDPs Statistics, including
Web and Rest Server by embeded jetty.
Issue-ID: POLICY-2311
Signed-off-by: Hengye <yehui.wang@est.tech>
Change-Id: I9bd0d50eaa7ae4dbd07d17389da2cf107e854c61
Diffstat (limited to 'gui-pdp-monitoring/src/main/resources/webapp/js/MonitoringMain.js')
-rw-r--r-- | gui-pdp-monitoring/src/main/resources/webapp/js/MonitoringMain.js | 295 |
1 files changed, 295 insertions, 0 deletions
diff --git a/gui-pdp-monitoring/src/main/resources/webapp/js/MonitoringMain.js b/gui-pdp-monitoring/src/main/resources/webapp/js/MonitoringMain.js new file mode 100644 index 0000000..6c8e291 --- /dev/null +++ b/gui-pdp-monitoring/src/main/resources/webapp/js/MonitoringMain.js @@ -0,0 +1,295 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2020 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +var restRootURL; + +// Configuration used for page layout and charts +var config = { + refresh : 5000, + restPort : 17999, + engineService : { + parent : "engineService", + tableId : "engineServicesTable", + headers : [ { + title : "Engine Service ID", + id : "engine_id" + }, { + title : "GroupName", + id : "group_name" + }, { + title : "SubGroupName", + id : "subgroup_name" + },{ + title : "HealthStatus", + id : "health_status" + },{ + title : "PdpState", + id : "pdp_state" + },{ + title : "Pap server:port", + id : "server_port" + }] + }, + engineSummary : { + parent : "engineSummary", + tableId : "engineSummaryTable", + headers : [ { + title : "Timestamp", + id : "timestamp" + }, { + title : "Sum of policy deploy", + id : "policy_deploy" + }, { + title : "Sum of policy deploy success", + id : "policy_deploy_success" + }, { + title : "Sum of policy deploy fail", + id : "policy_deploy_fail" + }, { + title : "Sum of policy executions", + id : "policy_executions" + }, { + title : "Sum of policy executions success", + id : "policy_executions_success" + } , { + title : "Sum of policy executions fail", + id : "policy_executions_fail" + }, { + title : "Up Time(ms)", + id : "up_time" + }], + chart : { + avgPolicyDurationChart : { + parent : "avgPolicyDuration", + title : "Average Policy Duration (ms)", + unit : "ms", + lineStroke : "#5FBADD", + nodeColour : "#00A9D4" + }, + } + }, + engineStatus : { + parent : "engineStatus", + tableId : "engineStatusTable", + headers : [ { + title : "Timestamp", + id : "timestamp" + }, { + title : "Engine ID", + id : "engine_id" + }, { + title : "Engine Status", + id : "engine_status" + }, { + title : "Last Message", + id : "last_message" + }, { + title : "Up Time (ms)", + id : "up_time" + }, { + title : "Policy Executions", + id : "policy_executions" + } ] + }, + engineChart : { + lastPolicyDurationChart : { + parent : "lastPolicyDurationChart", + title : "Last Policy Duration (ms)", + unit : "ms", + lineStroke : "#F5A241", + nodeColour : "#F08A00" + }, + averagePolicyDurationChart : { + parent : "averagePolicyDurationChart", + title : "Average Policy Duration (ms)", + unit : "ms", + lineStroke : "#00625F", + nodeColour : "#007B78" + } + } +}; + +function getPdpList(data) { + const pdpArray = []; + for(let i = 0; i < data.groups.length; i++) { + var map = {}; + map.title = data.groups[i].name; + map.children = []; + (data.groups[i].pdpSubgroups).forEach( (pdpSubgroup, index)=> { + map.children[index] = {}; + map.children[index].title= pdpSubgroup.pdpType; + const instanceId = []; + pdpSubgroup.pdpInstances.forEach(pdpInstance => { + var instanceIdMap = {}; + instanceIdMap.title = pdpInstance.instanceId; + instanceId.push(instanceIdMap) + }); + map.children[index].children = instanceId; + }); + pdpArray.push(map); + } + RenderPdpList(pdpArray, 'pdps__list'); +} + + + +function servicesCallback(data){ + var engineURL = localStorage.getItem("pap-monitor-services"); + if (engineURL) { + this.engineURL = JSON.parse(engineURL); + if (this.engineURL.hostname === data.server && this.engineURL.port === data.port) { + setEngineServiceData(data.engineId, this.groupName, this.subGroupName, data.healthStatus, data.pdpState, data.server, data.port); + setEngineSummaryData(data.status, data.timeStamp, data.policyDeployCount, data.policyDeploySuccessCount, data.policyDeployFailCount, data.policyExecutedCount, data.policyExecutedSuccessCount, data.policyExecutedFailCount); + + if(this.engine_id === data.engineId){ + setEngineStatusData(data.status, false); + }else{ + removeChildrenElementsByClass(config.engineStatus.parent); + setEngineStatusData(data.status, true); + } + + this.engine_id = data.engineId; + + // Make content visible after data has been returned for the first time + if (!$(".content").is(':visible')) { + $(".content").fadeIn(); + } + + // Repeat the same request + setTimeout(function() { + this.servicesCall = ajax_get_statistics(restRootURL+"statistics/", servicesCallback, this.services.useHttps, this.services.hostname, this.services.port, this.services.username, this.services.password, id); + }, config.refresh); + } + } +} + +/* + * Clears and resets all content on the page + */ +function setUpPage(clearPdps) { + // Hide all content + $('#content').hide(); + + // Clear each div + $('#content > div').each(function() { + $(this).empty(); + }); + + // clear hashchange + history.replaceState(null, null, ' '); + + //remove last search result of pdps. + if(clearPdps){ + removeChildrenElementsByClass('pdps__list'); + }else{ + localStorage.setItem("pap-monitor-services", localStorage.getItem("pap-monitor-services_old")); + } + + // Reset trackers for tables + this.engineStatusTables = []; + this.engineContextTables = []; + + // Set up content div's + createEngineServiceTable(); + createEngineSummaryTable(); +} + +/* + * Retrieves the engine URL from the cookie. If it has not been set yet, then a + * dialog is shown asking for it + */ +function getEngineURL(message) { + // The engine URL is stored in a cookie using the key + // "pap-monitor-services" + var services = localStorage.getItem("pap-monitor-services"); + + // If an engine URL is stored in the cookie + if (services) { + // Parse the engine URL + this.services = JSON.parse(services); + + // Send a request with that engine URL + ajax_get(restRootURL, getPdpList, this.services.useHttps, this.services.hostname, this.services.port, this.services.username, this.services.password); + } else { + // Prompt for engine URL + papDialogFormActivate(document.body, message); + } +} + +/* + * Clears the cookie and reset the page + */ +function clearEngineURL(clearPdps) { + + if(typeof this.servicesCall !== "undefined"){ + this.servicesCall.abort(); + } + + // Remove engine URL from cookie + localStorage.removeItem("pap-monitor-services"); + + // Reset the page + setUpPage(clearPdps); +} + +/* + * Called after the DOM is ready + */ +$(document).ready( + function() { + restRootURL = location.protocol + + "//" + + window.location.hostname + + ':' + config.restPort + + (location.pathname.endsWith("/monitoring/") ? location.pathname.substring(0, location.pathname.indexOf("monitoring/")) : location.pathname) + + "papservices/monitoring/"; + // Initialize tooltip for the charts + initTooltip(); + + // Set up the structure of the page + setUpPage(true); + + // Check cookies for engine URL + getEngineURL(); + + // Add click event to config icon for clearing engine URL + $(".ebSystemBar-config").click( + function() { + // Clear the engine URL + clearEngineURL(true); + + // Request the engine URL + getEngineURL(); + } + ); + + ['hashchange', 'load'].forEach(event => window.addEventListener(event, function() { + // Get ID from url + this.id = window.location.hash.replace('#', ''); + if(id !== ''){ + var arr = id.split("/"); + this.groupName = arr[0]; + this.subGroupName = arr[1]; + highlightSelected(id); + ajax_get_statistics(restRootURL+"statistics/", servicesCallback, this.services.useHttps, this.services.hostname, this.services.port, this.services.username, this.services.password, id); + } + })); + } +);
\ No newline at end of file |