/*================================================================================================================\ + + Project : NOCOUT-MTS + Filename : activeDashboard.js + Module Name : TileDashboard + Purpose : To show Active Tile deshboard + Coded By : Pankaj Khandal + +================================================================================================================*/ /** * To show Infra Tile deshboard * @module TileDashboard */ /** * Global References: To store Ajax Request's XHR object. * @for ActiveTileDashboard */ var xhr_showNetworkAvailability; var xhr_showInfraDashboardDate; var xhr_refreshDashboard; /** * Global References: To store Global Values. * @for ActiveTileDashboard */ var timeInterval; var checkedCircle = []; var defaultURL = ''; /** * To dynamically add Query parameter on given URI. * @method updateQueryStringParameter * @param {String} uri Unique Resource Identifier. * @param {String} key The key which is to be updated. * @param {String} value The value of the Key to be updated. * @class ActiveTileDashboard * @constructor */ function updateQueryStringParameter(uri, key, value) { var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i"); var separator = uri.indexOf('?') !== -1 ? "&" : "?"; if (uri.match(re)) { return uri.replace(re, '$1' + key + "=" + value + '$2'); } else { return uri + separator + key + "=" + value; } } /** * Add Attributes (Href,target) to given element. * @method addLinkValue * @param {Object} $eleParentHref The Link Object. * @param {String} linkValue The value of the Key to be updated. * @for ActiveTileDashboard */ function addLinkValue($eleParentHref, linkValue) { $eleParentHref.attr({ 'href': linkValue, 'target': '_blank' }).css("cursor", "pointer"); } /** * Add Alarms details on tile. * @method addAlarmDetails * @param {String} alarmId Code of Alarm. * @param {String} alatmValue Count of Alarm. * @param {String} alarmName Name of Alarm. * @for ActiveTileDashboard */ function addAlarmDetails(alarmId, alatmValue, alarmName) { $('#' + alarmId).find('h4').text(alatmValue); $('#' + alarmId).find('p').text(alarmName); } /** * Get Hidden field values and make it globally available. * @method getHiddenFieldInfraURL * @for ActiveTileDashboard */ function getHiddenFieldInfraURL() { defaultURL = $("#hiddenInfraUrl").val(); } /** * Add parameters to url. * @method addParameters * @param {Array} params Key-Value pair of URL-Parameters. * @for ActiveTileDashboard */ function addParameters(params) { var url = defaultURL; for (var count = 0; count < params.length; count++) { url = updateQueryStringParameter(url, params[count].key, params[count].value); } return url; } /** * Shows Network Availability for Selected Circles * @method showNetworkAvailability * @param {Array} checkedCircleFinal Circle-Array which are selected, contains IDs of circles. * @for ActiveTileDashboard */ function showNetworkAvailability(checkedCircleFinal) { if (xhr_showNetworkAvailability && xhr_showNetworkAvailability.readystate != 4) { xhr_showNetworkAvailability.abort(); } xhr_showNetworkAvailability = $.ajax({ type: "GET", url: "/Infra/GetNetworkAvailabilityForAllCircle/", data: { circleList: checkedCircleFinal }, success: function (data) { var networkAvl = (data.TotalCellNetwork).toFixed(2); $('#NetworkAvailabity').html(networkAvl); }, complete: function () { }, error: function (data) { console.log("Error"); } }); } /** * Shows Last parsed file's date. (Applicable only for one circle) * @method showInfraDashboardDate * @param {string} circleName Name of Circle. * @for ActiveTileDashboard */ function showInfraDashboardDate(circleName) { if (xhr_showInfraDashboardDate && xhr_showInfraDashboardDate.readystate != 4) { xhr_showInfraDashboardDate.abort(); } xhr_showInfraDashboardDate = $.ajax({ type: "GET", url: "/Infra/GetInfraDashboardDate/", data: { circleName: circleName }, success: function (data) { //console.log(data.TotalCellNetwork); $('#infraDashboardDate').html(data); }, complete: function () { $('#infraDashboardDate').show(); }, error: function (data) { console.log("Error"); } }); } /** * To bind values on infra tile dashboard for selected circles. * @method refreshDashboard * @param {Array} checkedCircleFinal Circle-Array which are selected, contains IDs of circles. * @for ActiveTileDashboard */ function refreshDashboard(checkedCircleFinal) { $('.wrapup-pod').find('h4').html(0); var btsDownText = ''; var count = 3; var count1 = 1; var totalDownSites = 0; var totalDownSitesValue = 0; var arrDownSites = []; if (xhr_refreshDashboard && xhr_refreshDashboard.readystate != 4) { xhr_refreshDashboard.abort(); } xhr_refreshDashboard = $.ajax({ type: "GET", url: "/Infra/ActiveTileDashboard_Zte_Grid/", data: { circleList: checkedCircleFinal }, success: function (model) { // Storing selected circles checkedCircle = ""; $(".checkboxButton label").each(function () { if ($(this).hasClass('activeLabel')) { checkedCircle += ($(this).attr('id')) + ','; } }); var checkedCircleFinal = checkedCircle.substring(0, checkedCircle.lastIndexOf(',')); // Finding text of BTS Down Text. for (var counter = 0 ; counter < model.length; counter++) { if (model[counter].AlarmId == '133157') { btsDownText = model[counter].AlarmName; break; } } // Set values in each tile. for (var i = 0; i < model.length; i++) { // Values for total BTS if (model[i].AlarmId == "TotalBTS") { $("#TotalBTS").text(model[i].Value); $("#textTotalBTS").text(model[i].AlarmName); } else { ////if ((model[i].AlarmId != 'UPSites') && (model[i].Value != 0)) { if ((model[i].AlarmId != 'UPSites')) { // taking parent element (anchor tag) of specified div var $parentHref = $('#' + model[i].AlarmId).parent(); // update url with value of alarmType. var linkValue = addParameters([{ "key": "alarmList", "value": model[i]['AlarmId'] }, { "key": "selectedCircles", "value": checkedCircleFinal }]); // set attributes to anchor tag. addLinkValue($parentHref, linkValue); } addAlarmDetails(model[i].AlarmId, model[i]['Value'], model[i]['AlarmName']); } } }, complete: function () { $('.excelIcon').show(); }, error: function (data) { console.log("Error"); } }); } /** * To show Infra Tile dashboard for selected Circles. * @method showInfraTileDashboard * @class ActiveTileDashboard */ function showInfraTileDashboard() { checkedCircleName = []; $(".checkboxButton label").each(function () { if ($(this).hasClass('activeLabel')) { checkedCircleName.push($(this).text()); } }); checkedCircle = ""; $(".checkboxButton label").each(function () { if ($(this).hasClass('activeLabel')) { checkedCircle += ($(this).attr('id')) + ','; } }); var checkedCircleFinal = checkedCircle.substring(0, checkedCircle.lastIndexOf(',')); if (checkedCircleFinal == '') { alert("Please select atleast one circle !!"); return false; }; refreshDashboard(checkedCircleFinal); showNetworkAvailability(checkedCircleFinal); $('#infraDashboardDate').hide(); if (checkedCircleFinal.lastIndexOf(',') == -1) { showInfraDashboardDate(checkedCircleName[0]); } $('.circleFilter').show(); } /** * Calls when Document is prepared. * @event document.ready * @for ActiveTileDashboard */ $(document).ready(function () { //Getting Hidden field values and making it available globally. getHiddenFieldInfraURL(); // Loading Dashboard data. showInfraTileDashboard(); //Refresh Dashboard every-hour setInterval("showInfraTileDashboard()", 1000 * 60 * 60); });