%PDF- %PDF-
Direktori : /var/www/projetos/suporte.iigd.com.br/plugins/dashboard/front/metrics/ |
Current File : /var/www/projetos/suporte.iigd.com.br/plugins/dashboard/front/metrics/controlfrog-plugins.js |
/* * Author: Ben Goodyear * Version: 1.0 / 30.12.13 */ /* * R.A.G Charts * - Creates a R.A.G chart see http://controlfrog.hammer.dev/documentation.html#cfmodule-rag for details * * @param id String the id of the chart * @param data Array an array of values for the chart * @param labels Array an array of labels for the corresponding values * @param options Object a JSON options object * */ function RagChart(id, data, labels, options){ //console.log('rag chart',id,data,labels,options); var id = '#'+id; var rd = data; var rl = labels; var opts = (typeof options == undefined) ? {} : options; var rt = new Number; var rgaLength = new Number; var rda = []; var rga = ['m-green','m-amber','m-red']; var rgaLi = ''; this.init = function(){ if(opts && opts.rgaLength) { rgaLength = opts.rgaLength; rgaLi = 100/rgaLength; rgaLi = ' style="height:'+rgaLi+'%;"'; } else { rgaLength = 3; } // Calculate total for(var i=0; i<rgaLength; i++){ rt = rt + rd[i]; rda[i] = rd[i]; } // Calculate actual values for(var i=0; i<rgaLength; i++){ //rda[i] = rd[i]/rt * 100; rda[i] = rd[i]; } this.render(); }; this.update = function(nd){ // update chart values // Pass an array of new values. You must pass a complete data set. // If you want a value to remain the same pass 'null' in it's place // Merge new values with existing, null means no change var ud = []; for(var i=0; i<nd.length; i++){ if(nd[i] == null){ ud[i] = rd[i]; } else { ud[i] = nd[i]; } } rd = ud; rt = new Number; this.init(); }; this.render = function(){ // Generate the html for the chart var html = ''; if(opts && opts.type == 'figsOnly'){ html += this.renderFigs(); html += this.renderLabels(); } else{ html += this.renderBars(); html += this.renderFigs(); html += this.renderLabels(); } // Populate final html $(id).html(html); } this.renderBars = function(){ // Bar html var html = '<div class="cf-bars"><ul>'; for(i=0; i<rgaLength; i++){ if (Math.round(rda[i]/rt * 100) > 0) { ragDataLabel = '<span id="ragperc">'+Math.round(rda[i]/rt * 100)+'%</span>'; } else { ragDataLabel = ''; } if(opts && opts.customColor){ html += '<li style="height: '+rda[i]/rt * 100+'%"><div class="cf-bars-bar" style="background-color: '+opts.customColor[i]+';">'+ragDataLabel+'</div></li>'; } else { if(rga[i] == undefined){ var rgai = 'mb-missing'; } else { var rgai = rga[i]; } html += '<li style="height: '+rda[i]/rt * 100+'%"><div class="cf-bars-bar '+rgai+' mb">'+ragDataLabel+'</div></li>'; } } html += '</ul></div>'; return html; }; this.renderFigs = function(){ // Figure html var postfix = ''; if(opts && opts.postfix){ postfix = opts.postfix; } var typeC = ''; if(opts && opts.type == 'figsOnly'){ typeC = 'cf-figs-only'; } var html = '<div class="cf-figs '+typeC+'"><ul>'; for(i=0; i<rgaLength; i++){ if(opts && opts.customColor){ html += '<li'+rgaLi+'><div class="cf-figs-fig"><p style="color: '+opts.customColor[i]+';">'+rda[i].toFixed(0)+''+postfix+'</p></div></li>'; } else{ if(rga[i] == undefined){ var rgai = 'm-missing'; } else { var rgai = rga[i]; } html += '<li'+rgaLi+'><div class="cf-figs-fig '+rgai+'"><p>'+rda[i].toFixed(0)+''+postfix+'</p></div></li>'; } } html += '</ul></div>'; return html; } this.renderLabels = function(){ // Label html var typeC = ''; if(opts && opts.type == 'figsOnly'){ typeC = 'cf-txts-only'; } var html = '<div class="cf-txts '+typeC+'"><ul>'; for(i=0; i<rgaLength; i++){ if(opts && opts.customColor){ html += '<li'+rgaLi+'><div class="cf-txts-txt" style="color: '+opts.customColor[i]+';"><p>'+rl[i]+'</p></div></li>'; } else{ if(rga[i] == undefined){ var rgai = 'm-missing'; } else { var rgai = rga[i]; } html += '<li'+rgaLi+'><div class="cf-txts-txt '+rgai+'"><p>'+rl[i]+'</p></div></li>'; } } html += '</ul></div>'; return html; } // Initialise chart this.init(); } /* * Funnel Charts * - Creates a funnel chart see http://controlfrog.hammer.dev/documentation.html#cfmodule-funnel for details * * @param id String the id of the chart * @param data Array an array of values for the chart * @param labels Array an array of labels for the corresponding values * @param options Object a JSON options object * */function FunnelChart(id, data, labels, options){ //console.log('funnel chart', id, data, labels, options); var id = '#'+id; var fd = data; var fl = labels; var opts = (typeof options == undefined) ? {} : options; var fll = fd.length; var ft = fd[0]; var fdp =[]; var oi = 0.5/fll; var h = ''; this.init = function(){ // Calculate percentages for bars for(var i=0; i<fll; i++){ fdp[i] = fd[i]/ft * 100; if(fdp[i] < 1 && fdp[i] > 0){ fdp[i] = 1; } else { fdp[i] = Math.round(fdp[i]); } } // Custom colours if(opts && opts.customColors){ if(opts.customColors.length != fll && opts.customColors.length > 1){ for(var i=0; i<fll; i++){ if(!opts.customColors[i]){ opts.customColors[i] = '#f6f6f6'; } } } else { for(var i=0; i<fll; i++){ opts.customColors[i] = opts.customColors[0]; } } } // Make sure we fill in missing labels for(var i=0; i<fll; i++){ if(fl[i] == undefined ){ fl[i] = '-'; } } // Bar height h = 'height: '+(100/fll)+'%;'; this.render(); } this.update = function(nd){ // update chart values // Pass an array of new values. You must pass a complete data set. // If you want a value to remain the same pass 'null' in it's place // Merge new values with existing, null means no change var ud = []; for(var i=0; i<nd.length; i++){ if(nd[i] == null){ ud[i] = fd[i]; } else { ud[i] = nd[i]; } } fd = ud; ft = fd[0]; this.init(); } this.render = function(){ // Generate the html for the chart var html = ''; if(opts && opts.layout == 'right'){ html += this.renderFigs(); html += this.renderFunnel(); } else{ html += this.renderFunnel(); html += this.renderFigs(); } // Populate final html $(id).html(html); } this.renderFunnel = function(){ if(opts && opts.layout == 'right'){ fc = 'cf-funnels-right'; } else{ fc = 'cf-funnels-left'; } var html = '<div class="cf-funnels '+fc+'"><ul>'; for(var i=0; i<fll; i++){ if(opts && opts.barOpacity && opts.barOpacity != false){ os = 0.6+(i*oi); } else{ os = 1; } if(opts && opts.customColors){ html += '<li style="'+h+' width:'+fdp[i]+'%; opacity:'+os+'; background-color: '+opts.customColors[i]+'"></li>'; } else{ html += '<li class="m-green mb" style="'+h+' width:'+fdp[i]+'%; opacity:'+os+'"></li>'; } } html += '</ul></div>'; return html; } this.renderFigs = function(){ var html = '<div class="cf-figstxts"><ul>'; for(var i=0; i<fll; i++){ if(opts && opts.metricOpacity && opts.metricOpacity != false){ os = 0.6+(i*oi); } else{ os = 1; } if(opts && opts.customColors){ html += '<li style="'+h+'"><div><p class="metric" style="opacity:'+os+'; color:'+opts.customColors[i]+'">'+fd[i]+'</p><p class="fun-metric">'+fl[i]+'</p></div></li>'; } else{ html += '<li style="'+h+'"><div><p class="metric m-green mc" style="opacity:'+os+'">'+fd[i]+'</p><p class="fun-metric">'+fl[i]+'</p></div></li>'; } } html += '</ul></div>'; return html; } // Initialise chart this.init(); }