/* * ============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; }