var peiParams = { canvas : { containerId:'proEfficGenGraph', width:300, height:300, stretch:true }, graph: { allowDrillDown:false, allowTransition:true, showTip: true, allowZoom: true, //verificar navegadores... gapWidth:0.2, useShadows: true, //for Firefox and Chrome thickness: 30, showLabels: true, colorPalette: ['#5486bf','#bf8d54','#acb30c','#7a0c0c','#bc0000','#906090','#007efb','#62284a','#0c7a7a'] } }; var ueiParams = { canvas : { containerId:'proEfficGenGraph', width:300, height:300, stretch:true }, graph: { allowTransition: false, allowDrillDown: true, showTip: true, allowZoom: false, useShadows: false, gridLinesX: true, gridLinesY: true, area: {visible: false, css:"area"}, axisX:{ showAxis: true, label: G_STRING.ID_GROUPS }, axisY:{ showAxis: true, label: G_STRING.ID_TIME_HOURS }, showErrorBars: true } }; var generalLineParams1 = { canvas : { containerId:'generalGraph1', width:300, height:300, stretch:true }, graph: { allowTransition: false, allowDrillDown: true, showTip: true, allowZoom: false, useShadows: false, gridLinesX: true, gridLinesY: true, area: {visible: false, css:"area"}, axisX:{ showAxis: true, label: G_STRING.ID_PROCESS_TASKS }, axisY:{ showAxis: true, label: G_STRING.ID_TIME_HOURS }, showErrorBars: false } }; var generalLineParams2 = { canvas : { containerId:'generalGraph2', width:300, height:300, stretch:true }, graph: { allowTransition: false, allowDrillDown: true, showTip: true, allowZoom: false, useShadows: false, gridLinesX: true, gridLinesY: true, area: {visible: false, css:"area"}, axisX:{ showAxis: true, label: G_STRING.ID_PROCESS_TASKS }, axisY:{ showAxis: true, label: G_STRING.ID_TIME_HOURS }, showErrorBars: false } }; var generalBarParams1 = { canvas : { containerId:'generalGraph1', width:300, height:300, stretch:true }, graph: { allowDrillDown:false, allowTransition:true, axisX:{ showAxis: true, label: G_STRING.ID_YEAR }, axisY:{ showAxis: true, label: "Q" }, gridLinesX:false, gridLinesY:true, showTip: true, allowZoom: true, useShadows: true, paddingTop: 50, colorPalette: ['#5486bf','#bf8d54','#acb30c','#7a0c0c','#bc0000','#906090','#007efb','#62284a','#0c7a7a','#74a9a9'] } }; var generalBarParams2 = { canvas : { containerId:'generalGraph2', width:300, height:300, stretch:true }, graph: { allowDrillDown:false, allowTransition:true, axisX:{ showAxis: true, label: G_STRING.ID_YEAR }, axisY:{ showAxis: true, label: "Q" }, gridLinesX:false, gridLinesY:true, showTip: true, allowZoom: true, useShadows: true, paddingTop: 50, colorPalette: ['#5486bf','#bf8d54','#acb30c','#7a0c0c','#bc0000','#906090','#007efb','#62284a','#0c7a7a','#74a9a9'] } }; var peiDetailParams = { canvas : { containerId:'proEfficGraph', width:300, height:300, stretch:true }, graph: { allowTransition: false, allowDrillDown: true, showTip: true, allowZoom: false, useShadows: false, gridLinesX: true, gridLinesY: true, area: {visible: false, css:"area"}, axisX:{ showAxis: true, label: G_STRING.ID_PROCESS_TASKS }, axisY:{ showAxis: true, label: G_STRING.ID_TIME_HOURS }, showErrorBars: true } }; var ueiDetailParams = { canvas : { containerId:'proEfficGraph', width:300, height:300, stretch:true }, graph: { allowTransition: false, allowDrillDown: true, showTip: true, allowZoom: false, useShadows: false, gridLinesX: true, gridLinesY: true, area: {visible: false, css:"area"}, axisX:{ showAxis: true, label: G_STRING.ID_USERS }, axisY:{ showAxis: true, label: G_STRING.ID_TIME_HOURS }, showErrorBars: true } }; //Adding data to function animateprogress (id, index, comparative, name, indUid, direction){ var getRequestAnimationFrame = function () { return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function ( callback ){ window.setTimeout(enroute, 1 / 60 * 1000); }; }; var fpAnimationFrame = getRequestAnimationFrame(); var i = 0; var j = 0; if(name.length>20){ name = name.substring( -20, 20 ); name = name+"..."; } index = validaNull(index); document.getElementById(id+"Huge"+indUid).innerHTML = index; document.getElementById(id+"Small"+indUid).innerHTML = comparative; document.getElementById(id+"Span"+indUid).innerHTML = name; if(id == "proEffic" || id == "userEffic"){ if(comparative<0){ if(id == "proEffic"){ $(document.getElementsByClassName("proGreen")).removeClass("panel-green").addClass("panel-red"); $(document.getElementsByClassName("up")).removeClass("fa-chevron-up").addClass("fa-chevron-down"); } } else if(comparative>=0){ $(document.getElementsByClassName("proRed")).removeClass("panel-red").addClass("panel-green"); if(comparative==0){ $(document.getElementsByClassName("down")).removeClass("fa-chevron-down").addClass("fa-circle-o"); $(document.getElementsByClassName("up")).removeClass("fa-chevron-up").addClass("fa-circle-o"); } else { $(document.getElementsByClassName("down")).removeClass("fa-chevron-down").addClass("fa-chevron-up"); } } } if(id == "generalGreat" || id == "generalLow"){ var animacion = function () { var comp = parseInt(comparative); $(document.getElementById(id+indUid)).attr('aria-valuemax', comp); var indexToPaint = index*100/comp; if (i<=indexToPaint) { $(document.getElementById(id+indUid)).css('width', i+'%').attr('aria-valuenow', i); i++; fpAnimationFrame(animacion); } if(j<=index){ document.getElementById(id+"Huge"+indUid).innerHTML = j+"%"; j++; fpAnimationFrame(animacion); } var direc = (direction == "1")? "<" : ">"; if(id == "generalLow"){ document.getElementById(id+"Small"+indUid).innerHTML = "Goal "+direc+" "+comparative+"%"; } else{//si esq es positivo mostramos Well Done y la clase q setea las letras en blanco document.getElementById(id+"Small"+indUid).innerHTML = "("+direc+" "+comparative+" %) "+ G_STRING.ID_WELL_DONE; } } fpAnimationFrame(animacion); } }; //Button by dashbutton var dasButton = '
'; //Items by each type: var proEffic = '
\
\ \
\
'; var userEffic = '
\
\ \
\
'; var compCases = '
\
\ \
\
'; var numCases = '
\
\ \
\
'; //Data by Indicator elements: var proEfficDataGen = '
\
'+ G_STRING.ID_PRO_EFFICIENCY_INDEX +'
\
\
\
26%
\
'+ G_STRING.ID_EFFICIENCY_INDEX +'
\
\
\
$1813.50
\
'+ G_STRING.ID_INEFFICIENCY_COST +'
\
\
\
\
\
'; var proEfficData = '
\
\ \
\
\
\
26%
\
'+ G_STRING.ID_EFFICIENCY_INDEX +'
\
\
\
$1813.50
\
'+ G_STRING.ID_INEFFICIENCY_COST +'
\
\
\
\
\
'; var proEfficDetail = '
\
\ \
\
Process name 1
\
\
\
4.3 Days
\
'+ G_STRING.ID_EFFICIENCY_INDEX +'
\
\
\
1.3 Days
\
'+ G_STRING.ID_EFFICIENCY_COST +'
\
\
\
\
\
\
'; var proEfficTaskDetail = '
\
\
Task 1
\
\
\
\
\
\
0.95
\
'+ G_STRING.ID_EFFICIENCY_COST +'
\
\
\
4.3
\
Average Time
\
\
\
1.3
\
Deviation
\
\
\
\
\
'; var userTaskDetail = '
\
\
Task 1
\
\
\
\
\
\
0.95
\
'+ G_STRING.ID_EFFICIENCY_INDEX +'
\
\
\
\
1.3
\
'+ G_STRING.ID_INEFFICIENCY_COST +'
\
\
\
\
\
'; var generalDataLow = '
\
\ \
\
\
\
\
\
\
'; var generalDataGreat = '
\
\ \
\
\
\
\
\
\
'; var oType; var actualDashId; //fecha actual var date = new Date(); var dateMonth = date.getMonth(); var dateYear = date.getFullYear(); var dateActual = "01-"+(dateMonth+1)+"-"+dateYear; var dateActualEnd = "30-"+(dateMonth)+"-"+dateYear; function validaNull(val){ if(val === null || val == undefined || val == "?"){ val = "?"; } else { val = (parseFloat(val)).toFixed(2); } return val; }; function back(){ if(oType=="proEffic"){ var oID = $('.dashPro').attr("id"); var oIDs = oID.split('Item'); var id = oIDs[0]; var uid = oIDs[1]; if($('.proGreen').hasClass('panel-red')){ var comparative = -1; } else if($('.proRed').hasClass('panel-green')){ var comparative = +1; } proxy.peiData(uid, dateActual, dateActualEnd, function(dataIndicator){ indicatorsData(dataIndicator, "proEffic", uid, comparative ); }); } else if(oType == "userEffic"){ var oID = $('.dashUsr').attr("id"); var oIDs = oID.split('Item'); var id = oIDs[0]; var uid = oIDs[1]; if($('.proRed').hasClass('panel-red')){ var comparative = -1; } else if($('.proRed').hasClass('panel-green')){ var comparative = +1; } proxy.ueiData(uid, dateActual, dateActualEnd, function(dataIndicator){ indicatorsData(dataIndicator, "userEffic", uid, comparative); }); } }; /***** Adding Data by indicator *****/ function indicatorsData(dataIndicator, type, indUid, comparative){ $('#indicatorsDataGridStack').gridstack(); var gridIndicators = $('#indicatorsDataGridStack').data('gridstack'), widgetDetailDom; gridIndicators.remove_all(); var gridProcess = $('#relatedDataGridStack').data('gridstack'); gridProcess.remove_all(); oType = type; switch (type) { case 'proEffic': //Process Efficience Index case 'userEffic': var widget = proEfficDataGen; var widgetDetail = proEfficDetail; type = 'proEffic'; break; case 'generalGreat': var widget = generalDataGreat; var widgetDetail = ""; break; case 'generalLow': var widget = generalDataLow; var widgetDetail = ""; break; } //Drawing gridIndicators.add_widget($(widget), 0, 15, 20, 4.7, true); //General data if(oType == "proEffic" || oType == "userEffic"){ if(comparative<0){ $(document.getElementsByClassName("greenbg")).removeClass("greenbg").addClass("redbg"); $(document.getElementsByClassName("green")).removeClass("green").addClass("red"); } else if(comparative>=0) { $(document.getElementsByClassName("redbg")).removeClass("redbg").addClass("greenbg"); } } if (oType == "generalGreat" || oType == "generalLow") { document.getElementById("relatedLabel").innerHTML = ""; var graph1 = null; if (dataIndicator.graph1Type == '10') { generalBarParams1.graph.axisX.label = dataIndicator.graph1XLabel; generalBarParams1.graph.axisY.label = dataIndicator.graph1YLabel; graph1 = new BarChart(dataIndicator.graph1Data, generalBarParams1, null, null); } else { generalLineParams1.graph.axisX.label = dataIndicator.graph1XLabel; generalLineParams1.graph.axisY.label = dataIndicator.graph1YLabel; graph1 = new LineChart(dataIndicator.graph1Data, generalLineParams1, null, null); } graph1.drawChart(); var graph2 = null; if (dataIndicator.graph2Type == '10') { generalBarParams2.graph.axisX.label = dataIndicator.graph2XLabel; generalBarParams2.graph.axisY.label = dataIndicator.graph2YLabel; graph2 = new BarChart(dataIndicator.graph2Data, generalBarParams2, null, null); } else { generalLineParams2.graph.axisX.label = dataIndicator.graph2XLabel; generalLineParams2.graph.axisY.label = dataIndicator.graph2YLabel; graph2 = new LineChart(dataIndicator.graph2Data, generalLineParams2, null, null); } graph2.drawChart(); } //ProEffic or userEffic if(type == "proEffic" || type == "userEffic"){ var inValue = validaNull(dataIndicator.efficiencyIndex); var inCost = validaNull(dataIndicator.inefficiencyCost); document.getElementById(type+"Index").innerHTML = inValue; document.getElementById(type+"Cost").innerHTML = "$" +inCost; //first level draw if(oType == "proEffic") { document.getElementById("relatedLabel").innerHTML = "

"+ G_STRING.ID_RELATED_PROCESS +"

"; var graph = new Pie3DChart(dataIndicator.dataToDraw, peiParams, null, null); graph.drawChart(); } if(oType == "userEffic") { document.getElementById("relatedLabel").innerHTML = "

"+ G_STRING.ID_RELATED_GROUPS +"

"; var graph = new LineChart(dataIndicator.dataToDraw, ueiParams, null, null); graph.drawChart(); } //Data by process for (i in dataIndicator.data){ var proUid = dataIndicator.data[i].uid; var proDataName = dataIndicator.data[i].name; var proDataEfficiency = validaNull(dataIndicator.data[i].efficiencyIndex); var proDataEfficCost = validaNull(dataIndicator.data[i].inefficiencyCost); var x = 0; if(i % 2 == 0){ x = 6; } widgetDetailDom = $(widgetDetail); widgetDetailDom.attr('id', proUid); gridProcess.add_widget(widgetDetailDom, x, 15, 6, 2, true); if(comparative<0){ $(document.getElementsByClassName("green")).removeClass("green").addClass("blue"); } else if(comparative>=0){ //$(document.getElementsByClassName("blue")).removeClass("blue").addClass("green"); } if(proDataName.length>25){ proDataName = proDataName.substring( -25, 25 ); proDataName = proDataName+"..."; } //charging data by process //Process Title $("#procGreyTitle").attr('id', "procGreyTitle"+proUid);//changin the id document.getElementById("procGreyTitle"+proUid).innerHTML = ""+proDataName+""; //'+ G_STRING.ID_PRO_EFFICIENCY_INDEX +' $("#proIndex").attr('id', "proIndex"+proUid);//changin the id document.getElementById("proIndex"+proUid).innerHTML = proDataEfficiency; //Process Efficiency Cost $("#proCost").attr('id', "proCost"+proUid);//changin the id document.getElementById("proCost"+proUid).innerHTML = proDataEfficCost; widgetDetailDom.click(function(e){ var proid = $(this).attr("id"); var proname = $(this).find("#procGreyTitle"+proid).html(); var proindex = validaNull($(this).find("#proIndex"+proid).html()); var procost = validaNull($(this).find("#proCost"+proid).html()); gridIndicators.remove_all(); gridProcess.remove_all(); //Drawing gridIndicators.add_widget($(proEfficData), 0, 15, 20, 4.7, true); //General data of the process if(comparative < 0){ $(document.getElementsByClassName("greenbg")).removeClass("greenbg").addClass("redbg"); $(document.getElementsByClassName("green")).removeClass("green").addClass("red"); } else if(comparative > 0){ $(document.getElementsByClassName("redbg")).removeClass("redbg").addClass("greenbg"); //$(document.getElementsByClassName("red")).removeClass("red").addClass("green"); } //adding data //var name = $("#"+oType+"Span"+indUid).html(); document.getElementById(type+"Title").innerHTML = name; document.getElementById("proDetName").innerHTML = proname; document.getElementById(type+"Index").innerHTML = proindex; document.getElementById(type+"Cost").innerHTML = "$" +procost; //adding tasks if(oType == "proEffic"){ proxy.processTasksData(proid, dateActual, dateActualEnd, function(dataTasks){ tasksData(dataTasks, gridProcess, proid); hideScrollIfAllDivsAreVisible(); }); } else { proxy.userGroupData(proid, dateActual, dateActualEnd, function(dataTasks){ tasksData(dataTasks, gridProcess, proid); hideScrollIfAllDivsAreVisible(); }); } return false; }); } hideScrollIfAllDivsAreVisible(); } //Adding the data by process var name = $("#"+oType+"Span"+indUid).html(); document.getElementById(type+"Title").innerHTML = name; }; function tasksData(dataTasks, gridIndicators, proid){ var i = 0; if(oType == "proEffic"){ document.getElementById("relatedLabel").innerHTML = "

"+ G_STRING.ID_RELATED_TASKS +"

"; var graph = new LineChart(dataTasks.dataToDraw, peiDetailParams, null, null); graph.drawChart(); for (i in dataTasks.tasksData){ var taskUid = dataTasks.tasksData[i].uid; var taskName = dataTasks.tasksData[i].name; var taskEffic = validaNull(dataTasks.tasksData[i].efficienceIndex); var taskAverage = validaNull(dataTasks.tasksData[i].averageTime); var taskDeviation = validaNull(dataTasks.tasksData[i].deviationTime); var x = 0; if(i % 2 == 0){ x = 6; } var widgetDetailTaskDom = $(proEfficTaskDetail); widgetDetailTaskDom.attr('id', taskUid+"task"); gridIndicators.add_widget(widgetDetailTaskDom, x, 15, 6, 2, true);//Drawing the task if($('.proGreen').hasClass('panel-red')){ $(document.getElementsByClassName("greenbg")).removeClass("greenbg").addClass("redbg"); }else { $(document.getElementsByClassName("redbg")).removeClass("redbg").addClass("greenbg"); } if(taskName.length>55){ taskName = taskName.substring( -55, 55 ); taskName = taskName+"..."; } //Adding data to task //Task Title $("#taskName").attr('id', "taskName"+taskUid);//changin the id document.getElementById("taskName"+taskUid).innerHTML = taskName; //Task Efficiency Index $("#taskEffic").attr('id', "taskEffic"+taskUid);//changin the id document.getElementById("taskEffic"+taskUid).innerHTML = taskEffic; //Task Average $("#taskAver").attr('id', "taskAver"+taskUid);//changin the id document.getElementById("taskAver"+taskUid).innerHTML = taskAverage; //Task Deviation $("#taskDeviat").attr('id', "taskDeviat"+taskUid);//changin the id document.getElementById("taskDeviat"+taskUid).innerHTML = taskDeviation; } } else { document.getElementById("relatedLabel").innerHTML = "

"+ G_STRING.ID_RELATED_USERS +"

"; var graph = new LineChart(dataTasks.dataToDraw, ueiDetailParams, null, null); graph.drawChart(); for (i in dataTasks.tasksData){ var usrUid = dataTasks.tasksData[i].userUid; var usrName = dataTasks.tasksData[i].name; var usrEffic = validaNull(dataTasks.tasksData[i].efficiencyIndex); var usrCost = validaNull(dataTasks.tasksData[i].inefficiencyCost); var x = 0; if(i % 2 == 0){ x = 6; } var widgetDetailUsrDom = $(userTaskDetail); widgetDetailUsrDom.attr('id', usrUid+"task"); gridIndicators.add_widget(widgetDetailUsrDom, x, 15, 6, 2, true);//Drawing the task if($('.proRed').hasClass('panel-green')){ $(document.getElementsByClassName("redbg")).removeClass("redbg").addClass("greenbg"); } else{ $(document.getElementsByClassName("greenbg")).removeClass("greenbg").addClass("redbg"); } if(usrName.length>55){ usrName = usrName.substring( -55, 55 ); usrName = usrName+"..."; } //Adding data to task //Task Title $("#usrName").attr('id', "usrName"+usrUid);//changin the id document.getElementById("usrName"+usrUid).innerHTML = usrName; //Task Efficiency Index $("#usrEffic").attr('id', "usrEffic"+usrUid);//changin the id document.getElementById("usrEffic"+usrUid).innerHTML = usrEffic; //Task Deviation $("#usrCost").attr('id', "usrCost"+usrUid);//changin the id document.getElementById("usrCost"+usrUid).innerHTML = usrCost; } } }; function hideScrollIfAllDivsAreVisible(){ //For Debug: console.log('hidden ' + $('.hideme').length); if ($('.hideme').length <= 0) { $('#theImg').hide(); } else { $('#theImg').show(); } } $( document ).ready(function() { /* Show on scroll functionality... */ $(window).scroll( function() { /* Check the location of each desired element */ $('.hideme').each( function(i){ var bottom_of_object = $(this).offset().top + $(this).outerHeight(); var bottom_of_window = $(window).scrollTop() + $(window).height(); /* If the object is completely visible in the window, fade it in */ if (bottom_of_window + 100 > bottom_of_object) { $(this).animate({'opacity':'1'}, 500); $(this).removeClass('hideme'); } }); hideScrollIfAllDivsAreVisible(); }); if(dateMonth == 0){ document.getElementById('year').selectedIndex = 1; document.getElementById('mounth').selectedIndex = 11; }else{ document.getElementById('mounth').selectedIndex = dateMonth-1; } /*****calling the proxy*****/ function getDashboardProxy(type) { var ws = urlProxy.split('/'); if (type.toLowerCase()=='test') return new DashboardProxyTest(); if (type.toLowerCase()=='pro') return new DashboardProxy(token, urlProxy, ws[3]); }; proxy = getDashboardProxy('pro'); proxy.userDashboards(usrId, function(dataDashboards){ if(dataDashboards.length > 0){ dashboardsButtons(dataDashboards); }else{ $(".indicators").append("

"+ G_STRING.ID_GRID_PAGE_NO_DASHBOARD_MESSAGE +"

"); } }); /*********************************/ //ConfigurationObject objConfigDashboards = [ { "dashUid": "15115651654654", "favorite": 1, "indicators":[ { /*"indUid": "15115651654654", "indName": "Process Efficiency Index",*/ "id": "proEffic", "favorite": 1, "x": 0, "y": 6, "height": "50px", "width": "20px" }, { /*"indUid": "45165165165161", "indName": "Completed Cases",*/ "id": "compCases", "favorite": 0, "x": 6, "y": 6, "height": "50px", "width": "20px" } ] }, { "dashUid": "5645565165465", "favorite": 0, "indicators":[ { /*"indUid": "15115651654654", "indName": "Number Cases",*/ "id": "numCases", "favorite": 0, "x": 0, "y": 6, "height": "50px", "width": "20px" }, { /*"indUid": "45165165165161", "indName": "User Efficiency",*/ "id": "userEffic", "favorite": 1, "x": 4, "y": 6, "height": "50px", "width": "20px" }, { /*"indUid": "45165165165161", "indName": "Completed Cases",*/ "id": "compCases", "favorite": 0, "x": 8, "y": 6, "height": "50px", "width": "20px" } ] } ]; //When some item is moved $('.grid-stack').on('change', function (e, items) { var widgets = []; _.map($('.grid-stack .grid-stack-item:visible'), function (el) { el = $(el); var item = el.data('_gridstack_node'); var idWidGet = item.el[0].id.split('Item'); if(favorite == actualDashId){ favoriteData = 1; } else { favoriteData = 0; } if (typeof idWidGet[1] != "undefined") { var widgetsObj = { 'indicatorId': idWidGet[1], 'x': item.x, 'y': item.y, 'width': item.width, 'height': item.height <= 1 ? 2 : item.height } widgets.push(widgetsObj); } }); if (widgets.length != 0) { var dashboard = { 'dashId': actualDashId, 'dashFavorite': favoriteData, 'dashData': widgets } proxy.setPositionIndicator(dashboard); } }); /*****Adding Buttons*****/ function dashboardsButtons(dataDashboards){ for( i in dataDashboards){ var dashUid = dataDashboards[i].dashUid; var dashName = dataDashboards[i].dashName; var dashFavorite = dataDashboards[i].favorite; var domButton = $(dasButton); //adding a new button $( "#dasbuttons" ).append( domButton ); //adding the UID like the id of the tag. $("#dasB").attr('id', dashUid); $("#favorite").attr('id', dashUid+'fav'); if(dashName.length>20){ dashNameButton = dashName.substring( -20, 20 ); dashNameButton = dashNameButton+"..."; } else{ dashNameButton = dashName; } //addign the name document.getElementById(dashUid).innerHTML = dashNameButton; //if it is favorite adding the selected class if(dashFavorite == 1){ actualDashId = dashUid; favorite = actualDashId; document.getElementById("titleH4").innerHTML = dashName; $("#"+dashUid+"fav").addClass("selected"); //calling backend proxy.dashboardIndicators(dashUid, dateActual, dateActualEnd, function(widgetsObj) { indicators(widgetsObj); }); } domButton.find("#"+dashUid+"fav").click(function() { dashUid = $(this).siblings('.btn').attr("id"); favorite = dashUid; $(".selected").removeClass("selected"); $(this).addClass("selected"); //call backend to save the favorite selection var dashboard = { 'dashId': dashUid, 'dashFavorite': 1, 'dashData': '' } proxy.setPositionIndicator(dashboard); }); domButton.find("#"+dashUid).click(function() { var btnid = $(this).attr("id"); //first we have to get the divs empty $('#indicatorsGridStack').gridstack(); var gridDashboards = $('#indicatorsGridStack').data('gridstack'); gridDashboards.remove_all(); $('#indicatorsDataGridStack').gridstack(); var gridIndicators = $('#indicatorsDataGridStack').data('gridstack'); gridIndicators.remove_all(); //changing the Name of the Dashboard var btnName = $(this).html(); document.getElementById("titleH4").innerHTML = btnName; actualDashId = btnid; //calling backend proxy.dashboardIndicators(btnid, dateActual, dateActualEnd, function(widgetsObj) { indicators(widgetsObj); }); }); } }; /*****Adding the indicators*****/ function indicators (widgetsObj){ $('#indicatorsGridStack').gridstack(); serialization = GridStackUI.Utils.sort(widgetsObj); var grid = $('#indicatorsGridStack').data('gridstack'); //var width = 12 / widgetsObj.length; var i = 1; _.each(serialization, function (node) { if(node.x == 0){ var x = 12 - (12/i); }else { var x = node.x; } if(node.y == 0){ var y = 6; }else { var y = node.y; } if(node.height == 0){ node.height = 2; } if(node.width == 0){ node.width = 12 / widgetsObj.length; } node.comparative = validaNull(node.comparative); switch (node.id) { case "1010": //Process Efficience Index var widget = proEffic; var id = "proEffic"; break; case "1030": //Employee Efficience Index var widget = userEffic; var id = "userEffic"; break; case "1020": case "1040": case "1050": case "1060": case "1070": case "1080": var indexI = parseFloat(node.index); var comparativeI = parseFloat(node.comparative); var condition = (node.direction == "1")? (indexI <= comparativeI) : (indexI >= comparativeI); if(condition == true){ var widget = numCases; //Great var id = "generalGreat"; } else { var widget = compCases; //Low var id = "generalLow"; } break; } //var comparative = (parseFloat(node.comparative)).toFixed(2); var widgetDom = $(widget); //Dibujando grid.add_widget(widgetDom, x, y, node.width, node.height, true); //dibuja los elementos $("#"+id+"Item").attr('id', id+"Item"+node.indUid);//changin the id of the divs $("#"+id+"Div").attr('id', id+"Div"+node.indUid); $("#"+id+"Huge").attr('id', id+"Huge"+node.indUid); $("#"+id+"Small").attr('id', id+"Small"+node.indUid); $("#"+id+"M").attr('id', id+"M"+node.indUid); $("#"+id+"Span").attr('id', id+"Span"+node.indUid); if(id =="generalGreat" || id == "generalLow"){ $("#"+id).attr('id', id+node.indUid); } //Showing the data panels if is the favorite if(node.favorite == 1){ //changing the class if ($("#"+id+"M"+node.indUid).hasClass('panel-active')){ //nada }else{ //changing classes to show selection $(document.getElementsByClassName("panel-active")).removeClass("panel-active"); $("#"+id+"M"+node.indUid).addClass("panel-active"); } //Getting the data if(id == "proEffic"){ proxy.peiData(node.indUid, dateActual, dateActualEnd, function(dataIndicator){ indicatorsData(dataIndicator, "proEffic", node.indUid, node.comparative); hideScrollIfAllDivsAreVisible(); }); } else if (id == "userEffic" ){ proxy.ueiData(node.indUid, dateActual, dateActualEnd, function(dataIndicator){ indicatorsData(dataIndicator, "userEffic", node.indUid, node.comparative); hideScrollIfAllDivsAreVisible(); }); } else { proxy.generalIndicatorData(node.indUid, dateActual, dateActualEnd, function(dataIndicator){ var indexI = parseFloat(node.index); var comparativeI = parseFloat(node.comparative); var condition = (node.direction == "1")? (indexI <= comparativeI) : (indexI >= comparativeI); if(condition == true){ //this are percentages indicatorsData(dataIndicator, "generalGreat", node.indUid, node.comparative); hideScrollIfAllDivsAreVisible(); } else{ indicatorsData(dataIndicator, "generalLow", node.indUid, node.comparative); hideScrollIfAllDivsAreVisible(); } }); } } else { $("#"+id+"M"+node.indUid).removeClass("panel-active"); } //Animating the Indicators animateprogress(id, node.index, node.comparative, node.indName, node.indUid, node.direction); //inserta datos en cada elemento i++; hideScrollIfAllDivsAreVisible(); /********Changing the class when the indicator item is selected********/ widgetDom.click(function(){ var oID = $(this).attr("id"); if(oID != undefined && oID.indexOf('Item') != -1){ var comparative = 0; var oIDs = oID.split('Item'); var id = oIDs[0]; var uid = oIDs[1]; if($(this).children().hasClass('panel-red')){ var comparative = -1; } else if($(this).children().hasClass('panel-green')){ var comparative = +1; } /*if ($("#"+id+"M"+uid).hasClass('panel-active')){ //nada }else{*/ //changing classes to show selection $(document.getElementsByClassName("panel-active")).removeClass("panel-active"); $("#"+id+"M"+uid).addClass("panel-active"); //calling data of the indicator if(id == "proEffic"){ proxy.peiData(uid, dateActual, dateActualEnd, function(dataIndicator){ indicatorsData(dataIndicator, "proEffic", uid, comparative); hideScrollIfAllDivsAreVisible(); }); } else if (id == "userEffic" ){ proxy.ueiData(uid, dateActual, dateActualEnd, function(dataIndicator){ indicatorsData(dataIndicator, "userEffic", uid, comparative); hideScrollIfAllDivsAreVisible(); }); } else { proxy.generalIndicatorData(uid, dateActual, dateActualEnd, function(dataIndicator){ var index = $("#"+id+"Huge"+uid).html(); index = parseInt(index); var indexI = parseFloat(node.index); var comparativeI = parseFloat(node.comparative); var condition = (node.direction == "1")? (indexI <= comparativeI) : (indexI >= comparativeI); if(condition == true){ //this are percentages indicatorsData(dataIndicator, "generalGreat", uid, comparative); } else{ indicatorsData(dataIndicator, "generalLow", uid, comparative); } hideScrollIfAllDivsAreVisible(); }); } //} } }); }); }; $(".btn-compare").click(function(){ var yearComp = $( "#year option:selected" ).text(); var mounthComp = $( "#mounth option:selected" ).val(); dateActualEnd = "30-"+(mounthComp)+"-"+yearComp; //first we have to get the divs empty $('#indicatorsGridStack').gridstack(); var gridDashboards = $('#indicatorsGridStack').data('gridstack'); gridDashboards.remove_all(); $('#indicatorsDataGridStack').gridstack(); var gridIndicators = $('#indicatorsDataGridStack').data('gridstack'); gridIndicators.remove_all(); //For Debug: console.log(dateActualEnd); //calling backend proxy.dashboardIndicators(actualDashId, dateActual, dateActualEnd, function(widgetsObj) { indicators(widgetsObj); }); }); }); $(function () { var options = { cell_height: 75, vertical_margin: 12 }; $('.grid-stack').gridstack(options); });