From 9e0056935f8f97c492ae2f06b2571e37b10144c6 Mon Sep 17 00:00:00 2001 From: quan Date: Wed, 28 Oct 2015 16:01:36 +0100 Subject: [PATCH] Update JS library 15.06-30-ga336756 Change-Id: I52a004f39c420c1c4226d8ce69358a98abbadd26 --- browser/data/metrics.json | 24 ++++++++++++++++++++++++ browser/its.html | 2 +- browser/lib/vizgrimoire.min.js | 26 +++++++++++++------------- browser/scm.html | 2 +- browser/scr.html | 2 +- 5 files changed, 40 insertions(+), 16 deletions(-) diff --git a/browser/data/metrics.json b/browser/data/metrics.json index 0542587b..fe333c8a 100644 --- a/browser/data/metrics.json +++ b/browser/data/metrics.json @@ -58,6 +58,12 @@ "name" : "Organziations", "desc" : "Number of organizations (companies, etc.) with persons active in the ticketing system" }, + "its_organizations" : { + "divid" : "its_organizations", + "column" : "organizations", + "name" : "Organziations", + "desc" : "Number of organizations (companies, etc.) with persons active in the ticketing system" + }, "its_countries" : { "divid" : "its_countries", "column" : "countries", @@ -118,6 +124,12 @@ "name" : "Organizations", "desc" : "Number of organizations (companies, etc.) with persons active in mailing list(s)" }, + "mls_organizations" : { + "divid" : "mls_organizations", + "column" : "organizations", + "name" : "Organizations", + "desc" : "Number of organizations (companies, etc.) with persons active in mailing list(s)" + }, "mls_countries" : { "divid" : "mls_countries", "column" : "countries", @@ -207,6 +219,12 @@ "name" : "Organizations", "desc" : "Number of organizations (companies, etc.) with persons active in changing code" }, + "scm_organizations" : { + "divid" : "scm_organizations", + "column" : "organizations", + "name" : "Organizations", + "desc" : "Number of organizations (companies, etc.) with persons active in changing code" + }, "scm_countries" : { "divid" : "scm_countries", "column" : "countries", @@ -312,6 +330,12 @@ "name" : "Organizations", "desc" : "Number of organizations (companies, etc.) with persons active in code review" }, + "scr_organizations" : { + "divid" : "scr_organizations", + "column" : "organizations", + "name" : "Organizations", + "desc" : "Number of organizations (companies, etc.) with persons active in code review" + }, "scr_countries" : { "divid" : "scr_countries", "column" : "countries", diff --git a/browser/its.html b/browser/its.html index d2e47791..42ad8d1c 100644 --- a/browser/its.html +++ b/browser/its.html @@ -113,7 +113,7 @@ + data-field="its_organizations"> diff --git a/browser/lib/vizgrimoire.min.js b/browser/lib/vizgrimoire.min.js index 1a0dc70e..42c21752 100644 --- a/browser/lib/vizgrimoire.min.js +++ b/browser/lib/vizgrimoire.min.js @@ -1,17 +1,17 @@ -(function(){var root=this;var previousUnderscore=root._;var breaker={};var ArrayProto=Array.prototype,ObjProto=Object.prototype,FuncProto=Function.prototype;var slice=ArrayProto.slice,unshift=ArrayProto.unshift,toString=ObjProto.toString,hasOwnProperty=ObjProto.hasOwnProperty;var nativeForEach=ArrayProto.forEach,nativeMap=ArrayProto.map,nativeReduce=ArrayProto.reduce,nativeReduceRight=ArrayProto.reduceRight,nativeFilter=ArrayProto.filter,nativeEvery=ArrayProto.every,nativeSome=ArrayProto.some,nativeIndexOf=ArrayProto.indexOf,nativeLastIndexOf=ArrayProto.lastIndexOf,nativeIsArray=Array.isArray,nativeKeys=Object.keys,nativeBind=FuncProto.bind;var _=function(obj){return new wrapper(obj)};if(typeof module!=="undefined"&&module.exports){module.exports=_;_._=_}else{root["_"]=_}_.VERSION="1.1.7";var each=_.each=_.forEach=function(obj,iterator,context){if(obj==null)return;if(nativeForEach&&obj.forEach===nativeForEach){obj.forEach(iterator,context)}else if(obj.length===+obj.length){for(var i=0,l=obj.length;i=result.computed&&(result={value:value,computed:computed})});return result.value};_.min=function(obj,iterator,context){if(!iterator&&_.isArray(obj))return Math.min.apply(Math,obj);var result={computed:Infinity};each(obj,function(value,index,list){var computed=iterator?iterator.call(context,value,index,list):value;computedb?1:0}),"value")};_.groupBy=function(obj,iterator){var result={};each(obj,function(value,index){var key=iterator(value,index);(result[key]||(result[key]=[])).push(value)});return result};_.sortedIndex=function(array,obj,iterator){iterator||(iterator=_.identity);var low=0,high=array.length;while(low>1;iterator(array[mid])=0})})};_.difference=function(array,other){return _.filter(array,function(value){return!_.include(other,value)})};_.zip=function(){var args=slice.call(arguments);var length=_.max(_.pluck(args,"length"));var results=new Array(length);for(var i=0;i=0;i--){args=[funcs[i].apply(this,args)]}return args[0]}};_.after=function(times,func){return function(){if(--times<1){return func.apply(this,arguments)}}};_.keys=nativeKeys||function(obj){if(obj!==Object(obj))throw new TypeError("Invalid object");var keys=[];for(var key in obj)if(hasOwnProperty.call(obj,key))keys[keys.length]=key;return keys};_.values=function(obj){return _.map(obj,_.identity)};_.functions=_.methods=function(obj){var names=[];for(var key in obj){if(_.isFunction(obj[key]))names.push(key)}return names.sort()};_.extend=function(obj){each(slice.call(arguments,1),function(source){for(var prop in source){if(source[prop]!==void 0)obj[prop]=source[prop]}});return obj};_.defaults=function(obj){each(slice.call(arguments,1),function(source){for(var prop in source){if(obj[prop]==null)obj[prop]=source[prop]}});return obj};_.clone=function(obj){return _.isArray(obj)?obj.slice():_.extend({},obj)};_.tap=function(obj,interceptor){interceptor(obj);return obj};_.isEqual=function(a,b){if(a===b)return true;var atype=typeof a,btype=typeof b;if(atype!=btype)return false;if(a==b)return true;if(!a&&b||a&&!b)return false;if(a._chain)a=a._wrapped;if(b._chain)b=b._wrapped;if(a.isEqual)return a.isEqual(b);if(b.isEqual)return b.isEqual(a);if(_.isDate(a)&&_.isDate(b))return a.getTime()===b.getTime();if(_.isNaN(a)&&_.isNaN(b))return false;if(_.isRegExp(a)&&_.isRegExp(b))return a.source===b.source&&a.global===b.global&&a.ignoreCase===b.ignoreCase&&a.multiline===b.multiline;if(atype!=="object")return false;if(a.length&&a.length!==b.length)return false;var aKeys=_.keys(a),bKeys=_.keys(b);if(aKeys.length!=bKeys.length)return false;for(var key in a)if(!(key in b)||!_.isEqual(a[key],b[key]))return false;return true};_.isEmpty=function(obj){if(_.isArray(obj)||_.isString(obj))return obj.length===0;for(var key in obj)if(hasOwnProperty.call(obj,key))return false;return true};_.isElement=function(obj){return!!(obj&&obj.nodeType==1)};_.isArray=nativeIsArray||function(obj){return toString.call(obj)==="[object Array]"};_.isObject=function(obj){return obj===Object(obj)};_.isArguments=function(obj){return!!(obj&&hasOwnProperty.call(obj,"callee"))};_.isFunction=function(obj){return!!(obj&&obj.constructor&&obj.call&&obj.apply)};_.isString=function(obj){return!!(obj===""||obj&&obj.charCodeAt&&obj.substr)};_.isNumber=function(obj){return!!(obj===0||obj&&obj.toExponential&&obj.toFixed)};_.isNaN=function(obj){return obj!==obj};_.isBoolean=function(obj){return obj===true||obj===false};_.isDate=function(obj){return!!(obj&&obj.getTimezoneOffset&&obj.setUTCFullYear)};_.isRegExp=function(obj){return!!(obj&&obj.test&&obj.exec&&(obj.ignoreCase||obj.ignoreCase===false))};_.isNull=function(obj){return obj===null};_.isUndefined=function(obj){return obj===void 0};_.noConflict=function(){root._=previousUnderscore;return this};_.identity=function(value){return value};_.times=function(n,iterator,context){for(var i=0;i/g,interpolate:/<%=([\s\S]+?)%>/g};_.template=function(str,data){var c=_.templateSettings;var tmpl="var __p=[],print=function(){__p.push.apply(__p,arguments);};"+"with(obj||{}){__p.push('"+str.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(c.interpolate,function(match,code){return"',"+code.replace(/\\'/g,"'")+",'"}).replace(c.evaluate||null,function(match,code){return"');"+code.replace(/\\'/g,"'").replace(/[\r\n\t]/g," ")+"__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');";var func=new Function("obj",tmpl);return data?func(data):func};var wrapper=function(obj){this._wrapped=obj};_.prototype=wrapper.prototype;var result=function(obj,chain){return chain?_(obj).chain():obj};var addToWrapper=function(name,func){wrapper.prototype[name]=function(){var args=slice.call(arguments);unshift.call(args,this._wrapped);return result(func.apply(_,args),this._chain)}};_.mixin(_);each(["pop","push","reverse","shift","sort","splice","unshift"],function(name){var method=ArrayProto[name];wrapper.prototype[name]=function(){method.apply(this._wrapped,arguments);return result(this._wrapped,this._chain)}});each(["concat","join","slice"],function(name){var method=ArrayProto[name];wrapper.prototype[name]=function(){return result(method.apply(this._wrapped,arguments),this._chain)}});wrapper.prototype.chain=function(){this._chain=true;return this};wrapper.prototype.value=function(){return this._wrapped}})();!function(name,context,definition){if(typeof module!=="undefined")module.exports=definition(name,context);else if(typeof define==="function"&&typeof define.amd==="object")define(definition);else context[name]=definition(name,context)}("bean",this,function(name,context){var win=window,old=context[name],overOut=/over|out/,namespaceRegex=/[^\.]*(?=\..*)\.|.*/,nameRegex=/\..*/,addEvent="addEventListener",attachEvent="attachEvent",removeEvent="removeEventListener",detachEvent="detachEvent",doc=document||{},root=doc.documentElement||{},W3C_MODEL=root[addEvent],eventSupport=W3C_MODEL?addEvent:attachEvent,slice=Array.prototype.slice,mouseTypeRegex=/click|mouse|menu|drag|drop/i,touchTypeRegex=/^touch|^gesture/i,ONE={one:1},nativeEvents=function(hash,events,i){for(i=0;i0){typeSpec=typeSpec.split(" ");for(i=typeSpec.length;i--;)remove(element,typeSpec[i],fn);return element}type=isString&&typeSpec.replace(nameRegex,"");if(type&&customEvents[type])type=customEvents[type].type;if(!typeSpec||isString){if(namespaces=isString&&typeSpec.replace(namespaceRegex,""))namespaces=namespaces.split(".");rm(element,type,fn,namespaces)}else if(typeof typeSpec==="function"){rm(element,null,typeSpec)}else{for(k in typeSpec){if(typeSpec.hasOwnProperty(k))remove(element,k,typeSpec[k])}}return element},add=function(element,events,fn,delfn,$){var type,types,i,args,originalFn=fn,isDel=fn&&typeof fn==="string";if(events&&!fn&&typeof events==="object"){for(type in events){if(events.hasOwnProperty(type))add.apply(this,[element,type,events[type]])}}else{args=arguments.length>3?slice.call(arguments,3):[];types=(isDel?fn:events).split(" ");isDel&&(fn=del(events,originalFn=delfn,$))&&(args=slice.call(args,1));this===ONE&&(fn=once(remove,element,events,fn,originalFn));for(i=types.length;i--;)addListener(element,types[i],fn,originalFn,args)}return element},one=function(){return add.apply(ONE,arguments)},fireListener=W3C_MODEL?function(isNative,type,element){var evt=doc.createEvent(isNative?"HTMLEvents":"UIEvents");evt[isNative?"initEvent":"initUIEvent"](type,true,true,win,1);element.dispatchEvent(evt)}:function(isNative,type,element){element=targetElement(element,isNative);isNative?element.fireEvent("on"+type,doc.createEventObject()):element["_on"+type]++},fire=function(element,type,args){var i,j,l,names,handlers,types=type.split(" ");for(i=types.length;i--;){type=types[i].replace(nameRegex,"");if(names=types[i].replace(namespaceRegex,""))names=names.split(".");if(!names&&!args&&element[eventSupport]){fireListener(nativeEvents[type],type,element)}else{handlers=registry.get(element,type);args=[false].concat(args);for(j=0,l=handlers.length;j1){while(total--&&value>=base)value/=base}else{sizes=fractionSizes;total=sizes.length;while(total--&&value<1)value*=base}return Math.round(value*precision)/precision+sizes[total]},getMagnitude:function(x){return Math.pow(10,Math.floor(Math.log(x)/Math.LN10))},toPixel:function(val){return Math.floor(val)+.5},toRad:function(angle){return-angle*(Math.PI/180)},floorInBase:function(n,base){return base*Math.floor(n/base)},drawText:function(ctx,text,x,y,style){if(!ctx.fillText){ctx.drawText(text,x,y,style);return}style=this._.extend({size:Flotr.defaultOptions.fontSize,color:"#000000",textAlign:"left",textBaseline:"bottom",weight:1,angle:0},style);ctx.save();ctx.translate(x,y);ctx.rotate(style.angle);ctx.fillStyle=style.color;ctx.font=(style.weight>1?"bold ":"")+style.size*1.3+"px sans-serif";ctx.textAlign=style.textAlign;ctx.textBaseline=style.textBaseline;ctx.fillText(text,0,0);ctx.restore()},getBestTextAlign:function(angle,style){style=style||{textAlign:"center",textBaseline:"middle"};angle+=Flotr.getTextAngleFromAlign(style);if(Math.abs(Math.cos(angle))>.01)style.textAlign=Math.cos(angle)>0?"right":"left";if(Math.abs(Math.sin(angle))>.01)style.textBaseline=Math.sin(angle)>0?"top":"bottom";return style},alignTable:{"right middle":0,"right top":Math.PI/4,"center top":Math.PI/2,"left top":3*(Math.PI/4),"left middle":Math.PI,"left bottom":-3*(Math.PI/4),"center bottom":-Math.PI/2,"right bottom":-Math.PI/4,"center middle":0},getTextAngleFromAlign:function(style){return Flotr.alignTable[style.textAlign+" "+style.textBaseline]||0},noConflict:function(){global.Flotr=previousFlotr;return this}};global.Flotr=Flotr})();Flotr.defaultOptions={colors:["#00A8F0","#C0D800","#CB4B4B","#4DA74D","#9440ED"],ieBackgroundColor:"#FFFFFF",title:null,subtitle:null,shadowSize:4,defaultType:null,HtmlText:true,fontColor:"#545454",fontSize:7.5,resolution:1,parseFloat:true,preventDefault:true,xaxis:{ticks:null,minorTicks:null,showLabels:true,showMinorLabels:false,labelsAngle:0,title:null,titleAngle:0,noTicks:5,minorTickFreq:null,tickFormatter:Flotr.defaultTickFormatter,tickDecimals:null,min:null,max:null,autoscale:false,autoscaleMargin:0,color:null,mode:"normal",timeFormat:null,timeMode:"UTC",timeUnit:"millisecond",scaling:"linear",base:Math.E,titleAlign:"center",margin:true},x2axis:{},yaxis:{ticks:null,minorTicks:null,showLabels:true,showMinorLabels:false,labelsAngle:0,title:null,titleAngle:90,noTicks:5,minorTickFreq:null,tickFormatter:Flotr.defaultTickFormatter,tickDecimals:null,min:null,max:null,autoscale:false,autoscaleMargin:0,color:null,scaling:"linear",base:Math.E,titleAlign:"center",margin:true},y2axis:{titleAngle:270},grid:{color:"#545454",backgroundColor:null,backgroundImage:null,watermarkAlpha:.4,tickColor:"#DDDDDD",labelMargin:3,verticalLines:true,minorVerticalLines:null,horizontalLines:true,minorHorizontalLines:null,outlineWidth:1,outline:"nsew",circular:false},mouse:{track:false,trackAll:false,position:"se",relative:false,trackFormatter:Flotr.defaultTrackFormatter,margin:5,lineColor:"#FF3F19",trackDecimals:1,sensibility:2,trackY:true,radius:3,fillColor:null,fillOpacity:.4}};(function(){var _=Flotr._;function Color(r,g,b,a){this.rgba=["r","g","b","a"];var x=4;while(-1<--x){this[this.rgba[x]]=arguments[x]||(x==3?1:0)}this.normalize()}var COLOR_NAMES={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]};Color.prototype={scale:function(rf,gf,bf,af){var x=4;while(-1<--x){if(!_.isUndefined(arguments[x]))this[this.rgba[x]]*=arguments[x]}return this.normalize()},alpha:function(alpha){if(!_.isUndefined(alpha)&&!_.isNull(alpha)){this.a=alpha}return this.normalize()},clone:function(){return new Color(this.r,this.b,this.g,this.a)},limit:function(val,minVal,maxVal){return Math.max(Math.min(val,maxVal),minVal) +(function(){var root=this;var previousUnderscore=root._;var breaker={};var ArrayProto=Array.prototype,ObjProto=Object.prototype,FuncProto=Function.prototype;var slice=ArrayProto.slice,unshift=ArrayProto.unshift,toString=ObjProto.toString,hasOwnProperty=ObjProto.hasOwnProperty;var nativeForEach=ArrayProto.forEach,nativeMap=ArrayProto.map,nativeReduce=ArrayProto.reduce,nativeReduceRight=ArrayProto.reduceRight,nativeFilter=ArrayProto.filter,nativeEvery=ArrayProto.every,nativeSome=ArrayProto.some,nativeIndexOf=ArrayProto.indexOf,nativeLastIndexOf=ArrayProto.lastIndexOf,nativeIsArray=Array.isArray,nativeKeys=Object.keys,nativeBind=FuncProto.bind;var _=function(obj){return new wrapper(obj)};if(typeof module!=="undefined"&&module.exports){module.exports=_;_._=_}else{root["_"]=_}_.VERSION="1.1.7";var each=_.each=_.forEach=function(obj,iterator,context){if(obj==null)return;if(nativeForEach&&obj.forEach===nativeForEach){obj.forEach(iterator,context)}else if(obj.length===+obj.length){for(var i=0,l=obj.length;i=result.computed&&(result={value:value,computed:computed})});return result.value};_.min=function(obj,iterator,context){if(!iterator&&_.isArray(obj))return Math.min.apply(Math,obj);var result={computed:Infinity};each(obj,function(value,index,list){var computed=iterator?iterator.call(context,value,index,list):value;computedb?1:0}),"value")};_.groupBy=function(obj,iterator){var result={};each(obj,function(value,index){var key=iterator(value,index);(result[key]||(result[key]=[])).push(value)});return result};_.sortedIndex=function(array,obj,iterator){iterator||(iterator=_.identity);var low=0,high=array.length;while(low>1;iterator(array[mid])=0})})};_.difference=function(array,other){return _.filter(array,function(value){return!_.include(other,value)})};_.zip=function(){var args=slice.call(arguments);var length=_.max(_.pluck(args,"length"));var results=new Array(length);for(var i=0;i=0;i--){args=[funcs[i].apply(this,args)]}return args[0]}};_.after=function(times,func){return function(){if(--times<1){return func.apply(this,arguments)}}};_.keys=nativeKeys||function(obj){if(obj!==Object(obj))throw new TypeError("Invalid object");var keys=[];for(var key in obj)if(hasOwnProperty.call(obj,key))keys[keys.length]=key;return keys};_.values=function(obj){return _.map(obj,_.identity)};_.functions=_.methods=function(obj){var names=[];for(var key in obj){if(_.isFunction(obj[key]))names.push(key)}return names.sort()};_.extend=function(obj){each(slice.call(arguments,1),function(source){for(var prop in source){if(source[prop]!==void 0)obj[prop]=source[prop]}});return obj};_.defaults=function(obj){each(slice.call(arguments,1),function(source){for(var prop in source){if(obj[prop]==null)obj[prop]=source[prop]}});return obj};_.clone=function(obj){return _.isArray(obj)?obj.slice():_.extend({},obj)};_.tap=function(obj,interceptor){interceptor(obj);return obj};_.isEqual=function(a,b){if(a===b)return true;var atype=typeof a,btype=typeof b;if(atype!=btype)return false;if(a==b)return true;if(!a&&b||a&&!b)return false;if(a._chain)a=a._wrapped;if(b._chain)b=b._wrapped;if(a.isEqual)return a.isEqual(b);if(b.isEqual)return b.isEqual(a);if(_.isDate(a)&&_.isDate(b))return a.getTime()===b.getTime();if(_.isNaN(a)&&_.isNaN(b))return false;if(_.isRegExp(a)&&_.isRegExp(b))return a.source===b.source&&a.global===b.global&&a.ignoreCase===b.ignoreCase&&a.multiline===b.multiline;if(atype!=="object")return false;if(a.length&&a.length!==b.length)return false;var aKeys=_.keys(a),bKeys=_.keys(b);if(aKeys.length!=bKeys.length)return false;for(var key in a)if(!(key in b)||!_.isEqual(a[key],b[key]))return false;return true};_.isEmpty=function(obj){if(_.isArray(obj)||_.isString(obj))return obj.length===0;for(var key in obj)if(hasOwnProperty.call(obj,key))return false;return true};_.isElement=function(obj){return!!(obj&&obj.nodeType==1)};_.isArray=nativeIsArray||function(obj){return toString.call(obj)==="[object Array]"};_.isObject=function(obj){return obj===Object(obj)};_.isArguments=function(obj){return!!(obj&&hasOwnProperty.call(obj,"callee"))};_.isFunction=function(obj){return!!(obj&&obj.constructor&&obj.call&&obj.apply)};_.isString=function(obj){return!!(obj===""||obj&&obj.charCodeAt&&obj.substr)};_.isNumber=function(obj){return!!(obj===0||obj&&obj.toExponential&&obj.toFixed)};_.isNaN=function(obj){return obj!==obj};_.isBoolean=function(obj){return obj===true||obj===false};_.isDate=function(obj){return!!(obj&&obj.getTimezoneOffset&&obj.setUTCFullYear)};_.isRegExp=function(obj){return!!(obj&&obj.test&&obj.exec&&(obj.ignoreCase||obj.ignoreCase===false))};_.isNull=function(obj){return obj===null};_.isUndefined=function(obj){return obj===void 0};_.noConflict=function(){root._=previousUnderscore;return this};_.identity=function(value){return value};_.times=function(n,iterator,context){for(var i=0;i/g,interpolate:/<%=([\s\S]+?)%>/g};_.template=function(str,data){var c=_.templateSettings;var tmpl="var __p=[],print=function(){__p.push.apply(__p,arguments);};"+"with(obj||{}){__p.push('"+str.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(c.interpolate,function(match,code){return"',"+code.replace(/\\'/g,"'")+",'"}).replace(c.evaluate||null,function(match,code){return"');"+code.replace(/\\'/g,"'").replace(/[\r\n\t]/g," ")+"__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');";var func=new Function("obj",tmpl);return data?func(data):func};var wrapper=function(obj){this._wrapped=obj};_.prototype=wrapper.prototype;var result=function(obj,chain){return chain?_(obj).chain():obj};var addToWrapper=function(name,func){wrapper.prototype[name]=function(){var args=slice.call(arguments);unshift.call(args,this._wrapped);return result(func.apply(_,args),this._chain)}};_.mixin(_);each(["pop","push","reverse","shift","sort","splice","unshift"],function(name){var method=ArrayProto[name];wrapper.prototype[name]=function(){method.apply(this._wrapped,arguments);return result(this._wrapped,this._chain)}});each(["concat","join","slice"],function(name){var method=ArrayProto[name];wrapper.prototype[name]=function(){return result(method.apply(this._wrapped,arguments),this._chain)}});wrapper.prototype.chain=function(){this._chain=true;return this};wrapper.prototype.value=function(){return this._wrapped}})();!function(name,context,definition){if(typeof module!=="undefined")module.exports=definition(name,context);else if(typeof define==="function"&&typeof define.amd==="object")define(definition);else context[name]=definition(name,context)}("bean",this,function(name,context){var win=window,old=context[name],overOut=/over|out/,namespaceRegex=/[^\.]*(?=\..*)\.|.*/,nameRegex=/\..*/,addEvent="addEventListener",attachEvent="attachEvent",removeEvent="removeEventListener",detachEvent="detachEvent",doc=document||{},root=doc.documentElement||{},W3C_MODEL=root[addEvent],eventSupport=W3C_MODEL?addEvent:attachEvent,slice=Array.prototype.slice,mouseTypeRegex=/click|mouse|menu|drag|drop/i,touchTypeRegex=/^touch|^gesture/i,ONE={one:1},nativeEvents=function(hash,events,i){for(i=0;i0){typeSpec=typeSpec.split(" ");for(i=typeSpec.length;i--;)remove(element,typeSpec[i],fn);return element}type=isString&&typeSpec.replace(nameRegex,"");if(type&&customEvents[type])type=customEvents[type].type;if(!typeSpec||isString){if(namespaces=isString&&typeSpec.replace(namespaceRegex,""))namespaces=namespaces.split(".");rm(element,type,fn,namespaces)}else if(typeof typeSpec==="function"){rm(element,null,typeSpec)}else{for(k in typeSpec){if(typeSpec.hasOwnProperty(k))remove(element,k,typeSpec[k])}}return element},add=function(element,events,fn,delfn,$){var type,types,i,args,originalFn=fn,isDel=fn&&typeof fn==="string";if(events&&!fn&&typeof events==="object"){for(type in events){if(events.hasOwnProperty(type))add.apply(this,[element,type,events[type]])}}else{args=arguments.length>3?slice.call(arguments,3):[];types=(isDel?fn:events).split(" ");isDel&&(fn=del(events,originalFn=delfn,$))&&(args=slice.call(args,1));this===ONE&&(fn=once(remove,element,events,fn,originalFn));for(i=types.length;i--;)addListener(element,types[i],fn,originalFn,args)}return element},one=function(){return add.apply(ONE,arguments)},fireListener=W3C_MODEL?function(isNative,type,element){var evt=doc.createEvent(isNative?"HTMLEvents":"UIEvents");evt[isNative?"initEvent":"initUIEvent"](type,true,true,win,1);element.dispatchEvent(evt)}:function(isNative,type,element){element=targetElement(element,isNative);isNative?element.fireEvent("on"+type,doc.createEventObject()):element["_on"+type]++},fire=function(element,type,args){var i,j,l,names,handlers,types=type.split(" ");for(i=types.length;i--;){type=types[i].replace(nameRegex,"");if(names=types[i].replace(namespaceRegex,""))names=names.split(".");if(!names&&!args&&element[eventSupport]){fireListener(nativeEvents[type],type,element)}else{handlers=registry.get(element,type);args=[false].concat(args);for(j=0,l=handlers.length;j1){while(total--&&value>=base)value/=base}else{sizes=fractionSizes;total=sizes.length;while(total--&&value<1)value*=base}return Math.round(value*precision)/precision+sizes[total]},getMagnitude:function(x){return Math.pow(10,Math.floor(Math.log(x)/Math.LN10))},toPixel:function(val){return Math.floor(val)+.5},toRad:function(angle){return-angle*(Math.PI/180)},floorInBase:function(n,base){return base*Math.floor(n/base)},drawText:function(ctx,text,x,y,style){if(!ctx.fillText){ctx.drawText(text,x,y,style);return}style=this._.extend({size:Flotr.defaultOptions.fontSize,color:"#000000",textAlign:"left",textBaseline:"bottom",weight:1,angle:0},style);ctx.save();ctx.translate(x,y);ctx.rotate(style.angle);ctx.fillStyle=style.color;ctx.font=(style.weight>1?"bold ":"")+style.size*1.3+"px sans-serif";ctx.textAlign=style.textAlign;ctx.textBaseline=style.textBaseline;ctx.fillText(text,0,0);ctx.restore()},getBestTextAlign:function(angle,style){style=style||{textAlign:"center",textBaseline:"middle"};angle+=Flotr.getTextAngleFromAlign(style);if(Math.abs(Math.cos(angle))>.01)style.textAlign=Math.cos(angle)>0?"right":"left";if(Math.abs(Math.sin(angle))>.01)style.textBaseline=Math.sin(angle)>0?"top":"bottom";return style},alignTable:{"right middle":0,"right top":Math.PI/4,"center top":Math.PI/2,"left top":3*(Math.PI/4),"left middle":Math.PI,"left bottom":-3*(Math.PI/4),"center bottom":-Math.PI/2,"right bottom":-Math.PI/4,"center middle":0},getTextAngleFromAlign:function(style){return Flotr.alignTable[style.textAlign+" "+style.textBaseline]||0},noConflict:function(){global.Flotr=previousFlotr;return this}};global.Flotr=Flotr})();Flotr.defaultOptions={colors:["#00A8F0","#C0D800","#CB4B4B","#4DA74D","#9440ED"],ieBackgroundColor:"#FFFFFF",title:null,subtitle:null,shadowSize:4,defaultType:null,HtmlText:true,fontColor:"#545454",fontSize:7.5,resolution:1,parseFloat:true,preventDefault:true,xaxis:{ticks:null,minorTicks:null,showLabels:true,showMinorLabels:false,labelsAngle:0,title:null,titleAngle:0,noTicks:5,minorTickFreq:null,tickFormatter:Flotr.defaultTickFormatter,tickDecimals:null,min:null,max:null,autoscale:false,autoscaleMargin:0,color:null,mode:"normal",timeFormat:null,timeMode:"UTC",timeUnit:"millisecond",scaling:"linear",base:Math.E,titleAlign:"center",margin:true},x2axis:{},yaxis:{ticks:null,minorTicks:null,showLabels:true,showMinorLabels:false,labelsAngle:0,title:null,titleAngle:90,noTicks:5,minorTickFreq:null,tickFormatter:Flotr.defaultTickFormatter,tickDecimals:null,min:null,max:null,autoscale:false,autoscaleMargin:0,color:null,scaling:"linear",base:Math.E,titleAlign:"center",margin:true},y2axis:{titleAngle:270},grid:{color:"#545454",backgroundColor:null,backgroundImage:null,watermarkAlpha:.4,tickColor:"#DDDDDD",labelMargin:3,verticalLines:true,minorVerticalLines:null,horizontalLines:true,minorHorizontalLines:null,outlineWidth:1,outline:"nsew",circular:false},mouse:{track:false,trackAll:false,position:"se",relative:false,trackFormatter:Flotr.defaultTrackFormatter,margin:5,lineColor:"#FF3F19",trackDecimals:1,sensibility:2,trackY:true,radius:3,fillColor:null,fillOpacity:.4}};(function(){var _=Flotr._;function Color(r,g,b,a){this.rgba=["r","g","b","a"];var x=4;while(-1<--x){this[this.rgba[x]]=arguments[x]||(x==3?1:0)}this.normalize()}var COLOR_NAMES={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]};Color.prototype={scale:function(rf,gf,bf,af){var x=4;while(-1<--x){if(!_.isUndefined(arguments[x]))this[this.rgba[x]]*=arguments[x]}return this.normalize()},alpha:function(alpha){if(!_.isUndefined(alpha)&&!_.isNull(alpha)){this.a=alpha}return this.normalize()},clone:function(){return new Color(this.r,this.b,this.g,this.a)},limit:function(val,minVal,maxVal){return Math.max(Math.min(val,maxVal),minVal); },normalize:function(){var limit=this.limit;this.r=limit(parseInt(this.r,10),0,255);this.g=limit(parseInt(this.g,10),0,255);this.b=limit(parseInt(this.b,10),0,255);this.a=limit(this.a,0,1);return this},distance:function(color){if(!color)return;color=new Color.parse(color);var dist=0,x=3;while(-1<--x){dist+=Math.abs(this[this.rgba[x]]-color[this.rgba[x]])}return dist},toString:function(){return this.a>=1?"rgb("+[this.r,this.g,this.b].join(",")+")":"rgba("+[this.r,this.g,this.b,this.a].join(",")+")"},contrast:function(){var test=1-(.299*this.r+.587*this.g+.114*this.b)/255;return test<.5?"#000000":"#ffffff"}};_.extend(Color,{parse:function(color){if(color instanceof Color)return color;var result;if(result=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color))return new Color(parseInt(result[1],16),parseInt(result[2],16),parseInt(result[3],16));if(result=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color))return new Color(parseInt(result[1],10),parseInt(result[2],10),parseInt(result[3],10));if(result=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color))return new Color(parseInt(result[1]+result[1],16),parseInt(result[2]+result[2],16),parseInt(result[3]+result[3],16));if(result=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(color))return new Color(parseInt(result[1],10),parseInt(result[2],10),parseInt(result[3],10),parseFloat(result[4]));if(result=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color))return new Color(parseFloat(result[1])*2.55,parseFloat(result[2])*2.55,parseFloat(result[3])*2.55);if(result=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(color))return new Color(parseFloat(result[1])*2.55,parseFloat(result[2])*2.55,parseFloat(result[3])*2.55,parseFloat(result[4]));var name=(color+"").replace(/^\s*([\S\s]*?)\s*$/,"$1").toLowerCase();if(name=="transparent"){return new Color(255,255,255,0)}return(result=COLOR_NAMES[name])?new Color(result[0],result[1],result[2]):new Color(0,0,0,0)},processColor:function(color,options){var opacity=options.opacity;if(!color)return"rgba(0, 0, 0, 0)";if(color instanceof Color)return color.alpha(opacity).toString();if(_.isString(color))return Color.parse(color).alpha(opacity).toString();var grad=color.colors?color:{colors:color};if(!options.ctx){if(!_.isArray(grad.colors))return"rgba(0, 0, 0, 0)";return Color.parse(_.isArray(grad.colors[0])?grad.colors[0][1]:grad.colors[0]).alpha(opacity).toString()}grad=_.extend({start:"top",end:"bottom"},grad);if(/top/i.test(grad.start))options.x1=0;if(/left/i.test(grad.start))options.y1=0;if(/bottom/i.test(grad.end))options.x2=0;if(/right/i.test(grad.end))options.y2=0;var i,c,stop,gradient=options.ctx.createLinearGradient(options.x1,options.y1,options.x2,options.y2);for(i=0;i=tickSize)break}tickSize=spec[i][0];tickUnit=spec[i][1];if(tickUnit=="year"){tickSize=Flotr.getTickSize(options.noTicks*timeUnits.year,min,max,0);if(tickSize==.5){tickUnit="month";tickSize=6}}axis.tickUnit=tickUnit;axis.tickSize=tickSize;var step=tickSize*timeUnits[tickUnit];d=new Date(min);function setTick(name){set(d,name,mode,Flotr.floorInBase(get(d,name,mode),tickSize))}switch(tickUnit){case"millisecond":setTick("Milliseconds");break;case"second":setTick("Seconds");break;case"minute":setTick("Minutes");break;case"hour":setTick("Hours");break;case"month":setTick("Month");break;case"year":setTick("FullYear");break}if(step>=timeUnits.second)set(d,"Milliseconds",mode,0);if(step>=timeUnits.minute)set(d,"Seconds",mode,0);if(step>=timeUnits.hour)set(d,"Minutes",mode,0);if(step>=timeUnits.day)set(d,"Hours",mode,0);if(step>=timeUnits.day*4)set(d,"Date",mode,1);if(step>=timeUnits.year)set(d,"Month",mode,0);var carry=0,v=NaN,prev;do{prev=v;v=d.getTime();ticks.push({v:v/scale,label:formatter(v/scale,axis)});if(tickUnit=="month"){if(tickSize<1){set(d,"Date",mode,1);var start=d.getTime();set(d,"Month",mode,get(d,"Month",mode)+1);var end=d.getTime();d.setTime(v+carry*timeUnits.hour+(end-start)*tickSize);carry=get(d,"Hours",mode);set(d,"Hours",mode,0)}else set(d,"Month",mode,get(d,"Month",mode)+tickSize)}else if(tickUnit=="year"){set(d,"FullYear",mode,get(d,"FullYear",mode)+tickSize)}else d.setTime(v+step)}while(v0){return{x:e.touches[0].pageX,y:e.touches[0].pageY}}else if(!F._.isUndefined(e.changedTouches)&&e.changedTouches.length>0){return{x:e.changedTouches[0].pageX,y:e.changedTouches[0].pageY}}else if(e.pageX||e.pageY){return{x:e.pageX,y:e.pageY}}else if(e.clientX||e.clientY){var d=document,b=d.body,de=d.documentElement;return{x:e.clientX+b.scrollLeft+de.scrollLeft,y:e.clientY+b.scrollTop+de.scrollTop}}}}})();(function(){var D=Flotr.DOM,E=Flotr.EventAdapter,_=Flotr._,flotr=Flotr;Graph=function(el,data,options){this._setEl(el);this._initMembers();this._initPlugins();E.fire(this.el,"flotr:beforeinit",[this]);this.data=data;this.series=flotr.Series.getSeries(data);this._initOptions(options);this._initGraphTypes();this._initCanvas();this._text=new flotr.Text({element:this.el,ctx:this.ctx,html:this.options.HtmlText,textEnabled:this.textEnabled});E.fire(this.el,"flotr:afterconstruct",[this]);this._initEvents();this.findDataRanges();this.calculateSpacing();this.draw(_.bind(function(){E.fire(this.el,"flotr:afterinit",[this])},this))};function observe(object,name,callback){E.observe.apply(this,arguments);this._handles.push(arguments);return this}Graph.prototype={destroy:function(){E.fire(this.el,"flotr:destroy");_.each(this._handles,function(handle){E.stopObserving.apply(this,handle)});this._handles=[];this.el.graph=null},observe:observe,_observe:observe,processColor:function(color,options){var o={x1:0,y1:0,x2:this.plotWidth,y2:this.plotHeight,opacity:1,ctx:this.ctx};_.extend(o,options);return flotr.Color.processColor(color,o)},findDataRanges:function(){var a=this.axes,xaxis,yaxis,range;_.each(this.series,function(series){range=series.getRange();if(range){xaxis=series.xaxis;yaxis=series.yaxis;xaxis.datamin=Math.min(range.xmin,xaxis.datamin);xaxis.datamax=Math.max(range.xmax,xaxis.datamax);yaxis.datamin=Math.min(range.ymin,yaxis.datamin);yaxis.datamax=Math.max(range.ymax,yaxis.datamax);xaxis.used=xaxis.used||range.xused;yaxis.used=yaxis.used||range.yused}},this);if(!a.x.used&&!a.x2.used)a.x.used=true;if(!a.y.used&&!a.y2.used)a.y.used=true;_.each(a,function(axis){axis.calculateRange()});var types=_.keys(flotr.graphTypes),drawn=false;_.each(this.series,function(series){if(series.hide)return;_.each(types,function(type){if(series[type]&&series[type].show){this.extendRange(type,series);drawn=true}},this);if(!drawn){this.extendRange(this.options.defaultType,series)}},this)},extendRange:function(type,series){if(this[type].extendRange)this[type].extendRange(series,series.data,series[type],this[type]);if(this[type].extendYRange)this[type].extendYRange(series.yaxis,series.data,series[type],this[type]);if(this[type].extendXRange)this[type].extendXRange(series.xaxis,series.data,series[type],this[type])},calculateSpacing:function(){var a=this.axes,options=this.options,series=this.series,margin=options.grid.labelMargin,T=this._text,x=a.x,x2=a.x2,y=a.y,y2=a.y2,maxOutset=options.grid.outlineWidth,i,j,l,dim;_.each(a,function(axis){axis.calculateTicks();axis.calculateTextDimensions(T,options)});dim=T.dimensions(options.title,{size:options.fontSize*1.5},"font-size:1em;font-weight:bold;","flotr-title");this.titleHeight=dim.height;dim=T.dimensions(options.subtitle,{size:options.fontSize},"font-size:smaller;","flotr-subtitle");this.subtitleHeight=dim.height;for(j=0;j1){this.multitouches=e.touches}E.fire(el,"flotr:mousedown",[event,this]);this.observe(document,"touchend",touchendHandler)},this));this.observe(this.overlay,"touchmove",_.bind(function(e){var pos=this.getEventPosition(e);if(this.options.preventDefault){e.preventDefault()}movement=true;if(this.multitouches||e.touches&&e.touches.length>1){this.multitouches=e.touches}else{if(!touchend){E.fire(el,"flotr:mousemove",[event,pos,this])}}this.lastMousePos=pos},this))}else{this.observe(this.overlay,"mousedown",_.bind(this.mouseDownHandler,this)).observe(el,"mousemove",_.bind(this.mouseMoveHandler,this)).observe(this.overlay,"click",_.bind(this.clickHandler,this)).observe(el,"mouseout",function(e){E.fire(el,"flotr:mouseout",e)})}},_initCanvas:function(){var el=this.el,o=this.options,children=el.children,removedChildren=[],child,i,size,style;for(i=children.length;i--;){child=children[i];if(!this.canvas&&child.className==="flotr-canvas"){this.canvas=child}else if(!this.overlay&&child.className==="flotr-overlay"){this.overlay=child}else{removedChildren.push(child)}}for(i=removedChildren.length;i--;){el.removeChild(removedChildren[i])}D.setStyles(el,{position:"relative"});size={};size.width=el.clientWidth;size.height=el.clientHeight;if(size.width<=0||size.height<=0||o.resolution<=0){throw"Invalid dimensions for plot, width = "+size.width+", height = "+size.height+", resolution = "+o.resolution}this.canvas=getCanvas(this.canvas,"canvas");this.overlay=getCanvas(this.overlay,"overlay");this.ctx=getContext(this.canvas);this.ctx.clearRect(0,0,this.canvas.width,this.canvas.height);this.octx=getContext(this.overlay);this.octx.clearRect(0,0,this.overlay.width,this.overlay.height);this.canvasHeight=size.height;this.canvasWidth=size.width;this.textEnabled=!!this.ctx.drawText||!!this.ctx.fillText;function getCanvas(canvas,name){if(!canvas){canvas=D.create("canvas");if(typeof FlashCanvas!="undefined"&&typeof canvas.getContext==="function"){FlashCanvas.initElement(canvas);this.isFlashCanvas=true}canvas.className="flotr-"+name;canvas.style.cssText="position:absolute;left:0px;top:0px;";D.insert(el,canvas)}_.each(size,function(size,attribute){D.show(canvas);if(name=="canvas"&&canvas.getAttribute(attribute)===size){return}canvas.setAttribute(attribute,size*o.resolution);canvas.style[attribute]=size+"px"});canvas.context_=null;return canvas}function getContext(canvas){if(window.G_vmlCanvasManager)window.G_vmlCanvasManager.initElement(canvas);var context=canvas.getContext("2d");if(!window.G_vmlCanvasManager)context.scale(o.resolution,o.resolution);return context}},_initPlugins:function(){_.each(flotr.plugins,function(plugin,name){_.each(plugin.callbacks,function(fn,c){this.observe(this.el,c,_.bind(fn,this))},this);this[name]=flotr.clone(plugin);_.each(this[name],function(fn,p){if(_.isFunction(fn))this[name][p]=_.bind(fn,this)},this)},this)},_initOptions:function(opts){var options=flotr.clone(flotr.defaultOptions);options.x2axis=_.extend(_.clone(options.xaxis),options.x2axis);options.y2axis=_.extend(_.clone(options.yaxis),options.y2axis);this.options=flotr.merge(opts||{},options);if(this.options.grid.minorVerticalLines===null&&this.options.xaxis.scaling==="logarithmic"){this.options.grid.minorVerticalLines=true}if(this.options.grid.minorHorizontalLines===null&&this.options.yaxis.scaling==="logarithmic"){this.options.grid.minorHorizontalLines=true}E.fire(this.el,"flotr:afterinitoptions",[this]);this.axes=flotr.Axis.getAxes(this.options);var assignedColors=[],colors=[],ln=this.series.length,neededColors=this.series.length,oc=this.options.colors,usedColors=[],variation=0,c,i,j,s;for(i=neededColors-1;i>-1;--i){c=this.series[i].color;if(c){--neededColors;if(_.isNumber(c))assignedColors.push(c);else usedColors.push(flotr.Color.parse(c))}}for(i=assignedColors.length-1;i>-1;--i)neededColors=Math.max(neededColors,assignedColors[i]+1);for(i=0;colors.length=oc.length){i=0;++variation}}for(i=0,j=0;i10)o.minorTickFreq=0;else if(maxexp-minexp>5)o.minorTickFreq=2;else o.minorTickFreq=5}}else{axis.tickSize=Flotr.getTickSize(o.noTicks,min,max,o.tickDecimals)}axis.min=min;axis.max=max;if(o.min===null&&o.autoscale){axis.min-=axis.tickSize*margin;if(axis.min<0&&axis.datamin>=0)axis.min=0;axis.min=axis.tickSize*Math.floor(axis.min/axis.tickSize)}if(o.max===null&&o.autoscale){axis.max+=axis.tickSize*margin;if(axis.max>0&&axis.datamax<=0&&axis.datamax!=axis.datamin)axis.max=0;axis.max=axis.tickSize*Math.ceil(axis.max/axis.tickSize)}if(axis.min==axis.max)axis.max=axis.min+1},calculateTextDimensions:function(T,options){var maxLabel="",length,i;if(this.options.showLabels){for(i=0;imaxLabel.length){maxLabel=this.ticks[i].label}}}this.maxLabel=T.dimensions(maxLabel,{size:options.fontSize,angle:Flotr.toRad(this.options.labelsAngle)},"font-size:smaller;","flotr-grid-label");this.titleSize=T.dimensions(this.options.title,{size:options.fontSize*1.2,angle:Flotr.toRad(this.options.titleAngle)},"font-weight:bold;","flotr-axis-title")},_cleanUserTicks:function(ticks,axisTicks){var axis=this,options=this.options,v,i,label,tick;if(_.isFunction(ticks))ticks=ticks({min:axis.min,max:axis.max});for(i=0;i1?tick[1]:options.tickFormatter(v,{min:axis.min,max:axis.max})}else{v=tick;label=options.tickFormatter(v,{min:this.min,max:this.max})}axisTicks[i]={v:v,label:label}}},_calculateTimeTicks:function(){this.ticks=Flotr.Date.generator(this)},_calculateLogTicks:function(){var axis=this,o=axis.options,v,decadeStart;var max=Math.log(axis.max);if(o.base!=Math.E)max/=Math.log(o.base);max=Math.ceil(max);var min=Math.log(axis.min);if(o.base!=Math.E)min/=Math.log(o.base);min=Math.ceil(min);for(i=min;ixmax){xmax=x;xused=true}}if(y!==null){if(yymax){ymax=y;yused=true}}}return{xmin:xmin,xmax:xmax,ymin:ymin,ymax:ymax,xused:xused,yused:yused}}};_.extend(Series,{getSeries:function(data){return _.map(data,function(s){var series;if(s.data){series=new Series;_.extend(series,s)}else{series=new Series({data:s})}return series})}});Flotr.Series=Series})();(function(){var F=Flotr,D=F.DOM,_=F._,Text=function(o){this.o=o};Text.prototype={dimensions:function(text,canvasStyle,htmlStyle,className){if(!text)return{width:0,height:0};return this.o.html?this.html(text,this.o.element,htmlStyle,className):this.canvas(text,canvasStyle)},canvas:function(text,style){if(!this.o.textEnabled)return;style=style||{};var metrics=this.measureText(text,style),width=metrics.width,height=style.size||F.defaultOptions.fontSize,angle=style.angle||0,cosAngle=Math.cos(angle),sinAngle=Math.sin(angle),widthPadding=2,heightPadding=6,bounds;bounds={width:Math.abs(cosAngle*width)+Math.abs(sinAngle*height)+widthPadding,height:Math.abs(sinAngle*width)+Math.abs(cosAngle*height)+heightPadding};return bounds},html:function(text,element,style,className){var div=D.create("div");D.setStyles(div,{position:"absolute",top:"-100000px"});D.insert(div,'
'+text+"
"); D.insert(this.o.element,div);return D.size(div)},measureText:function(text,style){var context=this.o.ctx,metrics;if(!context.fillText||F.isIphone&&context.measure){return{width:context.measure(text,style)}}style=_.extend({size:F.defaultOptions.fontSize,weight:1,angle:0},style);context.save();context.font=(style.weight>1?"bold ":"")+style.size*1.3+"px sans-serif";metrics=context.measureText(text);context.restore();return metrics}};Flotr.Text=Text})();Flotr.addType("lines",{options:{show:false,lineWidth:2,fill:false,fillBorder:false,fillColor:null,fillOpacity:.4,steps:false,stacked:false},stack:{values:[]},draw:function(options){var context=options.context,lineWidth=options.lineWidth,shadowSize=options.shadowSize,offset;context.save();context.lineJoin="round";if(shadowSize&&false){context.lineWidth=shadowSize/2;offset=lineWidth/2+context.lineWidth/2;context.strokeStyle="rgba(0,0,0,0.1)";this.plot(options,offset+shadowSize/2,false);context.strokeStyle="rgba(0,0,0,0.2)";this.plot(options,offset,false)}context.lineWidth=lineWidth;context.strokeStyle=options.color;this.plot(options,0,true);context.restore()},plot:function(options,shadowOffset,incStack){var context=options.context,width=options.width,height=options.height,xScale=options.xScale,yScale=options.yScale,data=options.data,stack=options.stacked?this.stack:false,length=data.length-1,prevx=null,prevy=null,zero=yScale(0),start=null,x1,x2,y1,y2,stack1,stack2,i;if(length<1)return;context.beginPath();for(i=0;i0&&data[i][1]){context.stroke();fill();start=null;context.closePath();context.beginPath()}}continue}x1=xScale(data[i][0]);x2=xScale(data[i+1][0]);if(start===null)start=data[i];if(stack){stack1=stack.values[i]||0;stack2=stack.values[i+1]||0;y1=yScale(data[i][1]+stack1);y2=yScale(data[i+1][1]+stack2)}else{y1=yScale(data[i][1]);y2=yScale(data[i+1][1])}if(y1>height&&y2>height||y1<0&&y2<0||x1<0&&x2<0||x1>width&&x2>width)continue;if(prevx!=x1||prevy!=y1+shadowOffset)context.moveTo(x1,y1+shadowOffset);prevx=x2;prevy=y2+shadowOffset;if(options.steps){context.lineTo(prevx+shadowOffset/2,y1+shadowOffset);context.lineTo(prevx+shadowOffset/2,prevy)}else{context.lineTo(prevx,prevy)}}if(!options.fill||options.fill&&!options.fillBorder)context.stroke();fill();if(stack){for(i=0;i=0;--j){if(!options.fill)return;if(!data[j])return;if(data[j][1]===null){data[j][1]=0}x=xScale(data[j][0]);y=yScale(data[j][1]);if(y<0)y=0;if(y>height||x>width||y<0||x<0)return;context.lineTo(x,y);context.stroke()}}function stackToPlot(values){var stack_data=[];var x_offset=data[0][0];for(i=0;i0){positiveSums[x]=(positiveSums[x]||0)+data[j][1];newmax=Math.max(newmax,positiveSums[x])}else{negativeSums[x]=(negativeSums[x]||0)+data[j][1];newmin=Math.min(newmin,negativeSums[x])}}lines.negativeSums=negativeSums;lines.positiveSums=positiveSums;axis.max=newmax;axis.min=newmin}if(options.steps){this.hit=function(options){var data=options.data,args=options.args,yScale=options.yScale,mouse=args[0],length=data.length,n=args[1],x=options.xInverse(mouse.relX),relY=mouse.relY,i;for(i=0;i=data[i][0]&&x<=data[i+1][0]){if(Math.abs(yScale(data[i][1])-relY)<8){n.x=data[i][0];n.y=data[i][1];n.index=i;n.seriesIndex=options.index}break}}};this.drawHit=function(options){var context=options.context,args=options.args,data=options.data,xScale=options.xScale,index=args.index,x=xScale(args.x),y=options.yScale(args.y),x2;if(data.length-1>index){x2=options.xScale(data[index+1][0]);context.save();context.strokeStyle=options.color;context.lineWidth=options.lineWidth;context.beginPath();context.moveTo(x,y);context.lineTo(x2,y);context.stroke();context.closePath();context.restore()}};this.clearHit=function(options){var context=options.context,args=options.args,data=options.data,xScale=options.xScale,width=options.lineWidth,index=args.index,x=xScale(args.x),y=options.yScale(args.y),x2;if(data.length-1>index){x2=options.xScale(data[index+1][0]);context.clearRect(x-width,y-width,x2-x+2*width,2*width)}}}}});Flotr.addType("bars",{options:{show:false,lineWidth:2,barWidth:1,fill:true,fillColor:null,fillOpacity:.4,horizontal:false,stacked:false,centered:true,topPadding:.1,grouped:false},stack:{positive:[],negative:[],_positive:[],_negative:[]},draw:function(options){var context=options.context;this.current+=1;context.save();context.lineJoin="miter";context.lineWidth=options.lineWidth;context.strokeStyle=options.color;if(options.fill)context.fillStyle=options.fillStyle;this.plot(options);context.restore()},plot:function(options){var data=options.data,context=options.context,shadowSize=options.shadowSize,i,geometry,left,top,width,height;if(data.length<1)return;this.translate(context,options.horizontal);for(i=0;i0?stack.positive:stack.negative;stackOffset=stackValue[xValue]||stackOffset;stackValue[xValue]=stackOffset+yValue}left=xScale(xValue-bisection);right=xScale(xValue+barWidth-bisection);top=yScale(yValue+stackOffset);bottom=yScale(stackOffset);if(bottom<0)bottom=0;return x===null||y===null?null:{x:xValue,y:yValue,xScale:xScale,yScale:yScale,top:top,left:Math.min(left,right)-lineWidth/2,width:Math.abs(right-left)-lineWidth,height:bottom-top}},hit:function(options){var data=options.data,args=options.args,mouse=args[0],n=args[1],x=options.xInverse(mouse.relX),y=options.yInverse(mouse.relY),hitGeometry=this.getBarGeometry(x,y,options),width=hitGeometry.width/2,left=hitGeometry.left,height=hitGeometry.y,geometry,i;for(i=data.length;i--;){geometry=this.getBarGeometry(data[i][0],data[i][1],options);if((height>0&&heightgeometry.y)&&Math.abs(left-geometry.left)0){positiveSums[value]=(positiveSums[value]||0)+datum;newmax=Math.max(newmax,positiveSums[value])}else{negativeSums[value]=(negativeSums[value]||0)+datum;newmin=Math.min(newmin,negativeSums[value])}}}if(orientation==1&&horizontal||orientation==-1&&!horizontal){if(options.topPadding&&(axis.max===axis.datamax||options.stacked&&this.stackMax!==newmax)){newmax+=options.topPadding*(newmax-newmin)}}this.stackMin=newmin;this.stackMax=newmax;this.negativeSums=negativeSums;this.positiveSums=positiveSums;axis.max=newmax;axis.min=newmin}});Flotr.addType("bubbles",{options:{show:false,lineWidth:2,fill:true,fillOpacity:.4,baseRadius:2},draw:function(options){var context=options.context,shadowSize=options.shadowSize;context.save();context.lineWidth=options.lineWidth;context.fillStyle="rgba(0,0,0,0.05)";context.strokeStyle="rgba(0,0,0,0.05)";this.plot(options,shadowSize/2);context.strokeStyle="rgba(0,0,0,0.1)";this.plot(options,shadowSize/4);context.strokeStyle=options.color;context.fillStyle=options.fillStyle;this.plot(options);context.restore()},plot:function(options,offset){var data=options.data,context=options.context,geometry,i,x,y,z;offset=offset||0;for(i=0;i0){stack.positive[a]=stackOffsetPos+b;return stackOffsetPos+b}else{stack.negative[a]=stackOffsetNeg+b;return stackOffsetNeg+b}}for(i=0;i0?"top":"bottom",style,x,y;context.save();context.translate(width/2,height/2);context.scale(1,vScale);x=Math.cos(bisection)*explode;y=Math.sin(bisection)*explode;if(shadowSize>0){this.plotSlice(x+shadowSize,y+shadowSize,radius,startAngle,endAngle,context);if(fill){context.fillStyle="rgba(0,0,0,0.1)";context.fill()}}this.plotSlice(x,y,radius,startAngle,endAngle,context);if(fill){context.fillStyle=fillStyle;context.fill()}context.lineWidth=lineWidth;context.strokeStyle=color;context.stroke();style={size:options.fontSize*1.2,color:options.fontColor,weight:1.5};if(label){if(options.htmlText||!options.textEnabled){divStyle="position:absolute;"+textBaseline+":"+(height/2+(textBaseline==="top"?distY:-distY))+"px;";divStyle+=textAlign+":"+(width/2+(textAlign==="right"?-distX:distX))+"px;";html.push('
',label,"
")}else{style.textAlign=textAlign;style.textBaseline=textBaseline;Flotr.drawText(context,label,distX,distY,style)}}if(options.htmlText||!options.textEnabled){var div=Flotr.DOM.node('
');Flotr.DOM.insert(div,html.join(""));Flotr.DOM.insert(options.element,div)}context.restore();this.startAngle=endAngle;this.slices=this.slices||[];this.slices.push({radius:Math.min(canvas.width,canvas.height)*sizeRatio/2,x:x,y:y,explode:explode,start:startAngle,end:endAngle})},plotSlice:function(x,y,radius,startAngle,endAngle,context){context.beginPath();context.moveTo(x,y);context.arc(x,y,radius,startAngle,endAngle,false);context.lineTo(x,y);context.closePath()},hit:function(options){var data=options.data[0],args=options.args,index=options.index,mouse=args[0],n=args[1],slice=this.slices[index],x=mouse.relX-options.width/2,y=mouse.relY-options.height/2,r=Math.sqrt(x*x+y*y),theta=Math.atan(y/x),circle=Math.PI*2,explode=slice.explode||options.explode,start=slice.start%circle,end=slice.end%circle,epsilon=options.epsilon;if(x<0){theta+=Math.PI}else if(x>0&&y<0){theta+=circle}if(rexplode){if(theta>start&&thetaend&&(thetastart)||start===end&&(slice.start===slice.end&&Math.abs(theta-start)epsilon)){n.x=data[0];n.y=data[1];n.sAngle=start;n.eAngle=end;n.index=0;n.seriesIndex=index;n.fraction=data[1]/this.total}}},drawHit:function(options){var context=options.context,slice=this.slices[options.args.seriesIndex];context.save();context.translate(options.width/2,options.height/2);this.plotSlice(slice.x,slice.y,slice.radius,slice.start,slice.end,context);context.stroke();context.restore()},clearHit:function(options){var context=options.context,slice=this.slices[options.args.seriesIndex],padding=2*options.lineWidth,radius=slice.radius+padding;context.save();context.translate(options.width/2,options.height/2);context.clearRect(slice.x-radius,slice.y-radius,2*radius+padding,2*radius+padding);context.restore()},extendYRange:function(axis,data){this.total=(this.total||0)+data[0][1]}})})();Flotr.addType("points",{options:{show:false,radius:3,lineWidth:2,fill:true,fillColor:"#FFFFFF",fillOpacity:1,hitRadius:null},draw:function(options){var context=options.context,lineWidth=options.lineWidth,shadowSize=options.shadowSize;context.save();if(shadowSize>0){context.lineWidth=shadowSize/2;context.strokeStyle="rgba(0,0,0,0.1)";this.plot(options,shadowSize/2+context.lineWidth/2);context.strokeStyle="rgba(0,0,0,0.2)";this.plot(options,context.lineWidth/2)}context.lineWidth=options.lineWidth;context.strokeStyle=options.color;if(options.fill)context.fillStyle=options.fillStyle;this.plot(options);context.restore()},plot:function(options,offset){var data=options.data,context=options.context,xScale=options.xScale,yScale=options.yScale,i,x,y;for(i=data.length-1;i>-1;--i){y=data[i][1];if(y===null)continue;x=xScale(data[i][0]);y=yScale(y);if(x<0||x>options.width||y<0||y>options.height)continue;context.beginPath();if(offset){context.arc(x,y+offset,options.radius,0,Math.PI,false)}else{context.arc(x,y,options.radius,0,2*Math.PI,true);if(options.fill)context.fill()}context.stroke();context.closePath()}}});Flotr.addType("radar",{options:{show:false,lineWidth:2,fill:true,fillOpacity:.4,radiusRatio:.9,sensibility:2},draw:function(options){var context=options.context,shadowSize=options.shadowSize;context.save();context.translate(options.width/2,options.height/2);context.lineWidth=options.lineWidth;context.fillStyle="rgba(0,0,0,0.05)";context.strokeStyle="rgba(0,0,0,0.05)";this.plot(options,shadowSize/2);context.strokeStyle="rgba(0,0,0,0.1)";this.plot(options,shadowSize/4);context.strokeStyle=options.color;context.fillStyle=options.fillStyle;this.plot(options);context.restore()},plot:function(options,offset){var data=options.data,context=options.context,radius=Math.min(options.height,options.width)*options.radiusRatio/2,step=2*Math.PI/data.length,angle=-Math.PI/2,i,ratio;offset=offset||0;context.beginPath();for(i=0;i=5||Math.abs(s.second.y-s.first.y)>=5}})})();(function(){var D=Flotr.DOM,_=Flotr._;Flotr.addPlugin("legend",{options:{show:true,noColumns:1,labelFormatter:function(v){return v},labelBoxBorderColor:"#CCCCCC",labelBoxWidth:14,labelBoxHeight:10,labelBoxMargin:5,container:null,position:"nw",margin:5,backgroundColor:"#F0F0F0",backgroundOpacity:.85},callbacks:{"flotr:afterinit":function(){this.legend.insertLegend()},"flotr:destroy":function(){var markup=this.legend.markup;if(markup){this.legend.markup=null;D.remove(markup)}}},insertLegend:function(){if(!this.options.legend.show)return;var series=this.series,plotOffset=this.plotOffset,options=this.options,legend=options.legend,fragments=[],rowStarted=false,ctx=this.ctx,itemCount=_.filter(series,function(s){return s.label&&!s.hide}).length,p=legend.position,m=legend.margin,opacity=legend.backgroundOpacity,i,label,color;if(itemCount){var lbw=legend.labelBoxWidth,lbh=legend.labelBoxHeight,lbm=legend.labelBoxMargin,offsetX=plotOffset.left+m,offsetY=plotOffset.top+m,labelMaxWidth=0,style={size:options.fontSize*1.1,color:options.grid.color};for(i=series.length-1;i>-1;--i){if(!series[i].label||series[i].hide)continue;label=legend.labelFormatter(series[i].label);labelMaxWidth=Math.max(labelMaxWidth,this._text.measureText(label,style).width)}var legendWidth=Math.round(lbw+lbm*3+labelMaxWidth),legendHeight=Math.round(itemCount*(lbm+lbh)+lbm);if(!opacity&&opacity!==0){opacity=.1}if(!options.HtmlText&&this.textEnabled&&!legend.container){if(p.charAt(0)=="s")offsetY=plotOffset.top+this.plotHeight-(m+legendHeight);if(p.charAt(0)=="c")offsetY=plotOffset.top+this.plotHeight/2-(m+legendHeight/2);if(p.charAt(1)=="e")offsetX=plotOffset.left+this.plotWidth-(m+legendWidth);color=this.processColor(legend.backgroundColor,{opacity:opacity});ctx.fillStyle=color;ctx.fillRect(offsetX,offsetY,legendWidth,legendHeight);ctx.strokeStyle=legend.labelBoxBorderColor;ctx.strokeRect(Flotr.toPixel(offsetX),Flotr.toPixel(offsetY),legendWidth,legendHeight);var x=offsetX+lbm;var y=offsetY+lbm;for(i=0;i":"");rowStarted=true}var s=series[i],boxWidth=legend.labelBoxWidth,boxHeight=legend.labelBoxHeight;label=legend.labelFormatter(s.label);color="background-color:"+(s.bars&&s.bars.show&&s.bars.fillColor&&s.bars.fill?s.bars.fillColor:s.color)+";";fragments.push('','
','
','
',"
","
","",'',label,"")}if(rowStarted)fragments.push("");if(fragments.length>0){var table=''+fragments.join("")+"
"; if(legend.container){table=D.node(table);this.legend.markup=table;D.insert(legend.container,table)}else{var styles={position:"absolute",zIndex:"2",border:"1px solid "+legend.labelBoxBorderColor};if(p.charAt(0)=="n"){styles.top=m+plotOffset.top+"px";styles.bottom="auto"}else if(p.charAt(0)=="c"){styles.top=m+(this.plotHeight-legendHeight)/2+"px";styles.bottom="auto"}else if(p.charAt(0)=="s"){styles.bottom=m+plotOffset.bottom+"px";styles.top="auto"}if(p.charAt(1)=="e"){styles.right=m+plotOffset.right+"px";styles.left="auto"}else if(p.charAt(1)=="w"){styles.left=m+plotOffset.left+"px";styles.right="auto"}var div=D.create("div"),size;div.className="flotr-legend";D.setStyles(div,styles);D.insert(div,table);D.insert(this.el,div);if(!opacity)return;var c=legend.backgroundColor||options.grid.backgroundColor||"#ffffff";_.extend(styles,D.size(div),{backgroundColor:c,zIndex:"",border:""});styles.width+="px";styles.height+="px";div=D.create("div");div.className="flotr-legend-bg";D.setStyles(div,styles);D.opacity(div,opacity);D.insert(div," ");D.insert(this.el,div)}}}}}})})();(function(){var D=Flotr.DOM,_=Flotr._,flotr=Flotr,S_MOUSETRACK="opacity:0.7;background-color:#000;color:#fff;position:absolute;padding:2px 8px;-moz-border-radius:4px;border-radius:4px;white-space:nowrap;";Flotr.addPlugin("hit",{callbacks:{"flotr:mousemove":function(e,pos){this.hit.track(pos)},"flotr:click":function(pos){var hit=this.hit.track(pos);if(hit&&!_.isUndefined(hit.index))pos.hit=hit},"flotr:mouseout":function(e){if(e.relatedTarget!==this.mouseTrack){this.hit.clearHit()}},"flotr:destroy":function(){if(this.options.mouse.container){D.remove(this.mouseTrack)}this.mouseTrack=null}},track:function(pos){if(this.options.mouse.track||_.any(this.series,function(s){return s.mouse&&s.mouse.track})){return this.hit.hit(pos)}},executeOnType:function(s,method,args){var success=false,options;if(!_.isArray(s))s=[s];function e(s,index){_.each(_.keys(flotr.graphTypes),function(type){if(s[type]&&s[type].show&&this[type][method]){options=this.getOptions(s,type);options.fill=!!s.mouse.fillColor;options.fillStyle=this.processColor(s.mouse.fillColor||"#ffffff",{opacity:s.mouse.fillOpacity});options.color=s.mouse.lineColor;options.context=this.octx;options.index=index;if(args)options.args=args;this[type][method].call(this[type],options);success=true}},this)}_.each(s,e,this);return success},drawHit:function(n){var octx=this.octx,s=n.series;if(s.mouse.lineColor){octx.save();octx.lineWidth=s.points?s.points.lineWidth:1;octx.strokeStyle=s.mouse.lineColor;octx.fillStyle=this.processColor(s.mouse.fillColor||"#ffffff",{opacity:s.mouse.fillOpacity});octx.translate(this.plotOffset.left,this.plotOffset.top);if(!this.hit.executeOnType(s,"drawHit",n)){var xa=n.xaxis,ya=n.yaxis;octx.beginPath();octx.arc(xa.d2p(n.x),ya.d2p(n.y),s.points.hitRadius||s.points.radius||s.mouse.radius,0,2*Math.PI,true);octx.fill();octx.stroke();octx.closePath()}octx.restore();this.clip(octx)}this.prevHit=n},clearHit:function(){var prev=this.prevHit,octx=this.octx,plotOffset=this.plotOffset;octx.save();octx.translate(plotOffset.left,plotOffset.top);if(prev){if(!this.hit.executeOnType(prev.series,"clearHit",this.prevHit)){var s=prev.series,lw=s.points?s.points.lineWidth:1;offset=(s.points.hitRadius||s.points.radius||s.mouse.radius)+lw;octx.clearRect(prev.xaxis.d2p(prev.x)-offset,prev.yaxis.d2p(prev.y)-offset,offset*2,offset*2)}D.hide(this.mouseTrack);this.prevHit=null}octx.restore()},hit:function(mouse){var options=this.options,prevHit=this.prevHit,closest,sensibility,dataIndex,seriesIndex,series,value,xaxis,yaxis,n;if(this.series.length===0)return;n={relX:mouse.relX,relY:mouse.relY,absX:mouse.absX,absY:mouse.absY,series:this.series};if(options.mouse.trackY&&!options.mouse.trackAll&&this.hit.executeOnType(this.series,"hit",[mouse,n])&&!_.isUndefined(n.seriesIndex)){series=this.series[n.seriesIndex];n.series=series;n.mouse=series.mouse;n.xaxis=series.xaxis;n.yaxis=series.yaxis}else{closest=this.hit.closest(mouse);if(closest){closest=options.mouse.trackY?closest.point:closest.x;seriesIndex=closest.seriesIndex;series=this.series[seriesIndex];xaxis=series.xaxis;yaxis=series.yaxis;sensibility=2*series.mouse.sensibility;if(options.mouse.trackAll||closest.distanceXserie.xaxis.max)continue;distanceX=Math.abs(x-mouseX);distanceY=Math.abs(y-mouseY);distance=distanceX*distanceX+distanceY*distanceY;if(distance');this.mouseTrack=mouseTrack;D.insert(container||this.el,mouseTrack)}if(!decimals||decimals<0)decimals=0;if(x&&x.toFixed)x=x.toFixed(decimals);if(y&&y.toFixed)y=y.toFixed(decimals);content=n.mouse.trackFormatter({x:x,y:y,series:n.series,index:n.index,nearest:n,fraction:n.fraction});if(_.isNull(content)||_.isUndefined(content)){D.hide(mouseTrack);return}else{mouseTrack.innerHTML=content;D.show(mouseTrack)}if(container)return;size=D.size(mouseTrack);if(container){offset=D.position(this.el);oTop=offset.top;oLeft=offset.left}if(!n.mouse.relative){pos+="top:";if(p.charAt(0)=="n")pos+=oTop+m+top;else if(p.charAt(0)=="s")pos+=oTop-m+top+this.plotHeight-size.height;pos+="px;bottom:auto;left:";if(p.charAt(1)=="e")pos+=oLeft-m+left+this.plotWidth-size.width;else if(p.charAt(1)=="w")pos+=oLeft+m+left;pos+="px;right:auto;"}else if(s.pie&&s.pie.show){var center={x:this.plotWidth/2,y:this.plotHeight/2},radius=Math.min(this.canvasWidth,this.canvasHeight)*s.pie.sizeRatio/2,bisection=n.sAngle(isX?graph.plotWidth:graph.plotHeight)){continue}Flotr.drawText(ctx,tick.label,leftOffset(graph,isX,isFirst,offset),topOffset(graph,isX,isFirst,offset),style);if(!isX&&!isFirst){ctx.save();ctx.strokeStyle=style.color;ctx.beginPath();ctx.moveTo(graph.plotOffset.left+graph.plotWidth-8,graph.plotOffset.top+axis.d2p(tick.v));ctx.lineTo(graph.plotOffset.left+graph.plotWidth,graph.plotOffset.top+axis.d2p(tick.v));ctx.stroke();ctx.restore()}}function continueShowingLabels(axis){return axis.options.showLabels&&axis.used}function leftOffset(graph,isX,isFirst,offset){return graph.plotOffset.left+(isX?offset:isFirst?-options.grid.labelMargin:options.grid.labelMargin+graph.plotWidth)}function topOffset(graph,isX,isFirst,offset){return graph.plotOffset.top+(isX?options.grid.labelMargin:offset)+(isX&&isFirst?graph.plotHeight:0)}}function drawLabelHtml(graph,axis){var isX=axis.orientation===1,isFirst=axis.n===1,name="",left,style,top,offset=graph.plotOffset;if(!isX&&!isFirst){ctx.save();ctx.strokeStyle=axis.options.color||options.grid.color;ctx.beginPath()}if(axis.options.showLabels&&(isFirst?true:axis.used)){for(i=0;i(isX?graph.canvasWidth:graph.canvasHeight)){continue}top=offset.top+(isX?(isFirst?1:-1)*(graph.plotHeight+options.grid.labelMargin):axis.d2p(tick.v)-axis.maxLabel.height/2);left=isX?offset.left+axis.d2p(tick.v)-xBoxWidth/2:0;name="";if(i===0){name=" first"}else if(i===axis.ticks.length-1){name=" last"}name+=isX?" flotr-grid-label-x":" flotr-grid-label-y";html+=['
'+tick.label+"
"].join(" ");if(!isX&&!isFirst){ctx.moveTo(offset.left+graph.plotWidth-8,offset.top+axis.d2p(tick.v));ctx.lineTo(offset.left+graph.plotWidth,offset.top+axis.d2p(tick.v))}}}}}})})();(function(){var D=Flotr.DOM,_=Flotr._;Flotr.addPlugin("legend",{options:{show:true,noColumns:1,labelFormatter:function(v){return v},labelBoxBorderColor:"#CCCCCC",labelBoxWidth:14,labelBoxHeight:10,labelBoxMargin:5,container:null,position:"nw",margin:5,backgroundColor:"#F0F0F0",backgroundOpacity:.85},callbacks:{"flotr:afterinit":function(){this.legend.insertLegend()},"flotr:destroy":function(){var markup=this.legend.markup;if(markup){this.legend.markup=null;D.remove(markup)}}},insertLegend:function(){if(!this.options.legend.show)return;var series=this.series,plotOffset=this.plotOffset,options=this.options,legend=options.legend,fragments=[],rowStarted=false,ctx=this.ctx,itemCount=_.filter(series,function(s){return s.label&&!s.hide}).length,p=legend.position,m=legend.margin,opacity=legend.backgroundOpacity,i,label,color;if(itemCount){var lbw=legend.labelBoxWidth,lbh=legend.labelBoxHeight,lbm=legend.labelBoxMargin,offsetX=plotOffset.left+m,offsetY=plotOffset.top+m,labelMaxWidth=0,style={size:options.fontSize*1.1,color:options.grid.color};for(i=series.length-1;i>-1;--i){if(!series[i].label||series[i].hide)continue;label=legend.labelFormatter(series[i].label);labelMaxWidth=Math.max(labelMaxWidth,this._text.measureText(label,style).width)}var legendWidth=Math.round(lbw+lbm*3+labelMaxWidth),legendHeight=Math.round(itemCount*(lbm+lbh)+lbm);if(!opacity&&opacity!==0){opacity=.1}if(!options.HtmlText&&this.textEnabled&&!legend.container){if(p.charAt(0)=="s")offsetY=plotOffset.top+this.plotHeight-(m+legendHeight);if(p.charAt(0)=="c")offsetY=plotOffset.top+this.plotHeight/2-(m+legendHeight/2);if(p.charAt(1)=="e")offsetX=plotOffset.left+this.plotWidth-(m+legendWidth);color=this.processColor(legend.backgroundColor,{opacity:opacity});ctx.fillStyle=color;ctx.fillRect(offsetX,offsetY,legendWidth,legendHeight);ctx.strokeStyle=legend.labelBoxBorderColor;ctx.strokeRect(Flotr.toPixel(offsetX),Flotr.toPixel(offsetY),legendWidth,legendHeight);var x=offsetX+lbm;var y=offsetY+lbm;for(i=0;i":"");rowStarted=true}var s=series[i],boxWidth=legend.labelBoxWidth,boxHeight=legend.labelBoxHeight;label=legend.labelFormatter(s.label);color="background-color:"+(s.bars&&s.bars.show&&s.bars.fillColor&&s.bars.fill?s.bars.fillColor:s.color)+";";fragments.push('','
','
','
',"
","
","",'',label,"")}if(rowStarted)fragments.push("");if(fragments.length>0){var table=''+fragments.join("")+"
";if(legend.container){table=D.node(table);this.legend.markup=table;D.insert(legend.container,table)}else{var styles={position:"absolute",zIndex:"2",border:"1px solid "+legend.labelBoxBorderColor};if(p.charAt(0)=="n"){styles.top=m+plotOffset.top+"px";styles.bottom="auto"}else if(p.charAt(0)=="c"){styles.top=m+(this.plotHeight-legendHeight)/2+"px";styles.bottom="auto"}else if(p.charAt(0)=="s"){styles.bottom=m+plotOffset.bottom+"px";styles.top="auto"}if(p.charAt(1)=="e"){styles.right=m+plotOffset.right+"px";styles.left="auto"}else if(p.charAt(1)=="w"){styles.left=m+plotOffset.left+"px";styles.right="auto"}var div=D.create("div"),size;div.className="flotr-legend";D.setStyles(div,styles);D.insert(div,table);D.insert(this.el,div);if(!opacity)return;var c=legend.backgroundColor||options.grid.backgroundColor||"#ffffff";_.extend(styles,D.size(div),{backgroundColor:c,zIndex:"",border:""});styles.width+="px";styles.height+="px";div=D.create("div");div.className="flotr-legend-bg";D.setStyles(div,styles);D.opacity(div,opacity);D.insert(div," ");D.insert(this.el,div)}}}}}})})();(function(){var D=Flotr.DOM;Flotr.addPlugin("titles",{callbacks:{"flotr:afterdraw":function(){this.titles.drawTitles()}},drawTitles:function(){var html,options=this.options,margin=options.grid.labelMargin,ctx=this.ctx,a=this.axes;if(!options.HtmlText&&this.textEnabled){var style={size:options.fontSize,color:options.grid.color,textAlign:"center"};if(options.subtitle){Flotr.drawText(ctx,options.subtitle,this.plotOffset.left+this.plotWidth/2,this.titleHeight+this.subtitleHeight-2,style)}style.weight=1.5;style.size*=1.5;if(options.title){Flotr.drawText(ctx,options.title,this.plotOffset.left+this.plotWidth/2,this.titleHeight-2,style)}style.weight=1.8;style.size*=.8;if(a.x.options.title&&a.x.used){style.textAlign=a.x.options.titleAlign||"center";style.textBaseline="top";style.angle=Flotr.toRad(a.x.options.titleAngle);style=Flotr.getBestTextAlign(style.angle,style);Flotr.drawText(ctx,a.x.options.title,this.plotOffset.left+this.plotWidth/2,this.plotOffset.top+a.x.maxLabel.height+this.plotHeight+2*margin,style)}if(a.x2.options.title&&a.x2.used){style.textAlign=a.x2.options.titleAlign||"center";style.textBaseline="bottom";style.angle=Flotr.toRad(a.x2.options.titleAngle);style=Flotr.getBestTextAlign(style.angle,style);Flotr.drawText(ctx,a.x2.options.title,this.plotOffset.left+this.plotWidth/2,this.plotOffset.top-a.x2.maxLabel.height-2*margin,style)}if(a.y.options.title&&a.y.used){style.textAlign=a.y.options.titleAlign||"right";style.textBaseline="middle";style.angle=Flotr.toRad(a.y.options.titleAngle);style=Flotr.getBestTextAlign(style.angle,style);Flotr.drawText(ctx,a.y.options.title,this.plotOffset.left-a.y.maxLabel.width-2*margin,this.plotOffset.top+this.plotHeight/2,style)}if(a.y2.options.title&&a.y2.used){style.textAlign=a.y2.options.titleAlign||"left";style.textBaseline="middle";style.angle=Flotr.toRad(a.y2.options.titleAngle);style=Flotr.getBestTextAlign(style.angle,style);Flotr.drawText(ctx,a.y2.options.title,this.plotOffset.left+this.plotWidth+a.y2.maxLabel.width+2*margin,this.plotOffset.top+this.plotHeight/2,style)}}else{html=[];if(options.title)html.push('
',options.title,"
");if(options.subtitle)html.push('
',options.subtitle,"
");html.push("");html.push('
');if(a.x.options.title&&a.x.used)html.push('
',a.x.options.title,"
");if(a.x2.options.title&&a.x2.used)html.push('
',a.x2.options.title,"
");if(a.y.options.title&&a.y.used)html.push('
',a.y.options.title,"
");if(a.y2.options.title&&a.y2.used)html.push('
',a.y2.options.title,"
");html=html.join("");var div=D.create("div");D.setStyles({color:options.grid.color});div.className="flotr-titles";D.insert(this.el,div);D.insert(div,html)}}})})();(function(){var D=Flotr.DOM;Flotr.addPlugin("handles",{options:{show:false,drag:true,scroll:true},callbacks:{"flotr:afterinit":init,"flotr:select":handleSelect,"flotr:mousedown":reset,"flotr:mousemove":mouseMoveHandler}});function init(){var options=this.options,handles=this.handles,el=this.el,scroll,left,right,container;if(!options.selection.mode||!options.handles.show||"ontouchstart"in el)return;handles.initialized=true;container=D.node('
');options=options.handles;if(options.drag){right=D.node('
');left=D.node('
');D.insert(container,right);D.insert(container,left);D.hide(left);D.hide(right);handles.left=left;handles.right=right;this.observe(left,"mousedown",function(){handles.moveHandler=leftMoveHandler});this.observe(right,"mousedown",function(){handles.moveHandler=rightMoveHandler})}if(options.scroll){scroll=D.node('
');D.insert(container,scroll);D.hide(scroll);handles.scroll=scroll;this.observe(scroll,"mousedown",function(){handles.moveHandler=scrollMoveHandler})}this.observe(document,"mouseup",function(){handles.moveHandler=null});D.insert(el,container)}function handleSelect(selection){if(!this.handles.initialized)return;var handles=this.handles,options=this.options.handles,left=handles.left,right=handles.right,scroll=handles.scroll;if(options){if(options.drag){positionDrag(this,left,selection.x1);positionDrag(this,right,selection.x2)}if(options.scroll){positionScroll(this,scroll,selection.x1,selection.x2)}}}function positionDrag(graph,handle,x){D.show(handle);var size=D.size(handle),l=Math.round(graph.axes.x.d2p(x)-size.width/2),t=(graph.plotHeight-size.height)/2;D.setStyles(handle,{left:l+"px",top:t+"px"})}function positionScroll(graph,handle,x1,x2){D.show(handle);var size=D.size(handle),l=Math.round(graph.axes.x.d2p(x1)),t=graph.plotHeight-size.height/2,w=graph.axes.x.d2p(x2)-graph.axes.x.d2p(x1);D.setStyles(handle,{left:l+"px",top:t+"px",width:w+"px"})}function reset(){if(!this.handles.initialized)return;var handles=this.handles;if(handles){D.hide(handles.left);D.hide(handles.right);D.hide(handles.scroll)}}function mouseMoveHandler(e,position){if(!this.handles.initialized)return;if(!this.handles.moveHandler)return;var delta=position.x-this.lastMousePos.x,selection=this.selection.selection,area=this.selection.getArea(),handles=this.handles;handles.moveHandler(area,delta);checkSwap(area,handles);this.selection.setSelection(area)}function checkSwap(area,handles){var moveHandler=handles.moveHandler;if(area.x1>area.x2){if(moveHandler==leftMoveHandler){moveHandler=rightMoveHandler}else if(moveHandler==rightMoveHandler){moveHandler=leftMoveHandler}handles.moveHandler=moveHandler}}function leftMoveHandler(area,delta){area.x1+=delta}function rightMoveHandler(area,delta){area.x2+=delta}function scrollMoveHandler(area,delta){area.x1+=delta;area.x2+=delta}})();(function(){var E=Flotr.EventAdapter,_=Flotr._;Flotr.addPlugin("graphGrid",{callbacks:{"flotr:beforedraw":function(){this.graphGrid.drawGrid()},"flotr:afterdraw":function(){this.graphGrid.drawOutline()}},drawGrid:function(){var ctx=this.ctx,options=this.options,grid=options.grid,verticalLines=grid.verticalLines,horizontalLines=grid.horizontalLines,minorVerticalLines=grid.minorVerticalLines,minorHorizontalLines=grid.minorHorizontalLines,plotHeight=this.plotHeight,plotWidth=this.plotWidth,a,v,i,j;if(verticalLines||minorVerticalLines||horizontalLines||minorHorizontalLines){E.fire(this.el,"flotr:beforegrid",[this.axes.x,this.axes.y,options,this])}ctx.save();ctx.lineWidth=1;ctx.strokeStyle=grid.tickColor;function circularHorizontalTicks(ticks){for(i=0;i=a.max||(v==a.min||v==a.max)&&grid.outlineWidth)return;callback(Math.floor(a.d2p(v))+ctx.lineWidth/2)})}function drawVerticalLines(x){ctx.moveTo(x,0);ctx.lineTo(x,plotHeight)}function drawHorizontalLines(y){ctx.moveTo(0,y);ctx.lineTo(plotWidth,y)}if(grid.circular){ctx.translate(this.plotOffset.left+plotWidth/2,this.plotOffset.top+plotHeight/2);var radius=Math.min(plotHeight,plotWidth)*options.radar.radiusRatio/2,sides=this.axes.x.ticks.length,coeff=2*(Math.PI/sides),angle=-Math.PI/2;ctx.beginPath();a=this.axes.y;if(horizontalLines){circularHorizontalTicks(a.ticks)}if(minorHorizontalLines){circularHorizontalTicks(a.minorTicks)}if(verticalLines){_.times(sides,function(i){ctx.moveTo(0,0);ctx.lineTo(Math.cos(i*coeff+angle)*radius,Math.sin(i*coeff+angle)*radius)})}ctx.stroke()}else{ctx.translate(this.plotOffset.left,this.plotOffset.top);if(grid.backgroundColor){ctx.fillStyle=this.processColor(grid.backgroundColor,{x1:0,y1:0,x2:plotWidth,y2:plotHeight});ctx.fillRect(0,0,plotWidth,plotHeight)}ctx.beginPath();a=this.axes.x;if(verticalLines)drawGridLines(a.ticks,drawVerticalLines);if(minorVerticalLines)drawGridLines(a.minorTicks,drawVerticalLines);a=this.axes.y;if(horizontalLines)drawGridLines(a.ticks,drawHorizontalLines);if(minorHorizontalLines)drawGridLines(a.minorTicks,drawHorizontalLines);ctx.stroke()}ctx.restore();if(verticalLines||minorVerticalLines||horizontalLines||minorHorizontalLines){E.fire(this.el,"flotr:aftergrid",[this.axes.x,this.axes.y,options,this])}},drawOutline:function(){var that=this,options=that.options,grid=options.grid,outline=grid.outline,ctx=that.ctx,backgroundImage=grid.backgroundImage,plotOffset=that.plotOffset,leftOffset=plotOffset.left,topOffset=plotOffset.top,plotWidth=that.plotWidth,plotHeight=that.plotHeight,v,img,src,left,top,globalAlpha;if(!grid.outlineWidth)return;ctx.save();if(grid.circular){ctx.translate(leftOffset+plotWidth/2,topOffset+plotHeight/2);var radius=Math.min(plotHeight,plotWidth)*options.radar.radiusRatio/2,sides=this.axes.x.ticks.length,coeff=2*(Math.PI/sides),angle=-Math.PI/2;ctx.beginPath();ctx.lineWidth=grid.outlineWidth;ctx.strokeStyle=grid.color;ctx.lineJoin="round";for(i=0;i<=sides;++i){ctx[i===0?"moveTo":"lineTo"](Math.cos(i*coeff+angle)*radius,Math.sin(i*coeff+angle)*radius)}ctx.stroke()}else{ctx.translate(leftOffset,topOffset);var lw=grid.outlineWidth,orig=.5-lw+(lw+1)%2/2,lineTo="lineTo",moveTo="moveTo";ctx.lineWidth=lw;ctx.strokeStyle=grid.color;ctx.lineJoin="miter";ctx.beginPath();ctx.moveTo(orig,orig);plotWidth=plotWidth-lw/2%1;plotHeight=plotHeight+lw/2;ctx[outline.indexOf("n")!==-1?lineTo:moveTo](plotWidth,orig);ctx[outline.indexOf("e")!==-1?lineTo:moveTo](plotWidth,plotHeight);ctx[outline.indexOf("s")!==-1?lineTo:moveTo](orig,plotHeight);ctx[outline.indexOf("w")!==-1?lineTo:moveTo](orig,orig);ctx.stroke();ctx.closePath()}ctx.restore();if(backgroundImage){src=backgroundImage.src||backgroundImage;left=(parseInt(backgroundImage.left,10)||0)+plotOffset.left;top=(parseInt(backgroundImage.top,10)||0)+plotOffset.top;img=new Image;img.onload=function(){ctx.save();if(backgroundImage.alpha)ctx.globalAlpha=backgroundImage.alpha;ctx.globalCompositeOperation="destination-over";ctx.drawImage(img,0,0,img.width,img.height,left,top,plotWidth,plotHeight);ctx.restore()};img.src=src}}})})();!function(a,b){typeof define=="function"?define(b):typeof module!="undefined"?module.exports=b():this[a]=b()}("bonzo",function(){function x(a){return new RegExp("(^|\\s+)"+a+"(\\s+|$)")}function y(a,b,c){for(var d=0,e=a.length;d]+)/.exec(a),d=c.createElement(b&&k[b[1].toLowerCase()]||"div"),e=[];d.innerHTML=a;var f=d.childNodes;d=d.firstChild,e.push(d);while(d=d.nextSibling)d.nodeType==1&&e.push(d);return e}():A(a)?[a.cloneNode(!0)]:[]},N.doc=function(){var a=this.viewport();return{width:Math.max(c.body.scrollWidth,d.scrollWidth,a.width),height:Math.max(c.body.scrollHeight,d.scrollHeight,a.height)}},N.firstChild=function(a){for(var b=a.childNodes,c=0,d=b&&b.length||0,e;c=0&&newIndex
';function Component(options){options=options||{};var node=bonzo.create(T_COMPONENT)[0];this.options=options;this.node=node;if(options.adapter){this.api=options.adapter}else if(options.adapterConstructor){this.api=new options.adapterConstructor(options.config)}else if(options.adapterCallback){this.api=options.adapterCallback.call(null,options.config)}else if(options.config){this.api=new V.adapters.flotr.Child(options.config||{})}this.preprocessors=[]}Component.prototype={render:function(element){var node=this.node,options=this.options;element=element||options.element;if(!element)throw"No element to render within.";bonzo(element).addClass(options.name||"").append(this.node);this._setDimension("width");this._setDimension("height");this.container=element;this.draw(options.data,options.config)},draw:function(data,config){var api=this.api,options=this.options,preprocessors=this.preprocessors,clientData;clientData=data=data||options.data;config=config||options.config;if(!options.skipPreprocess&&data){clientData=[];_.each(api.getDataArray(data),function(d,index){var preprocessor=preprocessors[index]||new V.Preprocessor,isArray=_.isArray(d),isFunction=_.isFunction(d),unprocessed=isArray?d:isFunction?d:d.data,processData=options.processData,range=api.range(config),min=range.min,max=range.max,resolution=this.node.clientWidth,dataArray=d,processed,objectData;if(!isFunction&&!isArray){dataArray=d.data;objectData=_.extend({},d)}if(isFunction){processed=data(min,max,resolution)}else{if(dataArray!==preprocessor.data){preprocessor.setData(dataArray)}else{preprocessor.reset()}if(processData){processData.apply(this,[{preprocessor:preprocessor,min:min,max:max,resolution:resolution}]);processed=preprocessor.getData()}else{processed=preprocessor.bound(min,max).subsampleMinMax(resolution).getData()}}if(api.transformData){processed=api.transformData(processed)}if(objectData){objectData.data=processed;clientData.push(objectData)}else{clientData.push(processed)}},this)}if(api)api.draw(clientData,config,this.node)},trigger:function(){this.api.trigger.apply(this.api,Array.prototype.concat.apply([this],arguments))},attach:function(){this.api.attach.apply(this.api,Array.prototype.concat.apply([this],arguments))},detach:function(){this.api.detach.apply(this.api,Array.prototype.concat.apply([this],arguments))},destroy:function(){if(this.api&&this.api.destroy)this.api.destroy();bonzo(this.container).empty()},_setDimension:function(attribute){var node=this.node,options=this.options;if(options[attribute]){bonzo(node).css(attribute,options[attribute])}else{options[attribute]=node.clientWidth}this[attribute]=options[attribute]}};V.Component=Component})();(function(){var H=envision;function Interaction(options){this.options=options=options||{};this.actions=[];this.actionOptions=[];this.followers=[];this.leaders=[];this.prevent={};if(options.leader){this.leader(options.leader)}}Interaction.prototype={leader:function(component){this.leaders.push(component);_.each(this.actions,function(action,i){this._bindLeader(component,action,this.actionOptions[i])},this);return this},follower:function(component){this.followers.push(component);return this},group:function(components){if(!_.isArray(components))components=[components];_.each(components,function(component){this.leader(component);this.follower(component)},this);return this},add:function(action,options){this.actions.push(action);this.actionOptions.push(options);_.each(this.leaders,function(leader){this._bindLeader(leader,action,options)},this);return this},_bindLeader:function(leader,action,options){_.each(action.events,function(e){var handler=e.handler||e,consumer=e.consumer||e;leader.attach(handler,_.bind(function(leader,result){if(this.prevent[name])return;if(options&&options.callback){options.callback.call(this,result)}this.prevent[name]=true;try{_.each(this.followers,function(follower){if(leader===follower)return;follower.trigger(consumer,result)},this)}catch(e){this.prevent[name]=false;throw e}this.prevent[name]=false},this))},this)}};H.Interaction=Interaction})();(function(){function Preprocessor(options){options=options||{};this.getData=function(){if(this.bounded)bound(this);return this.processing};this.reset=function(){this.processing=this.data;return this};this.setData=function(data){var i,length;if(!_.isArray(data))throw new Error("Array expected.");if(data.length<2)throw new Error("Data must contain at least two dimensions.");length=data[0].length;for(i=data.length;i--;){if(!_.isArray(data[i]))throw new Error("Data dimensions must be arrays.");if(data[i].length!==length)throw new Error("Data dimensions must contain the same number of points.")}this.processing=data;this.data=data;return this};if(options.data)this.setData(options.data)}function getStartIndex(data,min){var i=_.sortedIndex(data,min);if(data[i]>min&&i>0)i--;return i}function getEndIndex(data,max){return _.sortedIndex(data,max)}function bound(that){delete that.bounded;var data=that.processing,length=that.length(),x=data[0],y=data[1],min=that.min||0,max=that.max||length,start=getStartIndex(x,min),end=getEndIndex(x,max);that.processing=[x.slice(start,end+1),y.slice(start,end+1)];that.start=start;that.end=end}Preprocessor.prototype={length:function(){return this.getData()[0].length},bound:function(min,max){if(!_.isNumber(min)||!_.isNumber(max))return this;this.min=min;this.max=max;this.bounded=true;return this},subsampleMinMax:function(resolution){var bounded=this.bounded;delete this.bounded;var data=this.processing,length=this.length(),x=data[0],y=data[1],start=bounded?getStartIndex(x,this.min):0,end=bounded?getEndIndex(x,this.max):length-1,count=(resolution-2)/2,newX=[],newY=[],min=Number.MAX_VALUE,max=-Number.MAX_VALUE,minI=1,maxI=1,unit=(end-start)/count,position,datum,i,j;if(end-start+1>resolution){newX.push(x[start]);newY.push(y[start]);position=start+unit;for(i=start;imax){max=y[i];maxI=i}if(y[i]resolution){newX.push(x[start]);newY.push(y[start]);for(i=1;i=end-unit)break;index=Math.round(i*unit)+start;newX.push(x[index]);newY.push(y[index])}newX.push(x[end]);newY.push(y[end]);this.processing=[newX,newY];this.start=start;this.end=end}else{this.bounded=bounded}return this},interpolate:function(resolution){var bounded=this.bounded;delete this.bounded;var data=this.processing,length=this.length(),x=data[0],y=data[1],start=bounded?getStartIndex(x,this.min):0,end=bounded?getEndIndex(x,this.max):length-1,unit=(x[end]-x[start])/resolution,newX=[],newY=[],i,j,delta;newX.push(x[start]);newY.push(y[start]);if(end-start+1=width-1){context.lineTo(max,height)}else{context.quadraticCurveTo(width,half,Math.max(width-half,width-(width-max)/2),half);context.lineTo(Math.min(max+half,width-(width-max)/2),half);context.quadraticCurveTo(max,half,max,height)}context.stroke();context.closePath();context.fill();context.restore()}},trigger:function(component,name,options){if(name==="zoom"){this.zoom(component,options)}else if(name==="reset"){this.reset(component)}},zoom:function(component,options){var x=options.x||{},min=x.min,max=x.max,api=component.api;component.draw(null,{min:min,max:max})},reset:function(component){component.draw(null,{min:component.width/2,max:component.width/2})}};envision.components.QuadraticDrawing=QuadraticDrawing})();envision.templates=envision.templates||{};(function(){var V=envision;function processData(options){var resolution=options.resolution;options.preprocessor.bound(options.min,options.max).subsampleMinMax(resolution+Math.round(resolution/3))}function getDefaults(){return{price:{name:"envision-finance-price",config:{"lite-lines":{lineWidth:1,show:true,fill:true,fillOpacity:.2},mouse:{track:true,trackY:false,trackAll:true,sensibility:1,trackDecimals:4,position:"ne"},yaxis:{autoscale:true,autoscaleMargin:.05,noTicks:4,showLabels:true,min:0}},processData:processData},volume:{name:"envision-finance-volume",config:{whiskers:{show:true,lineWidth:2},mouse:{track:true,trackY:false,trackAll:true},yaxis:{autoscale:true,autoscaleMargin:.5}},processData:processData},summary:{name:"envision-finance-summary",config:{"lite-lines":{show:true,lineWidth:1,fill:true,fillOpacity:.2,fillBorder:true},xaxis:{noTicks:5,showLabels:true},yaxis:{autoscale:true,autoscaleMargin:.1},handles:{show:true},selection:{mode:"x"},grid:{verticalLines:false}}},connection:{name:"envision-finance-connection",adapterConstructor:V.components.QuadraticDrawing}}}function Finance(options){var data=options.data,defaults=getDefaults(),vis=new V.Visualization({name:"envision-finance"}),selection=new V.Interaction,hit=new V.Interaction,price,volume,connection,summary;if(options.defaults){defaults=Flotr.merge(options.defaults,defaults)}defaults.price.data=data.price;defaults.volume.data=data.volume;defaults.summary.data=data.summary;defaults.price.config.mouse.trackFormatter=options.trackFormatter||function(o){var index=o.index,value;if(price.api.preprocessor){index+=price.api.preprocessor.start}value="Price: $"+data.price[1][index]+", Vol: "+data.volume[1][index];return value};if(options.xTickFormatter){defaults.summary.config.xaxis.tickFormatter=options.xTickFormatter}defaults.price.config.yaxis.tickFormatter=options.yTickFormatter||function(n){return"$"+n};price=new V.Component(defaults.price);volume=new V.Component(defaults.volume);connection=new V.Component(defaults.connection);summary=new V.Component(defaults.summary);vis.add(price).add(volume).add(connection).add(summary).render(options.container);selection.follower(price).follower(volume).follower(connection).leader(summary).add(V.actions.selection,options.selectionCallback?{callback:options.selectionCallback}:null);hit.group([price,volume]).add(V.actions.hit);if(options.selection){summary.trigger("select",options.selection)}this.vis=vis;this.selection=selection;this.hit=hit;this.price=price;this.volume=volume;this.summary=summary}V.templates.Finance=Finance})();(function(){var V=envision;function getDefaults(){return{detail:{name:"envision-timeseries-detail",config:{"lite-lines":{lineWidth:1,show:true}}},summary:{name:"envision-timeseries-summary",config:{"lite-lines":{lineWidth:1,show:true},handles:{show:true},selection:{mode:"x"},yaxis:{autoscale:true,autoscaleMargin:.1}}},connection:{name:"envision-timeseries-connection",adapterConstructor:V.components.QuadraticDrawing}}}function TimeSeries(options){var data=options.data,defaults=getDefaults(),vis=new V.Visualization({name:"envision-timeseries"}),selection=new V.Interaction,detail,summary,connection;if(options.defaults){defaults=Flotr.merge(options.defaults,defaults)}defaults.detail.data=data.detail;defaults.summary.data=data.summary;detail=new V.Component(defaults.detail);connection=new V.Component(defaults.connection);summary=new V.Component(defaults.summary);vis.add(detail).add(connection).add(summary).render(options.container);selection.follower(detail).follower(connection).leader(summary).add(V.actions.selection,options.selectionCallback?{callback:options.selectionCallback}:null);if(options.selection){summary.trigger("select",options.selection)}this.vis=vis;this.selection=selection;this.detail=detail;this.summary=summary}V.templates.TimeSeries=TimeSeries})();(function(){var V=envision,Zoom;function defaultsZoom(){return{name:"zoom"}}function defaultsSummary(){return{name:"summary",config:{handles:{show:true},selection:{mode:"x"}}}}function getDefaults(options,defaults){var o=_.defaults(options,defaults);o.flotr=_.defaults(o.flotr,defaults.flotr);return o}Zoom=function(options){var vis=new V.Visualization,zoom=new V.Component(getDefaults(options.zoom||{},defaultsZoom())),summary=new V.Component(getDefaults(options.summary||{},defaultsSummary())),interaction=new V.Interaction({leader:summary});vis.add(zoom).add(summary);interaction.add(V.actions.selection);interaction.follower(zoom);this.vis=vis;this.interaction=interaction;if(options.container){this.render(options.container)}};Zoom.prototype={render:function(container){this.vis.render(container)}};V.templates.Zoom=Zoom})();(function(){function a(a){return a.target}function b(a){return a.source}function c(a,b){try{for(var c in b)Object.defineProperty(a.prototype,c,{value:b[c],enumerable:!1})}catch(d){a.prototype=b}}function d(a){var b=-1,c=a.length,d=[];while(++b8?function(a){return a/c}:function(a){return a*c},symbol:a}}function y(a){return function(b){return b<=0?0:b>=1?1:a(b)}}function z(a){return function(b){return 1-a(1-b)}}function A(a){return function(b){return.5*(b<.5?a(2*b):2-a(2-2*b))}}function B(a){return a*a}function C(a){return a*a*a}function D(a){if(a<=0)return 0;if(a>=1)return 1;var b=a*a,c=b*a; -return 4*(a<.5?c:3*(a-b)+c-.75)}function E(a){return function(b){return Math.pow(b,a)}}function F(a){return 1-Math.cos(a*kd/2)}function G(a){return Math.pow(2,10*(a-1))}function H(a){return 1-Math.sqrt(1-a*a)}function I(a,b){var c;return arguments.length<2&&(b=.45),arguments.length?c=b/(2*kd)*Math.asin(1/a):(a=1,c=b/4),function(d){return 1+a*Math.pow(2,10*-d)*Math.sin((d-c)*2*kd/b)}}function J(a){return a||(a=1.70158),function(b){return b*b*((a+1)*b-a)}}function K(a){return a<1/2.75?7.5625*a*a:a<2/2.75?7.5625*(a-=1.5/2.75)*a+.75:a<2.5/2.75?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375}function L(){d3.event.stopPropagation(),d3.event.preventDefault()}function M(){var a=d3.event,b;while(b=a.sourceEvent)a=b;return a}function N(a){var b=new t,c=0,d=arguments.length;while(++c360?a-=360:a<0&&(a+=360),a<60?f+(g-f)*a/60:a<180?g:a<240?f+(g-f)*(240-a)/60:f}function e(a){return Math.round(d(a)*255)}var f,g;return a%=360,a<0&&(a+=360),b=b<0?0:b>1?1:b,c=c<0?0:c>1?1:c,g=c<=.5?c*(1+b):c+b-c*b,f=2*c-g,W(e(a+120),e(a),e(a-120))}function fb(a,b,c){return new gb(a,b,c)}function gb(a,b,c){this.h=a,this.c=b,this.l=c}function hb(a,b,c){return ib(c,Math.cos(a*=md)*b,Math.sin(a)*b)}function ib(a,b,c){return new jb(a,b,c)}function jb(a,b,c){this.l=a,this.a=b,this.b=c}function kb(a,b,c){var d=(a+16)/116,e=d+b/500,f=d-c/200;return e=mb(e)*Ld,d=mb(d)*Md,f=mb(f)*Nd,W(ob(3.2404542*e-1.5371385*d-.4985314*f),ob(-.969266*e+1.8760108*d+.041556*f),ob(.0556434*e-.2040259*d+1.0572252*f))}function lb(a,b,c){return fb(Math.atan2(c,b)/kd*180,Math.sqrt(b*b+c*c),a)}function mb(a){return a>.206893034?a*a*a:(a-4/29)/7.787037}function nb(a){return a>.008856?Math.pow(a,1/3):7.787037*a+4/29}function ob(a){return Math.round(255*(a<=.00304?12.92*a:1.055*Math.pow(a,1/2.4)-.055))}function pb(a){return qd(a,Ud),a}function qb(a){return function(){return Pd(a,this)}}function rb(a){return function(){return Qd(a,this)}}function sb(a,b){function c(){this.removeAttribute(a)}function d(){this.removeAttributeNS(a.space,a.local)}function e(){this.setAttribute(a,b)}function f(){this.setAttributeNS(a.space,a.local,b)}function g(){var c=b.apply(this,arguments);c==null?this.removeAttribute(a):this.setAttribute(a,c)}function h(){var c=b.apply(this,arguments);c==null?this.removeAttributeNS(a.space,a.local):this.setAttributeNS(a.space,a.local,c)}return a=d3.ns.qualify(a),b==null?a.local?d:c:typeof b=="function"?a.local?h:g:a.local?f:e}function tb(a){return new RegExp("(?:^|\\s+)"+d3.requote(a)+"(?:\\s+|$)","g")}function ub(a,b){function c(){var c=-1;while(++c0&&(a=a.substring(0,g)),b?e:d}function Cb(a,b){for(var c=0,d=a.length;cc?j():(e.active=c,m.start.call(a,k,b),g.tween.forEach(function(c,d){(d=d.call(a,k,b))&&p.push(d)}),i(d)||d3.timer(i,0,h),1)}function i(d){if(e.active!==c)return j();var f=(d-n)/o,g=l(f),h=p.length;while(h>0)p[--h].call(a,g);if(f>=1)return j(),m.end.call(a,k,b),1}function j(){return--e.count?delete e[c]:delete a.__transition__,1}var k=a.__data__,l=g.ease,m=g.event,n=g.delay,o=g.duration,p=[];return n<=d?f(d):d3.timer(f,n,h),1},0,h),g}}function Gb(a){return a==null&&(a=""),function(){this.textContent=a}}function Hb(a,b,c,d){var e=a.id;return Cb(a,typeof c=="function"?function(a,f,g){a.__transition__[e].tween.set(b,d(c.call(a,a.__data__,f,g)))}:(c=d(c),function(a){a.__transition__[e].tween.set(b,c)}))}function Ib(){var a,b=Date.now(),c=be;while(c)a=b-c.then,a>=c.delay&&(c.flush=c.callback(a)),c=c.next;var d=Jb()-b;d>24?(isFinite(d)&&(clearTimeout(de),de=setTimeout(Ib,d)),ce=0):(ce=1,ee(Ib))}function Jb(){var a=null,b=be,c=Infinity;while(b)b.flush?(delete ae[b.callback.id],b=a?a.next=b.next:be=b.next):(c=Math.min(c,b.then+b.delay),b=(a=b).next);return c}function Kb(a,b){var c=a.ownerSVGElement||a;if(c.createSVGPoint){var d=c.createSVGPoint();if(fe<0&&(window.scrollX||window.scrollY)){c=d3.select(document.body).append("svg").style("position","absolute").style("top",0).style("left",0);var e=c[0][0].getScreenCTM();fe=!e.f&&!e.e,c.remove()}return fe?(d.x=b.pageX,d.y=b.pageY):(d.x=b.clientX,d.y=b.clientY),d=d.matrixTransform(a.getScreenCTM().inverse()),[d.x,d.y]}var f=a.getBoundingClientRect();return[b.clientX-f.left-a.clientLeft,b.clientY-f.top-a.clientTop]}function Lb(){}function Mb(a){var b=a[0],c=a[a.length-1];return b2?Xb:Wb,i=d?U:T;return g=e(a,b,i,c),h=e(b,a,i,d3.interpolate),f}function f(a){return g(a)}var g,h;return f.invert=function(a){return h(a)},f.domain=function(b){return arguments.length?(a=b.map(Number),e()):a},f.range=function(a){return arguments.length?(b=a,e()):b},f.rangeRound=function(a){return f.range(a).interpolate(d3.interpolateRound)},f.clamp=function(a){return arguments.length?(d=a,e()):d},f.interpolate=function(a){return arguments.length?(c=a,e()):c},f.ticks=function(b){return Ub(a,b)},f.tickFormat=function(b){return Vb(a,b)},f.nice=function(){return Ob(a,Sb),e()},f.copy=function(){return Qb(a,b,c,d)},e()}function Rb(a,b){return d3.rebind(a,b,"range","rangeRound","interpolate","clamp")}function Sb(a){return a=Math.pow(10,Math.round(Math.log(a)/Math.LN10)-1),a&&{floor:function(b){return Math.floor(b/a)*a},ceil:function(b){return Math.ceil(b/a)*a}}}function Tb(a,b){var c=Mb(a),d=c[1]-c[0],e=Math.pow(10,Math.floor(Math.log(d/b)/Math.LN10)),f=b/d*e;return f<=.15?e*=10:f<=.35?e*=5:f<=.75&&(e*=2),c[0]=Math.ceil(c[0]/e)*e,c[1]=Math.floor(c[1]/e)*e+e*.5,c[2]=e,c}function Ub(a,b){return d3.range.apply(d3,Tb(a,b))}function Vb(a,b){return d3.format(",."+Math.max(0,-Math.floor(Math.log(Tb(a,b)[2])/Math.LN10+.01))+"f")}function Wb(a,b,c,d){var e=c(a[0],a[1]),f=d(b[0],b[1]);return function(a){return f(e(a))}}function Xb(a,b,c,d){var e=[],f=[],g=0,h=Math.min(a.length,b.length)-1;a[h]0;j--)e.push(d(f)*j)}else{for(;fi;g--);e=e.slice(f,g)}return e},c.tickFormat=function(a,e){arguments.length<2&&(e=ge);if(!arguments.length)return e;var f=Math.max(.1,a/c.ticks().length),g=b===$b?(h=-1e-12,Math.floor):(h=1e-12,Math.ceil),h;return function(a){return a/d(g(b(a)+h))<=f?e(a):""}},c.copy=function(){return Yb(a.copy(),b)},Rb(c,a)}function Zb(a){return Math.log(a<0?0:a)/Math.LN10}function $b(a){return-Math.log(a>0?0:-a)/Math.LN10}function _b(a,b){function c(b){return a(d(b))}var d=ac(b),e=ac(1/b);return c.invert=function(b){return e(a.invert(b))},c.domain=function(b){return arguments.length?(a.domain(b.map(d)),c):a.domain().map(e)},c.ticks=function(a){return Ub(c.domain(),a)},c.tickFormat=function(a){return Vb(c.domain(),a)},c.nice=function(){return c.domain(Ob(c.domain(),Sb))},c.exponent=function(a){if(!arguments.length)return b;var f=c.domain();return d=ac(b=a),e=ac(1/b),c.domain(f)},c.copy=function(){return _b(a.copy(),b)},Rb(c,a)}function ac(a){return function(b){return b<0?-Math.pow(-b,a):Math.pow(b,a)}}function bc(a,b){function c(b){return g[((e.get(b)||e.set(b,a.push(b)))-1)%g.length]}function d(b,c){return d3.range(a.length).map(function(a){return b+c*a})}var e,g,h;return c.domain=function(d){if(!arguments.length)return a;a=[],e=new f;var g=-1,h=d.length,i;while(++gd&&(c=b,d=e);return c}function wc(a){return a.reduce(xc,0)}function xc(a,b){return a+b[1]}function yc(a,b){return zc(a,Math.ceil(Math.log(b.length)/Math.LN2+1))}function zc(a,b){var c=-1,d=+a[0],e=(a[1]-d)/b,f=[];while(++c<=b)f[c]=e*c+d;return f}function Ac(a){return[d3.min(a),d3.max(a)]}function Bc(a,b){return d3.rebind(a,b,"sort","children","value"),a.nodes=a,a.links=Fc,a}function Cc(a){return a.children}function Dc(a){return a.value}function Ec(a,b){return b.value-a.value}function Fc(a){return d3.merge(a.map(function(a){return(a.children||[]).map(function(b){return{source:a,target:b}})}))}function Gc(a,b){return a.value-b.value}function Hc(a,b){var c=a._pack_next;a._pack_next=b,b._pack_prev=a,b._pack_next=c,c._pack_prev=b}function Ic(a,b){a._pack_next=b,b._pack_prev=a}function Jc(a,b){var c=b.x-a.x,d=b.y-a.y,e=a.r+b.r;return e*e-c*c-d*d>.001}function Kc(a){function b(a){d=Math.min(a.x-a.r,d),e=Math.max(a.x+a.r,e),f=Math.min(a.y-a.r,f),g=Math.max(a.y+a.r,g)}if(!(c=a.children)||!(n=c.length))return;var c,d=Infinity,e=-Infinity,f=Infinity,g=-Infinity,h,i,j,k,l,m,n;c.forEach(Lc),h=c[0],h.x=-h.r,h.y=0,b(h);if(n>1){i=c[1],i.x=i.r,i.y=0,b(i);if(n>2){j=c[2],Oc(h,i,j),b(j),Hc(h,j),h._pack_prev=j,Hc(j,i),i=h._pack_next;for(k=3;k0&&(a=d)}return a}function Xc(a,b){return a.x-b.x}function Yc(a,b){return b.x-a.x}function Zc(a,b){return a.depth-b.depth}function $c(a,b){function c(a,d){var e=a.children;if(e&&(i=e.length)){var f,g=null,h=-1,i;while(++h=0)f=d[e]._tree,f.prelim+=b,f.mod+=b,b+=f.shift+(c+=f.change)}function ad(a,b,c){a=a._tree,b=b._tree;var d=c/(b.number-a.number);a.change+=d,b.change-=d,b.shift+=c,b.prelim+=c,b.mod+=c}function bd(a,b,c){return a._tree.ancestor.parent==b.parent?a._tree.ancestor:c}function cd(a){return{x:a.x,y:a.y,dx:a.dx,dy:a.dy}}function dd(a,b){var c=a.x+b[3],d=a.y+b[0],e=a.dx-b[1]-b[3],f=a.dy-b[0]-b[2];return e<0&&(c+=e/2,e=0),f<0&&(d+=f/2,f=0),{x:c,y:d,dx:e,dy:f}}var ed=".",fd=",",gd=[3,3];Date.now||(Date.now=function(){return+new Date});try{document.createElement("div").style.setProperty("opacity",0,"")}catch(hd){var id=CSSStyleDeclaration.prototype,jd=id.setProperty;id.setProperty=function(a,b,c){jd.call(this,a,b+"",c)}}d3={version:"3.0.2"};var kd=Math.PI,ld=1e-6,md=kd/180,nd=180/kd,od=e;try{od(document.documentElement.childNodes)[0].nodeType}catch(pd){od=d}var qd=[].__proto__?function(a,b){a.__proto__=b}:function(a,b){for(var c in b)a[c]=b[c]};d3.map=function(a){var b=new f;for(var c in a)b.set(c,a[c]);return b},c(f,{has:function(a){return rd+a in this},get:function(a){return this[rd+a]},set:function(a,b){return this[rd+a]=b},remove:function(a){return a=rd+a,a in this&&delete this[a]},keys:function(){var a=[];return this.forEach(function(b){a.push(b)}),a},values:function(){var a=[];return this.forEach(function(b,c){a.push(c)}),a},entries:function(){var a=[];return this.forEach(function(b,c){a.push({key:b,value:c})}),a},forEach:function(a){for(var b in this)b.charCodeAt(0)===sd&&a.call(this,b.substring(1),this[b])}});var rd="\x00",sd=rd.charCodeAt(0);d3.functor=i,d3.rebind=function(a,b){var c=1,d=arguments.length,e;while(++cb?1:a>=b?0:NaN},d3.descending=function(a,b){return ba?1:b>=a?0:NaN},d3.mean=function(a,b){var c=a.length,d,e=0,f=-1,g=0;if(arguments.length===1)while(++f1&&(a=a.map(b)),a=a.filter(k),a.length?d3.quantile(a.sort(d3.ascending),.5):undefined},d3.min=function(a,b){var c=-1,d=a.length,e,f;if(arguments.length===1){while(++cf&&(e=f)}else{while(++cf&&(e=f)}return e},d3.max=function(a,b){var c=-1,d=a.length,e,f;if(arguments.length===1){while(++ce&&(e=f)}else{while(++ce&&(e=f)}return e},d3.extent=function(a,b){var c=-1,d=a.length,e,f,g;if(arguments.length===1){while(++cf&&(e=f),gf&&(e=f),g1);return a+b*c*Math.sqrt(-2*Math.log(e)/e)}},logNormal:function(a,b){var c=arguments.length;c<2&&(b=1),c<1&&(a=0);var d=d3.random.normal();return function(){return Math.exp(a+b*d())}},irwinHall:function(a){return function(){for(var b=0,c=0;c>>1;a.call(b,b[f],f)>>1;c=d.length)return h?h.call(c,b):g?b.sort(g):b;var i=-1,j=b.length,k=d[e++],l,m,n=new f,o,p={};while(++i=d.length)return a;var f=[],g=e[c++],h;for(h in a)f.push({key:h,values:b(a[h],c)});return g&&f.sort(function(a,b){return g(a.key,b.key)}),f}var c={},d=[],e=[],g,h;return c.map=function(b){return a(b,0)},c.entries=function(c){return b(a(c,0),0)},c.key=function(a){return d.push(a),c},c.sortKeys=function(a){return e[d.length-1]=a,c},c.sortValues=function(a){return g=a,c},c.rollup=function(a){return h=a,c},c},d3.keys=function(a){var b=[];for(var c in a)b.push(c);return b},d3.values=function(a){var b=[];for(var c in a)b.push(a[c]);return b},d3.entries=function(a){var b=[];for(var c in a)b.push({key:c,value:a[c]});return b},d3.permute=function(a,b){var c=[],d=-1,e=b.length;while(++db)d.push(g/e);else while((g=a+c*++f)=200&&a<300||a===304?f.load.call(e,i.call(e,j)):f.error.call(e,j)}var e={},f=d3.dispatch("progress","load","error"),h={},i=g,j=new(window.XDomainRequest&&/^(http(s)?:)?\/\//.test(a)?XDomainRequest:XMLHttpRequest);return"onload"in j?j.onload=j.onerror=d:j.onreadystatechange=function(){j.readyState>3&&d()},j.onprogress=function(a){var b=d3.event;d3.event=a;try{f.progress.call(e,j)}finally{d3.event=b}},e.header=function(a,b){return a=(a+"").toLowerCase(),arguments.length<2?h[a]:(b==null?delete h[a]:h[a]=b+"",e)},e.mimeType=function(a){return arguments.length?(b=a==null?null:a+"",e):b},e.response=function(a){return i=a,e},["get","post"].forEach(function(a){e[a]=function(){return e.send.apply(e,[a].concat(od(arguments)))}}),e.send=function(c,d,f){arguments.length===2&&typeof d=="function"&&(f=d,d=null),j.open(c,a,!0),b!=null&&!("accept"in h)&&(h.accept=b+",*/*");if(j.setRequestHeader)for(var g in h)j.setRequestHeader(g,h[g]);return b!=null&&j.overrideMimeType&&j.overrideMimeType(b),f!=null&&e.on("error",f).on("load",function(a){f(null,a)}),j.send(d==null?null:d),e},e.abort=function(){return j.abort(),e},d3.rebind(e,f,"on"),arguments.length===2&&typeof b=="function"&&(c=b,b=null),c==null?e:e.get(o(c))},d3.text=function(){return d3.xhr.apply(d3,arguments).response(p)},d3.json=function(a,b){return d3.xhr(a,"application/json",b).response(q)},d3.html=function(a,b){return d3.xhr(a,"text/html",b).response(r)},d3.xml=function(){return d3.xhr.apply(d3,arguments).response(s)};var vd={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};d3.ns={prefix:vd,qualify:function(a){var b=a.indexOf(":"),c=a;return b>=0&&(c=a.substring(0,b),a=a.substring(b+1)),vd.hasOwnProperty(c)?{space:vd[c],local:a}:a}},d3.dispatch=function(){var a=new t,b=-1,c=arguments.length;while(++b0&&(d=a.substring(c+1),a=a.substring(0,c)),arguments.length<2?this[a].on(d):this[a].on(d,b)},d3.format=function(a){var b=wd.exec(a),c=b[1]||" ",d=b[2]||">",e=b[3]||"",f=b[4]||"",g=b[5],h=+b[6],i=b[7],j=b[8],k=b[9],l=1,m="",n=!1;j&&(j=+j.substring(1));if(g||c==="0"&&d==="=")g=c="0",d="=",i&&(h-=Math.floor((h-1)/4));switch(k){case"n":i=!0,k="g";break;case"%":l=100,m="%",k="f";break;case"p":l=100,m="%",k="r";break;case"b":case"o":case"x":case"X":f&&(f="0"+k.toLowerCase());case"c":case"d":n=!0,j=0;break;case"s":l=-1,k="r"}f==="#"&&(f=""),k=="r"&&!j&&(k="g"),k=xd.get(k)||w;var o=g&&i;return function(a){if(n&&a%1)return"";var b=a<0||a===0&&1/a<0?(a=-a,"-"):e;if(l<0){var p=d3.formatPrefix(a,j);a=p.scale(a),m=p.symbol}else a*=l;a=k(a,j),!g&&i&&(a=yd(a));var q=f.length+a.length+(o?0:b.length),r=q"?r+b+a:d==="^"?r.substring(0,q>>=1)+b+a+r.substring(q):b+(o?a:r+a))+m}};var wd=/(?:([^{])?([<>=^]))?([+\- ])?(#)?(0)?([0-9]+)?(,)?(\.[0-9]+)?([a-zA-Z%])?/,xd=d3.map({b:function(a){return a.toString(2)},c:function(a){return String.fromCharCode(a)},o:function(a){return a.toString(8)},x:function(a){return a.toString(16)},X:function(a){return a.toString(16).toUpperCase()},g:function(a,b){return a.toPrecision(b)},e:function(a,b){return a.toExponential(b)},f:function(a,b){return a.toFixed(b)},r:function(a,b){return d3.round(a,b=v(a,b)).toFixed(Math.max(0,Math.min(20,b)))}}),yd=g;if(gd){var zd=gd.length;yd=function(a){var b=a.lastIndexOf("."),c=b>=0?"."+a.substring(b+1):(b=a.length,""),d=[],e=0,f=gd[0];while(b>0&&f>0)d.push(a.substring(b-=f,b+f)),f=gd[e=(e+1)%zd];return d.reverse().join(fd||"")+c}}var Ad=["y","z","a","f","p","n","μ","m","","k","M","G","T","P","E","Z","Y"].map(x);d3.formatPrefix=function(a,b){var c=0;return a&&(a<0&&(a*=-1),b&&(a=d3.round(a,v(a,b))),c=1+Math.floor(1e-12+Math.log(a)/Math.LN10),c=Math.max(-24,Math.min(24,Math.floor((c<=0?c+1:c-1)/3)*3))),Ad[8+c/3]};var Bd=function(){return g},Cd=d3.map({linear:Bd,poly:E,quad:function(){return B},cubic:function(){return C},sin:function(){return F},exp:function(){return G},circle:function(){return H},elastic:I,back:J,bounce:function(){return K}}),Dd=d3.map({"in":g,out:z,"in-out":A,"out-in":function(a){return A(z(a))}});d3.ease=function(a){var b=a.indexOf("-"),c=b>=0?a.substring(0,b):a,d=b>=0?a.substring(b+1):"in";return c=Cd.get(c)||Bd,d=Dd.get(d)||g,y(d(c.apply(null,Array.prototype.slice.call(arguments,1))))},d3.event=null,d3.transform=function(a){var b=document.createElementNS(d3.ns.prefix.svg,"g");return(d3.transform=function(a){b.setAttribute("transform",a);var c=b.transform.baseVal.consolidate();return new O(c?c.matrix:Ed)})(a)},O.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var Ed={a:1,b:0,c:0,d:1,e:0,f:0};d3.interpolate=function(a,b){var c=d3.interpolators.length,d;while(--c>=0&&!(d=d3.interpolators[c](a,b)));return d},d3.interpolateNumber=function(a,b){return b-=a,function(c){return a+b*c}},d3.interpolateRound=function(a,b){return b-=a,function(c){return Math.round(a+b*c)}},d3.interpolateString=function(a,b){var c,d,e,f=0,g=0,h=[],i=[],j,k;Fd.lastIndex=0;for(d=0;c=Fd.exec(b);++d)c.index&&h.push(b.substring(f,g=c.index)),i.push({i:h.length,x:c[0]}),h.push(null),f=Fd.lastIndex;f180?k+=360:k-j>180&&(j+=360),d.push({i:c.push(c.pop()+"rotate(",null,")")-2,x:d3.interpolateNumber(j,k)})):k&&c.push(c.pop()+"rotate("+k+")"),l!=m?d.push({i:c.push(c.pop()+"skewX(",null,")")-2,x:d3.interpolateNumber(l,m)}):m&&c.push(c.pop()+"skewX("+m+")"),n[0]!=o[0]||n[1]!=o[1]?(e=c.push(c.pop()+"scale(",null,",",null,")"),d.push({i:e-4,x:d3.interpolateNumber(n[0],o[0])},{i:e-2,x:d3.interpolateNumber(n[1],o[1])})):(o[0]!=1||o[1]!=1)&&c.push(c.pop()+"scale("+o+")"),e=d.length,function(a){var b=-1,f;while(++b180?f-=360:f<-180&&(f+=360),function(a){return eb(c+f*a,d+g*a,e+h*a)+""}},d3.interpolateLab=function(a,b){a=d3.lab(a),b=d3.lab(b);var c=a.l,d=a.a,e=a.b,f=b.l-c,g=b.a-d,h=b.b-e;return function(a){return kb(c+f*a,d+g*a,e+h*a)+"" -}},d3.interpolateHcl=function(a,b){a=d3.hcl(a),b=d3.hcl(b);var c=a.h,d=a.c,e=a.l,f=b.h-c,g=b.c-d,h=b.l-e;return f>180?f-=360:f<-180&&(f+=360),function(a){return hb(c+f*a,d+g*a,e+h*a)+""}},d3.interpolateArray=function(a,b){var c=[],d=[],e=a.length,f=b.length,g=Math.min(a.length,b.length),h;for(h=0;h=0;)if(f=c[d])e&&e!==f.nextSibling&&e.parentNode.insertBefore(f,e),e=f;return this},Ud.sort=function(a){a=Ab.apply(this,arguments);for(var b=-1,c=this.length;++b0?h=a:h=0:a>0&&(d.start({type:"start",alpha:h=a}),d3.timer(c.tick)),c):h},c.start=function(){function a(a,c){var e=b(d),f=-1,g=e.length,h;while(++fe&&(e=h),d.push(h)}for(g=0;g0){f=-1;while(++f=i[0]&&o<=i[1]&&(k=g[d3.bisect(j,o,1,m)-1],k.y+=n,k.push(a[f]))}return g}var b=!0,c=Number,d=Ac,e=yc;return a.value=function(b){return arguments.length?(c=b,a):c},a.range=function(b){return arguments.length?(d=i(b),a):d},a.bins=function(b){return arguments.length?(e=typeof b=="number"?function(a){return zc(a,b)}:i(b),a):e},a.frequency=function(c){return arguments.length?(b=!!c,a):b},a},d3.layout.hierarchy=function(){function a(b,g,h){var i=e.call(c,b,g);b.depth=g,h.push(b);if(i&&(k=i.length)){var j=-1,k,l=b.children=[],m=0,n=g+1,o;while(++j0){var k=c*j/2;$c(g,function(a){a.r+=k}),$c(g,Kc),$c(g,function(a){a.r-=k}),j=Math.max(2*g.r/h,2*g.r/i)}return Nc(g,h/2,i/2,1/j),f}var b=d3.layout.hierarchy().sort(Gc),c=0,d=[1,1];return a.size=function(b){return arguments.length?(d=b,a):d},a.padding=function(b){return arguments.length?(c=+b,a):c},Bc(a,b)},d3.layout.cluster=function(){function a(a,e){var f=b.call(this,a,e),g=f[0],h,i=0;$c(g,function(a){var b=a.children;b&&b.length?(a.x=Qc(b),a.y=Pc(b)):(a.x=h?i+=c(a,h):0,a.y=0,h=a)});var j=Rc(g),k=Sc(g),l=j.x-c(j,k)/2,m=k.x+c(k,j)/2;return $c(g,function(a){a.x=(a.x-l)/(m-l)*d[0],a.y=(1-(g.y?a.y/g.y:1))*d[1]}),f}var b=d3.layout.hierarchy().sort(null).value(null),c=Tc,d=[1,1];return a.separation=function(b){return arguments.length?(c=b,a):c},a.size=function(b){return arguments.length?(d=b,a):d},Bc(a,b)},d3.layout.tree=function(){function a(a,e){function f(a,b){var d=a.children,e=a._tree;if(d&&(g=d.length)){var g,i=d[0],j,k=i,l,m=-1;while(++m0&&(ad(bd(g,a,d),a,m),i+=m,j+=m),k+=g._tree.mod,i+=e._tree.mod,l+=h._tree.mod,j+=f._tree.mod;g&&!Vc(f)&&(f._tree.thread=g,f._tree.mod+=k-j),e&&!Uc(h)&&(h._tree.thread=e,h._tree.mod+=i-l,d=a)}return d}var i=b.call(this,a,e),j=i[0];$c(j,function(a,b){a._tree={ancestor:a,prelim:0,mod:0,change:0,shift:0,number:b?b._tree.number+1:0}}),f(j),g(j,-j._tree.prelim);var k=Wc(j,Yc),l=Wc(j,Xc),m=Wc(j,Zc),n=k.x-c(k,l)/2,o=l.x+c(l,k)/2,p=m.depth||1;return $c(j,function(a){a.x=(a.x-n)/(o-n)*d[0],a.y=a.depth/p*d[1],delete a._tree}),i}var b=d3.layout.hierarchy().sort(null).value(null),c=Tc,d=[1,1];return a.separation=function(b){return arguments.length?(c=b,a):c},a.size=function(b){return arguments.length?(d=b,a):d},Bc(a,b)},d3.layout.treemap=function(){function a(a,b){var c=-1,d=a.length,e,f;while(++c0)h.push(j=i[p-1]),h.area+=j.area,n!=="squarify"||(m=d(h,o))<=l?(i.pop(),l=m):(h.area-=h.pop().area,e(h,o,g,!1),o=Math.min(g.dx,g.dy),h.length=h.area=0,l=Infinity);h.length&&(e(h,o,g,!0),h.length=h.area=0),f.forEach(b)}}function c(b){var d=b.children;if(d&&d.length){var f=k(b),g=d.slice(),h,i=[];a(g,f.dx*f.dy/b.value),i.area=0;while(h=g.pop())i.push(h),i.area+=h.area,h.z!=null&&(e(i,h.z?f.dx:f.dy,f,!g.length),i.length=i.area=0);d.forEach(c)}}function d(a,b){var c=a.area,d,e=0,f=Infinity,g=-1,h=a.length;while(++ge&&(e=d)}return c*=c,b*=b,c?Math.max(b*e*o/c,c/(b*f*o)):Infinity}function e(a,b,c,d){var e=-1,f=a.length,g=c.x,i=c.y,j=b?h(a.area/b):0,k;if(b==c.dx){if(d||j>c.dy)j=c.dy;while(++ec.dx)j=c.dx;while(++e=a.x1&&b.x1<=a.x2||b.x2>=a.x1&&b.x2<=a.x2||a.x1>=b.x1&&a.x2<=b.x2){x=true}if(b.y1>=a.y1&&b.y1<=a.y2||b.y2>=a.y1&&b.y2<=a.y2||a.y1>=b.y1&&a.y2<=b.y2){y=true}return x&&y};fn.detect_overlapping_region=function(a,b){var regionX="";var regionY="";if(a.y1>b.cy&&a.y1b.y1&&a.y2b.cx&&a.x1b.x1&&a.x2this.player_max_left){left=this.player_max_left}else if(left=mouse_down_zone){nextScrollTop=scrollTop+30;if(nextScrollTop0){$window.scrollTop(nextScrollTop);this.scrollOffset=this.scrollOffset-30}}};fn.calculate_positions=function(e){this.window_height=$window.height()};fn.drag_handler=function(e){var node=e.target.nodeName;if(this.disabled||e.which!==1&&!isTouch){return}if(this.ignore_drag(e)){return}var self=this;var first=true;this.$player=$(e.currentTarget);this.el_init_pos=this.get_actual_pos(this.$player);this.mouse_init_pos=this.get_mouse_pos(e);this.offsetY=this.mouse_init_pos.top-this.el_init_pos.top;this.$body.on(pointer_events.move,function(mme){var mouse_actual_pos=self.get_mouse_pos(mme);var diff_x=Math.abs(mouse_actual_pos.left-self.mouse_init_pos.left);var diff_y=Math.abs(mouse_actual_pos.top-self.mouse_init_pos.top);if(!(diff_x>self.options.distance||diff_y>self.options.distance)){return false}if(first){first=false;self.on_dragstart.call(self,mme);return false}if(self.is_dragging===true){self.on_dragmove.call(self,mme)}return false});return false};fn.on_dragstart=function(e){e.preventDefault();this.drag_start=true;this.is_dragging=true;var offset=this.$container.offset();this.baseX=Math.round(offset.left);this.baseY=Math.round(offset.top);this.doc_height=$(document).height();if(this.options.helper==="clone"){this.$helper=this.$player.clone().appendTo(this.$container).addClass("helper");this.helper=true}else{this.helper=false}this.scrollOffset=0;this.el_init_offset=this.$player.offset();this.player_width=this.$player.width();this.player_height=this.$player.height();this.player_max_left=this.$container.width()-this.player_width+this.options.offset_left;if(this.options.start){this.options.start.call(this.$player,e,{helper:this.helper?this.$helper:this.$player})}return false};fn.on_dragmove=function(e){var offset=this.get_offset(e);this.options.autoscroll&&this.manage_scroll(offset);(this.helper?this.$helper:this.$player).css({position:"absolute",left:offset.left,top:offset.top});var ui={position:{left:offset.left,top:offset.top}};if(this.options.drag){this.options.drag.call(this.$player,e,ui)}return false};fn.on_dragstop=function(e){var offset=this.get_offset(e);this.drag_start=false;var ui={position:{left:offset.left,top:offset.top}};if(this.options.stop){this.options.stop.call(this.$player,e,ui)}if(this.helper){this.$helper.remove()}return false};fn.on_select_start=function(e){if(this.disabled){return}if(this.ignore_drag(e)){return}return false};fn.enable=function(){this.disabled=false};fn.disable=function(){this.disabled=true};fn.destroy=function(){this.disable();$.removeData(this.$container,"drag")};fn.ignore_drag=function(event){if(this.options.handle){return!$(event.target).is(this.options.handle)}return $.inArray(event.target.nodeName,this.options.ignore_dragging)>=0};$.fn.drag=function(options){return this.each(function(){if(!$.data(this,"drag")){$.data(this,"drag",new Draggable(this,options))}})}})(jQuery,window,document);(function($,window,document,undefined){var defaults={namespace:"",widget_selector:"li",widget_margins:[10,10],widget_base_dimensions:[400,225],extra_rows:0,extra_cols:0,min_cols:1,min_rows:15,max_size_x:6,autogenerate_stylesheet:true,avoid_overlapped_widgets:true,serialize_params:function($w,wgd){return{col:wgd.col,row:wgd.row,size_x:wgd.size_x,size_y:wgd.size_y}},collision:{},draggable:{distance:4}};function Gridster(el,options){this.options=$.extend(true,defaults,options);this.$el=$(el);this.$wrapper=this.$el.parent();this.$widgets=this.$el.children(this.options.widget_selector).addClass("gs_w");this.widgets=[];this.$changed=$([]);this.wrapper_width=this.$wrapper.width();this.min_widget_width=this.options.widget_margins[0]*2+this.options.widget_base_dimensions[0];this.min_widget_height=this.options.widget_margins[1]*2+this.options.widget_base_dimensions[1];this.init()}Gridster.generated_stylesheets=[];var fn=Gridster.prototype;fn.init=function(){this.generate_grid_and_stylesheet();this.get_widgets_from_DOM();this.set_dom_grid_height();this.$wrapper.addClass("ready");this.draggable();$(window).bind("resize",throttle($.proxy(this.recalculate_faux_grid,this),200))};fn.disable=function(){this.$wrapper.find(".player-revert").removeClass("player-revert");this.drag_api.disable();return this};fn.enable=function(){this.drag_api.enable();return this};fn.add_widget=function(html,size_x,size_y,col,row){var pos;size_x||(size_x=1);size_y||(size_y=1);if(!col&!row){pos=this.next_position(size_x,size_y)}else{pos={col:col,row:row};this.empty_cells(col,row,size_x,size_y)}var $w=$(html).attr({"data-col":pos.col,"data-row":pos.row,"data-sizex":size_x,"data-sizey":size_y}).addClass("gs_w").appendTo(this.$el).hide();this.$widgets=this.$widgets.add($w);this.register_widget($w);this.add_faux_rows(pos.size_y);this.set_dom_grid_height();return $w.fadeIn()};fn.resize_widget=function($widget,size_x,size_y){var wgd=$widget.coords().grid;size_x||(size_x=wgd.size_x);size_y||(size_y=wgd.size_y);if(size_x>this.cols){size_x=this.cols}var old_cells_occupied=this.get_cells_occupied(wgd);var old_size_x=wgd.size_x;var old_size_y=wgd.size_y;var old_col=wgd.col;var new_col=old_col;var wider=size_x>old_size_x;var taller=size_y>old_size_y;if(old_col+size_x-1>this.cols){var diff=old_col+(size_x-1)-this.cols;var c=old_col-diff;new_col=Math.max(1,c)}var new_grid_data={col:new_col,row:wgd.row,size_x:size_x,size_y:size_y};var new_cells_occupied=this.get_cells_occupied(new_grid_data);var empty_cols=[];$.each(old_cells_occupied.cols,function(i,col){if($.inArray(col,new_cells_occupied.cols)===-1){empty_cols.push(col)}});var occupied_cols=[];$.each(new_cells_occupied.cols,function(i,col){if($.inArray(col,old_cells_occupied.cols)===-1){occupied_cols.push(col)}});var empty_rows=[];$.each(old_cells_occupied.rows,function(i,row){if($.inArray(row,new_cells_occupied.rows)===-1){empty_rows.push(row)}});var occupied_rows=[];$.each(new_cells_occupied.rows,function(i,row){if($.inArray(row,old_cells_occupied.rows)===-1){occupied_rows.push(row)}});this.remove_from_gridmap(wgd);if(occupied_cols.length){var cols_to_empty=[new_col,wgd.row,size_x,Math.min(old_size_y,size_y),$widget];this.empty_cells.apply(this,cols_to_empty)}if(occupied_rows.length){var rows_to_empty=[new_col,wgd.row,size_x,size_y,$widget];this.empty_cells.apply(this,rows_to_empty)}wgd.col=new_col;wgd.size_x=size_x;wgd.size_y=size_y;this.add_to_gridmap(new_grid_data,$widget);$widget.data("coords").update({width:size_x*this.options.widget_base_dimensions[0]+(size_x-1)*this.options.widget_margins[0]*2,height:size_y*this.options.widget_base_dimensions[1]+(size_y-1)*this.options.widget_margins[1]*2});if(size_y>old_size_y){this.add_faux_rows(size_y-old_size_y)}if(size_x>old_size_x){this.add_faux_cols(size_x-old_size_x)}$widget.attr({"data-col":new_col,"data-sizex":size_x,"data-sizey":size_y});if(empty_cols.length){var cols_to_remove_holes=[empty_cols[0],wgd.row,empty_cols.length,Math.min(old_size_y,size_y),$widget];this.remove_empty_cells.apply(this,cols_to_remove_holes)}if(empty_rows.length){var rows_to_remove_holes=[new_col,wgd.row,size_x,size_y,$widget];this.remove_empty_cells.apply(this,rows_to_remove_holes)}return $widget};fn.empty_cells=function(col,row,size_x,size_y,$exclude){var $nexts=this.widgets_below({col:col,row:row-size_y,size_x:size_x,size_y:size_y});$nexts.not($exclude).each($.proxy(function(i,w){var wgd=$(w).coords().grid;if(!(wgd.row<=row+size_y-1)){return}var diff=row+size_y-wgd.row;this.move_widget_down($(w),diff)},this));this.set_dom_grid_height();return this};fn.remove_empty_cells=function(col,row,size_x,size_y,exclude){var $nexts=this.widgets_below({col:col,row:row,size_x:size_x,size_y:size_y});$nexts.not(exclude).each($.proxy(function(i,widget){this.move_widget_up($(widget),size_y)},this));this.set_dom_grid_height();return this};fn.next_position=function(size_x,size_y){size_x||(size_x=1);size_y||(size_y=1);var ga=this.gridmap;var cols_l=ga.length;var valid_pos=[];var rows_l;for(var c=1;c",{"class":"preview-holder","data-row":this.$player.attr("data-row"),"data-col":this.$player.attr("data-col"),css:{width:coords.width,height:coords.height}}).appendTo(this.$el);if(this.options.draggable.start){this.options.draggable.start.call(this,event,ui)}};fn.on_drag=function(event,ui){if(this.$player===null){return false}var abs_offset={left:ui.position.left+this.baseX,top:ui.position.top+this.baseY};this.colliders_data=this.collision_api.get_closest_colliders(abs_offset);this.on_overlapped_column_change(this.on_start_overlapping_column,this.on_stop_overlapping_column);this.on_overlapped_row_change(this.on_start_overlapping_row,this.on_stop_overlapping_row);if(this.helper&&this.$player){this.$player.css({left:ui.position.left,top:ui.position.top})}if(this.options.draggable.drag){this.options.draggable.drag.call(this,event,ui)}};fn.on_stop_drag=function(event,ui){this.$helper.add(this.$player).add(this.$wrapper).removeClass("dragging");ui.position.left=ui.position.left+this.baseX;ui.position.top=ui.position.top+this.baseY;this.colliders_data=this.collision_api.get_closest_colliders(ui.position);this.on_overlapped_column_change(this.on_start_overlapping_column,this.on_stop_overlapping_column);this.on_overlapped_row_change(this.on_start_overlapping_row,this.on_stop_overlapping_row);this.$player.addClass("player-revert").removeClass("player").attr({"data-col":this.placeholder_grid_data.col,"data-row":this.placeholder_grid_data.row}).css({left:"",top:""});this.$changed=this.$changed.add(this.$player);this.cells_occupied_by_player=this.get_cells_occupied(this.placeholder_grid_data);this.set_cells_player_occupies(this.placeholder_grid_data.col,this.placeholder_grid_data.row);this.$player.coords().grid.row=this.placeholder_grid_data.row;this.$player.coords().grid.col=this.placeholder_grid_data.col;if(this.options.draggable.stop){this.options.draggable.stop.call(this,event,ui)}this.$preview_holder.remove();this.$player=null;this.$helper=null;this.placeholder_grid_data={};this.player_grid_data={};this.cells_occupied_by_placeholder={};this.cells_occupied_by_player={};this.set_dom_grid_height()};fn.on_overlapped_column_change=function(start_callback,stop_callback){if(!this.colliders_data.length){return}var cols=this.get_targeted_columns(this.colliders_data[0].el.data.col);var last_n_cols=this.last_cols.length;var n_cols=cols.length;var i;for(i=0;ib.row){return 1}return-1});return widgets};fn.sort_by_row_and_col_asc=function(widgets){widgets=widgets.sort(function(a,b){if(a.row>b.row||a.row===b.row&&a.col>b.col){return 1}return-1});return widgets};fn.sort_by_col_asc=function(widgets){widgets=widgets.sort(function(a,b){if(a.col>b.col){return 1}return-1});return widgets};fn.sort_by_row_desc=function(widgets){widgets=widgets.sort(function(a,b){if(a.row+a.size_y=0&&$.inArray(row,c.rows)>=0};fn.is_placeholder_in=function(col,row){var c=this.cells_occupied_by_placeholder||{};return this.is_placeholder_in_col(col)&&$.inArray(row,c.rows)>=0};fn.is_placeholder_in_col=function(col){var c=this.cells_occupied_by_placeholder||[];return $.inArray(col,c.cols)>=0};fn.is_empty=function(col,row){if(typeof this.gridmap[col]!=="undefined"&&typeof this.gridmap[col][row]!=="undefined"&&this.gridmap[col][row]===false){return true}return false};fn.is_occupied=function(col,row){if(!this.gridmap[col]){return false}if(this.gridmap[col][row]){return true}return false};fn.is_widget=function(col,row){var cell=this.gridmap[col];if(!cell){return false}cell=cell[row];if(cell){return cell}return false};fn.is_widget_under_player=function(col,row){if(this.is_widget(col,row)){return this.is_player_in(col,row)}return false};fn.get_widgets_under_player=function(cells){cells||(cells=this.cells_occupied_by_player||{cols:[],rows:[]});var $widgets=$([]);$.each(cells.cols,$.proxy(function(i,col){$.each(cells.rows,$.proxy(function(i,row){if(this.is_widget(col,row)){$widgets=$widgets.add(this.gridmap[col][row])}},this))},this));return $widgets};fn.set_placeholder=function(col,row){var phgd=$.extend({},this.placeholder_grid_data);var $nexts=this.widgets_below({col:phgd.col,row:phgd.row,size_y:phgd.size_y,size_x:phgd.size_x});var right_col=col+phgd.size_x-1;if(right_col>this.cols){col=col-(right_col-col)}var moved_down=this.placeholder_grid_data.row0){if(this.is_empty(tcol,r)||this.is_player(tcol,r)||this.is_widget(tcol,r)&&grid_col[r].is($widgets_under_player)){upper_rows[tcol].push(r);min_row=r0){if(this.is_widget(tcol,r)&&!this.is_player_in(tcol,r)){if(!grid_col[r].is(widget_grid_data.el)){break}}if(!this.is_player(tcol,r)&&!this.is_placeholder_in(tcol,r)&&!this.is_player_in(tcol,r)){upper_rows[tcol].push(r)}if(r=size_y?arr[result[0]]:false};fn.get_widgets_overlapped=function(){var $w;var $widgets=$([]);var used=[];var rows_from_bottom=this.cells_occupied_by_player.rows.slice(0);rows_from_bottom.reverse();$.each(this.cells_occupied_by_player.cols,$.proxy(function(i,col){$.each(rows_from_bottom,$.proxy(function(i,row){if(!this.gridmap[col]){return true}var $w=this.gridmap[col][row];if(this.is_occupied(col,row)&&!this.is_player($w)&&$.inArray($w,used)===-1){$widgets=$widgets.add($w);used.push($w)}},this))},this));return $widgets};fn.on_start_overlapping_column=function(col){this.set_player(col,false)};fn.on_start_overlapping_row=function(row){this.set_player(false,row)};fn.on_stop_overlapping_column=function(col){this.set_player(col,false);var self=this;this.for_each_widget_below(col,this.cells_occupied_by_player.rows[0],function(tcol,trow){self.move_widget_up(this,self.player_grid_data.size_y)})};fn.on_stop_overlapping_row=function(row){this.set_player(false,row);var self=this;var cols=this.cells_occupied_by_player.cols;for(var c=0,cl=cols.length;c0){this.move_widget_down($w,tmp_y)}},this));widget_grid_data.row=next_row;this.update_widget_position(widget_grid_data,$widget);$widget.attr("data-row",widget_grid_data.row);this.$changed=this.$changed.add($widget);moved.push($widget)}};fn.can_go_up_to_row=function(widget_grid_data,col,row){var ga=this.gridmap;var result=true;var urc=[];var actual_row=widget_grid_data.row;var r;this.for_each_column_occupied(widget_grid_data,function(tcol){var grid_col=ga[tcol];urc[tcol]=[];r=actual_row;while(r--){if(this.is_empty(tcol,r)&&!this.is_placeholder_in(tcol,r)){urc[tcol].push(r)}else{break}}if(!urc[tcol].length){result=false;return true}});if(!result){return false}r=row;for(r=1;r0?y_units:0};fn.widgets_below=function($el){var el_grid_data=$.isPlainObject($el)?$el:$el.coords().grid;var self=this;var ga=this.gridmap;var next_row=el_grid_data.row+el_grid_data.size_y-1;var $nexts=$([]);this.for_each_column_occupied(el_grid_data,function(col){self.for_each_widget_below(col,next_row,function(tcol,trow){if(!self.is_player(this)&&$.inArray(this,$nexts)===-1){$nexts=$nexts.add(this);return true}})});return this.sort_by_row_asc($nexts)};fn.set_cells_player_occupies=function(col,row){this.remove_from_gridmap(this.placeholder_grid_data);this.placeholder_grid_data.col=col;this.placeholder_grid_data.row=row;this.add_to_gridmap(this.placeholder_grid_data,this.$player);return this};fn.empty_cells_player_occupies=function(){this.remove_from_gridmap(this.placeholder_grid_data);return this};fn.can_go_up=function($el){var el_grid_data=$el.coords().grid;var initial_row=el_grid_data.row;var prev_row=initial_row-1;var ga=this.gridmap;var upper_rows_by_column=[];var result=true;if(initial_row===1){return false}this.for_each_column_occupied(el_grid_data,function(col){var $w=this.is_widget(col,prev_row);if(this.is_occupied(col,prev_row)||this.is_player(col,prev_row)||this.is_placeholder_in(col,prev_row)||this.is_player_in(col,prev_row)){result=false;return true}});return result};fn.can_move_to=function(widget_grid_data,col,row,max_row){var ga=this.gridmap;var $w=widget_grid_data.el;var future_wd={size_y:widget_grid_data.size_y,size_x:widget_grid_data.size_x,col:col,row:row};var result=true;var right_col=col+widget_grid_data.size_x-1;if(right_col>this.cols){return false}if(max_row&&max_row0&&this.is_widget(col,trow)&&$.inArray(ga[col][trow],matched)===-1){cr=callback.call(ga[col][trow],col,trow);matched.push(ga[col][trow]);if(cr){break}}}},"for_each/below":function(){for(trow=row+1,max=ga[col].length;trow=1;c--){for(r=gm[c].length-1;r>=1;r--){if(this.is_widget(c,r)){rows.push(r);row_in_col[r]=c;break}}}var highest_row=Math.max.apply(Math,rows);this.highest_occupied_cell={col:row_in_col[highest_row],row:highest_row};return this.highest_occupied_cell};fn.get_widgets_from=function(col,row){var ga=this.gridmap;var $widgets=$();if(col){$widgets=$widgets.add(this.$widgets.filter(function(){var tcol=$(this).attr("data-col");return tcol===col||tcol>col}))}if(row){$widgets=$widgets.add(this.$widgets.filter(function(){var trow=$(this).attr("data-row");return trow===row||trow>row}))}return $widgets};fn.set_dom_grid_height=function(){var r=this.get_highest_occupied_cell().row;this.$el.css("height",r*this.min_widget_height);return this};fn.generate_stylesheet=function(opts){var styles="";var max_size_x=this.options.max_size_x;var max_rows=0;var max_cols=0;var i;var rules;opts||(opts={});opts.cols||(opts.cols=this.cols);opts.rows||(opts.rows=this.rows);opts.namespace||(opts.namespace=this.options.namespace);opts.widget_base_dimensions||(opts.widget_base_dimensions=this.options.widget_base_dimensions);opts.widget_margins||(opts.widget_margins=this.options.widget_margins);opts.min_widget_width=opts.widget_margins[0]*2+opts.widget_base_dimensions[0];opts.min_widget_height=opts.widget_margins[1]*2+opts.widget_base_dimensions[1];var serialized_opts=$.param(opts);if($.inArray(serialized_opts,Gridster.generated_stylesheets)>=0){return false}Gridster.generated_stylesheets.push(serialized_opts);for(i=opts.cols;i>=0;i--){styles+=opts.namespace+' [data-col="'+(i+1)+'"] { left:'+(i*opts.widget_base_dimensions[0]+i*opts.widget_margins[0]+(i+1)*opts.widget_margins[0])+"px;} "}for(i=opts.rows;i>=0;i--){styles+=opts.namespace+' [data-row="'+(i+1)+'"] { top:'+(i*opts.widget_base_dimensions[1]+i*opts.widget_margins[1]+(i+1)*opts.widget_margins[1])+"px;} "}for(var y=1;y<=opts.rows;y++){styles+=opts.namespace+' [data-sizey="'+y+'"] { height:'+(y*opts.widget_base_dimensions[1]+(y-1)*(opts.widget_margins[1]*2))+"px;}"}for(var x=1;x<=max_size_x;x++){styles+=opts.namespace+' [data-sizex="'+x+'"] { width:'+(x*opts.widget_base_dimensions[0]+(x-1)*(opts.widget_margins[0]*2))+"px;}"}return this.add_style_tag(styles)};fn.add_style_tag=function(css){var d=document;var tag=d.createElement("style");d.getElementsByTagName("head")[0].appendChild(tag);tag.setAttribute("type","text/css");if(tag.styleSheet){tag.styleSheet.cssText=css}else{tag.appendChild(document.createTextNode(css))}return this};fn.generate_faux_grid=function(rows,cols){this.faux_grid=[];this.gridmap=[];var col;var row;for(col=cols;col>0;col--){this.gridmap[col]=[];for(row=rows;row>0;row--){this.add_faux_cell(row,col)}}return this};fn.add_faux_cell=function(row,col){var coords=$({left:this.baseX+(col-1)*this.min_widget_width,top:this.baseY+(row-1)*this.min_widget_height,width:this.min_widget_width,height:this.min_widget_height,col:col,row:row,original_col:col,original_row:row}).coords();if(!$.isArray(this.gridmap[col])){this.gridmap[col]=[]}this.gridmap[col][row]=false;this.faux_grid.push(coords);return this};fn.add_faux_rows=function(rows){var actual_rows=this.rows;var max_rows=actual_rows+(rows||1);for(var r=max_rows;r>actual_rows;r--){for(var c=this.cols;c>=1;c--){this.add_faux_cell(r,c)}}this.rows=max_rows;if(this.options.autogenerate_stylesheet){this.generate_stylesheet()}return this};fn.add_faux_cols=function(cols){var actual_cols=this.cols;var max_cols=actual_cols+(cols||1);for(var c=actual_cols;c=1;r--){this.add_faux_cell(r,c)}}this.cols=max_cols;if(this.options.autogenerate_stylesheet){this.generate_stylesheet()}return this};fn.recalculate_faux_grid=function(){var aw=this.$wrapper.width();this.baseX=($(window).width()-aw)/2;this.baseY=this.$wrapper.offset().top;$.each(this.faux_grid,$.proxy(function(i,coords){this.faux_grid[i]=coords.update({left:this.baseX+(coords.data.col-1)*this.min_widget_width,top:this.baseY+(coords.data.row-1)*this.min_widget_height})},this));return this};fn.get_widgets_from_DOM=function(){this.$widgets.each($.proxy(function(i,widget){this.register_widget($(widget))},this));return this};fn.generate_grid_and_stylesheet=function(){var aw=this.$wrapper.width();var ah=this.$wrapper.height();var cols=Math.floor(aw/this.min_widget_width)+this.options.extra_cols;var actual_cols=this.$widgets.map(function(){return $(this).attr("data-col")});actual_cols=Array.prototype.slice.call(actual_cols,0);actual_cols.length||(actual_cols=[0]);var min_cols=Math.max.apply(Math,actual_cols);var max_rows=this.options.extra_rows;this.$widgets.each(function(i,w){max_rows+=+$(w).attr("data-sizey")});this.cols=Math.max(min_cols,cols,this.options.min_cols);this.rows=Math.max(max_rows,this.options.min_rows);this.baseX=($(window).width()-aw)/2;this.baseY=this.$wrapper.offset().top;if(this.options.autogenerate_stylesheet){this.generate_stylesheet()}return this.generate_faux_grid(this.rows,this.cols)};$.fn.gridster=function(options){return this.each(function(){if(!$(this).data("gridster")){$(this).data("gridster",new Gridster(this,options))}})};$.Gridster=fn})(jQuery,window,document);vizjslib_git_revision="34718b0a2e50568555bef74e76c7b8af9d8562b5";vizjslib_git_tag="15.04-24-g34718b0";(function(){var V=envision,global_data={};function getDefaultsMarkers(option,markers,dates){var mark="";if(!markers||markers.length===0)return mark;for(var i=0;i-1){metrics=DS.getMetrics();getDefaultsMetrics(DS,viz,metrics,default_config)}})}config=default_config;viz.summary=getEnvisionDefaultsGraph("report-summary",config);viz.summary.config.xaxis={noTickets:10,showLabels:true};viz.summary.config.handles={show:true};viz.summary.config.selection={mode:"x"};viz.summary.config.mouse={};viz.connection={name:"report-connection",adapterConstructor:V.components.QuadraticDrawing};return viz}function getOrderedDataSources(ds_list,main_metric){var ordered=[];var main_DS=null;$.each(ds_list,function(i,DS){if(DS.getMetrics()[main_metric]){main_DS=DS;return false}});ordered.push(main_DS);$.each(ds_list,function(i,DS){if(DS===main_DS)return;ordered.push(DS)});return ordered}function Envision_Report(options,data_sources){var main_metric=options.data.main_metric;global_data=options.data;if(!data_sources)data_sources=Report.getDataSources();data_sources=getOrderedDataSources(data_sources,main_metric);var ds=[];for(var i=0;i-1)data_load_companies();if($.inArray("repositories",active_reports)>-1)data_load_repos();if($.inArray("countries",active_reports)>-1)data_load_countries();if($.inArray("domains",active_reports)>-1)data_load_domains();if($.inArray("projects",active_reports)>-1)data_load_projects();if($.inArray("people",active_reports)>-1){data_load_people();data_load_people_identities()}}else{data_load_companies();data_load_repos();data_load_countries();data_load_domains();data_load_projects();data_load_people();data_load_people_identities()}};Loader.get_file_data_div=function(file,cb,div){$.when($.getJSON(file)).done(function(history){cb(div,file,history)}).fail(function(){cb(file,null)})};function get_data_from_all(file,fn_data_set,self){all_data_found=false;if(all_data){file_no_path=file.replace(Report.getDataDir()+"/","");data=all_data[file_no_path];if(data){fn_data_set(data,self);end_data_load();all_data_found=true}else{if(window.console){Report.log("Can't find in "+Report.all_json_file+" "+file)}}}return all_data_found}function data_load_file(file,fn_data_set,self){if(get_data_from_all(file,fn_data_set,self))return;$.when($.getJSON(file)).done(function(history){fn_data_set(history,self);end_data_load()}).fail(function(){fn_data_set([],self);end_data_load()})}function data_load_companies(){var ds_not_supported=["irc","mediawiki"];var data_sources=Report.getDataSources();$.each(data_sources,function(i,DS){if($.inArray(DS.getName(),ds_not_supported)>-1)DS.setCompaniesData([]);else data_load_file(DS.getCompaniesDataFile(),DS.setCompaniesData,DS)})}function data_load_repos(){var ds_not_supported=["mediawiki"];var data_sources=Report.getDataSources();$.each(data_sources,function(i,DS){if($.inArray(DS.getName(),ds_not_supported)>-1){DS.setReposData([])}else{data_load_file(DS.getReposDataFile(),DS.setReposData,DS)}});data_load_file(Report.getReposMapFile(),Report.setReposMap)}function data_load_countries(){var ds_not_supported=["irc","mediawiki"];var data_sources=Report.getDataSources();$.each(data_sources,function(i,DS){if($.inArray(DS.getName(),ds_not_supported)>-1)DS.setCountriesData([]);else data_load_file(DS.getCountriesDataFile(),DS.setCountriesData,DS)})}function data_load_domains(){var ds_not_supported=["irc","mediawiki"];var data_sources=Report.getDataSources();$.each(data_sources,function(i,DS){if($.inArray(DS.getName(),ds_not_supported)>-1)DS.setDomainsData([]);else data_load_file(DS.getDomainsDataFile(),DS.setDomainsData,DS)})}function data_load_projects(){var ds_not_supported=["irc","mediawiki"];var data_sources=Report.getDataSources();$.each(data_sources,function(i,DS){if($.inArray(DS.getName(),ds_not_supported)>-1)DS.setProjectsData([]);else data_load_file(DS.getProjectsDataFile(),DS.setProjectsData,DS)})}function data_load_time_to_fix(){var data_sources=Report.getDataSources();$.each(data_sources,function(i,DS){if(DS.getName()==="its")data_load_file(DS.getTimeToFixDataFile(),DS.setTimeToFixData,DS)})}function data_load_markov_table(){var data_sources=Report.getDataSources();$.each(data_sources,function(i,DS){if(DS.getName()==="its")data_load_file(DS.getMarkovTableDataFile(),DS.setMarkovTableData,DS)})}function data_load_time_to_attention(){var data_sources=Report.getDataSources();$.each(data_sources,function(i,DS){if(DS.getName()==="mls")data_load_file(DS.getTimeToAttentionDataFile(),DS.setTimeToAttentionData,DS)})}function data_load_demographics(){var data_sources=Report.getDataSources();$.each(data_sources,function(i,DS){data_load_file(DS.getDemographicsAgingFile(),DS.setDemographicsAgingData,DS);data_load_file(DS.getDemographicsBirthFile(),DS.setDemographicsBirthData,DS)})}function data_load_tops(metric){var data_sources=Report.getDataSources();$.each(data_sources,function(i,DS){var file_all=DS.getTopDataFile();if(get_data_from_all(file_all,DS.setGlobalTopData,DS))return;$.when($.getJSON(file_all)).done(function(history){DS.setGlobalTopData(history);end_data_load()}).fail(function(){DS.setGlobalTopData([],DS);end_data_load()})})}Loader.check_filters_page=function(page){var check=true;var filters=["repos","companies","countries"];$.each(filters,function(index,filter){if(!Loader.check_filter_page(page,filter)){check=false;return false}});return check};Loader.check_filter_page=function(page,filter){var check=true;if(page===undefined)page=1;var start=Report.getPageSize()*(page-1);var end=start+Report.getPageSize();$.each(Report.getDataSources(),function(index,DS){var total=0;if(filter==="repos")total=DS.getReposData().length;if(filter==="companies")total=DS.getCompaniesData().length;if(filter==="countries")total=DS.getCountriesData().length;if(filter==="domains")total=DS.getDomainsData().length;if(filter==="projects")total=DS.getProjectsData().length;if(end>total)end=total;for(var i=start;i-1){ds=DS;return false}}if(filter=="companies"){if($.inArray(item,DS.getCompaniesData())>-1){ds=DS;return false}}if(filter=="countries"){if($.inArray(item,DS.getCountriesData())>-1){ds=DS;return false}}if(filter=="domains"){if($.inArray(item,DS.getDomainsData())>-1){ds=DS;return false}}if(filter=="projects"){if($.inArray(item,DS.getProjectsData())>-1){ds=DS;return false}}});return ds}Loader.filterTopCheck=function(item,filter){var check=true;if(filter==="repos"){if(Loader.check_item(item,filter,"top")===false){ds=getItemDS(item,filter);if(ds===null){Report.log("Can't find data source for "+item);return true}if($.inArray(ds.getName(),ds_supporting_top_repos)>=0){Loader.data_load_item_top(item,ds,null,Convert.convertFilterTop,filter,"top")}return false}}return check};Loader.FilterItemCheck=function(item,filter){var check=true,ds;var map=Report.getReposMap();if(filter==="repos"){if(Loader.check_item(item,filter)===false){ds=getItemDS(item,filter);if(ds===null){Report.log("Can't find data source for "+item);return true}Loader.data_load_item(item,ds,null,Convert.convertFilterStudyItem,filter,null);if($.inArray(ds.getName(),ds_supporting_top_repos)>=0){Loader.data_load_item_top(item,ds,null,Convert.convertFilterStudyItem,filter)}return false}if(map!==undefined&&map.length!==0){var items_map=[];$.each(Report.getDataSources(),function(index,DS){var itmap=Convert.getRealItem(DS,filter,item);if(itmap!==undefined&&itmap!==null)items_map.push(itmap)});if(Loader.check_items(items_map,filter)===false){for(var i=0;i-1)Loader.data_load_item_top(item,DS,null,Convert.convertFilterStudyItem,filter)}}})}return check};Loader.check_item=function(item,filter,optional_filter){var check=false;$.each(Report.getDataSources(),function(index,DS){if(filter==="repos"){if(optional_filter==="top"){if($.inArray(DS.getName(),ds_supporting_top_repos)>=0&&$.inArray(item,DS.getReposData())>=0&&DS.getRepositoriesTopData()[item]!==undefined){check=true;return false}}else{if(DS.getReposGlobalData()[item]!==undefined&&DS.getReposMetricsData()[item]!==undefined){check=true;return false}}}else if(filter==="companies"){var companies=DS.getCompaniesData();if(companies.length===0)check=true;else if($.inArray(item,companies)===-1)check=true;else if(DS.getCompaniesGlobalData()[item]===undefined||DS.getCompaniesMetricsData()[item]===undefined){check=false;return false}else if($.inArray(DS.getName(),ds_supporting_top_company)>-1&&DS.getCompaniesTopData()[item]===undefined){check=false;return false}else check=true}else if(filter==="countries"){var countries=DS.getCountriesData();if(countries.length===0)check=true;else if($.inArray(item,countries)===-1)check=true;else if(DS.getCountriesGlobalData()[item]===undefined||DS.getCountriesMetricsData()[item]===undefined){check=false;return false}else check=true}else if(filter==="domains"){var domains=DS.getDomainsData();if(domains.length===0)check=true;else if($.inArray(item,domains)===-1)check=true;else if(DS.getDomainsGlobalData()[item]===undefined||DS.getDomainsMetricsData()[item]===undefined){check=false;return false}else check=true}else if(filter==="projects"){var projects=DS.getProjectsData();if(projects.length===0)check=true;else if($.inArray(item,projects)===-1)check=true;else if(DS.getProjectsGlobalData()[item]===undefined||DS.getProjectsMetricsData()[item]===undefined){check=false;return false}else check=true}});return check};Loader.check_items=function(items,filter){var check=true;$.each(items,function(id,item){if(Loader.check_item(item,filter)===false){check=false;return false}});return check};Loader.data_load_items_page=function(DS,page,cb,filter){if(page===undefined)page=1;if(filter==="repos")if(DS.getReposData()===null)return false;if(filter==="companies")if(DS.getCompaniesData()===null)return false;if(filter==="countries")if(DS.getCountriesData()===null)return false;if(filter==="domains")if(DS.getDomainsData()===null)return false;if(filter==="projects")if(DS.getProjectsData()===null)return false;var total=0;if(filter==="repos")total=DS.getReposData().length;if(filter==="companies")total=DS.getCompaniesData().length;if(filter==="countries")total=DS.getCountriesData().length;if(filter==="domains")total=DS.getDomainsData().length;if(filter==="projects")total=DS.getProjectsData().length;if(total===0)return true;var start=Report.getPageSize()*(page-1);var end=start+Report.getPageSize();if(end>total)end=total;for(var i=start;i-1){DS.addRepoMetricsData(item,[],DS);DS.addRepoGlobalData(item,[],DS);return}}else if(filter==="companies"){if($.inArray(DS.getName(),ds_not_supported_companies)>-1){DS.addCompanyMetricsData(item,[],DS);DS.addCompanyGlobalData(item,[],DS);return}}else if(filter==="countries"){if($.inArray(DS.getName(),ds_not_supported_countries)>-1){DS.addCountryMetricsData(item,[],DS);DS.addCountryGlobalData(item,[],DS);return}}else if(filter==="domains"){if($.inArray(DS.getName(),ds_not_supported_domains)>-1){DS.addDomainMetricsData(item,[],DS);DS.addDomainGlobalData(item,[],DS);return}}else if(filter==="projects"){if($.inArray(DS.getName(),ds_not_supported_projects)>-1){DS.addDomainMetricsData(item,[],DS);DS.addDomainGlobalData(item,[],DS);return}}else return;var item_uri=encodeURIComponent(item);var file=DS.getDataDir()+"/"+item_uri+"-";file+=DS.getName()+"-"+getFilterSuffix(filter);var file_evo=file+"-evolutionary.json";var file_static=file+"-static.json";function addData(item,evo,global,DS){if(filter==="repos"){DS.addRepoMetricsData(item,evo,DS);DS.addRepoGlobalData(item,global,DS)}else if(filter==="companies"){DS.addCompanyMetricsData(item,evo,DS);DS.addCompanyGlobalData(item,global,DS)}else if(filter==="countries"){DS.addCountryMetricsData(item,evo,DS);DS.addCountryGlobalData(item,global,DS)}else if(filter==="domains"){DS.addDomainMetricsData(item,evo,DS);DS.addDomainGlobalData(item,global,DS)}else if(filter==="projects"){DS.addProjectMetricsData(item,evo,DS);DS.addProjectGlobalData(item,global,DS)}}function check_data(){if(page!==null){if(Loader.check_filter_page(page,filter)){if(cb.called_page===undefined){cb.called_page={};cb.called_page[filter]=true;cb(filter)}else if(!cb.called_page[filter]){cb(filter);cb.called_page[filter]=true}}}else if(items_map!==null){if(Loader.check_items(items_map,filter)){if(cb.called_map===undefined){cb.called_map={};cb.called_map[filter]=true;cb(filter)}else if(!cb.called_map[filter]){cb(filter);cb.called_map[filter]=true}}}else{if(Loader.check_item(item,filter)){if(cb.called_item===undefined){cb.called_item={};cb.called_item[filter]=true;cb(filter,item)}else if(!cb.called_item[filter]){cb(filter,item);cb.called_item[filter]=true}}}}if(all_data){file_evo_no_path=decodeURIComponent(file_evo.replace(Report.getDataDir()+"/",""));file_static_no_path=decodeURIComponent(file_static.replace(Report.getDataDir()+"/",""));data_evo=all_data[file_evo_no_path];data_static=all_data[file_static_no_path];if(data_evo&&data_static){addData(item,data_evo,data_static,DS);check_data();return}}$.when($.getJSON(file_evo),$.getJSON(file_static)).done(function(evo,global){addData(item,evo[0],global[0],DS)}).always(function(){check_data()})};function data_load_metrics(){var data_sources=Report.getDataSources();$.each(data_sources,function(i,DS){data_load_file(DS.getDataFile(),DS.setData,DS);data_load_file(DS.getGlobalDataFile(),DS.setGlobalData,DS);if(DS instanceof MLS){data_load_file(DS.getListsFile(),DS.setListsData,DS)}})}function data_load_metrics_definition(){data_load_file("VizGrimoireJS/data/metrics.json",Report.setMetricsDefinition)}function data_load_people(){var data_sources=Report.getDataSources();$.each(data_sources,function(i,DS){data_load_file(DS.getPeopleDataFile(),DS.setPeopleData,DS)})}function data_load_people_identities(){data_load_file(Report.getDataDir()+"/people.json",Report.setPeopleIdentities)}function check_companies_loaded(DS){if(DS.getCompaniesData()===null)return false;return true}function check_repos_loaded(DS){if(DS.getReposData()===null)return false;return true}function check_countries_loaded(DS){if(DS.getCountriesData()===null)return false;return true}function check_domains_loaded(DS){if(DS.getDomainsData()===null)return false;return true}function check_projects_loaded(DS){if(DS.getProjectsData()===null)return false;return true}function check_meta_projects_loaded(){var projects_loaded=0;var projects_data=Report.getProjectsData();var projects_dirs=Report.getProjectsDirs();for(var key in projects_data){projects_loaded++}if(projects_loaded-1)if(!check_companies_loaded(DS)){check=false;return false}if($.inArray("repositories",active_reports)>-1)if(!check_repos_loaded(DS)){check=false;return false}if($.inArray("countries",active_reports)>-1)if(!check_countries_loaded(DS)){check=false;return false}if($.inArray("domains",active_reports)>-1)if(!check_domains_loaded(DS)){check=false;return false}if($.inArray("projects",active_reports)>-1)if(!check_projects_loaded(DS)){check=false;return false}if(DS instanceof MLS){if(DS.getListsData()===null){check=false;return false}}});return check};function end_data_load(){if(check_data_loaded_global()){for(var i=0;i-1){clean=email.split("@")[0]}return clean};DataProcess.selectPersonName=function(person){var name="",cname,ctype,i;if(person.identity){for(i=0;iname.length)name=cname}}}else if(person.name){if(person.name.constructor!==Array){person.name=[person.name]}for(i=0;iname.length){name=cname}}}return name};DataProcess.selectPersonEmail=function(person){var email="",cemail,ctype;if(person.identity===undefined)return;for(var i=0;i=0;i--){if(history[metric][i]===0)new_offset++;else{if(offset_end===-1)offset_end=new_offset;if(new_offset=total-offset_end)continue;new_history[key].push(history[key][i])}}return new_history};DataProcess.filterDates=function(start_id,end_id,history){var history_dates={};$.each(history,function(name,data){history_dates[name]=[];$.each(data,function(i,value){var id=history.unixtime[i];if(id>start_id)if(!end_id||end_id&&id<=end_id)history_dates[name].push(value)})});return history_dates};DataProcess.filterYear=function(year,history){year=parseInt(year,null);var min_id=new Date(year.toString()).getTime();var max_id=new Date((year+1).toString()).getTime();var history_year=filterDates(min_id,max_id,history);return history_year};DataProcess.fillDates=function(dates_orig,more_dates){if(dates_orig[0].length===0)return more_dates;var new_dates=[[],[]];var i=0;if(dates_orig[0][0]>more_dates[0][0]){for(i=0;i-1){var metric_agg=[];metric_agg[0]=data[metric][0];for(var i=1;i1){params=document.URL.split("?")[1]}return params}function filenameInURL(){aux=document.URL.split("?")[0].split("/");res=aux[aux.length-1];return res}function createLink(target){url=target;if(paramsInURL().length>0)url+="?"+paramsInURL();return url}function createReleaseLink(target){url=target;if(isReleasePage()){if(url.indexOf("?")>=0){url+="&release="+$.urlParam("release")}else{url+="?release="+$.urlParam("release")}}return url}function getParameter(param){if($.urlParam(param)===null)return false;return $.urlParam(param)}})();String.prototype.supplant=function(o){return this.replace(/{([^{}]*)}/g,function(a,b){var r=o[b];return typeof r==="string"||typeof r==="number"?r:a})};var HTMLComposer={};(function(){HTMLComposer.personDSBlock=personDSBlock;HTMLComposer.filterDSBlock=filterDSBlock;HTMLComposer.DSBlock=DSBlock;HTMLComposer.DSBlockProject=DSBlockProject;HTMLComposer.repositorySummaryTable=repositorySummaryTable;HTMLComposer.personSummaryTable=personSummaryTable;HTMLComposer.personName=personName;HTMLComposer.itemName=itemName;HTMLComposer.releaseSelector=releaseSelector;HTMLComposer.sideBarLinks=sideBarLinks;HTMLComposer.overallSummaryBlock=overallSummaryBlock;HTMLComposer.smartLinks=smartLinks;HTMLComposer.TopByPeriod=TopByPeriod;HTMLComposer.companyFilters=companyFilters;function personDSBlock(ds_name,metric_name,ds_realname){var html='
';html+='
';html+='
';html+='
';if(ds_realname===undefined){html+="

"+title4DS(ds_name)+"

"}else{html+="

"+title4DS(ds_realname)+"

"}html+="
";html+='
';html+='
';html+="
";html+='
';html+='
'}else{html+='
'}html+="
";html+='
';html+='
';$.each(metric_names,function(id,metric){html+='


';html+='
';html+='
';html+='
';html+="
"});html+="
";return html}function repositorySummaryTable(ds,global_data,id_label,ds_realname){var html="",ds_title;if(ds_realname){ds_title=title4DS(ds_realname)}else{ds_title=title4DS(ds.getName())}html+='";var html_irow="";$.each(global_data,function(id,value){if(ds.getMetrics()[id]){html+=html_irow+ds.getMetrics()[id].name;if(id==="first_date"||id==="last_date"){html+='

'+ds_title+"

";var html_erow="
'+value+html_erow}else{html+=''+Report.formatValue(value)+html_erow}}else if(id_label[id]){html+=html_irow+id_label[id];if(id==="first_date"||id==="last_date"){html+=''+value+html_erow}else{html+=''+Report.formatValue(value)+html_erow}}});html+="
";return html}function personSummaryTable(ds_name,history){var html="";html+="";html+="
";html+="First contribution:
";html+="  "+history.first_date;html+="
";html+="Last contribution:
";html+="  "+history.last_date;html+="
";if(ds_name=="scm")html+="Commits:
  "+history.scm_commits;else if(ds_name=="its")html+="Closed:
  "+history.its_closed;else if(ds_name=="mls")html+="Sent:
  "+history.mls_sent;else if(ds_name=="irc")html+="Sent:
  "+history.irc_sent;else if(ds_name=="scr"){if(history.scr_closed!==undefined){html+="Closed:
  "+history.scr_closed}if(history.scr_submissions!==undefined){html+="Submissions:
  "+history.scr_submissions}}html+="
";return html}function personName(name,email){var html='

  ';if(name.length>0)html+=name;else if(email.length>0){if(email.indexOf("@")>0)email=email.split("@")[0];html+=email}html+="

";return html}function itemName(text,filter_name){var html='

';if(filter_name==="companies")html+='   ';html+=text;html+="

";return html}function title4DS(ds_name){var title="";if(ds_name==="scm")title=' Source Code Management';else if(ds_name==="scr")title=' Source Code Review';else if(ds_name==="its")title=' Issue tracking system';else if(ds_name==="storyboard")title=' StoryBoard';else if(ds_name==="mls")title=' Mailing Lists';else if(ds_name==="irc")title=' IRC Channels';else if(ds_name==="slack")title=' Slack';else if(ds_name==="mediawiki")title=' Wiki';else if(ds_name==="releases")title=' Forge Releases';else if(ds_name==="meetup")title=' Meetup';return title}function releaseSelector(current_release,release_names){function get_label(url,labels){label="";$.each(labels,function(pos,data){if(data[1]===url){label=data[0];return false}});return label}if(release_names.length===0)return"";var release_names_labels=null;if(release_names[0]instanceof Array){var old_relase_names=[];$.each(release_names,function(pos,data){old_relase_names.push(data[1])});release_names_labels=release_names;release_names=old_relase_names}unsupported=["irc.html","qaforums.html","project.html"];ah_label=" All history ";label=current_release;if(label===null)label=ah_label;else{label=decodeURIComponent(label);if(release_names_labels!==null){label=get_label(label,release_names_labels);label="  "+label+"  "}else{label="  "+label[0].toUpperCase()+label.substring(1)+" release  "}release_names.reverse().push(ah_label);release_names.reverse()}html='
';html+='";html+='";html+="
";return html}function DSBlock(ds_name,box_labels,box_metrics,ts_metrics){html="";html+="";html+='
';blabels=box_labels.split(",");bmetrics=box_metrics.split(",");html+=DSSummaryBox(ds_name,blabels,bmetrics,false,ds_realname);html+='
';tsm=ts_metrics.split(",");html+=DSTimeSerie(ds_name,tsm[0],false,ds_realname);html+="
";html+='
';html+=DSTimeSerie(ds_name,tsm[1],false,ds_realname);html+="
";html+="
";html+="";return html}function DSBlockProject(ds_name,box_labels,box_metrics,ts_metrics,pname){html="";html+="";html+='
';blabels=box_labels.split(",");bmetrics=box_metrics.split(",");html+=DSSummaryBox(ds_name,blabels,bmetrics,true);html+='
';tsm=ts_metrics.split(",");html+=DSTimeSerie(ds_name,tsm[0],true);html+="
";html+='
';html+=DSTimeSerie(ds_name,tsm[1],true);html+="
";html+="
";html+="";return html}function linkToPanel(ds_name,ds_realname){if(ds_realname===undefined){target_page=Utils.createLink(ds_name+".html")}else{target_page=Utils.createLink(ds_realname+".html")}return target_page}function summaryCell(width,label,ds_name,metric,project_flag,ds_realname){var target_page=linkToPanel(ds_name,ds_realname);if(project_flag){widget_name="ProjectData"}else{widget_name="GlobalData"}html="";html+='
';html+='
';html+='
'+label+"
";html+="
";html+='
';html+='
';if(project_flag){html+=''}else{html+=' ';html+=""}html+="
";html+="
";html+="
";return html}function DSSummaryBox(ds_name,labels,metrics,project_flag,ds_realname){var target_page=linkToPanel(ds_name,ds_realname);if(project_flag){widget_name="ProjectData"}else{widget_name="GlobalData"}html="";html+="";html+='
';html+='
';html+='
';html+='
'+labels[0]+"
";html+="
";html+='
';html+='
';if(ds_name==="releases")target_page=Utils.createLink("forge.html");if(project_flag){html+=''}else{html+=' ';html+=""}html+="
";html+="
";html+='
';if(labels.length===2&&metrics.length===2){html+=summaryCell("12",labels[1],ds_name,metrics[1],project_flag,ds_realname)}else if(labels.length===3&&metrics.length===3){html+=summaryCell("6",labels[1],ds_name,metrics[1],project_flag,ds_realname);html+=summaryCell("6",labels[2],ds_name,metrics[2],project_flag,ds_realname)}else if(labels.length===4&&metrics.length===4){html+=summaryCell("4",labels[1],ds_name,metrics[1],project_flag,ds_realname);html+=summaryCell("4",labels[2],ds_name,metrics[2],project_flag,ds_realname);html+=summaryCell("4",labels[3],ds_name,metrics[3],project_flag,ds_realname)}html+="
";html+="
";html+="
";html+="";return html}function DSTimeSerie(ds_name,metric,project_flag,ds_realname){if(project_flag){ts_widget_name="FilterItemMetricsEvol";trend_widget_name="FilterItemMicrodashText";filter_name="projects"}else{ts_widget_name="MetricsEvol";trend_widget_name="MicrodashText";filter_name=""}html="";html+='
';html+='
'}else{if(ds_realname===undefined){html+=''}else{html+=''}html+=' ';html+=""}html+="
";return html}function sideBarLinks(icon_text,title,ds_name,elements){text={companies:"Companies","companies-summary":"Companies summary",contributors:"Contributors",countries:"Countries",domains:"Domains",projects:"Projects",repos:"Repositories",tags:"Tags",states:"States",past_events:"Past Events"};html="";html+='";return html}function overallSummaryBlock(){html="";html+="";html+='
';html+='
';html+='
';html+='
=0)link_exists=true;if(Utils.isReleasePage()&&link_exists){link_to=Utils.createReleaseLink(target_page);html=''+label+""}else if(link_exists){html=''+label+""}else{html=label}}catch(err){html=label}return html}function TopByPeriod(ds_name,metric,npeople,is_release){if(is_release){periods=[""]}else{periods=["last month","last year",""]}width=12/periods.length;html='
';$.each(periods,function(id,value){html+='
';html+='
';html+="
"});html+="
";return html}var defaultFilterValues={scm:{metric_names:"commits+authors",order_by:"commits_365"},its:{metric_names:"closed+closers",order_by:"closed_365"}};function getFilterName(ds_name,metric_one,metric_two){filters={scm:{company:{country:"SCM by country"}},its:{company:{country:"ITS by country"}}};return filters[ds_name][metric_one][metric_two]}function companyFilters(company_name){var html="",filter_ds={};var mele=Report.getMenuElements();var menu_filters=mele.filter;if(menu_filters===undefined){return html}$.each(menu_filters,function(id,value){var ds_name=value.split(":")[0],combo=value.split(":")[1],mylen;if(Object.keys(filter_ds).indexOf(combo)<0){filter_ds[combo]=[]}mylen=filter_ds[combo].length;filter_ds[combo][mylen]=ds_name});$.each(Object.keys(filter_ds),function(id,value){switch(value){case"company+country":$.each(filter_ds[value],function(subid,ds_name){if(subid===0){html='
'+'"+'
"}})}});return html}})();var Convert={};(function(){Convert.convertMicrodashText=function(){var divs=$(".MicrodashText");if(divs.length>0){$.each(divs,function(id,div){$(this).empty();var metric=$(this).data("metric");var show_name=$(this).data("name");var ds=Report.getMetricDS(metric)[0];if(ds===undefined)return;var total=ds.getGlobalData()[metric];var html='
';if(show_name){html+='
';html+=''+ds.basic_metrics[metric].name+"";html+="
"}$.each([365,30,7],function(index,period){var column=ds.getMetrics()[metric].column;var value=ds.getGlobalData()[metric+"_"+period];var netvalue=ds.getGlobalData()["diff_net"+column+"_"+period];var percentagevalue=ds.getGlobalData()["percentage_"+column+"_"+period];percentagevalue=Math.round(percentagevalue*10)/10;if(value===undefined)return;var str_percentagevalue="";if(percentagevalue===0){str_percentagevalue=Math.abs(percentagevalue)}else if(netvalue>0){str_percentagevalue="+"+percentagevalue}else if(netvalue<0){str_percentagevalue="-"+Math.abs(percentagevalue)}if(show_name){html+='
'}else{html+='
'}html+='Last '+period+" days:";html+=" "+Report.formatValue(value)+"
";if(percentagevalue===0){html+='  '+str_percentagevalue+"% "}else if(netvalue>0){html+='  '+str_percentagevalue+"% "}else if(netvalue<0){html+='  '+str_percentagevalue+"% "}html+="
"});html+="
";$(div).append(html)})}};Convert.convertMicrodash=function(){var divs=$(".Microdash");if(divs.length>0){$.each(divs,function(id,div){$(this).empty();var metric=$(this).data("metric");var text=$(this).data("text");var ds=Report.getMetricDS(metric)[0];var total=ds.getGlobalData()[metric];var html="
";html+='
';html+=''+Report.formatValue(total);html+=" "+ds.getMetrics()[metric].name;html+="
";html+='
';html+='
';$.each([365,30,7],function(index,period){var column=ds.getMetrics()[metric].column;var netvalue=ds.getGlobalData()["diff_net"+column+"_"+period];var percentagevalue=ds.getGlobalData()["percentage_"+column+"_"+period];var value=ds.getGlobalData()[metric+"_"+period];if(value===undefined)return;html+=""+period+" Days Change:"+Report.formatValue(value)+" ";if(netvalue===0){html+=""}else if(netvalue>0){html+='';html+="(+"+percentagevalue+"%) "}else if(netvalue<0){html+='';html+="(-"+Math.abs(percentagevalue)+"%) "}});html+="
";html+="
";$(div).append(html)})}};function getProjectTitle(project_id,hierarchy){if(hierarchy.hasOwnProperty(project_id)&&hierarchy[project_id].title){return hierarchy[project_id].title}else{return undefined}}function compareProjectTitles(a,b){if(a.project_idb.project_id){return 1}else{return 0}}function getParentProjects(project_id,hierarchy){var parent=[];var iterate_p=project_id;var parent_id="";var aux={};while(hierarchy[iterate_p].hasOwnProperty("parent_project")){parent_id=hierarchy[iterate_p].parent_project;aux=hierarchy[parent_id];aux.project_id=parent_id;parent.push(aux);iterate_p=parent_id}return parent.reverse()}function getChildrenProjects(project_id,hierarchy){var children=[];var aux={};$.each(hierarchy,function(id,p){if(hierarchy[id].parent_project===project_id){aux=hierarchy[id];aux.project_id=id;children.push(aux)}});children.sort(compareProjectTitles);return children}function composePBreadcrumbsHTMLlast(project_id,children,hierarchy){var html="";var clen=children.length;if(clen>0){children_sort=[];children_names=[];$.each(children,function(id,value){children_names.push(value.title)});children_names=children_names.sort();$.each(children_names,function(id,name){$.each(children,function(id,value){if(name===value.title){children_sort.push(value);return false}})});children=children_sort;html+='"}else{html+="
  • "+getProjectTitle(project_id,hierarchy)+"
  • "}return html}function composeProjectBreadcrumbs(project_id){var html='";return html}function escapeString(string){var aux="";aux=string.replace(" ","_");aux=aux.toLowerCase();return aux}function composeHTMLNestedProjects(project_id,children,hierarchy){var html="";var clen=children.length;var epid=project_id;var divid=epid.replace(".","");if(clen>0){html+="
  • ";html+=''+getProjectTitle(project_id,hierarchy)+"";html+=' ';html+=''+clen+" subprojects";html+='
      ';$.each(children,function(id,value){gchildren=getChildrenProjects(value.project_id,hierarchy);html+=composeHTMLNestedProjects(value.project_id,gchildren,hierarchy)});html+="
  • "}else{html+='
  • '+getProjectTitle(project_id,hierarchy)+"
  • "}return html}function composeProjectMap(){var html="
      ";var hierarchy=Report.getProjectsHierarchy();if(hierarchy.length===0){return""}project_id="root";var children=getChildrenProjects(project_id,hierarchy);var parents=getParentProjects(project_id,hierarchy);$.each(children,function(id,value){grandchildren=getChildrenProjects(value.project_id,hierarchy);html+=composeHTMLNestedProjects(value.project_id,grandchildren,hierarchy)});html+="
    ";return html}function getSectionName4Release(){var result=[];var sections={data_sources:"Data sources",project_map:"Project map",people:"Contributor",company:"Company",country:"Country",domain:"Domain","scm-companies":"Activity on code repositories by companies","mls-companies":"Activity on mailing lists by companies","its-companies":"Activity on issue trackers by companies"};url_no_params=document.URL.split("?")[0];url_tokens=url_no_params.split("/");var section=url_tokens[url_tokens.length-1].split(".")[0];if(section==="project"||section==="index"||section==="release"||section===""){return[]}else{if(sections.hasOwnProperty(section)){result.push([section,sections[section]])}else{return[["#","Unavailable section name"]]}return result}}function getSectionName(){var result=[];var sections={mls:"MLS overview",irc:"IRC overview",slack:"Slack Overview",its:"ITS overview",storyboard:"Storyboard overview",qaforums:"QA Forums overview",scr:"Code Review overview",scm:"SCM overview",wiki:"Wiki overview",downloads:"Downloads",forge:"Forge releases",meetup:"Meetup",demographics:"Demographics",data_sources:"Data sources",project_map:"Project map",people:"Contributor",company:"Company",country:"Country",domain:"Domain",release:"Companies analysis by release",project_comparison:"Project comparison"};var filters={companies:"Activity by companies",contributors:"Activity by contributors",countries:"Activity by countries",domains:"Activity by domains",projects:"Activity by project",repos:"Activity by repositories",states:"Activity by states",tags:"Activity by tags",past_events:"Past events"};var filters2={repository:"Repository",countries:"Activity by countries"};url_no_params=document.URL.split("?")[0];url_tokens=url_no_params.split("/");var section=url_tokens[url_tokens.length-1].split(".")[0];if(section==="project"||section==="index"||section===""){return[]}else if(section==="filter"){var filter_by=$.urlParam("filter_by_item");var filter_names=$.urlParam("filter_names");switch(filter_names){case"company+country":result=[["company","Company"],["Activity by country and company","Activity by country and company"]]}return result}else{var s_tokens=section.split("-");if(s_tokens[0]==="repository"){ds_name=$.urlParam("ds");s_tokens=[ds_name,"repos","repository"]}if(sections.hasOwnProperty(s_tokens[0])){result.push([s_tokens[0],sections[s_tokens[0]]]);if(s_tokens.length>0){if(filters.hasOwnProperty(s_tokens[1])){result.push([s_tokens[0]+"-"+s_tokens[1],filters[s_tokens[1]]]);if(s_tokens.length>2){if(filters2.hasOwnProperty(s_tokens[2])){result.push([s_tokens[0],filters2[s_tokens[2]]])}}}}}else{return[["#","Unavailable section name"]]}return result}}function isURLRelease(){if($.urlParam("release")!==null&&$.urlParam("release").length>0)return true;else return false}function composeSideBar(project_id){if(project_id===undefined){project_id="root"}var html="";var html_extra="";html+='";return html}Convert.convertSideBar=function(project_id){var divs=$(".SideNavBar");if(divs.length>0){$.each(divs,function(id,div){$(this).empty();if(!div.id)div.id="SideNavBar";var label;if(project_id){label=Report.cleanLabel(project_id)}var htmlaux=composeSideBar(label);$("#"+div.id).append(htmlaux);data=Report.getProjectData();$(".report_name").text(data.project_name);if(Utils.isReleasePage())$(".report_name").attr("href","./?release="+$.urlParam("release"))})}};Convert.convertProjectNavBar=function(project_id){var divs=$(".ProjectNavBar");if(divs.length>0){$.each(divs,function(id,div){$(this).empty();if(!div.id)div.id="ProjectNavBar";var label;if(project_id){label=Report.cleanLabel(project_id)}var htmlaux=composeProjectBreadcrumbs(label);$("#"+div.id).append(htmlaux)})}};Convert.convertNavbar=function(){$.get(Report.getHtmlDir()+"navbar.html",function(navigation){$("#Navbar").html(navigation);var project_id=Report.getParameterByName("project");Convert.convertProjectNavBar(project_id);Convert.convertReleaseSelector();Convert.convertSideBar(project_id)})};Convert.convertReleaseSelector=function(){var releases=Report.getReleaseNames();if(releases===undefined){return}if(releases.length>0){var divs=$(".ReleaseSelector");if(divs.length>0){$.each(divs,function(id,div){$(this).empty();if(!div.id)div.id="ReleaseSelector"+getRandomId();var htmlaux=HTMLComposer.releaseSelector($.urlParam("release"),releases);$("#"+div.id).append(htmlaux)})}}};function composeSectionBreadCrumb(project_id){var html='";return html}Convert.convertSectionBreadcrumb=function(project_id){var divs=$(".SectionBreadcrumb");if(divs.length>0){$.each(divs,function(id,div){$(this).empty();if(!div.id)div.id="SectionBreadcrumb";var label;if(project_id){label=Report.cleanLabel(project_id)}var htmlaux=composeSectionBreadCrumb(label);$("#"+div.id).append(htmlaux)})}};Convert.convertProjectMap=function(){var divs=$(".ProjectMap");if(divs.length>0){$.each(divs,function(id,div){$(this).empty();if(!div.id)div.id="ProjectMap";var label;var htmlaux=composeProjectMap();$("#"+div.id).append(htmlaux)})}};Convert.convertFooter=function(){$.get(Report.getHtmlDir()+"footer.html",function(footer){$("#Footer").html(footer);$("#vizjs-lib-version").append(vizjslib_git_tag)})};Convert.convertSummary=function(){div_param="Summary";var divs=$("."+div_param);if(divs.length>0){$.each(divs,function(id,div){$(this).empty();var ds=$(this).data("data-source");var DS=Report.getDataSourceByName(ds);if(DS===null)return;div.id=ds+"-Summary";DS.displayGlobalSummary(div.id)})}};function composeDropDownRepo(DS){var repository=Report.getParameterByName("repository");if(repository&&$.inArray(repository,DS.getReposData())<0)return"";var dsname=DS.getName();var section="";var label_repo=DS.getLabelForRepository();var label_repo_plural=DS.getLabelForRepositories();if(repository!==undefined){section=repository}else{section="All "+label_repo_plural}html='
    ';html='
    1. Filtered by '+label_repo+":  
    2. ";html+='
    3. "}var repo_names=DS.getReposData();repo_names.sort();$.each(repo_names,function(id,value){if(value===repository)return;html+='
    4. ';html+=value;html+="
    5. "});html+="
    ";html+="
    ";return html}Convert.convertRepositorySelector=function(){var divs=$(".repository-selector");if(divs.length>0){$.each(divs,function(id,div){$(this).empty();var ds=$(this).data("data-source");var DS=Report.getDataSourceByName(ds);if(DS===null)return;div.id=ds+"-repository-selector";var htmlaux=composeDropDownRepo(DS);$("#"+div.id).append(htmlaux)})}};function displayReportData(){data=Report.getProjectData();document.title=data.project_name+" Report by Bitergia";if(data.title)document.title=data.title;$(".report_date").text(data.date);$(".report_name").text(data.project_name);str=data.blog_url;if(str&&str.length>0){$("#blogEntry").html("
    Blog post with some more details");$(".blog_url").attr("href",data.blog_url)}else{$("#more_info").hide()}str=data.producer;if(str&&str.length>0){$("#producer").html(str)}else{$("#producer").html("Bitergia")}$(".project_name").text(data.project_name);$("#project_url").attr("href",data.project_url)}Convert.convertRefcard=function(){$.when($.get(Report.getHtmlDir()+"refcard.html"),$.get(Report.getHtmlDir()+"project-card.html")).done(function(res1,res2){refcard=res1[0];projcard=res2[0];$("#Refcard").html(refcard);displayReportData();$.each(Report.getProjectsData(),function(prj_name,prj_data){var new_div="card-"+prj_name.replace(".","").replace(" ","");$("#Refcard #projects_info").append(projcard);$("#Refcard #projects_info #new_card").attr("id",new_div);$.each(Report.getDataSources(),function(i,DS){if(DS.getProject()!==prj_name){$("#"+new_div+" ."+DS.getName()+"-info").hide();return}DS.displayData(new_div)});$("#"+new_div+" #project_name").text(prj_name);if(Report.getProjectsDirs.length>1)$("#"+new_div+" .project_info").append(' Report');$("#"+new_div+" #project_url").attr("href",prj_data.url)})})};Convert.convertGlobalData=function(){var divs=$(".GlobalData");if(divs.length>0){$.each(divs,function(id,div){ds=$(this).data("data-source");DS=Report.getDataSourceByName(ds);if(DS===null)return;var data=DS.getGlobalData();var key=$(this).data("field");$(this).text(Report.formatValue(data[key],key))})}};Convert.convertProjectData=function(){var divs=$(".ProjectData");var p=Report.getParameterByName("project");if(divs.length>0){$.each(divs,function(id,div){ds=$(this).data("data-source");DS=Report.getDataSourceByName(ds);if(DS===null)return;var data=DS.getProjectsGlobalData()[p];if(data===undefined){return}var key=$(this).data("field");$(this).text(Report.formatValue(data[key],key))})}};Convert.convertRadarActivity=function(){var div_param="RadarActivity";var divs=$("#"+div_param);if(divs.length>0){$.each(divs,function(id,div){$(this).empty()});Viz.displayRadarActivity(div_param)}};Convert.convertRadarCommunity=function(){var div_param="RadarCommunity";var divs=$("#"+div_param);if(divs.length>0){$.each(divs,function(id,div){$(this).empty()});Viz.displayRadarCommunity("RadarCommunity")}};Convert.convertTreemap=function(){var div_param="Treemap";var divs=$("#"+div_param);if(divs.length>0){$.each(divs,function(id,div){$(this).empty()});var file=$("#Treemap").data("file");$("#Treemap").empty();Viz.displayTreeMap("Treemap",file)}};Convert.convertBubbles=function(){div_param="Bubbles";var divs=$("."+div_param);if(divs.length>0){$.each(divs,function(id,div){$(this).empty();var ds=$(this).data("data-source");var DS=Report.getDataSourceByName(ds);if(DS===null)return;if(DS.getData().length===0)return;var radius=$(this).data("radius");div.id=ds+"-Bubbles";DS.displayBubbles(div.id,radius)})}};function loadHTMLEvolParameters(htmldiv,config_viz){config_viz.help=true;var help=$(htmldiv).data("help");if(help!==undefined)config_viz.help=help;config_viz.show_legend=false;if($(htmldiv).data("frame-time"))config_viz.frame_time=true;config_viz.graph=$(htmldiv).data("graph");if($(htmldiv).data("min")){config_viz.show_legend=false;config_viz.show_labels=true;config_viz.show_grid=true;config_viz.help=false}if($(htmldiv).data("legend"))config_viz.show_legend=true;config_viz.ligth_style=false;if($(htmldiv).data("light-style")){config_viz.light_style=true}if($(htmldiv).data("custom-title")){config_viz.custom_title=$(htmldiv).data("custom-title")}if(config_viz.help&&$(htmldiv).data("custom-help")){config_viz.custom_help=$(htmldiv).data("custom-help")}else{config_viz.custom_help=""}if($(htmldiv).data("repo-filter")){config_viz.repo_filter=$(htmldiv).data("repo-filter")}var start=$(htmldiv).data("start");if(start)config_viz.start_time=start;var end=$(htmldiv).data("end");if(end)config_viz.end_time=end;var remove_last_point=$(htmldiv).data("remove-last-point");if(remove_last_point)config_viz.remove_last_point=true;return config_viz}Convert.convertMetricsEvol=function(){var config_metric={};config_metric.show_desc=false;config_metric.show_title=true;config_metric.show_labels=true;var config=Report.getVizConfig();if(config){$.each(config,function(key,value){config_metric[key]=value})}var div_param="MetricsEvol";var divs=$("."+div_param);if(divs.length>0){$.each(divs,function(id,div){var config_viz={};$.each(config_metric,function(key,value){config_viz[key]=value});$(this).empty();var metrics=$(this).data("metrics");var ds=$(this).data("data-source");config_viz.title=$(this).data("title");var DS=Report.getDataSourceByName(ds);if(DS===null)return;config_viz=loadHTMLEvolParameters(div,config_viz);div.id=metrics.replace(/,/g,"-")+"-"+ds+"-metrics-evol-"+this.id;div.id=div.id.replace(/\n|\s/g,"");DS.displayMetricsEvol(metrics.split(","),div.id,config_viz,$(this).data("convert"))})}};Convert.convertMetricsEvolCustomized=function(filter){var config_metric={};config_metric.show_desc=false;config_metric.show_title=true;config_metric.show_labels=true;var config=Report.getVizConfig();if(config){$.each(config,function(key,value){config_metric[key]=value})}var div_param="MetricsEvolCustomized";var divs=$("."+div_param);if(divs.length>0){$.each(divs,function(id,div){if(filter!==$(this).data("filter"))return;var config_viz={};$.each(config_metric,function(key,value){config_viz[key]=value});$(this).empty();var metrics=$(this).data("metrics");var ds=$(this).data("data-source");config_viz.title=$(this).data("title");var DS=Report.getDataSourceByName(ds);if(DS===null)return;config_viz=loadHTMLEvolParameters(div,config_viz);div.id=metrics.replace(/,/g,"-")+"-"+ds+"-metrics-evol-"+this.id;div.id=div.id.replace(/\n|\s/g,"");DS.displayMetricsEvol(metrics.split(","),div.id,config_viz,$(this).data("convert"))})}};Convert.convertMetricsEvolSelector=function(){var config_metric={};config_metric.show_desc=false;config_metric.show_title=true;config_metric.show_labels=true;var config=Report.getVizConfig();if(config){$.each(config,function(key,value){config_metric[key]=value})}var div_param="MetricsEvol";var divs=$("."+div_param);if(divs.length>0){$.each(divs,function(id,div){var config_viz={};$.each(config_metric,function(key,value){config_viz[key]=value});$(this).empty();var metrics=$(this).data("metrics");var ds=$(this).data("data-source");var DS=Report.getDataSourceByName(ds);if(DS===null)return;var repository=Report.getParameterByName("repository");config_viz.repo_filter=repository;config_viz=loadHTMLEvolParameters(div,config_viz);div.id=metrics.replace(/,/g,"-")+"-"+ds+"-metrics-evol-"+repository;div.id=div.id.replace(/\n|\s/g,"");DS.displayMetricsEvol(metrics.split(","),div.id,config_viz,$(this).data("convert"))})}};Convert.convertMetricsEvolSet=function(){div_param="MetricsEvolSet";var divs=$("."+div_param);if(divs.length>0){$.each(divs,function(id,div){$(this).empty();var all=$(this).data("all");var relative=$(this).data("relative");var summary_graph=$(this).data("summary-graph");var legend=$(this).data("legend-show");div.id=ds+"-MetricsEvolSet-"+this.id;if(all===true){div.id=ds+"-All";Viz.displayEnvisionAll(div.id,relative,legend,summary_graph);return false}var ds=$(this).data("data-source");var DS=Report.getDataSourceByName(ds);if(DS===null)return;DS.displayEnvision(div.id,relative,legend,summary_graph)})}};Convert.convertTimeTo=function(){var div_tt="TimeTo";divs=$("."+div_tt);if(divs.length>0){$.each(divs,function(id,div){$(this).empty();var ds=$(this).data("data-source");var DS=Report.getDataSourceByName(ds);if(DS===null)return;var quantil=$(this).data("quantil");var type=$(this).data("type");div.id=ds+"-time-to-"+type+"-"+quantil;if(type==="fix")DS.displayTimeToFix(div.id,quantil);if(type==="attention")DS.displayTimeToAttention(div.id,quantil)})}};Convert.convertMarkovTable=function(){var div_id_mt="MarkovTable";var divs=$("."+div_id_mt);var DS,ds;if(divs.length>0){$.each(divs,function(id,div){$(this).empty();ds=$(this).data("data-source");DS=Report.getDataSourceByName(ds);if(DS===null)return;if(DS.getData().length===0)return;var title=$(this).data("title");div.id=ds+"-markov-table";DS.displayMarkovTable(div.id,title)})}};Convert.convertLastActivity=function(){var all_metrics=Report.getAllMetrics();function activityInfo(div,period,label){var html="

    Last "+label+"

    ";$.each(Report.getDataSources(),function(index,DS){var data=DS.getGlobalData();$.each(data,function(key,val){var suffix="_"+period;if(key.indexOf(suffix,key.length-suffix.length)!==-1){var metric=key.substring(0,key.length-suffix.length);label=metric;if(all_metrics[metric])label=all_metrics[metric].name;html+=label+":"+data[key]+"
    "}})});$(div).append(html)}var divs=$(".LastActivity");var period=null;var days={Week:7,Month:30,Quarter:90,Year:365};if(divs.length>0)$.each(divs,function(id,div){period=$(div).data("period");activityInfo(div,days[period],period)})};Convert.convertTopByPeriod=function(){var div_id_top="TopByPeriod";var divs=$("."+div_id_top);var DS,ds;if(divs.length>0){var unique=0;$.each(divs,function(id,div){$(this).empty();ds=$(this).data("data-source");DS=Report.getDataSourceByName(ds);if(DS===null)return; -if(DS.getData().length===0)return;var show_all=false;if($(this).data("show_all"))show_all=true;var top_metric=$(this).data("metric");var npeople=$(this).data("limit");var is_release=Utils.isReleasePage();var html=HTMLComposer.TopByPeriod(ds,top_metric,npeople,is_release);if(!div.id)div.id="Parsed"+getRandomId();$("#"+div.id).append(html)})}};Convert.convertTop=function(){var div_id_top="Top";var divs=$("."+div_id_top);var DS,ds;if(divs.length>0){var unique=0;$.each(divs,function(id,div){$(this).empty();ds=$(this).data("data-source");DS=Report.getDataSourceByName(ds);if(DS===null)return;if(DS.getData().length===0)return;var show_all=false;if($(this).data("show_all"))show_all=true;var top_metric=$(this).data("metric");var limit=$(this).data("limit");var graph=$(this).data("graph");var people_links=$(this).data("people_links");var threads_links=$(this).data("threads_links");var period=$(this).data("period");var period_all=$(this).data("period_all");var repository=Report.getParameterByName("repository");div.id=ds+"-"+div_id_top+unique++;if(graph){div.id+="-"+graph}if(period===undefined&&period_all===undefined){period_all=true}if(limit===undefined){limit=10}DS.displayTop(div,show_all,top_metric,period,period_all,graph,limit,people_links,threads_links,repository)})}};Convert.convertTopMultiColumn=function(){var div_id_top="TopMultiColumn";var divs=$("."+div_id_top);var DS,ds;if(divs.length>0){var unique=0;$.each(divs,function(id,div){$(this).empty();ds=$(this).data("data-source");if(ds!=="meetup")return;DS=Report.getDataSourceByName(ds);if(DS===null)return;if(DS.getData().length===0)return;var show_all=false;var top_metric=$(this).data("metric");var period=$(this).data("period");var period_all=$(this).data("period_all");var headers=$(this).data("headers");var columns=$(this).data("columns");var limit=$(this).data("limit");div.id=ds+"-"+div_id_top+unique++;if(period===undefined&&period_all===undefined){period_all=true}if(limit===undefined){limit=500}DS.displayTopMultiColumn(div,headers.split(","),columns.split(","))})}};Convert.convertPersonMetrics=function(upeople_id,upeople_identifier){var config_metric={};config_metric.show_desc=false;config_metric.show_title=false;config_metric.show_labels=true;divs=$(".PersonMetrics");if(divs.length){$.each(divs,function(id,div){$(this).empty();ds=$(this).data("data-source");DS=Report.getDataSourceByName(ds);if(DS===null)return;var metrics=$(this).data("metrics");config_metric.show_legend=false;config_metric.help=false;if($(this).data("frame-time"))config_metric.frame_time=true;if($(this).data("legend"))config_metric.show_legend=true;if($(this).data("person_id"))upeople_id=$(this).data("person_id");if($(this).data("person_name"))upeople_identifier=$(this).data("person_name");div.id=metrics.replace(/,/g,"-")+"-people-metrics";DS.displayMetricsPeople(upeople_id,upeople_identifier,metrics.split(","),div.id,config_metric)})}};function getRandomId(){return Math.floor(Math.random()*1e3+1)}Convert.convertPersonData=function(upeople_id,upeople_identifier){var divs=$(".PersonData"),name,email;if(divs.length>0){$.each(divs,function(id,div){$(this).empty();if($(this).data("person_id"))upeople_id=$(this).data("person_id");if(!div.id)div.id="PersonData"+"-"+upeople_id+"-"+getRandomId();var data=Report.getPeopleIdentities()[upeople_id];if(data){name=DataProcess.selectPersonName(data);email=DataProcess.selectPersonEmail(data);email="("+DataProcess.hideEmail(email)+")"}else{if(upeople_identifier!==undefined)name=upeople_identifier;else name=upeople_id;email=""}html=HTMLComposer.personName(name,email);$("#"+div.id).append(html)})}};Convert.personSummaryBlock=function(upeople_id){var divs=$(".PersonSummaryBlock");if(divs.length>0){$.each(divs,function(id,div){if(div.id.indexOf("Parsed")>=0)return;ds_name=$(this).data("data-source");ds_realname=$(this).data("data-realname");metric_name=$(this).data("metrics");DS=Report.getDataSourceByName(ds_name);if(DS===null)return;if(DS.getData().length===0)return;if(DS.getPeopleMetricsData()[upeople_id].length===0)return;var html=HTMLComposer.personDSBlock(ds_name,metric_name,ds_realname);if(!div.id)div.id="Parsed"+getRandomId();$("#"+div.id).append(html)})}};Convert.convertPersonSummary=function(upeople_id,upeople_identifier){var divs=$(".PersonSummary");if(divs.length>0){$.each(divs,function(id,div){$(this).empty();ds=$(this).data("data-source");DS=Report.getDataSourceByName(ds);if(DS===null)return;if($(this).data("person_id"))upeople_id=$(this).data("person_id");if($(this).data("person_name"))upeople_identifier=$(this).data("person_name");div.id=ds+"-refcard-people";DS.displayPeopleSummary(div.id,upeople_id,upeople_identifier,DS)})}};Convert.convertPeople=function(upeople_id,upeople_identifier){if(upeople_id===undefined)upeople_id=Report.getParameterByName("id");if(upeople_identifier===undefined)upeople_identifier=Report.getParameterByName("name");if(upeople_id===undefined)return;if(Loader.check_people_item(upeople_id)===false){$.each(Report.getDataSources(),function(index,DS){Loader.data_load_people_item(upeople_id,DS,Convert.convertPeople)});return}Convert.personSummaryBlock(upeople_id);Convert.convertPersonData(upeople_id,upeople_identifier);Convert.convertPersonSummary(upeople_id,upeople_identifier);Convert.convertPersonMetrics(upeople_id,upeople_identifier);Convert.activateHelp()};function dataFilterAvailable(filter_name,item_name){if(filter_name==="repos"){if(DS.getReposGlobalData()[item_name]===undefined||DS.getReposGlobalData()[item_name].length===0)return false}else if(filter_name==="companies"){if(DS.getCompaniesGlobalData()[item_name]===undefined||DS.getCompaniesGlobalData()[item_name].length===0)return false}else if(filter_name==="countries"){if(DS.getCountriesGlobalData()[item_name]===undefined||DS.getCountriesGlobalData()[item_name].length===0)return false}else if(filter_name==="companies"){if(DS.getDomainsGlobalData()[item_name]===undefined||DS.getDomainsGlobalData()[item_name].length===0)return false}return true}Convert.repositoryDSBlock=function(repo_id){var divs=$(".FilterDSBlock");if(divs.length>0){$.each(divs,function(id,div){if(div.id.indexOf("Parsed")>=0)return;ds_name=$(this).data("data-source");ds_realname=$(this).data("data-realname");filter_name=$(this).data("filter");aux=$(this).data("metrics");metric_names=aux.split(",");$.each(metric_names,function(id,value){metric_names[id]=metric_names[id].replace(/:/g,",")});DS=Report.getDataSourceByName(ds_name);if(DS===null)return;if(DS.getData().length===0)return;if(dataFilterAvailable(filter_name,repo_id)){var html=HTMLComposer.filterDSBlock(ds_name,filter_name,metric_names,ds_realname);if(!div.id)div.id="Parsed"+getRandomId();$("#"+div.id).append(html)}})}};Convert.convertDSSummaryBlock=function(upeople_id){var divs=$(".DSSummaryBlock");if(divs.length>0){$.each(divs,function(id,div){if(div.id.indexOf("Parsed")>=0)return;ds_name=$(this).data("data-source");ds_realname=$(this).data("data-realname");box_labels=$(this).data("box-labels");box_metrics=$(this).data("box-metrics");ts_metrics=$(this).data("ts-metrics");DS=Report.getDataSourceByName(ds_name);if(DS===null)return;if(DS.getData().length===0)return;var html=HTMLComposer.DSBlock(ds_name,box_labels,box_metrics,ts_metrics,ds_realname);if(!div.id)div.id="Parsed"+getRandomId();$("#"+div.id).append(html)})}};Convert.convertDSSummaryBlockProjectFiltered=function(upeople_id){var divs=$(".DSSummaryBlockProjectFiltered");var pname=Report.getParameterByName("project");if(divs.length>0){$.each(divs,function(id,div){if(div.id.indexOf("Parsed")>=0)return;ds_name=$(this).data("data-source");box_labels=$(this).data("box-labels");box_metrics=$(this).data("box-metrics");ts_metrics=$(this).data("ts-metrics");DS=Report.getDataSourceByName(ds_name);if(DS===null)return;if(DS.getProjectsGlobalData()[pname]===undefined)return;if(DS.getProjectsGlobalData()[pname].length===0)return;var html=HTMLComposer.DSBlockProject(ds_name,box_labels,box_metrics,ts_metrics,pname);if(!div.id)div.id="Parsed"+getRandomId();$("#"+div.id).append(html)})}};Convert.convertOverallSummaryBlock=function(){var divs=$(".OverallSummaryBlock");if(divs.length>0){$.each(divs,function(id,div){if(div.id.indexOf("Parsed")>=0)return;var html=HTMLComposer.overallSummaryBlock();if(!div.id)div.id="Parsed"+getRandomId();$("#"+div.id).append(html)})}};Convert.convertDemographics=function(){var divs=$(".Demographics");if(divs.length>0){$.each(divs,function(id,div){$(this).empty();ds=$(this).data("data-source");DS=Report.getDataSourceByName(ds);if(DS===null)return;var period=$(this).data("period");div.id="Demographics"+"-"+ds+"-"+"-"+period;DS.displayDemographics(div.id,period)})}};function filterItemsConfig(){var config_metric={};config_metric.show_desc=false;config_metric.show_title=false;config_metric.show_labels=true;config_metric.show_legend=false;return config_metric}Convert.getRealItem=function(ds,filter,item){var map=Report.getReposMap();if(map===undefined||map.length===0){if($.inArray(item,ds.getReposData())>-1)return item;else return null}var map_item=null;if(filter==="repos"){var rdata=ds.getReposMetricsData()[item];if(rdata===undefined){$.each(map,function(id,repos){$.each(Report.getDataSources(),function(index,DS){if(repos[DS.getName()]===item){map_item=repos[ds.getName()];return false}});if(map_item!==null)return false})}else map_item=item}else map_item=item;return map_item};Convert.convertFilterItemsSummary=function(filter){var divlabel="FilterItemsSummary";divs=$("."+divlabel);if(divs.length>0){$.each(divs,function(id,div){ds=$(this).data("data-source");DS=Report.getDataSourceByName(ds);if(DS===null)return;if(filter===undefined)filter=$(this).data("filter");if(filter!==$(this).data("filter"))return;if(!filter)return;div.id=ds+"-"+divlabel;$(this).empty();if(filter==="repos")DS.displayReposSummary(div.id,DS);if(filter==="countries")DS.displayCountriesSummary(div.id,DS);if(filter==="companies")DS.displayCompaniesSummary(div.id,DS);if(filter==="domains")DS.displayDomainsSummary(div.id,DS);if(filter==="projects")DS.displayProjectsSummary(div.id,DS)})}};Convert.convertFilterItemsGlobal=function(filter){var config_metric=filterItemsConfig();var divlabel="FilterItemsGlobal";divs=$("."+divlabel);if(divs.length>0){$.each(divs,function(id,div){ds=$(this).data("data-source");DS=Report.getDataSourceByName(ds);if(DS===null)return;if(filter===undefined)filter=$(this).data("filter");if(filter!==$(this).data("filter"))return;if(!filter)return;var metric=$(this).data("metric");var show_others=$(this).data("show-others");var order_by=$(this).data("order-by");config_metric.show_legend=$(this).data("legend");if($("#"+$(this).data("legend-div")).length>0){config_metric.legend={container:$(this).data("legend-div")}}else config_metric.legend={container:null};config_metric.graph=$(this).data("graph");config_metric.title=$(this).data("title");config_metric.show_title=1;div.id=metric+"-"+divlabel;$(this).empty();if(filter==="repos")DS.displayMetricReposStatic(metric,div.id,config_metric,order_by,show_others);if(filter==="countries")DS.displayMetricCountriesStatic(metric,div.id,config_metric,order_by,show_others);if(filter==="companies")DS.displayMetricCompaniesStatic(metric,div.id,config_metric,order_by,show_others);if(filter==="domains")DS.displayMetricDomainsStatic(metric,div.id,config_metric,order_by,show_others);if(filter==="projects")DS.displayMetricProjectsStatic(metric,div.id,config_metric,order_by,show_others)})}};Convert.convertFilterItemsNav=function(filter,page){var divlabel="FilterItemsNav";divs=$("."+divlabel);if(divs.length>0){var cont=0;$.each(divs,function(id,div){ds=$(this).data("data-source");DS=Report.getDataSourceByName(ds);if(DS===null)return;if(filter===undefined)filter=$(this).data("filter");if(filter!==$(this).data("filter"))return;if(!filter)return;if($(this).data("page"))page=$(this).data("page");order_by=$(this).data("order-by");div.id=ds+"-"+divlabel+"-"+cont;cont+=1;$(this).empty();if(filter==="repos")DS.displayItemsNav(div.id,filter,page,order_by);else if(filter==="countries")DS.displayItemsNav(div.id,filter,page);else if(filter==="companies")DS.displayItemsNav(div.id,filter,page);else if(filter==="domains")DS.displayItemsNav(div.id,filter,page);else if(filter==="projects")DS.displayItemsNav(div.id,filter,page)})}};Convert.convertFilterItemsMetricsEvol=function(filter){var config_metric=filterItemsConfig();var divlabel="FilterItemsMetricsEvol";divs=$("."+divlabel);if(divs.length>0){$.each(divs,function(id,div){ds=$(this).data("data-source");DS=Report.getDataSourceByName(ds);if(DS===null)return;if(filter===undefined)filter=$(this).data("filter");if(filter!==$(this).data("filter"))return;if(!filter)return;var metric=$(this).data("metric");var stacked=false;if($(this).data("stacked"))stacked=true;if($(this).data("min")){config_viz.show_legend=false;config_viz.show_labels=true;config_viz.show_grid=true;config_viz.help=false}var start=$(this).data("start");var end=$(this).data("end");config_metric.lines={stacked:stacked};if($("#"+$(this).data("legend-div")).length>0){config_metric.legend={container:$(this).data("legend-div")}}else config_metric.legend={container:null};config_metric.show_legend=$(this).data("legend");config_metric.mouse_tracker=$(this).data("mouse_tracker");var remove_last_point=$(this).data("remove-last-point");if(remove_last_point)config_metric.remove_last_point=true;div.id=metric+"-"+divlabel;$(this).empty();if(filter==="companies")DS.displayMetricCompanies(metric,div.id,config_metric,start,end);else if(filter==="repos")DS.displayMetricRepos(metric,div.id,config_metric,start,end);else if(filter==="domains")DS.displayMetricDomains(metric,div.id,config_metric,start,end);else if(filter==="projects")DS.displayMetricProjects(metric,div.id,config_metric,start,end)})}};Convert.convertFilterItemsMiniCharts=function(filter,page){var config_metric=filterItemsConfig();var divlabel="FilterItemsMiniCharts";divs=$("."+divlabel);if(divs.length>0){$.each(divs,function(id,div){ds=$(this).data("data-source");ds_realname=$(this).data("data-realname");DS=Report.getDataSourceByName(ds);if(DS===null)return;if(filter===undefined)filter=$(this).data("filter");if(filter!==$(this).data("filter"))return;if(!filter)return;if($(this).data("page"))page=$(this).data("page");var metrics=$(this).data("metrics");var order_by=$(this).data("order-by");var show_links=true;if($(this).data("show_links")!==undefined)show_links=$(this).data("show_links");var start=$(this).data("start");var end=$(this).data("end");var convert=$(this).data("convert");if($(this).data("frame-time"))config_metric.frame_time=true;var remove_last_point=$(this).data("remove-last-point");if(remove_last_point)config_metric.remove_last_point=true;div.id=metrics.replace(/,/g,"-")+"-"+filter+"-"+divlabel;$(this).empty();if(filter==="repos")DS.displayReposList(metrics.split(","),div.id,config_metric,order_by,page,show_links,start,end,convert,ds_realname);else if(filter==="countries")DS.displayCountriesList(metrics.split(","),div.id,config_metric,order_by,page,show_links,start,end,convert);else if(filter==="companies")DS.displayCompaniesList(metrics.split(","),div.id,config_metric,order_by,page,show_links,start,end,convert);else if(filter==="domains")DS.displayDomainsList(metrics.split(","),div.id,config_metric,order_by,page,show_links,start,end,convert);else if(filter==="projects")DS.displayProjectsList(metrics.split(","),div.id,config_metric,order_by,page,show_links,start,end,convert)})}};Convert.convertFilterItemData=function(filter,item){var divs=$(".FilterItemData");if(divs.length>0){$.each(divs,function(id,div){$(this).empty();var label=Report.cleanLabel(item);if(!div.id)div.id="FilterItemData"+getRandomId();html=HTMLComposer.itemName(label,filter);$("#"+div.id).append(html)})}};Convert.convertFilterItemSummary=function(filter,item){var divlabel="FilterItemSummary";divs=$("."+divlabel);if(item!==null&&divs.length>0){$.each(divs,function(id,div){var real_item=item;ds=$(this).data("data-source");ds_realname=$(this).data("data-realname");DS=Report.getDataSourceByName(ds);if(DS===null)return;if(filter===undefined)filter=$(this).data("filter");if(filter!==$(this).data("filter"))return;if(!filter)return;if($(this).data("item"))real_item=$(this).data("item");div.id=ds+"-"+filter+"-"+divlabel;$(this).empty();if(filter==="repos"){DS.displayRepoSummary(div.id,real_item,DS,ds_realname)}else if(filter==="countries")DS.displayCountrySummary(div.id,real_item,DS);else if(filter==="companies")DS.displayCompanySummary(div.id,real_item,DS);else if(filter==="domains")DS.displayDomainSummary(div.id,real_item,DS);else if(filter==="projects")DS.displayProjectSummary(div.id,real_item,DS)})}};Convert.convertFilterItemMicrodashText=function(filter,item){var divs=$(".FilterItemMicrodashText");if(divs.length>0){$.each(divs,function(id,div){$(this).empty();var global_data;var real_item=item;var metric=$(this).data("metric");var show_name=$(this).data("name");var ds=Report.getMetricDS(metric)[0];if(ds===undefined)return;if(filter==="projects"){global_data=ds.getProjectsGlobalData()[item];if(global_data===undefined){return}}else{return}var html='
    ';if(show_name){html+='
    ';html+=''+ds.basic_metrics[metric].name+"";html+="
    "}$.each([365,30,7],function(index,period){var column=ds.getMetrics()[metric].column;var value=global_data[metric+"_"+period];var netvalue=global_data["diff_net"+column+"_"+period];var percentagevalue=global_data["percentage_"+column+"_"+period];percentagevalue=Math.round(percentagevalue*10)/10;if(value===undefined)return;var str_percentagevalue="";if(netvalue>0)str_percentagevalue="+"+percentagevalue;if(netvalue<0)str_percentagevalue="-"+Math.abs(percentagevalue);if(show_name){html+='
    '}else{html+='
    '}html+='Last '+period+" days:";html+=" "+Report.formatValue(value)+"
    ";if(netvalue===0){html+='  '+str_percentagevalue+"% "}else if(netvalue>0){html+='  '+str_percentagevalue+"% "}else if(netvalue<0){html+='  '+str_percentagevalue+"% "}html+="
    "});html+="
    ";$(div).append(html)})}};Convert.convertFilterItemMetricsEvol=function(filter,item){var config_metric=filterItemsConfig();var divlabel="FilterItemMetricsEvol";divs=$("."+divlabel);if(item!==null&&divs.length>0){$.each(divs,function(id,div){var real_item=item;var metrics=$(this).data("metrics");ds=$(this).data("data-source");DS=Report.getDataSourceByName(ds);if(DS===null)return;if(filter===undefined)filter=$(this).data("filter");if(filter!==$(this).data("filter"))return;if(!filter)return;if($(this).data("item"))real_item=$(this).data("item");config_metric=loadHTMLEvolParameters(div,config_metric);div.id=Report.cleanLabel(item).replace(/ /g,"_")+"-";div.id+=metrics.replace(/,/g,"-")+"-"+ds+"-"+filter+"-"+divlabel;$(this).empty();if(filter==="repos"){DS.displayMetricsRepo(real_item,metrics.split(","),div.id,config_metric)}else if(filter==="countries"){DS.displayMetricsCountry(real_item,metrics.split(","),div.id,config_metric)}else if(filter==="companies"){DS.displayMetricsCompany(real_item,metrics.split(","),div.id,config_metric)}else if(filter==="domains"){DS.displayMetricsDomain(real_item,metrics.split(","),div.id,config_metric)}else if(filter==="projects"){DS.displayMetricsProject(real_item,metrics.split(","),div.id,config_metric)}})}};Convert.convertFilterItemTop=function(filter,item){var divlabel="FilterItemTop";divs=$("."+divlabel);if(divs.length>0){$.each(divs,function(id,div){var real_item=item;$(this).empty();ds=$(this).data("data-source");DS=Report.getDataSourceByName(ds);if(DS===null)return;if(filter===undefined)filter=$(this).data("filter");if(filter!==$(this).data("filter"))return;if(!filter)return;if($(this).data("item"))real_item=$(this).data("item");var metric=$(this).data("metric");var period=$(this).data("period");var titles=$(this).data("titles");var height=$(this).data("height");var people_links=$(this).data("people_links");div.id=metric+"-"+ds+"-"+filter+"-"+divlabel+"-"+getRandomId();$(this).empty();div.className="";if(filter==="companies")DS.displayTopCompany(real_item,div,metric,period,titles,height,people_links)})}};Convert.convertSmartLinks=function(){var divs=$(".SmartLinks");if(divs.length>0){$.each(divs,function(id,div){if(div.id.indexOf("Parsed")>=0)return;target_page=$(this).data("target");label=$(this).data("label");var html=HTMLComposer.smartLinks(target_page,label);if(!div.id)div.id="Parsed"+getRandomId();$("#"+div.id).append(html)})}};Convert.companyFilters=function(){var divs=$(".CompanyFilters");if(divs.length>0){$.each(divs,function(id,div){if(div.id.indexOf("Parsed")>=0)return;company_name=Report.getParameterByName("company");var html=HTMLComposer.companyFilters(company_name);if(!div.id)div.id="Parsed"+getRandomId();$("#"+div.id).append(html)})}};Convert.convertFilterStudyItem=function(filter,item){var convertfn=Convert.convertFilterStudyItem;if(convertfn.done===undefined){convertfn.done={}}else if(convertfn.done[filter]===true)return;if(filter==="repositories")filter="repos";if(item===undefined){if(filter==="repos")item=Report.getParameterByName("repository");if(filter==="countries")item=Report.getParameterByName("country");if(filter==="companies")item=Report.getParameterByName("company");if(filter==="domains")item=Report.getParameterByName("domain");if(filter==="projects")item=Report.getParameterByName("project")}if(!item)return;if(Loader.FilterItemCheck(item,filter)===false)return;Convert.repositoryDSBlock(item);Convert.convertDSSummaryBlockProjectFiltered();Convert.convertFilterItemData(filter,item);Convert.convertFilterItemSummary(filter,item);Convert.convertFilterItemMetricsEvol(filter,item);Convert.convertFilterItemTop(filter,item);Convert.convertFilterItemMicrodashText(filter,item);Convert.convertProjectData();Convert.activateHelp();Convert.convertMetricsEvolSelector();convertfn.done[filter]=true};Convert.activateHelp=function(){$(".help").popover({html:true,trigger:"manual"}).click(function(e){$(this).popover("toggle");e.stopPropagation()})};Convert.convertFilterStudy=function(filter){var page=Report.getCurrentPage();if(page===null){page=Report.getParameterByName("page");if(page!==undefined)Report.setCurrentPage(page)}if(page===undefined){if($("[class^='FilterItems']").length>0){page=1;Report.setCurrentPage(page)}else return}if(filter==="repositories")filter="repos";if(Loader.check_filter_page(page,filter)===false){$.each(Report.getDataSources(),function(index,DS){Loader.data_load_items_page(DS,page,Convert.convertFilterStudy,filter)});return}Convert.convertFilterItemsSummary(filter);Convert.convertFilterItemsGlobal(filter);Convert.convertFilterItemsNav(filter,page);Convert.convertFilterItemsMetricsEvol(filter);Convert.convertFilterItemsMiniCharts(filter,page)};Convert.convertDSTable=function(){var dst="DataSourcesTable";var divs=$("."+dst);var DS,ds;if(divs.length>0){var unique=0;$.each(divs,function(id,div){$(this).empty();div.id=dst+unique++;Viz.displayDataSourcesTable(div)})}};Convert.convertBasicDivs=function(){Convert.convertNavbar();Convert.convertSmartLinks();Convert.convertSectionBreadcrumb();Convert.convertProjectMap();Convert.convertFooter();Convert.convertOverallSummaryBlock();Convert.convertDSSummaryBlock();Convert.convertDSTable();Convert.convertGlobalData();Convert.convertSummary();Convert.convertTopByPeriod();Convert.companyFilters()};Convert.convertBasicDivsMisc=function(){Convert.convertRadarActivity();Convert.convertRadarCommunity();Convert.convertTreemap();Convert.convertBubbles()};Convert.convertBasicMetrics=function(config){var item=Report.getParameterByName("repository");if(item===undefined)Convert.convertMetricsEvol();Convert.convertTimeTo();Convert.convertMarkovTable()};Convert.convertFilterTop=function(filter){var item=Report.getParameterByName("repository");if(item!==undefined){if(Loader.filterTopCheck(item,filter)===false)return}Convert.convertTop();Convert.convertTopMultiColumn();Convert.convertRepositorySelector()}})();if(Report===undefined)var Report={};(function(){var project_data=null,markers=null,viz_config=null,gridster={},data_sources=[],report_config=null,html_dir="",menu_elements;var data_dir="data/json";var config_dir="config";var default_data_dir="data/json";var default_html_dir="";var projects_dirs=[default_data_dir];var projects_data={};var projects_datasources={};var repos_map;Report.all_json_file=data_dir+"/all.json";var project_file=config_dir+"/project-info.json";viz_config_file=data_dir+"/viz_cfg.json";markers_file=data_dir+"/markers.json";repos_map_file=data_dir+"/repos-map.json";projects_hierarchy_file=data_dir+"/projects_hierarchy.json";menu_elements_file=config_dir+"/menu-elements.json";var page_size=10,page=null;var project_people_identities={};Report.createDataSources=createDataSources;Report.getAllMetrics=getAllMetrics;Report.getMarkers=getMarkers;Report.getVizConfig=getVizConfig;Report.getProjectsHierarchy=getProjectsHierarchy;Report.getMenuElements=getMenuElements;Report.getMenuElementsReleases=getMenuElementsReleases;Report.getReleaseNames=getReleaseNames;Report.getThreadsSite=getThreadsSite;Report.getMetricDS=getMetricDS;Report.getGridster=getGridster;Report.setGridster=setGridster;Report.getCurrentPage=function(){return page};Report.setCurrentPage=function(current_page){page=current_page};Report.getPageSize=function(){return page_size};Report.setPageSize=function(size){page_size=size};Report.getProjectData=getProjectData;Report.getProjectsData=getProjectsData;Report.convertStudies=convertStudies;Report.getDataSources=function(){return data_sources};Report.registerDataSource=function(backend){data_sources.push(backend)};Report.setHtmlDir=function(dir){html_dir=dir};Report.getHtmlDir=function(){return html_dir};Report.getDataDir=function(){return data_dir};Report.setDataDir=function(dataDir){data_dir=dataDir;project_file=dataDir+"/project-info.json";config_file=dataDir+"/viz_cfg.json";markers_file=dataDir+"/markers.json";repos_mapping_file=data_dir+"/repos-mapping.json";projects_hierarchy_file=data_dir+"/projects_hierarchy.json"};function getMarkers(){return markers}Report.setMarkers=function(data){markers=data};Report.getMarkersFile=function(){return markers_file};Report.getReposMap=function(){return repos_map};Report.setReposMap=function(data){repos_map=data};Report.getReposMapFile=function(){return repos_map_file};function getVizConfig(){return viz_config}Report.setVizConfig=function(cfg){viz_config=cfg};Report.getVizConfigFile=function(){return viz_config_file};function getProjectsHierarchy(){return projects_hierarchy}Report.setProjectsHierarchy=function(data){projects_hierarchy=data};Report.getProjectsHierarchyFile=function(){return projects_hierarchy_file};function getMenuElements(){var elements;if(menu_elements!==undefined){elements=menu_elements.menu}return elements}function getMenuElementsReleases(){var releases;if(menu_elements!==undefined){releases=menu_elements.menu_releases}return releases}function getReleaseNames(){var names;if(menu_elements!==undefined){names=menu_elements.releases}return names}function getThreadsSite(){var site;if(menu_elements!==undefined){site=menu_elements.threads_site}return site}Report.setMenuElements=function(data){menu_elements=data};Report.getMenuElementsFile=function(){return menu_elements_file};function getGridster(){return gridster}function setGridster(grid){gridster=grid}function getProjectData(){return project_data}Report.setProjectData=function(data){project_data=data};Report.getProjectFile=function(){return project_file};function getProjectsData(){return projects_data}Report.getProjectsDirs=function(){return projects_dirs};Report.setProjectsDirs=function(dirs){projects_dirs=dirs};Report.getProjectsList=function(){var projects_list=[];$.each(getProjectsData(),function(key,val){projects_list.push(key)});return projects_list};Report.getProjectsDataSources=function(){return projects_datasources};Report.setMetricsDefinition=function(metrics){$.each(Report.getDataSources(),function(i,DS){DS.setMetricsDefinition(metrics[DS.getName()])})};Report.getPeopleIdentities=function(){return project_people_identities};Report.setPeopleIdentities=function(people){project_people_identities=people};Report.cleanLabel=function(item){var label=item;var aux=null;if(item.split("___").length===2){aux=item.split(" ");label=aux[0]}else if(item.lastIndexOf("https:__api.github.com_repos_")===0){label=label.replace("https:__api.github.com_repos_","");label=label.split("_")[1]}else if(item.lastIndexOf("http")===0||item.split("_").length>3){aux=item.split("_");label=aux.pop();if(label==="")label=aux.pop();label=label.replace("buglist.cgi?product=","");label=label.replace("gmane.comp.sysutils.","")}else if(item.lastIndexOf("<")===0)label=MLS.displayMLSListName(item);return label};function strNumberWithThousands(x){var parts=x.toString().split(".");parts[0]=parts[0].replace(/\B(?=(\d{3})+(?!\d))/g,",");return parts.join(".")}Report.formatValue=function(number,field){if(number===undefined)return"-";var date_fields=["last_date","first_date"];var reports=["repositories","companies","countries","domains","projects"];var value=number;try{value=parseFloat(number).toFixed(1).toString().replace(/\.0$/,"");value=strNumberWithThousands(value);if(navigator.language==="es"){var parts=value.split(".");parts[0]=parts[0].replace(/,/g,".");value=parts.join(",")}}catch(err){}if(typeof value==="number"&&isNaN(value))value=number.toString();if(field!==undefined&&$.inArray(field,date_fields)>-1)value=number.toString();if(field!==undefined&&value==="0"){$.each(reports,function(i,report){if(field.indexOf(report)!=1){value="-"}})}return value};Report.escapeHtml=function(unsafe){return unsafe.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")};Report.getParameterByName=function(name){name=name.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var regex=new RegExp("[\\?&]"+name+"=([^&#]*)"),results=regex.exec(location.search);return results===null?undefined:Report.escapeHtml(decodeURIComponent(results[1].replace(/\+/g," ")))};function getMetricDS(metric_id){var ds=[];$.each(Report.getDataSources(),function(i,DS){if(DS.getMetrics()[metric_id]){ds.push(DS)}});return ds}Report.getDataSourceByName=function(ds){var DS=null;$.each(Report.getDataSources(),function(index,DSaux){if(DSaux.getName()===ds){DS=DSaux;return false}});return DS};function getAllMetrics(){var all={};$.each(Report.getDataSources(),function(index,DS){all=$.extend({},all,DS.getMetrics())});return all}Report.displayActiveMenu=function(){var active=window.location.href;var page=active.substr(active.lastIndexOf("/")+1,active.length);page=page.split(".html")[0];if(page.indexOf("scm")===0){$(".scm-menu")[0].className=$(".scm-menu")[0].className+" active"}else if(page.indexOf("its")===0){$(".its-menu")[0].className=$(".its-menu")[0].className+" active"}else if(page.indexOf("mls")===0){$(".mls-menu")[0].className=$(".mls-menu")[0].className+" active"}else if(page.indexOf("scr")===0){$(".scr-menu")[0].className=$(".scr-menu")[0].className+" active"}else if(page.indexOf("irc")===0){$(".irc-menu")[0].className=$(".irc-menu")[0].className+" active"}else if(page.indexOf("qaforum")===0){$(".qaforum-menu")[0].className=$(".qaforum-menu")[0].className+" active"}else if(page.indexOf("studies")===0){$(".studies-menu")[0].className=$(".studies-menu")[0].className+" active"}else if(page.indexOf("wiki")===0){$(".wiki-menu")[0].className=$(".wiki-menu")[0].className+" active"}else if(page.indexOf("downloads")===0){$(".downloads-menu")[0].className=$(".downloads-menu")[0].className+" active"}else if(page.indexOf("projects")===0){$(".listprojects-menu")[0].className=$(".listprojects-menu")[0].className+" active" -}else if(page.indexOf("index")===0||page===""){if($(".summary-menu").length===0)return;$(".summary-menu")[0].className=$(".summary-menu")[0].className+" active"}else{if($(".experimental-menu")[0])$(".experimental-menu")[0].className=$(".experimental-menu")[0].className+" active"}};function checkDynamicConfig(){var data_sources=[];var release=$.urlParam("release");if(release!==null&&release.length>0){data_sources.push("data/json/"+release);Report.setDataDir("data/json/"+release);if(data_sources.length>0)Report.setProjectsDirs(data_sources)}}function createDataSources(){checkDynamicConfig();var projects_dirs=Report.getProjectsDirs();var scm,its,its_1,mls,scr,irc,mediawiki,people,downloads,qaforums,releases,meetup;$.each(projects_dirs,function(i,project){if(Report.getConfig()===null||Report.getConfig()["data-sources"]===undefined){its=new ITS;Report.registerDataSource(its);its_1=new ITS_1;Report.registerDataSource(its_1);mls=new MLS;Report.registerDataSource(mls);scm=new SCM;Report.registerDataSource(scm);scr=new SCR;Report.registerDataSource(scr);irc=new IRC;Report.registerDataSource(irc);mediawiki=new MediaWiki;Report.registerDataSource(mediawiki);people=new People;Report.registerDataSource(people);downloads=new Downloads;Report.registerDataSource(downloads);qaforums=new QAForums;Report.registerDataSource(qaforums);releases=new Releases;Report.registerDataSource(releases);meetup=new Meetup;Report.registerDataSource(meetup)}else{var active_ds=Report.getConfig()["data-sources"];$.each(active_ds,function(i,name){if(name==="its"){its=new ITS;Report.registerDataSource(its)}else if(name==="its_1"){its_1=new ITS_1;Report.registerDataSource(its_1)}else if(name==="mls"){mls=new MLS;Report.registerDataSource(mls)}else if(name==="scm"){scm=new SCM;Report.registerDataSource(scm)}else if(name==="scr"){scr=new SCR;Report.registerDataSource(scr)}else if(name==="irc"){irc=new IRC;Report.registerDataSource(irc)}else if(name==="mediawiki"){mediawiki=new MediaWiki;Report.registerDataSource(mediawiki)}else if(name==="people"){people=new People;Report.registerDataSource(people)}else if(name==="downloads"){downloads=new Downloads;Report.registerDataSource(downloads)}else if(name==="qaforums"){qaforums=new QAForums;Report.registerDataSource(qaforums)}else if(name==="releases"){releases=new Releases;Report.registerDataSource(releases)}else if(name==="meetup"){meetup=new Meetup;Report.registerDataSource(meetup)}else Report.log("Not support data source "+name)})}if(its)its.setDataDir(project);if(its_1)its_1.setDataDir(project);if(mls)mls.setDataDir(project);if(scm)scm.setDataDir(project);if(scr)scr.setDataDir(project);if(irc)irc.setDataDir(project);if(mediawiki)mediawiki.setDataDir(project);if(people)people.setDataDir(project);if(downloads)downloads.setDataDir(project);if(qaforums)qaforums.setDataDir(project);if(releases)releases.setDataDir(project);if(scm&&its)scm.setITS(its);if(meetup)meetup.setDataDir(project)});return true}Report.addDataDir=function(){var addURL;var querystr=window.location.search.substr(1);if(querystr&&querystr.indexOf("data_dir")!==-1){addURL=window.location.search.substr(1)}return addURL};Report.configDataSources=function(){var prjs_dss=Report.getProjectsDataSources();$.each(Report.getDataSources(),function(index,ds){if(ds.getData()instanceof Array)return;$.each(projects_data,function(name,project){if(project.dir===ds.getDataDir()){if(prjs_dss[name]===undefined)prjs_dss[name]=[];$.each(prjs_dss[name],function(prj,prjds){if(ds.getName()===prjds.getName())return false});ds.setProject(name);prjs_dss[name].push(ds);return false}})})};Report.getConfig=function(){return report_config};Report.setConfig=function(data){report_config=data;if(data){Report.log("Global config file found");if(data["global-html-dir"])Report.setHtmlDir(data["global-html-dir"]);if(data["global-data-dir"]){Report.setDataDir(data["global-data-dir"]);Report.setProjectsDirs([data["global-data-dir"]])}if(data["projects-data-dirs"])Report.setProjectsDirs(data["projects-data-dirs"])}};Report.convertGlobal=function(){Convert.convertBasicDivs();Convert.convertBasicDivsMisc();Convert.convertBasicMetrics();Convert.convertDemographics();Convert.convertMetricsEvolSet();Convert.convertLastActivity();Convert.convertMicrodash();Convert.convertMicrodashText()};Report.getActiveStudies=function(){var activeStudies=[];var reports;var reports_study=["repositories","countries","companies","domains","projects"];if(Report.getConfig()!==null)reports=Report.getConfig().reports;else reports=reports_study;$.each(reports_study,function(i,study){if($.inArray(study,reports)>-1)activeStudies.push(study)});return activeStudies};Report.convertStudiesGlobal=function(){Convert.convertPeople()};function convertStudies(){$.each(Report.getActiveStudies(),function(i,study){var filter=study;if(study==="repositories")filter="repos";DataProcess.orderItems(filter);Convert.convertFilterStudy(study);Convert.convertFilterStudyItem(study)})}var log_on=true;Report.getLog=function(){return log_on};Report.setLog=function(status){log_on=status};Report.log=function(msg){if(Report.getLog()===true)if(window.console)console.log(msg)}})();Loader.data_ready_global(function(){Report.configDataSources();Report.convertGlobal();Report.convertStudiesGlobal()});Loader.data_ready(function(){study="repos";Convert.convertFilterTop(study)});Loader.data_ready(function(){Report.convertStudies();$("body").css("cursor","auto");$("html").click(function(e){$(".help").popover("hide")});Convert.activateHelp()});$(document).ready(function(){$.getJSON(Report.getMenuElementsFile(),function(data){Report.setMenuElements(data)}).fail(function(){if(window.console)Report.log("Can't read global config file "+Report.getMenuElementsFile())}).always(function(data){Report.createDataSources();$.getJSON(Report.all_json_file,function(data){if(window.console){Report.log("Loaded all JSON data from "+Report.all_json_file)}Loader.set_all_data(data)}).always(function(data){Loader.data_load()});$("body").css("cursor","progress")})});function resizedw(){if(true){return}Report.convertGlobal();Report.convertStudiesGlobal();Report.convertStudies();Convert.activateHelp()}var resized;$(window).resize(function(){clearTimeout(resized);resized=setTimeout(resizedw,100)});function DataSource(name,basic_metrics){this.top_data_file=this.data_dir+"/"+this.name+"-top.json";this.getTopDataFile=function(){return this.top_data_file};this.getMetrics=function(){return this.basic_metrics};this.setMetrics=function(metrics){this.basic_metrics=metrics};this.setMetricsDefinition=function(metrics){if(metrics===undefined)return;this.setMetrics(metrics)};this.data_file=this.data_dir+"/"+this.name+"-evolutionary.json";this.getDataFile=function(){return this.data_file};this.setDataFile=function(file){this.data_file=file};this.data=null;this.getData=function(){return this.data};function nameSpaceMetrics(plain_metrics,ds){if(plain_metrics instanceof Array)return plain_metrics;var metrics={};if(plain_metrics===null){return metrics}$.each(plain_metrics,function(name,value){var basic_name=name;var aux=name.split("_");if(isNaN(aux[aux.length-1])===false)basic_name=aux.slice(0,aux.length-1).join("_");var ns_basic_name=ds.getName()+"_"+basic_name;var ns_name=ds.getName()+"_"+name;if(ds.getMetrics()[ns_basic_name]===undefined)metrics[name]=value;else metrics[ns_name]=value});return metrics}this.setData=function(load_data,self){if(self===undefined)self=this;self.data=nameSpaceMetrics(load_data,self)};this.demographics_aging_file=this.data_dir+"/"+this.name+"-demographics-aging.json";this.demographics_birth_file=this.data_dir+"/"+this.name+"-demographics-birth.json";this.getDemographicsAgingFile=function(){return this.demographics_aging_file};this.getDemographicsBirthFile=function(){return this.demographics_birth_file};this.demographics_data={};this.getDemographicsData=function(){return this.demographics_data};this.setDemographicsAgingData=function(data,self){if(self===undefined)self=this;self.demographics_data.aging=data};this.setDemographicsBirthData=function(data,self){if(self===undefined)self=this;self.demographics_data.birth=data};this.data_dir="data/json";this.getDataDir=function(){return this.data_dir};this.setDataDir=function(dataDir){this.data_dir=dataDir;this.data_file=dataDir+"/"+this.name+"-evolutionary.json";this.demographics_aging_file=dataDir+"/"+this.name+"-demographics-aging.json";this.demographics_birth_file=dataDir+"/"+this.name+"-demographics-birth.json";this.global_data_file=dataDir+"/"+this.name+"-static.json";this.top_data_file=dataDir+"/"+this.name+"-top.json";this.companies_data_file=dataDir+"/"+this.name+"-companies.json";this.repos_data_file=dataDir+"/"+this.name+"-repos.json";this.countries_data_file=dataDir+"/"+this.name+"-countries.json";this.domains_data_file=dataDir+"/"+this.name+"-domains.json";this.projects_data_file=dataDir+"/"+this.name+"-projects.json";this.time_to_fix_data_file=dataDir+"/"+this.name+"-quantiles-month-time_to_fix_hour.json"};this.global_data_file=this.data_dir+"/"+this.name+"-static.json";this.getGlobalDataFile=function(){return this.global_data_file};this.global_data=null;this.getGlobalData=function(){return this.global_data};this.setGlobalData=function(data,self){if(self===undefined)self=this;var aux=Report.getMenuElements();var active_companies=null;if(aux&&typeof aux.filter_companies!==undefined){active_companies=aux.filter_companies}if(active_companies&&active_companies.length>0&&Object.keys(data).indexOf("companies")>=0){data.companies=active_companies.length}self.global_data=nameSpaceMetrics(data,self)};this.global_top_data=null;this.getGlobalTopData=function(){return this.global_top_data};this.setGlobalTopData=function(data,self){if(self===undefined)self=this;self.global_top_data=data};this.name=name;this.getName=function(){return this.name};this.people_data_file=this.data_dir+"/"+this.name+"-people.json";this.getPeopleDataFile=function(){return this.people_data_file};this.people=null;this.getPeopleData=function(){return this.people};this.setPeopleData=function(people,self){if(self===undefined)self=this;self.people=people};this.time_to_fix_data_file=this.data_dir+"/"+this.name+"-quantiles-month-time_to_fix_hour.json";this.getTimeToFixDataFile=function(){return this.time_to_fix_data_file};this.time_to_fix_data=null;this.getTimeToFixData=function(){return this.time_to_fix_data};this.setTimeToFixData=function(data,self){if(self===undefined)self=this;self.time_to_fix_data=data};this.time_to_attention_data_file=this.data_dir+"/"+this.name+"-quantiles-month-time_to_attention_hour.json";this.getTimeToAttentionDataFile=function(){return this.time_to_attention_data_file};this.time_to_attention_data=null;this.getTimeToAttentionData=function(){return this.time_to_attention_data};this.setTimeToAttentionData=function(data,self){if(self===undefined)self=this;self.time_to_attention_data=data};this.project=null;this.getProject=function(){return this.project};this.setProject=function(project){this.project=project};this.markov_table_data_file=this.data_dir+"/"+this.name+"-markov.json";this.getMarkovTableDataFile=function(){return this.markov_table_data_file};this.markov_table_data=null;this.getMarkovTableData=function(){return this.markov_table_data};this.setMarkovTableData=function(data,self){if(self===undefined)self=this;self.markov_table_data=data};this.companies_data_file=this.data_dir+"/"+this.name+"-companies.json";this.getCompaniesDataFile=function(){return this.companies_data_file};this.companies=null;this.getCompaniesDataFull=function(){return this.companies};this.getCompaniesData=function(){var items=this.companies;if(items instanceof Array===false){if(this.companies!==null){items=this.companies.name}}return items};function filterOutCompaniesArray(com_data){var aux=Report.getMenuElements(),active_companies=null,result=[];if(aux&&typeof aux.filter_companies!==undefined){active_companies=aux.filter_companies}if(active_companies&&active_companies.length>0){$.each(com_data,function(pos,name){if(active_companies.indexOf(name)>=0){result[result.length]=name}})}else{result=com_data}return result}function filterOutCompanies(com_data){var aux=Report.getMenuElements();var active_companies=null;if(aux&&typeof aux.filter_companies!==undefined){active_companies=aux.filter_companies}if(active_companies&&active_companies.length>0){var keys=Object.keys(com_data);var positions=[];$.each(com_data.name,function(pos,name){if(active_companies.indexOf(name)>=0){positions[positions.length]=pos}});var new_obj={};$.each(keys,function(id,k){new_obj[k]=[];$.each(positions,function(subid,pos){var l=new_obj[k].length;new_obj[k][l]=com_data[k][pos]})});com_data=new_obj}return com_data}this.setCompaniesData=function(companies,self){if(companies===null)companies=[];if(self===undefined)self=this;if(Array.isArray(companies)){self.companies=filterOutCompaniesArray(companies)}else if(typeof companies==="object"){self.companies=filterOutCompanies(companies)}};this.companies_metrics_data={};this.addCompanyMetricsData=function(company,data,self){if(self===undefined)self=this;self.companies_metrics_data[company]=nameSpaceMetrics(data,self)};this.getCompaniesMetricsData=function(){return this.companies_metrics_data};this.companies_global_data={};this.addCompanyGlobalData=function(company,data,self){if(self===undefined)self=this;self.companies_global_data[company]=nameSpaceMetrics(data,self)};this.getCompaniesGlobalData=function(){return this.companies_global_data};this.companies_top_data={};this.addCompanyTopData=function(company,data,self){if(self===undefined)self=this;if(self.companies_top_data[company]===undefined)self.companies_top_data[company]={};self.companies_top_data[company]=data};this.getCompaniesTopData=function(){return this.companies_top_data};this.setCompaniesTopData=function(data,self){if(self===undefined)self=this;self.companies_top_data=data};this.repos_data_file=this.data_dir+"/"+this.name+"-repos.json";this.getReposDataFile=function(){return this.repos_data_file};this.repos=null;this.getReposDataFull=function(){return this.repos};this.getReposData=function(){var items=this.repos;if(items instanceof Array===false){if(this.repos!==null){items=this.repos.name}}return items};this.setReposData=function(repos,self){if(self===undefined)self=this;self.repos=repos;if(self.getName()!=="its")return;repos_names=[];if(repos instanceof Array===true){self.repos={};self.repos.name=repos}var filtered_repos=[];for(var i=0;i=0){if(self.getName()==="mls"){var mls_name=MLS.displayMLSListName(value);data[mls_name]=self.getReposMetricsData()[value]}else{data[value]=self.getReposMetricsData()[value]}}})}else{data=this.getData()}if(convert){data=DataProcess.convert(data,convert,metric_ids);if(convert==="divide"){mlabel=this.getMetrics()[metric_ids[0]].name+"/";mlabel+=this.getMetrics()[metric_ids[1]].name;metric_ids=["divide"];this.getMetrics().divide={name:mlabel}}if(convert==="substract"){mlabel=this.getMetrics()[metric_ids[0]].name+"-";mlabel+=this.getMetrics()[metric_ids[1]].name;metric_ids=["substract"];this.getMetrics().substract={name:mlabel}}}Viz.displayMetricsEvol(this,metric_ids,data,div_target,config,repositories)};this.isPageDisplayed=function(visited,linked,total,displayed){var window=Math.floor((displayed-3)/2);var lowest_barrier=visited-window;var highest_barrier=visited+window;if(linked===1||linked===total||linked==visited){return true}else if(linked>=lowest_barrier&&linkedvisited){return true}else{return false}};this.displayItemsNav=function(div_nav,type,page_str,order_by){var page=parseInt(page_str,null);if(isNaN(page))page=1;var items=null;var title="";var total=0;var displayed_pages=5;if(type==="companies"){items=this.getCompaniesData();title="List of companies"}else if(type==="repos"){items=this.getReposData();if(order_by)items=DataProcess.sortGlobal(this,order_by,type)}else if(type==="countries"){items=this.getCountriesData()}else if(type==="domains"){items=this.getDomainsData()}else if(type==="projects"){items=this.getProjectsData()}else{return}total=items.length;var nav="";var psize=Report.getPageSize();if(page){nav+=""}if(Report.getPageSize()>10)$.each(items,function(id,item){var label=Report.cleanLabel(item);nav+=""+label+" "});$("#"+div_nav).append(nav)};this.displayCompaniesLinks=function(div_links,limit,sort_metric){var sorted_companies=DataProcess.sortGlobal(this,sort_metric,"companies");var links="";var i=0;$.each(sorted_companies,function(id,company){links+='| ";if(i++>=limit-1)return false});$("#"+div_links).append(links)};this.displayCompaniesList=function(metrics,div_id,config_metric,sort_metric,page,show_links,start,end,convert){this.displaySubReportList("companies",metrics,div_id,config_metric,sort_metric,page,show_links,start,end,convert)};this.displayReposList=function(metrics,div_id,config_metric,sort_metric,page,show_links,start,end,convert,ds_realname){this.displaySubReportList("repos",metrics,div_id,config_metric,sort_metric,page,show_links,start,end,convert,ds_realname)};this.displayCountriesList=function(metrics,div_id,config_metric,sort_metric,page,show_links,start,end,convert){this.displaySubReportList("countries",metrics,div_id,config_metric,sort_metric,page,show_links,start,end,convert)};this.displayDomainsList=function(metrics,div_id,config_metric,sort_metric,page,show_links,start,end,convert){this.displaySubReportList("domains",metrics,div_id,config_metric,sort_metric,page,show_links,start,end,convert)};this.displayProjectsList=function(metrics,div_id,config_metric,sort_metric,page,show_links,start,end,convert){this.displaySubReportList("projects",metrics,div_id,config_metric,sort_metric,page,show_links,start,end,convert)};this.displaySubReportList=function(report,metrics,div_id,config_metric,sort_metric,page_str,show_links,start,end,convert,ds_realname){var page=parseInt(page_str,null);if(isNaN(page))page=1;var list="";var cont=(page-1)*Report.getPageSize()+1;var ds=this;var data=null,sorted=null;if(show_links===undefined)show_links=true;if(report==="companies"){data=this.getCompaniesMetricsData();sorted=DataProcess.sortGlobal(this,sort_metric,report)}else if(report==="repos"){data=this.getReposMetricsData();sorted=DataProcess.sortGlobal(this,sort_metric,report)}else if(report==="countries"){data=this.getCountriesMetricsData();sorted=DataProcess.sortGlobal(this,sort_metric,report)}else if(report==="domains"){data=this.getDomainsMetricsData();sorted=DataProcess.sortGlobal(this,sort_metric,report)}else if(report==="projects"){data=this.getProjectsMetricsData();sorted=DataProcess.sortGlobal(this,sort_metric,report)}else return;sorted=DataProcess.paginate(sorted,page);list+='';list+="";$.each(metrics,function(id,metric){if(ds.getMetrics()[metric]){title=ds.getMetrics()[metric].name;list+=""}else{list+=""}});list+="";$.each(sorted,function(id,item){list+="";var width=Math.floor(10/metrics.length);$.each(metrics,function(id,metric){var mywidth=width;list+="";rows_html+="";rows_html+=""}return rows_html}function composeTopRowsThreads(threads_data,limit,threads_links){var rows_html="";for(var i=0;i";rows_html+="'}else{rows_html+=""}rows_html+="";rows_html+="";rows_html+=""}return rows_html}function composeTopRowsPeople(people_data,limit,people_links,var_names){var rows_html="";if(people_data[var_names.id]===undefined){return rows_html}for(var j=0;j";rows_html+="";rows_html+="";if(people_data.organization!==undefined){org=people_data.organization[j];if(org===null){org="-"}rows_html+=""}rows_html+=""}return rows_html}function composeTopTabs(periods,metric,data,ds_name){var tabs_html="";var first=true;tabs_html+='";return tabs_html}function composeTitle(metric,ds_name,tabs,desc_metrics,selected_period){var key=ds_name+"_"+metric;var desc="";var title="";if(key in desc_metrics){desc=desc_metrics[key].desc;desc=desc.toLowerCase()}if(selected_period===""){data_period_formatted="Complete history"}else if(selected_period==="last month"){data_period_formatted="Last 30 days"}else if(selected_period==="last year"){data_period_formatted="Last 365 days"}if(Utils.isReleasePage())data_period_formatted="Release history";if(tabs===true){title+="
    Top "+desc+"
    "}else{title+='
    '+data_period_formatted+"
    "}return title}String.prototype.capitalize=function(){return this.replace(/(?:^|\s)\S/g,function(a){return a.toUpperCase()})};function displayTopMetric(div_id,metric,metric_period,history,graph,titles,limit,people_links){var top_metric_id=metric.name;if(!history||$.isEmptyObject(history))return;var metric_id=metric.action;if(limit&&history[metric_id].length"}new_div+=table;div=$("#"+div_id);div.append(new_div);if(graph){var labels=history[doer];var data=history[metric_id];if(limit){labels=[];data=[];for(var i=0;i';html+="";html+="";$.each(dsources,function(key,ds){if(ds.getName()==="people")return;var gdata=ds.getGlobalData();var ds_name=ds.getTitle();if(ds_name===undefined){ds_name="-"}var last_date=gdata.last_date;if(last_date===undefined){return}var first_date=gdata.first_date;if(first_date===undefined){first_date="-"}var type=gdata.type;html+="";html+="";html+=""});html+="
    "+title+""+metric+"
    ";list+="#"+cont+" ";cont++;var addURL=null;if(Report.addDataDir())addURL=Report.addDataDir();if(show_links){var release_var="";if(Utils.isReleasePage())release_var="&release="+$.urlParam("release");if(report==="companies"){list+=""}else if(report==="repos"){list+=""}else if(report==="countries"){list+=""}else if(report==="domains"){list+=""}else if(report==="projects"){list+=""}}list+="";list+=Report.cleanLabel(item);list+="";if(show_links)list+="";list+="";list+="
    ";if(data.companies_2006)html+="Companies in 2006: "+data.companies_2006+"
    ";if(data.companies_2009)html+="Companies in 2009: "+data.companies_2009+"
    ";if(data.companies_2012)html+="Companies in 2012: "+data.companies_2012+"
    ";$("#"+divid).append(html)};this.getSummaryLabels=function(){};this.getLabelForRepository=function(){return"repository"};this.getLabelForRepositories=function(){return"repositories"};this.displaySummary=function(report,divid,item,ds,ds_realname){if(!item)item="";var html="
    "+ds.getTitle()+"
    ";var id_label=this.getSummaryLabels();var global_data=null;if(report==="companies")global_data=ds.getCompaniesGlobalData()[item];else if(report==="countries")global_data=ds.getCountriesGlobalData()[item];else if(report==="repositories")global_data=ds.getReposGlobalData()[item];else if(report==="domains")global_data=ds.getDomainsGlobalData()[item];else if(report==="projects")global_data=ds.getProjectsGlobalData()[item];else global_data=ds.getGlobalData();if(!global_data)return;html=HTMLComposer.repositorySummaryTable(ds,global_data,id_label,ds_realname);$("#"+divid).append(html)};this.displayReposSummary=function(divid,ds){var html="";var data=ds.getGlobalData();html+="Total repositories: "+data[ds.getName()+"_repositories"]+"
    ";$("#"+divid).append(html)};this.displayCountriesSummary=function(divid,ds){var html="";var data=ds.getGlobalData();html+="Total countries: "+data[ds.getName()+"_countries"]+"
    ";$("#"+divid).append(html)};this.displayDomainsSummary=function(divid,ds){var html="";var data=ds.getGlobalData();html+="Total domains: "+data.domains+"
    ";$("#"+divid).append(html)};this.displayProjectsSummary=function(divid,ds){var html="";var data=ds.getGlobalData();html+="Total projects: "+data.projects+"
    ";$("#"+divid).append(html)};this.displayDemographics=function(divid,period){var data=this.getDemographicsData();Viz.displayDemographicsChart(divid,data,period)};this.displayTimeToAttention=function(div_id,column,labels,title){labels=true;title="Time to Attention "+column;var data=this.getTimeToAttentionData();if(data instanceof Array)return;Viz.displayTimeToAttention(div_id,data,column,labels,title)};this.displayTimeToFix=function(div_id,column,labels,title){labels=true;title="Time to Fix "+column;var data=this.getTimeToFixData();if(data instanceof Array)return;Viz.displayTimeToFix(div_id,this.getTimeToFixData(),column,labels,title)};this.displayMarkovTable=function(div_id,title){var data=this.getMarkovTableData();if(data===undefined){Report.log("No Markov data available");return}Viz.displayMarkovTable(div_id,data,title)};this.displayTop=function(div,all,show_metric,period,period_all,graph,limit,people_links,threads_links,repository){if(all===undefined)all=true;var titles=null;Viz.displayTop(div,this,all,show_metric,period,period_all,null,null,limit,people_links,threads_links,repository)};this.displayTopCompany=function(company,div,metric_id,period,titles,height,people_links){var data=this.getCompaniesTopData()[company];if(data===undefined)return;var metric=this.getMetrics()[metric_id];Viz.displayTopCompany(this,company,data,div,metric_id,period,titles,height,people_links)};this.displayTopGlobal=function(div,metric,period,titles){Viz.displayTopGlobal(div,this,metric,period,titles)};this.envisionEvo=function(div_id,history,relative,legend_show,summary_graph){config=Report.getVizConfig();var options=Viz.getEnvisionOptions(div_id,history,this.getName(),Report.getVizConfig()[this.getName()+"_hide"],summary_graph);options.legend_show=legend_show;if(relative)DataProcess.addRelativeValues(options.data,this.getMainMetric());new envision.templates.Envision_Report(options,[this])};this.displayEnvision=function(divid,relative,legend_show,summary_graph){var projects_full_data=Report.getProjectsDataSources();this.envisionEvo(divid,projects_full_data,relative,legend_show,summary_graph)}}if(Viz===undefined)var Viz={};(function(){var bitergiaColor="#ffa500";Viz.displayTop=displayTop;Viz.displayTopCompany=displayTopCompany;Viz.displayTopGlobal=displayTopGlobal;Viz.displayBasicChart=displayBasicChart;Viz.displayMetricCompanies=displayMetricCompanies;Viz.displayMetricSubReportStatic=displayMetricSubReportStatic;Viz.displayMetricsCompany=displayMetricsCompany;Viz.displayMetricsDomain=displayMetricsDomain;Viz.displayMetricsProject=displayMetricsProject;Viz.displayMetricsPeople=displayMetricsPeople;Viz.displayMetricsRepo=displayMetricsRepo;Viz.displayMetricRepos=displayMetricRepos;Viz.displayMetricsCountry=displayMetricsCountry;Viz.displayMetricDomains=displayMetricDomains;Viz.displayMetricProjects=displayMetricProjects;Viz.displayMetricsEvol=displayMetricsEvol;Viz.displayBubbles=displayBubbles;Viz.displayDemographicsChart=displayDemographicsChart;Viz.displayEnvisionAll=displayEnvisionAll;Viz.displayTimeToFix=displayTimeToFix;Viz.displayTimeToAttention=displayTimeToAttention;Viz.displayMetricSubReportLines=displayMetricSubReportLines;Viz.displayRadarActivity=displayRadarActivity;Viz.displayRadarCommunity=displayRadarCommunity;Viz.displayTreeMap=displayTreeMap;Viz.displayMarkovTable=displayMarkovTable;Viz.displayDataSourcesTable=displayDataSourcesTable;Viz.getEnvisionOptions=getEnvisionOptions;Viz.checkBasicConfig=checkBasicConfig;Viz.displayTimeZone=displayTimeZone;function findMetricDoer(history,metric_id){var doer="";$.each(Report.getAllMetrics(),function(name,metric){if(metric.action===metric_id){doer=metric.column;return false}});return doer}function displayMarkovTable(div_id,data,title){var html="

    "+title+"

    ";var table='';table+="";$.each(data,function(i,val){subdata=data[i];old_value="old_value";new_value="new_value";percent="f";number="issue";for(var k=0;k";table+="";table+=""}});table+="
    TransitionNumberPercent
    "+i+" -> "+value_new+""+value_num+""+value_p+"
    ";html+=table;div=$("#"+div_id);div.append(html);return}function translate(labels,l){if(labels.hasOwnProperty(l)){return labels[l]}else{return l}}function getTopVarsFromMetric(metric,ds_name){var var_names={};var_names.id="id";if(metric==="senders"&&(ds_name==="mls"||ds_name==="irc")){var_names.name="senders";var_names.action="sent"}if(metric==="authors"&&ds_name==="scm"){var_names.name="authors";var_names.action="commits"}if(metric==="closers"&&(ds_name==="its"||ds_name==="its_1")){var_names.name="closers";var_names.action="closed"}if(ds_name==="scr"){if(metric==="mergers"){var_names.name="mergers";var_names.action="merged"}if(metric==="openers"){var_names.name="openers";var_names.action="opened"}if(metric==="reviewers"){var_names.name="reviewers";var_names.action="reviews"}if(metric==="active_core_reviewers"){var_names.name="identifier";var_names.action="reviews"}if(metric==="participants"){var_names.name="identifier";var_names.action="events"}}if(ds_name==="downloads"){if(metric==="ips"){var_names.name="ips";var_names.action="downloads"}if(metric==="packages"){var_names.name="packages";var_names.action="downloads"}}if(ds_name==="mediawiki"){if(metric==="authors"){var_names.name="authors";var_names.action="reviews"}}if(ds_name==="qaforums"){if(metric==="senders"||metric==="asenders"||metric==="qsenders"){var_names.name="senders";var_names.action="sent"}else if(metric==="participants"){var_names.name="name";var_names.action="messages_sent"}}if(ds_name==="releases"){if(metric==="authors"){var_names.name="username";var_names.action="releases"}}return var_names}function getSortedPeriods(){return["last month","last year",""]}function composeTopRowsDownloads(dl_data,limit,var_names){var rows_html="";for(var j=0;j
    "+(j+1)+"";rows_html+=dl_data[var_names.name][j];rows_html+=""+metric_value+"
    #"+(i+1)+"";if(threads_links===true){var url="http://www.google.com/search?output=search&q=X&btnI=1";if(Report.getThreadsSite()!==undefined){url="http://www.google.com/search?output=search&q=X%20site%3AY&btnI=1";url=url.replace(/Y/g,Report.getThreadsSite())}else if(threads_data.hasOwnProperty("url")&&threads_data.url[i].length>0){url="http://www.google.com/search?output=search&q=X%20site%3AY&btnI=1";url=url.replace(/Y/g,threads_data.url[i])}url=url.replace(/X/g,threads_data.subject[i]);rows_html+="";rows_html+='';rows_html+=threads_data.subject[i]+"";rows_html+=' "+threads_data.subject[i]+""+threads_data.initiator_name[i]+""+threads_data.length[i]+"
    "+(j+1)+"";if(people_links){rows_html+='"}else{rows_html+=DataProcess.hideEmail(people_data[var_names.name][j])}rows_html+=""+metric_value+""+org+"
    Data SourceFromTo (Updated on)
    "+ds_name;if(type!==undefined){type=type.toLowerCase();type=type.charAt(0).toUpperCase()+type.slice(1);html+=" ("+type+")"}html+=""+first_date+""+last_date+"
    ";$(div).append(html)}function showHelp(div_id,metrics,custom_help){var all_metrics=Report.getAllMetrics();var help='"+value.name+": "+value.desc+"
    ";return false}};for(var i=0;iDescription: "+custom_help}help+='data-content="'+content+'" data-html="true">';help+='
    ';var old_help=$("#"+div_id).prev()[0];if(old_help&&old_help.className==="help")$("#"+div_id).prev().empty();$("#"+div_id).before(help)}function displayMetricsLines(div_id,metrics,history,title,config){if(!(config&&config.help===false))showHelp(div_id,metrics,config.custom_help);var lines_data=[];if(config.remove_last_point)history=DataProcess.revomeLastPoint(history);if(config.frame_time)history=DataProcess.frameTime(history,metrics);if(config.start_time)history=DataProcess.filterDates(config.start_time,config.end_time,history);$.each(metrics,function(id,metric){if(!history[metric])return;var mdata=[];$.each(history[metric],function(i,value){mdata[i]=[history.id[i],history[metric][i]]});var label=metric;if(Report.getAllMetrics()[metric])label=Report.getAllMetrics()[metric].name;lines_data.push({label:label,data:mdata})});displayDSLines(div_id,history,lines_data,title,config)}function displayMetricsLinesRepos(div_id,metrics,history,title,config,repositories){if(!(config&&config.help===false))showHelp(div_id,metrics,config.custom_help);var lines_data=[];var metric=metrics[0];var aux={};$.each(history,function(item,data){if(data===undefined)return false;if(data[metric]===undefined)return false;if(config.remove_last_point)data=DataProcess.revomeLastPoint(data);if(config.frame_time)data=DataProcess.frameTime(data,[metric]);if(config.start_time)data=DataProcess.filterDates(config.start_time,config.end_time,data);var mdata=[[],[]];$.each(data[metric],function(i,value){mdata[i]=[data.id[i],data[metric][i]]});lines_data.push({label:item,data:mdata});aux=data});displayDSLines(div_id,aux,lines_data,title,config)}function displayMetricSubReportLines(div_id,metric,items,title,config,start,end,convert,order){var lines_data=[];var history={};$.each(items,function(item,data){if(data===undefined)return false;if(data[metric]===undefined)return false;if(convert)data=DataProcess.convert(data,convert,metric);if(start)data=DataProcess.filterDates(start,end,data);if(config.frame_time)data=DataProcess.frameTime(data,[metric]);var cdata=[[],[]];for(var i=0;i1){if(lines_data[i].label!==undefined)company_name=lines_data[i].label;label+=lines_data[i].label+":"}label+=""+Report.formatValue(value)+"";if(company_name){var pending;if(companies[company_name].pending!==undefined){pending=companies[company_name].pending[o.index]}else{pending=companies[company_name].scr_pending[o.index]}label+="("+pending+")"}label+="
    "}return label};function getConfLinesChart(title,legend_div,history,lines_data,mouse_tracker_fn){var config={subtitle:title,legend:{show:true,container:legend_div},xaxis:{minorTickFreq:4,mode:"time",timeUnit:"second",timeFormat:"%b %y",margin:true},yaxis:{min:null,noTicks:2,autoscale:true},grid:{verticalLines:false,color:"#000000",outlineWidth:1,outline:"s"},mouse:{container:legend_div,track:true,trackY:false,relative:true,position:"ne",trackFormatter:function(o){var label=history.date[parseInt(o.index,10)];if(label===undefined)label="";else label+="
    ";for(var i=0;i1){if(lines_data[i].label!==undefined){value_name=abbreviateLabel(lines_data[i].label);label+=value_name+":"}}label+=""+Report.formatValue(value)+"
    "}return label}},selection:{mode:"x",fps:10},shadowSize:4};if(mouse_tracker_fn){Viz._history=history;Viz._lines_data=lines_data;config.mouse.trackFormatter=Viz[mouse_tracker_fn]}return config}function dropLastLineValue(history,lines_data){if(lines_data.length===0)return lines_data;if(lines_data.length>1){for(var j=0;jb[1]||b[1]===undefined?1:-1});return bi_array}function getMax(multiple_array,from_unixstamp,to_unixstamp){from_unixstamp=Math.round(from_unixstamp);to_unixstamp=Math.round(to_unixstamp);var narrays=multiple_array.length;var aux_array=[];for(var i=0;i0;z--){var aux_value=multiple_array[i].data[z][0];var cond=aux_valueto_unixstamp;if(cond){multiple_array[i].data.splice(z,1)}}}var res=[];for(i=0;i=18){var l=string.length;return".."+string.slice(string.length-16)}else{return string}}function displayDSLinesStacked(div_id,history,lines_data,title,config_metric){var container=document.getElementById(div_id);var legend_div=null;if(config_metric&&config_metric.legend&&config_metric.legend.container)legend_div=$("#"+config_metric.legend.container);var config={subtitle:title,legend:{show:true,container:legend_div},xaxis:{minorTickFreq:4,tickFormatter:function(x){var index=null;for(var i=0;i1){if(lines_data[i].label!==undefined)label+=abbreviateLabel(lines_data[i].label)+":"}label+=Report.formatValue(value)+"
    "}return label}}};if(config_metric){if(!config_metric.show_title)config.title="";if("show_legend"in config_metric){if(config_metric.show_legend===true)config.legend.show=true;else config.legend.show=false}if(config_metric.lines&&config_metric.lines.stacked)config.lines={stacked:true,fill:true,fillOpacity:1,fillBorder:true,lineWidth:.01};if(!config_metric.show_labels){config.xaxis.showLabels=false;config.yaxis.showLabels=false}if(config_metric.show_grid===false){config.grid.verticalLines=false;config.grid.horizontalLines=false;config.grid.outlineWidth=0}if(config_metric.show_mouse===false){config.mouse.track=false}if(config_metric.graph==="bars"){config.bars={show:true}}if(config_metric.light_style===true){config.grid.color="#ccc";config.legend.show=false}if(config_metric.custom_title){config.subtitle=config_metric.custom_title}}var showLastPoint=false;if(config_metric.graph!=="bars"&&lines_data.length===1&&lines_data[0].data[0][0]===0){showLastPoint=true}if(showLastPoint){lines_data=lastLineValueToPoint(history,lines_data);var next_id=history.id[history.id.length-1]+1;lines_data[0].data.push([next_id,undefined]);lines_data[1].data.push([next_id,undefined]);history.date.push("");history.id.push(next_id)}graph=Flotr.draw(container,lines_data,config);if(showLastPoint){if(history.date)history.date.pop();if(history.id)history.id.pop()}}function guessBarWidth(lines_data,history){var gap_size;var data_sets=lines_data.length;gap_size=parseInt(history.unixtime[1],10)-parseInt(history.unixtime[0],10);return gap_size/(data_sets+1)}function timeToUnixTime(lines_data,history,bars_flag,bar_width){var number_lines=lines_data.length;var data_length=lines_data[0].data.length;for(var z=0;z1)config.legend.show=true;lines_data=timeToUnixTime(lines_data,history,bars_flag,bar_width);var showLastPoint=false;if(Utils.isReleasePage()===false){if(config_metric.graph!=="bars"&&lines_data.length===1){showLastPoint=true}if(showLastPoint){lines_data=lastLineValueToPoint(history,lines_data);addEmptyValue(lines_data)}else if(!showLastPoint&&lines_data.length>1){dropLastLineValue(history,lines_data)}}function drawGraph(opts){var o=Flotr._.extend(Flotr._.clone(config),opts||{});return Flotr.draw(container,lines_data,o)}graph=drawGraph();Flotr.EventAdapter.observe(container,"flotr:select",function(area){var zoom_options={xaxis:{minorTickFreq:4,mode:"time",timeUnit:"second",timeFormat:"%b %y",min:area.x1,max:area.x2},yaxis:{min:area.y1,autoscale:true},grid:{verticalLines:true,color:"#000000",outlineWidth:1,outline:"s"}};zoom_options.subtitle=composeRangeText(config.subtitle,area.xfirst,area.xsecond);var new_lines_data_object=JSON.parse(JSON.stringify(lines_data));var max_value=getMax(new_lines_data_object,area.x1,area.x2);zoom_options.yaxis.max=max_value+max_value*.2;graph=drawGraph(zoom_options)});Flotr.EventAdapter.observe(container,"flotr:click",function(){drawGraph()});$(window).resize(function(){drawGraph()})}function displayTimeZone(divid,labels,data,metric_name){var pretty_mname=metric_name.charAt(0).toUpperCase()+metric_name.slice(1);var title=pretty_mname+" by Time Zone";var container=document.getElementById(divid);var chart_data=[],i;var legend_div=null;for(i=0;i0)label+="+"+value;else label+=value;return label},color:"#000000",tickDecimals:0},yaxis:{showLabels:true,min:0,noTicks:2,color:"#000000"},mouse:{track:true,trackY:false,relative:true,position:"n",trackDecimals:0,trackFormatter:function(tuple){var label="UTC ";if(tuple.x>0)label+="+"+tuple.x;else label+=tuple.x;pretty_name=metric_name.charAt(0).toUpperCase()+metric_name.slice(1);label+="
    "+pretty_name+": "+tuple.y+"";return label}},legend:{show:false},bars:{show:true,color:"#008080",fillColor:"#008080",fillOpacity:.6}};graph=Flotr.draw(container,chart_data,config);$(window).resize(function(){graph=Flotr.draw(container,chart_data,config)})}function displayBasicChart(divid,labels,data,graph,title,config_metric,rotate,fixColor,yformatter){var horizontal=false;if(rotate)horizontal=true;var container=document.getElementById(divid);var legend_div=null;if(config_metric&&config_metric.legend&&config_metric.legend.container)legend_div=$("#"+config_metric.legend.container);var chart_data=[],i;var label="";if(!horizontal){for(i=0;ilseries)lseries=data[1].length;var horizontal=false;if(rotate)horizontal=true;var container=document.getElementById(divid);var legend_div=null;if(config_metric&&config_metric.legend&&config_metric.legend.container)legend_div=$("#"+config_metric.legend.container);var serie1=[],i,serie2=[],data_viz=[];for(i=0;ii)val1=data[0][i];else val1=undefined;if(data[1].length>i)val2=data[1][i];else val2=undefined;if(!horizontal){serie1.push([i-bar_width/2,val1]);serie2.push([i+bar_width/2,val2])}else{serie1.push([val1,i-bar_width/2]);serie2.push([val2,i+bar_width/2])}}data_viz=[{data:serie1,label:labels[0]},{data:serie2,label:labels[1]}];var config={title:title,bars:{show:true,horizontal:horizontal,barWidth:bar_width},grid:{verticalLines:false,horizontalLines:false,outlineWidth:0},xaxis:{showLabels:false,min:0},yaxis:{showLabels:true,min:0},mouse:{container:legend_div,track:true,trackFormatter:function(o){var index; -var i="x";if(horizontal)i="y";var point=parseFloat(o[i],1);var point_down=Math.round((point-.2)*10)/10;var point_up=Math.round((point+.2)*10)/10;if(point_down===parseInt(point,10))index=point_down;else index=point_up;var years=index;if(period_year)years=index*period_year;var label=years+" years: ";var val1,val2;if(serie1[index]===undefined)val1=0;else val1=parseInt(serie1[index][0],10);if(isNaN(val1))val1=0;if(serie2[index]===undefined)val2=0;else val2=parseInt(serie2[index][0],10);if(isNaN(val2))val2=0;label+=val1+" "+labels[0];label+=" , ";label+=val2+" "+labels[1];label+=" ("+parseInt(val1/val2*100,10)+"% )";return label}},legend:{show:true,position:"ne",backgroundColor:"#D2E8FF",container:legend_div}};if(config_metric){if(!config_metric.show_title)config.title="";if(config_metric.show_legend)config.legend.show=true}if(config_metric&&config_metric.show_legend!==false)config.legend={show:true,position:"ne",container:legend_div};config.grid.horizontalLines=true;config.yaxis={showLabels:true,min:0};if(yformatter){config.yaxis={showLabels:true,min:0,tickFormatter:yformatter}}if(config_metric&&config_metric.xaxis)config.xaxis={showLabels:config_metric.xaxis,min:0};graph=Flotr.draw(container,data_viz,config)}function displayBubbles(divid,metric1,metric2,radius){var container=document.getElementById(divid);var DS=Report.getMetricDS(metric1)[0];var DS1=Report.getMetricDS(metric2)[0];var bdata=[];if(DS!=DS1){Report.log("Metrics for bubbles have different data sources");return}var full_data=[];var projects=[];$.each(Report.getDataSources(),function(index,ds){if(ds.getName()===DS.getName()){full_data.push(ds.getData());projects.push(ds.getProject())}});var dates=[[],[]];dates=[full_data[0].id,full_data[0].date];for(var i=0;imax){max=value;max=parseInt(max*(1+border),10)}}}(function(){var x=[data,ticks]})();graph=Flotr.draw(container,data,{radar:{show:true},mouse:{track:true,trackFormatter:function(o){var value="";for(var i=0;i"}return value}},grid:{circular:true,minorHorizontalLines:true},yaxis:{min:0,max:max,minorTickFreq:1},xaxis:{ticks:ticks}})}function displayRadar(div_id,metrics){var data=[],ticks=[];var radar_data=[];var projects=[];var i=0,j=0;for(i=0;i";for(var metric in basic_metrics){if(history[metric]===undefined)continue;value+=history[metric][index]+" "+metric+" , "}return value};return options};function getEnvisionOptions(div_id,projects_data,ds_name,hide,summary_graph){var basic_metrics=null,main_metric="",summary_data=[[],[]];if(ds_name){$.each(Report.getDataSources(),function(i,DS){if(DS.getName()===ds_name){basic_metrics=DS.getMetrics();return false}})}else basic_metrics=Report.getAllMetrics();$.each(Report.getDataSources(),function(i,DS){main_metric=DS.getMainMetric();if(ds_name===null&&DS.getName()==="scm"||ds_name&&DS.getName()==ds_name){summary_data=[DS.getData().id,DS.getData()[main_metric]];if(summary_graph===false)summary_data=[DS.getData().id,[]];return false}});var dates=[[],[]];$.each(projects_data,function(project,data){$.each(data,function(index,DS){if(ds_name&&ds_name!==DS.getName())return;dates=DataProcess.fillDates(dates,[DS.getData().id,DS.getData().date])})});var firstMonth=dates[0][0],container=document.getElementById(div_id),options;var markers=Report.getMarkers();options={container:container,xTickFormatter:function(index){var label=dates[1][index-firstMonth];if(label==="0")label="";return label},yTickFormatter:function(n){return n+""},selection:{data:{x:{min:dates[0][0],max:dates[0][dates[0].length-1]}}}};options.data={summary:DataProcess.fillHistory(dates[0],summary_data),markers:markers,dates:dates[1],envision_hide:hide,main_metric:main_metric};var project=null;var buildProjectInfo=function(index,ds){var data=ds.getData();if(data[metric]===undefined)return;if(options.data[metric]===undefined)options.data[metric]=[];var full_data=DataProcess.fillHistory(dates[0],[data.id,data[metric]]);if(metric===main_metric){options.data[metric].push({label:project,data:full_data});if(data[metric+"_relative"]===undefined)return;if(options.data[metric+"_relative"]===undefined)options.data[metric+"_relative"]=[];full_data=DataProcess.fillHistory(dates[0],[data.id,data[metric+"_relative"]]);options.data[metric+"_relative"].push({label:project,data:full_data})}else{options.data[metric].push({label:project,data:full_data})}};var buildProjectsInfo=function(name,pdata){project=name;$.each(pdata,buildProjectInfo)};for(var metric in basic_metrics){$.each(projects_data,buildProjectsInfo)}options.trackFormatter=function(o){var sdata=o.series.data,index=sdata[o.index][0]-firstMonth;var project_metrics={};var projects=Report.getProjectsList();for(var j=0;j";for(var metric in basic_metrics){if(options.data[metric]===undefined)continue;if($.inArray(metric,options.data.envision_hide)>-1)continue;for(j=0;j"+dates[1][index]+"";value+="";if(projects.length>1)value+="";for(metric in basic_metrics){if(options.data[metric]===undefined)continue;if($.inArray(metric,options.data.envision_hide)>-1)continue;value+=""+basic_metrics[metric].name+""}value+="";$.each(project_metrics,function(project,metrics){var row="";for(var metric in basic_metrics){if(options.data[metric]===undefined)continue;if($.inArray(metric,options.data.envision_hide)>-1)continue;mvalue=project_metrics[project][metric];if(mvalue===undefined)mvalue="n/a";row+=""+mvalue+""}if(projects.length>1)row=""+project+""+row;row+="";value+=row});value+="";return value};return options}function checkBasicConfig(config){if(config===undefined)config={};if(config.show_desc===undefined)config.show_desc=true;if(config.show_title===undefined)config.show_title=true;if(config.show_labels===undefined)config.show_labels=true;return config}function getMetricFriendlyName(ds,metrics){var desc_metrics=ds.getMetrics();var title="";for(var i=0;i1){list_name=list_name_tokens[list_name_tokens.length-1];if(list_name==="")list_name=list_name_tokens[list_name_tokens.length-2]}else{list_name=listinfo.replace("<","");list_name=list_name.replace(">","");list_name_tokens=list_name.split(".");list_name=list_name_tokens[0]}return list_name};function getUserLists(){var form=document.getElementById("form_mls_selector");var lists=[];for(var i=0;i-1)continue;file_messages=this.getDataDir()+"/mls-";file_messages+=l;file_messages+="-evolutionary.json";displayBasicList(div_id,l,file_messages,config_metric)}};this.getTitle=function(){return"Mailing Lists"};function displayBasicList(div_id,l,mls_file,config_metric){var config=Viz.checkBasicConfig(config_metric);for(var id in basic_metrics){var metric=basic_metrics[id];var title="";if(config.show_title)title=metric.name;if($.inArray(metric.column,Report.getConfig().mls_hide)>-1)continue;var new_div="
    ";new_div+="

    "+metric.name+" "+MLS.displayMLSListName(l)+"

    ";new_div+="
    ";if(config.show_desc)new_div+="

    "+metric.desc+"

    ";new_div+="
    ";$("#"+div_id).append(new_div);Viz.displayBasicLinesFile(metric.divid+"_"+l,mls_file,metric.column,config.show_labels,title)}}function getReportId(){var project_data=Report.getProjectData();return project_data.date+"_"+project_data.project_name}function getMLSId(){return getReportId()+"_mls_lists"}this.displayEvoListsMain=function(id){if(localStorage){if(localStorage.length&&localStorage.getItem(getMLSId())){lists=JSON.parse(localStorage.getItem(getMLSId()));return this.displayEvoLists(id,lists)}}history=this.getListsData();lists=history.mailing_list;if(lists===undefined)return;var config=Report.getConfig();lists_hide=config.mls_hide_lists;if(typeof lists==="string"){lists=[lists]}var filtered_lists=[];for(var i=0;i-1)form.elements[i].checked=true;else form.elements[i].checked=false}}};this.displayBasicDefault=function(div_id){var obj=self;if(this instanceof MLS)obj=this;cleanLocalStorage();obj.displaySelectorCheckDefault();$("#"+div_id).empty();obj.displayBasic(div_id)};this.displayEvoDefault=function(div_id){var obj=self;if(this instanceof MLS)obj=this;cleanLocalStorage();if(document.getElementById("form_mls_selector"))obj.displaySelectorCheckDefault();$("#"+div_id).empty();obj.displayEvoLists(div_id,obj.getDefaultLists())};this.displayEvoUserAll=function(id,all){var form=document.getElementById("form_mls_selector");for(var i=0;i-1)html+="checked ";html+=">";html+=MLS.displayMLSListName(l);html+="
    "}html+='1){$("#"+div_id_sel).append("Not supported in multiproject");$("#"+div_id_sel+" :input").attr("disabled",true)}};function filterHistory(history){if(typeof history.id==="number"){$.each(history,function(key,value){value=[value]})}return history}this.displayEvoLists=function(id,lists){for(var i=0;i1){list_name=list_name_tokens[list_name_tokens.length-1];if(list_name==="")list_name=list_name_tokens[list_name_tokens.length-2]}else{list_name=listinfo.replace("<","");list_name=list_name.replace(">","");list_name_tokens=list_name.split(".");list_name=list_name_tokens[0]}return list_name};this.getTitle=function(){return"Source Code Review"}}SCR.prototype=new DataSource("scr");function People(){this.basic_metrics={people_members:{column:"members",name:"Members",desc:"Community Members"}};this.getMainMetric=function(){return"people_members"};this.displayData=function(divid){var div_id="#"+divid;var str=this.global_data.url;if(!str||str.length===0){$(div_id+" .mediawiki_info").hide();return}var url="";if(this.global_data.repositories===1){url=this.global_data.url}else{url=Report.getProjectData().mediawiki_url}if(this.global_data.type)$(div_id+" #mediawiki_type").text(this.global_data.type);if(this.global_data.url&&this.global_data.url!=="."&&this.global_data.type!==undefined){$(div_id+" #mediawiki_url").attr("href",url);$(div_id+" #mediawiki_name").text("MediaWiki "+this.global_data.type)}else{$(div_id+" #mediawiki_url").attr("href",Report.getProjectData().mediawiki_url);$(div_id+" #mediawiki_name").text(Report.getProjectData().mediawiki_name);$(div_id+" #mediawiki_type").text(Report.getProjectData().mediawiki_type)}var data=this.getGlobalData();$(div_id+" #mediawikiFirst").text(data.first_date);$(div_id+" #mediawikiLast").text(data.last_date);$(div_id+" #mediawikiSent").text(data.mediawiki_reviews)};this.displayBubbles=function(divid,radius){if(false)Viz.displayBubbles(divid,"mediawiki_reviews","mediawiki_authors",radius)};this.getTitle=function(){return"Community Members"}}People.prototype=new DataSource("people");function Downloads(){var self=this;this.basic_metrics={downloads_downloads:{name:"Total downloads",column:"downloads"},downloads_packages:{divid:"",column:"packages",name:"Packages downloaded",desc:"",action:"downloads"},downloads_ips:{divid:"",column:"ips",name:"IP addresses",desc:"",action:"downloads"}};this.getMainMetric=function(){return"downloads_downloads"};this.displayData=function(divid){var div_id="#"+divid;var str=this.global_data.url;if(!str||str.length===0){$(div_id+" .irc_info").hide();return}var url="";if(this.global_data.repositories===1){url=this.global_data.url}else{url=Report.getProjectData().irc_url}if(this.global_data.type)$(div_id+" #irc_type").text(this.global_data.type);if(this.global_data.url&&this.global_data.url!=="."&&this.global_data.type!==undefined){$(div_id+" #irc_url").attr("href",url);$(div_id+" #irc_name").text("IRC "+this.global_data.type)}else{$(div_id+" #irc_url").attr("href",Report.getProjectData().irc_url);$(div_id+" #irc_name").text(Report.getProjectData().irc_name);$(div_id+" #irc_type").text(Report.getProjectData().irc_type)}var data=this.getGlobalData();$(div_id+" #ircFirst").text(data.first_date);$(div_id+" #ircLast").text(data.last_date);$(div_id+" #ircSent").text(data.irc_sent);$(div_id+" #ircRepositories").text(data.irc_repositories);if(data.repositories===1)$(div_id+" #ircRepositories").hide()};this.displayBubbles=function(divid,radius){if(false)Viz.displayBubbles(divid,"mediawiki_reviews","mediawiki_authors",radius)};this.getTitle=function(){return"Downloads"}}Downloads.prototype=new DataSource("downloads");function QAForums(){var self=this;this.basic_metrics={qaforums_sent:{name:"Messages posted",desc:"Number of messages posted to Q&A forums(s)",column:"sent"},qaforums_qsent:{name:"Questions posted",desc:"Number of questions posted to Q&A forums(s)",column:"qsent"},qaforums_asent:{name:"Answers posted",desc:"Number of answers posted to Q&A forums(s)",column:"asent"},qaforums_unanswered:{name:"Unanswered questions",desc:"Backlog of unanswered questions",column:"unanswered"},qaforums_senders:{name:"Persons posting messages",desc:"Number of persons posting messages to Q&A forums(s)",column:"senders"},qaforums_asenders:{name:"Persons posting answers",desc:"Number of persons answering in Q&A forums(s)",column:"asenders"},qaforums_qsenders:{divid:"qaforums_qsenders",name:"Persons posting questions",desc:"Number of persons asking questions in Q&A forums(s)",column:"qsenders"},qaforums_participants:{name:"Participants",desc:"Number of persons posting messages",column:"participants"}};this.getMainMetric=function(){return"qaforums_qsent"};this.displayData=function(divid){var div_id="#"+divid;var str=this.global_data.url;if(!str||str.length===0){$(div_id+" .irc_info").hide();return}var url="";if(this.global_data.repositories===1){url=this.global_data.url}else{url=Report.getProjectData().irc_url}if(this.global_data.type)$(div_id+" #irc_type").text(this.global_data.type);if(this.global_data.url&&this.global_data.url!=="."&&this.global_data.type!==undefined){$(div_id+" #irc_url").attr("href",url);$(div_id+" #irc_name").text("IRC "+this.global_data.type)}else{$(div_id+" #irc_url").attr("href",Report.getProjectData().irc_url);$(div_id+" #irc_name").text(Report.getProjectData().irc_name);$(div_id+" #irc_type").text(Report.getProjectData().irc_type)}var data=this.getGlobalData();$(div_id+" #ircFirst").text(data.first_date);$(div_id+" #ircLast").text(data.last_date);$(div_id+" #ircSent").text(data.irc_sent);$(div_id+" #ircRepositories").text(data.irc_repositories);if(data.repositories===1)$(div_id+" #ircRepositories").hide()};this.displayBubbles=function(divid,radius){if(false)Viz.displayBubbles(divid,"qaforums_quetions","qaforums_authors",radius)};this.getSummaryLabels=function(){var id_label={first_date:"Start",last_date:"End",sent:"Messages posted",qsent:"Questions posted",asent:"Answers posted",qunanswered:"Unanswered questions",senders:"Persons posting messages",asenders:"Persons posting answers",qsenders:"Persons posting questions"};return id_label};this.getTitle=function(){return"QAForums"}}QAForums.prototype=new DataSource("qaforums");function Releases(){var self=this;this.basic_metrics={releases_modules:{name:"Modules created",desc:"Number of modules created on the forge",column:"modules"},releases_authors:{name:"Module authors",desc:"Module authors",column:"authors"},releases_releases:{name:"Number of module releases",desc:"Number of module releases",column:"releases"}};this.getMainMetric=function(){return"releases_modules"};this.displayData=function(divid){var div_id="#"+divid;var str=this.global_data.url;if(!str||str.length===0){$(div_id+" .irc_info").hide();return}var url="";if(this.global_data.repositories===1){url=this.global_data.url}else{url=Report.getProjectData().irc_url}if(this.global_data.type)$(div_id+" #irc_type").text(this.global_data.type);if(this.global_data.url&&this.global_data.url!=="."&&this.global_data.type!==undefined){$(div_id+" #irc_url").attr("href",url);$(div_id+" #irc_name").text("IRC "+this.global_data.type)}else{$(div_id+" #irc_url").attr("href",Report.getProjectData().irc_url);$(div_id+" #irc_name").text(Report.getProjectData().irc_name);$(div_id+" #irc_type").text(Report.getProjectData().irc_type)}var data=this.getGlobalData();$(div_id+" #ircFirst").text(data.first_date);$(div_id+" #ircLast").text(data.last_date);$(div_id+" #ircSent").text(data.irc_sent);$(div_id+" #ircRepositories").text(data.irc_repositories);if(data.repositories===1)$(div_id+" #ircRepositories").hide()};this.displayBubbles=function(divid,radius){if(false)Viz.displayBubbles(divid,"releases_modules","releases_releases",radius)};this.getSummaryLabels=function(){var id_label={first_date:"Start",last_date:"End",modules:"Modules created",releases:"Module releases created",authors:"Persons creating/updating modules"};return id_label};this.getTitle=function(){return"Releases"}}Releases.prototype=new DataSource("releases");function Meetup(){var self=this;this.events={};this.basic_metrics={meetup_events:{divid:"meetup_events",action:"attendees",column:"opened",name:"Meetup events",desc:"Meetup events"},meetup_attendees:{divid:"meetup_attendees",column:"attendees",name:"Meetup attendees",desc:"Meetup attendees"},meetup_cities:{name:"city",action:"events",desc:"Cities where events took place"},meetup_groups:{name:"group",action:"events",desc:"Meetup groups"}};this.getMainMetric=function(){return"meetup_events"};this.getSummaryLabels=function(){var id_label={first_date:"Start",last_date:"End"};return id_label};this.displayData=function(divid){return""};this.getTitle=function(){return"Meeetup events"};this.displayTopMultiColumn=function(div,headers,columns){loadMeetupEventsData(function(data){Table.simpleTable(div,data,headers,columns)})};function buildLink(data){if(data.hasOwnProperty("event_name")&&data.hasOwnProperty("event_id")&&data.hasOwnProperty("group_id")){$.each(data.event_name,function(id,value){data.event_name[id]=''+data.event_name[id]+""})}return data}function loadMeetupEventsData(cb){var json_file="data/json/meetup-events.json";$.when($.getJSON(json_file)).done(function(json_data){this.events=json_data;this.events=buildLink(this.events);cb(this.events)}).fail(function(){console.log("Meetup events disabled. Missing "+json_file)})}}Meetup.prototype=new DataSource("meetup");var Identity={};(function(){var unique_list="unique-sortable";function sortSelList(list_divid,list,name){var connect="";if(list_divid===unique_list)connect="";else connect=unique_list;$("#"+name).sortable({handle:".handle",connectWith:"#"+connect,start:function(e,info){info.item.siblings(".ui-selected").appendTo(info.item)},stop:function(e,info){if(info.item.parent()[0].id===unique_list)info.item.find(".handle").remove();info.item.parent().append(info.item.find("li"));info.item.parent().find("li").addClass("mjs-nestedSortable-leaf")}}).selectable().find("li").prepend("
    ")}Identity.showListNested=function(list_divid,ds){list="
      div",maxLevels:2,isTree:true,expandOnHover:700,startCollapsed:true});$(".disclose").on("click",function(){$(this).closest("li").toggleClass("mjs-nestedSortable-collapsed").toggleClass("mjs-nestedSortable-expanded")})};function showFilter(ds,filter_data){$("#"+ds.getName()+"filter").autocomplete({source:filter_data,select:function(event,ui){$("#"+ds.getName()+"filter").val("");$("#"+ds.getName()+"_people_"+ui.item.value).addClass("ui-selected");return false}})}Identity.showList=function(list_divid,ds){var list="";var people=ds.getPeopleData();var filter_data=[];list='
        ';for(var i=0;i");showFilter(ds,filter_data);$("#"+list_divid).append(list);sortSelList(list_divid,list,ds.getName()+"-sortable")}})();var Charts={};(function(){Charts.plotLinesChart=plotLinesChart;function plotLinesChart(div_id,line_names,raw_data){var flt_data=buildFlotrData(line_names,raw_data);var config=getChartConfig(flt_data,raw_data.strdate);if(raw_data.max){config.yaxis.max=raw_data.max}if(flt_data.length>1)config.legend.show=true;config.subtitle=composeTitle(line_names);flt_data=decorateLines(flt_data);plotFlotr2LinesChart(div_id,flt_data,config)}function buildFlotrData(line_names,raw_data){var aux=[];$.each(raw_data.lines_data,function(id,array){var line=[];$.each(array,function(subid,value){line[line.length]=[raw_data.unixtime[subid],value]});var aux2={};aux2.data=line;aux2.label=line_names[id];aux[aux.length]=aux2});return aux}function decorateLines(flotr2_data){if(Utils.isReleasePage()===false){if(flotr2_data.length===1){flotr2_data=lastLineValueToPoint(flotr2_data);flotr2_data=addEmptyValue(flotr2_data)}else if(flotr2_data.length>1){flotr2_data=dropLastLineValue(flotr2_data)}}return flotr2_data}function lastLineValueToPoint(flotr2_data){if(flotr2_data.length!==1)return flotr2_data;var last=flotr2_data[0].data.length;var dots=[];var utime=0;for(var i=0;i1){for(var j=0;j1){if(flotr2_data[i].label!==undefined){value_name=flotr2_data[i].label;label+=value_name+":"}}label+=""+Report.formatValue(value)+"
        "}return label}},selection:{mode:"x",fps:10},shadowSize:4};return config}function composeRangeText(former_title,starting_utime,end_utime){var months=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];var date=new Date(parseInt(starting_utime,10)*1e3); -var starting_date=months[date.getMonth()]+" "+date.getFullYear();date=new Date(parseInt(end_utime,10)*1e3);var end_date=months[date.getMonth()]+" "+date.getFullYear();return former_title+" ( "+starting_date+" - "+end_date+" )"}function getMax(flotr2_data,from_unixstamp,to_unixstamp){from_unixstamp=Math.round(from_unixstamp);to_unixstamp=Math.round(to_unixstamp);var narrays=flotr2_data.length;var aux_array=[];for(var i=0;i0;z--){var aux_value=flotr2_data[i][z][0];var cond=aux_valueto_unixstamp;if(cond){flotr2_data[i].splice(z,1)}}}var res=[];for(i=0;ib[1]||b[1]===undefined?1:-1});return bi_array}})();String.prototype.supplant=function(o){return this.replace(/{([^{}]*)}/g,function(a,b){var r=o[b];return typeof r==="string"||typeof r==="number"?r:a})};var Table={};(function(){Table.displayTopTable=displayTopTable;Table.simpleTable=displaySimpleTable;function displaySimpleTable(div,data,headers,cols){var tables,aux_html,random_id;random_id="myTable"+Math.floor(Math.random()*9999+1);tables='';aux_html="";$.each(headers,function(id,value){aux_html+=""});aux_html+="";aux_html+="";var first_col,aux_col;if(typeof data[cols[0]]!=="object"){aux_col=[];aux_col[0]=data[cols[0]];first_col=aux_col}else{first_col=data[cols[0]]}$.each(first_col,function(id,value){aux_html+="";var cont=id+1;aux_html+="";$.each(cols,function(subid,name){if(typeof data[name]!=="object"){aux_html+=""}else{aux_html+=""}});aux_html+=""});aux_html+="";tables+=aux_html;tables+="
        #"+value+"
        "+cont+""+data[name]+""+data[name][id]+"
        ";tables+="";$("#"+div.id).append(tables)}function displayTopTable(div,data,opts){var first=true,gen_tabs=true,tabs="",tables="",periods;if(opts.period!=="all"){gen_tabs=false;periods=[opts.period];tables+=getHTMLTitleFromPeriod(opts.period)}else{tabs+=composeTopTabs(data,opts.metric,opts.class_name);periods=getSortedPeriods()}periods=getSortedPeriods();if(opts.height!==undefined){tables+='
        '}else{tables+='
        '}var var_names=getTopVarsFromMetric(opts.metric,opts.ds_name);for(var k=0;k';tables+='';unit=opts.desc_metrics[opts.ds_name+"_"+opts.metric].action;title=opts.desc_metrics[opts.ds_name+"_"+opts.metric].name;if(opts.metric==="threads"&&opts.ds_name==="mls"){tables+="";tables+="";tables+="";tables+="";tables+="";tables+=composeTopRowsThreads(data[key],opts.limit,opts.links_enabled);tables+=""}else{tables+="";if(unit!==undefined)tables+="";if(data[key].organization!==undefined){tables+=""}tables+="";tables+=composeTopRowsPeople(data[key],opts.limit,opts.links_enabled,var_names);tables+=""}tables+="
        # Subject Creator Length
        #"+title.capitalize()+""+unit.capitalize()+"Organization
        ";tables+="
        "}}tables+="
        ";$("#"+div.id).append(tabs+tables);if(gen_tabs===true){script="";$("#"+div.id).append(script)}}function composeTopRowsPeople(people_data,limit,people_links,var_names){var rows_html="";if(people_data[var_names.id]===undefined){return rows_html}for(var j=0;j"+(j+1)+"";rows_html+="";if(people_links){rows_html+='"}else{rows_html+=DataProcess.hideEmail(people_data[var_names.name][j])}rows_html+="";rows_html+=""+metric_value+"";if(people_data.organization!==undefined){org=people_data.organization[j];if(org===null){org="-"}rows_html+=""+org+""}rows_html+=""}return rows_html}function composeTopRowsThreads(threads_data,limit,threads_links){var rows_html="";for(var i=0;i"+(i+1)+"";if(threads_links===true){var url="http://www.google.com/search?output=search&q=X&btnI=1";if(Report.getThreadsSite()!==undefined){url="http://www.google.com/search?output=search&q=X%20site%3AY&btnI=1";url=url.replace(/Y/g,Report.getThreadsSite())}else if(threads_data.hasOwnProperty("url")&&threads_data.url[i].length>0){url="http://www.google.com/search?output=search&q=X%20site%3AY&btnI=1";url=url.replace(/Y/g,threads_data.url[i])}url=url.replace(/X/g,threads_data.subject[i]);rows_html+="";rows_html+='';rows_html+=threads_data.subject[i]+"";rows_html+=' '}else{rows_html+=""+threads_data.subject[i]+""}rows_html+=""+threads_data.initiator_name[i]+"";rows_html+=""+threads_data.length[i]+"";rows_html+=""}return rows_html}function getSortedPeriods(){return["last month","last year",""]}function getTitleFromPeriod(period){if(period==="last month"){return"Last 30 days"}else if(period==="last year"){return"Last 365 days"}else{return"Complete history"}}function getHTMLTitleFromPeriod(period){return'
        '+getTitleFromPeriod(period)+"
        "}function composeTopTabs(data,metric,class_name){var first=true,tabs_html='";return tabs_html}function getTopVarsFromMetric(metric,ds_name){var var_names={};var_names.id="id";if(metric==="senders"&&(ds_name==="mls"||ds_name==="irc")){var_names.name="senders";var_names.action="sent"}if(metric==="authors"&&ds_name==="scm"){var_names.name="authors";var_names.action="commits"}if(metric==="closers"&&ds_name==="its"){var_names.name="closers";var_names.action="closed"}if(ds_name==="scr"){if(metric==="mergers"){var_names.name="mergers";var_names.action="merged"}if(metric==="openers"){var_names.name="openers";var_names.action="opened"}if(metric==="submitters"){var_names.name="openers";var_names.action="opened"}if(metric==="reviewers"){var_names.name="reviewers";var_names.action="reviews"}if(metric==="participants"){var_names.name="identifier";var_names.action="events"}if(metric==="active_core_reviewers"){var_names.name="identifier";var_names.action="reviews"}}if(ds_name==="downloads"){if(metric==="ips"){var_names.name="ips";var_names.action="downloads"}if(metric==="packages"){var_names.name="packages";var_names.action="downloads"}}if(ds_name==="mediawiki"){if(metric==="authors"){var_names.name="authors";var_names.action="reviews"}}if(ds_name==="qaforums"){if(metric==="senders"||metric==="asenders"||metric==="qsenders"){var_names.name="senders";var_names.action="sent"}else if(metric==="participants"){var_names.name="name";var_names.action="messages_sent"}}if(ds_name==="releases"){if(metric==="authors"){var_names.name="username";var_names.action="releases"}}if(ds_name==="meetup"){if(metric==="cities"){var_names.name="city";var_names.action="events"}else if(metric==="events"){var_names.name="event";var_names.action="attendees"}else if(metric==="groups"){var_names.name="group";var_names.action="events"}}return var_names}})();var Demographics={};(function(){var data_dg={};Demographics.widget=function(){var divs=$(".DemographicsCompany"),ds_name,company_name,DS,period;if(divs.length>0){$.each(divs,function(id,div){ds_name="";ds_name=$(this).data("data-source");DS=Report.getDataSourceByName(ds_name);if(DS===null)return;if(DS.getData().length===0)return;period=$(this).data("period");company_name=Utils.getParameter("company");loadDemographicsData(div,ds_name,company_name,period,displayDemographics)})}};function loadDemographicsData(div,ds_name,company_name,period,cb){var suffix=ds_name.toLowerCase(),preffix,ag_file,b_file;preffix="data/json/"+company_name+"-"+suffix+"-com-demographics-";ag_file=preffix+"aging.json";b_file=preffix+"birth.json";$.when($.getJSON(ag_file),$.getJSON(b_file)).done(function(ag_data,b_data){data_dg[company_name]={};data_dg[company_name][ds_name]={aging:undefined,birth:undefined};data_dg[company_name][ds_name].aging=ag_data[0];data_dg[company_name][ds_name].birth=b_data[0];cb(div,ds_name,company_name,period)}).fail(function(){console.log("Demographics Company widget disabled. Missing "+ds_name+" files for company "+company_name)})}function displayDemographics(div,ds_name,company_name,period){if(!div.id)div.id="Parsed"+getRandomId();if(data_dg[company_name]!==undefined&&data_dg[company_name][ds_name]!==undefined){Viz.displayDemographicsChart(div.id,data_dg[company_name][ds_name],period)}}function getRandomId(){return Math.floor(Math.random()*1e3+1)}})();Loader.data_ready(function(){Demographics.widget()});vizjslib_git_revision="34718b0a2e50568555bef74e76c7b8af9d8562b5";vizjslib_git_tag="15.04-24-g34718b0"; \ No newline at end of file +return 4*(a<.5?c:3*(a-b)+c-.75)}function E(a){return function(b){return Math.pow(b,a)}}function F(a){return 1-Math.cos(a*kd/2)}function G(a){return Math.pow(2,10*(a-1))}function H(a){return 1-Math.sqrt(1-a*a)}function I(a,b){var c;return arguments.length<2&&(b=.45),arguments.length?c=b/(2*kd)*Math.asin(1/a):(a=1,c=b/4),function(d){return 1+a*Math.pow(2,10*-d)*Math.sin((d-c)*2*kd/b)}}function J(a){return a||(a=1.70158),function(b){return b*b*((a+1)*b-a)}}function K(a){return a<1/2.75?7.5625*a*a:a<2/2.75?7.5625*(a-=1.5/2.75)*a+.75:a<2.5/2.75?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375}function L(){d3.event.stopPropagation(),d3.event.preventDefault()}function M(){var a=d3.event,b;while(b=a.sourceEvent)a=b;return a}function N(a){var b=new t,c=0,d=arguments.length;while(++c360?a-=360:a<0&&(a+=360),a<60?f+(g-f)*a/60:a<180?g:a<240?f+(g-f)*(240-a)/60:f}function e(a){return Math.round(d(a)*255)}var f,g;return a%=360,a<0&&(a+=360),b=b<0?0:b>1?1:b,c=c<0?0:c>1?1:c,g=c<=.5?c*(1+b):c+b-c*b,f=2*c-g,W(e(a+120),e(a),e(a-120))}function fb(a,b,c){return new gb(a,b,c)}function gb(a,b,c){this.h=a,this.c=b,this.l=c}function hb(a,b,c){return ib(c,Math.cos(a*=md)*b,Math.sin(a)*b)}function ib(a,b,c){return new jb(a,b,c)}function jb(a,b,c){this.l=a,this.a=b,this.b=c}function kb(a,b,c){var d=(a+16)/116,e=d+b/500,f=d-c/200;return e=mb(e)*Ld,d=mb(d)*Md,f=mb(f)*Nd,W(ob(3.2404542*e-1.5371385*d-.4985314*f),ob(-.969266*e+1.8760108*d+.041556*f),ob(.0556434*e-.2040259*d+1.0572252*f))}function lb(a,b,c){return fb(Math.atan2(c,b)/kd*180,Math.sqrt(b*b+c*c),a)}function mb(a){return a>.206893034?a*a*a:(a-4/29)/7.787037}function nb(a){return a>.008856?Math.pow(a,1/3):7.787037*a+4/29}function ob(a){return Math.round(255*(a<=.00304?12.92*a:1.055*Math.pow(a,1/2.4)-.055))}function pb(a){return qd(a,Ud),a}function qb(a){return function(){return Pd(a,this)}}function rb(a){return function(){return Qd(a,this)}}function sb(a,b){function c(){this.removeAttribute(a)}function d(){this.removeAttributeNS(a.space,a.local)}function e(){this.setAttribute(a,b)}function f(){this.setAttributeNS(a.space,a.local,b)}function g(){var c=b.apply(this,arguments);c==null?this.removeAttribute(a):this.setAttribute(a,c)}function h(){var c=b.apply(this,arguments);c==null?this.removeAttributeNS(a.space,a.local):this.setAttributeNS(a.space,a.local,c)}return a=d3.ns.qualify(a),b==null?a.local?d:c:typeof b=="function"?a.local?h:g:a.local?f:e}function tb(a){return new RegExp("(?:^|\\s+)"+d3.requote(a)+"(?:\\s+|$)","g")}function ub(a,b){function c(){var c=-1;while(++c0&&(a=a.substring(0,g)),b?e:d}function Cb(a,b){for(var c=0,d=a.length;cc?j():(e.active=c,m.start.call(a,k,b),g.tween.forEach(function(c,d){(d=d.call(a,k,b))&&p.push(d)}),i(d)||d3.timer(i,0,h),1)}function i(d){if(e.active!==c)return j();var f=(d-n)/o,g=l(f),h=p.length;while(h>0)p[--h].call(a,g);if(f>=1)return j(),m.end.call(a,k,b),1}function j(){return--e.count?delete e[c]:delete a.__transition__,1}var k=a.__data__,l=g.ease,m=g.event,n=g.delay,o=g.duration,p=[];return n<=d?f(d):d3.timer(f,n,h),1},0,h),g}}function Gb(a){return a==null&&(a=""),function(){this.textContent=a}}function Hb(a,b,c,d){var e=a.id;return Cb(a,typeof c=="function"?function(a,f,g){a.__transition__[e].tween.set(b,d(c.call(a,a.__data__,f,g)))}:(c=d(c),function(a){a.__transition__[e].tween.set(b,c)}))}function Ib(){var a,b=Date.now(),c=be;while(c)a=b-c.then,a>=c.delay&&(c.flush=c.callback(a)),c=c.next;var d=Jb()-b;d>24?(isFinite(d)&&(clearTimeout(de),de=setTimeout(Ib,d)),ce=0):(ce=1,ee(Ib))}function Jb(){var a=null,b=be,c=Infinity;while(b)b.flush?(delete ae[b.callback.id],b=a?a.next=b.next:be=b.next):(c=Math.min(c,b.then+b.delay),b=(a=b).next);return c}function Kb(a,b){var c=a.ownerSVGElement||a;if(c.createSVGPoint){var d=c.createSVGPoint();if(fe<0&&(window.scrollX||window.scrollY)){c=d3.select(document.body).append("svg").style("position","absolute").style("top",0).style("left",0);var e=c[0][0].getScreenCTM();fe=!e.f&&!e.e,c.remove()}return fe?(d.x=b.pageX,d.y=b.pageY):(d.x=b.clientX,d.y=b.clientY),d=d.matrixTransform(a.getScreenCTM().inverse()),[d.x,d.y]}var f=a.getBoundingClientRect();return[b.clientX-f.left-a.clientLeft,b.clientY-f.top-a.clientTop]}function Lb(){}function Mb(a){var b=a[0],c=a[a.length-1];return b2?Xb:Wb,i=d?U:T;return g=e(a,b,i,c),h=e(b,a,i,d3.interpolate),f}function f(a){return g(a)}var g,h;return f.invert=function(a){return h(a)},f.domain=function(b){return arguments.length?(a=b.map(Number),e()):a},f.range=function(a){return arguments.length?(b=a,e()):b},f.rangeRound=function(a){return f.range(a).interpolate(d3.interpolateRound)},f.clamp=function(a){return arguments.length?(d=a,e()):d},f.interpolate=function(a){return arguments.length?(c=a,e()):c},f.ticks=function(b){return Ub(a,b)},f.tickFormat=function(b){return Vb(a,b)},f.nice=function(){return Ob(a,Sb),e()},f.copy=function(){return Qb(a,b,c,d)},e()}function Rb(a,b){return d3.rebind(a,b,"range","rangeRound","interpolate","clamp")}function Sb(a){return a=Math.pow(10,Math.round(Math.log(a)/Math.LN10)-1),a&&{floor:function(b){return Math.floor(b/a)*a},ceil:function(b){return Math.ceil(b/a)*a}}}function Tb(a,b){var c=Mb(a),d=c[1]-c[0],e=Math.pow(10,Math.floor(Math.log(d/b)/Math.LN10)),f=b/d*e;return f<=.15?e*=10:f<=.35?e*=5:f<=.75&&(e*=2),c[0]=Math.ceil(c[0]/e)*e,c[1]=Math.floor(c[1]/e)*e+e*.5,c[2]=e,c}function Ub(a,b){return d3.range.apply(d3,Tb(a,b))}function Vb(a,b){return d3.format(",."+Math.max(0,-Math.floor(Math.log(Tb(a,b)[2])/Math.LN10+.01))+"f")}function Wb(a,b,c,d){var e=c(a[0],a[1]),f=d(b[0],b[1]);return function(a){return f(e(a))}}function Xb(a,b,c,d){var e=[],f=[],g=0,h=Math.min(a.length,b.length)-1;a[h]0;j--)e.push(d(f)*j)}else{for(;fi;g--);e=e.slice(f,g)}return e},c.tickFormat=function(a,e){arguments.length<2&&(e=ge);if(!arguments.length)return e;var f=Math.max(.1,a/c.ticks().length),g=b===$b?(h=-1e-12,Math.floor):(h=1e-12,Math.ceil),h;return function(a){return a/d(g(b(a)+h))<=f?e(a):""}},c.copy=function(){return Yb(a.copy(),b)},Rb(c,a)}function Zb(a){return Math.log(a<0?0:a)/Math.LN10}function $b(a){return-Math.log(a>0?0:-a)/Math.LN10}function _b(a,b){function c(b){return a(d(b))}var d=ac(b),e=ac(1/b);return c.invert=function(b){return e(a.invert(b))},c.domain=function(b){return arguments.length?(a.domain(b.map(d)),c):a.domain().map(e)},c.ticks=function(a){return Ub(c.domain(),a)},c.tickFormat=function(a){return Vb(c.domain(),a)},c.nice=function(){return c.domain(Ob(c.domain(),Sb))},c.exponent=function(a){if(!arguments.length)return b;var f=c.domain();return d=ac(b=a),e=ac(1/b),c.domain(f)},c.copy=function(){return _b(a.copy(),b)},Rb(c,a)}function ac(a){return function(b){return b<0?-Math.pow(-b,a):Math.pow(b,a)}}function bc(a,b){function c(b){return g[((e.get(b)||e.set(b,a.push(b)))-1)%g.length]}function d(b,c){return d3.range(a.length).map(function(a){return b+c*a})}var e,g,h;return c.domain=function(d){if(!arguments.length)return a;a=[],e=new f;var g=-1,h=d.length,i;while(++gd&&(c=b,d=e);return c}function wc(a){return a.reduce(xc,0)}function xc(a,b){return a+b[1]}function yc(a,b){return zc(a,Math.ceil(Math.log(b.length)/Math.LN2+1))}function zc(a,b){var c=-1,d=+a[0],e=(a[1]-d)/b,f=[];while(++c<=b)f[c]=e*c+d;return f}function Ac(a){return[d3.min(a),d3.max(a)]}function Bc(a,b){return d3.rebind(a,b,"sort","children","value"),a.nodes=a,a.links=Fc,a}function Cc(a){return a.children}function Dc(a){return a.value}function Ec(a,b){return b.value-a.value}function Fc(a){return d3.merge(a.map(function(a){return(a.children||[]).map(function(b){return{source:a,target:b}})}))}function Gc(a,b){return a.value-b.value}function Hc(a,b){var c=a._pack_next;a._pack_next=b,b._pack_prev=a,b._pack_next=c,c._pack_prev=b}function Ic(a,b){a._pack_next=b,b._pack_prev=a}function Jc(a,b){var c=b.x-a.x,d=b.y-a.y,e=a.r+b.r;return e*e-c*c-d*d>.001}function Kc(a){function b(a){d=Math.min(a.x-a.r,d),e=Math.max(a.x+a.r,e),f=Math.min(a.y-a.r,f),g=Math.max(a.y+a.r,g)}if(!(c=a.children)||!(n=c.length))return;var c,d=Infinity,e=-Infinity,f=Infinity,g=-Infinity,h,i,j,k,l,m,n;c.forEach(Lc),h=c[0],h.x=-h.r,h.y=0,b(h);if(n>1){i=c[1],i.x=i.r,i.y=0,b(i);if(n>2){j=c[2],Oc(h,i,j),b(j),Hc(h,j),h._pack_prev=j,Hc(j,i),i=h._pack_next;for(k=3;k0&&(a=d)}return a}function Xc(a,b){return a.x-b.x}function Yc(a,b){return b.x-a.x}function Zc(a,b){return a.depth-b.depth}function $c(a,b){function c(a,d){var e=a.children;if(e&&(i=e.length)){var f,g=null,h=-1,i;while(++h=0)f=d[e]._tree,f.prelim+=b,f.mod+=b,b+=f.shift+(c+=f.change)}function ad(a,b,c){a=a._tree,b=b._tree;var d=c/(b.number-a.number);a.change+=d,b.change-=d,b.shift+=c,b.prelim+=c,b.mod+=c}function bd(a,b,c){return a._tree.ancestor.parent==b.parent?a._tree.ancestor:c}function cd(a){return{x:a.x,y:a.y,dx:a.dx,dy:a.dy}}function dd(a,b){var c=a.x+b[3],d=a.y+b[0],e=a.dx-b[1]-b[3],f=a.dy-b[0]-b[2];return e<0&&(c+=e/2,e=0),f<0&&(d+=f/2,f=0),{x:c,y:d,dx:e,dy:f}}var ed=".",fd=",",gd=[3,3];Date.now||(Date.now=function(){return+new Date});try{document.createElement("div").style.setProperty("opacity",0,"")}catch(hd){var id=CSSStyleDeclaration.prototype,jd=id.setProperty;id.setProperty=function(a,b,c){jd.call(this,a,b+"",c)}}d3={version:"3.0.2"};var kd=Math.PI,ld=1e-6,md=kd/180,nd=180/kd,od=e;try{od(document.documentElement.childNodes)[0].nodeType}catch(pd){od=d}var qd=[].__proto__?function(a,b){a.__proto__=b}:function(a,b){for(var c in b)a[c]=b[c]};d3.map=function(a){var b=new f;for(var c in a)b.set(c,a[c]);return b},c(f,{has:function(a){return rd+a in this},get:function(a){return this[rd+a]},set:function(a,b){return this[rd+a]=b},remove:function(a){return a=rd+a,a in this&&delete this[a]},keys:function(){var a=[];return this.forEach(function(b){a.push(b)}),a},values:function(){var a=[];return this.forEach(function(b,c){a.push(c)}),a},entries:function(){var a=[];return this.forEach(function(b,c){a.push({key:b,value:c})}),a},forEach:function(a){for(var b in this)b.charCodeAt(0)===sd&&a.call(this,b.substring(1),this[b])}});var rd="\x00",sd=rd.charCodeAt(0);d3.functor=i,d3.rebind=function(a,b){var c=1,d=arguments.length,e;while(++cb?1:a>=b?0:NaN},d3.descending=function(a,b){return ba?1:b>=a?0:NaN},d3.mean=function(a,b){var c=a.length,d,e=0,f=-1,g=0;if(arguments.length===1)while(++f1&&(a=a.map(b)),a=a.filter(k),a.length?d3.quantile(a.sort(d3.ascending),.5):undefined},d3.min=function(a,b){var c=-1,d=a.length,e,f;if(arguments.length===1){while(++cf&&(e=f)}else{while(++cf&&(e=f)}return e},d3.max=function(a,b){var c=-1,d=a.length,e,f;if(arguments.length===1){while(++ce&&(e=f)}else{while(++ce&&(e=f)}return e},d3.extent=function(a,b){var c=-1,d=a.length,e,f,g;if(arguments.length===1){while(++cf&&(e=f),gf&&(e=f),g1);return a+b*c*Math.sqrt(-2*Math.log(e)/e)}},logNormal:function(a,b){var c=arguments.length;c<2&&(b=1),c<1&&(a=0);var d=d3.random.normal();return function(){return Math.exp(a+b*d())}},irwinHall:function(a){return function(){for(var b=0,c=0;c>>1;a.call(b,b[f],f)>>1;c=d.length)return h?h.call(c,b):g?b.sort(g):b;var i=-1,j=b.length,k=d[e++],l,m,n=new f,o,p={};while(++i=d.length)return a;var f=[],g=e[c++],h;for(h in a)f.push({key:h,values:b(a[h],c)});return g&&f.sort(function(a,b){return g(a.key,b.key)}),f}var c={},d=[],e=[],g,h;return c.map=function(b){return a(b,0)},c.entries=function(c){return b(a(c,0),0)},c.key=function(a){return d.push(a),c},c.sortKeys=function(a){return e[d.length-1]=a,c},c.sortValues=function(a){return g=a,c},c.rollup=function(a){return h=a,c},c},d3.keys=function(a){var b=[];for(var c in a)b.push(c);return b},d3.values=function(a){var b=[];for(var c in a)b.push(a[c]);return b},d3.entries=function(a){var b=[];for(var c in a)b.push({key:c,value:a[c]});return b},d3.permute=function(a,b){var c=[],d=-1,e=b.length;while(++db)d.push(g/e);else while((g=a+c*++f)=200&&a<300||a===304?f.load.call(e,i.call(e,j)):f.error.call(e,j)}var e={},f=d3.dispatch("progress","load","error"),h={},i=g,j=new(window.XDomainRequest&&/^(http(s)?:)?\/\//.test(a)?XDomainRequest:XMLHttpRequest);return"onload"in j?j.onload=j.onerror=d:j.onreadystatechange=function(){j.readyState>3&&d()},j.onprogress=function(a){var b=d3.event;d3.event=a;try{f.progress.call(e,j)}finally{d3.event=b}},e.header=function(a,b){return a=(a+"").toLowerCase(),arguments.length<2?h[a]:(b==null?delete h[a]:h[a]=b+"",e)},e.mimeType=function(a){return arguments.length?(b=a==null?null:a+"",e):b},e.response=function(a){return i=a,e},["get","post"].forEach(function(a){e[a]=function(){return e.send.apply(e,[a].concat(od(arguments)))}}),e.send=function(c,d,f){arguments.length===2&&typeof d=="function"&&(f=d,d=null),j.open(c,a,!0),b!=null&&!("accept"in h)&&(h.accept=b+",*/*");if(j.setRequestHeader)for(var g in h)j.setRequestHeader(g,h[g]);return b!=null&&j.overrideMimeType&&j.overrideMimeType(b),f!=null&&e.on("error",f).on("load",function(a){f(null,a)}),j.send(d==null?null:d),e},e.abort=function(){return j.abort(),e},d3.rebind(e,f,"on"),arguments.length===2&&typeof b=="function"&&(c=b,b=null),c==null?e:e.get(o(c))},d3.text=function(){return d3.xhr.apply(d3,arguments).response(p)},d3.json=function(a,b){return d3.xhr(a,"application/json",b).response(q)},d3.html=function(a,b){return d3.xhr(a,"text/html",b).response(r)},d3.xml=function(){return d3.xhr.apply(d3,arguments).response(s)};var vd={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};d3.ns={prefix:vd,qualify:function(a){var b=a.indexOf(":"),c=a;return b>=0&&(c=a.substring(0,b),a=a.substring(b+1)),vd.hasOwnProperty(c)?{space:vd[c],local:a}:a}},d3.dispatch=function(){var a=new t,b=-1,c=arguments.length;while(++b0&&(d=a.substring(c+1),a=a.substring(0,c)),arguments.length<2?this[a].on(d):this[a].on(d,b)},d3.format=function(a){var b=wd.exec(a),c=b[1]||" ",d=b[2]||">",e=b[3]||"",f=b[4]||"",g=b[5],h=+b[6],i=b[7],j=b[8],k=b[9],l=1,m="",n=!1;j&&(j=+j.substring(1));if(g||c==="0"&&d==="=")g=c="0",d="=",i&&(h-=Math.floor((h-1)/4));switch(k){case"n":i=!0,k="g";break;case"%":l=100,m="%",k="f";break;case"p":l=100,m="%",k="r";break;case"b":case"o":case"x":case"X":f&&(f="0"+k.toLowerCase());case"c":case"d":n=!0,j=0;break;case"s":l=-1,k="r"}f==="#"&&(f=""),k=="r"&&!j&&(k="g"),k=xd.get(k)||w;var o=g&&i;return function(a){if(n&&a%1)return"";var b=a<0||a===0&&1/a<0?(a=-a,"-"):e;if(l<0){var p=d3.formatPrefix(a,j);a=p.scale(a),m=p.symbol}else a*=l;a=k(a,j),!g&&i&&(a=yd(a));var q=f.length+a.length+(o?0:b.length),r=q"?r+b+a:d==="^"?r.substring(0,q>>=1)+b+a+r.substring(q):b+(o?a:r+a))+m}};var wd=/(?:([^{])?([<>=^]))?([+\- ])?(#)?(0)?([0-9]+)?(,)?(\.[0-9]+)?([a-zA-Z%])?/,xd=d3.map({b:function(a){return a.toString(2)},c:function(a){return String.fromCharCode(a)},o:function(a){return a.toString(8)},x:function(a){return a.toString(16)},X:function(a){return a.toString(16).toUpperCase()},g:function(a,b){return a.toPrecision(b)},e:function(a,b){return a.toExponential(b)},f:function(a,b){return a.toFixed(b)},r:function(a,b){return d3.round(a,b=v(a,b)).toFixed(Math.max(0,Math.min(20,b)))}}),yd=g;if(gd){var zd=gd.length;yd=function(a){var b=a.lastIndexOf("."),c=b>=0?"."+a.substring(b+1):(b=a.length,""),d=[],e=0,f=gd[0];while(b>0&&f>0)d.push(a.substring(b-=f,b+f)),f=gd[e=(e+1)%zd];return d.reverse().join(fd||"")+c}}var Ad=["y","z","a","f","p","n","μ","m","","k","M","G","T","P","E","Z","Y"].map(x);d3.formatPrefix=function(a,b){var c=0;return a&&(a<0&&(a*=-1),b&&(a=d3.round(a,v(a,b))),c=1+Math.floor(1e-12+Math.log(a)/Math.LN10),c=Math.max(-24,Math.min(24,Math.floor((c<=0?c+1:c-1)/3)*3))),Ad[8+c/3]};var Bd=function(){return g},Cd=d3.map({linear:Bd,poly:E,quad:function(){return B},cubic:function(){return C},sin:function(){return F},exp:function(){return G},circle:function(){return H},elastic:I,back:J,bounce:function(){return K}}),Dd=d3.map({"in":g,out:z,"in-out":A,"out-in":function(a){return A(z(a))}});d3.ease=function(a){var b=a.indexOf("-"),c=b>=0?a.substring(0,b):a,d=b>=0?a.substring(b+1):"in";return c=Cd.get(c)||Bd,d=Dd.get(d)||g,y(d(c.apply(null,Array.prototype.slice.call(arguments,1))))},d3.event=null,d3.transform=function(a){var b=document.createElementNS(d3.ns.prefix.svg,"g");return(d3.transform=function(a){b.setAttribute("transform",a);var c=b.transform.baseVal.consolidate();return new O(c?c.matrix:Ed)})(a)},O.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var Ed={a:1,b:0,c:0,d:1,e:0,f:0};d3.interpolate=function(a,b){var c=d3.interpolators.length,d;while(--c>=0&&!(d=d3.interpolators[c](a,b)));return d},d3.interpolateNumber=function(a,b){return b-=a,function(c){return a+b*c}},d3.interpolateRound=function(a,b){return b-=a,function(c){return Math.round(a+b*c)}},d3.interpolateString=function(a,b){var c,d,e,f=0,g=0,h=[],i=[],j,k;Fd.lastIndex=0;for(d=0;c=Fd.exec(b);++d)c.index&&h.push(b.substring(f,g=c.index)),i.push({i:h.length,x:c[0]}),h.push(null),f=Fd.lastIndex;f180?k+=360:k-j>180&&(j+=360),d.push({i:c.push(c.pop()+"rotate(",null,")")-2,x:d3.interpolateNumber(j,k)})):k&&c.push(c.pop()+"rotate("+k+")"),l!=m?d.push({i:c.push(c.pop()+"skewX(",null,")")-2,x:d3.interpolateNumber(l,m)}):m&&c.push(c.pop()+"skewX("+m+")"),n[0]!=o[0]||n[1]!=o[1]?(e=c.push(c.pop()+"scale(",null,",",null,")"),d.push({i:e-4,x:d3.interpolateNumber(n[0],o[0])},{i:e-2,x:d3.interpolateNumber(n[1],o[1])})):(o[0]!=1||o[1]!=1)&&c.push(c.pop()+"scale("+o+")"),e=d.length,function(a){var b=-1,f;while(++b180?f-=360:f<-180&&(f+=360),function(a){return eb(c+f*a,d+g*a,e+h*a)+""}},d3.interpolateLab=function(a,b){a=d3.lab(a),b=d3.lab(b);var c=a.l,d=a.a,e=a.b,f=b.l-c,g=b.a-d,h=b.b-e;return function(a){return kb(c+f*a,d+g*a,e+h*a)+""; +}},d3.interpolateHcl=function(a,b){a=d3.hcl(a),b=d3.hcl(b);var c=a.h,d=a.c,e=a.l,f=b.h-c,g=b.c-d,h=b.l-e;return f>180?f-=360:f<-180&&(f+=360),function(a){return hb(c+f*a,d+g*a,e+h*a)+""}},d3.interpolateArray=function(a,b){var c=[],d=[],e=a.length,f=b.length,g=Math.min(a.length,b.length),h;for(h=0;h=0;)if(f=c[d])e&&e!==f.nextSibling&&e.parentNode.insertBefore(f,e),e=f;return this},Ud.sort=function(a){a=Ab.apply(this,arguments);for(var b=-1,c=this.length;++b0?h=a:h=0:a>0&&(d.start({type:"start",alpha:h=a}),d3.timer(c.tick)),c):h},c.start=function(){function a(a,c){var e=b(d),f=-1,g=e.length,h;while(++fe&&(e=h),d.push(h)}for(g=0;g0){f=-1;while(++f=i[0]&&o<=i[1]&&(k=g[d3.bisect(j,o,1,m)-1],k.y+=n,k.push(a[f]))}return g}var b=!0,c=Number,d=Ac,e=yc;return a.value=function(b){return arguments.length?(c=b,a):c},a.range=function(b){return arguments.length?(d=i(b),a):d},a.bins=function(b){return arguments.length?(e=typeof b=="number"?function(a){return zc(a,b)}:i(b),a):e},a.frequency=function(c){return arguments.length?(b=!!c,a):b},a},d3.layout.hierarchy=function(){function a(b,g,h){var i=e.call(c,b,g);b.depth=g,h.push(b);if(i&&(k=i.length)){var j=-1,k,l=b.children=[],m=0,n=g+1,o;while(++j0){var k=c*j/2;$c(g,function(a){a.r+=k}),$c(g,Kc),$c(g,function(a){a.r-=k}),j=Math.max(2*g.r/h,2*g.r/i)}return Nc(g,h/2,i/2,1/j),f}var b=d3.layout.hierarchy().sort(Gc),c=0,d=[1,1];return a.size=function(b){return arguments.length?(d=b,a):d},a.padding=function(b){return arguments.length?(c=+b,a):c},Bc(a,b)},d3.layout.cluster=function(){function a(a,e){var f=b.call(this,a,e),g=f[0],h,i=0;$c(g,function(a){var b=a.children;b&&b.length?(a.x=Qc(b),a.y=Pc(b)):(a.x=h?i+=c(a,h):0,a.y=0,h=a)});var j=Rc(g),k=Sc(g),l=j.x-c(j,k)/2,m=k.x+c(k,j)/2;return $c(g,function(a){a.x=(a.x-l)/(m-l)*d[0],a.y=(1-(g.y?a.y/g.y:1))*d[1]}),f}var b=d3.layout.hierarchy().sort(null).value(null),c=Tc,d=[1,1];return a.separation=function(b){return arguments.length?(c=b,a):c},a.size=function(b){return arguments.length?(d=b,a):d},Bc(a,b)},d3.layout.tree=function(){function a(a,e){function f(a,b){var d=a.children,e=a._tree;if(d&&(g=d.length)){var g,i=d[0],j,k=i,l,m=-1;while(++m0&&(ad(bd(g,a,d),a,m),i+=m,j+=m),k+=g._tree.mod,i+=e._tree.mod,l+=h._tree.mod,j+=f._tree.mod;g&&!Vc(f)&&(f._tree.thread=g,f._tree.mod+=k-j),e&&!Uc(h)&&(h._tree.thread=e,h._tree.mod+=i-l,d=a)}return d}var i=b.call(this,a,e),j=i[0];$c(j,function(a,b){a._tree={ancestor:a,prelim:0,mod:0,change:0,shift:0,number:b?b._tree.number+1:0}}),f(j),g(j,-j._tree.prelim);var k=Wc(j,Yc),l=Wc(j,Xc),m=Wc(j,Zc),n=k.x-c(k,l)/2,o=l.x+c(l,k)/2,p=m.depth||1;return $c(j,function(a){a.x=(a.x-n)/(o-n)*d[0],a.y=a.depth/p*d[1],delete a._tree}),i}var b=d3.layout.hierarchy().sort(null).value(null),c=Tc,d=[1,1];return a.separation=function(b){return arguments.length?(c=b,a):c},a.size=function(b){return arguments.length?(d=b,a):d},Bc(a,b)},d3.layout.treemap=function(){function a(a,b){var c=-1,d=a.length,e,f;while(++c0)h.push(j=i[p-1]),h.area+=j.area,n!=="squarify"||(m=d(h,o))<=l?(i.pop(),l=m):(h.area-=h.pop().area,e(h,o,g,!1),o=Math.min(g.dx,g.dy),h.length=h.area=0,l=Infinity);h.length&&(e(h,o,g,!0),h.length=h.area=0),f.forEach(b)}}function c(b){var d=b.children;if(d&&d.length){var f=k(b),g=d.slice(),h,i=[];a(g,f.dx*f.dy/b.value),i.area=0;while(h=g.pop())i.push(h),i.area+=h.area,h.z!=null&&(e(i,h.z?f.dx:f.dy,f,!g.length),i.length=i.area=0);d.forEach(c)}}function d(a,b){var c=a.area,d,e=0,f=Infinity,g=-1,h=a.length;while(++ge&&(e=d)}return c*=c,b*=b,c?Math.max(b*e*o/c,c/(b*f*o)):Infinity}function e(a,b,c,d){var e=-1,f=a.length,g=c.x,i=c.y,j=b?h(a.area/b):0,k;if(b==c.dx){if(d||j>c.dy)j=c.dy;while(++ec.dx)j=c.dx;while(++e=a.x1&&b.x1<=a.x2||b.x2>=a.x1&&b.x2<=a.x2||a.x1>=b.x1&&a.x2<=b.x2){x=true}if(b.y1>=a.y1&&b.y1<=a.y2||b.y2>=a.y1&&b.y2<=a.y2||a.y1>=b.y1&&a.y2<=b.y2){y=true}return x&&y};fn.detect_overlapping_region=function(a,b){var regionX="";var regionY="";if(a.y1>b.cy&&a.y1b.y1&&a.y2b.cx&&a.x1b.x1&&a.x2this.player_max_left){left=this.player_max_left}else if(left=mouse_down_zone){nextScrollTop=scrollTop+30;if(nextScrollTop0){$window.scrollTop(nextScrollTop);this.scrollOffset=this.scrollOffset-30}}};fn.calculate_positions=function(e){this.window_height=$window.height()};fn.drag_handler=function(e){var node=e.target.nodeName;if(this.disabled||e.which!==1&&!isTouch){return}if(this.ignore_drag(e)){return}var self=this;var first=true;this.$player=$(e.currentTarget);this.el_init_pos=this.get_actual_pos(this.$player);this.mouse_init_pos=this.get_mouse_pos(e);this.offsetY=this.mouse_init_pos.top-this.el_init_pos.top;this.$body.on(pointer_events.move,function(mme){var mouse_actual_pos=self.get_mouse_pos(mme);var diff_x=Math.abs(mouse_actual_pos.left-self.mouse_init_pos.left);var diff_y=Math.abs(mouse_actual_pos.top-self.mouse_init_pos.top);if(!(diff_x>self.options.distance||diff_y>self.options.distance)){return false}if(first){first=false;self.on_dragstart.call(self,mme);return false}if(self.is_dragging===true){self.on_dragmove.call(self,mme)}return false});return false};fn.on_dragstart=function(e){e.preventDefault();this.drag_start=true;this.is_dragging=true;var offset=this.$container.offset();this.baseX=Math.round(offset.left);this.baseY=Math.round(offset.top);this.doc_height=$(document).height();if(this.options.helper==="clone"){this.$helper=this.$player.clone().appendTo(this.$container).addClass("helper");this.helper=true}else{this.helper=false}this.scrollOffset=0;this.el_init_offset=this.$player.offset();this.player_width=this.$player.width();this.player_height=this.$player.height();this.player_max_left=this.$container.width()-this.player_width+this.options.offset_left;if(this.options.start){this.options.start.call(this.$player,e,{helper:this.helper?this.$helper:this.$player})}return false};fn.on_dragmove=function(e){var offset=this.get_offset(e);this.options.autoscroll&&this.manage_scroll(offset);(this.helper?this.$helper:this.$player).css({position:"absolute",left:offset.left,top:offset.top});var ui={position:{left:offset.left,top:offset.top}};if(this.options.drag){this.options.drag.call(this.$player,e,ui)}return false};fn.on_dragstop=function(e){var offset=this.get_offset(e);this.drag_start=false;var ui={position:{left:offset.left,top:offset.top}};if(this.options.stop){this.options.stop.call(this.$player,e,ui)}if(this.helper){this.$helper.remove()}return false};fn.on_select_start=function(e){if(this.disabled){return}if(this.ignore_drag(e)){return}return false};fn.enable=function(){this.disabled=false};fn.disable=function(){this.disabled=true};fn.destroy=function(){this.disable();$.removeData(this.$container,"drag")};fn.ignore_drag=function(event){if(this.options.handle){return!$(event.target).is(this.options.handle)}return $.inArray(event.target.nodeName,this.options.ignore_dragging)>=0};$.fn.drag=function(options){return this.each(function(){if(!$.data(this,"drag")){$.data(this,"drag",new Draggable(this,options))}})}})(jQuery,window,document);(function($,window,document,undefined){var defaults={namespace:"",widget_selector:"li",widget_margins:[10,10],widget_base_dimensions:[400,225],extra_rows:0,extra_cols:0,min_cols:1,min_rows:15,max_size_x:6,autogenerate_stylesheet:true,avoid_overlapped_widgets:true,serialize_params:function($w,wgd){return{col:wgd.col,row:wgd.row,size_x:wgd.size_x,size_y:wgd.size_y}},collision:{},draggable:{distance:4}};function Gridster(el,options){this.options=$.extend(true,defaults,options);this.$el=$(el);this.$wrapper=this.$el.parent();this.$widgets=this.$el.children(this.options.widget_selector).addClass("gs_w");this.widgets=[];this.$changed=$([]);this.wrapper_width=this.$wrapper.width();this.min_widget_width=this.options.widget_margins[0]*2+this.options.widget_base_dimensions[0];this.min_widget_height=this.options.widget_margins[1]*2+this.options.widget_base_dimensions[1];this.init()}Gridster.generated_stylesheets=[];var fn=Gridster.prototype;fn.init=function(){this.generate_grid_and_stylesheet();this.get_widgets_from_DOM();this.set_dom_grid_height();this.$wrapper.addClass("ready");this.draggable();$(window).bind("resize",throttle($.proxy(this.recalculate_faux_grid,this),200))};fn.disable=function(){this.$wrapper.find(".player-revert").removeClass("player-revert");this.drag_api.disable();return this};fn.enable=function(){this.drag_api.enable();return this};fn.add_widget=function(html,size_x,size_y,col,row){var pos;size_x||(size_x=1);size_y||(size_y=1);if(!col&!row){pos=this.next_position(size_x,size_y)}else{pos={col:col,row:row};this.empty_cells(col,row,size_x,size_y)}var $w=$(html).attr({"data-col":pos.col,"data-row":pos.row,"data-sizex":size_x,"data-sizey":size_y}).addClass("gs_w").appendTo(this.$el).hide();this.$widgets=this.$widgets.add($w);this.register_widget($w);this.add_faux_rows(pos.size_y);this.set_dom_grid_height();return $w.fadeIn()};fn.resize_widget=function($widget,size_x,size_y){var wgd=$widget.coords().grid;size_x||(size_x=wgd.size_x);size_y||(size_y=wgd.size_y);if(size_x>this.cols){size_x=this.cols}var old_cells_occupied=this.get_cells_occupied(wgd);var old_size_x=wgd.size_x;var old_size_y=wgd.size_y;var old_col=wgd.col;var new_col=old_col;var wider=size_x>old_size_x;var taller=size_y>old_size_y;if(old_col+size_x-1>this.cols){var diff=old_col+(size_x-1)-this.cols;var c=old_col-diff;new_col=Math.max(1,c)}var new_grid_data={col:new_col,row:wgd.row,size_x:size_x,size_y:size_y};var new_cells_occupied=this.get_cells_occupied(new_grid_data);var empty_cols=[];$.each(old_cells_occupied.cols,function(i,col){if($.inArray(col,new_cells_occupied.cols)===-1){empty_cols.push(col)}});var occupied_cols=[];$.each(new_cells_occupied.cols,function(i,col){if($.inArray(col,old_cells_occupied.cols)===-1){occupied_cols.push(col)}});var empty_rows=[];$.each(old_cells_occupied.rows,function(i,row){if($.inArray(row,new_cells_occupied.rows)===-1){empty_rows.push(row)}});var occupied_rows=[];$.each(new_cells_occupied.rows,function(i,row){if($.inArray(row,old_cells_occupied.rows)===-1){occupied_rows.push(row)}});this.remove_from_gridmap(wgd);if(occupied_cols.length){var cols_to_empty=[new_col,wgd.row,size_x,Math.min(old_size_y,size_y),$widget];this.empty_cells.apply(this,cols_to_empty)}if(occupied_rows.length){var rows_to_empty=[new_col,wgd.row,size_x,size_y,$widget];this.empty_cells.apply(this,rows_to_empty)}wgd.col=new_col;wgd.size_x=size_x;wgd.size_y=size_y;this.add_to_gridmap(new_grid_data,$widget);$widget.data("coords").update({width:size_x*this.options.widget_base_dimensions[0]+(size_x-1)*this.options.widget_margins[0]*2,height:size_y*this.options.widget_base_dimensions[1]+(size_y-1)*this.options.widget_margins[1]*2});if(size_y>old_size_y){this.add_faux_rows(size_y-old_size_y)}if(size_x>old_size_x){this.add_faux_cols(size_x-old_size_x)}$widget.attr({"data-col":new_col,"data-sizex":size_x,"data-sizey":size_y});if(empty_cols.length){var cols_to_remove_holes=[empty_cols[0],wgd.row,empty_cols.length,Math.min(old_size_y,size_y),$widget];this.remove_empty_cells.apply(this,cols_to_remove_holes)}if(empty_rows.length){var rows_to_remove_holes=[new_col,wgd.row,size_x,size_y,$widget];this.remove_empty_cells.apply(this,rows_to_remove_holes)}return $widget};fn.empty_cells=function(col,row,size_x,size_y,$exclude){var $nexts=this.widgets_below({col:col,row:row-size_y,size_x:size_x,size_y:size_y});$nexts.not($exclude).each($.proxy(function(i,w){var wgd=$(w).coords().grid;if(!(wgd.row<=row+size_y-1)){return}var diff=row+size_y-wgd.row;this.move_widget_down($(w),diff)},this));this.set_dom_grid_height();return this};fn.remove_empty_cells=function(col,row,size_x,size_y,exclude){var $nexts=this.widgets_below({col:col,row:row,size_x:size_x,size_y:size_y});$nexts.not(exclude).each($.proxy(function(i,widget){this.move_widget_up($(widget),size_y)},this));this.set_dom_grid_height();return this};fn.next_position=function(size_x,size_y){size_x||(size_x=1);size_y||(size_y=1);var ga=this.gridmap;var cols_l=ga.length;var valid_pos=[];var rows_l;for(var c=1;c",{"class":"preview-holder","data-row":this.$player.attr("data-row"),"data-col":this.$player.attr("data-col"),css:{width:coords.width,height:coords.height}}).appendTo(this.$el);if(this.options.draggable.start){this.options.draggable.start.call(this,event,ui)}};fn.on_drag=function(event,ui){if(this.$player===null){return false}var abs_offset={left:ui.position.left+this.baseX,top:ui.position.top+this.baseY};this.colliders_data=this.collision_api.get_closest_colliders(abs_offset);this.on_overlapped_column_change(this.on_start_overlapping_column,this.on_stop_overlapping_column);this.on_overlapped_row_change(this.on_start_overlapping_row,this.on_stop_overlapping_row);if(this.helper&&this.$player){this.$player.css({left:ui.position.left,top:ui.position.top})}if(this.options.draggable.drag){this.options.draggable.drag.call(this,event,ui)}};fn.on_stop_drag=function(event,ui){this.$helper.add(this.$player).add(this.$wrapper).removeClass("dragging");ui.position.left=ui.position.left+this.baseX;ui.position.top=ui.position.top+this.baseY;this.colliders_data=this.collision_api.get_closest_colliders(ui.position);this.on_overlapped_column_change(this.on_start_overlapping_column,this.on_stop_overlapping_column);this.on_overlapped_row_change(this.on_start_overlapping_row,this.on_stop_overlapping_row);this.$player.addClass("player-revert").removeClass("player").attr({"data-col":this.placeholder_grid_data.col,"data-row":this.placeholder_grid_data.row}).css({left:"",top:""});this.$changed=this.$changed.add(this.$player);this.cells_occupied_by_player=this.get_cells_occupied(this.placeholder_grid_data);this.set_cells_player_occupies(this.placeholder_grid_data.col,this.placeholder_grid_data.row);this.$player.coords().grid.row=this.placeholder_grid_data.row;this.$player.coords().grid.col=this.placeholder_grid_data.col;if(this.options.draggable.stop){this.options.draggable.stop.call(this,event,ui)}this.$preview_holder.remove();this.$player=null;this.$helper=null;this.placeholder_grid_data={};this.player_grid_data={};this.cells_occupied_by_placeholder={};this.cells_occupied_by_player={};this.set_dom_grid_height()};fn.on_overlapped_column_change=function(start_callback,stop_callback){if(!this.colliders_data.length){return}var cols=this.get_targeted_columns(this.colliders_data[0].el.data.col);var last_n_cols=this.last_cols.length;var n_cols=cols.length;var i;for(i=0;ib.row){return 1}return-1});return widgets};fn.sort_by_row_and_col_asc=function(widgets){widgets=widgets.sort(function(a,b){if(a.row>b.row||a.row===b.row&&a.col>b.col){return 1}return-1});return widgets};fn.sort_by_col_asc=function(widgets){widgets=widgets.sort(function(a,b){if(a.col>b.col){return 1}return-1});return widgets};fn.sort_by_row_desc=function(widgets){widgets=widgets.sort(function(a,b){if(a.row+a.size_y=0&&$.inArray(row,c.rows)>=0};fn.is_placeholder_in=function(col,row){var c=this.cells_occupied_by_placeholder||{};return this.is_placeholder_in_col(col)&&$.inArray(row,c.rows)>=0};fn.is_placeholder_in_col=function(col){var c=this.cells_occupied_by_placeholder||[];return $.inArray(col,c.cols)>=0};fn.is_empty=function(col,row){if(typeof this.gridmap[col]!=="undefined"&&typeof this.gridmap[col][row]!=="undefined"&&this.gridmap[col][row]===false){return true}return false};fn.is_occupied=function(col,row){if(!this.gridmap[col]){return false}if(this.gridmap[col][row]){return true}return false};fn.is_widget=function(col,row){var cell=this.gridmap[col];if(!cell){return false}cell=cell[row];if(cell){return cell}return false};fn.is_widget_under_player=function(col,row){if(this.is_widget(col,row)){return this.is_player_in(col,row)}return false};fn.get_widgets_under_player=function(cells){cells||(cells=this.cells_occupied_by_player||{cols:[],rows:[]});var $widgets=$([]);$.each(cells.cols,$.proxy(function(i,col){$.each(cells.rows,$.proxy(function(i,row){if(this.is_widget(col,row)){$widgets=$widgets.add(this.gridmap[col][row])}},this))},this));return $widgets};fn.set_placeholder=function(col,row){var phgd=$.extend({},this.placeholder_grid_data);var $nexts=this.widgets_below({col:phgd.col,row:phgd.row,size_y:phgd.size_y,size_x:phgd.size_x});var right_col=col+phgd.size_x-1;if(right_col>this.cols){col=col-(right_col-col)}var moved_down=this.placeholder_grid_data.row0){if(this.is_empty(tcol,r)||this.is_player(tcol,r)||this.is_widget(tcol,r)&&grid_col[r].is($widgets_under_player)){upper_rows[tcol].push(r);min_row=r0){if(this.is_widget(tcol,r)&&!this.is_player_in(tcol,r)){if(!grid_col[r].is(widget_grid_data.el)){break}}if(!this.is_player(tcol,r)&&!this.is_placeholder_in(tcol,r)&&!this.is_player_in(tcol,r)){upper_rows[tcol].push(r)}if(r=size_y?arr[result[0]]:false};fn.get_widgets_overlapped=function(){var $w;var $widgets=$([]);var used=[];var rows_from_bottom=this.cells_occupied_by_player.rows.slice(0);rows_from_bottom.reverse();$.each(this.cells_occupied_by_player.cols,$.proxy(function(i,col){$.each(rows_from_bottom,$.proxy(function(i,row){if(!this.gridmap[col]){return true}var $w=this.gridmap[col][row];if(this.is_occupied(col,row)&&!this.is_player($w)&&$.inArray($w,used)===-1){$widgets=$widgets.add($w);used.push($w)}},this))},this));return $widgets};fn.on_start_overlapping_column=function(col){this.set_player(col,false)};fn.on_start_overlapping_row=function(row){this.set_player(false,row)};fn.on_stop_overlapping_column=function(col){this.set_player(col,false);var self=this;this.for_each_widget_below(col,this.cells_occupied_by_player.rows[0],function(tcol,trow){self.move_widget_up(this,self.player_grid_data.size_y)})};fn.on_stop_overlapping_row=function(row){this.set_player(false,row);var self=this;var cols=this.cells_occupied_by_player.cols;for(var c=0,cl=cols.length;c0){this.move_widget_down($w,tmp_y)}},this));widget_grid_data.row=next_row;this.update_widget_position(widget_grid_data,$widget);$widget.attr("data-row",widget_grid_data.row);this.$changed=this.$changed.add($widget);moved.push($widget)}};fn.can_go_up_to_row=function(widget_grid_data,col,row){var ga=this.gridmap;var result=true;var urc=[];var actual_row=widget_grid_data.row;var r;this.for_each_column_occupied(widget_grid_data,function(tcol){var grid_col=ga[tcol];urc[tcol]=[];r=actual_row;while(r--){if(this.is_empty(tcol,r)&&!this.is_placeholder_in(tcol,r)){urc[tcol].push(r)}else{break}}if(!urc[tcol].length){result=false;return true}});if(!result){return false}r=row;for(r=1;r0?y_units:0};fn.widgets_below=function($el){var el_grid_data=$.isPlainObject($el)?$el:$el.coords().grid;var self=this;var ga=this.gridmap;var next_row=el_grid_data.row+el_grid_data.size_y-1;var $nexts=$([]);this.for_each_column_occupied(el_grid_data,function(col){self.for_each_widget_below(col,next_row,function(tcol,trow){if(!self.is_player(this)&&$.inArray(this,$nexts)===-1){$nexts=$nexts.add(this);return true}})});return this.sort_by_row_asc($nexts)};fn.set_cells_player_occupies=function(col,row){this.remove_from_gridmap(this.placeholder_grid_data);this.placeholder_grid_data.col=col;this.placeholder_grid_data.row=row;this.add_to_gridmap(this.placeholder_grid_data,this.$player);return this};fn.empty_cells_player_occupies=function(){this.remove_from_gridmap(this.placeholder_grid_data);return this};fn.can_go_up=function($el){var el_grid_data=$el.coords().grid;var initial_row=el_grid_data.row;var prev_row=initial_row-1;var ga=this.gridmap;var upper_rows_by_column=[];var result=true;if(initial_row===1){return false}this.for_each_column_occupied(el_grid_data,function(col){var $w=this.is_widget(col,prev_row);if(this.is_occupied(col,prev_row)||this.is_player(col,prev_row)||this.is_placeholder_in(col,prev_row)||this.is_player_in(col,prev_row)){result=false;return true}});return result};fn.can_move_to=function(widget_grid_data,col,row,max_row){var ga=this.gridmap;var $w=widget_grid_data.el;var future_wd={size_y:widget_grid_data.size_y,size_x:widget_grid_data.size_x,col:col,row:row};var result=true;var right_col=col+widget_grid_data.size_x-1;if(right_col>this.cols){return false}if(max_row&&max_row0&&this.is_widget(col,trow)&&$.inArray(ga[col][trow],matched)===-1){cr=callback.call(ga[col][trow],col,trow);matched.push(ga[col][trow]);if(cr){break}}}},"for_each/below":function(){for(trow=row+1,max=ga[col].length;trow=1;c--){for(r=gm[c].length-1;r>=1;r--){if(this.is_widget(c,r)){rows.push(r);row_in_col[r]=c;break}}}var highest_row=Math.max.apply(Math,rows);this.highest_occupied_cell={col:row_in_col[highest_row],row:highest_row};return this.highest_occupied_cell};fn.get_widgets_from=function(col,row){var ga=this.gridmap;var $widgets=$();if(col){$widgets=$widgets.add(this.$widgets.filter(function(){var tcol=$(this).attr("data-col");return tcol===col||tcol>col}))}if(row){$widgets=$widgets.add(this.$widgets.filter(function(){var trow=$(this).attr("data-row");return trow===row||trow>row}))}return $widgets};fn.set_dom_grid_height=function(){var r=this.get_highest_occupied_cell().row;this.$el.css("height",r*this.min_widget_height);return this};fn.generate_stylesheet=function(opts){var styles="";var max_size_x=this.options.max_size_x;var max_rows=0;var max_cols=0;var i;var rules;opts||(opts={});opts.cols||(opts.cols=this.cols);opts.rows||(opts.rows=this.rows);opts.namespace||(opts.namespace=this.options.namespace);opts.widget_base_dimensions||(opts.widget_base_dimensions=this.options.widget_base_dimensions);opts.widget_margins||(opts.widget_margins=this.options.widget_margins);opts.min_widget_width=opts.widget_margins[0]*2+opts.widget_base_dimensions[0];opts.min_widget_height=opts.widget_margins[1]*2+opts.widget_base_dimensions[1];var serialized_opts=$.param(opts);if($.inArray(serialized_opts,Gridster.generated_stylesheets)>=0){return false}Gridster.generated_stylesheets.push(serialized_opts);for(i=opts.cols;i>=0;i--){styles+=opts.namespace+' [data-col="'+(i+1)+'"] { left:'+(i*opts.widget_base_dimensions[0]+i*opts.widget_margins[0]+(i+1)*opts.widget_margins[0])+"px;} "}for(i=opts.rows;i>=0;i--){styles+=opts.namespace+' [data-row="'+(i+1)+'"] { top:'+(i*opts.widget_base_dimensions[1]+i*opts.widget_margins[1]+(i+1)*opts.widget_margins[1])+"px;} "}for(var y=1;y<=opts.rows;y++){styles+=opts.namespace+' [data-sizey="'+y+'"] { height:'+(y*opts.widget_base_dimensions[1]+(y-1)*(opts.widget_margins[1]*2))+"px;}"}for(var x=1;x<=max_size_x;x++){styles+=opts.namespace+' [data-sizex="'+x+'"] { width:'+(x*opts.widget_base_dimensions[0]+(x-1)*(opts.widget_margins[0]*2))+"px;}"}return this.add_style_tag(styles)};fn.add_style_tag=function(css){var d=document;var tag=d.createElement("style");d.getElementsByTagName("head")[0].appendChild(tag);tag.setAttribute("type","text/css");if(tag.styleSheet){tag.styleSheet.cssText=css}else{tag.appendChild(document.createTextNode(css))}return this};fn.generate_faux_grid=function(rows,cols){this.faux_grid=[];this.gridmap=[];var col;var row;for(col=cols;col>0;col--){this.gridmap[col]=[];for(row=rows;row>0;row--){this.add_faux_cell(row,col)}}return this};fn.add_faux_cell=function(row,col){var coords=$({left:this.baseX+(col-1)*this.min_widget_width,top:this.baseY+(row-1)*this.min_widget_height,width:this.min_widget_width,height:this.min_widget_height,col:col,row:row,original_col:col,original_row:row}).coords();if(!$.isArray(this.gridmap[col])){this.gridmap[col]=[]}this.gridmap[col][row]=false;this.faux_grid.push(coords);return this};fn.add_faux_rows=function(rows){var actual_rows=this.rows;var max_rows=actual_rows+(rows||1);for(var r=max_rows;r>actual_rows;r--){for(var c=this.cols;c>=1;c--){this.add_faux_cell(r,c)}}this.rows=max_rows;if(this.options.autogenerate_stylesheet){this.generate_stylesheet()}return this};fn.add_faux_cols=function(cols){var actual_cols=this.cols;var max_cols=actual_cols+(cols||1);for(var c=actual_cols;c=1;r--){this.add_faux_cell(r,c)}}this.cols=max_cols;if(this.options.autogenerate_stylesheet){this.generate_stylesheet()}return this};fn.recalculate_faux_grid=function(){var aw=this.$wrapper.width();this.baseX=($(window).width()-aw)/2;this.baseY=this.$wrapper.offset().top;$.each(this.faux_grid,$.proxy(function(i,coords){this.faux_grid[i]=coords.update({left:this.baseX+(coords.data.col-1)*this.min_widget_width,top:this.baseY+(coords.data.row-1)*this.min_widget_height})},this));return this};fn.get_widgets_from_DOM=function(){this.$widgets.each($.proxy(function(i,widget){this.register_widget($(widget))},this));return this};fn.generate_grid_and_stylesheet=function(){var aw=this.$wrapper.width();var ah=this.$wrapper.height();var cols=Math.floor(aw/this.min_widget_width)+this.options.extra_cols;var actual_cols=this.$widgets.map(function(){return $(this).attr("data-col")});actual_cols=Array.prototype.slice.call(actual_cols,0);actual_cols.length||(actual_cols=[0]);var min_cols=Math.max.apply(Math,actual_cols);var max_rows=this.options.extra_rows;this.$widgets.each(function(i,w){max_rows+=+$(w).attr("data-sizey")});this.cols=Math.max(min_cols,cols,this.options.min_cols);this.rows=Math.max(max_rows,this.options.min_rows);this.baseX=($(window).width()-aw)/2;this.baseY=this.$wrapper.offset().top;if(this.options.autogenerate_stylesheet){this.generate_stylesheet()}return this.generate_faux_grid(this.rows,this.cols)};$.fn.gridster=function(options){return this.each(function(){if(!$(this).data("gridster")){$(this).data("gridster",new Gridster(this,options))}})};$.Gridster=fn})(jQuery,window,document);vizjslib_git_revision="8230951f89eeb3b0ae24c0f22dce5596188754b7";vizjslib_git_tag="15.06-29-g8230951";(function(){var V=envision,global_data={};function getDefaultsMarkers(option,markers,dates){var mark="";if(!markers||markers.length===0)return mark;for(var i=0;i-1){metrics=DS.getMetrics();getDefaultsMetrics(DS,viz,metrics,default_config)}})}config=default_config;viz.summary=getEnvisionDefaultsGraph("report-summary",config);viz.summary.config.xaxis={noTickets:10,showLabels:true};viz.summary.config.handles={show:true};viz.summary.config.selection={mode:"x"};viz.summary.config.mouse={};viz.connection={name:"report-connection",adapterConstructor:V.components.QuadraticDrawing};return viz}function getOrderedDataSources(ds_list,main_metric){var ordered=[];var main_DS=null;$.each(ds_list,function(i,DS){if(DS.getMetrics()[main_metric]){main_DS=DS;return false}});ordered.push(main_DS);$.each(ds_list,function(i,DS){if(DS===main_DS)return;ordered.push(DS)});return ordered}function Envision_Report(options,data_sources){var main_metric=options.data.main_metric;global_data=options.data;if(!data_sources)data_sources=Report.getDataSources();data_sources=getOrderedDataSources(data_sources,main_metric);var ds=[];for(var i=0;i-1)data_load_companies();if($.inArray("repositories",active_reports)>-1)data_load_repos();if($.inArray("countries",active_reports)>-1)data_load_countries();if($.inArray("domains",active_reports)>-1)data_load_domains();if($.inArray("projects",active_reports)>-1)data_load_projects();if($.inArray("people",active_reports)>-1){data_load_people();data_load_people_identities()}}else{data_load_companies();data_load_repos();data_load_countries();data_load_domains();data_load_projects();data_load_people();data_load_people_identities()}};Loader.get_file_data_div=function(file,cb,div){$.when($.getJSON(file)).done(function(history){cb(div,file,history)}).fail(function(){cb(file,null)})};function get_data_from_all(file,fn_data_set,self){all_data_found=false;if(all_data){file_no_path=file.replace(Report.getDataDir()+"/","");data=all_data[file_no_path];if(data){fn_data_set(data,self);end_data_load();all_data_found=true}else{if(window.console){Report.log("Can't find in "+Report.all_json_file+" "+file)}}}return all_data_found}function data_load_file(file,fn_data_set,self){if(get_data_from_all(file,fn_data_set,self))return;$.when($.getJSON(file)).done(function(history){fn_data_set(history,self);end_data_load()}).fail(function(){fn_data_set([],self);end_data_load()})}function data_load_companies(){var ds_not_supported=["irc","mediawiki"];var data_sources=Report.getDataSources();$.each(data_sources,function(i,DS){if($.inArray(DS.getName(),ds_not_supported)>-1)DS.setCompaniesData([]);else data_load_file(DS.getCompaniesDataFile(),DS.setCompaniesData,DS)})}function data_load_repos(){var ds_not_supported=["mediawiki"];var data_sources=Report.getDataSources();$.each(data_sources,function(i,DS){if($.inArray(DS.getName(),ds_not_supported)>-1){DS.setReposData([])}else{data_load_file(DS.getReposDataFile(),DS.setReposData,DS)}});data_load_file(Report.getReposMapFile(),Report.setReposMap)}function data_load_countries(){var ds_not_supported=["irc","mediawiki"];var data_sources=Report.getDataSources();$.each(data_sources,function(i,DS){if($.inArray(DS.getName(),ds_not_supported)>-1)DS.setCountriesData([]);else data_load_file(DS.getCountriesDataFile(),DS.setCountriesData,DS)})}function data_load_domains(){var ds_not_supported=["irc","mediawiki"];var data_sources=Report.getDataSources();$.each(data_sources,function(i,DS){if($.inArray(DS.getName(),ds_not_supported)>-1)DS.setDomainsData([]);else data_load_file(DS.getDomainsDataFile(),DS.setDomainsData,DS)})}function data_load_projects(){var ds_not_supported=["irc","mediawiki"];var data_sources=Report.getDataSources();$.each(data_sources,function(i,DS){if($.inArray(DS.getName(),ds_not_supported)>-1)DS.setProjectsData([]);else data_load_file(DS.getProjectsDataFile(),DS.setProjectsData,DS)})}function data_load_time_to_fix(){var data_sources=Report.getDataSources();$.each(data_sources,function(i,DS){if(DS.getName()==="its")data_load_file(DS.getTimeToFixDataFile(),DS.setTimeToFixData,DS)})}function data_load_markov_table(){var data_sources=Report.getDataSources();$.each(data_sources,function(i,DS){if(DS.getName()==="its")data_load_file(DS.getMarkovTableDataFile(),DS.setMarkovTableData,DS)})}function data_load_time_to_attention(){var data_sources=Report.getDataSources();$.each(data_sources,function(i,DS){if(DS.getName()==="mls")data_load_file(DS.getTimeToAttentionDataFile(),DS.setTimeToAttentionData,DS)})}function data_load_demographics(){var data_sources=Report.getDataSources();$.each(data_sources,function(i,DS){data_load_file(DS.getDemographicsAgingFile(),DS.setDemographicsAgingData,DS);data_load_file(DS.getDemographicsBirthFile(),DS.setDemographicsBirthData,DS)})}function data_load_tops(metric){var data_sources=Report.getDataSources();$.each(data_sources,function(i,DS){var file_all=DS.getTopDataFile();if(get_data_from_all(file_all,DS.setGlobalTopData,DS))return;$.when($.getJSON(file_all)).done(function(history){DS.setGlobalTopData(history);end_data_load()}).fail(function(){DS.setGlobalTopData([],DS);end_data_load()})})}Loader.check_filters_page=function(page){var check=true;var filters=["repos","companies","countries"];$.each(filters,function(index,filter){if(!Loader.check_filter_page(page,filter)){check=false;return false}});return check};Loader.check_filter_page=function(page,filter){var check=true;if(page===undefined)page=1;var start=Report.getPageSize()*(page-1);var end=start+Report.getPageSize();$.each(Report.getDataSources(),function(index,DS){var total=0;if(filter==="repos")total=DS.getReposData().length;if(filter==="companies")total=DS.getCompaniesData().length;if(filter==="countries")total=DS.getCountriesData().length;if(filter==="domains")total=DS.getDomainsData().length;if(filter==="projects")total=DS.getProjectsData().length;if(end>total)end=total;for(var i=start;i-1){ds=DS;return false}}if(filter=="companies"){if($.inArray(item,DS.getCompaniesData())>-1){ds=DS;return false}}if(filter=="countries"){if($.inArray(item,DS.getCountriesData())>-1){ds=DS;return false}}if(filter=="domains"){if($.inArray(item,DS.getDomainsData())>-1){ds=DS;return false}}if(filter=="projects"){if($.inArray(item,DS.getProjectsData())>-1){ds=DS;return false}}});return ds}Loader.filterTopCheck=function(item,filter){var check=true;if(filter==="repos"){if(Loader.check_item(item,filter,"top")===false){ds=getItemDS(item,filter);if(ds===null){Report.log("Can't find data source for "+item);return true}if($.inArray(ds.getName(),ds_supporting_top_repos)>=0){Loader.data_load_item_top(item,ds,null,Convert.convertFilterTop,filter,"top")}return false}}return check};Loader.FilterItemCheck=function(item,filter){var check=true,ds;var map=Report.getReposMap();if(filter==="repos"){if(Loader.check_item(item,filter)===false){ds=getItemDS(item,filter);if(ds===null){Report.log("Can't find data source for "+item);return true}Loader.data_load_item(item,ds,null,Convert.convertFilterStudyItem,filter,null);if($.inArray(ds.getName(),ds_supporting_top_repos)>=0){Loader.data_load_item_top(item,ds,null,Convert.convertFilterStudyItem,filter)}return false}if(map!==undefined&&map.length!==0){var items_map=[];$.each(Report.getDataSources(),function(index,DS){var itmap=Convert.getRealItem(DS,filter,item);if(itmap!==undefined&&itmap!==null)items_map.push(itmap)});if(Loader.check_items(items_map,filter)===false){for(var i=0;i-1)Loader.data_load_item_top(item,DS,null,Convert.convertFilterStudyItem,filter)}}})}return check};Loader.check_item=function(item,filter,optional_filter){var check=false;$.each(Report.getDataSources(),function(index,DS){if(filter==="repos"){if(optional_filter==="top"){if($.inArray(DS.getName(),ds_supporting_top_repos)>=0&&$.inArray(item,DS.getReposData())>=0&&DS.getRepositoriesTopData()[item]!==undefined){check=true;return false}}else{if(DS.getReposGlobalData()[item]!==undefined&&DS.getReposMetricsData()[item]!==undefined){check=true;return false}}}else if(filter==="companies"){var companies=DS.getCompaniesData();if(companies.length===0)check=true;else if($.inArray(item,companies)===-1)check=true;else if(DS.getCompaniesGlobalData()[item]===undefined||DS.getCompaniesMetricsData()[item]===undefined){check=false;return false}else if($.inArray(DS.getName(),ds_supporting_top_company)>-1&&DS.getCompaniesTopData()[item]===undefined){check=false;return false}else check=true}else if(filter==="countries"){var countries=DS.getCountriesData();if(countries.length===0)check=true;else if($.inArray(item,countries)===-1)check=true;else if(DS.getCountriesGlobalData()[item]===undefined||DS.getCountriesMetricsData()[item]===undefined){check=false;return false}else check=true}else if(filter==="domains"){var domains=DS.getDomainsData();if(domains.length===0)check=true;else if($.inArray(item,domains)===-1)check=true;else if(DS.getDomainsGlobalData()[item]===undefined||DS.getDomainsMetricsData()[item]===undefined){check=false;return false}else check=true}else if(filter==="projects"){var projects=DS.getProjectsData();if(projects.length===0)check=true;else if($.inArray(item,projects)===-1)check=true;else if(DS.getProjectsGlobalData()[item]===undefined||DS.getProjectsMetricsData()[item]===undefined){check=false;return false}else check=true}});return check};Loader.check_items=function(items,filter){var check=true;$.each(items,function(id,item){if(Loader.check_item(item,filter)===false){check=false;return false}});return check};Loader.data_load_items_page=function(DS,page,cb,filter){if(page===undefined)page=1;if(filter==="repos")if(DS.getReposData()===null)return false;if(filter==="companies")if(DS.getCompaniesData()===null)return false;if(filter==="countries")if(DS.getCountriesData()===null)return false;if(filter==="domains")if(DS.getDomainsData()===null)return false;if(filter==="projects")if(DS.getProjectsData()===null)return false;var total=0;if(filter==="repos")total=DS.getReposData().length;if(filter==="companies")total=DS.getCompaniesData().length;if(filter==="countries")total=DS.getCountriesData().length;if(filter==="domains")total=DS.getDomainsData().length;if(filter==="projects")total=DS.getProjectsData().length;if(total===0)return true;var start=Report.getPageSize()*(page-1);var end=start+Report.getPageSize();if(end>total)end=total;for(var i=start;i-1){DS.addRepoMetricsData(item,[],DS);DS.addRepoGlobalData(item,[],DS);return}}else if(filter==="companies"){if($.inArray(DS.getName(),ds_not_supported_companies)>-1){DS.addCompanyMetricsData(item,[],DS);DS.addCompanyGlobalData(item,[],DS);return}}else if(filter==="countries"){if($.inArray(DS.getName(),ds_not_supported_countries)>-1){DS.addCountryMetricsData(item,[],DS);DS.addCountryGlobalData(item,[],DS);return}}else if(filter==="domains"){if($.inArray(DS.getName(),ds_not_supported_domains)>-1){DS.addDomainMetricsData(item,[],DS);DS.addDomainGlobalData(item,[],DS);return}}else if(filter==="projects"){if($.inArray(DS.getName(),ds_not_supported_projects)>-1){DS.addDomainMetricsData(item,[],DS);DS.addDomainGlobalData(item,[],DS);return}}else return;var item_uri=encodeURIComponent(item);item_uri=item_uri.replace("%2F","_");var file=DS.getDataDir()+"/"+item_uri+"-";file+=DS.getName()+"-"+getFilterSuffix(filter);var file_evo=file+"-evolutionary.json";var file_static=file+"-static.json";function addData(item,evo,global,DS){if(filter==="repos"){DS.addRepoMetricsData(item,evo,DS);DS.addRepoGlobalData(item,global,DS)}else if(filter==="companies"){DS.addCompanyMetricsData(item,evo,DS);DS.addCompanyGlobalData(item,global,DS)}else if(filter==="countries"){DS.addCountryMetricsData(item,evo,DS);DS.addCountryGlobalData(item,global,DS)}else if(filter==="domains"){DS.addDomainMetricsData(item,evo,DS);DS.addDomainGlobalData(item,global,DS)}else if(filter==="projects"){DS.addProjectMetricsData(item,evo,DS);DS.addProjectGlobalData(item,global,DS)}}function check_data(){if(page!==null){if(Loader.check_filter_page(page,filter)){if(cb.called_page===undefined){cb.called_page={};cb.called_page[filter]=true;cb(filter)}else if(!cb.called_page[filter]){cb(filter);cb.called_page[filter]=true}}}else if(items_map!==null){if(Loader.check_items(items_map,filter)){if(cb.called_map===undefined){cb.called_map={};cb.called_map[filter]=true;cb(filter)}else if(!cb.called_map[filter]){cb(filter);cb.called_map[filter]=true}}}else{if(Loader.check_item(item,filter)){if(cb.called_item===undefined){cb.called_item={};cb.called_item[filter]=true;cb(filter,item)}else if(!cb.called_item[filter]){cb(filter,item);cb.called_item[filter]=true}}}}if(all_data){file_evo_no_path=decodeURIComponent(file_evo.replace(Report.getDataDir()+"/",""));file_static_no_path=decodeURIComponent(file_static.replace(Report.getDataDir()+"/",""));data_evo=all_data[file_evo_no_path];data_static=all_data[file_static_no_path];if(data_evo&&data_static){addData(item,data_evo,data_static,DS);check_data();return}}$.when($.getJSON(file_evo),$.getJSON(file_static)).done(function(evo,global){addData(item,evo[0],global[0],DS)}).always(function(){check_data()})};function data_load_metrics(){var data_sources=Report.getDataSources();$.each(data_sources,function(i,DS){data_load_file(DS.getDataFile(),DS.setData,DS);data_load_file(DS.getGlobalDataFile(),DS.setGlobalData,DS);if(DS instanceof MLS){data_load_file(DS.getListsFile(),DS.setListsData,DS)}})}function data_load_metrics_definition(){data_load_file(Report.getDataDir()+"/../metrics.json",Report.setMetricsDefinition)}function data_load_people(){var data_sources=Report.getDataSources();$.each(data_sources,function(i,DS){data_load_file(DS.getPeopleDataFile(),DS.setPeopleData,DS)})}function data_load_people_identities(){data_load_file(Report.getDataDir()+"/people.json",Report.setPeopleIdentities)}function check_companies_loaded(DS){if(DS.getCompaniesData()===null)return false;return true}function check_repos_loaded(DS){if(DS.getReposData()===null)return false;return true}function check_countries_loaded(DS){if(DS.getCountriesData()===null)return false;return true}function check_domains_loaded(DS){if(DS.getDomainsData()===null)return false;return true}function check_projects_loaded(DS){if(DS.getProjectsData()===null)return false;return true}function check_meta_projects_loaded(){var projects_loaded=0;var projects_data=Report.getProjectsData();var projects_dirs=Report.getProjectsDirs();for(var key in projects_data){projects_loaded++}if(projects_loaded-1)if(!check_companies_loaded(DS)){check=false;return false}if($.inArray("repositories",active_reports)>-1)if(!check_repos_loaded(DS)){check=false;return false}if($.inArray("countries",active_reports)>-1)if(!check_countries_loaded(DS)){check=false;return false}if($.inArray("domains",active_reports)>-1)if(!check_domains_loaded(DS)){check=false;return false}if($.inArray("projects",active_reports)>-1)if(!check_projects_loaded(DS)){check=false;return false}if(DS instanceof MLS){if(DS.getListsData()===null){check=false;return false}}});return check};function end_data_load(){if(check_data_loaded_global()){for(var i=0;i-1){clean=email.split("@")[0]}return clean};DataProcess.selectPersonName=function(person){var name="",cname,ctype,i;if(person.identity){for(i=0;iname.length)name=cname}}}else if(person.name){if(person.name.constructor!==Array){person.name=[person.name]}for(i=0;iname.length){name=cname}}}return name};DataProcess.selectPersonEmail=function(person){var email="",cemail,ctype;if(person.identity===undefined)return;for(var i=0;i=0;i--){if(history[metric][i]===0)new_offset++;else{if(offset_end===-1)offset_end=new_offset;if(new_offset=total-offset_end)continue;new_history[key].push(history[key][i])}}return new_history};DataProcess.filterDates=function(start_id,end_id,history){var history_dates={};$.each(history,function(name,data){history_dates[name]=[];$.each(data,function(i,value){var id=history.unixtime[i];if(id>start_id)if(!end_id||end_id&&id<=end_id)history_dates[name].push(value)})});return history_dates};DataProcess.filterYear=function(year,history){year=parseInt(year,null);var min_id=new Date(year.toString()).getTime();var max_id=new Date((year+1).toString()).getTime();var history_year=filterDates(min_id,max_id,history);return history_year};DataProcess.fillDates=function(dates_orig,more_dates){if(dates_orig[0].length===0)return more_dates;var new_dates=[[],[]];var i=0;if(dates_orig[0][0]>more_dates[0][0]){for(i=0;i-1){var metric_agg=[];metric_agg[0]=data[metric][0];for(var i=1;i1){params=document.URL.split("?")[1]}return params}function filenameInURL(){aux=document.URL.split("?")[0].split("/");res=aux[aux.length-1];return res}function createLink(target){url=target;if(paramsInURL().length>0)url+="?"+paramsInURL();return url}function createReleaseLink(target){url=target;if(isReleasePage()){if(url.indexOf("?")>=0){url+="&release="+$.urlParam("release")}else{url+="?release="+$.urlParam("release")}}return url}function getParameter(param){if($.urlParam(param)===null)return false;return $.urlParam(param)}})();String.prototype.supplant=function(o){return this.replace(/{([^{}]*)}/g,function(a,b){var r=o[b];return typeof r==="string"||typeof r==="number"?r:a})};var HTMLComposer={};(function(){HTMLComposer.personDSBlock=personDSBlock;HTMLComposer.filterDSBlock=filterDSBlock;HTMLComposer.CompanyDSBlock=CompanyDSBlock;HTMLComposer.DSBlock=DSBlock;HTMLComposer.DSBlockProject=DSBlockProject;HTMLComposer.repositorySummaryTable=repositorySummaryTable;HTMLComposer.personSummaryTable=personSummaryTable;HTMLComposer.personName=personName;HTMLComposer.itemName=itemName;HTMLComposer.releaseSelector=releaseSelector;HTMLComposer.sideBarLinks=sideBarLinks;HTMLComposer.overallSummaryBlock=overallSummaryBlock;HTMLComposer.smartLinks=smartLinks;HTMLComposer.TopByPeriod=TopByPeriod;HTMLComposer.companyFilters=companyFilters;function personDSBlock(ds_name,metric_name,ds_realname){var html='
        ';html+='
        ';html+='
        ';html+='
        ';if(ds_realname===undefined){html+="

        "+title4DS(ds_name)+"

        "}else{html+="

        "+title4DS(ds_realname)+"

        "}html+="
        ";html+='
        ';html+='
        ';html+="
        ";html+='
        ';html+='
        '}if(ds_realname){html+='
        '}else{html+='
        '}if(filter_name!=="companies"){html+="
        ";html+='
        ';html+='
        '}else{html+="
        ";html+='
        '}$.each(metric_names,function(id,metric){html+='


        ';html+='
        ';html+='
        ';html+='
        ';html+="
        "});html+="
        ";if(filter_name!=="companies"){html+="
        "}return html}function CompanyHasTop(company_name,metric){if(DS.getCompaniesTopData()[company_name]!==undefined){return DS.getCompaniesTopData()[company_name][metric+"."]!==undefined}else{return false}}function CompanyDSBlock(company_name,ds_name,filter_name,metric_names,top_metric,ds_realname){var html='
        ';html+='
        ';html+='
        ';html+='
        ';if(CompanyHasTop(company_name,top_metric)){html+='
        ';html+=filterDSBlock(ds_name,filter_name,metric_names,ds_realname);html+="
        ";html+='
        ';html+='
        "}html+='
        ';html+='
        ';html+="
        ";html+="
        ";html+="
        ";return html}function repositorySummaryTable(ds,global_data,id_label,ds_realname){var html="",ds_title;if(ds_realname){ds_title=title4DS(ds_realname)}else{ds_title=title4DS(ds.getName())}html+='";var html_irow="";$.each(global_data,function(id,value){if(ds.getMetrics()[id]){html+=html_irow+ds.getMetrics()[id].name;if(id==="first_date"||id==="last_date"){html+='

        '+ds_title+"

        ";var html_erow="
        '+value+html_erow}else{html+=''+Report.formatValue(value)+html_erow}}else if(id_label[id]){html+=html_irow+id_label[id];if(id==="first_date"||id==="last_date"){html+=''+value+html_erow}else{html+=''+Report.formatValue(value)+html_erow}}});html+="
        ";return html}function personSummaryTable(ds_name,history){var html="";html+="";html+="
        ";html+="First contribution:
        ";html+="  "+history.first_date;html+="
        ";html+="Last contribution:
        ";html+="  "+history.last_date;html+="
        ";if(ds_name=="scm")html+="Commits:
          "+history.scm_commits;else if(ds_name=="its")html+="Closed:
          "+history.its_closed;else if(ds_name=="mls")html+="Sent:
          "+history.mls_sent;else if(ds_name=="irc")html+="Sent:
          "+history.irc_sent;else if(ds_name=="scr"){if(history.scr_closed!==undefined){html+="Closed:
          "+history.scr_closed}if(history.scr_submissions!==undefined){html+="Submissions:
          "+history.scr_submissions}}html+="
        ";return html}function personName(name,email){var html='

          ';if(name.length>0)html+=name;else if(email.length>0){if(email.indexOf("@")>0)email=email.split("@")[0];html+=email}html+="

        ";return html}function itemName(text,filter_name){var html='

        ';if(filter_name==="companies")html+='   ';html+=text;html+="

        ";return html}function title4DS(ds_name){var title="";if(ds_name==="scm")title=' Source Code Management';else if(ds_name==="scr")title=' Source Code Review';else if(ds_name==="its")title=' Issue tracking system';else if(ds_name==="storyboard")title=' StoryBoard';else if(ds_name==="maniphest")title=' Maniphest';else if(ds_name==="mls")title=' Mailing Lists';else if(ds_name==="irc")title=' IRC Channels';else if(ds_name==="slack")title=' Slack';else if(ds_name==="mediawiki")title=' Wiki';else if(ds_name==="releases")title=' Forge Releases';else if(ds_name==="meetup")title=' Meetup';return title}function releaseSelector(current_release,release_names){function get_label(url,labels){label="";$.each(labels,function(pos,data){if(data[1]===url){label=data[0];return false}});return label}if(release_names.length===0)return"";var release_names_labels=null;if(release_names[0]instanceof Array){var old_relase_names=[];$.each(release_names,function(pos,data){old_relase_names.push(data[1])});release_names_labels=release_names;release_names=old_relase_names}unsupported=["irc.html","qaforums.html","project.html"];ah_label=" All history ";label=current_release;if(label===null)label=ah_label;else{label=decodeURIComponent(label);if(release_names_labels!==null){label=get_label(label,release_names_labels);label="  "+label+"  "}else{label="  "+label[0].toUpperCase()+label.substring(1)+" release  "}release_names.reverse().push(ah_label);release_names.reverse()}html='
        ';html+='";html+='";html+="
        ";return html}function DSBlock(ds_name,box_labels,box_metrics,ts_metrics){html="";html+="";html+='
        ';blabels=box_labels.split(",");bmetrics=box_metrics.split(",");html+=DSSummaryBox(ds_name,blabels,bmetrics,false,ds_realname);html+='
        ';tsm=ts_metrics.split(",");html+=DSTimeSerie(ds_name,tsm[0],false,ds_realname);html+="
        ";html+='
        ';html+=DSTimeSerie(ds_name,tsm[1],false,ds_realname);html+="
        ";html+="
        ";html+="";return html}function DSBlockProject(ds_name,box_labels,box_metrics,ts_metrics,pname){html="";html+="";html+='
        ';blabels=box_labels.split(",");bmetrics=box_metrics.split(",");html+=DSSummaryBox(ds_name,blabels,bmetrics,true);html+='
        ';tsm=ts_metrics.split(",");html+=DSTimeSerie(ds_name,tsm[0],true);html+="
        ";html+='
        ';html+=DSTimeSerie(ds_name,tsm[1],true);html+="
        ";html+="
        ";html+="";return html}function linkToPanel(ds_name,ds_realname){if(ds_realname===undefined){target_page=Utils.createLink(ds_name+".html")}else{target_page=Utils.createLink(ds_realname+".html")}return target_page}function summaryCell(width,label,ds_name,metric,project_flag,ds_realname){var target_page=linkToPanel(ds_name,ds_realname);if(project_flag){widget_name="ProjectData"}else{widget_name="GlobalData"}html="";html+='
        ';html+='
        ';html+='
        '+label+"
        ";html+="
        ";html+='
        ';html+='
        ';if(project_flag){html+=''}else{html+=' ';html+=""}html+="
        ";html+="
        ";html+="
        ";return html}function DSSummaryBox(ds_name,labels,metrics,project_flag,ds_realname){var target_page=linkToPanel(ds_name,ds_realname);if(project_flag){widget_name="ProjectData"}else{widget_name="GlobalData"}html="";html+="";html+='
        ';html+='
        ';html+='
        ';html+='
        '+labels[0]+"
        ";html+="
        ";html+='
        ';html+='
        ';if(ds_name==="releases")target_page=Utils.createLink("forge.html");if(project_flag){html+=''}else{html+=' ';html+=""}html+="
        ";html+="
        ";html+='
        ';if(labels.length===2&&metrics.length===2){html+=summaryCell("12",labels[1],ds_name,metrics[1],project_flag,ds_realname)}else if(labels.length===3&&metrics.length===3){html+=summaryCell("6",labels[1],ds_name,metrics[1],project_flag,ds_realname);html+=summaryCell("6",labels[2],ds_name,metrics[2],project_flag,ds_realname)}else if(labels.length===4&&metrics.length===4){html+=summaryCell("4",labels[1],ds_name,metrics[1],project_flag,ds_realname);html+=summaryCell("4",labels[2],ds_name,metrics[2],project_flag,ds_realname);html+=summaryCell("4",labels[3],ds_name,metrics[3],project_flag,ds_realname)}html+="
        ";html+="
        ";html+="
        ";html+="";return html}function DSTimeSerie(ds_name,metric,project_flag,ds_realname){if(project_flag){ts_widget_name="FilterItemMetricsEvol";trend_widget_name="FilterItemMicrodashText";filter_name="projects"}else{ts_widget_name="MetricsEvol";trend_widget_name="MicrodashText";filter_name=""}html="";html+='
        ';html+='
        '}else{if(ds_realname===undefined){html+=''}else{html+=''}html+=' ';html+=""}html+="
        ";return html}function sideBarLinks(icon_text,title,ds_name,elements){text={backlog:"Backlog",companies:"Companies","companies-summary":"Companies summary",organizations:"Organizations","organizations-summary":"Organizations summary",contributors:"Contributors",countries:"Countries",domains:"Domains",projects:"Projects",repos:"Repositories",tags:"Tags",states:"States",past_meetings:"Past Meetings",next_meetings:"Next Meetings"};html="";html+='";return html}function overallSummaryBlock(){html="";html+="";html+='
        ';html+='
        ';html+='
        ';html+='
        =0)link_exists=true;if(Utils.isReleasePage()&&link_exists){link_to=Utils.createReleaseLink(target_page);html=''+label+""}else if(link_exists){html=''+label+""}else{html=label}}catch(err){html=label}return html}function TopByPeriod(ds_name,metric,npeople,is_release){if(is_release){periods=[""]}else{periods=["last month","last year",""]}width=12/periods.length;html='
        ';$.each(periods,function(id,value){html+='
        ';html+='
        ';html+="
        "});html+="
        ";return html}var defaultFilterValues={scm:{metric_names:"commits+authors",order_by:"commits_365"},its:{metric_names:"closed+closers",order_by:"closed_365"}};function getFilterName(ds_name,metric_one,metric_two){filters={scm:{company:{country:"SCM by country"}},its:{company:{country:"ITS by country"}}};return filters[ds_name][metric_one][metric_two]}function companyFilters(company_name){var html="",filter_ds={};var mele=Report.getMenuElements();var menu_filters=mele.filter;if(menu_filters===undefined){return html}$.each(menu_filters,function(id,value){var ds_name=value.split(":")[0],combo=value.split(":")[1],mylen;if(Object.keys(filter_ds).indexOf(combo)<0){filter_ds[combo]=[]}mylen=filter_ds[combo].length;filter_ds[combo][mylen]=ds_name});$.each(Object.keys(filter_ds),function(id,value){switch(value){case"company+country":$.each(filter_ds[value],function(subid,ds_name){if(subid===0){html='
        '+'"+'
        "}})}});return html}})();var Convert={};(function(){Convert.convertMicrodashText=function(){var divs=$(".MicrodashText");if(divs.length>0){$.each(divs,function(id,div){$(this).empty();var metric=$(this).data("metric");var show_name=$(this).data("name");var ds=Report.getMetricDS(metric)[0];if(ds===undefined)return;var total=ds.getGlobalData()[metric];var html='';if(show_name){html+='"}$.each([365,30,7],function(index,period){html+='"});html+="
        ';html+="";html+=ds.basic_metrics[metric].name;html+="";html+="0){str_percentagevalue="+"+percentagevalue}else if(netvalue<0){str_percentagevalue="-"+Math.abs(percentagevalue)}html+="";html+='Last '+period+" days:";html+=" "+Report.formatValue(value)+"
        ";if(percentagevalue===0){html+='  '+str_percentagevalue+"% "}else if(netvalue>0){html+='  '+str_percentagevalue+"% "}else if(netvalue<0){html+='  '+str_percentagevalue+"% "}html+="
        ";html+="
        ";$(div).append(html)})}};Convert.convertMicrodash=function(){var divs=$(".Microdash");if(divs.length>0){$.each(divs,function(id,div){$(this).empty();var metric=$(this).data("metric");var text=$(this).data("text");var ds=Report.getMetricDS(metric)[0];var total=ds.getGlobalData()[metric];var html="
        ";html+='
        ';html+=''+Report.formatValue(total);html+=" "+ds.getMetrics()[metric].name;html+="
        ";html+='
        ';html+='
        ';$.each([365,30,7],function(index,period){var column=ds.getMetrics()[metric].column;var netvalue=ds.getGlobalData()["diff_net"+column+"_"+period];var percentagevalue=ds.getGlobalData()["percentage_"+column+"_"+period];var value=ds.getGlobalData()[metric+"_"+period];if(value===undefined)return;html+=""+period+" Days Change:"+Report.formatValue(value)+" ";if(netvalue===0){html+=""}else if(netvalue>0){html+='';html+="(+"+percentagevalue+"%) "}else if(netvalue<0){html+='';html+="(-"+Math.abs(percentagevalue)+"%) "}});html+="
        ";html+="
        ";$(div).append(html)})}};function getProjectTitle(project_id,hierarchy){if(hierarchy.hasOwnProperty(project_id)&&hierarchy[project_id].title){return hierarchy[project_id].title}else{return undefined}}function compareProjectTitles(a,b){if(a.project_idb.project_id){return 1}else{return 0}}function getParentProjects(project_id,hierarchy){var parent=[];var iterate_p=project_id;var parent_id="";var aux={};while(hierarchy[iterate_p].hasOwnProperty("parent_project")){parent_id=hierarchy[iterate_p].parent_project;aux=hierarchy[parent_id];aux.project_id=parent_id;parent.push(aux);iterate_p=parent_id}return parent.reverse()}function getChildrenProjects(project_id,hierarchy){var children=[];var aux={};$.each(hierarchy,function(id,p){if(hierarchy[id].parent_project===project_id){aux=hierarchy[id];aux.project_id=id;children.push(aux)}});children.sort(compareProjectTitles);return children}function composePBreadcrumbsHTMLlast(project_id,children,hierarchy){var html="";var clen=children.length;if(clen>0){children_sort=[];children_names=[];$.each(children,function(id,value){children_names.push(value.title)});children_names=children_names.sort();$.each(children_names,function(id,name){$.each(children,function(id,value){if(name===value.title){children_sort.push(value);return false}})});children=children_sort;html+='"}else{html+="
      1. "+getProjectTitle(project_id,hierarchy)+"
      2. "}return html}function composeProjectBreadcrumbs(project_id){var html='";return html}function escapeString(string){var aux="";aux=string.replace(" ","_");aux=aux.toLowerCase();return aux}function composeHTMLNestedProjects(project_id,children,hierarchy){var html="";var clen=children.length;var epid=project_id;var divid=epid.replace(".","");if(clen>0){html+="
      3. ";html+=''+getProjectTitle(project_id,hierarchy)+"";html+=' ';html+=''+clen+" subprojects";html+='
          ';$.each(children,function(id,value){gchildren=getChildrenProjects(value.project_id,hierarchy);html+=composeHTMLNestedProjects(value.project_id,gchildren,hierarchy)});html+="
      4. "}else{html+='
      5. '+getProjectTitle(project_id,hierarchy)+"
      6. "}return html}function composeProjectMap(){var html="
          ";var hierarchy=Report.getProjectsHierarchy();if(hierarchy.length===0){return""}project_id="root";var children=getChildrenProjects(project_id,hierarchy);var parents=getParentProjects(project_id,hierarchy);$.each(children,function(id,value){grandchildren=getChildrenProjects(value.project_id,hierarchy);html+=composeHTMLNestedProjects(value.project_id,grandchildren,hierarchy)});html+="
        ";return html}function getSectionName4Release(){var result=[];var sections={data_sources:"Data sources",organization:"Organization",project_map:"Project map",people:"Contributor",company:"Company",country:"Country",domain:"Domain","scm-companies":"Activity on code repositories by companies","mls-companies":"Activity on mailing lists by companies","its-companies":"Activity on issue trackers by companies"};url_no_params=document.URL.split("?")[0];url_tokens=url_no_params.split("/");var section=url_tokens[url_tokens.length-1].split(".")[0];if(section==="project"||section==="index"||section==="release"||section===""){return[]}else{if(sections.hasOwnProperty(section)){result.push([section,sections[section]])}else{return[["#","Unavailable section name"]]}return result}}function getSectionName(){var result=[];var sections={mls:"MLS overview",irc:"IRC overview",slack:"Slack Overview",its:"ITS overview",storyboard:"Storyboard overview",maniphest:"Maniphest overview",qaforums:"QA Forums overview",scr:"Code Review overview",scm:"SCM overview",wiki:"Wiki overview",confluence:"Confluence overview",downloads:"Downloads",forge:"Forge releases",meetup:"Meetup overview",demographics:"Demographics",data_sources:"Data sources",organization:"Organization",project_map:"Project map",people:"Contributor",company:"Company",country:"Country",domain:"Domain",release:"Companies analysis by release",project_comparison:"Project comparison"};var filters={companies:"Activity by companies",organizations:"Activity by organizations",contributors:"Activity by contributors",countries:"Activity by countries",domains:"Activity by domains",group:"Meetup group",next_meetings:"Next meetings",projects:"Activity by project",repos:"Activity by repositories",groups:"Activity by groups",states:"Activity by states",tags:"Activity by tags",past_meetings:"Past meetings",backlog:"Backlog"};var filters2={repository:"Repository",countries:"Activity by countries"};url_no_params=document.URL.split("?")[0];url_tokens=url_no_params.split("/");var section=url_tokens[url_tokens.length-1].split(".")[0];if(section==="project"||section==="index"||section===""){return[]}else if(section==="filter"){var filter_by=$.urlParam("filter_by_item");var filter_names=$.urlParam("filter_names");switch(filter_names){case"company+country":result=[["company","Company"],["Activity by country and company","Activity by country and company"]]}return result}else{var s_tokens=section.split("-");if(s_tokens[0]==="repository"){ds_name=$.urlParam("ds");s_tokens=[ds_name,"repos","repository"]}if(sections.hasOwnProperty(s_tokens[0])){result.push([s_tokens[0],sections[s_tokens[0]]]);if(s_tokens.length>0){if(filters.hasOwnProperty(s_tokens[1])){result.push([s_tokens[0]+"-"+s_tokens[1],filters[s_tokens[1]]]);if(s_tokens.length>2){if(filters2.hasOwnProperty(s_tokens[2])){result.push([s_tokens[0],filters2[s_tokens[2]]])}}}}}else{return[["#","Unavailable section name"]]}return result}}function isURLRelease(){if($.urlParam("release")!==null&&$.urlParam("release").length>0)return true;else return false}function composeSideBar(project_id){if(project_id===undefined){project_id="root"}var html="";var html_extra="";html+='";return html}Convert.convertSideBar=function(project_id){var divs=$(".SideNavBar");if(divs.length>0){$.each(divs,function(id,div){$(this).empty();if(!div.id)div.id="SideNavBar";var label;if(project_id){label=Report.cleanLabel(project_id)}var htmlaux=composeSideBar(label);$("#"+div.id).append(htmlaux);data=Report.getProjectData();$(".report_name").text(data.project_name);if(Utils.isReleasePage())$(".report_name").attr("href","./?release="+$.urlParam("release"))})}};Convert.convertProjectNavBar=function(project_id){var divs=$(".ProjectNavBar");if(divs.length>0){$.each(divs,function(id,div){$(this).empty();if(!div.id)div.id="ProjectNavBar";var label;if(project_id){label=Report.cleanLabel(project_id)}var htmlaux=composeProjectBreadcrumbs(label);$("#"+div.id).append(htmlaux)})}};Convert.convertNavbar=function(){$.get(Report.getHtmlDir()+"navbar.html",function(navigation){$("#Navbar").html(navigation);var project_id=Report.getParameterByName("project");Convert.convertProjectNavBar(project_id);Convert.convertReleaseSelector();Convert.convertSideBar(project_id)})};Convert.convertReleaseSelector=function(){var releases=Report.getReleaseNames();if(releases===undefined){return}if(releases.length>0){var divs=$(".ReleaseSelector");if(divs.length>0){$.each(divs,function(id,div){$(this).empty();if(!div.id)div.id="ReleaseSelector"+getRandomId();var htmlaux=HTMLComposer.releaseSelector($.urlParam("release"),releases);$("#"+div.id).append(htmlaux)})}}};function composeSectionBreadCrumb(project_id){var html='";return html}Convert.convertSectionBreadcrumb=function(project_id){var divs=$(".SectionBreadcrumb");if(divs.length>0){$.each(divs,function(id,div){$(this).empty();if(!div.id)div.id="SectionBreadcrumb";var label;if(project_id){label=Report.cleanLabel(project_id)}var htmlaux=composeSectionBreadCrumb(label);$("#"+div.id).append(htmlaux)})}};Convert.convertProjectMap=function(){var divs=$(".ProjectMap");if(divs.length>0){$.each(divs,function(id,div){$(this).empty();if(!div.id)div.id="ProjectMap";var label;var htmlaux=composeProjectMap();$("#"+div.id).append(htmlaux)})}};Convert.convertFooter=function(){$.get(Report.getHtmlDir()+"footer.html",function(footer){$("#Footer").html(footer);$("#vizjs-lib-version").append(vizjslib_git_tag)})};Convert.convertSummary=function(){div_param="Summary";var divs=$("."+div_param);if(divs.length>0){$.each(divs,function(id,div){$(this).empty();var ds=$(this).data("data-source");var DS=Report.getDataSourceByName(ds);if(DS===null)return;div.id=ds+"-Summary";DS.displayGlobalSummary(div.id)})}};function composeDropDownRepo(DS){var repository=Report.getParameterByName("repository");if(repository&&$.inArray(repository,DS.getReposData())<0)return"";var dsname=DS.getName();var section="";var label_repo=DS.getLabelForRepository();var label_repo_plural=DS.getLabelForRepositories();if(repository!==undefined){section=repository}else{section="All "+label_repo_plural}html='
        ';html='
        1. Filtered by '+label_repo+":  
        2. ";html+='
        3. "}var repo_names=DS.getReposData();repo_names.sort();$.each(repo_names,function(id,value){if(value===repository)return;html+='
        4. ';html+=value;html+="
        5. "});html+="
      ";html+="
    ";return html}Convert.convertRepositorySelector=function(){var divs=$(".repository-selector");if(divs.length>0){$.each(divs,function(id,div){$(this).empty();var ds=$(this).data("data-source");var DS=Report.getDataSourceByName(ds);if(DS===null)return;div.id=ds+"-repository-selector";var htmlaux=composeDropDownRepo(DS);$("#"+div.id).append(htmlaux)})}};function displayReportData(){data=Report.getProjectData();document.title=data.project_name+" Report by Bitergia";if(data.title)document.title=data.title;$(".report_date").text(data.date);$(".report_name").text(data.project_name);str=data.blog_url;if(str&&str.length>0){$("#blogEntry").html("
    Blog post with some more details");$(".blog_url").attr("href",data.blog_url)}else{$("#more_info").hide()}str=data.producer;if(str&&str.length>0){$("#producer").html(str)}else{$("#producer").html("Bitergia")}$(".project_name").text(data.project_name);$("#project_url").attr("href",data.project_url)}Convert.convertRefcard=function(){$.when($.get(Report.getHtmlDir()+"refcard.html"),$.get(Report.getHtmlDir()+"project-card.html")).done(function(res1,res2){refcard=res1[0];projcard=res2[0];$("#Refcard").html(refcard);displayReportData();$.each(Report.getProjectsData(),function(prj_name,prj_data){var new_div="card-"+prj_name.replace(".","").replace(" ","");$("#Refcard #projects_info").append(projcard);$("#Refcard #projects_info #new_card").attr("id",new_div);$.each(Report.getDataSources(),function(i,DS){if(DS.getProject()!==prj_name){$("#"+new_div+" ."+DS.getName()+"-info").hide();return}DS.displayData(new_div)});$("#"+new_div+" #project_name").text(prj_name);if(Report.getProjectsDirs.length>1)$("#"+new_div+" .project_info").append(' Report');$("#"+new_div+" #project_url").attr("href",prj_data.url)})})};Convert.convertGlobalData=function(){var divs=$(".GlobalData");if(divs.length>0){$.each(divs,function(id,div){ds=$(this).data("data-source");DS=Report.getDataSourceByName(ds);if(DS===null)return;var data=DS.getGlobalData();var key=$(this).data("field");$(this).text(Report.formatValue(data[key],key))})}};Convert.convertProjectData=function(){var divs=$(".ProjectData");var p=Report.getParameterByName("project");if(divs.length>0){$.each(divs,function(id,div){ds=$(this).data("data-source");DS=Report.getDataSourceByName(ds);if(DS===null)return;var data=DS.getProjectsGlobalData()[p];if(data===undefined){return}var key=$(this).data("field");$(this).text(Report.formatValue(data[key],key))})}};Convert.convertRepositoryData=function(){var divs=$(".RepositoryData");var p=Report.getParameterByName("repository");if(divs.length>0){$.each(divs,function(id,div){ds=$(this).data("data-source");DS=Report.getDataSourceByName(ds);if(DS===null)return;var data=DS.getReposGlobalData()[p];if(data===undefined){return}var key=$(this).data("field");$(this).text(Report.formatValue(data[key],key))})}};Convert.convertRadarActivity=function(){var div_param="RadarActivity";var divs=$("#"+div_param);if(divs.length>0){$.each(divs,function(id,div){$(this).empty()});Viz.displayRadarActivity(div_param)}};Convert.convertRadarCommunity=function(){var div_param="RadarCommunity";var divs=$("#"+div_param);if(divs.length>0){$.each(divs,function(id,div){$(this).empty()});Viz.displayRadarCommunity("RadarCommunity")}};Convert.convertTreemap=function(){var div_param="Treemap";var divs=$("#"+div_param);if(divs.length>0){$.each(divs,function(id,div){$(this).empty()});var file=$("#Treemap").data("file");$("#Treemap").empty();Viz.displayTreeMap("Treemap",file)}};Convert.convertBubbles=function(){div_param="Bubbles";var divs=$("."+div_param);if(divs.length>0){$.each(divs,function(id,div){$(this).empty();var ds=$(this).data("data-source");var DS=Report.getDataSourceByName(ds);if(DS===null)return;if(DS.getData().length===0)return;var radius=$(this).data("radius");div.id=ds+"-Bubbles";DS.displayBubbles(div.id,radius)})}};function loadHTMLEvolParameters(htmldiv,config_viz){config_viz.help=true;var help=$(htmldiv).data("help");if(help!==undefined)config_viz.help=help;config_viz.show_legend=false;if($(htmldiv).data("frame-time"))config_viz.frame_time=true;config_viz.graph=$(htmldiv).data("graph");if($(htmldiv).data("min")){config_viz.show_legend=false;config_viz.show_labels=true;config_viz.show_grid=true;config_viz.help=false}if($(htmldiv).data("legend"))config_viz.show_legend=true;config_viz.ligth_style=false;if($(htmldiv).data("light-style")){config_viz.light_style=true}if($(htmldiv).data("custom-title")){config_viz.custom_title=$(htmldiv).data("custom-title")}if(config_viz.help&&$(htmldiv).data("custom-help")){config_viz.custom_help=$(htmldiv).data("custom-help")}else{config_viz.custom_help=""}if($(htmldiv).data("repo-filter")){config_viz.repo_filter=$(htmldiv).data("repo-filter")}var start=$(htmldiv).data("start");if(start)config_viz.start_time=start;var end=$(htmldiv).data("end");if(end)config_viz.end_time=end;var remove_last_point=$(htmldiv).data("remove-last-point");if(remove_last_point)config_viz.remove_last_point=true;return config_viz}Convert.convertMetricsEvol=function(){var config_metric={};config_metric.show_desc=false;config_metric.show_title=true;config_metric.show_labels=true;var config=Report.getVizConfig();if(config){$.each(config,function(key,value){config_metric[key]=value})}var div_param="MetricsEvol";var divs=$("."+div_param);if(divs.length>0){$.each(divs,function(id,div){var config_viz={};$.each(config_metric,function(key,value){config_viz[key]=value});$(this).empty();var metrics=$(this).data("metrics");var ds=$(this).data("data-source");config_viz.title=$(this).data("title");var DS=Report.getDataSourceByName(ds);if(DS===null)return;config_viz=loadHTMLEvolParameters(div,config_viz);div.id=metrics.replace(/,/g,"-")+"-"+ds+"-metrics-evol-"+this.id;div.id=div.id.replace(/\n|\s/g,"");DS.displayMetricsEvol(metrics.split(","),div.id,config_viz,$(this).data("convert"))})}};Convert.convertMetricsEvolCustomized=function(filter){var config_metric={};config_metric.show_desc=false;config_metric.show_title=true;config_metric.show_labels=true;var config=Report.getVizConfig();if(config){$.each(config,function(key,value){config_metric[key]=value})}var div_param="MetricsEvolCustomized";var divs=$("."+div_param);if(divs.length>0){$.each(divs,function(id,div){if(filter!==$(this).data("filter"))return;var config_viz={};$.each(config_metric,function(key,value){config_viz[key]=value});$(this).empty();var metrics=$(this).data("metrics");var ds=$(this).data("data-source");config_viz.title=$(this).data("title");var DS=Report.getDataSourceByName(ds);if(DS===null)return;config_viz=loadHTMLEvolParameters(div,config_viz);div.id=metrics.replace(/,/g,"-")+"-"+ds+"-metrics-evol-"+this.id;div.id=div.id.replace(/\n|\s/g,"");DS.displayMetricsEvol(metrics.split(","),div.id,config_viz,$(this).data("convert"))})}};Convert.convertMetricsEvolSelector=function(){var config_metric={};config_metric.show_desc=false;config_metric.show_title=true;config_metric.show_labels=true;var config=Report.getVizConfig();if(config){$.each(config,function(key,value){config_metric[key]=value})}var div_param="MetricsEvol";var divs=$("."+div_param);if(divs.length>0){$.each(divs,function(id,div){var config_viz={};$.each(config_metric,function(key,value){config_viz[key]=value});$(this).empty();var metrics=$(this).data("metrics");var ds=$(this).data("data-source"); +var DS=Report.getDataSourceByName(ds);if(DS===null)return;var repository=Report.getParameterByName("repository");config_viz.repo_filter=repository;config_viz=loadHTMLEvolParameters(div,config_viz);div.id=metrics.replace(/,/g,"-")+"-"+ds+"-metrics-evol-"+repository;div.id=div.id.replace(/\n|\s/g,"");DS.displayMetricsEvol(metrics.split(","),div.id,config_viz,$(this).data("convert"))})}};Convert.convertMetricsEvolSet=function(){div_param="MetricsEvolSet";var divs=$("."+div_param);if(divs.length>0){$.each(divs,function(id,div){$(this).empty();var all=$(this).data("all");var relative=$(this).data("relative");var summary_graph=$(this).data("summary-graph");var legend=$(this).data("legend-show");div.id=ds+"-MetricsEvolSet-"+this.id;if(all===true){div.id=ds+"-All";Viz.displayEnvisionAll(div.id,relative,legend,summary_graph);return false}var ds=$(this).data("data-source");var DS=Report.getDataSourceByName(ds);if(DS===null)return;DS.displayEnvision(div.id,relative,legend,summary_graph)})}};Convert.convertTimeTo=function(){var div_tt="TimeTo";divs=$("."+div_tt);if(divs.length>0){$.each(divs,function(id,div){$(this).empty();var ds=$(this).data("data-source");var DS=Report.getDataSourceByName(ds);if(DS===null)return;var quantil=$(this).data("quantil");var type=$(this).data("type");div.id=ds+"-time-to-"+type+"-"+quantil;if(type==="fix")DS.displayTimeToFix(div.id,quantil);if(type==="attention")DS.displayTimeToAttention(div.id,quantil)})}};Convert.convertMarkovTable=function(){var div_id_mt="MarkovTable";var divs=$("."+div_id_mt);var DS,ds;if(divs.length>0){$.each(divs,function(id,div){$(this).empty();ds=$(this).data("data-source");DS=Report.getDataSourceByName(ds);if(DS===null)return;if(DS.getData().length===0)return;var title=$(this).data("title");div.id=ds+"-markov-table";DS.displayMarkovTable(div.id,title)})}};Convert.convertLastActivity=function(){var all_metrics=Report.getAllMetrics();function activityInfo(div,period,label){var html="

    Last "+label+"

    ";$.each(Report.getDataSources(),function(index,DS){var data=DS.getGlobalData();$.each(data,function(key,val){var suffix="_"+period;if(key.indexOf(suffix,key.length-suffix.length)!==-1){var metric=key.substring(0,key.length-suffix.length);label=metric;if(all_metrics[metric])label=all_metrics[metric].name;html+=label+":"+data[key]+"
    "}})});$(div).append(html)}var divs=$(".LastActivity");var period=null;var days={Week:7,Month:30,Quarter:90,Year:365};if(divs.length>0)$.each(divs,function(id,div){period=$(div).data("period");activityInfo(div,days[period],period)})};Convert.convertTopByPeriod=function(){var div_id_top="TopByPeriod";var divs=$("."+div_id_top);var DS,ds;if(divs.length>0){var unique=0;$.each(divs,function(id,div){$(this).empty();ds=$(this).data("data-source");DS=Report.getDataSourceByName(ds);if(DS===null)return;if(DS.getData().length===0)return;var show_all=false;if($(this).data("show_all"))show_all=true;var top_metric=$(this).data("metric");var npeople=$(this).data("limit");var is_release=Utils.isReleasePage();var html=HTMLComposer.TopByPeriod(ds,top_metric,npeople,is_release);if(!div.id)div.id="Parsed"+getRandomId();$("#"+div.id).append(html)})}};Convert.convertTop=function(){var div_id_top="Top";var divs=$("."+div_id_top);var DS,ds;if(divs.length>0){var unique=0;$.each(divs,function(id,div){$(this).empty();ds=$(this).data("data-source");DS=Report.getDataSourceByName(ds);if(DS===null)return;if(DS.getData().length===0)return;var show_all=false;if($(this).data("show_all"))show_all=true;var top_metric=$(this).data("metric");var limit=$(this).data("limit");var graph=$(this).data("graph");var people_links=$(this).data("people_links");var threads_links=$(this).data("threads_links");var period=$(this).data("period");var period_all=$(this).data("period_all");var repository=Report.getParameterByName("repository");div.id=ds+"-"+div_id_top+unique++;if(graph){div.id+="-"+graph}if(period===undefined&&period_all===undefined){period_all=true}if(limit===undefined){limit=10}DS.displayTop(div,show_all,top_metric,period,period_all,graph,limit,people_links,threads_links,repository)})}};Convert.convertTablePastEvents=function(){var div_id_top="TablePastEvents";var divs=$("."+div_id_top);var DS,ds;if(divs.length>0){var unique=0;$.each(divs,function(id,div){$(this).empty();ds=$(this).data("data-source");if(ds!=="eventizer")return;DS=Report.getDataSourceByName(ds);if(DS===null)return;if(DS.getData().length===0)return;var show_all=false;var top_metric=$(this).data("metric");var period=$(this).data("period");var period_all=$(this).data("period_all");var headers=$(this).data("headers");var columns=$(this).data("columns");var limit=$(this).data("limit");div.id=ds+"-"+div_id_top+unique++;if(period===undefined&&period_all===undefined){period_all=true}if(limit===undefined){limit=100}DS.displayTablePastEvents(div,headers.split(","),columns.split(","),limit)})}};Convert.convertTableFutureEvents=function(){var div_id_top="TableFutureEvents";var divs=$("."+div_id_top);var DS,ds;if(divs.length>0){var unique=0;$.each(divs,function(id,div){$(this).empty();ds=$(this).data("data-source");if(ds!=="eventizer")return;DS=Report.getDataSourceByName(ds);if(DS===null)return;if(DS.getData().length===0)return;var show_all=false;var top_metric=$(this).data("metric");var period=$(this).data("period");var period_all=$(this).data("period_all");var headers=$(this).data("headers");var columns=$(this).data("columns");var limit=$(this).data("limit");div.id=ds+"-"+div_id_top+unique++;if(period===undefined&&period_all===undefined){period_all=true}if(limit===undefined){limit=100}DS.displayTableFutureEvents(div,headers.split(","),columns.split(","),limit)})}};Convert.convertTopFilter=function(){var div_id_top="TopFilter";var divs=$("."+div_id_top);var DS;if(divs.length>0){var unique=0;$.each(divs,function(id,div){$(this).empty();var opt=readHTMLOpts($(this));DS=Report.getDataSourceByName(opt.ds);if(DS===null)return;if(DS.getData().length===0)return;div.id=opt.ds+"-"+div_id_top+unique++;if(opt.limit===undefined){opt.limit=10}if(DS.getName()==="eventizer"){var desc_metrics=DS.getMetrics();var data=DS.getReposDataFull();$.each(data.name,function(id,value){data.name[id]=''+data.name[id]+""});if(opt.ratio===undefined){Table.meetupGroupsTable(div,data,opt.headers.split(","),opt.cols.split(","))}else{Table.meetupGroupsTable(div,data,opt.headers.split(","),opt.cols.split(","),opt.ratio.split(","),opt.ratio_header)}}})}};function readHTMLOpts(widget){var myobj={};myobj.ds=widget.data("data-source");myobj.top_metric=widget.data("metric");myobj.limit=widget.data("limit");myobj.period=widget.data("period");myobj.period_all=widget.data("period_all");myobj.cols=widget.data("columns");myobj.headers=widget.data("headers");myobj.ratio=widget.data("ratio");myobj.ratio_header=widget.data("ratio-header");return myobj}Convert.convertPersonMetrics=function(upeople_id,upeople_identifier){var config_metric={};config_metric.show_desc=false;config_metric.show_title=false;config_metric.show_labels=true;divs=$(".PersonMetrics");if(divs.length){$.each(divs,function(id,div){$(this).empty();ds=$(this).data("data-source");DS=Report.getDataSourceByName(ds);if(DS===null)return;var metrics=$(this).data("metrics");config_metric.show_legend=false;config_metric.help=false;if($(this).data("frame-time"))config_metric.frame_time=true;if($(this).data("legend"))config_metric.show_legend=true;if($(this).data("person_id"))upeople_id=$(this).data("person_id");if($(this).data("person_name"))upeople_identifier=$(this).data("person_name");div.id=metrics.replace(/,/g,"-")+"-people-metrics";DS.displayMetricsPeople(upeople_id,upeople_identifier,metrics.split(","),div.id,config_metric)})}};function getRandomId(){return Math.floor(Math.random()*1e3+1)}Convert.convertPersonData=function(upeople_id,upeople_identifier){var divs=$(".PersonData"),name,email;if(divs.length>0){$.each(divs,function(id,div){$(this).empty();if($(this).data("person_id"))upeople_id=$(this).data("person_id");if(!div.id)div.id="PersonData"+"-"+upeople_id+"-"+getRandomId();var data=Report.getPeopleIdentities()[upeople_id];if(data){name=DataProcess.selectPersonName(data);email=DataProcess.selectPersonEmail(data);email="("+DataProcess.hideEmail(email)+")"}else{if(upeople_identifier!==undefined)name=upeople_identifier;else name=upeople_id;email=""}html=HTMLComposer.personName(name,email);$("#"+div.id).append(html)})}};Convert.personSummaryBlock=function(upeople_id){var divs=$(".PersonSummaryBlock");if(divs.length>0){$.each(divs,function(id,div){if(div.id.indexOf("Parsed")>=0)return;ds_name=$(this).data("data-source");ds_realname=$(this).data("data-realname");metric_name=$(this).data("metrics");DS=Report.getDataSourceByName(ds_name);if(DS===null)return;if(DS.getData().length===0)return;if(DS.getPeopleMetricsData()[upeople_id].length===0)return;var html=HTMLComposer.personDSBlock(ds_name,metric_name,ds_realname);if(!div.id)div.id="Parsed"+getRandomId();$("#"+div.id).append(html)})}};Convert.convertPersonSummary=function(upeople_id,upeople_identifier){var divs=$(".PersonSummary");if(divs.length>0){$.each(divs,function(id,div){$(this).empty();ds=$(this).data("data-source");DS=Report.getDataSourceByName(ds);if(DS===null)return;if($(this).data("person_id"))upeople_id=$(this).data("person_id");if($(this).data("person_name"))upeople_identifier=$(this).data("person_name");div.id=ds+"-refcard-people";DS.displayPeopleSummary(div.id,upeople_id,upeople_identifier,DS)})}};Convert.convertPeople=function(upeople_id,upeople_identifier){if(upeople_id===undefined)upeople_id=Report.getParameterByName("id");if(upeople_identifier===undefined)upeople_identifier=Report.getParameterByName("name");if(upeople_id===undefined)return;if(Loader.check_people_item(upeople_id)===false){$.each(Report.getDataSources(),function(index,DS){Loader.data_load_people_item(upeople_id,DS,Convert.convertPeople)});return}Convert.personSummaryBlock(upeople_id);Convert.convertPersonData(upeople_id,upeople_identifier);Convert.convertPersonSummary(upeople_id,upeople_identifier);Convert.convertPersonMetrics(upeople_id,upeople_identifier);Convert.activateHelp()};function dataFilterAvailable(filter_name,item_name){if(filter_name==="repos"){if(DS.getReposGlobalData()[item_name]===undefined||DS.getReposGlobalData()[item_name].length===0)return false}else if(filter_name==="companies"){if(DS.getCompaniesGlobalData()[item_name]===undefined||DS.getCompaniesGlobalData()[item_name].length===0)return false}else if(filter_name==="countries"){if(DS.getCountriesGlobalData()[item_name]===undefined||DS.getCountriesGlobalData()[item_name].length===0)return false}else if(filter_name==="companies"){if(DS.getDomainsGlobalData()[item_name]===undefined||DS.getDomainsGlobalData()[item_name].length===0)return false}return true}Convert.repositoryDSBlock=function(repo_id){var divs=$(".FilterDSBlock");if(divs.length>0){$.each(divs,function(id,div){if(div.id.indexOf("Parsed")>=0)return;ds_name=$(this).data("data-source");ds_realname=$(this).data("data-realname");filter_name=$(this).data("filter");aux=$(this).data("metrics");metric_names=aux.split(",");$.each(metric_names,function(id,value){metric_names[id]=metric_names[id].replace(/:/g,",")});DS=Report.getDataSourceByName(ds_name);if(DS===null)return;if(DS.getData().length===0)return;if(dataFilterAvailable(filter_name,repo_id)){var html=HTMLComposer.filterDSBlock(ds_name,filter_name,metric_names,ds_realname);if(!div.id)div.id="Parsed"+getRandomId();$("#"+div.id).append(html)}})}};Convert.convertDSSummaryBlock=function(upeople_id){var divs=$(".DSSummaryBlock");if(divs.length>0){$.each(divs,function(id,div){if(div.id.indexOf("Parsed")>=0)return;ds_name=$(this).data("data-source");ds_realname=$(this).data("data-realname");box_labels=$(this).data("box-labels");box_metrics=$(this).data("box-metrics");ts_metrics=$(this).data("ts-metrics");DS=Report.getDataSourceByName(ds_name);if(DS===null)return;if(DS.getData().length===0)return;var html=HTMLComposer.DSBlock(ds_name,box_labels,box_metrics,ts_metrics,ds_realname);if(!div.id)div.id="Parsed"+getRandomId();$("#"+div.id).append(html)})}};Convert.companyDSBlock=function(repo_id){var divs=$(".CompanyDSBlock");if(divs.length>0){$.each(divs,function(id,div){if(div.id.indexOf("Parsed")>=0)return;var ds_name=$(this).data("data-source"),ds_realname=$(this).data("data-realname"),company_name=Utils.getParameter("company").replace("%20"," "),filter_name="companies",top_metric=$(this).data("top-metric");var aux=$(this).data("metrics");var metric_names=aux.split(",");$.each(metric_names,function(id,value){metric_names[id]=metric_names[id].replace(/:/g,",")});DS=Report.getDataSourceByName(ds_name);if(DS===null)return;if(DS.getData().length===0)return;if(dataFilterAvailable(filter_name,repo_id)){var html=HTMLComposer.CompanyDSBlock(company_name,ds_name,filter_name,metric_names,top_metric,ds_realname);if(!div.id)div.id="Parsed"+getRandomId();$("#"+div.id).append(html)}Demographics.widget()})}};Convert.convertDSSummaryBlockProjectFiltered=function(upeople_id){var divs=$(".DSSummaryBlockProjectFiltered");var pname=Report.getParameterByName("project");if(divs.length>0){$.each(divs,function(id,div){if(div.id.indexOf("Parsed")>=0)return;ds_name=$(this).data("data-source");box_labels=$(this).data("box-labels");box_metrics=$(this).data("box-metrics");ts_metrics=$(this).data("ts-metrics");DS=Report.getDataSourceByName(ds_name);if(DS===null)return;if(DS.getProjectsGlobalData()[pname]===undefined)return;if(DS.getProjectsGlobalData()[pname].length===0)return;var html=HTMLComposer.DSBlockProject(ds_name,box_labels,box_metrics,ts_metrics,pname);if(!div.id)div.id="Parsed"+getRandomId();$("#"+div.id).append(html)})}};Convert.convertOverallSummaryBlock=function(){var divs=$(".OverallSummaryBlock");if(divs.length>0){$.each(divs,function(id,div){if(div.id.indexOf("Parsed")>=0)return;var html=HTMLComposer.overallSummaryBlock();if(!div.id)div.id="Parsed"+getRandomId();$("#"+div.id).append(html)})}};Convert.convertDemographics=function(){var divs=$(".Demographics");if(divs.length>0){$.each(divs,function(id,div){$(this).empty();ds=$(this).data("data-source");DS=Report.getDataSourceByName(ds);if(DS===null)return;var period=$(this).data("period");div.id="Demographics"+"-"+ds+"-"+"-"+period;DS.displayDemographics(div.id,period)})}};Convert.convertOldestChangesets=function(){var divs=$(".OldestChangesets");if(divs.length>0){$.each(divs,function(id,div){$(this).empty();ds=$(this).data("data-source");DS=Report.getDataSourceByName(ds);if(DS===null)return;div.id="OldestChangesets"+"-"+ds+"-"+"-"+getRandomId();var headers=$(this).data("headers");var columns=$(this).data("columns");DS.displayOldestChangesets(div,headers.split(","),columns.split(","))})}};Convert.convertMostActiveChangesets=function(){var divs=$(".MostActiveChangesets");if(divs.length>0){$.each(divs,function(id,div){$(this).empty();ds=$(this).data("data-source");DS=Report.getDataSourceByName(ds);if(DS===null)return;div.id="MostActiveChangesets"+"-"+ds+"-"+"-"+getRandomId();var headers=$(this).data("headers");var columns=$(this).data("columns");DS.displayMostActiveChangesets(div,headers.split(","),columns.split(","))})}};function filterItemsConfig(){var config_metric={};config_metric.show_desc=false;config_metric.show_title=false;config_metric.show_labels=true;config_metric.show_legend=false;return config_metric}Convert.getRealItem=function(ds,filter,item){var map=Report.getReposMap();if(map===undefined||map.length===0){if($.inArray(item,ds.getReposData())>-1)return item;else return null}var map_item=null;if(filter==="repos"){var rdata=ds.getReposMetricsData()[item];if(rdata===undefined){$.each(map,function(id,repos){$.each(Report.getDataSources(),function(index,DS){if(repos[DS.getName()]===item){map_item=repos[ds.getName()];return false}});if(map_item!==null)return false})}else map_item=item}else map_item=item;return map_item};Convert.convertFilterItemsSummary=function(filter){var divlabel="FilterItemsSummary";divs=$("."+divlabel);if(divs.length>0){$.each(divs,function(id,div){ds=$(this).data("data-source");DS=Report.getDataSourceByName(ds);if(DS===null)return;if(filter===undefined)filter=$(this).data("filter");if(filter!==$(this).data("filter"))return;if(!filter)return;div.id=ds+"-"+divlabel;$(this).empty();if(filter==="repos")DS.displayReposSummary(div.id,DS);if(filter==="countries")DS.displayCountriesSummary(div.id,DS);if(filter==="companies")DS.displayCompaniesSummary(div.id,DS);if(filter==="domains")DS.displayDomainsSummary(div.id,DS);if(filter==="projects")DS.displayProjectsSummary(div.id,DS)})}};Convert.convertFilterItemsGlobal=function(filter){var config_metric=filterItemsConfig();var divlabel="FilterItemsGlobal";divs=$("."+divlabel);if(divs.length>0){$.each(divs,function(id,div){ds=$(this).data("data-source");DS=Report.getDataSourceByName(ds);if(DS===null)return;if(filter===undefined)filter=$(this).data("filter");if(filter!==$(this).data("filter"))return;if(!filter)return;var metric=$(this).data("metric");var show_others=$(this).data("show-others");var order_by=$(this).data("order-by");config_metric.show_legend=$(this).data("legend");if($("#"+$(this).data("legend-div")).length>0){config_metric.legend={container:$(this).data("legend-div")}}else config_metric.legend={container:null};config_metric.graph=$(this).data("graph");config_metric.title=$(this).data("title");config_metric.show_title=1;div.id=metric+"-"+divlabel;$(this).empty();if(filter==="repos")DS.displayMetricReposStatic(metric,div.id,config_metric,order_by,show_others);if(filter==="countries")DS.displayMetricCountriesStatic(metric,div.id,config_metric,order_by,show_others);if(filter==="companies")DS.displayMetricCompaniesStatic(metric,div.id,config_metric,order_by,show_others);if(filter==="domains")DS.displayMetricDomainsStatic(metric,div.id,config_metric,order_by,show_others);if(filter==="projects")DS.displayMetricProjectsStatic(metric,div.id,config_metric,order_by,show_others)})}};Convert.convertFilterItemsNav=function(filter,page){var divlabel="FilterItemsNav";divs=$("."+divlabel);if(divs.length>0){var cont=0;$.each(divs,function(id,div){ds=$(this).data("data-source");DS=Report.getDataSourceByName(ds);if(DS===null)return;if(filter===undefined)filter=$(this).data("filter");if(filter!==$(this).data("filter"))return;if(!filter)return;if($(this).data("page"))page=$(this).data("page");order_by=$(this).data("order-by");div.id=ds+"-"+divlabel+"-"+cont;cont+=1;$(this).empty();if(filter==="repos")DS.displayItemsNav(div.id,filter,page,order_by);else if(filter==="countries")DS.displayItemsNav(div.id,filter,page);else if(filter==="companies")DS.displayItemsNav(div.id,filter,page);else if(filter==="domains")DS.displayItemsNav(div.id,filter,page);else if(filter==="projects")DS.displayItemsNav(div.id,filter,page)})}};Convert.convertFilterItemsMetricsEvol=function(filter){var config_metric=filterItemsConfig();var divlabel="FilterItemsMetricsEvol";divs=$("."+divlabel);if(divs.length>0){$.each(divs,function(id,div){ds=$(this).data("data-source");DS=Report.getDataSourceByName(ds);if(DS===null)return;if(filter===undefined)filter=$(this).data("filter");if(filter!==$(this).data("filter"))return;if(!filter)return;var metric=$(this).data("metric");var stacked=false;if($(this).data("stacked"))stacked=true;if($(this).data("min")){config_viz.show_legend=false;config_viz.show_labels=true;config_viz.show_grid=true;config_viz.help=false}var start=$(this).data("start");var end=$(this).data("end");config_metric.lines={stacked:stacked};if($("#"+$(this).data("legend-div")).length>0){config_metric.legend={container:$(this).data("legend-div")}}else config_metric.legend={container:null};config_metric.show_legend=$(this).data("legend");config_metric.mouse_tracker=$(this).data("mouse_tracker");var remove_last_point=$(this).data("remove-last-point");if(remove_last_point)config_metric.remove_last_point=true;div.id=metric+"-"+divlabel;$(this).empty();if(filter==="companies")DS.displayMetricCompanies(metric,div.id,config_metric,start,end);else if(filter==="repos")DS.displayMetricRepos(metric,div.id,config_metric,start,end);else if(filter==="domains")DS.displayMetricDomains(metric,div.id,config_metric,start,end);else if(filter==="projects")DS.displayMetricProjects(metric,div.id,config_metric,start,end)})}};Convert.convertFilterItemsMiniCharts=function(filter,page){var config_metric=filterItemsConfig();var divlabel="FilterItemsMiniCharts";divs=$("."+divlabel);if(divs.length>0){$.each(divs,function(id,div){ds=$(this).data("data-source");ds_realname=$(this).data("data-realname");DS=Report.getDataSourceByName(ds);if(DS===null)return;if(filter===undefined)filter=$(this).data("filter");if(filter!==$(this).data("filter"))return;if(!filter)return;if($(this).data("page"))page=$(this).data("page");var metrics=$(this).data("metrics");var order_by=$(this).data("order-by");var show_links=true;if($(this).data("show_links")!==undefined)show_links=$(this).data("show_links");var start=$(this).data("start");var end=$(this).data("end");var convert=$(this).data("convert");if($(this).data("frame-time"))config_metric.frame_time=true;var remove_last_point=$(this).data("remove-last-point");if(remove_last_point)config_metric.remove_last_point=true;div.id=metrics.replace(/,/g,"-")+"-"+filter+"-"+divlabel;$(this).empty();if(filter==="repos")DS.displayReposList(metrics.split(","),div.id,config_metric,order_by,page,show_links,start,end,convert,ds_realname);else if(filter==="countries")DS.displayCountriesList(metrics.split(","),div.id,config_metric,order_by,page,show_links,start,end,convert);else if(filter==="companies")DS.displayCompaniesList(metrics.split(","),div.id,config_metric,order_by,page,show_links,start,end,convert);else if(filter==="domains")DS.displayDomainsList(metrics.split(","),div.id,config_metric,order_by,page,show_links,start,end,convert);else if(filter==="projects")DS.displayProjectsList(metrics.split(","),div.id,config_metric,order_by,page,show_links,start,end,convert)})}};Convert.convertFilterItemData=function(filter,item){var divs=$(".FilterItemData");if(divs.length>0){$.each(divs,function(id,div){$(this).empty();var label=Report.cleanLabel(item);if(!div.id)div.id="FilterItemData"+getRandomId();html=HTMLComposer.itemName(label,filter);$("#"+div.id).append(html)})}};Convert.convertFilterItemSummary=function(filter,item){var divlabel="FilterItemSummary";divs=$("."+divlabel);if(item!==null&&divs.length>0){$.each(divs,function(id,div){var real_item=item;ds=$(this).data("data-source");ds_realname=$(this).data("data-realname");DS=Report.getDataSourceByName(ds);if(DS===null)return;if(filter===undefined)filter=$(this).data("filter");if(filter!==$(this).data("filter"))return;if(!filter)return;if($(this).data("item"))real_item=$(this).data("item");div.id=ds+"-"+filter+"-"+divlabel;$(this).empty();if(filter==="repos"){DS.displayRepoSummary(div.id,real_item,DS,ds_realname)}else if(filter==="countries")DS.displayCountrySummary(div.id,real_item,DS);else if(filter==="companies")DS.displayCompanySummary(div.id,real_item,DS);else if(filter==="domains")DS.displayDomainSummary(div.id,real_item,DS);else if(filter==="projects")DS.displayProjectSummary(div.id,real_item,DS)})}};Convert.convertFilterItemMicrodashText=function(filter,item){var divs=$(".FilterItemMicrodashText");if(divs.length>0){$.each(divs,function(id,div){$(this).empty();var global_data;var real_item=item;var metric=$(this).data("metric");var show_name=$(this).data("name");var ds=Report.getMetricDS(metric)[0];if(ds===undefined)return;if(filter==="projects"){global_data=ds.getProjectsGlobalData()[item]}else if(filter==="repos"){global_data=ds.getReposGlobalData()[item]}else{return}if(global_data===undefined){return}var html='
    ';if(show_name){html+='
    ';html+=''+ds.basic_metrics[metric].name+"";html+="
    "}$.each([365,30,7],function(index,period){var column=ds.getMetrics()[metric].column;var value=global_data[metric+"_"+period];var netvalue=global_data["diff_net"+column+"_"+period];var percentagevalue=global_data["percentage_"+column+"_"+period];percentagevalue=Math.round(percentagevalue*10)/10;if(value===undefined)return;var str_percentagevalue="";if(netvalue>0)str_percentagevalue="+"+percentagevalue;if(netvalue<0)str_percentagevalue="-"+Math.abs(percentagevalue);if(show_name){html+='
    '}else{html+='
    '}html+='Last '+period+" days:";html+=" "+Report.formatValue(value)+"
    ";if(netvalue===0){html+='  '+str_percentagevalue+"% "}else if(netvalue>0){html+='  '+str_percentagevalue+"% "}else if(netvalue<0){html+='  '+str_percentagevalue+"% "}html+="
    "});html+="
    ";$(div).append(html)})}};Convert.convertFilterItemMetricsEvol=function(filter,item){var config_metric=filterItemsConfig();var divlabel="FilterItemMetricsEvol";divs=$("."+divlabel);if(item!==null&&divs.length>0){$.each(divs,function(id,div){var real_item=item;var metrics=$(this).data("metrics");ds=$(this).data("data-source");DS=Report.getDataSourceByName(ds);if(DS===null)return;if(filter===undefined)filter=$(this).data("filter");if(filter!==$(this).data("filter"))return;if(!filter)return;if($(this).data("item"))real_item=$(this).data("item");config_metric=loadHTMLEvolParameters(div,config_metric);div.id=Report.cleanLabel(item).replace(/ /g,"_")+"-";div.id+=metrics.replace(/,/g,"-")+"-"+ds+"-"+filter+"-"+divlabel;$(this).empty();if(filter==="repos"){DS.displayMetricsRepo(real_item,metrics.split(","),div.id,config_metric,$(this).data("convert"))}else if(filter==="countries"){DS.displayMetricsCountry(real_item,metrics.split(","),div.id,config_metric)}else if(filter==="companies"){DS.displayMetricsCompany(real_item,metrics.split(","),div.id,config_metric)}else if(filter==="domains"){DS.displayMetricsDomain(real_item,metrics.split(","),div.id,config_metric)}else if(filter==="projects"){DS.displayMetricsProject(real_item,metrics.split(","),div.id,config_metric)}})}};Convert.convertFilterItemTop=function(filter,item){var divlabel="FilterItemTop";divs=$("."+divlabel);if(divs.length>0){$.each(divs,function(id,div){var real_item=item;$(this).empty();ds=$(this).data("data-source");DS=Report.getDataSourceByName(ds);if(DS===null)return;if(filter===undefined)filter=$(this).data("filter");if(filter!==$(this).data("filter"))return;if(!filter)return;if($(this).data("item"))real_item=$(this).data("item");var metric=$(this).data("metric");var period=$(this).data("period");var titles=$(this).data("titles");var height=$(this).data("height");var people_links=$(this).data("people_links");div.id=metric+"-"+ds+"-"+filter+"-"+divlabel+"-"+getRandomId();$(this).empty();div.className="";if(filter==="companies"){DS.displayTopCompany(real_item,div,metric,period,titles,height,people_links)}else if(filter==="repos"){DS.displayTopRepo(real_item,div,metric,period,titles,height,people_links)}})}};Convert.convertSmartLinks=function(){var divs=$(".SmartLinks");if(divs.length>0){$.each(divs,function(id,div){if(div.id.indexOf("Parsed")>=0)return;target_page=$(this).data("target");label=$(this).data("label");var html=HTMLComposer.smartLinks(target_page,label);if(!div.id)div.id="Parsed"+getRandomId();$("#"+div.id).append(html)})}};Convert.companyFilters=function(){var divs=$(".CompanyFilters");if(divs.length>0){$.each(divs,function(id,div){if(div.id.indexOf("Parsed")>=0)return;company_name=Report.getParameterByName("company");var html=HTMLComposer.companyFilters(company_name);if(!div.id)div.id="Parsed"+getRandomId();$("#"+div.id).append(html)})}};Convert.convertFilterStudyItem=function(filter,item){var convertfn=Convert.convertFilterStudyItem;if(convertfn.done===undefined){convertfn.done={}}else if(convertfn.done[filter]===true)return;if(filter==="repositories")filter="repos";if(item===undefined){if(filter==="repos")item=Report.getParameterByName("repository");if(filter==="countries")item=Report.getParameterByName("country");if(filter==="companies")item=Report.getParameterByName("company");if(filter==="domains")item=Report.getParameterByName("domain");if(filter==="projects")item=Report.getParameterByName("project")}if(!item)return;if(Loader.FilterItemCheck(item,filter)===false)return;Convert.repositoryDSBlock(item);if(filter==="companies"){Convert.companyDSBlock(item)}Convert.convertDSSummaryBlockProjectFiltered();Convert.convertFilterItemData(filter,item);Convert.convertFilterItemSummary(filter,item);Convert.convertFilterItemMetricsEvol(filter,item);Convert.convertFilterItemTop(filter,item);Convert.convertFilterItemMicrodashText(filter,item);Convert.convertProjectData();Convert.convertRepositoryData();Convert.activateHelp();Convert.convertMetricsEvolSelector();convertfn.done[filter]=true};Convert.activateHelp=function(){$(".help").popover({html:true,trigger:"manual"}).click(function(e){$(this).popover("toggle");e.stopPropagation()})};Convert.convertFilterStudy=function(filter){var page=Report.getCurrentPage();if(page===null){page=Report.getParameterByName("page");if(page!==undefined)Report.setCurrentPage(page)}if(page===undefined){if($("[class^='FilterItems']").length>0){page=1;Report.setCurrentPage(page)}else return}if(filter==="repositories")filter="repos";if(Loader.check_filter_page(page,filter)===false){$.each(Report.getDataSources(),function(index,DS){Loader.data_load_items_page(DS,page,Convert.convertFilterStudy,filter)});return}Convert.convertFilterItemsSummary(filter);Convert.convertFilterItemsGlobal(filter);Convert.convertFilterItemsNav(filter,page);Convert.convertFilterItemsMetricsEvol(filter);Convert.convertFilterItemsMiniCharts(filter,page)};Convert.convertDSTable=function(){var dst="DataSourcesTable";var divs=$("."+dst);var DS,ds;if(divs.length>0){var unique=0;$.each(divs,function(id,div){$(this).empty();div.id=dst+unique++;Viz.displayDataSourcesTable(div)})}};Convert.convertBasicDivs=function(){Convert.convertNavbar();Convert.convertSmartLinks();Convert.convertSectionBreadcrumb();Convert.convertProjectMap();Convert.convertFooter();Convert.convertOverallSummaryBlock();Convert.convertDSSummaryBlock();Convert.convertDSTable();Convert.convertGlobalData();Convert.convertSummary();Convert.convertTopByPeriod();Convert.companyFilters();Convert.convertOldestChangesets();Convert.convertMostActiveChangesets()};Convert.convertBasicDivsMisc=function(){Convert.convertRadarActivity();Convert.convertRadarCommunity();Convert.convertTreemap();Convert.convertBubbles()};Convert.convertBasicMetrics=function(config){var item=Report.getParameterByName("repository");if(item===undefined)Convert.convertMetricsEvol();Convert.convertTimeTo();Convert.convertMarkovTable()};Convert.convertFilterTop=function(filter){var item=Report.getParameterByName("repository");if(item!==undefined){if(Loader.filterTopCheck(item,filter)===false)return}Convert.convertTop();Convert.convertTableFutureEvents();Convert.convertTablePastEvents();Convert.convertRepositorySelector();Convert.convertTopFilter()}})();if(Report===undefined)var Report={};(function(){var project_data=null,markers=null,viz_config=null,gridster={},data_sources=[],report_config=null,html_dir="",menu_elements;var data_dir="data/json";var config_dir="config";var default_data_dir="data/json";var default_html_dir="";var projects_dirs=[default_data_dir];var projects_data={};var projects_datasources={};var repos_map;Report.all_json_file=data_dir+"/all.json";var project_file=config_dir+"/project-info.json";viz_config_file=data_dir+"/viz_cfg.json";markers_file=data_dir+"/markers.json";repos_map_file=data_dir+"/repos-map.json";projects_hierarchy_file=data_dir+"/projects_hierarchy.json";menu_elements_file=config_dir+"/menu-elements.json";var page_size=10,page=null; +var project_people_identities={};Report.createDataSources=createDataSources;Report.getAllMetrics=getAllMetrics;Report.getMarkers=getMarkers;Report.getVizConfig=getVizConfig;Report.getProjectsHierarchy=getProjectsHierarchy;Report.getMenuElements=getMenuElements;Report.getMenuElementsReleases=getMenuElementsReleases;Report.getReleaseNames=getReleaseNames;Report.getThreadsSite=getThreadsSite;Report.getGerritSite=getGerritSite;Report.getMetricDS=getMetricDS;Report.getGridster=getGridster;Report.setGridster=setGridster;Report.getCurrentPage=function(){return page};Report.setCurrentPage=function(current_page){page=current_page};Report.getPageSize=function(){return page_size};Report.setPageSize=function(size){page_size=size};Report.getProjectData=getProjectData;Report.getProjectsData=getProjectsData;Report.convertStudies=convertStudies;Report.getDataSources=function(){return data_sources};Report.registerDataSource=function(backend){data_sources.push(backend)};Report.setHtmlDir=function(dir){html_dir=dir};Report.getHtmlDir=function(){return html_dir};Report.getDataDir=function(){return data_dir};Report.setDataDir=function(dataDir){data_dir=dataDir;project_file=dataDir+"/project-info.json";config_file=dataDir+"/viz_cfg.json";markers_file=dataDir+"/markers.json";repos_mapping_file=data_dir+"/repos-mapping.json";projects_hierarchy_file=data_dir+"/projects_hierarchy.json"};function getMarkers(){return markers}Report.setMarkers=function(data){markers=data};Report.getMarkersFile=function(){return markers_file};Report.getReposMap=function(){return repos_map};Report.setReposMap=function(data){repos_map=data};Report.getReposMapFile=function(){return repos_map_file};function getVizConfig(){return viz_config}Report.setVizConfig=function(cfg){viz_config=cfg};Report.getVizConfigFile=function(){return viz_config_file};function getProjectsHierarchy(){return projects_hierarchy}Report.setProjectsHierarchy=function(data){projects_hierarchy=data};Report.getProjectsHierarchyFile=function(){return projects_hierarchy_file};function getMenuElements(){var elements;if(menu_elements!==undefined){elements=menu_elements.menu}return elements}function getMenuElementsReleases(){var releases;if(menu_elements!==undefined){releases=menu_elements.menu_releases}return releases}function getReleaseNames(){var names;if(menu_elements!==undefined){names=menu_elements.releases}return names}function getThreadsSite(){var site;if(menu_elements!==undefined){site=menu_elements.threads_site}return site}function getGerritSite(){var site;if(menu_elements!==undefined){site=menu_elements.gerrit_site}return site}Report.setMenuElements=function(data){menu_elements=data};Report.getMenuElementsFile=function(){return menu_elements_file};function getGridster(){return gridster}function setGridster(grid){gridster=grid}function getProjectData(){return project_data}Report.setProjectData=function(data){project_data=data};Report.getProjectFile=function(){return project_file};function getProjectsData(){return projects_data}Report.getProjectsDirs=function(){return projects_dirs};Report.setProjectsDirs=function(dirs){projects_dirs=dirs};Report.getProjectsList=function(){var projects_list=[];$.each(getProjectsData(),function(key,val){projects_list.push(key)});return projects_list};Report.getProjectsDataSources=function(){return projects_datasources};Report.setMetricsDefinition=function(metrics){$.each(Report.getDataSources(),function(i,DS){DS.setMetricsDefinition(metrics[DS.getName()])})};Report.getPeopleIdentities=function(){return project_people_identities};Report.setPeopleIdentities=function(people){project_people_identities=people};Report.cleanLabel=function(item){var label=item;var aux=null;if(item.split("___").length===2){aux=item.split(" ");label=aux[0]}else if(item.lastIndexOf("https:__api.github.com_repos_")===0){label=label.replace("https:__api.github.com_repos_","");label=label.split("_")[1]}else if(item.lastIndexOf("http")===0||item.split("_").length>3){aux=item.split("_");label=aux.pop();if(label==="")label=aux.pop();label=label.replace("buglist.cgi?product=","");label=label.replace("gmane.comp.sysutils.","")}else if(item.lastIndexOf("<")===0)label=MLS.displayMLSListName(item);return label};function strNumberWithThousands(x){var parts=x.toString().split(".");parts[0]=parts[0].replace(/\B(?=(\d{3})+(?!\d))/g,",");return parts.join(".")}Report.formatValue=function(number,field){if(number===undefined)return"-";var date_fields=["last_date","first_date"];var reports=["repositories","companies","countries","domains","projects"];var value=number;try{value=parseFloat(number).toFixed(1).toString().replace(/\.0$/,"");value=strNumberWithThousands(value);if(navigator.language==="es"){var parts=value.split(".");parts[0]=parts[0].replace(/,/g,".");value=parts.join(",")}}catch(err){}if(typeof value==="number"&&isNaN(value))value=number.toString();if(field!==undefined&&$.inArray(field,date_fields)>-1)value=number.toString();return value};Report.escapeHtml=function(unsafe){return unsafe.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")};Report.getParameterByName=function(name){name=name.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var regex=new RegExp("[\\?&]"+name+"=([^&#]*)"),results=regex.exec(location.search);return results===null?undefined:Report.escapeHtml(decodeURIComponent(results[1].replace(/\+/g," ")))};function getMetricDS(metric_id){var ds=[];$.each(Report.getDataSources(),function(i,DS){if(DS.getMetrics()[metric_id]){ds.push(DS)}});return ds}Report.getDataSourceByName=function(ds){var DS=null;$.each(Report.getDataSources(),function(index,DSaux){if(DSaux.getName()===ds){DS=DSaux;return false}});return DS};function getAllMetrics(){var all={};$.each(Report.getDataSources(),function(index,DS){all=$.extend({},all,DS.getMetrics())});return all}Report.displayActiveMenu=function(){var active=window.location.href;var page=active.substr(active.lastIndexOf("/")+1,active.length);page=page.split(".html")[0];if(page.indexOf("scm")===0){$(".scm-menu")[0].className=$(".scm-menu")[0].className+" active"}else if(page.indexOf("its")===0){$(".its-menu")[0].className=$(".its-menu")[0].className+" active"}else if(page.indexOf("mls")===0){$(".mls-menu")[0].className=$(".mls-menu")[0].className+" active"}else if(page.indexOf("scr")===0){$(".scr-menu")[0].className=$(".scr-menu")[0].className+" active"}else if(page.indexOf("irc")===0){$(".irc-menu")[0].className=$(".irc-menu")[0].className+" active"}else if(page.indexOf("qaforum")===0){$(".qaforum-menu")[0].className=$(".qaforum-menu")[0].className+" active"}else if(page.indexOf("studies")===0){$(".studies-menu")[0].className=$(".studies-menu")[0].className+" active"}else if(page.indexOf("wiki")===0){$(".wiki-menu")[0].className=$(".wiki-menu")[0].className+" active"}else if(page.indexOf("downloads")===0){$(".downloads-menu")[0].className=$(".downloads-menu")[0].className+" active"}else if(page.indexOf("projects")===0){$(".listprojects-menu")[0].className=$(".listprojects-menu")[0].className+" active"}else if(page.indexOf("index")===0||page===""){if($(".summary-menu").length===0)return;$(".summary-menu")[0].className=$(".summary-menu")[0].className+" active"}else{if($(".experimental-menu")[0])$(".experimental-menu")[0].className=$(".experimental-menu")[0].className+" active"}};function checkDynamicConfig(){var data_sources=[];var release=$.urlParam("release");if(release!==null&&release.length>0){data_sources.push("data/json/"+release);Report.setDataDir("data/json/"+release);if(data_sources.length>0)Report.setProjectsDirs(data_sources)}}function createDataSources(){checkDynamicConfig();var projects_dirs=Report.getProjectsDirs();var scm,its,its_1,mls,scr,irc,mediawiki,people,downloads,qaforums,releases,meetup;$.each(projects_dirs,function(i,project){if(Report.getConfig()===null||Report.getConfig()["data-sources"]===undefined){its=new ITS;Report.registerDataSource(its);its_1=new ITS_1;Report.registerDataSource(its_1);mls=new MLS;Report.registerDataSource(mls);scm=new SCM;Report.registerDataSource(scm);scr=new SCR;Report.registerDataSource(scr);irc=new IRC;Report.registerDataSource(irc);mediawiki=new MediaWiki;Report.registerDataSource(mediawiki);people=new People;Report.registerDataSource(people);downloads=new Downloads;Report.registerDataSource(downloads);qaforums=new QAForums;Report.registerDataSource(qaforums);releases=new Releases;Report.registerDataSource(releases);meetup=new Meetup;Report.registerDataSource(meetup)}else{var active_ds=Report.getConfig()["data-sources"];$.each(active_ds,function(i,name){if(name==="its"){its=new ITS;Report.registerDataSource(its)}else if(name==="its_1"){its_1=new ITS_1;Report.registerDataSource(its_1)}else if(name==="mls"){mls=new MLS;Report.registerDataSource(mls)}else if(name==="scm"){scm=new SCM;Report.registerDataSource(scm)}else if(name==="scr"){scr=new SCR;Report.registerDataSource(scr)}else if(name==="irc"){irc=new IRC;Report.registerDataSource(irc)}else if(name==="mediawiki"){mediawiki=new MediaWiki;Report.registerDataSource(mediawiki)}else if(name==="people"){people=new People;Report.registerDataSource(people)}else if(name==="downloads"){downloads=new Downloads;Report.registerDataSource(downloads)}else if(name==="qaforums"){qaforums=new QAForums;Report.registerDataSource(qaforums)}else if(name==="releases"){releases=new Releases;Report.registerDataSource(releases)}else if(name==="meetup"){meetup=new Meetup;Report.registerDataSource(meetup)}else Report.log("Not support data source "+name)})}if(its)its.setDataDir(project);if(its_1)its_1.setDataDir(project);if(mls)mls.setDataDir(project);if(scm)scm.setDataDir(project);if(scr)scr.setDataDir(project);if(irc)irc.setDataDir(project);if(mediawiki)mediawiki.setDataDir(project);if(people)people.setDataDir(project);if(downloads)downloads.setDataDir(project);if(qaforums)qaforums.setDataDir(project);if(releases)releases.setDataDir(project);if(scm&&its)scm.setITS(its);if(meetup)meetup.setDataDir(project)});return true}Report.addDataDir=function(){var addURL;var querystr=window.location.search.substr(1);if(querystr&&querystr.indexOf("data_dir")!==-1){addURL=window.location.search.substr(1)}return addURL};Report.configDataSources=function(){var prjs_dss=Report.getProjectsDataSources();$.each(Report.getDataSources(),function(index,ds){if(ds.getData()instanceof Array)return;$.each(projects_data,function(name,project){if(project.dir===ds.getDataDir()){if(prjs_dss[name]===undefined)prjs_dss[name]=[];$.each(prjs_dss[name],function(prj,prjds){if(ds.getName()===prjds.getName())return false});ds.setProject(name);prjs_dss[name].push(ds);return false}})})};Report.getConfig=function(){return report_config};Report.setConfig=function(data){report_config=data;if(data){Report.log("Global config file found");if(data["global-html-dir"])Report.setHtmlDir(data["global-html-dir"]);if(data["global-data-dir"]){Report.setDataDir(data["global-data-dir"]);Report.setProjectsDirs([data["global-data-dir"]])}if(data["projects-data-dirs"])Report.setProjectsDirs(data["projects-data-dirs"])}};Report.convertGlobal=function(){Convert.convertBasicDivs();Convert.convertBasicDivsMisc();Convert.convertBasicMetrics();Convert.convertDemographics();Convert.convertMetricsEvolSet();Convert.convertLastActivity();Convert.convertMicrodash();Convert.convertMicrodashText()};Report.getActiveStudies=function(){var activeStudies=[];var reports;var reports_study=["repositories","countries","companies","domains","projects"];if(Report.getConfig()!==null)reports=Report.getConfig().reports;else reports=reports_study;$.each(reports_study,function(i,study){if($.inArray(study,reports)>-1)activeStudies.push(study)});return activeStudies};Report.convertStudiesGlobal=function(){Convert.convertPeople()};function convertStudies(){$.each(Report.getActiveStudies(),function(i,study){var filter=study;if(study==="repositories")filter="repos";DataProcess.orderItems(filter);Convert.convertFilterStudy(study);Convert.convertFilterStudyItem(study)})}var log_on=true;Report.getLog=function(){return log_on};Report.setLog=function(status){log_on=status};Report.log=function(msg){if(Report.getLog()===true)if(window.console)console.log(msg)}})();Loader.data_ready_global(function(){Report.configDataSources();Report.convertGlobal();Report.convertStudiesGlobal()});Loader.data_ready(function(){study="repos";Convert.convertFilterTop(study)});Loader.data_ready(function(){Report.convertStudies();$("body").css("cursor","auto");$("html").click(function(e){$(".help").popover("hide")});Convert.activateHelp()});$(document).ready(function(){$.getJSON(Report.getMenuElementsFile(),function(data){Report.setMenuElements(data)}).fail(function(){if(window.console)Report.log("Can't read global config file "+Report.getMenuElementsFile())}).always(function(data){Report.createDataSources();$.getJSON(Report.all_json_file,function(data){if(window.console){Report.log("Loaded all JSON data from "+Report.all_json_file)}Loader.set_all_data(data)}).always(function(data){Loader.data_load()});$("body").css("cursor","progress")})});function resizedw(){if(true){return}Report.convertGlobal();Report.convertStudiesGlobal();Report.convertStudies();Convert.activateHelp()}var resized;$(window).resize(function(){clearTimeout(resized);resized=setTimeout(resizedw,100)});function DataSource(name,basic_metrics){this.top_data_file=this.data_dir+"/"+this.name+"-top.json";this.getTopDataFile=function(){return this.top_data_file};this.getMetrics=function(){return this.basic_metrics};this.setMetrics=function(metrics){this.basic_metrics=metrics};this.setMetricsDefinition=function(metrics){if(metrics===undefined)return;this.setMetrics(metrics)};this.data_file=this.data_dir+"/"+this.name+"-evolutionary.json";this.getDataFile=function(){return this.data_file};this.setDataFile=function(file){this.data_file=file};this.data=null;this.getData=function(){return this.data};function nameSpaceMetrics(plain_metrics,ds){if(plain_metrics instanceof Array)return plain_metrics;var metrics={};if(plain_metrics===null){return metrics}$.each(plain_metrics,function(name,value){var basic_name=name;var aux=name.split("_");if(isNaN(aux[aux.length-1])===false)basic_name=aux.slice(0,aux.length-1).join("_");var ns_basic_name=ds.getName()+"_"+basic_name;var ns_name=ds.getName()+"_"+name;if(ds.getMetrics()[ns_basic_name]===undefined)metrics[name]=value;else metrics[ns_name]=value});return metrics}this.setData=function(load_data,self){if(self===undefined)self=this;self.data=nameSpaceMetrics(load_data,self)};this.demographics_aging_file=this.data_dir+"/"+this.name+"-demographics-aging.json";this.demographics_birth_file=this.data_dir+"/"+this.name+"-demographics-birth.json";this.getDemographicsAgingFile=function(){return this.demographics_aging_file};this.getDemographicsBirthFile=function(){return this.demographics_birth_file};this.demographics_data={};this.getDemographicsData=function(){return this.demographics_data};this.setDemographicsAgingData=function(data,self){if(self===undefined)self=this;self.demographics_data.aging=data};this.setDemographicsBirthData=function(data,self){if(self===undefined)self=this;self.demographics_data.birth=data};this.data_dir="data/json";this.getDataDir=function(){return this.data_dir};this.setDataDir=function(dataDir){this.data_dir=dataDir;this.data_file=dataDir+"/"+this.name+"-evolutionary.json";this.demographics_aging_file=dataDir+"/"+this.name+"-demographics-aging.json";this.demographics_birth_file=dataDir+"/"+this.name+"-demographics-birth.json";this.global_data_file=dataDir+"/"+this.name+"-static.json";this.top_data_file=dataDir+"/"+this.name+"-top.json";this.companies_data_file=dataDir+"/"+this.name+"-companies.json";this.repos_data_file=dataDir+"/"+this.name+"-repos.json";this.countries_data_file=dataDir+"/"+this.name+"-countries.json";this.domains_data_file=dataDir+"/"+this.name+"-domains.json";this.projects_data_file=dataDir+"/"+this.name+"-projects.json";this.time_to_fix_data_file=dataDir+"/"+this.name+"-quantiles-month-time_to_fix_hour.json"};this.global_data_file=this.data_dir+"/"+this.name+"-static.json";this.getGlobalDataFile=function(){return this.global_data_file};this.global_data=null;this.getGlobalData=function(){return this.global_data};this.setGlobalData=function(data,self){if(self===undefined)self=this;var aux=Report.getMenuElements();var active_companies=null;if(aux&&typeof aux.filter_companies!==undefined){active_companies=aux.filter_companies}if(active_companies&&active_companies.length>0&&Object.keys(data).indexOf("companies")>=0){data.companies=active_companies.length}self.global_data=nameSpaceMetrics(data,self)};this.global_top_data=null;this.getGlobalTopData=function(){return this.global_top_data};this.setGlobalTopData=function(data,self){if(self===undefined)self=this;self.global_top_data=data};this.name=name;this.getName=function(){return this.name};this.people_data_file=this.data_dir+"/"+this.name+"-people.json";this.getPeopleDataFile=function(){return this.people_data_file};this.people=null;this.getPeopleData=function(){return this.people};this.setPeopleData=function(people,self){if(self===undefined)self=this;self.people=people};this.time_to_fix_data_file=this.data_dir+"/"+this.name+"-quantiles-month-time_to_fix_hour.json";this.getTimeToFixDataFile=function(){return this.time_to_fix_data_file};this.time_to_fix_data=null;this.getTimeToFixData=function(){return this.time_to_fix_data};this.setTimeToFixData=function(data,self){if(self===undefined)self=this;self.time_to_fix_data=data};this.time_to_attention_data_file=this.data_dir+"/"+this.name+"-quantiles-month-time_to_attention_hour.json";this.getTimeToAttentionDataFile=function(){return this.time_to_attention_data_file};this.time_to_attention_data=null;this.getTimeToAttentionData=function(){return this.time_to_attention_data};this.setTimeToAttentionData=function(data,self){if(self===undefined)self=this;self.time_to_attention_data=data};this.project=null;this.getProject=function(){return this.project};this.setProject=function(project){this.project=project};this.markov_table_data_file=this.data_dir+"/"+this.name+"-markov.json";this.getMarkovTableDataFile=function(){return this.markov_table_data_file};this.markov_table_data=null;this.getMarkovTableData=function(){return this.markov_table_data};this.setMarkovTableData=function(data,self){if(self===undefined)self=this;self.markov_table_data=data};this.companies_data_file=this.data_dir+"/"+this.name+"-companies.json";this.getCompaniesDataFile=function(){return this.companies_data_file};this.companies=null;this.getCompaniesDataFull=function(){return this.companies};this.getCompaniesData=function(){var items=this.companies;if(items instanceof Array===false){if(this.companies!==null){items=this.companies.name}}return items};function filterOutCompaniesArray(com_data){var aux=Report.getMenuElements(),active_companies=null,result=[];if(aux&&typeof aux.filter_companies!==undefined){active_companies=aux.filter_companies}if(active_companies&&active_companies.length>0){$.each(com_data,function(pos,name){if(active_companies.indexOf(name)>=0){result[result.length]=name}})}else{result=com_data}return result}function filterOutCompanies(com_data){var aux=Report.getMenuElements();var active_companies=null;if(aux&&typeof aux.filter_companies!==undefined){active_companies=aux.filter_companies}if(active_companies&&active_companies.length>0){var keys=Object.keys(com_data);var positions=[];$.each(com_data.name,function(pos,name){if(active_companies.indexOf(name)>=0){positions[positions.length]=pos}});var new_obj={};$.each(keys,function(id,k){new_obj[k]=[];$.each(positions,function(subid,pos){var l=new_obj[k].length;new_obj[k][l]=com_data[k][pos]})});com_data=new_obj}return com_data}this.setCompaniesData=function(companies,self){if(companies===null)companies=[];if(self===undefined)self=this;if(Array.isArray(companies)){self.companies=filterOutCompaniesArray(companies)}else if(typeof companies==="object"){self.companies=filterOutCompanies(companies)}};this.companies_metrics_data={};this.addCompanyMetricsData=function(company,data,self){if(self===undefined)self=this;self.companies_metrics_data[company]=nameSpaceMetrics(data,self)};this.getCompaniesMetricsData=function(){return this.companies_metrics_data};this.companies_global_data={};this.addCompanyGlobalData=function(company,data,self){if(self===undefined)self=this;self.companies_global_data[company]=nameSpaceMetrics(data,self)};this.getCompaniesGlobalData=function(){return this.companies_global_data};this.companies_top_data={};this.addCompanyTopData=function(company,data,self){if(self===undefined)self=this;if(self.companies_top_data[company]===undefined)self.companies_top_data[company]={};self.companies_top_data[company]=data};this.getCompaniesTopData=function(){return this.companies_top_data};this.setCompaniesTopData=function(data,self){if(self===undefined)self=this;self.companies_top_data=data};this.repos_data_file=this.data_dir+"/"+this.name+"-repos.json";this.getReposDataFile=function(){return this.repos_data_file};this.repos=null;this.getReposDataFull=function(){return this.repos};this.getReposData=function(){var items=this.repos;if(items instanceof Array===false){if(this.repos!==null){items=this.repos.name}}return items};this.setReposData=function(repos,self){if(self===undefined)self=this;self.repos=repos;if(self.getName()!=="its")return;repos_names=[];if(repos instanceof Array===true){self.repos={};self.repos.name=repos}var filtered_repos=[];for(var i=0;i=0){if(self.getName()==="mls"){var mls_name=MLS.displayMLSListName(value);data[mls_name]=self.getReposMetricsData()[value]}else{data[value]=self.getReposMetricsData()[value]}}})}else{data=this.getData()}if(convert){data=DataProcess.convert(data,convert,metric_ids);if(convert==="divide"){mlabel=this.getMetrics()[metric_ids[0]].name+"/";mlabel+=this.getMetrics()[metric_ids[1]].name;metric_ids=["divide"];this.getMetrics().divide={name:mlabel}}if(convert==="substract"){mlabel=this.getMetrics()[metric_ids[0]].name+"-";mlabel+=this.getMetrics()[metric_ids[1]].name;metric_ids=["substract"];this.getMetrics().substract={name:mlabel +}}}Viz.displayMetricsEvol(this,metric_ids,data,div_target,config,repositories)};this.isPageDisplayed=function(visited,linked,total,displayed){var window=Math.floor((displayed-3)/2);var lowest_barrier=visited-window;var highest_barrier=visited+window;if(linked===1||linked===total||linked==visited){return true}else if(linked>=lowest_barrier&&linkedvisited){return true}else{return false}};this.displayItemsNav=function(div_nav,type,page_str,order_by){var page=parseInt(page_str,null);if(isNaN(page))page=1;var items=null;var title="";var total=0;var displayed_pages=5;if(type==="companies"){items=this.getCompaniesData();title="List of companies"}else if(type==="repos"){items=this.getReposData();if(order_by)items=DataProcess.sortGlobal(this,order_by,type)}else if(type==="countries"){items=this.getCountriesData()}else if(type==="domains"){items=this.getDomainsData()}else if(type==="projects"){items=this.getProjectsData()}else{return}total=items.length;var nav="";var psize=Report.getPageSize();if(page){nav+=""}if(Report.getPageSize()>10)$.each(items,function(id,item){var label=Report.cleanLabel(item);nav+=""+label+" "});$("#"+div_nav).append(nav)};this.displayCompaniesLinks=function(div_links,limit,sort_metric){var sorted_companies=DataProcess.sortGlobal(this,sort_metric,"companies");var links="";var i=0;$.each(sorted_companies,function(id,company){links+='| ";if(i++>=limit-1)return false});$("#"+div_links).append(links)};this.displayCompaniesList=function(metrics,div_id,config_metric,sort_metric,page,show_links,start,end,convert){this.displaySubReportList("companies",metrics,div_id,config_metric,sort_metric,page,show_links,start,end,convert)};this.displayReposList=function(metrics,div_id,config_metric,sort_metric,page,show_links,start,end,convert,ds_realname){this.displaySubReportList("repos",metrics,div_id,config_metric,sort_metric,page,show_links,start,end,convert,ds_realname)};this.displayCountriesList=function(metrics,div_id,config_metric,sort_metric,page,show_links,start,end,convert){this.displaySubReportList("countries",metrics,div_id,config_metric,sort_metric,page,show_links,start,end,convert)};this.displayDomainsList=function(metrics,div_id,config_metric,sort_metric,page,show_links,start,end,convert){this.displaySubReportList("domains",metrics,div_id,config_metric,sort_metric,page,show_links,start,end,convert)};this.displayProjectsList=function(metrics,div_id,config_metric,sort_metric,page,show_links,start,end,convert){this.displaySubReportList("projects",metrics,div_id,config_metric,sort_metric,page,show_links,start,end,convert)};this.displaySubReportList=function(report,metrics,div_id,config_metric,sort_metric,page_str,show_links,start,end,convert,ds_realname){var page=parseInt(page_str,null);if(isNaN(page))page=1;var list="";var cont=(page-1)*Report.getPageSize()+1;var ds=this;var data=null,sorted=null;if(show_links===undefined)show_links=true;if(report==="companies"){data=this.getCompaniesMetricsData();sorted=DataProcess.sortGlobal(this,sort_metric,report)}else if(report==="repos"){data=this.getReposMetricsData();sorted=DataProcess.sortGlobal(this,sort_metric,report)}else if(report==="countries"){data=this.getCountriesMetricsData();sorted=DataProcess.sortGlobal(this,sort_metric,report)}else if(report==="domains"){data=this.getDomainsMetricsData();sorted=DataProcess.sortGlobal(this,sort_metric,report)}else if(report==="projects"){data=this.getProjectsMetricsData();sorted=DataProcess.sortGlobal(this,sort_metric,report)}else return;sorted=DataProcess.paginate(sorted,page);list+='';list+="";$.each(metrics,function(id,metric){if(ds.getMetrics()[metric]){title=ds.getMetrics()[metric].name;list+=""}else{list+=""}});list+="";$.each(sorted,function(id,item){list+="";var width=Math.floor(10/metrics.length);$.each(metrics,function(id,metric){var mywidth=width;list+="";rows_html+="";rows_html+=""}return rows_html}function composeTopRowsThreads(threads_data,limit,threads_links){var rows_html="";for(var i=0;i";rows_html+="'}else{rows_html+=""}rows_html+="";rows_html+="";rows_html+=""}return rows_html}function composeTopRowsPeople(people_data,limit,people_links,var_names){var rows_html="";if(people_data[var_names.id]===undefined){return rows_html}for(var j=0;j";rows_html+="";rows_html+="";if(people_data.organization!==undefined){org=people_data.organization[j];if(org===null){org="-"}rows_html+=""}rows_html+=""}return rows_html}function composeTopTabs(periods,metric,data,ds_name){var tabs_html="";var first=true;tabs_html+='";return tabs_html}function composeTitle(metric,ds_name,tabs,desc_metrics,selected_period){var key=ds_name+"_"+metric;var desc="";var title="";if(key in desc_metrics){desc=desc_metrics[key].desc;desc=desc.toLowerCase()}if(selected_period===""){data_period_formatted="Complete history"}else if(selected_period==="last month"){data_period_formatted="Last 30 days"}else if(selected_period==="last year"){data_period_formatted="Last 365 days"}if(Utils.isReleasePage())data_period_formatted="Release history";if(tabs===true){title+="
    Top "+desc+"
    "}else{title+='
    '+data_period_formatted+"
    "}return title}String.prototype.capitalize=function(){return this.replace(/(?:^|\s)\S/g,function(a){return a.toUpperCase()})};function displayTopMetric(div_id,metric,metric_period,history,graph,titles,limit,people_links){var top_metric_id=metric.name;if(!history||$.isEmptyObject(history))return;var metric_id=metric.action;if(limit&&history[metric_id].length"}new_div+=table;div=$("#"+div_id);div.append(new_div);if(graph){var labels=history[doer];var data=history[metric_id];if(limit){labels=[];data=[];for(var i=0;i';html+="";html+="";$.each(dsources,function(key,ds){if(ds.getName()==="people")return;var gdata=ds.getGlobalData();var ds_name=ds.getTitle();if(ds_name===undefined){ds_name="-"}var last_date=gdata.last_date;if(last_date===undefined&&ds_name!="Meetup events"){return}if(ds_name==="Meetup events"&&last_date===undefined){last_date="-"}var first_date=gdata.first_date;if(first_date===undefined){first_date="-"}var type=gdata.type;var repos=ds.getReposData();html+="";html+="";html+=""});html+="
    "+title+""+metric+"
    ";list+="#"+cont+" ";cont++;var addURL=null;if(Report.addDataDir())addURL=Report.addDataDir();if(show_links){var release_var="";if(Utils.isReleasePage())release_var="&release="+$.urlParam("release");if(report==="companies"){list+=""}else if(report==="repos"){list+=""}else if(report==="countries"){list+=""}else if(report==="domains"){list+=""}else if(report==="projects"){list+=""}}list+="";list+=Report.cleanLabel(item);list+="";if(show_links)list+="";list+="";list+="
    ";if(data.companies_2006)html+="Companies in 2006: "+data.companies_2006+"
    ";if(data.companies_2009)html+="Companies in 2009: "+data.companies_2009+"
    ";if(data.companies_2012)html+="Companies in 2012: "+data.companies_2012+"
    ";$("#"+divid).append(html)};this.getSummaryLabels=function(){};this.getLabelForRepository=function(){return"repository"};this.getLabelForRepositories=function(){return"repositories"};this.displaySummary=function(report,divid,item,ds,ds_realname){if(!item)item="";var html="
    "+ds.getTitle()+"
    ";var id_label=this.getSummaryLabels();var global_data=null;if(report==="companies")global_data=ds.getCompaniesGlobalData()[item];else if(report==="countries")global_data=ds.getCountriesGlobalData()[item];else if(report==="repositories")global_data=ds.getReposGlobalData()[item];else if(report==="domains")global_data=ds.getDomainsGlobalData()[item];else if(report==="projects")global_data=ds.getProjectsGlobalData()[item];else global_data=ds.getGlobalData();if(!global_data)return;html=HTMLComposer.repositorySummaryTable(ds,global_data,id_label,ds_realname);$("#"+divid).append(html)};this.displayReposSummary=function(divid,ds){var html="";var data=ds.getGlobalData();html+="Total repositories: "+data[ds.getName()+"_repositories"]+"
    ";$("#"+divid).append(html)};this.displayCountriesSummary=function(divid,ds){var html="";var data=ds.getGlobalData();html+="Total countries: "+data[ds.getName()+"_countries"]+"
    ";$("#"+divid).append(html)};this.displayDomainsSummary=function(divid,ds){var html="";var data=ds.getGlobalData();html+="Total domains: "+data.domains+"
    ";$("#"+divid).append(html)};this.displayProjectsSummary=function(divid,ds){var html="";var data=ds.getGlobalData();html+="Total projects: "+data.projects+"
    ";$("#"+divid).append(html)};this.displayDemographics=function(divid,period){var data=this.getDemographicsData();Viz.displayDemographicsChart(divid,data,period)};this.displayTimeToAttention=function(div_id,column,labels,title){labels=true;title="Time to Attention "+column;var data=this.getTimeToAttentionData();if(data instanceof Array)return;Viz.displayTimeToAttention(div_id,data,column,labels,title)};this.displayTimeToFix=function(div_id,column,labels,title){labels=true;title="Time to Fix "+column;var data=this.getTimeToFixData();if(data instanceof Array)return;Viz.displayTimeToFix(div_id,this.getTimeToFixData(),column,labels,title)};this.displayMarkovTable=function(div_id,title){var data=this.getMarkovTableData();if(data===undefined){Report.log("No Markov data available");return}Viz.displayMarkovTable(div_id,data,title)};this.displayTop=function(div,all,show_metric,period,period_all,graph,limit,people_links,threads_links,repository){if(all===undefined)all=true;var titles=null;Viz.displayTop(div,this,all,show_metric,period,period_all,null,null,limit,people_links,threads_links,repository)};this.displayTopCompany=function(company,div,metric_id,period,titles,height,people_links){var data=this.getCompaniesTopData()[company];if(data===undefined)return;var metric=this.getMetrics()[metric_id];Viz.displayTopCompany(this,company,data,div,metric_id,period,titles,height,people_links)};this.displayTopRepo=function(repo,div,metric_id,period,titles,height,people_links){var data=this.getRepositoriesTopData()[repo];if(data===undefined)return;var metric=this.getMetrics()[metric_id];Viz.displayTopRepo(this,repo,data,div,metric_id,period,titles,height,people_links)};this.displayTopGlobal=function(div,metric,period,titles){Viz.displayTopGlobal(div,this,metric,period,titles)};this.envisionEvo=function(div_id,history,relative,legend_show,summary_graph){config=Report.getVizConfig();var options=Viz.getEnvisionOptions(div_id,history,this.getName(),Report.getVizConfig()[this.getName()+"_hide"],summary_graph);options.legend_show=legend_show;if(relative)DataProcess.addRelativeValues(options.data,this.getMainMetric());new envision.templates.Envision_Report(options,[this])};this.displayEnvision=function(divid,relative,legend_show,summary_graph){var projects_full_data=Report.getProjectsDataSources();this.envisionEvo(divid,projects_full_data,relative,legend_show,summary_graph)}}if(Viz===undefined)var Viz={};(function(){var bitergiaColor="#ffa500";Viz.displayTop=displayTop;Viz.displayTopCompany=displayTopCompany;Viz.displayTopRepo=displayTopRepo;Viz.displayTopGlobal=displayTopGlobal;Viz.displayBasicChart=displayBasicChart;Viz.displayMetricCompanies=displayMetricCompanies;Viz.displayMetricSubReportStatic=displayMetricSubReportStatic;Viz.displayMetricsCompany=displayMetricsCompany;Viz.displayMetricsDomain=displayMetricsDomain;Viz.displayMetricsProject=displayMetricsProject;Viz.displayMetricsPeople=displayMetricsPeople;Viz.displayMetricsRepo=displayMetricsRepo;Viz.displayMetricRepos=displayMetricRepos;Viz.displayMetricsCountry=displayMetricsCountry;Viz.displayMetricDomains=displayMetricDomains;Viz.displayMetricProjects=displayMetricProjects;Viz.displayMetricsEvol=displayMetricsEvol;Viz.displayBubbles=displayBubbles;Viz.displayDemographicsChart=displayDemographicsChart;Viz.displayEnvisionAll=displayEnvisionAll;Viz.displayTimeToFix=displayTimeToFix;Viz.displayTimeToAttention=displayTimeToAttention;Viz.displayMetricSubReportLines=displayMetricSubReportLines;Viz.displayRadarActivity=displayRadarActivity;Viz.displayRadarCommunity=displayRadarCommunity;Viz.displayTreeMap=displayTreeMap;Viz.displayMarkovTable=displayMarkovTable;Viz.displayDataSourcesTable=displayDataSourcesTable;Viz.getEnvisionOptions=getEnvisionOptions;Viz.checkBasicConfig=checkBasicConfig;Viz.displayTimeZone=displayTimeZone;function findMetricDoer(history,metric_id){var doer="";$.each(Report.getAllMetrics(),function(name,metric){if(metric.action===metric_id){doer=metric.column;return false}});return doer}function displayMarkovTable(div_id,data,title){var html="

    "+title+"

    ";var table='';table+="";table+="";$.each(data,function(status,val){table+=""});table+="";$.each(data,function(status,status_data){table+="";for(var k=0;k"+status_data.issue[k];table+=" ("+Math.round(status_data.f[k]*100)+"%)";table+=""}table+=""});table+="
    STATUS"+status+"
    "+status+"
    ";html+=table;div=$("#"+div_id);div.append(html);return}function translate(labels,l){if(labels.hasOwnProperty(l)){return labels[l]}else{return l}}function getTopVarsFromMetric(metric,ds_name){var var_names={};var_names.id="id";if(metric==="senders"&&(ds_name==="mls"||ds_name==="irc")){var_names.name="senders";var_names.action="sent"}if(metric==="authors"&&ds_name==="scm"){var_names.name="authors";var_names.action="commits"}if(metric==="closers"&&(ds_name==="its"||ds_name==="its_1")){var_names.name="closers";var_names.action="closed"}if(ds_name==="scr"){if(metric==="mergers"){var_names.name="mergers";var_names.action="merged"}if(metric==="openers"){var_names.name="openers";var_names.action="opened"}if(metric==="reviewers"){var_names.name="reviewers";var_names.action="reviews"}if(metric==="active_core_reviewers"){var_names.name="identifier";var_names.action="reviews"}if(metric==="participants"){var_names.name="identifier";var_names.action="events"}}if(ds_name==="downloads"){if(metric==="ips"){var_names.name="ips";var_names.action="downloads"}if(metric==="packages"){var_names.name="packages";var_names.action="downloads"}}if(ds_name==="mediawiki"){if(metric==="authors"){var_names.name="authors";var_names.action="reviews"}}if(ds_name==="qaforums"){if(metric==="senders"||metric==="asenders"||metric==="qsenders"){var_names.name="senders";var_names.action="sent"}else if(metric==="participants"){var_names.name="name";var_names.action="messages_sent"}}if(ds_name==="releases"){if(metric==="authors"){var_names.name="username";var_names.action="releases"}}return var_names}function getSortedPeriods(){return["last month","last year",""]}function composeTopRowsDownloads(dl_data,limit,var_names){var rows_html="";for(var j=0;j
    "+(j+1)+"";rows_html+=dl_data[var_names.name][j];rows_html+=""+metric_value+"
    #"+(i+1)+"";if(threads_links===true){var url="http://www.google.com/search?output=search&q=X&btnI=1";if(Report.getThreadsSite()!==undefined){url="http://www.google.com/search?output=search&q=X%20site%3AY&btnI=1";url=url.replace(/Y/g,Report.getThreadsSite())}else if(threads_data.hasOwnProperty("url")&&threads_data.url[i].length>0){url="http://www.google.com/search?output=search&q=X%20site%3AY&btnI=1";url=url.replace(/Y/g,threads_data.url[i])}url=url.replace(/X/g,threads_data.subject[i]);rows_html+="";rows_html+='';rows_html+=threads_data.subject[i]+"";rows_html+=' "+threads_data.subject[i]+""+threads_data.initiator_name[i]+""+threads_data.length[i]+"
    "+(j+1)+"";if(people_links){rows_html+='"}else{rows_html+=DataProcess.hideEmail(people_data[var_names.name][j])}rows_html+=""+metric_value+""+org+"
    Data SourceFromTo (Updated on)
    ";html+='";html+='
    ';html+='
    ';var mapped=repos.map(function(el,i){return{index:i,value:el.toLowerCase()}});mapped.sort(function(a,b){return+(a.value>b.value)||+(a.value===b.value)-1});var result=mapped.map(function(el){return repos[el.index]});var empty_val=0;result.forEach(function(value,index){if(value!=""){if(ds_name="Meetup events"){html+=''+(index+1-empty_val)+". "+value+"
    "}else{html+=''+(index+1-empty_val)+". "+value+"
    "}}else{empty_val+=1}});html+="
    ";html+="
    ";html+="
    "+first_date+""+last_date+"
    ";$(div).append(html)})}function showHelp(div_id,metrics,custom_help){var all_metrics=Report.getAllMetrics();var help='"+value.name+": "+value.desc+"
    ";return false}};for(var i=0;iDescription: "+custom_help}help+='data-content="'+content+'" data-html="true">';help+='
    ';var old_help=$("#"+div_id).prev()[0];if(old_help&&old_help.className==="help")$("#"+div_id).prev().empty();$("#"+div_id).before(help)}function displayMetricsLines(div_id,metrics,history,title,config){if(!(config&&config.help===false))showHelp(div_id,metrics,config.custom_help);var lines_data=[];if(config.remove_last_point)history=DataProcess.revomeLastPoint(history);if(config.frame_time)history=DataProcess.frameTime(history,metrics);if(config.start_time)history=DataProcess.filterDates(config.start_time,config.end_time,history);$.each(metrics,function(id,metric){if(!history[metric])return;var mdata=[];$.each(history[metric],function(i,value){mdata[i]=[history.id[i],history[metric][i]]});var label=metric;if(Report.getAllMetrics()[metric])label=Report.getAllMetrics()[metric].name;lines_data.push({label:label,data:mdata})});displayDSLines(div_id,history,lines_data,title,config)}function displayMetricsLinesRepos(div_id,metrics,history,title,config,repositories){if(!(config&&config.help===false))showHelp(div_id,metrics,config.custom_help);var lines_data=[];var metric=metrics[0];var aux={};$.each(history,function(item,data){if(data===undefined)return false;if(data[metric]===undefined)return false;if(config.remove_last_point)data=DataProcess.revomeLastPoint(data);if(config.frame_time)data=DataProcess.frameTime(data,[metric]);if(config.start_time)data=DataProcess.filterDates(config.start_time,config.end_time,data);var mdata=[[],[]];$.each(data[metric],function(i,value){mdata[i]=[data.id[i],data[metric][i]]});lines_data.push({label:item,data:mdata});aux=data});displayDSLines(div_id,aux,lines_data,title,config)}function displayMetricSubReportLines(div_id,metric,items,title,config,start,end,convert,order){var lines_data=[];var history={};$.each(items,function(item,data){if(data===undefined)return false;if(data[metric]===undefined)return false;if(convert)data=DataProcess.convert(data,convert,metric);if(start)data=DataProcess.filterDates(start,end,data);if(config.frame_time)data=DataProcess.frameTime(data,[metric]);var cdata=[[],[]];for(var i=0;i1){if(lines_data[i].label!==undefined)company_name=lines_data[i].label;label+=lines_data[i].label+":"}label+=""+Report.formatValue(value)+"";if(company_name){var pending_metric="review_time_pending_upload_ReviewsWaitingForReviewer_reviews";var pending;if(companies[company_name][pending_metric]!==undefined){pending=companies[company_name][pending_metric][o.index]}else{pending=companies[company_name]["scr_"+pending_metric][o.index]}label+="("+pending+")"}label+="
    "}return label};function getConfLinesChart(title,legend_div,history,lines_data,mouse_tracker_fn){var config={subtitle:title,legend:{show:true,container:legend_div},xaxis:{minorTickFreq:4,mode:"time",timeUnit:"second",timeFormat:"%b %y",margin:true},yaxis:{min:null,noTicks:2,autoscale:true},grid:{verticalLines:false,color:"#000000",outlineWidth:1,outline:"s"},mouse:{container:legend_div,track:true,trackY:false,relative:true,position:"ne",trackFormatter:function(o){var label=history.date[parseInt(o.index,10)];if(label===undefined)label="";else label+="
    ";for(var i=0;i1){if(lines_data[i].label!==undefined){value_name=abbreviateLabel(lines_data[i].label);label+=value_name+":"}}label+=""+Report.formatValue(value)+"
    "}return label}},selection:{mode:"x",fps:10},shadowSize:4};if(mouse_tracker_fn){Viz._history=history;Viz._lines_data=lines_data;config.mouse.trackFormatter=Viz[mouse_tracker_fn]}return config}function dropLastLineValue(history,lines_data){if(lines_data.length===0)return lines_data;if(lines_data.length>1){for(var j=0;jb[1]||b[1]===undefined?1:-1});return bi_array}function getMax(multiple_array,from_unixstamp,to_unixstamp){from_unixstamp=Math.round(from_unixstamp);to_unixstamp=Math.round(to_unixstamp);var narrays=multiple_array.length;var aux_array=[];for(var i=0;i0;z--){var aux_value=multiple_array[i].data[z][0];var cond=aux_valueto_unixstamp;if(cond){multiple_array[i].data.splice(z,1)}}}var res=[];for(i=0;i=18){if(string.indexOf(" ")>0&&string.split(" ").length==2){var slices=string.split(" ");return slices[0]+"
     "+slices[1]}else{var l=string.length;return string.slice(0,4)+"..."+string.slice(string.length-12)}}else{return string}}function displayDSLinesStacked(div_id,history,lines_data,title,config_metric){var container=document.getElementById(div_id);var legend_div=null;if(config_metric&&config_metric.legend&&config_metric.legend.container)legend_div=$("#"+config_metric.legend.container); +var config={subtitle:title,legend:{show:true,container:legend_div},xaxis:{minorTickFreq:4,tickFormatter:function(x){var index=null;for(var i=0;i1){if(lines_data[i].label!==undefined)label+=abbreviateLabel(lines_data[i].label)+":"}label+=Report.formatValue(value)+"
    "}return label}}};if(config_metric){if(!config_metric.show_title)config.title="";if("show_legend"in config_metric){if(config_metric.show_legend===true)config.legend.show=true;else config.legend.show=false}if(config_metric.lines&&config_metric.lines.stacked)config.lines={stacked:true,fill:true,fillOpacity:1,fillBorder:true,lineWidth:.01};if(!config_metric.show_labels){config.xaxis.showLabels=false;config.yaxis.showLabels=false}if(config_metric.show_grid===false){config.grid.verticalLines=false;config.grid.horizontalLines=false;config.grid.outlineWidth=0}if(config_metric.show_mouse===false){config.mouse.track=false}if(config_metric.graph==="bars"){config.bars={show:true}}if(config_metric.light_style===true){config.grid.color="#ccc";config.legend.show=false}if(config_metric.custom_title){config.subtitle=config_metric.custom_title}}var showLastPoint=false;if(config_metric.graph!=="bars"&&lines_data.length===1&&lines_data[0].data[0][0]===0){showLastPoint=true}if(showLastPoint){lines_data=lastLineValueToPoint(history,lines_data);var next_id=history.id[history.id.length-1]+1;lines_data[0].data.push([next_id,undefined]);lines_data[1].data.push([next_id,undefined]);history.date.push("");history.id.push(next_id)}graph=Flotr.draw(container,lines_data,config);if(showLastPoint){if(history.date)history.date.pop();if(history.id)history.id.pop()}}function guessBarWidth(lines_data,history){var gap_size;var data_sets=lines_data.length;gap_size=parseInt(history.unixtime[1],10)-parseInt(history.unixtime[0],10);return gap_size/(data_sets+1)}function timeToUnixTime(lines_data,history,bars_flag,bar_width){var number_lines=lines_data.length;var data_length=lines_data[0].data.length;for(var z=0;z1)config.legend.show=true;lines_data=timeToUnixTime(lines_data,history,bars_flag,bar_width);var showLastPoint=false;if(Utils.isReleasePage()===false){if(config_metric.graph!=="bars"&&lines_data.length===1){showLastPoint=true}if(showLastPoint){lines_data=lastLineValueToPoint(history,lines_data);addEmptyValue(lines_data)}else if(!showLastPoint&&lines_data.length>1){dropLastLineValue(history,lines_data)}}function drawGraph(opts){var o=Flotr._.extend(Flotr._.clone(config),opts||{});return Flotr.draw(container,lines_data,o)}graph=drawGraph();Flotr.EventAdapter.observe(container,"flotr:select",function(area){var zoom_options={xaxis:{minorTickFreq:4,mode:"time",timeUnit:"second",timeFormat:"%b %y",min:area.x1,max:area.x2},yaxis:{min:area.y1,autoscale:true},grid:{verticalLines:true,color:"#000000",outlineWidth:1,outline:"s"}};zoom_options.subtitle=composeRangeText(config.subtitle,area.xfirst,area.xsecond);var new_lines_data_object=JSON.parse(JSON.stringify(lines_data));var max_value=getMax(new_lines_data_object,area.x1,area.x2);zoom_options.yaxis.max=max_value+max_value*.2;graph=drawGraph(zoom_options)});Flotr.EventAdapter.observe(container,"flotr:click",function(){drawGraph()});$(window).resize(function(){drawGraph()})}function displayTimeZone(divid,labels,data,metric_name){var pretty_mname=metric_name.charAt(0).toUpperCase()+metric_name.slice(1);var title=pretty_mname+" by Time Zone";var container=document.getElementById(divid);var chart_data=[],i;var legend_div=null;for(i=0;i0)label+="+"+value;else label+=value;return label},color:"#000000",tickDecimals:0},yaxis:{showLabels:true,min:0,noTicks:2,color:"#000000"},mouse:{track:true,trackY:false,relative:true,position:"n",trackDecimals:0,trackFormatter:function(tuple){var label="UTC ";if(tuple.x>0)label+="+"+tuple.x;else label+=tuple.x;pretty_name=metric_name.charAt(0).toUpperCase()+metric_name.slice(1);label+="
    "+pretty_name+": "+tuple.y+"";return label}},legend:{show:false},bars:{show:true,color:"#008080",fillColor:"#008080",fillOpacity:.6}};graph=Flotr.draw(container,chart_data,config);$(window).resize(function(){graph=Flotr.draw(container,chart_data,config)})}function displayBasicChart(divid,labels,data,graph,title,config_metric,rotate,fixColor,yformatter){var horizontal=false;if(rotate)horizontal=true;var container=document.getElementById(divid);var legend_div=null;if(config_metric&&config_metric.legend&&config_metric.legend.container)legend_div=$("#"+config_metric.legend.container);var chart_data=[],i;var label="";if(!horizontal){for(i=0;ilseries)lseries=data[1].length;var horizontal=false;if(rotate)horizontal=true;var container=document.getElementById(divid);var legend_div=null;if(config_metric&&config_metric.legend&&config_metric.legend.container)legend_div=$("#"+config_metric.legend.container);var serie1=[],i,serie2=[],data_viz=[];for(i=0;ii)val1=data[0][i];else val1=undefined;if(data[1].length>i)val2=data[1][i];else val2=undefined;if(!horizontal){serie1.push([i-bar_width/2,val1]);serie2.push([i+bar_width/2,val2])}else{serie1.push([val1,i-bar_width/2]);serie2.push([val2,i+bar_width/2])}}data_viz=[{data:serie1,label:labels[0]},{data:serie2,label:labels[1]}];var config={title:title,bars:{show:true,horizontal:horizontal,barWidth:bar_width},grid:{verticalLines:false,horizontalLines:false,outlineWidth:0},xaxis:{showLabels:false,min:0},yaxis:{showLabels:true,min:0},mouse:{container:legend_div,track:true,trackFormatter:function(o){var index;var i="x";if(horizontal)i="y";var point=parseFloat(o[i],1);var point_down=Math.round((point-.2)*10)/10;var point_up=Math.round((point+.2)*10)/10;if(point_down===parseInt(point,10))index=point_down;else index=point_up;var years=index;if(period_year)years=index*period_year;var label=years+" years: ";var val1,val2;if(serie1[index]===undefined)val1=0;else val1=parseInt(serie1[index][0],10);if(isNaN(val1))val1=0;if(serie2[index]===undefined)val2=0;else val2=parseInt(serie2[index][0],10);if(isNaN(val2))val2=0;label+=val1+" "+labels[0];label+=" , ";label+=val2+" "+labels[1];label+=" ("+parseInt(val1/val2*100,10)+"% )";return label}},legend:{show:true,position:"ne",backgroundColor:"#D2E8FF",container:legend_div}};if(config_metric){if(!config_metric.show_title)config.title="";if(config_metric.show_legend)config.legend.show=true}if(config_metric&&config_metric.show_legend!==false)config.legend={show:true,position:"ne",container:legend_div};config.grid.horizontalLines=true;config.yaxis={showLabels:true,min:0};if(yformatter){config.yaxis={showLabels:true,min:0,tickFormatter:yformatter}}if(config_metric&&config_metric.xaxis)config.xaxis={showLabels:config_metric.xaxis,min:0};graph=Flotr.draw(container,data_viz,config)}function displayBubbles(divid,metric1,metric2,radius){var container=document.getElementById(divid);var DS=Report.getMetricDS(metric1)[0];var DS1=Report.getMetricDS(metric2)[0];var bdata=[];if(DS!=DS1){Report.log("Metrics for bubbles have different data sources");return}var full_data=[];var projects=[];$.each(Report.getDataSources(),function(index,ds){if(ds.getName()===DS.getName()){full_data.push(ds.getData());projects.push(ds.getProject())}});var dates=[[],[]];dates=[full_data[0].id,full_data[0].date];for(var i=0;imax){max=value;max=parseInt(max*(1+border),10)}}}(function(){var x=[data,ticks]})();graph=Flotr.draw(container,data,{radar:{show:true},mouse:{track:true,trackFormatter:function(o){var value="";for(var i=0;i"}return value}},grid:{circular:true,minorHorizontalLines:true},yaxis:{min:0,max:max,minorTickFreq:1},xaxis:{ticks:ticks}})}function displayRadar(div_id,metrics){var data=[],ticks=[];var radar_data=[];var projects=[];var i=0,j=0;for(i=0;i";for(var metric in basic_metrics){if(history[metric]===undefined)continue;value+=history[metric][index]+" "+metric+" , "}return value};return options};function getEnvisionOptions(div_id,projects_data,ds_name,hide,summary_graph){var basic_metrics=null,main_metric="",summary_data=[[],[]];if(ds_name){$.each(Report.getDataSources(),function(i,DS){if(DS.getName()===ds_name){basic_metrics=DS.getMetrics();return false}})}else basic_metrics=Report.getAllMetrics();$.each(Report.getDataSources(),function(i,DS){main_metric=DS.getMainMetric();if(ds_name===null&&DS.getName()==="scm"||ds_name&&DS.getName()==ds_name){summary_data=[DS.getData().id,DS.getData()[main_metric]];if(summary_graph===false)summary_data=[DS.getData().id,[]];return false}});var dates=[[],[]];$.each(projects_data,function(project,data){$.each(data,function(index,DS){if(ds_name&&ds_name!==DS.getName())return;dates=DataProcess.fillDates(dates,[DS.getData().id,DS.getData().date])})});var firstMonth=dates[0][0],container=document.getElementById(div_id),options;var markers=Report.getMarkers();options={container:container,xTickFormatter:function(index){var label=dates[1][index-firstMonth];if(label==="0")label="";return label},yTickFormatter:function(n){return n+""},selection:{data:{x:{min:dates[0][0],max:dates[0][dates[0].length-1]}}}};options.data={summary:DataProcess.fillHistory(dates[0],summary_data),markers:markers,dates:dates[1],envision_hide:hide,main_metric:main_metric};var project=null;var buildProjectInfo=function(index,ds){var data=ds.getData();if(data[metric]===undefined)return;if(options.data[metric]===undefined)options.data[metric]=[];var full_data=DataProcess.fillHistory(dates[0],[data.id,data[metric]]);if(metric===main_metric){options.data[metric].push({label:project,data:full_data});if(data[metric+"_relative"]===undefined)return;if(options.data[metric+"_relative"]===undefined)options.data[metric+"_relative"]=[];full_data=DataProcess.fillHistory(dates[0],[data.id,data[metric+"_relative"]]);options.data[metric+"_relative"].push({label:project,data:full_data})}else{options.data[metric].push({label:project,data:full_data})}};var buildProjectsInfo=function(name,pdata){project=name;$.each(pdata,buildProjectInfo)};for(var metric in basic_metrics){$.each(projects_data,buildProjectsInfo)}options.trackFormatter=function(o){var sdata=o.series.data,index=sdata[o.index][0]-firstMonth;var project_metrics={};var projects=Report.getProjectsList();for(var j=0;j";for(var metric in basic_metrics){if(options.data[metric]===undefined)continue;if($.inArray(metric,options.data.envision_hide)>-1)continue;for(j=0;j"+dates[1][index]+"";value+="";if(projects.length>1)value+="";for(metric in basic_metrics){if(options.data[metric]===undefined)continue;if($.inArray(metric,options.data.envision_hide)>-1)continue;value+=""+basic_metrics[metric].name+""}value+="";$.each(project_metrics,function(project,metrics){var row="";for(var metric in basic_metrics){if(options.data[metric]===undefined)continue;if($.inArray(metric,options.data.envision_hide)>-1)continue;mvalue=project_metrics[project][metric];if(mvalue===undefined)mvalue="n/a";row+=""+mvalue+""}if(projects.length>1)row=""+project+""+row;row+="";value+=row});value+="";return value};return options}function checkBasicConfig(config){if(config===undefined)config={};if(config.show_desc===undefined)config.show_desc=true;if(config.show_title===undefined)config.show_title=true;if(config.show_labels===undefined)config.show_labels=true;return config}function getMetricFriendlyName(metrics){desc_metrics=Report.getAllMetrics();var title="";for(var i=0;i1){list_name=list_name_tokens[list_name_tokens.length-1];if(list_name==="")list_name=list_name_tokens[list_name_tokens.length-2]}else{list_name=listinfo.replace("<","");list_name=list_name.replace(">","");list_name_tokens=list_name.split(".");list_name=list_name_tokens[0]}return list_name};function getUserLists(){var form=document.getElementById("form_mls_selector");var lists=[];for(var i=0;i-1)continue;file_messages=this.getDataDir()+"/mls-";file_messages+=l;file_messages+="-evolutionary.json";displayBasicList(div_id,l,file_messages,config_metric)}};this.getTitle=function(){return"Mailing Lists"};function displayBasicList(div_id,l,mls_file,config_metric){var config=Viz.checkBasicConfig(config_metric);for(var id in basic_metrics){var metric=basic_metrics[id];var title="";if(config.show_title)title=metric.name;if($.inArray(metric.column,Report.getConfig().mls_hide)>-1)continue;var new_div="
    ";new_div+="

    "+metric.name+" "+MLS.displayMLSListName(l)+"

    ";new_div+="
    ";if(config.show_desc)new_div+="

    "+metric.desc+"

    ";new_div+="
    ";$("#"+div_id).append(new_div);Viz.displayBasicLinesFile(metric.divid+"_"+l,mls_file,metric.column,config.show_labels,title)}}function getReportId(){var project_data=Report.getProjectData();return project_data.date+"_"+project_data.project_name}function getMLSId(){return getReportId()+"_mls_lists"}this.displayEvoListsMain=function(id){if(localStorage){if(localStorage.length&&localStorage.getItem(getMLSId())){lists=JSON.parse(localStorage.getItem(getMLSId()));return this.displayEvoLists(id,lists)}}history=this.getListsData();lists=history.mailing_list;if(lists===undefined)return;var config=Report.getConfig();lists_hide=config.mls_hide_lists;if(typeof lists==="string"){lists=[lists]}var filtered_lists=[];for(var i=0;i-1)form.elements[i].checked=true;else form.elements[i].checked=false}}};this.displayBasicDefault=function(div_id){var obj=self;if(this instanceof MLS)obj=this;cleanLocalStorage();obj.displaySelectorCheckDefault();$("#"+div_id).empty();obj.displayBasic(div_id)};this.displayEvoDefault=function(div_id){var obj=self;if(this instanceof MLS)obj=this;cleanLocalStorage();if(document.getElementById("form_mls_selector"))obj.displaySelectorCheckDefault();$("#"+div_id).empty();obj.displayEvoLists(div_id,obj.getDefaultLists())};this.displayEvoUserAll=function(id,all){var form=document.getElementById("form_mls_selector");for(var i=0;i-1)html+="checked ";html+=">";html+=MLS.displayMLSListName(l);html+="
    "}html+='1){$("#"+div_id_sel).append("Not supported in multiproject");$("#"+div_id_sel+" :input").attr("disabled",true)}};function filterHistory(history){if(typeof history.id==="number"){$.each(history,function(key,value){value=[value]})}return history}this.displayEvoLists=function(id,lists){for(var i=0;i1){list_name=list_name_tokens[list_name_tokens.length-1];if(list_name==="")list_name=list_name_tokens[list_name_tokens.length-2]}else{list_name=listinfo.replace("<","");list_name=list_name.replace(">","");list_name_tokens=list_name.split(".");list_name=list_name_tokens[0]}return list_name};this.oldest_changesets={};this.ma_changesets={};this.displayOldestChangesets=function(div,headers,columns){loadOldestChangesets(function(data){Table.gerritTable(div,data,headers,columns)})};this.displayMostActiveChangesets=function(div,headers,columns){loadMostActiveChangesets(function(data){Table.gerritTable(div,data,headers,columns)})};function loadOldestChangesets(cb){var json_file="data/json/scr-oldest_changesets.json";$.when($.getJSON(json_file)).done(function(json_data){this.oldest_changesets=json_data;cb(this.oldest_changesets)}).fail(function(){console.log("SCR oldest changesets disabled. Missing "+json_file)})}function loadMostActiveChangesets(cb){var json_file="data/json/scr-most_active_changesets.json";$.when($.getJSON(json_file)).done(function(json_data){this.ma_changesets=json_data;cb(this.ma_changesets)}).fail(function(){console.log("SCR most active changesets disabled. Missing "+json_file)})}this.getTitle=function(){return"Source Code Review"}}SCR.prototype=new DataSource("scr");function People(){this.basic_metrics={people_members:{column:"members",name:"Members",desc:"Community Members"}};this.getMainMetric=function(){return"people_members"};this.displayData=function(divid){var div_id="#"+divid;var str=this.global_data.url;if(!str||str.length===0){$(div_id+" .mediawiki_info").hide();return}var url="";if(this.global_data.repositories===1){url=this.global_data.url}else{url=Report.getProjectData().mediawiki_url}if(this.global_data.type)$(div_id+" #mediawiki_type").text(this.global_data.type);if(this.global_data.url&&this.global_data.url!=="."&&this.global_data.type!==undefined){$(div_id+" #mediawiki_url").attr("href",url);$(div_id+" #mediawiki_name").text("MediaWiki "+this.global_data.type)}else{$(div_id+" #mediawiki_url").attr("href",Report.getProjectData().mediawiki_url);$(div_id+" #mediawiki_name").text(Report.getProjectData().mediawiki_name);$(div_id+" #mediawiki_type").text(Report.getProjectData().mediawiki_type)}var data=this.getGlobalData();$(div_id+" #mediawikiFirst").text(data.first_date);$(div_id+" #mediawikiLast").text(data.last_date);$(div_id+" #mediawikiSent").text(data.mediawiki_reviews)};this.displayBubbles=function(divid,radius){if(false)Viz.displayBubbles(divid,"mediawiki_reviews","mediawiki_authors",radius)};this.getTitle=function(){return"Community Members"}}People.prototype=new DataSource("people");function Downloads(){var self=this;this.basic_metrics={downloads_downloads:{name:"Total downloads",column:"downloads"},downloads_packages:{divid:"",column:"packages",name:"Packages downloaded",desc:"",action:"downloads"},downloads_ips:{divid:"",column:"ips",name:"IP addresses",desc:"",action:"downloads"},downloads_bounces:{divid:"",column:"bounces",name:"Bounces",desc:""},downloads_uvisitors:{divid:"",column:"uvisitors",name:"Unique visitors",desc:""},downloads_visits:{divid:"",column:"visits",name:"Visits",desc:""},downloads_pages:{divid:"",column:"page",name:"Pages",desc:"",action:"visits"},downloads_countries:{divid:"",column:"country",name:"Countries",desc:"",action:"visits"}};this.getMainMetric=function(){return"downloads_downloads"};this.displayData=function(divid){var div_id="#"+divid;var str=this.global_data.url;if(!str||str.length===0){$(div_id+" .irc_info").hide();return}var url="";if(this.global_data.repositories===1){url=this.global_data.url}else{url=Report.getProjectData().irc_url}if(this.global_data.type)$(div_id+" #irc_type").text(this.global_data.type);if(this.global_data.url&&this.global_data.url!=="."&&this.global_data.type!==undefined){$(div_id+" #irc_url").attr("href",url);$(div_id+" #irc_name").text("IRC "+this.global_data.type)}else{$(div_id+" #irc_url").attr("href",Report.getProjectData().irc_url);$(div_id+" #irc_name").text(Report.getProjectData().irc_name);$(div_id+" #irc_type").text(Report.getProjectData().irc_type)}var data=this.getGlobalData();$(div_id+" #ircFirst").text(data.first_date);$(div_id+" #ircLast").text(data.last_date);$(div_id+" #ircSent").text(data.irc_sent);$(div_id+" #ircRepositories").text(data.irc_repositories);if(data.repositories===1)$(div_id+" #ircRepositories").hide()};this.displayBubbles=function(divid,radius){if(false)Viz.displayBubbles(divid,"mediawiki_reviews","mediawiki_authors",radius)};this.getTitle=function(){return"Downloads"}}Downloads.prototype=new DataSource("downloads");function QAForums(){var self=this;this.basic_metrics={qaforums_sent:{name:"Messages posted",desc:"Number of messages posted to Q&A forums(s)",column:"sent"},qaforums_qsent:{name:"Questions posted",desc:"Number of questions posted to Q&A forums(s)",column:"qsent"},qaforums_asent:{name:"Answers posted", +desc:"Number of answers posted to Q&A forums(s)",column:"asent"},qaforums_unanswered:{name:"Unanswered questions",desc:"Backlog of unanswered questions",column:"unanswered"},qaforums_senders:{name:"Persons posting messages",desc:"Number of persons posting messages to Q&A forums(s)",column:"senders"},qaforums_asenders:{name:"Persons posting answers",desc:"Number of persons answering in Q&A forums(s)",column:"asenders"},qaforums_qsenders:{divid:"qaforums_qsenders",name:"Persons posting questions",desc:"Number of persons asking questions in Q&A forums(s)",column:"qsenders"},qaforums_participants:{name:"Participants",desc:"Number of persons posting messages",column:"participants"}};this.getMainMetric=function(){return"qaforums_qsent"};this.displayData=function(divid){var div_id="#"+divid;var str=this.global_data.url;if(!str||str.length===0){$(div_id+" .irc_info").hide();return}var url="";if(this.global_data.repositories===1){url=this.global_data.url}else{url=Report.getProjectData().irc_url}if(this.global_data.type)$(div_id+" #irc_type").text(this.global_data.type);if(this.global_data.url&&this.global_data.url!=="."&&this.global_data.type!==undefined){$(div_id+" #irc_url").attr("href",url);$(div_id+" #irc_name").text("IRC "+this.global_data.type)}else{$(div_id+" #irc_url").attr("href",Report.getProjectData().irc_url);$(div_id+" #irc_name").text(Report.getProjectData().irc_name);$(div_id+" #irc_type").text(Report.getProjectData().irc_type)}var data=this.getGlobalData();$(div_id+" #ircFirst").text(data.first_date);$(div_id+" #ircLast").text(data.last_date);$(div_id+" #ircSent").text(data.irc_sent);$(div_id+" #ircRepositories").text(data.irc_repositories);if(data.repositories===1)$(div_id+" #ircRepositories").hide()};this.displayBubbles=function(divid,radius){if(false)Viz.displayBubbles(divid,"qaforums_quetions","qaforums_authors",radius)};this.getSummaryLabels=function(){var id_label={first_date:"Start",last_date:"End",sent:"Messages posted",qsent:"Questions posted",asent:"Answers posted",qunanswered:"Unanswered questions",senders:"Persons posting messages",asenders:"Persons posting answers",qsenders:"Persons posting questions"};return id_label};this.getTitle=function(){return"QAForums"}}QAForums.prototype=new DataSource("qaforums");function Releases(){var self=this;this.basic_metrics={releases_modules:{name:"Modules created",desc:"Number of modules created on the forge",column:"modules"},releases_authors:{name:"Module authors",desc:"Module authors",column:"authors"},releases_releases:{name:"Number of module releases",desc:"Number of module releases",column:"releases"}};this.getMainMetric=function(){return"releases_modules"};this.displayData=function(divid){var div_id="#"+divid;var str=this.global_data.url;if(!str||str.length===0){$(div_id+" .irc_info").hide();return}var url="";if(this.global_data.repositories===1){url=this.global_data.url}else{url=Report.getProjectData().irc_url}if(this.global_data.type)$(div_id+" #irc_type").text(this.global_data.type);if(this.global_data.url&&this.global_data.url!=="."&&this.global_data.type!==undefined){$(div_id+" #irc_url").attr("href",url);$(div_id+" #irc_name").text("IRC "+this.global_data.type)}else{$(div_id+" #irc_url").attr("href",Report.getProjectData().irc_url);$(div_id+" #irc_name").text(Report.getProjectData().irc_name);$(div_id+" #irc_type").text(Report.getProjectData().irc_type)}var data=this.getGlobalData();$(div_id+" #ircFirst").text(data.first_date);$(div_id+" #ircLast").text(data.last_date);$(div_id+" #ircSent").text(data.irc_sent);$(div_id+" #ircRepositories").text(data.irc_repositories);if(data.repositories===1)$(div_id+" #ircRepositories").hide()};this.displayBubbles=function(divid,radius){if(false)Viz.displayBubbles(divid,"releases_modules","releases_releases",radius)};this.getSummaryLabels=function(){var id_label={first_date:"Start",last_date:"End",modules:"Modules created",releases:"Module releases created",authors:"Persons creating/updating modules"};return id_label};this.getTitle=function(){return"Releases"}}Releases.prototype=new DataSource("releases");function Meetup(){var self=this;this.events={};this.top_groups={};this.basic_metrics={eventizer_events:{divid:"eventizer_events",action:"attendees",column:"events",name:"Meetup meetings",desc:"Meetup meetings"},eventizer_attendees:{divid:"eventizer_attendees",column:"attendees",action:"events",name:"Meetup RSVPs",desc:"Meetup RSVPs"},eventizer_rsvps:{divid:"eventizer_rsvps",column:"rsvps",action:"events",name:"Meetup RSVPs",desc:"Meetup RSVPs"},eventizer_members:{divid:"eventizer_members",column:"members",name:"Meetup members",desc:"Meetup members"},eventizer_cities:{name:"Cities with Meetup events",action:"events",desc:"Cities where events took place"},eventizer_groups:{divid:"eventizer_groups",column:"groups",name:"Active Meetup groups",desc:"Active Meetup groups"}};this.getMainMetric=function(){return"eventizer_events"};this.getSummaryLabels=function(){var id_label={first_date:"Start",last_date:"End"};return id_label};this.displayData=function(divid){return""};this.getTitle=function(){return"Meetup events"};this.displayTablePastEvents=function(div,headers,columns,limit){loadMeetupEventsData(function(data){data=filterOutFuture(data);data=applyLimit(data,limit);data=makeUpPastDate(data);data=replaceNull(data);Table.simpleTable(div,data,headers,columns)})};this.displayTableFutureEvents=function(div,headers,columns,limit){loadMeetupEventsData(function(data){data=extractFuture(data);data=reverseOrder(data);data=applyLimit(data,limit);data=makeUpFutureDate(data);data=replaceNull(data);Table.simpleTable(div,data,headers,columns)})};function replaceNull(data){$.each(data.city,function(id,value){if(value===null){data.city[id]="-"}});$.each(data.country,function(id,value){if(value===null){data.country[id]="-"}});return data}function makeUpPastDate(data){$.each(data.date,function(id,value){data.date[id]=moment(value,"YYYY-MM-DD hh:mm:ss").format("MMMM Do YYYY, h:mm a")});return data}function makeUpFutureDate(data){$.each(data.date,function(id,value){data.date[id]=moment(value,"YYYY-MM-DD hh:mm:ss").fromNow()});return data}function reverseOrder(data){var keys=Object.keys(data),newobj={};$.each(keys,function(id,value){newobj[value]=data[value].reverse()});return newobj}function numberFutureEvents(data){var d=new Date,now=d.getTime(),offset=0;$.each(data.date,function(id,value){var aux_date=new Date(value);when=aux_date.getTime();if(when<=now){offset=id;return false}});return offset}function extractFuture(data){var offset=numberFutureEvents(data);var keys=Object.keys(data),newobj={};$.each(keys,function(id,value){newobj[value]=data[value].slice(0,offset)});return newobj}function filterOutFuture(data){var offset=numberFutureEvents(data);var keys=Object.keys(data),newobj={};$.each(keys,function(id,value){var array_len=data[value].length;newobj[value]=data[value].slice(offset,array_len)});return newobj}function applyLimit(data,limit){var keys=Object.keys(data),newobj={},myarray=[];if(limit>data[keys[0]].length){return data}$.each(keys,function(id,value){myarray=[];for(i=0;i'+data.event_name[id]+' '})}if(data.hasOwnProperty("group_name")&&data.hasOwnProperty("group_id")){$.each(data.event_name,function(id,value){data.group_name[id]=''+data.group_name[id]+""})}return data}function loadMeetupEventsData(cb){var json_file="data/json/eventizer-events.json";$.when($.getJSON(json_file)).done(function(json_data){this.events=json_data;this.events=buildLink(this.events);cb(this.events)}).fail(function(){console.log("Meetup events disabled. Missing "+json_file)})}}Meetup.prototype=new DataSource("eventizer");var Identity={};(function(){var unique_list="unique-sortable";function sortSelList(list_divid,list,name){var connect="";if(list_divid===unique_list)connect="";else connect=unique_list;$("#"+name).sortable({handle:".handle",connectWith:"#"+connect,start:function(e,info){info.item.siblings(".ui-selected").appendTo(info.item)},stop:function(e,info){if(info.item.parent()[0].id===unique_list)info.item.find(".handle").remove();info.item.parent().append(info.item.find("li"));info.item.parent().find("li").addClass("mjs-nestedSortable-leaf")}}).selectable().find("li").prepend("
    ")}Identity.showListNested=function(list_divid,ds){list="
      div",maxLevels:2,isTree:true,expandOnHover:700,startCollapsed:true});$(".disclose").on("click",function(){$(this).closest("li").toggleClass("mjs-nestedSortable-collapsed").toggleClass("mjs-nestedSortable-expanded")})};function showFilter(ds,filter_data){$("#"+ds.getName()+"filter").autocomplete({source:filter_data,select:function(event,ui){$("#"+ds.getName()+"filter").val("");$("#"+ds.getName()+"_people_"+ui.item.value).addClass("ui-selected");return false}})}Identity.showList=function(list_divid,ds){var list="";var people=ds.getPeopleData();var filter_data=[];list='
        ';for(var i=0;i");showFilter(ds,filter_data);$("#"+list_divid).append(list);sortSelList(list_divid,list,ds.getName()+"-sortable")}})();var Charts={};(function(){Charts.plotLinesChart=plotLinesChart;function plotLinesChart(div_id,line_names,raw_data){var flt_data=buildFlotrData(line_names,raw_data);var config=getChartConfig(flt_data,raw_data.strdate);if(raw_data.max){config.yaxis.max=raw_data.max}if(flt_data.length>1)config.legend.show=true;config.subtitle=composeTitle(line_names);flt_data=decorateLines(flt_data);plotFlotr2LinesChart(div_id,flt_data,config)}function buildFlotrData(line_names,raw_data){var aux=[];$.each(raw_data.lines_data,function(id,array){var line=[];$.each(array,function(subid,value){line[line.length]=[raw_data.unixtime[subid],value]});var aux2={};aux2.data=line;aux2.label=line_names[id];aux[aux.length]=aux2});return aux}function decorateLines(flotr2_data){if(Utils.isReleasePage()===false){if(flotr2_data.length===1){flotr2_data=lastLineValueToPoint(flotr2_data);flotr2_data=addEmptyValue(flotr2_data)}else if(flotr2_data.length>1){flotr2_data=dropLastLineValue(flotr2_data)}}return flotr2_data}function lastLineValueToPoint(flotr2_data){if(flotr2_data.length!==1)return flotr2_data;var last=flotr2_data[0].data.length;var dots=[];var utime=0;for(var i=0;i1){for(var j=0;j1){if(flotr2_data[i].label!==undefined){value_name=flotr2_data[i].label;label+=value_name+":"}}label+=""+Report.formatValue(value)+"
        "}return label}},selection:{mode:"x",fps:10},shadowSize:4};return config}function composeRangeText(former_title,starting_utime,end_utime){var months=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];var date=new Date(parseInt(starting_utime,10)*1e3);var starting_date=months[date.getMonth()]+" "+date.getFullYear();date=new Date(parseInt(end_utime,10)*1e3);var end_date=months[date.getMonth()]+" "+date.getFullYear();return former_title+" ( "+starting_date+" - "+end_date+" )"}function getMax(flotr2_data,from_unixstamp,to_unixstamp){from_unixstamp=Math.round(from_unixstamp);to_unixstamp=Math.round(to_unixstamp);var narrays=flotr2_data.length;var aux_array=[];for(var i=0;i0;z--){var aux_value=flotr2_data[i][z][0];var cond=aux_valueto_unixstamp;if(cond){flotr2_data[i].splice(z,1)}}}var res=[];for(i=0;ib[1]||b[1]===undefined?1:-1});return bi_array}})();String.prototype.supplant=function(o){return this.replace(/{([^{}]*)}/g,function(a,b){var r=o[b];return typeof r==="string"||typeof r==="number"?r:a})};var Table={};(function(){Table.displayTopTable=displayTopTable;Table.simpleTable=displaySimpleTable;Table.gerritTable=displayGerritTable;Table.meetupGroupsTable=displayMeetupGroupsTable;function displaySimpleTable(div,data,headers,cols){var tables,aux_html,random_id;random_id="myTable"+Math.floor(Math.random()*9999+1);tables='';aux_html=composeSimpleHeaders(headers);aux_html+="";var first_col=handleWeirdJSON(data,cols);aux_html+=composeSimpleRows(first_col,cols,data);aux_html+="";tables+=aux_html;tables+="
        ";tables+="";$("#"+div.id).append(tables)}function handleWeirdJSON(data,cols){var first_col,aux_col;if(typeof data[cols[0]]!=="object"){aux_col=[];aux_col[0]=data[cols[0]];first_col=aux_col}else{first_col=data[cols[0]]}return first_col}function composeSimpleRows(first_col,cols,data){var aux_html="";$.each(first_col,function(id,value){aux_html+="";var cont=id+1;aux_html+=""+cont+"";$.each(cols,function(subid,name){if(typeof data[name]!=="object"){aux_html+=""+data[name]+""}else{aux_html+=""+data[name][id]+""}});aux_html+=""});return aux_html}function displayGerritTable(div,data,headers,cols){var tables,aux_html,random_id,gerrit_site=Report.getGerritSite();random_id="myTable"+Math.floor(Math.random()*9999+1);tables='';aux_html=composeSimpleHeaders(headers);aux_html+="";var first_col=handleWeirdJSON(data,cols);$.each(first_col,function(id,value){aux_html+="";var cont=id+1,get_var;aux_html+="";$.each(cols,function(subid,name){if(typeof data[name]!=="object"){if(name==="gerrit_issue_id"){get_var=gerrit_site+"/r/#/c/"+data[name];aux_html+='"}else if(name==="project_name"){get_var=data[name].replace(/\//g,"_");aux_html+='"}else{aux_html+=""}}else{if(name==="gerrit_issue_id"){get_var=gerrit_site+"/r/#/c/"+data[name][id];aux_html+='"}else if(name==="project_name"){get_var=data[name][id].replace(/\//g,"_");aux_html+='"}else{aux_html+=""}}});aux_html+=""});aux_html+="";tables+=aux_html;tables+="
        "+cont+"'+data[name]+"'+data[name]+""+data[name]+"'+data[name][id]+"'+data[name][id]+""+data[name][id]+"
        ";tables+="";$("#"+div.id).append(tables)}function displayMeetupGroupsTable(div,data,headers,cols,ratio,ratio_header){var ratio_array=[],denominator,numerator,aux_ratio;if(ratio!==undefined){numerator=ratio[0];denominator=ratio[1];$.each(data.name,function(id,value){aux_ratio=data[numerator][id]/data[denominator][id];aux_ratio=Math.round(aux_ratio*10)/10;ratio_array.push(aux_ratio)});data.ratio=ratio_array;if(ratio_header!==undefined){headers.push(ratio_header)}else{headers.push("Ratio")}cols.push("ratio")}displaySimpleTable(div,data,headers,cols)}function composeSimpleHeaders(headers){var aux_html;aux_html="#";$.each(headers,function(id,value){aux_html+=""+value+""});aux_html+="";return aux_html}function displayTopTable(div,data,opts){var first=true,gen_tabs=true,tabs="",tables="",periods;if(opts.period!=="all"){gen_tabs=false;periods=[opts.period];tables+=getHTMLTitleFromPeriod(opts.period)}else{tabs+=composeTopTabs(data,opts.metric,opts.class_name);periods=getSortedPeriods()}periods=getSortedPeriods();if(opts.height!==undefined){tables+='
        '}else{tables+='
        '}var var_names=getTopVarsFromMetric(opts.metric,opts.ds_name);for(var k=0;k';tables+='';opts.action=opts.desc_metrics[opts.ds_name+"_"+opts.metric].action;opts.unit=opts.desc_metrics[opts.ds_name+"_"+opts.metric].column;unit=opts.desc_metrics[opts.ds_name+"_"+opts.metric].action;title=opts.desc_metrics[opts.ds_name+"_"+opts.metric].name;if(opts.metric==="threads"&&opts.ds_name==="mls"){tables+="";tables+="";tables+="";tables+="";tables+="";tables+=composeTopRowsThreads(data[key],opts.limit,opts.links_enabled);tables+=""}else if(opts.ds_name==="downloads"){tables+=composeTopRowsDownloads(opts,data[key])}else if(opts.ds_name==="eventizer"&&opts.metric==="rsvps"){tables+="";tables+="";tables+="";tables+=composeTopRowsMeetup(data[key],opts.limit,opts.links_enabled);tables+=""}else if(opts.ds_name==="eventizer"&&opts.metric==="events"){tables+="";tables+="";tables+="";tables+="";tables+=composeTopRowsMeetup2(data[key],opts.limit,opts.links_enabled);tables+=""}else{tables+="";if(unit!==undefined)tables+="";if(data[key].organization!==undefined){tables+=""}tables+="";tables+=composeTopRowsPeople(data[key],opts.limit,opts.links_enabled,var_names);tables+=""}tables+="
        # Subject Creator Messages
        #"+title.capitalize()+" by number of meetings Meetings
        #"+title.capitalize()+" by number of RSVPs RSVPs Date
        #"+title.capitalize()+""+unit.capitalize()+"Organization
        ";tables+="
        "}}tables+="
        ";$("#"+div.id).append(tabs+tables);if(gen_tabs===true){script="";$("#"+div.id).append(script)}}function composeTopRowsPeople(people_data,limit,people_links,var_names){var rows_html="";if(people_data[var_names.id]===undefined){return rows_html}for(var j=0;j"+(j+1)+"";rows_html+="";if(people_links){rows_html+='"}else{rows_html+=DataProcess.hideEmail(people_data[var_names.name][j])}rows_html+="";rows_html+=""+metric_value+"";if(people_data.organization!==undefined){org=people_data.organization[j];if(org===null){org="-"}rows_html+=""+org+""}rows_html+=""}return rows_html}function composeTopRowsThreads(threads_data,limit,threads_links){var rows_html="";for(var i=0;i"+(i+1)+"";if(threads_links===true){var url="http://www.google.com/search?output=search&q=X&btnI=1";if(Report.getThreadsSite()!==undefined){url="http://www.google.com/search?output=search&q=X%20site%3AY&btnI=1";url=url.replace(/Y/g,Report.getThreadsSite())}else if(threads_data.hasOwnProperty("url")&&threads_data.url[i].length>0){url="http://www.google.com/search?output=search&q=X%20site%3AY&btnI=1";url=url.replace(/Y/g,threads_data.url[i])}url=url.replace(/X/g,threads_data.subject[i]);rows_html+="";rows_html+='';rows_html+=threads_data.subject[i]+"";rows_html+=' '}else{rows_html+=""+threads_data.subject[i]+""}rows_html+=""+threads_data.initiator_name[i]+"";rows_html+=""+threads_data.length[i]+"";rows_html+=""}return rows_html}function composeTopRowsDownloads(opts,data){var tables="",headers=[];if(opts.metric==="packages"){headers=["Packages Downloaded","Downloads"];tables+=composeTopRows2Cols(data,opts,headers)}else if(opts.metric==="ips"){headers=["IP Addresses","Downloads"];tables+=composeTopRows2Cols(data,opts,headers)}else if(opts.metric==="pages"){headers=["Page name","Visits"];tables+=composeTopRows2Cols(data,opts,headers)}else if(opts.metric==="countries"){headers=["Country","Visits"];tables+=composeTopRows2Cols(data,opts,headers)}return tables}function composeTopRows2Cols(data,opts,headers){var rows_html="";rows_html="#";rows_html+=" "+headers[0]+" ";rows_html+=" "+headers[1]+" ";rows_html+="";for(var i=0;i'+(i+1)+"";rows_html+=''+data[opts.unit][i]+"";rows_html+=''+data[opts.action][i]+"";rows_html+=""}return rows_html}function composeTopRowsMeetup(data,limit,people_links){var rows_html="";for(var i=0;i"+(i+1)+"";rows_html+=""+data.name[i]+"";rows_html+=""+data.events[i]+"";rows_html+=""}return rows_html}function composeTopRowsMeetup2(data,limit,people_links){var rows_html="";data=fixArrayStringError(data);for(var i=0;i"+(i+1)+"";rows_html+=''+data.name[i]+' ';rows_html+=""+data.rsvps[i]+"";rows_html+=""+data.time[i]+"";rows_html+=""}return rows_html}function fixArrayStringError(myobj){var keys=Object.keys(myobj),myarray=[];if(typeof myobj[keys[0]]!=="object"){console.log("Incorrect data. Expected an array and found an string, trying to convert ..");$.each(keys,function(id,value){myarray=[];myarray.push(myobj[value]);myobj[value]=myarray})}return myobj}function getSortedPeriods(){return["last month","last year",""]}function getTitleFromPeriod(period){if(period==="last month"){return"Last 30 days"}else if(period==="last year"){return"Last 365 days"}else{return"Complete history"}}function getHTMLTitleFromPeriod(period){return'
        '+getTitleFromPeriod(period)+"
        "}function composeTopTabs(data,metric,class_name){var first=true,tabs_html='";return tabs_html}function getTopVarsFromMetric(metric,ds_name){var var_names={};var_names.id="id";if(metric==="senders"&&(ds_name==="mls"||ds_name==="irc")){var_names.name="senders";var_names.action="sent"}if(metric==="authors"&&ds_name==="scm"){var_names.name="authors";var_names.action="commits"}if(ds_name==="its"){if(metric==="closers"){var_names.name="closers";var_names.action="closed"}else if(metric==="resolvers"){var_names.name="resolvers";var_names.action="resolved"}}if(metric==="closers"&&ds_name==="its_1"){var_names.name="closers";var_names.action="closed"}if(ds_name==="scr"){if(metric==="mergers"){var_names.name="mergers";var_names.action="merged"}if(metric==="openers"){var_names.name="openers";var_names.action="opened"}if(metric==="submitters"){var_names.name="openers";var_names.action="opened"}if(metric==="reviewers"){var_names.name="reviewers";var_names.action="reviews"}if(metric==="participants"){var_names.name="identifier";var_names.action="events"}if(metric==="active_core_reviewers"){var_names.name="identifier";var_names.action="reviews"}}if(ds_name==="downloads"){if(metric==="ips"){var_names.name="ips";var_names.action="downloads"}if(metric==="packages"){var_names.name="packages";var_names.action="downloads"}if(metric==="pages"){var_names.name="page";var_names.action="visits"}}if(ds_name==="mediawiki"){if(metric==="authors"){var_names.name="authors";var_names.action="reviews"}}if(ds_name==="qaforums"){if(metric==="senders"||metric==="asenders"||metric==="qsenders"){var_names.name="senders";var_names.action="sent"}else if(metric==="participants"){var_names.name="name";var_names.action="messages_sent"}}if(ds_name==="releases"){if(metric==="authors"){var_names.name="username";var_names.action="releases"}}if(ds_name==="eventizer"){if(metric==="cities"){var_names.name="city";var_names.action="events"}else if(metric==="events"){var_names.name="name";var_names.action="rsvps"}else if(metric==="repos"){var_names.name="name";var_names.action="rsvps"}else if(metric==="rsvps"){var_names.name="name";var_names.action="events"}}return var_names}})();var Demographics={};(function(){var data_dg={};Demographics.widget=function(){var divs=$(".DemographicsCompany"),ds_name,company_name,DS,period;if(divs.length>0){$.each(divs,function(id,div){ds_name="";ds_name=$(this).data("data-source");DS=Report.getDataSourceByName(ds_name);if(DS===null)return;if(DS.getData().length===0)return;period=$(this).data("period");company_name=Utils.getParameter("company");loadDemographicsData(div,ds_name,company_name,period,displayDemographics)})}};function loadDemographicsData(div,ds_name,company_name,period,cb){var suffix=ds_name.toLowerCase(),preffix,ag_file,b_file;preffix="data/json/"+company_name+"-"+suffix+"-com-demographics-";ag_file=preffix+"aging.json";b_file=preffix+"birth.json";$.when($.getJSON(ag_file),$.getJSON(b_file)).done(function(ag_data,b_data){data_dg[company_name]={};data_dg[company_name][ds_name]={aging:undefined,birth:undefined};data_dg[company_name][ds_name].aging=ag_data[0];data_dg[company_name][ds_name].birth=b_data[0];cb(div,ds_name,company_name,period)}).fail(function(){console.log("Demographics Company widget disabled. Missing "+ds_name+" files for company "+company_name)})}function displayDemographics(div,ds_name,company_name,period){if(!div.id)div.id="Parsed"+getRandomId();if(data_dg[company_name]!==undefined&&data_dg[company_name][ds_name]!==undefined){Viz.displayDemographicsChart(div.id,data_dg[company_name][ds_name],period)}}function getRandomId(){return Math.floor(Math.random()*1e3+1)}})();vizjslib_git_revision="a3367562097a2ae9f0ba0552eaeb5d44b8f014fb";vizjslib_git_tag="15.06-30-ga336756"; \ No newline at end of file diff --git a/browser/scm.html b/browser/scm.html index 1ade1be3..c41c814c 100644 --- a/browser/scm.html +++ b/browser/scm.html @@ -118,7 +118,7 @@ + data-field="scm_organizations"> diff --git a/browser/scr.html b/browser/scr.html index 60bbe357..169e487d 100644 --- a/browser/scr.html +++ b/browser/scr.html @@ -97,7 +97,7 @@ + data-field="scr_organizations">