From 0ba667816e703344eec33bda147546b30b6bbd5b Mon Sep 17 00:00:00 2001 From: ramverma Date: Fri, 6 Jul 2018 16:29:16 +0100 Subject: Adding client monitoring module to apex-pdp Change-Id: I6b4d00a5e49326f62f3585526ede8e89df99d7e5 Issue-ID: POLICY-864 Signed-off-by: ramverma --- .../main/resources/webapp/js/ApexEngineSummary.js | 152 +++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 client/client-monitoring/src/main/resources/webapp/js/ApexEngineSummary.js (limited to 'client/client-monitoring/src/main/resources/webapp/js/ApexEngineSummary.js') diff --git a/client/client-monitoring/src/main/resources/webapp/js/ApexEngineSummary.js b/client/client-monitoring/src/main/resources/webapp/js/ApexEngineSummary.js new file mode 100644 index 000000000..8b4051467 --- /dev/null +++ b/client/client-monitoring/src/main/resources/webapp/js/ApexEngineSummary.js @@ -0,0 +1,152 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * 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========================================================= + */ + +/* + * Create the Engine Service Table + */ +function createEngineSummaryTable() { + var tableId = config.engineSummary.tableId; + var headers = config.engineSummary.headers; + + // Create a wrapper div for both the table and the charts + var wrapper = document.createElement("div"); + wrapper.setAttribute("id", "engineSummary_wrapper"); + wrapper.setAttribute("class", "wrapper_borderless"); + $("." + config.engineSummary.parent).append(wrapper); + + var table = createEngineTable($(wrapper), tableId, headers.map(function(a) { + return a.title; + })); + var tableRow = document.createElement("tr"); + var tableData = ""; + for ( var h in headers) { + tableData += ""; + } + tableRow.innerHTML = tableData; + + $(table).children("#engineTableBody").append(tableRow); + +} + +function setEngineSummaryData(data) { + this._setEngineSummaryData(getLatestTimestamp(data), + getUptimeOfOldestEngine(data), getSumOfPolicyExecutions(data), + getAvgPolicyDuration(data)); +} + +/* + * Check for any changes in the Engine Summary Table data and update only where + * necessary + */ +function _setEngineSummaryData(timestamp, upTime, policyExecutions, + avgPolicyDuration) { + + var tableId = config.engineSummary.tableId; + var headers = config.engineSummary.headers.map(function(a) { + return a.id; + }); + var data = [ timestamp, upTime, policyExecutions ]; + + var engineSummaryTable = $("#engineSummaryTable"); + + for ( var h in headers) { + var td = engineSummaryTable.find("#" + tableId + "_" + headers[h]); + if (td.html() !== data[h]) { + engineSummaryTable.find("#" + tableId + "_" + headers[h]).html( + data[h]); + } + } + + // Update charts + var wrapper = engineSummaryTable.parent(); + var chartConfig = this.config.engineSummary.chart.avgPolicyDurationChart; + var avgPolicyDurationChart = wrapper.find("#" + chartConfig.parent)[0]; + if (avgPolicyDurationChart) { + updateChart(avgPolicyDurationChart, avgPolicyDuration, + chartConfig.nodeColour); + } else { + var avgPolicyDurationDiv = document.createElement("div"); + avgPolicyDurationDiv.setAttribute("id", chartConfig.parent); + avgPolicyDurationDiv.setAttribute("class", "apexChart_inline"); + createChart(avgPolicyDuration, avgPolicyDurationDiv, chartConfig.title, + chartConfig.unit, chartConfig.lineStroke, + chartConfig.nodeColour); + $(wrapper).append(avgPolicyDurationDiv); + } +} + +function getLatestTimestamp(data) { + var latestTimestamp = { + displayText : "-1", + value : -1 + }; + for ( var d in data) { + var currentDateInMillis = new Date(data[d].timestamp.replace(/-/g, '/') + .split('.')[0]).getTime(); + if (currentDateInMillis > latestTimestamp.value) { + latestTimestamp.displayText = data[d].timestamp; + latestTimestamp.value = currentDateInMillis; + } + } + return latestTimestamp.displayText; +} + +function getUptimeOfOldestEngine(data) { + var oldestUpTime = -1; + for ( var d in data) { + if (data[d].up_time > oldestUpTime) { + oldestUpTime = data[d].up_time; + } + } + return oldestUpTime; +} + +function getSumOfPolicyExecutions(data) { + var totalPolicyExecutions = 0; + for ( var d in data) { + totalPolicyExecutions += data[d].policy_executions; + } + return totalPolicyExecutions; +} + +function getAvgPolicyDuration(data) { + var chartData = []; + var avgPolicyDurations = []; + for ( var d in data) { + var avgPolicyDuration = JSON.parse(data[d].average_policy_duration); + avgPolicyDurations.push(avgPolicyDuration); + } + + if (avgPolicyDurations.length > 0) { + chartData = avgPolicyDurations[0]; + for (var i = 1; i < avgPolicyDurations.length; i++) { + var engineData = avgPolicyDurations[i]; + for ( var c in chartData) { + chartData[c].value += engineData[c].value; + } + } + } + + for ( var c2 in chartData) { + chartData[c2].value = Math.round(chartData[c2].value / data.length); + } + + return chartData; +} \ No newline at end of file -- cgit 1.2.3-korg