From c58d58f2b0ca5e3cc2a66524ae4faeb7a350be10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Santiago=20Due=C3=B1as?= Date: Wed, 11 Feb 2015 13:10:46 +0100 Subject: [PATCH] Add unanswered questions chart to Q&A forums page This new time-series chart shows the backlog of unanswered questions for Q&A forums datasource. Change-Id: I80982ce0cbe99334ecb73bdd69760cee39e4c6a4 --- browser/lib/vizgrimoire.min.js | 29 +++++++++++++++++------------ browser/qaforums.html | 14 +++++++++++++- templates/qaforums/overview.tmpl | 14 +++++++++++++- 3 files changed, 43 insertions(+), 14 deletions(-) diff --git a/browser/lib/vizgrimoire.min.js b/browser/lib/vizgrimoire.min.js index c05de099..b9e3b23e 100644 --- a/browser/lib/vizgrimoire.min.js +++ b/browser/lib/vizgrimoire.min.js @@ -27,15 +27,20 @@ * gridster.js Copyright (c) 2012 ducksboard; Licensed MIT * d3.js: Copyright (c) 2012, Michael Bostocks * - */function resizedw(){Report.convertGlobal(),Report.convertStudiesGlobal(),Report.convertStudies(),Convert.activateHelp()}function DataSource(e,t){function n(e,t){if(e instanceof Array)return e;var n={};return $.each(e,function(e,r){var i=e,s=e.split("_");isNaN(s[s.length-1])===!1&&(i=s.slice(0,s.length-1).join("_"));var o=t.getName()+"_"+i,u=t.getName()+"_"+e;t.getMetrics()[o]===undefined?n[e]=r:n[u]=r}),n}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(e){this.basic_metrics=e},this.setMetricsDefinition=function(e){if(e===undefined)return;this.setMetrics(e)},this.data_file=this.data_dir+"/"+this.name+"-evolutionary.json",this.getDataFile=function(){return this.data_file},this.setDataFile=function(e){this.data_file=e},this.data=null,this.getData=function(){return this.data},this.setData=function(e,t){t===undefined&&(t=this),t.data=n(e,t)},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(e,t){t===undefined&&(t=this),t.demographics_data.aging=e},this.setDemographicsBirthData=function(e,t){t===undefined&&(t=this),t.demographics_data.birth=e},this.data_dir="data/json",this.getDataDir=function(){return this.data_dir},this.setDataDir=function(e){this.data_dir=e,this.data_file=e+"/"+this.name+"-evolutionary.json",this.demographics_aging_file=e+"/"+this.name+"-demographics-aging.json",this.demographics_birth_file=e+"/"+this.name+"-demographics-birth.json",this.global_data_file=e+"/"+this.name+"-static.json",this.top_data_file=e+"/"+this.name+"-top.json",this.companies_data_file=e+"/"+this.name+"-companies.json",this.repos_data_file=e+"/"+this.name+"-repos.json",this.countries_data_file=e+"/"+this.name+"-countries.json",this.domains_data_file=e+"/"+this.name+"-domains.json",this.projects_data_file=e+"/"+this.name+"-projects.json",this.time_to_fix_data_file=e+"/"+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(e,t){t===undefined&&(t=this),t.global_data=n(e,t)},this.global_top_data=null,this.getGlobalTopData=function(){return this.global_top_data},this.setGlobalTopData=function(e,t){t===undefined&&(t=this),t.global_top_data=e},this.name=e,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(e,t){t===undefined&&(t=this),t.people=e},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(e,t){t===undefined&&(t=this),t.time_to_fix_data=e},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(e,t){t===undefined&&(t=this),t.time_to_attention_data=e},this.project=null,this.getProject=function(){return this.project},this.setProject=function(e){this.project=e},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(e,t){t===undefined&&(t=this),t.markov_table_data=e},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 e=this.companies;return e instanceof Array==0&&this.companies!==null&&(e=this.companies.name),e},this.setCompaniesData=function(e,t){e===null&&(e=[]),t===undefined&&(t=this),t.companies=e},this.companies_metrics_data={},this.addCompanyMetricsData=function(e,t,r){r===undefined&&(r=this),r.companies_metrics_data[e]=n(t,r)},this.getCompaniesMetricsData=function(){return this.companies_metrics_data},this.companies_global_data={},this.addCompanyGlobalData=function(e,t,r){r===undefined&&(r=this),r.companies_global_data[e]=n(t,r)},this.getCompaniesGlobalData=function(){return this.companies_global_data},this.companies_top_data={},this.addCompanyTopData=function(e,t,n){n===undefined&&(n=this),n.companies_top_data[e]===undefined&&(n.companies_top_data[e]={}),n.companies_top_data[e]=t},this.getCompaniesTopData=function(){return this.companies_top_data},this.setCompaniesTopData=function(e,t){t===undefined&&(t=this),t.companies_top_data=e},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 e=this.repos;return e instanceof Array==0&&this.repos!==null&&(e=this.repos.name),e},this.setReposData=function(e,t){t===undefined&&(t=this),t.repos=e;if(t.getName()!=="its")return;repos_names=[],e instanceof Array==1&&(t.repos={},t.repos.name=e);var n=[];for(var r=0;r=0)if(o.getName()==="mls"){var n=MLS.displayMLSListName(t);i[n]=o.getReposMetricsData()[t]}else i[t]=o.getReposMetricsData()[t]})}else i=this.getData();r&&(i=DataProcess.convert(i,r,e)),Viz.displayMetricsEvol(this,e,i,t,n,s)},this.isPageDisplayed=function(e,t,n,r){var i=Math.floor((r-3)/2),s=e-i,o=e+i;return t===1||t===n||t==e?!0:t>=s&&te?!0:!1},this.displayItemsNav=function(e,t,n,r){var i=parseInt(n,null);isNaN(i)&&(i=1);var s=null,o="",u=0,a=5;if(t==="companies")s=this.getCompaniesData(),o="List of companies";else if(t==="repos")s=this.getReposData(),r&&(s=DataProcess.sortGlobal(this,r,t));else if(t==="countries")s=this.getCountriesData();else if(t==="domains")s=this.getDomainsData();else{if(t!=="projects")return;s=this.getProjectsData()}u=s.length;var f="",l=Report.getPageSize();if(i){f+=""}Report.getPageSize()>10&&$.each(s,function(e,t){var n=Report.cleanLabel(t);f+=""+n+" "}),$("#"+e).append(f)},this.displayCompaniesLinks=function(e,t,n){var r=DataProcess.sortGlobal(this,n,"companies"),i="",s=0;$.each(r,function(e,n){i+='| ";if(s++>=t-1)return!1}),$("#"+e).append(i)},this.displayCompaniesList=function(e,t,n,r,i,s,o,u,a){this.displaySubReportList("companies",e,t,n,r,i,s,o,u,a)},this.displayReposList=function(e,t,n,r,i,s,o,u,a){this.displaySubReportList("repos",e,t,n,r,i,s,o,u,a)},this.displayCountriesList=function(e,t,n,r,i,s,o,u,a){this.displaySubReportList("countries",e,t,n,r,i,s,o,u,a)},this.displayDomainsList=function(e,t,n,r,i,s,o,u,a){this.displaySubReportList("domains",e,t,n,r,i,s,o,u,a)},this.displayProjectsList=function(e,t,n,r,i,s,o,u,a){this.displaySubReportList("projects",e,t,n,r,i,s,o,u,a)},this.displaySubReportList=function(e,t,n,r,i,s,o,u,a,f){var l=parseInt(s,null);isNaN(l)&&(l=1);var c="",h=(l-1)*Report.getPageSize()+1,p=this,d=null,v=null;o===undefined&&(o=!0);if(e==="companies")d=this.getCompaniesMetricsData(),v=DataProcess.sortGlobal(this,i,e);else if(e==="repos")d=this.getReposMetricsData(),v=DataProcess.sortGlobal(this,i,e);else if(e==="countries")d=this.getCountriesMetricsData(),v=DataProcess.sortGlobal(this,i,e);else if(e==="domains")d=this.getDomainsMetricsData(),v=DataProcess.sortGlobal(this,i,e);else{if(e!=="projects")return;d=this.getProjectsMetricsData(),v=DataProcess.sortGlobal(this,i,e)}v=DataProcess.paginate(v,l),c+='',c+="",$.each(t,function(e,t){p.getMetrics()[t]?(title=p.getMetrics()[t].name,c+=""):c+=""}),c+="",$.each(v,function(n,r){c+="",$.each(t,function(t,n){c+="":""),u=!0);var k=n[p],L=s.labelBoxWidth,A=s.labelBoxHeight;d=s.labelFormatter(k.label),v="background-color:"+(k.bars&&k.bars.show&&k.bars.fillColor&&k.bars.fill?k.bars.fillColor:k.color)+";",o.push('",'")}u&&o.push("");if(o.length>0){var O='
"+title+""+t+"
",c+="#"+h+" ",h++;var i=null;Report.addDataDir()&&(i=Report.addDataDir());if(o){var s="";Utils.isReleasePage()&&(s="&release="+$.urlParam("release")),e==="companies"?(c+=""):e==="repos"?(c+=""):e==="countries"?(c+=""):e==="domains"?(c+=""):e==="projects"&&(c+="")}c+="",c+=Report.cleanLabel(r),c+="",o&&(c+=""),c+="",c+="
",r.companies_2006&&(n+="Companies in 2006: "+r.companies_2006+"
"),r.companies_2009&&(n+="Companies in 2009: "+r.companies_2009+"
"),r.companies_2012&&(n+="Companies in 2012: "+r.companies_2012+"
"),$("#"+e).append(n)},this.getSummaryLabels=function(){},this.getLabelForRepository=function(){return"repository"},this.getLabelForRepositories=function(){return"repositories"},this.displaySummary=function(e,t,n,r){n||(n="");var i="
"+r.getTitle()+"
",s=this.getSummaryLabels(),o=null;e==="companies"?o=r.getCompaniesGlobalData()[n]:e==="countries"?o=r.getCountriesGlobalData()[n]:e==="repositories"?o=r.getReposGlobalData()[n]:e==="domains"?o=r.getDomainsGlobalData()[n]:e==="projects"?o=r.getProjectsGlobalData()[n]:o=r.getGlobalData();if(!o)return;i=HTMLComposer.repositorySummaryTable(r,o,s),$("#"+t).append(i)},this.displayReposSummary=function(e,t){var n="",r=t.getGlobalData();n+="Total repositories: "+r[t.getName()+"_repositories"]+"
",$("#"+e).append(n)},this.displayCountriesSummary=function(e,t){var n="",r=t.getGlobalData();n+="Total countries: "+r[t.getName()+"_countries"]+"
",$("#"+e).append(n)},this.displayDomainsSummary=function(e,t){var n="",r=t.getGlobalData();n+="Total domains: "+r.domains+"
",$("#"+e).append(n)},this.displayProjectsSummary=function(e,t){var n="",r=t.getGlobalData();n+="Total projects: "+r.projects+"
",$("#"+e).append(n)},this.displayDemographics=function(e,t){var n=this.getDemographicsData();Viz.displayDemographicsChart(e,this,n,t)},this.displayTimeToAttention=function(e,t,n,r){n=!0,r="Time to Attention "+t;var i=this.getTimeToAttentionData();if(i instanceof Array)return;Viz.displayTimeToAttention(e,i,t,n,r)},this.displayTimeToFix=function(e,t,n,r){n=!0,r="Time to Fix "+t;var i=this.getTimeToFixData();if(i instanceof Array)return;Viz.displayTimeToFix(e,this.getTimeToFixData(),t,n,r)},this.displayMarkovTable=function(e,t){var n=this.getMarkovTableData();if(n===undefined){Report.log("No Markov data available");return}Viz.displayMarkovTable(e,n,t)},this.displayTop=function(e,t,n,r,i,s,o,u,a,f){t===undefined&&(t=!0);var l=null;Viz.displayTop(e,this,t,n,r,i,null,null,o,u,a,f)},this.displayTopCompany=function(e,t,n,r,i){var s=this.getCompaniesTopData()[e];if(s===undefined)return;var o=this.getMetrics()[n];Viz.displayTopCompany(e,s,t,o,r,i)},this.displayTopGlobal=function(e,t,n,r){Viz.displayTopGlobal(e,this,t,n,r)},this.envisionEvo=function(e,t,n,r,i){config=Report.getVizConfig();var s=Viz.getEnvisionOptions(e,t,this.getName(),Report.getVizConfig()[this.getName()+"_hide"],i);s.legend_show=r,n&&DataProcess.addRelativeValues(s.data,this.getMainMetric()),new envision.templates.Envision_Report(s,[this])},this.displayEnvision=function(e,t,n,r){var i=Report.getProjectsDataSources();this.envisionEvo(e,i,t,n,r)}}function IRC(){var e=this;this.basic_metrics={irc_sent:{divid:"irc_sent",column:"sent",name:"Sent",desc:"Messages sent"},irc_senders:{divid:"irc_senders",column:"senders",name:"Senders",desc:"Messages senders",action:"sent"},irc_repositories:{divid:"irc_repositories",column:"repositories",name:"Repositories",desc:"Number of active repositories"}},this.getMainMetric=function(){return"irc_sent"},this.getSummaryLabels=function(){var e={first_date:"Start",last_date:"End"};return e},this.getLabelForRepository=function(){return"channel"},this.getLabelForRepositories=function(){return"channels"},this.displayData=function(e){var t="#"+e,n=this.global_data.url;if(!n||n.length===0){$(t+" .irc_info").hide();return}var r="";this.global_data.repositories===1?r=this.global_data.url:r=Report.getProjectData().irc_url,this.global_data.type&&$(t+" #irc_type").text(this.global_data.type),this.global_data.url&&this.global_data.url!=="."&&this.global_data.type!==undefined?($(t+" #irc_url").attr("href",r),$(t+" #irc_name").text("IRC "+this.global_data.type)):($(t+" #irc_url").attr("href",Report.getProjectData().irc_url),$(t+" #irc_name").text(Report.getProjectData().irc_name),$(t+" #irc_type").text(Report.getProjectData().irc_type));var i=this.getGlobalData();$(t+" #ircFirst").text(i.first_date),$(t+" #ircLast").text(i.last_date),$(t+" #ircSent").text(i.irc_sent),$(t+" #ircRepositories").text(i.irc_repositories),i.repositories===1&&$(t+" #ircRepositories").hide()},this.displayBubbles=function(e,t){},this.getTitle=function(){return"IRC Messages"}}function ITS(){this.basic_metrics={its_opened:{divid:"its_opened",column:"opened",name:"Opened",desc:"Number of opened tickets",envision:{y_labels:!0,show_markers:!0}},its_openers:{divid:"its_openers",column:"openers",name:"Openers",desc:"Unique identities opening tickets",action:"opened",envision:{gtype:"whiskers"}},its_closed:{divid:"its_closed",column:"closed",name:"Closed",desc:"Number of closed tickets"},its_closers:{divid:"its_closers",column:"closers",name:"Closers",desc:"Number of identities closing tickets",action:"closed",envision:{gtype:"whiskers"}},its_changed:{divid:"its_changed",column:"changed",name:"Changed",desc:"Number of changes to the state of tickets"},its_changers:{divid:"its_changers",column:"changers",name:"Changers",desc:"Number of identities changing the state of tickets",action:"changed",envision:{gtype:"whiskers"}},its_companies:{divid:"its_companies",column:"companies",name:"Companies",desc:"Number of active companies"},its_countries:{divid:"its_countries",column:"countries",name:"Countries",desc:"Number of active countries"},its_repositories:{divid:"its_repositories",column:"repositories",name:"Respositories",desc:"Number of active respositories"},its_domains:{divid:"its_domains",column:"domains",name:"Domains",desc:"Number of active domains"}},this.getMainMetric=function(){return"its_opened"},this.getSummaryLabels=function(){var e={first_date:"Start",last_date:"End",tickets:"Tickets",trackers:"Trackers"};return e},this.getLabelForRepository=function(){return"tracker"},this.getLabelForRepositories=function(){return"trackers"},this.displayData=function(e){var t="#"+e,n=this.global_data.url;if(!n||n.length===0){$(t+" .its-info").hide();return}$(t+" #its_type").text(this.global_data.type);var r="";this.global_data.repositories===1?r=this.global_data.url:r=Report.getProjectData().its_url,r===undefined&&(r=""),this.global_data.type==="allura"?r=r.replace("rest/",""):this.global_data.type==="github"&&(r=r.replace("api.",""),r=r.replace("repos/","")),$(t+" #its_url").attr("href",r);var i=this.global_data.type.charAt(0).toUpperCase()+this.global_data.type.slice(1);$(t+" #its_name").text(i+" Tickets");var s=this.getGlobalData();$(t+" #itsFirst").text(s.first_date),$(t+" #itsLast").text(s.last_date),$(t+" #itsTickets").text(s.its_opened),$(t+" #itsOpeners").text(s.its_openers),$(t+" #itsRepositories").text(s.its_repositories),s.repositories===1&&$(t+" #itsRepositories").hide()},this.getTitle=function(){return"Tickets"},this.displayBubbles=function(e,t){Viz.displayBubbles(e,"its_opened","its_openers",t)}}function MediaWiki(){var e=this;this.basic_metrics={mediawiki_reviews:{divid:"mediawiki_reviews",column:"reviews",name:"Editions",desc:"Wiki page editions"},mediawiki_authors:{divid:"mediawiki_authors",column:"authors",name:"Editors",desc:"Editors doing editions",action:"reviews"},mediawiki_pages:{divid:"mediawiki_pages",column:"pages",name:"Pages",desc:"Wiki pages"}},this.getMainMetric=function(){return"mediawiki_reviews"},this.getSummaryLabels=function(){var e={first_date:"Start",last_date:"End"};return e},this.displayData=function(e){var t="#"+e,n=this.global_data.url;if(!n||n.length===0){$(t+" .mediawiki_info").hide();return}var r="";this.global_data.repositories===1?r=this.global_data.url:r=Report.getProjectData().mediawiki_url,this.global_data.type&&$(t+" #mediawiki_type").text(this.global_data.type),this.global_data.url&&this.global_data.url!=="."&&this.global_data.type!==undefined?($(t+" #mediawiki_url").attr("href",r),$(t+" #mediawiki_name").text("MediaWiki "+this.global_data.type)):($(t+" #mediawiki_url").attr("href",Report.getProjectData().mediawiki_url),$(t+" #mediawiki_name").text(Report.getProjectData().mediawiki_name),$(t+" #mediawiki_type").text(Report.getProjectData().mediawiki_type));var i=this.getGlobalData();$(t+" #mediawikiFirst").text(i.first_date),$(t+" #mediawikiLast").text(i.last_date),$(t+" #mediawikiSent").text(i.mediawiki_reviews)},this.displayBubbles=function(e,t){},this.getTitle=function(){return"MediaWiki Reviews"}}function MLS(){function t(){var e=document.getElementById("form_mls_selector"),t=[];for(var n=0;n-1)continue;var a="
";a+="

"+o.name+" "+MLS.displayMLSListName(t)+"

",a+="
",i.show_desc&&(a+="

"+o.desc+"

"),a+="
",$("#"+e).append(a),Viz.displayBasicLinesFile(o.divid+"_"+t,n,o.column,i.show_labels,u)}}function r(){var e=Report.getProjectData();return e.date+"_"+e.project_name}function i(){return r()+"_mls_lists"}function s(){localStorage&&localStorage.length&&localStorage.getItem(i())&&localStorage.removeItem(i())}function o(e){return typeof e.id=="number"&&$.each(e,function(e,t){t=[t]}),e}var e=this;this.basic_metrics={mls_responses:{divid:"mls_responses",column:"responses",name:"Responses",desc:"Number of messages that are responses"},mls_sent:{divid:"mls_sent",column:"sent",name:"Sent",desc:"Number of messages"},mls_senders:{divid:"mls_senders",column:"senders",name:"Senders",desc:"Number of unique message senders",action:"sent"},mls_threads:{divid:"mls_threads",column:"threads",name:"Threads",desc:"Number of messages threads"},mls_companies:{divid:"mls_companies",column:"companies",name:"Companies",desc:"Number of active companies"},mls_countries:{divid:"mls_countries",column:"countries",name:"Countries",desc:"Number of active countries"},mls_repositories:{divid:"mls_repositories",column:"repositories",name:"Respositories",desc:"Number of active respositories"},mls_domains:{divid:"mls_domains",column:"domains",name:"Domains",desc:"Number of active domains"}},this.data_lists_file=this.data_dir+"/mls-lists.json",this.getListsFile=function(){return this.data_lists_file},this.data_lists=null,this.getListsData=function(){return this.data_lists},this.setListsData=function(e,t){t===undefined&&(t=this),t.data_lists=e},this.setDataDir=function(e){this.data_dir=e,this.data_lists_file=this.data_dir+"/mls-lists.json",MLS.prototype.setDataDir.call(this,e)},this.getMainMetric=function(){return"mls_sent"},this.getSummaryLabels=function(){var e={first_date:"Start",last_date:"End"};return e},this.getLabelForRepository=function(){return"mailing list"},this.getLabelForRepositories=function(){return"mailing lists"},this.displayData=function(e){var t="#"+e,n=this.global_data.url;(!n||n.length===0)&&$(t+" .mls_info").hide();var r="";this.global_data.repositories===1?r=this.global_data.url:r=Report.getProjectData().mls_url,this.global_data.type&&$(t+" #mls_type").text(this.global_data.type),this.global_data.url&&this.global_data.url!=="."&&this.global_data.type!==undefined?($(t+" #mls_url").attr("href",r),$(t+" #mls_name").text("MLS "+this.global_data.type)):($(t+" #mls_url").attr("href",Report.getProjectData().mls_url),$(t+" #mls_name").text(Report.getProjectData().mls_name),$(t+" #mls_type").text(Report.getProjectData().mls_type));var i=this.getGlobalData();$(t+" #mlsFirst").text(i.first_date),$(t+" #mlsLast").text(i.last_date),$(t+" #mlsMessages").text(i.mls_sent),$(t+" #mlsSenders").text(i.mls_senders),$(t+" #mlsRepositories").text(i.mls_repositories),i.repositories===1&&$(t+" #mlsRepositories").hide()},this.displayBubbles=function(e,t){Viz.displayBubbles(e,"mls_sent","mls_senders",t)},MLS.displayMLSListName=function(e){var t=e.split("_"),n="";return t.length>1?(n=t[t.length-1],n===""&&(n=t[t.length-2])):(n=e.replace("<",""),n=n.replace(">",""),t=n.split("."),n=t[0]),n},this.displayBasicUserAll=function(e,t){var n=document.getElementById("form_mls_selector");for(var r=0;r-1)continue;file_messages=this.getDataDir()+"/mls-",file_messages+=u,file_messages+="-evolutionary.json" -,n(e,u,file_messages,t)}},this.getTitle=function(){return"Mailing Lists"},this.displayEvoListsMain=function(e){if(localStorage&&localStorage.length&&localStorage.getItem(i()))return lists=JSON.parse(localStorage.getItem(i())),this.displayEvoLists(e,lists);history=this.getListsData(),lists=history.mailing_list;if(lists===undefined)return;var t=Report.getConfig();lists_hide=t.mls_hide_lists,typeof lists=="string"&&(lists=[lists]);var n=[];for(var r=0;r-1?t.elements[n].checked=!0:t.elements[n].checked=!1}},this.displayBasicDefault=function(t){var n=e;this instanceof MLS&&(n=this),s(),n.displaySelectorCheckDefault(),$("#"+t).empty(),n.displayBasic(t)},this.displayEvoDefault=function(t){var n=e;this instanceof MLS&&(n=this),s(),document.getElementById("form_mls_selector")&&n.displaySelectorCheckDefault(),$("#"+t).empty(),n.displayEvoLists(t,n.getDefaultLists())},this.displayEvoUserAll=function(e,t){var n=document.getElementById("form_mls_selector");for(var r=0;r-1&&(u+="checked "),u+=">",u+=MLS.displayMLSListName(f),u+="
"}u+='1&&($("#"+e).append("Not supported in multiproject"),$("#"+e+" :input").attr("disabled",!0))},this.displayEvoLists=function(e,t){for(var n=0;n1?(n=t[t.length-1],n===""&&(n=t[t.length-2])):(n=e.replace("<",""),n=n.replace(">",""),t=n.split("."),n=t[0]),n},this.getTitle=function(){return"Source Code Review"}}function People(){this.basic_metrics={people_members:{column:"members",name:"Members",desc:"Community Members"}},this.getMainMetric=function(){return"people_members"},this.displayData=function(e){var t="#"+e,n=this.global_data.url;if(!n||n.length===0){$(t+" .mediawiki_info").hide();return}var r="";this.global_data.repositories===1?r=this.global_data.url:r=Report.getProjectData().mediawiki_url,this.global_data.type&&$(t+" #mediawiki_type").text(this.global_data.type),this.global_data.url&&this.global_data.url!=="."&&this.global_data.type!==undefined?($(t+" #mediawiki_url").attr("href",r),$(t+" #mediawiki_name").text("MediaWiki "+this.global_data.type)):($(t+" #mediawiki_url").attr("href",Report.getProjectData().mediawiki_url),$(t+" #mediawiki_name").text(Report.getProjectData().mediawiki_name),$(t+" #mediawiki_type").text(Report.getProjectData().mediawiki_type));var i=this.getGlobalData();$(t+" #mediawikiFirst").text(i.first_date),$(t+" #mediawikiLast").text(i.last_date),$(t+" #mediawikiSent").text(i.mediawiki_reviews)},this.displayBubbles=function(e,t){},this.getTitle=function(){return"Community Members"}}function Downloads(){var e=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(e){var t="#"+e,n=this.global_data.url;if(!n||n.length===0){$(t+" .irc_info").hide();return}var r="";this.global_data.repositories===1?r=this.global_data.url:r=Report.getProjectData().irc_url,this.global_data.type&&$(t+" #irc_type").text(this.global_data.type),this.global_data.url&&this.global_data.url!=="."&&this.global_data.type!==undefined?($(t+" #irc_url").attr("href",r),$(t+" #irc_name").text("IRC "+this.global_data.type)):($(t+" #irc_url").attr("href",Report.getProjectData().irc_url),$(t+" #irc_name").text(Report.getProjectData().irc_name),$(t+" #irc_type").text(Report.getProjectData().irc_type));var i=this.getGlobalData();$(t+" #ircFirst").text(i.first_date),$(t+" #ircLast").text(i.last_date),$(t+" #ircSent").text(i.irc_sent),$(t+" #ircRepositories").text(i.irc_repositories),i.repositories===1&&$(t+" #ircRepositories").hide()},this.displayBubbles=function(e,t){},this.getTitle=function(){return"Downloads"}}function QAForums(){var e=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_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(e){var t="#"+e,n=this.global_data.url;if(!n||n.length===0){$(t+" .irc_info").hide();return}var r="";this.global_data.repositories===1?r=this.global_data.url:r=Report.getProjectData().irc_url,this.global_data.type&&$(t+" #irc_type").text(this.global_data.type),this.global_data.url&&this.global_data.url!=="."&&this.global_data.type!==undefined?($(t+" #irc_url").attr("href",r),$(t+" #irc_name").text("IRC "+this.global_data.type)):($(t+" #irc_url").attr("href",Report.getProjectData().irc_url),$(t+" #irc_name").text(Report.getProjectData().irc_name),$(t+" #irc_type").text(Report.getProjectData().irc_type));var i=this.getGlobalData();$(t+" #ircFirst").text(i.first_date),$(t+" #ircLast").text(i.last_date),$(t+" #ircSent").text(i.irc_sent),$(t+" #ircRepositories").text(i.irc_repositories),i.repositories===1&&$(t+" #ircRepositories").hide()},this.displayBubbles=function(e,t){},this.getSummaryLabels=function(){var e={first_date:"Start",last_date:"End",sent:"Messages posted",qsent:"Questions posted",asent:"Answers posted",senders:"Persons posting messages",asenders:"Persons posting answers",qsenders:"Persons posting questions"};return e},this.getTitle=function(){return"QAForums"}}function Releases(){var e=this;this.basic_metrics={releases_modules:{name:"Modules created",desc:"Number of modules created on the forge",column:"modules"}},this.getMainMetric=function(){return"releases_modules"},this.displayData=function(e){var t="#"+e,n=this.global_data.url;if(!n||n.length===0){$(t+" .irc_info").hide();return}var r="";this.global_data.repositories===1?r=this.global_data.url:r=Report.getProjectData().irc_url,this.global_data.type&&$(t+" #irc_type").text(this.global_data.type),this.global_data.url&&this.global_data.url!=="."&&this.global_data.type!==undefined?($(t+" #irc_url").attr("href",r),$(t+" #irc_name").text("IRC "+this.global_data.type)):($(t+" #irc_url").attr("href",Report.getProjectData().irc_url),$(t+" #irc_name").text(Report.getProjectData().irc_name),$(t+" #irc_type").text(Report.getProjectData().irc_type));var i=this.getGlobalData();$(t+" #ircFirst").text(i.first_date),$(t+" #ircLast").text(i.last_date),$(t+" #ircSent").text(i.irc_sent),$(t+" #ircRepositories").text(i.irc_repositories),i.repositories===1&&$(t+" #ircRepositories").hide()},this.displayBubbles=function(e,t){},this.getSummaryLabels=function(){var e={first_date:"Start",last_date:"End",modules:"Modules created",releases:"Module releases created",authors:"Persons creating/updating modules"};return e},this.getTitle=function(){return"Releases"}}(function(){var e=this,t=e._,n={},r=Array.prototype,i=Object.prototype,s=Function.prototype,o=r.slice,u=r.unshift,a=i.toString,f=i.hasOwnProperty,l=r.forEach,c=r.map,h=r.reduce,p=r.reduceRight,d=r.filter,v=r.every,m=r.some,g=r.indexOf,y=r.lastIndexOf,b=Array.isArray,w=Object.keys,E=s.bind,S=function(e){return new k(e)};typeof module!="undefined"&&module.exports?(module.exports=S,S._=S):e._=S,S.VERSION="1.1.7";var x=S.each=S.forEach=function(e,t,r){if(e==null)return;if(l&&e.forEach===l)e.forEach(t,r);else if(e.length===+e.length){for(var i=0,s=e.length;i=r.computed&&(r={value:e,computed:o})}),r.value},S.min=function(e,t,n){if(!t&&S.isArray(e))return Math.min.apply(Math,e);var r={computed:Infinity};return x(e,function(e,i,s){var o=t?t.call(n,e,i,s):e;or?1:0}),"value")},S.groupBy=function(e,t){var n={};return x(e,function(e,r){var i=t(e,r);(n[i]||(n[i]=[])).push(e)}),n},S.sortedIndex=function(e,t,n){n||(n=S.identity);var r=0,i=e.length;while(r>1;n(e[s])=0})})},S.difference=function(e,t){return S.filter(e,function(e){return!S.include(t,e)})},S.zip=function(){var e=o.call(arguments),t=S.max(S.pluck(e,"length")),n=new Array(t);for(var r=0;r=0;n--)t=[e[n].apply(this,t)];return t[0]}},S.after=function(e,t){return function(){if(--e<1)return t.apply(this,arguments)}},S.keys=w||function(e){if(e!==Object(e))throw new TypeError("Invalid object");var t=[];for(var n in e)f.call(e,n)&&(t[t.length]=n);return t},S.values=function(e){return S.map(e,S.identity)},S.functions=S.methods=function(e){var t=[];for(var n in e)S.isFunction(e[n])&&t.push(n);return t.sort()},S.extend=function(e){return x(o.call(arguments,1),function(t){for(var n in t)t[n]!==void 0&&(e[n]=t[n])}),e},S.defaults=function(e){return x(o.call(arguments,1),function(t){for(var n in t)e[n]==null&&(e[n]=t[n])}),e},S.clone=function(e){return S.isArray(e)?e.slice():S.extend({},e)},S.tap=function(e,t){return t(e),e},S.isEqual=function(e,t){if(e===t)return!0;var n=typeof e,r=typeof t;if(n!=r)return!1;if(e==t)return!0;if(!e&&t||e&&!t)return!1;e._chain&&(e=e._wrapped),t._chain&&(t=t._wrapped);if(e.isEqual)return e.isEqual(t);if(t.isEqual)return t.isEqual(e);if(S.isDate(e)&&S.isDate(t))return e.getTime()===t.getTime();if(S.isNaN(e)&&S.isNaN(t))return!1;if(S.isRegExp(e)&&S.isRegExp(t))return e.source===t.source&&e.global===t.global&&e.ignoreCase===t.ignoreCase&&e.multiline===t.multiline;if(n!=="object")return!1;if(e.length&&e.length!==t.length)return!1;var i=S.keys(e),s=S.keys(t);if(i.length!=s.length)return!1;for(var o in e)if(!(o in t)||!S.isEqual(e[o],t[o]))return!1;return!0},S.isEmpty=function(e){if(S.isArray(e)||S.isString(e))return e.length===0;for(var t in e)if(f.call(e,t))return!1;return!0},S.isElement=function(e){return!!e&&e.nodeType==1},S.isArray=b||function(e){return a.call(e)==="[object Array]"},S.isObject=function(e){return e===Object(e)},S.isArguments=function(e){return!!e&&!!f.call(e,"callee")},S.isFunction=function(e){return!!(e&&e.constructor&&e.call&&e.apply)},S.isString=function(e){return!!(e===""||e&&e.charCodeAt&&e.substr)},S.isNumber=function(e){return!!(e===0||e&&e.toExponential&&e.toFixed)},S.isNaN=function(e){return e!==e},S.isBoolean=function(e){return e===!0||e===!1},S.isDate=function(e){return!!(e&&e.getTimezoneOffset&&e.setUTCFullYear)},S.isRegExp=function(e){return!(!(e&&e.test&&e.exec)||!e.ignoreCase&&e.ignoreCase!==!1)},S.isNull=function(e){return e===null},S.isUndefined=function(e){return e===void 0},S.noConflict=function(){return e._=t,this},S.identity=function(e){return e},S.times=function(e,t,n){for(var r=0;r/g,interpolate:/<%=([\s\S]+?)%>/g},S.template=function(e,t){var n=S.templateSettings,r="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+e.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(n.interpolate,function(e,t){return"',"+t.replace(/\\'/g,"'")+",'"}).replace(n.evaluate||null,function(e,t){return"');"+t.replace(/\\'/g,"'").replace(/[\r\n\t]/g," ")+"__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",i=new Function("obj",r);return t?i(t):i};var k=function(e){this._wrapped=e};S.prototype=k.prototype;var L=function(e,t){return t?S(e).chain():e},A=function(e,t){k.prototype[e]=function(){var e=o.call(arguments);return u.call(e,this._wrapped),L(t.apply(S,e),this._chain)}};S.mixin(S),x(["pop","push","reverse","shift","sort","splice","unshift"],function(e){var t=r[e];k.prototype[e]=function(){return t.apply(this._wrapped,arguments),L(this._wrapped,this._chain)}}),x(["concat","join","slice"],function(e){var t=r[e];k.prototype[e]=function(){return L(t.apply(this._wrapped,arguments),this._chain)}}),k.prototype.chain=function(){return this._chain=!0,this},k.prototype.value=function(){return this._wrapped}})(),!function(e,t,n){typeof module!="undefined"?module.exports=n(e,t):typeof define=="function"&&typeof define.amd=="object"?define(n):t[e]=n(e,t)}("bean",this,function(e,t){var n=window,r=t[e],i=/over|out/,s=/[^\.]*(?=\..*)\.|.*/,o=/\..*/,u="addEventListener",a="attachEvent",f="removeEventListener",l="detachEvent",c=document||{},h=c.documentElement||{},p=h[u],d=p?u:a,v=Array.prototype.slice,m=/click|mouse|menu|drag|drop/i,g=/^touch|^gesture/i,y={one:1},b=function(e,t,n){for(n=0;n0){t=t.split(" ");for(f=t.length;f--;)_(e,t[f],n);return e}u=c&&t.replace(o,""),u&&w[u]&&(u=w[u].type);if(!t||c){if(a=c&&t.replace(s,""))a=a.split(".");l(e,u,n,a)}else if(typeof t=="function")l(e,null,t);else for(r in t)t.hasOwnProperty(r)&&_(e,r,t[r]);return e},D=function(e,t,n,r,i){var s,o,u,a,f=n,l=n&&typeof n=="string";if(t&&!n&&typeof t=="object")for(s in t)t.hasOwnProperty(s)&&D.apply(this,[e,s,t[s]]);else{a=arguments.length>3?v.call(arguments,3):[],o=(l?n:t).split(" "),l&&(n=M(t,f=r,i))&&(a=v.call(a,1)),this===y&&(n=L(_,e,t,n,f));for(u=o.length;u--;)O(e,o[u],n,f,a)}return e},P=function(){return D.apply(y,arguments)},H=p?function(e,t,r){var i=c.createEvent(e?"HTMLEvents":"UIEvents");i[e?"initEvent":"initUIEvent"](t,!0,!0,n,1),r.dispatchEvent(i)}:function(e,t,n){n=S(n,e),e?n.fireEvent("on"+t,c.createEventObject()):n["_on"+t]++},B=function(e,t,n){var r,i,u,a,f,l=t.split(" ");for(r=l.length;r--;){t=l[r].replace(o,"");if(a=l[r].replace(s,""))a=a.split(".");if(!a&&!n&&e[d])H(b[t],t,e);else{f=T.get(e,t),n=[!1].concat(n);for(i=0,u=f.length;i1)while(s--&&e>=n)e/=n;else{r=i,s=r.length;while(s--&&e<1)e*=n}return Math.round(e*t)/t+r[s]},getMagnitude:function(e){return Math.pow(10,Math.floor(Math.log(e)/Math.LN10))},toPixel:function(e){return Math.floor(e)+.5},toRad:function(e){return-e*(Math.PI/180)},floorInBase:function(e,t){return t*Math.floor(e/t)},drawText:function(e,t,r,i,s){if(!e.fillText){e.drawText(t,r,i,s);return}s=this._.extend({size:n.defaultOptions.fontSize,color:"#000000",textAlign:"left",textBaseline:"bottom",weight:1,angle:0},s),e.save(),e.translate(r,i),e.rotate(s.angle),e.fillStyle=s.color,e.font=(s.weight>1?"bold ":"")+s.size*1.3+"px sans-serif",e.textAlign=s.textAlign,e.textBaseline=s.textBaseline,e.fillText(t,0,0),e.restore()},getBestTextAlign:function(e,t){return t=t||{textAlign:"center",textBaseline:"middle"},e+=n.getTextAngleFromAlign(t),Math.abs(Math.cos(e))>.01&&(t.textAlign=Math.cos(e)>0?"right":"left"),Math.abs(Math.sin(e))>.01&&(t.textBaseline=Math.sin(e)>0?"top":"bottom"),t},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(e){return n.alignTable[e.textAlign+" "+e.textBaseline]||0},noConflict:function(){return e.Flotr=t,this}},e.Flotr=n}(),Flotr.defaultOptions={colors:["#00A8F0","#C0D800","#CB4B4B","#4DA74D","#9440ED"],ieBackgroundColor:"#FFFFFF",title:null,subtitle:null,shadowSize:4,defaultType:null,HtmlText:!0,fontColor:"#545454",fontSize:7.5,resolution:1,parseFloat:!0,preventDefault:!0,xaxis:{ticks:null,minorTicks:null,showLabels:!0,showMinorLabels:!1,labelsAngle:0,title:null,titleAngle:0,noTicks:5,minorTickFreq:null,tickFormatter:Flotr.defaultTickFormatter,tickDecimals:null,min:null,max:null,autoscale:!1,autoscaleMargin:0,color:null,mode:"normal",timeFormat:null,timeMode:"UTC",timeUnit:"millisecond",scaling:"linear",base:Math.E,titleAlign:"center",margin:!0},x2axis:{},yaxis:{ticks:null,minorTicks:null,showLabels:!0,showMinorLabels:!1,labelsAngle:0,title:null,titleAngle:90,noTicks:5,minorTickFreq:null,tickFormatter:Flotr.defaultTickFormatter,tickDecimals:null,min:null,max:null,autoscale:!1,autoscaleMargin:0,color:null,scaling:"linear",base:Math.E,titleAlign:"center",margin:!0},y2axis:{titleAngle:270},grid:{color:"#545454",backgroundColor:null,backgroundImage:null,watermarkAlpha:.4,tickColor:"#DDDDDD",labelMargin:3,verticalLines:!0,minorVerticalLines:null,horizontalLines:!0,minorHorizontalLines:null,outlineWidth:1,outline:"nsew",circular:!1},mouse:{track:!1,trackAll:!1,position:"se",relative:!1,trackFormatter:Flotr.defaultTrackFormatter,margin:5,lineColor:"#FF3F19",trackDecimals:1,sensibility:2,trackY:!0,radius:3,fillColor:null,fillOpacity:.4}},function(){function t(e,t,n,r){this.rgba=["r","g","b","a"];var i=4;while(-1<--i)this[this.rgba[i]]=arguments[i]||(i==3?1:0);this.normalize()}var e=Flotr._,n={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]};t.prototype={scale:function(t,n,r,i){var s=4;while(-1<--s)e.isUndefined(arguments[s])||(this[this.rgba[s]]*=arguments[s]);return this.normalize()},alpha:function(t){return!e.isUndefined(t)&&!e.isNull(t)&&(this.a=t),this.normalize()},clone:function(){return new t(this.r,this.b,this.g,this.a)},limit:function(e,t,n){return Math.max(Math.min(e,n),t)},normalize:function(){var e=this.limit;return this.r=e(parseInt(this.r,10),0,255),this.g=e(parseInt(this.g,10),0,255),this.b=e(parseInt(this.b,10),0,255),this.a=e(this.a,0,1),this},distance:function(e){if(!e)return;e=new t.parse(e);var n=0,r=3;while(-1<--r)n+=Math.abs(this[this.rgba[r]]-e[this.rgba[r]]);return n},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 e=1-(.299*this.r+.587*this.g+.114*this.b)/255;return e<.5?"#000000":"#ffffff"}},e.extend(t,{parse:function(e){if(e instanceof t)return e;var r;if(r=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(e))return new t(parseInt(r[1],16),parseInt(r[2],16),parseInt(r[3],16));if(r=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(e))return new t(parseInt(r[1],10),parseInt(r[2],10),parseInt(r[3],10));if(r=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(e))return new t(parseInt(r[1]+r[1],16),parseInt(r[2]+r[2],16),parseInt(r[3]+r[3],16));if(r=/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(e))return new t(parseInt(r[1],10),parseInt(r[2],10),parseInt(r[3],10),parseFloat(r[4]));if(r=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(e))return new t(parseFloat(r[1])*2.55,parseFloat(r[2])*2.55,parseFloat(r[3])*2.55);if(r=/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(e))return new t(parseFloat(r[1])*2.55,parseFloat(r[2])*2.55,parseFloat(r[3])*2.55,parseFloat(r[4]));var i=(e+"").replace(/^\s*([\S\s]*?)\s*$/,"$1").toLowerCase();return i=="transparent"?new t(255,255,255,0):(r=n[i])?new t(r[0],r[1],r[2]):new t(0,0,0,0)},processColor:function(n,r){var i=r.opacity;if(!n)return"rgba(0, 0, 0, 0)";if(n instanceof t)return n.alpha(i).toString();if(e.isString(n))return t.parse(n).alpha(i).toString();var s=n.colors?n:{colors:n};if(!r.ctx)return e.isArray(s.colors)?t.parse(e.isArray(s.colors[0])?s.colors[0][1]:s.colors[0]).alpha(i).toString():"rgba(0, 0, 0, 0)";s=e.extend({start:"top",end:"bottom"},s),/top/i.test(s.start)&&(r.x1=0),/left/i.test(s.start)&&(r.y1=0),/bottom/i.test(s.end)&&(r.x2=0),/right/i.test(s.end)&&(r.y2=0);var o,u,a,f=r.ctx.createLinearGradient(r.x1,r.y1,r.x2,r.y2);for(o=0;o=h)break}h=i[v][0],p=i[v][1],p=="year"&&(h=Flotr.getTickSize(s.noTicks*r.year,a,f,0),h==.5&&(p="month",h=6)),e.tickUnit=p,e.tickSize=h;var g=h*r[p];m=new Date(a);switch(p){case"millisecond":y("Milliseconds");break;case"second":y("Seconds");break;case"minute":y("Minutes");break;case"hour":y("Hours");break;case"month":y("Month");break;case"year":y("FullYear")}g>=r.second&&t(m,"Milliseconds",o,0),g>=r.minute&&t(m,"Seconds",o,0),g>=r.hour&&t(m,"Minutes",o,0),g>=r.day&&t(m,"Hours",o,0),g>=r.day*4&&t(m,"Date",o,1),g>=r.year&&t(m,"Month",o,0);var b=0,w=NaN,E;do{E=w,w=m.getTime(),c.push({v:w/u,label:d(w/u,e)});if(p=="month")if(h<1){t(m,"Date",o,1);var S=m.getTime();t(m,"Month",o,n(m,"Month",o)+1);var x=m.getTime();m.setTime(w+b*r.hour+(x-S)*h),b=n(m,"Hours",o),t(m,"Hours",o,0)}else t(m,"Month",o,n(m,"Month",o)+h);else p=="year"?t(m,"FullYear",o,n(m,"FullYear",o)+h):m.setTime(w+g)}while(w0)return{x:t.touches[0].pageX,y:t.touches[0].pageY};if(!e._.isUndefined(t.changedTouches)&&t.changedTouches.length>0)return{x:t.changedTouches[0].pageX,y:t.changedTouches[0].pageY};if(t.pageX||t.pageY)return{x:t.pageX,y:t.pageY};if(t.clientX||t.clientY){var n=document,r=n.body,i=n.documentElement;return{x:t.clientX+r.scrollLeft+i.scrollLeft,y:t.clientY+r.scrollTop+i.scrollTop}}}}}(),function(){function i(e,n,r){return t.observe.apply(this,arguments),this._handles.push(arguments),this}var e=Flotr.DOM,t=Flotr.EventAdapter,n=Flotr._,r=Flotr;Graph=function(e,i,s){this._setEl(e),this._initMembers(),this._initPlugins(),t.fire(this.el,"flotr:beforeinit",[this]),this.data=i,this.series=r.Series.getSeries(i),this._initOptions(s),this._initGraphTypes(),this._initCanvas(),this._text=new r.Text({element:this.el,ctx:this.ctx,html:this.options.HtmlText,textEnabled:this.textEnabled}),t.fire(this.el,"flotr:afterconstruct",[this]),this._initEvents(),this.findDataRanges(),this.calculateSpacing(),this.draw(n.bind(function(){t.fire(this.el,"flotr:afterinit",[this])},this))},Graph.prototype={destroy:function(){t.fire(this.el,"flotr:destroy"),n.each(this._handles,function(e){t.stopObserving.apply(this,e)}),this._handles=[],this.el.graph=null},observe:i,_observe:i,processColor:function(e,t){var i={x1:0,y1:0,x2:this.plotWidth,y2:this.plotHeight,opacity:1,ctx:this.ctx};return n.extend(i,t),r.Color.processColor(e,i)},findDataRanges:function(){var e=this.axes,t,i,s;n.each(this.series,function(e){s=e.getRange(),s&&(t=e.xaxis,i=e.yaxis,t.datamin=Math.min(s.xmin,t.datamin),t.datamax=Math.max(s.xmax,t.datamax),i.datamin=Math.min(s.ymin,i.datamin),i.datamax=Math.max(s.ymax,i.datamax),t.used=t.used||s.xused,i.used=i.used||s.yused)},this),!e.x.used&&!e.x2.used&&(e.x.used=!0),!e.y.used&&!e.y2.used&&(e.y.used=!0),n.each(e,function(e){e.calculateRange()});var o=n.keys(r.graphTypes),u=!1;n.each(this.series,function(e){if(e.hide)return;n.each(o,function(t){e[t]&&e[t].show&&(this.extendRange(t,e),u=!0)},this),u||this.extendRange(this.options.defaultType,e)},this)},extendRange:function(e,t){this[e].extendRange&&this[e].extendRange(t,t.data,t[e],this[e]),this[e].extendYRange&&this[e].extendYRange(t.yaxis,t.data,t[e],this[e]),this[e].extendXRange&&this[e].extendXRange(t.xaxis,t.data,t[e],this[e])},calculateSpacing:function(){var e=this.axes,t=this.options,r=this.series,i=t.grid.labelMargin,s=this._text,o=e.x,u=e.x2,a=e.y,f=e.y2,l=t.grid.outlineWidth,c,h,p,d;n.each(e,function(e){e.calculateTicks(),e.calculateTextDimensions(s,t)}),d=s.dimensions(t.title,{size:t.fontSize*1.5},"font-size:1em;font-weight:bold;","flotr-title"),this.titleHeight=d.height,d=s.dimensions(t.subtitle,{size:t.fontSize},"font-size:smaller;","flotr-subtitle"),this.subtitleHeight=d.height;for(h=0;h1&&(this.multitouches=n.touches),t.fire(e,"flotr:mousedown",[event,this]),this.observe(document,"touchend",r)},this)),this.observe(this.overlay,"touchmove",n.bind(function(n){var r=this.getEventPosition(n);this.options.preventDefault&&n.preventDefault(),i=!0,this.multitouches||n.touches&&n.touches.length>1?this.multitouches=n.touches:s||t.fire(e,"flotr:mousemove",[event,r,this]),this.lastMousePos=r},this))):this.observe(this.overlay,"mousedown",n.bind(this.mouseDownHandler,this)).observe(e,"mousemove",n.bind(this.mouseMoveHandler,this)).observe(this.overlay,"click",n.bind(this.clickHandler,this)).observe(e,"mouseout",function(n){t.fire(e,"flotr:mouseout",n)})},_initCanvas:function(){function l(i,s){return i||(i=e.create("canvas"),typeof FlashCanvas!="undefined"&&typeof i.getContext=="function"&&(FlashCanvas.initElement(i),this.isFlashCanvas=!0),i.className="flotr-"+s,i.style.cssText="position:absolute;left:0px;top:0px;",e.insert(t,i)),n.each(a,function(t,n){e.show(i);if(s=="canvas"&&i.getAttribute(n)===t)return;i.setAttribute(n,t*r.resolution),i.style[n]=t+"px"}),i.context_=null,i}function c(e){window.G_vmlCanvasManager&&window.G_vmlCanvasManager.initElement(e);var t=e.getContext("2d");return window.G_vmlCanvasManager||t.scale(r.resolution,r.resolution),t}var t=this.el,r=this.options,i=t.children,s=[],o,u,a,f;for(u=i.length;u--;)o=i[u],!this.canvas&&o.className==="flotr-canvas"?this.canvas=o:!this.overlay&&o.className==="flotr-overlay"?this.overlay=o:s.push(o);for(u=s.length;u--;)t.removeChild(s[u]);e.setStyles(t,{position:"relative"}),a={},a.width=t.clientWidth,a.height=t.clientHeight;if(a.width<=0||a.height<=0||r.resolution<=0)throw"Invalid dimensions for plot, width = "+a.width+", height = "+a.height+", resolution = "+r.resolution;this.canvas=l(this.canvas,"canvas"),this.overlay=l(this.overlay,"overlay"),this.ctx=c(this.canvas),this.ctx.clearRect(0,0,this.canvas.width,this.canvas.height),this.octx=c(this.overlay),this.octx.clearRect(0,0,this.overlay.width,this.overlay.height),this.canvasHeight=a.height,this.canvasWidth=a.width,this.textEnabled=!!this.ctx.drawText||!!this.ctx.fillText},_initPlugins:function(){n.each(r.plugins,function(e,t){n.each(e.callbacks,function(e,t){this.observe(this.el,t,n.bind(e,this))},this),this[t]=r.clone(e),n.each(this[t],function(e,r){n.isFunction(e)&&(this[t][r]=n.bind(e,this))},this)},this)},_initOptions:function(e){var i=r.clone(r.defaultOptions);i.x2axis=n.extend(n.clone(i.xaxis),i.x2axis),i.y2axis=n.extend(n.clone(i.yaxis),i.y2axis),this.options=r.merge(e||{},i),this.options.grid.minorVerticalLines===null&&this.options.xaxis.scaling==="logarithmic"&&(this.options.grid.minorVerticalLines=!0),this.options.grid.minorHorizontalLines===null&&this.options.yaxis.scaling==="logarithmic"&&(this.options.grid.minorHorizontalLines=!0),t.fire(this.el,"flotr:afterinitoptions",[this]),this.axes=r.Axis.getAxes(this.options);var s=[],o=[],u=this.series.length,a=this.series.length,f=this.options.colors,l=[],c=0,h,p,d,v;for(p=a-1;p>-1;--p)h=this.series[p].color,h&&(--a,n.isNumber(h)?s.push(h):l.push(r.Color.parse(h)));for(p=s.length-1;p>-1;--p)a=Math.max(a,s[p]+1);for(p=0;o.length=f.length&&(p=0,++c)}for(p=0,d=0;p10?t.minorTickFreq=0:o-u>5?t.minorTickFreq=2:t.minorTickFreq=5)}else e.tickSize=Flotr.getTickSize(t.noTicks,n,r,t.tickDecimals);e.min=n,e.max=r,t.min===null&&t.autoscale&&(e.min-=e.tickSize*i,e.min<0&&e.datamin>=0&&(e.min=0),e.min=e.tickSize*Math.floor(e.min/e.tickSize)),t.max===null&&t.autoscale&&(e.max+=e.tickSize*i,e.max>0&&e.datamax<=0&&e.datamax!=e.datamin&&(e.max=0),e.max=e.tickSize*Math.ceil(e.max/e.tickSize)),e.min==e.max&&(e.max=e.min+1)},calculateTextDimensions:function(e,t){var n="",r,i;if(this.options.showLabels)for(i=0;in.length&&(n=this.ticks[i].label);this.maxLabel=e.dimensions(n,{size:t.fontSize,angle:Flotr.toRad(this.options.labelsAngle)},"font-size:smaller;","flotr-grid-label"),this.titleSize=e.dimensions(this.options.title,{size:t.fontSize*1.2,angle:Flotr.toRad(this.options.titleAngle)},"font-weight:bold;","flotr-axis-title")},_cleanUserTicks:function(t,n){var r=this,i=this.options,s,o,u,a;e.isFunction(t)&&(t=t({min:r.min,max:r.max}));for(o=0;o1?a[1]:i.tickFormatter(s,{min:r.min,max:r.max})):(s=a,u=i.tickFormatter(s,{min:this.min,max:this.max})),n[o]={v:s,label:u}},_calculateTimeTicks:function(){this.ticks=Flotr.Date.generator(this)},_calculateLogTicks:function(){var e=this,t=e.options,n,r,s=Math.log(e.max);t.base!=Math.E&&(s/=Math.log(t.base)),s=Math.ceil(s);var o=Math.log(e.min);t.base!=Math.E&&(o/=Math.log(t.base)),o=Math.ceil(o);for(i=o;ii&&(i=a,o=!0)),f!==null&&(fs&&(s=f,u=!0));return{xmin:n,xmax:i,ymin:r,ymax:s,xused:o,yused:u}}},e.extend(t,{getSeries:function(n){return e.map(n,function(n){var r;return n.data?(r=new t,e.extend(r,n)):r=new t({data:n}),r})}}),Flotr.Series=t}(),function(){var e=Flotr,t=e.DOM,n=e._,r=function(e){this.o=e};r.prototype={dimensions:function(e,t,n,r){return e?this.o.html?this.html(e,this.o.element,n,r):this.canvas(e,t):{width:0,height:0}},canvas:function(t,n){if(!this.o.textEnabled)return;n=n||{};var r=this.measureText(t,n),i=r.width,s=n.size||e.defaultOptions.fontSize,o=n.angle||0,u=Math.cos(o),a=Math.sin(o),f=2,l=6,c;return c={width:Math.abs(u*i)+Math.abs(a*s)+f,height:Math.abs(a*i)+Math.abs(u*s)+l},c},html:function(e,n,r,i){var s=t.create("div");return t.setStyles(s,{position:"absolute",top:"-100000px"}),t.insert(s,'
'+e+"
"),t.insert(this.o.element,s),t.size(s)},measureText:function(t,r){var i=this.o.ctx,s;return!i.fillText||e.isIphone&&i.measure?{width:i.measure(t,r)}:(r=n.extend({size:e.defaultOptions.fontSize,weight:1,angle:0},r),i.save(),i.font=(r.weight>1?"bold ":"")+r.size*1.3+"px sans-serif",s=i.measureText(t),i.restore(),s)}},Flotr.Text=r}(), -Flotr.addType("lines",{options:{show:!1,lineWidth:2,fill:!1,fillBorder:!1,fillColor:null,fillOpacity:.4,steps:!1,stacked:!1},stack:{values:[]},draw:function(e){var t=e.context,n=e.lineWidth,r=e.shadowSize,i;t.save(),t.lineJoin="round",r&&!1&&(t.lineWidth=r/2,i=n/2+t.lineWidth/2,t.strokeStyle="rgba(0,0,0,0.1)",this.plot(e,i+r/2,!1),t.strokeStyle="rgba(0,0,0,0.2)",this.plot(e,i,!1)),t.lineWidth=n,t.strokeStyle=e.color,this.plot(e,0,!0),t.restore()},plot:function(e,t,n){function T(t){var n=null;for(n=l-1;n>=0;--n){if(!e.fill)return;if(!t[n])return;t[n][1]===null&&(t[n][1]=0),x=o(t[n][0]),y=u(t[n][1]),y<0&&(y=0);if(y>s||x>i||y<0||x<0)return;r.lineTo(x,y),r.stroke()}}function N(e){var t=[],n=a[0][0];for(S=0;S0&&a[S][1]&&(r.stroke(),C(),d=null,r.closePath(),r.beginPath());continue}v=o(a[S][0]),m=o(a[S+1][0]),d===null&&(d=a[S]),f?(w=f.values[S]||0,E=f.values[S+1]||0,g=u(a[S][1]+w),b=u(a[S+1][1]+E)):(g=u(a[S][1]),b=u(a[S+1][1]));if(g>s&&b>s||g<0&&b<0||v<0&&m<0||v>i&&m>i)continue;(c!=v||h!=g+t)&&r.moveTo(v,g+t),c=m,h=b+t,e.steps?(r.lineTo(c+t/2,g+t),r.lineTo(c+t/2,h)):r.lineTo(c,h)}(!e.fill||e.fill&&!e.fillBorder)&&r.stroke(),C();if(f)for(S=0;S0?(u[f]=(u[f]||0)+t[l][1],s=Math.max(s,u[f])):(a[f]=(a[f]||0)+t[l][1],o=Math.min(o,a[f]));r.negativeSums=a,r.positiveSums=u,e.max=s,e.min=o}n.steps&&(this.hit=function(e){var t=e.data,n=e.args,r=e.yScale,i=n[0],s=t.length,o=n[1],u=e.xInverse(i.relX),a=i.relY,f;for(f=0;f=t[f][0]&&u<=t[f+1][0]){Math.abs(r(t[f][1])-a)<8&&(o.x=t[f][0],o.y=t[f][1],o.index=f,o.seriesIndex=e.index);break}},this.drawHit=function(e){var t=e.context,n=e.args,r=e.data,i=e.xScale,s=n.index,o=i(n.x),u=e.yScale(n.y),a;r.length-1>s&&(a=e.xScale(r[s+1][0]),t.save(),t.strokeStyle=e.color,t.lineWidth=e.lineWidth,t.beginPath(),t.moveTo(o,u),t.lineTo(a,u),t.stroke(),t.closePath(),t.restore())},this.clearHit=function(e){var t=e.context,n=e.args,r=e.data,i=e.xScale,s=e.lineWidth,o=n.index,u=i(n.x),a=e.yScale(n.y),f;r.length-1>o&&(f=e.xScale(r[o+1][0]),t.clearRect(u-s,a-s,f-u+2*s,2*s))})}}),Flotr.addType("bars",{options:{show:!1,lineWidth:2,barWidth:1,fill:!0,fillColor:null,fillOpacity:.4,horizontal:!1,stacked:!1,centered:!0,topPadding:.1,grouped:!1},stack:{positive:[],negative:[],_positive:[],_negative:[]},draw:function(e){var t=e.context;this.current+=1,t.save(),t.lineJoin="miter",t.lineWidth=e.lineWidth,t.strokeStyle=e.color,e.fill&&(t.fillStyle=e.fillStyle),this.plot(e),t.restore()},plot:function(e){var t=e.data,n=e.context,r=e.shadowSize,i,s,o,u,a,f;if(t.length<1)return;this.translate(n,e.horizontal);for(i=0;i0?o.positive:o.negative,p=d[c]||p,d[c]=p+h),v=f(c-a),m=f(c+i-a),g=l(h+p),y=l(p),y<0&&(y=0),e===null||t===null?null:{x:c,y:h,xScale:f,yScale:l,top:g,left:Math.min(v,m)-u/2,width:Math.abs(m-v)-u,height:y-g}},hit:function(e){var t=e.data,n=e.args,r=n[0],i=n[1],s=e.xInverse(r.relX),o=e.yInverse(r.relY),u=this.getBarGeometry(s,o,e),a=u.width/2,f=u.left,l=u.y,c,h;for(h=t.length;h--;)c=this.getBarGeometry(t[h][0],t[h][1],e),(l>0&&lc.y)&&Math.abs(f-c.left)0?(f[c]=(f[c]||0)+h,o=Math.max(o,f[c])):(l[c]=(l[c]||0)+h,s=Math.min(s,l[c]));(a==1&&u||a==-1&&!u)&&n.topPadding&&(e.max===e.datamax||n.stacked&&this.stackMax!==o)&&(o+=n.topPadding*(o-s)),this.stackMin=s,this.stackMax=o,this.negativeSums=l,this.positiveSums=f,e.max=o,e.min=s}}),Flotr.addType("bubbles",{options:{show:!1,lineWidth:2,fill:!0,fillOpacity:.4,baseRadius:2},draw:function(e){var t=e.context,n=e.shadowSize;t.save(),t.lineWidth=e.lineWidth,t.fillStyle="rgba(0,0,0,0.05)",t.strokeStyle="rgba(0,0,0,0.05)",this.plot(e,n/2),t.strokeStyle="rgba(0,0,0,0.1)",this.plot(e,n/4),t.strokeStyle=e.color,t.fillStyle=e.fillStyle,this.plot(e),t.restore()},plot:function(e,t){var n=e.data,r=e.context,i,s,o,u,a;t=t||0;for(s=0;s0?(r.positive[e]=o+t,o+t):(r.negative[e]=s+t,s+t)}var t=e.data,n=e.context,r=e.stacked?e.stack:!1,i=e.stackingType,s,o,u,a,f,l,c;n.save(),n.lineJoin="round",n.lineWidth=e.lineWidth,n.strokeStyle="rgba(0,0,0,0.5)",n.fillStyle=e.fillStyle;for(a=0;a0?"top":"bottom",k,L,A;n.save(),n.translate(a/2,u/2),n.scale(1,m),L=Math.cos(w)*f,A=Math.sin(w)*f,s>0&&(this.plotSlice(L+s,A+s,p,y,b,n),c&&(n.fillStyle="rgba(0,0,0,0.1)",n.fill())),this.plotSlice(L,A,p,y,b,n),c&&(n.fillStyle=h,n.fill()),n.lineWidth=i,n.strokeStyle=l,n.stroke(),k={size:e.fontSize*1.2,color:e.fontColor,weight:1.5},E&&(e.htmlText||!e.textEnabled?(divStyle="position:absolute;"+C+":"+(u/2+(C==="top"?T:-T))+"px;",divStyle+=N+":"+(a/2+(N==="right"?-x:x))+"px;",v.push('
',E,"
")):(k.textAlign=N,k.textBaseline=C,Flotr.drawText(n,E,x,T,k)));if(e.htmlText||!e.textEnabled){var O=Flotr.DOM.node('
');Flotr.DOM.insert(O,v.join("")),Flotr.DOM.insert(e.element,O)}n.restore(),this.startAngle=b,this.slices=this.slices||[],this.slices.push({radius:Math.min(r.width,r.height)*o/2,x:L,y:A,explode:f,start:y,end:b})},plotSlice:function(e,t,n,r,i,s){s.beginPath(),s.moveTo(e,t),s.arc(e,t,n,r,i,!1),s.lineTo(e,t),s.closePath()},hit:function(e){var t=e.data[0],n=e.args,r=e.index,i=n[0],s=n[1],o=this.slices[r],u=i.relX-e.width/2,a=i.relY-e.height/2,f=Math.sqrt(u*u+a*a),l=Math.atan(a/u),c=Math.PI*2,h=o.explode||e.explode,p=o.start%c,d=o.end%c,v=e.epsilon;u<0?l+=Math.PI:u>0&&a<0&&(l+=c),fh&&(l>p&&ld&&(lp)||p===d&&(o.start===o.end&&Math.abs(l-p)v))&&(s.x=t[0],s.y=t[1],s.sAngle=p,s.eAngle=d,s.index=0,s.seriesIndex=r,s.fraction=t[1]/this.total)},drawHit:function(e){var t=e.context,n=this.slices[e.args.seriesIndex];t.save(),t.translate(e.width/2,e.height/2),this.plotSlice(n.x,n.y,n.radius,n.start,n.end,t),t.stroke(),t.restore()},clearHit:function(e){var t=e.context,n=this.slices[e.args.seriesIndex],r=2*e.lineWidth,i=n.radius+r;t.save(),t.translate(e.width/2,e.height/2),t.clearRect(n.x-i,n.y-i,2*i+r,2*i+r),t.restore()},extendYRange:function(e,t){this.total=(this.total||0)+t[0][1]}})}(),Flotr.addType("points",{options:{show:!1,radius:3,lineWidth:2,fill:!0,fillColor:"#FFFFFF",fillOpacity:1,hitRadius:null},draw:function(e){var t=e.context,n=e.lineWidth,r=e.shadowSize;t.save(),r>0&&(t.lineWidth=r/2,t.strokeStyle="rgba(0,0,0,0.1)",this.plot(e,r/2+t.lineWidth/2),t.strokeStyle="rgba(0,0,0,0.2)",this.plot(e,t.lineWidth/2)),t.lineWidth=e.lineWidth,t.strokeStyle=e.color,e.fill&&(t.fillStyle=e.fillStyle),this.plot(e),t.restore()},plot:function(e,t){var n=e.data,r=e.context,i=e.xScale,s=e.yScale,o,u,a;for(o=n.length-1;o>-1;--o){a=n[o][1];if(a===null)continue;u=i(n[o][0]),a=s(a);if(u<0||u>e.width||a<0||a>e.height)continue;r.beginPath(),t?r.arc(u,a+t,e.radius,0,Math.PI,!1):(r.arc(u,a,e.radius,0,2*Math.PI,!0),e.fill&&r.fill()),r.stroke(),r.closePath()}}}),Flotr.addType("radar",{options:{show:!1,lineWidth:2,fill:!0,fillOpacity:.4,radiusRatio:.9,sensibility:2},draw:function(e){var t=e.context,n=e.shadowSize;t.save(),t.translate(e.width/2,e.height/2),t.lineWidth=e.lineWidth,t.fillStyle="rgba(0,0,0,0.05)",t.strokeStyle="rgba(0,0,0,0.05)",this.plot(e,n/2),t.strokeStyle="rgba(0,0,0,0.1)",this.plot(e,n/4),t.strokeStyle=e.color,t.fillStyle=e.fillStyle,this.plot(e),t.restore()},plot:function(e,t){var n=e.data,r=e.context,i=Math.min(e.height,e.width)*e.radiusRatio/2,s=2*Math.PI/n.length,o=-Math.PI/2,u,a;t=t||0,r.beginPath();for(u=0;u=5||Math.abs(e.second.y-e.first.y)>=5}})}(),function(){var e=Flotr.DOM,t=Flotr._;Flotr.addPlugin("legend",{options:{show:!0,noColumns:1,labelFormatter:function(e){return e},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 t=this.legend.markup;t&&(this.legend.markup=null,e.remove(t))}},insertLegend:function(){if(!this.options.legend.show)return;var n=this.series,r=this.plotOffset,i=this.options,s=i.legend,o=[],u=!1,a=this.ctx,f=t.filter(n,function(e){return e.label&&!e.hide}).length,l=s.position,c=s.margin,h=s.backgroundOpacity,p,d,v;if(f){var m=s.labelBoxWidth,g=s.labelBoxHeight,y=s.labelBoxMargin,b=r.left+c,w=r.top+c,E=0,S={size:i.fontSize*1.1,color:i.grid.color};for(p=n.length-1;p>-1;--p){if(!n[p].label||n[p].hide)continue;d=s.labelFormatter(n[p].label),E=Math.max(E,this._text.measureText(d,S).width)}var x=Math.round(m+y*3+E),T=Math.round(f*(y+g)+y);!h&&h!==0&&(h=.1);if(!i.HtmlText&&this.textEnabled&&!s.container){l.charAt(0)=="s"&&(w=r.top+this.plotHeight-(c+T)),l.charAt(0)=="c"&&(w=r.top+this.plotHeight/2-(c+T/2)),l.charAt(1)=="e"&&(b=r.left+this.plotWidth-(c+x)),v=this.processColor(s.backgroundColor,{opacity:h}),a.fillStyle=v,a.fillRect(b,w,x,T),a.strokeStyle=s.labelBoxBorderColor,a.strokeRect(Flotr.toPixel(b),Flotr.toPixel(w),x,T);var N=b+y,C=w+y;for(p=0;p
','
','
','
',"
","
","
',d,"
'+o.join("")+"
";if(s.container)O=e.node(O),this.legend.markup=O,e.insert(s.container,O);else{var M={position:"absolute",zIndex:"2",border:"1px solid "+s.labelBoxBorderColor};l.charAt(0)=="n"?(M.top=c+r.top+"px",M.bottom="auto"):l.charAt(0)=="c"?(M.top=c+(this.plotHeight-T)/2+"px",M.bottom="auto"):l.charAt(0)=="s"&&(M.bottom=c+r.bottom+"px",M.top="auto"),l.charAt(1)=="e"?(M.right=c+r.right+"px",M.left="auto"):l.charAt(1)=="w"&&(M.left=c+r.left+"px",M.right="auto");var P=e.create("div"),H;P.className="flotr-legend",e.setStyles(P,M),e.insert(P,O),e.insert(this.el,P);if(!h)return;var B=s.backgroundColor||i.grid.backgroundColor||"#ffffff";t.extend(M,e.size(P),{backgroundColor:B,zIndex:"",border:""}),M.width+="px",M.height+="px",P=e.create("div"),P.className="flotr-legend-bg",e.setStyles(P,M),e.opacity(P,h),e.insert(P," "),e.insert(this.el,P)}}}}}})}(),function(){var e=Flotr.DOM,t=Flotr._,n=Flotr,r="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,t){this.hit.track(t)},"flotr:click":function(e){var n=this.hit.track(e);n&&!t.isUndefined(n.index)&&(e.hit=n)},"flotr:mouseout":function(e){e.relatedTarget!==this.mouseTrack&&this.hit.clearHit()},"flotr:destroy":function(){this.options.mouse.container&&e.remove(this.mouseTrack),this.mouseTrack=null}},track:function(e){if(this.options.mouse.track||t.any(this.series,function(e){return e.mouse&&e.mouse.track}))return this.hit.hit(e)},executeOnType:function(e,r,i){function u(e,u){t.each(t.keys(n.graphTypes),function(t){e[t]&&e[t].show&&this[t][r]&&(o=this.getOptions(e,t),o.fill=!!e.mouse.fillColor,o.fillStyle=this.processColor(e.mouse.fillColor||"#ffffff",{opacity:e.mouse.fillOpacity}),o.color=e.mouse.lineColor,o.context=this.octx,o.index=u,i&&(o.args=i),this[t][r].call(this[t],o),s=!0)},this)}var s=!1,o;return t.isArray(e)||(e=[e]),t.each(e,u,this),s},drawHit:function(e){var t=this.octx,n=e.series;if(n.mouse.lineColor){t.save(),t.lineWidth=n.points?n.points.lineWidth:1,t.strokeStyle=n.mouse.lineColor,t.fillStyle=this.processColor(n.mouse.fillColor||"#ffffff",{opacity:n.mouse.fillOpacity}),t.translate(this.plotOffset.left,this.plotOffset.top);if(!this.hit.executeOnType(n,"drawHit",e)){var r=e.xaxis,i=e.yaxis;t.beginPath(),t.arc(r.d2p(e.x),i.d2p(e.y),n.points.hitRadius||n.points.radius||n.mouse.radius,0,2*Math.PI,!0),t.fill(),t.stroke(),t.closePath()}t.restore(),this.clip(t)}this.prevHit=e},clearHit:function(){var t=this.prevHit,n=this.octx,r=this.plotOffset;n.save(),n.translate(r.left,r.top);if(t){if(!this.hit.executeOnType(t.series,"clearHit",this.prevHit)){var i=t.series,s=i.points?i.points.lineWidth:1;offset=(i.points.hitRadius||i.points.radius||i.mouse.radius)+s,n.clearRect(t.xaxis.d2p(t.x)-offset,t.yaxis.d2p(t.y)-offset,offset*2,offset*2)}e.hide(this.mouseTrack),this.prevHit=null}n.restore()},hit:function(e){var n=this.options,r=this.prevHit,i,s,o,u,a,f,l,c,h;if(this.series.length===0)return;h={relX:e.relX,relY:e.relY,absX:e.absX,absY:e.absY,series:this.series};if(n.mouse.trackY&&!n.mouse.trackAll&&this.hit.executeOnType(this.series,"hit",[e,h])&&!t.isUndefined(h.seriesIndex))a=this.series[h.seriesIndex],h.series=a,h.mouse=a.mouse,h.xaxis=a.xaxis,h.yaxis=a.yaxis;else{i=this.hit.closest(e);if(i){i=n.mouse.trackY?i.point:i.x,u=i.seriesIndex,a=this.series[u],l=a.xaxis,c=a.yaxis,s=2*a.mouse.sensibility;if(n.mouse.trackAll||i.distanceXl.xaxis.max)continue;p=Math.abs(g-v),d=Math.abs(y-m),h=p*p+d*d,h'),this.mouseTrack=c,e.insert(b||this.el,c));if(!g||g<0)g=0;a&&a.toFixed&&(a=a.toFixed(g)),f&&f.toFixed&&(f=f.toFixed(g)),T=n.mouse.trackFormatter({x:a,y:f,series:n.series,index:n.index,nearest:n,fraction:n.fraction});if(t.isNull(T)||t.isUndefined(T)){e.hide(c);return}c.innerHTML=T,e.show(c);if(b)return;x=e.size(c),b&&(S=e.position(this.el),w=S.top,E=S.left);if(!n.mouse.relative)i+="top:",o.charAt(0)=="n"?i+=w+u+m:o.charAt(0)=="s"&&(i+=w-u+m+this.plotHeight-x.height),i+="px;bottom:auto;left:",o.charAt(1)=="e"?i+=E-u+p+this.plotWidth-x.width:o.charAt(1)=="w"&&(i+=E+u+p),i+="px;right:auto;";else if(s.pie&&s.pie.show){var N={x:this.plotWidth/2,y:this.plotHeight/2},C=Math.min(this.canvasWidth,this.canvasHeight)*s.pie.sizeRatio/2,k=n.sAngle(s?e.plotWidth:e.plotHeight))continue;Flotr.drawText(v,n.label,l(e,s,o,a),h(e,s,o,a),u),!s&&!o&&(v.save(),v.strokeStyle=u.color,v.beginPath(),v.moveTo(e.plotOffset.left+e.plotWidth-8,e.plotOffset.top+t.d2p(n.v)),v.lineTo(e.plotOffset.left+e.plotWidth,e.plotOffset.top+t.d2p(n.v)),v.stroke(),v.restore())}}function E(e,t){var r=t.orientation===1,i=t.n===1,o="",u,a,f,l=e.plotOffset;!r&&!i&&(v.save(),v.strokeStyle=t.options.color||d.grid.color,v.beginPath());if(t.options.showLabels&&(i?!0:t.used))for(c=0;c(r?e.canvasWidth:e.canvasHeight))continue;f=l.top+(r?(i?1:-1)*(e.plotHeight+d.grid.labelMargin):t.d2p(n.v)-t.maxLabel.height/2),u=r?l.left+t.d2p(n.v)-s/2:0,o="",c===0?o=" first":c===t.ticks.length-1&&(o=" last"),o+=r?" flotr-grid-label-x":" flotr-grid-label-y",h+=['
'+n.label+"
"].join(" "),!r&&!i&&(v.moveTo(l.left+e.plotWidth-8,l.top+t.d2p(n.v)),v.lineTo(l.left+e.plotWidth,l.top+t.d2p(n.v)))}}var t,n,r,i,s,o,u,a,f,l,c,h="",p=0,d=this.options,v=this.ctx,m=this.axes,g={size:d.fontSize};for(c=0;c-1;--p){if(!n[p].label||n[p].hide)continue;d=s.labelFormatter(n[p].label),E=Math.max(E,this._text.measureText(d,S).width)}var x=Math.round(m+y*3+E),T=Math.round(f*(y+g)+y);!h&&h!==0&&(h=.1);if(!i.HtmlText&&this.textEnabled&&!s.container){l.charAt(0)=="s"&&(w=r.top+this.plotHeight-(c+T)),l.charAt(0)=="c"&&(w=r.top+this.plotHeight/2-(c+T/2)),l.charAt(1)=="e"&&(b=r.left+this.plotWidth-(c+x)),v=this.processColor(s.backgroundColor,{opacity:h}),a.fillStyle=v,a.fillRect(b,w,x,T),a.strokeStyle=s.labelBoxBorderColor,a.strokeRect(Flotr.toPixel(b),Flotr.toPixel(w),x,T);var N=b+y,C=w+y;for(p=0;p":""),u=!0);var k=n[p],L=s.labelBoxWidth,A=s.labelBoxHeight;d=s.labelFormatter(k.label),v="background-color:"+(k.bars&&k.bars.show&&k.bars.fillColor&&k.bars.fill?k.bars.fillColor:k.color)+";",o.push('','
','
','
',"
","
","",'',d,"")}u&&o.push("");if(o.length>0){var O=''+o.join("")+"
";if(s.container)O=e.node(O),this.legend.markup=O,e.insert(s.container,O);else{var M={position:"absolute",zIndex:"2",border:"1px solid "+s.labelBoxBorderColor};l.charAt(0)=="n"?(M.top=c+r.top+"px",M.bottom="auto"):l.charAt(0)=="c"?(M.top=c+(this.plotHeight-T)/2+"px",M.bottom="auto"):l.charAt(0)=="s"&&(M.bottom=c+r.bottom+"px",M.top="auto"),l.charAt(1)=="e"?(M.right=c+r.right+"px",M.left="auto"):l.charAt(1)=="w"&&(M.left=c+r.left+"px",M.right="auto");var P=e.create("div"),H;P.className="flotr-legend",e.setStyles(P,M),e.insert(P,O),e.insert(this.el,P);if(!h)return;var B=s.backgroundColor||i.grid.backgroundColor||"#ffffff";t.extend(M,e.size(P),{backgroundColor:B,zIndex:"",border:""}),M.width+="px",M.height+="px",P=e.create("div"),P.className="flotr-legend-bg",e.setStyles(P,M),e.opacity(P,h),e.insert(P," "),e.insert(this.el,P)}}}}}})}(),function(){var e=Flotr.DOM;Flotr.addPlugin("titles",{callbacks:{"flotr:afterdraw":function(){this.titles.drawTitles()}},drawTitles:function(){var t,n=this.options,r=n.grid.labelMargin,i=this.ctx,s=this.axes;if(!n.HtmlText&&this.textEnabled){var o={size:n.fontSize,color:n.grid.color,textAlign:"center"};n.subtitle&&Flotr.drawText(i,n.subtitle,this.plotOffset.left+this.plotWidth/2,this.titleHeight+this.subtitleHeight-2,o),o.weight=1.5,o.size*=1.5,n.title&&Flotr.drawText(i,n.title,this.plotOffset.left+this.plotWidth/2,this.titleHeight-2,o),o.weight=1.8,o.size*=.8,s.x.options.title&&s.x.used&&(o.textAlign=s.x.options.titleAlign||"center",o.textBaseline="top",o.angle=Flotr.toRad(s.x.options.titleAngle),o=Flotr.getBestTextAlign(o.angle,o),Flotr.drawText(i,s.x.options.title,this.plotOffset.left+this.plotWidth/2,this.plotOffset.top+s.x.maxLabel.height+this.plotHeight+2*r,o)),s.x2.options.title&&s.x2.used&&(o.textAlign=s.x2.options.titleAlign||"center",o.textBaseline="bottom",o.angle=Flotr.toRad(s.x2.options.titleAngle),o=Flotr.getBestTextAlign(o.angle,o),Flotr.drawText(i,s.x2.options.title,this.plotOffset.left+this.plotWidth/2,this.plotOffset.top-s.x2.maxLabel.height-2*r,o)),s.y.options.title&&s.y.used&&(o.textAlign=s.y.options.titleAlign||"right",o.textBaseline="middle",o.angle=Flotr.toRad(s.y.options.titleAngle),o=Flotr.getBestTextAlign(o.angle,o),Flotr.drawText(i,s.y.options.title,this.plotOffset.left-s.y.maxLabel.width-2*r,this.plotOffset.top+this.plotHeight/2,o)),s.y2.options.title&&s.y2.used&&(o.textAlign=s.y2.options.titleAlign||"left",o.textBaseline="middle",o.angle=Flotr.toRad(s.y2.options.titleAngle),o=Flotr.getBestTextAlign(o.angle,o),Flotr.drawText(i,s.y2.options.title,this.plotOffset.left+this.plotWidth+s.y2.maxLabel.width+2*r,this.plotOffset.top+this.plotHeight/2,o))}else{t=[],n.title&&t.push('
',n.title,"
"),n.subtitle&&t.push('
',n.subtitle,"
"),t.push(""),t.push('
'),s.x.options.title&&s.x.used&&t.push('
',s.x.options.title,"
"),s.x2.options.title&&s.x2.used&&t.push('
',s.x2.options.title,"
"),s.y.options.title&&s.y.used&&t.push('
',s.y.options.title,"
"),s.y2.options.title&&s.y2.used&&t.push('
',s.y2.options.title,"
"),t=t.join("");var u=e.create("div");e.setStyles({color:n.grid.color}),u.className="flotr-titles",e.insert(this.el,u),e.insert(u,t)}}})}(),function(){function t(){var t=this.options,n=this.handles,r=this.el,i,s,o,u;if(!t.selection.mode||!t.handles.show||"ontouchstart"in r)return;n.initialized=!0,u=e.node('
'),t=t.handles,t.drag&&(o=e.node('
'),s=e.node('
'),e.insert(u,o),e.insert(u,s),e.hide(s),e.hide(o),n.left=s,n.right=o,this.observe(s,"mousedown",function(){n.moveHandler=a}),this.observe(o,"mousedown",function(){n.moveHandler=f})),t.scroll&&(i=e.node('
'),e.insert(u,i),e.hide(i),n.scroll=i,this.observe(i,"mousedown",function(){n.moveHandler=l})),this.observe(document,"mouseup",function(){n.moveHandler=null}),e.insert(r,u)}function n(e){if(!this.handles.initialized)return;var t=this.handles,n=this.options.handles,s=t.left,o=t.right,u=t.scroll;n&&(n.drag&&(r(this,s,e.x1),r(this,o,e.x2)),n.scroll&&i(this,u,e.x1,e.x2))}function r(t,n,r){e.show(n);var i=e.size(n),s=Math.round(t.axes.x.d2p(r)-i.width/2),o=(t.plotHeight-i.height)/2;e.setStyles(n,{left:s+"px",top:o+"px"})}function i(t,n,r,i){e.show(n);var s=e.size(n),o=Math.round(t.axes.x.d2p(r)),u=t.plotHeight-s.height/2,a=t.axes.x.d2p(i)-t.axes.x.d2p(r);e.setStyles(n,{left:o+"px",top:u+"px",width:a+"px"})}function s(){if(!this.handles.initialized)return;var t=this.handles;t&&(e.hide(t.left),e.hide(t.right),e.hide(t.scroll))}function o(e,t){if(!this.handles.initialized)return;if(!this.handles.moveHandler)return;var n=t.x-this.lastMousePos.x,r=this.selection.selection,i=this.selection.getArea(),s=this.handles;s.moveHandler(i,n),u(i,s),this.selection.setSelection(i)}function u(e,t){var n=t.moveHandler;e.x1>e.x2&&(n==a?n=f:n==f&&(n=a),t.moveHandler=n)}function a(e,t){e.x1+=t}function f(e,t){e.x2+=t}function l(e,t){e.x1+=t,e.x2+=t}var e=Flotr.DOM;Flotr.addPlugin("handles",{options:{show:!1,drag:!0,scroll:!0},callbacks:{"flotr:afterinit":t,"flotr:select":n,"flotr:mousedown":s,"flotr:mousemove":o}})}(),function(){var e=Flotr.EventAdapter,t=Flotr._;Flotr.addPlugin("graphGrid",{callbacks:{"flotr:beforedraw":function(){this.graphGrid.drawGrid()},"flotr:afterdraw":function(){this.graphGrid.drawOutline()}},drawGrid:function(){function v(e){for(p=0;p=c.max||(e==c.min||e==c.max)&&i.outlineWidth)return;r(Math.floor(c.d2p(e))+n.lineWidth/2)})}function g(e){n.moveTo(e,0),n.lineTo(e,f)}function y(e){n.moveTo(0,e),n.lineTo(l,e)}var n=this.ctx,r=this.options,i=r.grid,s=i.verticalLines,o=i.horizontalLines,u=i.minorVerticalLines,a=i.minorHorizontalLines,f=this.plotHeight,l=this.plotWidth,c,h,p,d;(s||u||o||a)&&e.fire(this.el,"flotr:beforegrid",[this.axes.x,this.axes.y,r,this]),n.save(),n.lineWidth=1,n.strokeStyle=i.tickColor;if(i.circular){n.translate(this.plotOffset.left+l/2,this.plotOffset.top+f/2);var b=Math.min(f,l)*r.radar.radiusRatio/2,w=this.axes.x.ticks.length,S=2*(Math.PI/w),x=-Math.PI/2;n.beginPath(),c=this.axes.y,o&&v(c.ticks),a&&v(c.minorTicks),s&&t.times(w,function(e){n.moveTo(0,0),n.lineTo(Math.cos(e*S+x)*b,Math.sin(e*S+x)*b)}),n.stroke()}else n.translate(this.plotOffset.left,this.plotOffset.top),i.backgroundColor&&(n.fillStyle=this.processColor(i.backgroundColor,{x1:0,y1:0,x2:l,y2:f}),n.fillRect(0,0,l,f)),n.beginPath(),c=this.axes.x,s&&m(c.ticks,g),u&&m(c.minorTicks,g),c=this.axes.y,o&&m(c.ticks,y),a&&m(c.minorTicks,y),n.stroke();n.restore(),(s||u||o||a)&&e.fire(this.el,"flotr:aftergrid",[this.axes.x,this.axes.y,r,this])},drawOutline:function(){var e=this,t=e.options,n=t.grid,r=n.outline,s=e.ctx,o=n.backgroundImage,u=e.plotOffset,a=u.left,f=u.top,l=e.plotWidth,c=e.plotHeight,h,p,d,v,m,g;if(!n.outlineWidth)return;s.save();if(n.circular){s.translate(a+l/2,f+c/2);var y=Math.min(c,l)*t.radar.radiusRatio/2,b=this.axes.x.ticks.length,w=2*(Math.PI/b),E=-Math.PI/2;s.beginPath(),s.lineWidth=n.outlineWidth,s.strokeStyle=n.color,s.lineJoin="round";for(i=0;i<=b;++i)s[i===0?"moveTo":"lineTo"](Math.cos(i*w+E)*y,Math.sin(i*w+E)*y);s.stroke()}else{s.translate(a,f);var S=n.outlineWidth,x=.5-S+(S+1)%2/2,T="lineTo",N="moveTo";s.lineWidth=S,s.strokeStyle=n.color,s.lineJoin="miter",s.beginPath(),s.moveTo(x,x),l-=S/2%1,c+=S/2,s[r.indexOf("n")!==-1?T:N](l,x),s[r.indexOf("e")!==-1?T:N](l,c),s[r.indexOf("s")!==-1?T:N](x,c),s[r.indexOf("w")!==-1?T:N](x,x),s.stroke(),s.closePath()}s.restore(),o&&(d=o.src||o,v=(parseInt(o.left,10)||0)+u.left,m=(parseInt(o.top,10)||0)+u.top,p=new Image,p.onload=function(){s.save(),o.alpha&&(s.globalAlpha=o.alpha),s.globalCompositeOperation="destination-over",s.drawImage(p,0,0,p.width,p.height,v,m,l,c),s.restore()},p.src=d)}})}(),!function(e,t){typeof define=="function"?define(t):typeof module!="undefined"?module.exports=t():this[e]=t()}("bonzo",function(){function e(e){return new RegExp("(^|\\s+)"+e+"(\\s+|$)")}function t(e,t,n){for(var r=0,i=e.length;r]+)/.exec(e),n=y.createElement(t&&N[t[1].toLowerCase()]||"div"),r=[];n.innerHTML=e;var i=n.childNodes;n=n.firstChild,r.push(n);while(n=n.nextSibling)n.nodeType==1&&r.push(n);return r}():r(e)?[e.cloneNode(!0)]:[]},v.doc=function(){var e=this.viewport();return{width:Math.max(y.body.scrollWidth,b.scrollWidth,e.width),height:Math.max(y.body.scrollHeight,b.scrollHeight,e.height)}},v.firstChild=function(e){for(var t=e.childNodes,n=0,r=t&&t.length||0,i;n=0&&t
';r.prototype={render:function(e){var t=this.node,n=this.options;e=e||n.element;if(!e)throw"No element to render within.";bonzo(e).addClass(n.name||"").append(this.node),this._setDimension("width"),this._setDimension("height"),this.container=e,this.draw(n.data,n.config)},draw:function(t,n){var r=this.api,i=this.options,s=this.preprocessors,o;o=t=t||i.data,n=n||i.config,!i.skipPreprocess&&t&&(o=[],_.each(r.getDataArray(t),function(u,a){var f=s[a]||new e.Preprocessor,l=_.isArray(u),c=_.isFunction(u),h=l?u:c?u:u.data,p=i.processData,d=r.range(n),v=d.min,m=d.max,g=this.node.clientWidth,y=u,b,w;!c&&!l&&(y=u.data,w=_.extend({},u)),c?b=t(v,m,g):(y!==f.data?f.setData(y):f.reset(),p?(p.apply(this,[{preprocessor:f,min:v,max:m,resolution:g}]),b=f.getData()):b=f.bound(v,m).subsampleMinMax(g).getData()),r.transformData&&(b=r.transformData(b)),w?(w.data=b,o.push(w)):o.push(b)},this)),r&&r.draw(o,n,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(){this.api&&this.api.destroy&&this.api.destroy(),bonzo(this.container).empty()},_setDimension:function(e){var t=this.node,n=this.options;n[e]?bonzo(t).css(e,n[e]):n[e]=t.clientWidth,this[e]=n[e]}},e.Component=r}(),function(){function t(e){this.options=e=e||{},this.actions=[],this.actionOptions=[],this.followers=[],this.leaders=[],this.prevent={},e.leader&&this.leader(e.leader)}var e=envision;t.prototype={leader:function(e){return this.leaders.push(e),_.each(this.actions,function(t,n){this._bindLeader(e,t,this.actionOptions[n])},this),this},follower:function(e){return this.followers.push(e),this},group:function(e){return _.isArray(e)||(e=[e]),_.each(e,function(e){this.leader(e),this.follower(e)},this),this},add:function(e,t){return this.actions.push(e),this.actionOptions.push(t),_.each(this.leaders,function(n){this._bindLeader(n,e,t)},this),this},_bindLeader:function(e,t,n){_.each(t.events,function(t){var r=t.handler||t,i=t.consumer||t;e.attach(r,_.bind(function(e,t){if(this.prevent[name])return;n&&n.callback&&n.callback.call(this,t),this.prevent[name]=!0;try{_.each(this.followers,function(n){if(e===n)return;n.trigger(i,t)},this)}catch(r){throw this.prevent[name]=!1,r}this.prevent[name]=!1},this))},this)}},e.Interaction=t}(),function(){function e(e){e=e||{},this.getData=function(){return this.bounded&&r(this),this.processing},this.reset=function(){return this.processing=this.data,this},this.setData=function(e){var t,n;if(!_.isArray(e))throw new Error("Array expected.");if(e.length<2)throw new Error("Data must contain at least two dimensions.");n=e[0].length;for(t=e.length;t--;){if(!_.isArray(e[t]))throw new Error("Data dimensions must be arrays.");if(e[t].length!==n)throw new Error("Data dimensions must contain the same number of points.")}return this.processing=e,this.data=e,this},e.data&&this.setData(e.data)}function t(e,t){var n=_.sortedIndex(e,t);return e[n]>t&&n>0&&n--,n}function n(e,t){return _.sortedIndex(e,t)}function r(e){delete e.bounded;var r=e.processing,i=e.length(),s=r[0],o=r[1],u=e.min||0,a=e.max||i,f=t(s,u),l=n(s,a);e.processing=[s.slice(f,l+1),o.slice(f,l+1)],e.start=f,e.end=l}function i(e,t,n,r,i,s,o,u,a){var f=(e-r)/(s-r),l=1-f,c=(1+2*f)*l*l,h=f*l*l,p=f*f*(3-2*f),d=f*f*(f-1),v=(o-i)/(2*(s-r))+(typeof n=="undefined"?0:(i-n)/(2*(r-t))),m=(typeof a=="undefined"?0:(a-o)/(2*(u-s)))+(o-i)/(2*(s-r)),g=c*i+h*(s-r)*v+p*o+d*(s-r)*m;return g}e.prototype={length:function(){return this.getData()[0].length},bound:function(e,t){return!_.isNumber(e)||!_.isNumber(t)?this:(this.min=e,this.max=t,this.bounded=!0,this)},subsampleMinMax:function(e){var r=this.bounded;delete this.bounded;var i=this.processing,s=this.length(),o=i[0],u=i[1],a=r?t(o,this.min):0,f=r?n(o,this.max):s-1,l=(e-2)/2,c=[],h=[],p=Number.MAX_VALUE,d=-Number.MAX_VALUE,v=1,m=1,g=(f-a)/l,y,b,w,E;if(f-a+1>e){c.push(o[a]),h.push(u[a]),y=a+g;for(w=a;wd&&(d=u[w],m=w),u[w]e){c.push(o[a]),h.push(u[a]);for(p=1;p=f-l)break;d=Math.round(p*l)+a,c.push(o[d]),h.push(u[d])}c.push(o[f]),h.push(u[f]),this.processing=[c,h],this.start=a,this.end=f}else this.bounded=r;return this},interpolate:function(e){var r=this.bounded;delete this.bounded;var s=this.processing,o=this.length(),u=s[0],a=s[1],f=r?t(u,this.min):0,l=r?n(u,this.max):o-1,c=(u[l]-u[f])/e,h=[],p=[],d,v,m;h.push(u[f]),p.push(a[f]);if(l-f+1=s-1?r.lineTo(a,i):(r.quadraticCurveTo(s,o,Math.max(s-o,s-(s-a)/2),o),r.lineTo(Math.min(a+o,s-(s-a)/2),o),r.quadraticCurveTo(a,o,a,i)),r.stroke(),r.closePath(),r.fill(),r.restore()},trigger:function(e,t -,n){t==="zoom"?this.zoom(e,n):t==="reset"&&this.reset(e)},zoom:function(e,t){var n=t.x||{},r=n.min,i=n.max,s=e.api;e.draw(null,{min:r,max:i})},reset:function(e){e.draw(null,{min:e.width/2,max:e.width/2})}},envision.components.QuadraticDrawing=e}(),envision.templates=envision.templates||{},function(){function t(e){var t=e.resolution;e.preprocessor.bound(e.min,e.max).subsampleMinMax(t+Math.round(t/3))}function n(){return{price:{name:"envision-finance-price",config:{"lite-lines":{lineWidth:1,show:!0,fill:!0,fillOpacity:.2},mouse:{track:!0,trackY:!1,trackAll:!0,sensibility:1,trackDecimals:4,position:"ne"},yaxis:{autoscale:!0,autoscaleMargin:.05,noTicks:4,showLabels:!0,min:0}},processData:t},volume:{name:"envision-finance-volume",config:{whiskers:{show:!0,lineWidth:2},mouse:{track:!0,trackY:!1,trackAll:!0},yaxis:{autoscale:!0,autoscaleMargin:.5}},processData:t},summary:{name:"envision-finance-summary",config:{"lite-lines":{show:!0,lineWidth:1,fill:!0,fillOpacity:.2,fillBorder:!0},xaxis:{noTicks:5,showLabels:!0},yaxis:{autoscale:!0,autoscaleMargin:.1},handles:{show:!0},selection:{mode:"x"},grid:{verticalLines:!1}}},connection:{name:"envision-finance-connection",adapterConstructor:e.components.QuadraticDrawing}}}function r(t){var r=t.data,i=n(),s=new e.Visualization({name:"envision-finance"}),o=new e.Interaction,u=new e.Interaction,a,f,l,c;t.defaults&&(i=Flotr.merge(t.defaults,i)),i.price.data=r.price,i.volume.data=r.volume,i.summary.data=r.summary,i.price.config.mouse.trackFormatter=t.trackFormatter||function(e){var t=e.index,n;return a.api.preprocessor&&(t+=a.api.preprocessor.start),n="Price: $"+r.price[1][t]+", Vol: "+r.volume[1][t],n},t.xTickFormatter&&(i.summary.config.xaxis.tickFormatter=t.xTickFormatter),i.price.config.yaxis.tickFormatter=t.yTickFormatter||function(e){return"$"+e},a=new e.Component(i.price),f=new e.Component(i.volume),l=new e.Component(i.connection),c=new e.Component(i.summary),s.add(a).add(f).add(l).add(c).render(t.container),o.follower(a).follower(f).follower(l).leader(c).add(e.actions.selection,t.selectionCallback?{callback:t.selectionCallback}:null),u.group([a,f]).add(e.actions.hit),t.selection&&c.trigger("select",t.selection),this.vis=s,this.selection=o,this.hit=u,this.price=a,this.volume=f,this.summary=c}var e=envision;e.templates.Finance=r}(),function(){function t(){return{detail:{name:"envision-timeseries-detail",config:{"lite-lines":{lineWidth:1,show:!0}}},summary:{name:"envision-timeseries-summary",config:{"lite-lines":{lineWidth:1,show:!0},handles:{show:!0},selection:{mode:"x"},yaxis:{autoscale:!0,autoscaleMargin:.1}}},connection:{name:"envision-timeseries-connection",adapterConstructor:e.components.QuadraticDrawing}}}function n(n){var r=n.data,i=t(),s=new e.Visualization({name:"envision-timeseries"}),o=new e.Interaction,u,a,f;n.defaults&&(i=Flotr.merge(n.defaults,i)),i.detail.data=r.detail,i.summary.data=r.summary,u=new e.Component(i.detail),f=new e.Component(i.connection),a=new e.Component(i.summary),s.add(u).add(f).add(a).render(n.container),o.follower(u).follower(f).leader(a).add(e.actions.selection,n.selectionCallback?{callback:n.selectionCallback}:null),n.selection&&a.trigger("select",n.selection),this.vis=s,this.selection=o,this.detail=u,this.summary=a}var e=envision;e.templates.TimeSeries=n}(),function(){function n(){return{name:"zoom"}}function r(){return{name:"summary",config:{handles:{show:!0},selection:{mode:"x"}}}}function i(e,t){var n=_.defaults(e,t);return n.flotr=_.defaults(n.flotr,t.flotr),n}var e=envision,t;t=function(t){var s=new e.Visualization,o=new e.Component(i(t.zoom||{},n())),u=new e.Component(i(t.summary||{},r())),a=new e.Interaction({leader:u});s.add(o).add(u),a.add(e.actions.selection),a.follower(o),this.vis=s,this.interaction=a,t.container&&this.render(t.container)},t.prototype={render:function(e){this.vis.render(e)}},e.templates.Zoom=t}(),function(){function e(e){return e.target}function t(e){return e.source}function n(e,t){try{for(var n in t)Object.defineProperty(e.prototype,n,{value:t[n],enumerable:!1})}catch(r){e.prototype=t}}function r(e){var t=-1,n=e.length,r=[];while(++t8?function(e){return e/n}:function(e){return e*n},symbol:e}}function T(e){return function(t){return t<=0?0:t>=1?1:e(t)}}function N(e){return function(t){return 1-e(1-t)}}function C(e){return function(t){return.5*(t<.5?e(2*t):2-e(2-2*t))}}function k(e){return e*e}function L(e){return e*e*e}function A(e){if(e<=0)return 0;if(e>=1)return 1;var t=e*e,n=t*e;return 4*(e<.5?n:3*(e-t)+n-.75)}function O(e){return function(t){return Math.pow(t,e)}}function M(e){return 1-Math.cos(e*cr/2)}function _(e){return Math.pow(2,10*(e-1))}function D(e){return 1-Math.sqrt(1-e*e)}function P(e,t){var n;return arguments.length<2&&(t=.45),arguments.length?n=t/(2*cr)*Math.asin(1/e):(e=1,n=t/4),function(r){return 1+e*Math.pow(2,10*-r)*Math.sin((r-n)*2*cr/t)}}function H(e){return e||(e=1.70158),function(t){return t*t*((e+1)*t-e)}}function B(e){return e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375}function j(){d3.event.stopPropagation(),d3.event.preventDefault()}function F(){var e=d3.event,t;while(t=e.sourceEvent)e=t;return e}function I(e){var t=new b,n=0,r=arguments.length;while(++n360?e-=360:e<0&&(e+=360),e<60?s+(o-s)*e/60:e<180?o:e<240?s+(o-s)*(240-e)/60:s}function i(e){return Math.round(r(e)*255)}var s,o;return e%=360,e<0&&(e+=360),t=t<0?0:t>1?1:t,n=n<0?0:n>1?1:n,o=n<=.5?n*(1+t):n+t-n*t,s=2*n-o,J(i(e+120),i(e),i(e-120))}function st(e,t,n){return new ot(e,t,n)}function ot(e,t,n){this.h=e,this.c=t,this.l=n}function ut(e,t,n){return at(n,Math.cos(e*=pr)*t,Math.sin(e)*t)}function at(e,t,n){return new ft(e,t,n)}function ft(e,t,n){this.l=e,this.a=t,this.b=n}function lt(e,t,n){var r=(e+16)/116,i=r+t/500,s=r-n/200;return i=ht(i)*Fr,r=ht(r)*Ir,s=ht(s)*qr,J(dt(3.2404542*i-1.5371385*r-.4985314*s),dt(-0.969266*i+1.8760108*r+.041556*s),dt(.0556434*i-.2040259*r+1.0572252*s))}function ct(e,t,n){return st(Math.atan2(n,t)/cr*180,Math.sqrt(t*t+n*n),e)}function ht(e){return e>.206893034?e*e*e:(e-4/29)/7.787037}function pt(e){return e>.008856?Math.pow(e,1/3):7.787037*e+4/29}function dt(e){return Math.round(255*(e<=.00304?12.92*e:1.055*Math.pow(e,1/2.4)-.055))}function vt(e){return gr(e,$r),e}function mt(e){return function(){return Ur(e,this)}}function gt(e){return function(){return zr(e,this)}}function yt(e,t){function n(){this.removeAttribute(e)}function r(){this.removeAttributeNS(e.space,e.local)}function i(){this.setAttribute(e,t)}function s(){this.setAttributeNS(e.space,e.local,t)}function o(){var n=t.apply(this,arguments);n==null?this.removeAttribute(e):this.setAttribute(e,n)}function u(){var n=t.apply(this,arguments);n==null?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,n)}return e=d3.ns.qualify(e),t==null?e.local?r:n:typeof t=="function"?e.local?u:o:e.local?s:i}function bt(e){return new RegExp("(?:^|\\s+)"+d3.requote(e)+"(?:\\s+|$)","g")}function wt(e,t){function n(){var n=-1;while(++n0&&(e=e.substring(0,o)),t?i:r}function Lt(e,t){for(var n=0,r=e.length;nn?f():(i.active=n,h.start.call(e,l,t),o.tween.forEach(function(n,r){(r=r.call(e,l,t))&&v.push(r)}),a(r)||d3.timer(a,0,u),1)}function a(r){if(i.active!==n)return f();var s=(r-p)/d,o=c(s),u=v.length;while(u>0)v[--u].call(e,o);if(s>=1)return f(),h.end.call(e,l,t),1}function f(){return--i.count?delete i[n]:delete e.__transition__,1}var l=e.__data__,c=o.ease,h=o.event,p=o.delay,d=o.duration,v=[];return p<=r?s(r):d3.timer(s,p,u),1},0,u),o}}function _t(e){return e==null&&(e=""),function(){this.textContent=e}}function Dt(e,t,n,r){var i=e.id;return Lt(e,typeof n=="function"?function(e,s,o){e.__transition__[i].tween.set(t,r(n.call(e,e.__data__,s,o)))}:(n=r(n),function(e){e.__transition__[i].tween.set(t,n)}))}function Pt(){var e,t=Date.now(),n=ni;while(n)e=t-n.then,e>=n.delay&&(n.flush=n.callback(e)),n=n.next;var r=Ht()-t;r>24?(isFinite(r)&&(clearTimeout(ii),ii=setTimeout(Pt,r)),ri=0):(ri=1,si(Pt))}function Ht(){var e=null,t=ni,n=Infinity;while(t)t.flush?(delete ti[t.callback.id],t=e?e.next=t.next:ni=t.next):(n=Math.min(n,t.then+t.delay),t=(e=t).next);return n}function Bt(e,t){var n=e.ownerSVGElement||e;if(n.createSVGPoint){var r=n.createSVGPoint();if(oi<0&&(window.scrollX||window.scrollY)){n=d3.select(document.body).append("svg").style("position","absolute").style("top",0).style("left",0);var i=n[0][0].getScreenCTM();oi=!i.f&&!i.e,n.remove()}return oi?(r.x=t.pageX,r.y=t.pageY):(r.x=t.clientX,r.y=t.clientY),r=r.matrixTransform(e.getScreenCTM().inverse()),[r.x,r.y]}var s=e.getBoundingClientRect();return[t.clientX-s.left-e.clientLeft,t.clientY-s.top-e.clientTop]}function jt(){}function Ft(e){var t=e[0],n=e[e.length-1];return t2?Kt:Jt,a=r?V:X;return o=i(e,t,a,n),u=i(t,e,a,d3.interpolate),s}function s(e){return o(e)}var o,u;return s.invert=function(e){return u(e)},s.domain=function(t){return arguments.length?(e=t.map(Number),i()):e},s.range=function(e){return arguments.length?(t=e,i()):t},s.rangeRound=function(e){return s.range(e).interpolate(d3.interpolateRound)},s.clamp=function(e){return arguments.length?(r=e,i()):r},s.interpolate=function(e){return arguments.length?(n=e,i()):n},s.ticks=function(t){return Vt(e,t)},s.tickFormat=function(t){return $t(e,t)},s.nice=function(){return qt(e,Wt),i()},s.copy=function(){return Ut(e,t,n,r)},i()}function zt(e,t){return d3.rebind(e,t,"range","rangeRound","interpolate","clamp")}function Wt(e){return e=Math.pow(10,Math.round(Math.log(e)/Math.LN10)-1),e&&{floor:function(t){return Math.floor(t/e)*e},ceil:function(t){return Math.ceil(t/e)*e}}}function Xt(e,t){var n=Ft(e),r=n[1]-n[0],i=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),s=t/r*i;return s<=.15?i*=10:s<=.35?i*=5:s<=.75&&(i*=2),n[0]=Math.ceil(n[0]/i)*i,n[1]=Math.floor(n[1]/i)*i+i*.5,n[2]=i,n}function Vt(e,t){return d3.range.apply(d3,Xt(e,t))}function $t(e,t){return d3.format(",."+Math.max(0,-Math.floor(Math.log(Xt(e,t)[2])/Math.LN10+.01))+"f")}function Jt(e,t,n,r){var i=n(e[0],e[1]),s=r(t[0],t[1]);return function(e){return s(i(e))}}function Kt(e,t,n,r){var i=[],s=[],o=0,u=Math.min(e.length,t.length)-1;e[u]0;f--)i.push(r(s)*f)}else{for(;sa;o--);i=i.slice(s,o)}return i},n.tickFormat=function(e,i){arguments.length<2&&(i=ui);if(!arguments.length)return i;var s=Math.max(.1,e/n.ticks().length),o=t===Yt?(u=-1e-12,Math.floor):(u=1e-12,Math.ceil),u;return function(e){return e/r(o(t(e)+u))<=s?i(e):""}},n.copy=function(){return Qt(e.copy(),t)},zt(n,e)}function Gt(e){return Math.log(e<0?0:e)/Math.LN10}function Yt(e){return-Math.log(e>0?0:-e)/Math.LN10}function Zt(e,t){function n(t){return e(r(t))}var r=en(t),i=en(1/t);return n.invert=function(t){return i(e.invert(t))},n.domain=function(t){return arguments.length?(e.domain(t.map(r)),n):e.domain().map(i)},n.ticks=function(e){return Vt(n.domain(),e)},n.tickFormat=function(e){return $t(n.domain(),e)},n.nice=function(){return n.domain(qt(n.domain(),Wt))},n.exponent=function(e){if(!arguments.length)return t;var s=n.domain();return r=en(t=e),i=en(1/t),n.domain(s)},n.copy=function(){return Zt(e.copy(),t)},zt(n,e)}function en(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function tn(e,t){function n(t){return o[((i.get(t)||i.set(t,e.push(t)))-1)%o.length]}function r(t,n){return d3.range(e.length).map(function(e){return t+n*e})}var i,o,u;return n.domain=function(r){if(!arguments.length)return e;e=[],i=new s;var o=-1,u=r.length,a;while(++or&&(n=t,r=i);return n}function xn(e){return e.reduce(Tn,0)}function Tn(e,t){return e+t[1]}function Nn(e,t){return Cn(e,Math.ceil(Math.log(t.length)/Math.LN2+1))}function Cn(e,t){var n=-1,r=+e[0],i=(e[1]-r)/t,s=[];while(++n<=t)s[n]=i*n+r;return s}function kn(e){return[d3.min(e),d3.max(e)]}function Ln(e,t){return d3.rebind(e,t,"sort","children","value"),e.nodes=e,e.links=_n,e}function An(e){return e.children}function On(e){return e.value}function Mn(e,t){return t.value-e.value}function _n(e){return d3.merge(e.map(function(e){return(e.children||[]).map(function(t){return{source:e,target:t}})}))}function Dn(e,t){return e.value-t.value}function Pn(e,t){var n=e._pack_next;e._pack_next=t,t._pack_prev=e,t._pack_next=n,n._pack_prev=t}function Hn(e,t){e._pack_next=t,t._pack_prev=e}function Bn(e,t){var n=t.x-e.x,r=t.y-e.y,i=e.r+t.r;return i*i-n*n-r*r>.001}function jn(e){function t(e){r=Math.min(e.x-e.r,r),i=Math.max(e.x+e.r,i),s=Math.min(e.y-e.r,s),o=Math.max(e.y+e.r,o)}if(!(n=e.children)||!(p=n.length))return;var n,r=Infinity,i=-Infinity,s=Infinity,o=-Infinity,u,a,f,l,c,h,p;n.forEach(Fn),u=n[0],u.x=-u.r,u.y=0,t(u);if(p>1){a=n[1],a.x=a.r,a.y=0,t(a);if(p>2){f=n[2],Rn(u,a,f),t(f),Pn(u,f),u._pack_prev=f,Pn(f,a),a=u._pack_next;for(l=3;l0&&(e=r)}return e}function Qn(e,t){return e.x-t.x}function Gn(e,t){return t.x-e.x}function Yn(e,t){return e.depth-t.depth}function Zn(e,t){function n(e,r){var i=e.children;if(i&&(a=i.length)){var s,o=null,u=-1,a;while(++u=0)s=r[i]._tree,s.prelim+=t,s.mod+=t,t+=s.shift+(n+=s.change)}function tr(e,t,n){e=e._tree,t=t._tree;var r=n/(t.number-e.number);e.change+=r,t.change-=r,t.shift+=n,t.prelim+=n,t.mod+=n}function nr(e,t,n){return e._tree.ancestor.parent==t.parent?e._tree.ancestor:n}function rr(e){return{x:e.x,y:e.y,dx:e.dx,dy:e.dy}}function ir(e,t){var n=e.x+t[3],r=e.y+t[0],i=e.dx-t[1]-t[3],s=e.dy-t[0]-t[2];return i<0&&(n+=i/2,i=0),s<0&&(r+=s/2,s=0),{x:n,y:r,dx:i,dy:s}}var sr=".",or=",",ur=[3,3];Date.now||(Date.now=function(){return+(new Date)});try{document.createElement("div").style.setProperty("opacity",0,"")}catch(ar){var fr=CSSStyleDeclaration.prototype,lr=fr.setProperty;fr.setProperty=function(e,t,n){lr.call(this,e,t+"",n)}}d3={version:"3.0.2"};var cr=Math.PI,hr=1e-6,pr=cr/180,dr=180/cr,vr=i;try{vr(document.documentElement.childNodes)[0].nodeType}catch(mr){vr=r}var gr=[].__proto__?function(e,t){e.__proto__=t}:function(e,t){for(var n in t)e[n]=t[n]};d3.map=function(e){var t=new s;for(var n in e)t.set(n,e[n]);return t},n(s,{has:function(e){return yr+e in this},get:function(e){return this[yr+e]},set:function(e,t){return this[yr+e]=t},remove:function(e){return e=yr+e,e in this&&delete this[e]},keys:function(){var e=[];return this.forEach(function(t){e.push(t)}),e},values:function(){var e=[];return this.forEach(function(t,n){e.push(n)}),e},entries:function(){var e=[];return this.forEach(function(t,n){e.push({key:t,value:n})}),e},forEach:function(e){for(var t in this)t.charCodeAt(0)===br&&e.call(this,t.substring(1),this[t])}});var yr="\0",br=yr.charCodeAt(0);d3.functor=a,d3.rebind=function(e,t){var n=1,r=arguments.length,i;while(++nt?1:e>=t?0:NaN},d3.descending=function(e,t){return te?1:t>=e?0:NaN},d3.mean=function(e,t){var n=e.length,r,i=0,s=-1,o=0;if(arguments.length===1)while(++s1&&(e=e.map(t)),e=e.filter(l),e.length?d3.quantile(e.sort(d3.ascending),.5):undefined},d3.min=function(e,t){var n=-1,r=e.length,i,s;if(arguments.length===1){while(++ns&&(i=s)}else{while(++ns&&(i=s)}return i},d3.max=function(e,t){var n=-1,r=e.length,i,s;if(arguments.length===1){while(++ni&&(i=s)}else{while(++ni&&(i=s)}return i},d3.extent=function(e,t){var n=-1,r=e.length,i,s,o;if(arguments.length===1){while(++ns&&(i=s),os&&(i=s),o1);return e+t*n*Math.sqrt(-2*Math.log(i)/i)}},logNormal:function(e,t){var n=arguments.length;n<2&&(t=1),n<1&&(e=0);var r=d3.random.normal();return function(){return Math.exp(e+t*r())}},irwinHall:function(e){return function(){for(var t=0,n=0;n>>1;e.call(t,t[s],s)>>1;n=r.length)return u?u.call(n,t):o?t.sort(o):t;var a=-1,f=t.length,l=r[i++],c,h,p=new s,d,v={};while(++a=r.length)return e;var s=[],o=i[n++],u;for(u in e)s.push({key:u,values:t(e[u],n)});return o&&s.sort(function(e,t){return o(e.key,t.key)}),s}var n={},r=[],i=[],o,u;return n.map=function(t){return e(t,0)},n.entries=function(n){return t(e(n,0),0)},n.key=function(e){return r.push(e),n},n.sortKeys=function(e){return i[r.length-1]=e,n},n.sortValues=function(e){return o=e,n},n.rollup=function(e){return u=e,n},n},d3.keys=function(e){var t=[];for(var n in e)t.push(n);return t},d3.values=function(e){var t=[];for(var n in e)t.push(e[n]);return t},d3.entries=function(e){var t=[];for(var n in e)t.push({key:n,value:e[n]});return t},d3.permute=function(e,t){var n=[],r=-1,i=t.length;while(++rt)r.push(o/i);else while((o=e+n*++s)=200&&e<300||e===304?s.load.call(i,a.call(i,f)):s.error.call(i,f)}var i={},s=d3.dispatch("progress","load","error"),u={},a=o,f=new(window.XDomainRequest&&/^(http(s)?:)?\/\//.test(e)?XDomainRequest:XMLHttpRequest);return"onload"in f?f.onload=f.onerror=r:f.onreadystatechange=function(){f.readyState>3&&r()},f.onprogress=function(e){var t=d3.event;d3.event=e;try{s.progress.call(i,f)}finally{d3.event=t}},i.header=function(e,t){return e=(e+"").toLowerCase(),arguments.length<2?u[e]:(t==null?delete u[e]:u[e]=t+"",i)},i.mimeType=function(e){return arguments.length?(t=e==null?null:e+"",i):t},i.response=function(e){return a=e,i},["get","post"].forEach(function(e){i[e]=function(){return i.send.apply(i,[e].concat(vr(arguments)))}}),i.send=function(n,r,s){arguments.length===2&&typeof r=="function"&&(s=r,r=null),f.open(n,e,!0),t!=null&&!("accept"in u)&&(u.accept=t+",*/*");if(f.setRequestHeader)for(var o in u)f.setRequestHeader(o,u[o]);return t!=null&&f.overrideMimeType&&f.overrideMimeType(t),s!=null&&i.on("error",s).on("load",function(e){s(null,e)}),f.send(r==null?null:r),i},i.abort=function(){return f.abort(),i},d3.rebind(i,s,"on"),arguments.length===2&&typeof t=="function"&&(n=t,t=null),n==null?i:i.get(d(n))},d3.text=function(){return d3.xhr.apply(d3,arguments).response(v)},d3.json=function(e,t){return d3.xhr(e,"application/json",t).response(m)},d3.html=function(e,t){return d3.xhr(e,"text/html",t).response(g)},d3.xml=function(){return d3.xhr.apply(d3,arguments).response(y)};var Sr={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:Sr,qualify:function(e){var t=e.indexOf(":"),n=e;return t>=0&&(n=e.substring(0,t),e=e.substring(t+1)),Sr.hasOwnProperty(n)?{space:Sr[n],local:e}:e}},d3.dispatch=function(){var e=new b,t=-1,n=arguments.length;while(++t0&&(r=e.substring(n+1),e=e.substring(0,n)),arguments.length<2?this[e].on(r):this[e].on(r,t)},d3.format=function(e){var t=xr.exec(e),n=t[1]||" ",r=t[2]||">",i=t[3]||"",s=t[4]||"",o=t[5],u=+t[6],a=t[7],f=t[8],l=t[9],c=1,h="",p=!1;f&&(f=+f.substring(1));if(o||n==="0"&&r==="=")o=n="0",r="=",a&&(u-=Math.floor((u-1)/4));switch(l){case"n":a=!0,l="g";break;case"%":c=100,h="%",l="f";break;case"p":c=100,h="%",l="r";break;case"b":case"o":case"x":case"X":s&&(s="0"+l.toLowerCase());case"c":case"d":p=!0,f=0;break;case"s" -:c=-1,l="r"}s==="#"&&(s=""),l=="r"&&!f&&(l="g"),l=Tr.get(l)||S;var d=o&&a;return function(e){if(p&&e%1)return"";var t=e<0||e===0&&1/e<0?(e=-e,"-"):i;if(c<0){var v=d3.formatPrefix(e,f);e=v.scale(e),h=v.symbol}else e*=c;e=l(e,f),!o&&a&&(e=Nr(e));var m=s.length+e.length+(d?0:t.length),g=m"?g+t+e:r==="^"?g.substring(0,m>>=1)+t+e+g.substring(m):t+(d?e:g+e))+h}};var xr=/(?:([^{])?([<>=^]))?([+\- ])?(#)?(0)?([0-9]+)?(,)?(\.[0-9]+)?([a-zA-Z%])?/,Tr=d3.map({b:function(e){return e.toString(2)},c:function(e){return String.fromCharCode(e)},o:function(e){return e.toString(8)},x:function(e){return e.toString(16)},X:function(e){return e.toString(16).toUpperCase()},g:function(e,t){return e.toPrecision(t)},e:function(e,t){return e.toExponential(t)},f:function(e,t){return e.toFixed(t)},r:function(e,t){return d3.round(e,t=E(e,t)).toFixed(Math.max(0,Math.min(20,t)))}}),Nr=o;if(ur){var Cr=ur.length;Nr=function(e){var t=e.lastIndexOf("."),n=t>=0?"."+e.substring(t+1):(t=e.length,""),r=[],i=0,s=ur[0];while(t>0&&s>0)r.push(e.substring(t-=s,t+s)),s=ur[i=(i+1)%Cr];return r.reverse().join(or||"")+n}}var kr=["y","z","a","f","p","n","μ","m","","k","M","G","T","P","E","Z","Y"].map(x);d3.formatPrefix=function(e,t){var n=0;return e&&(e<0&&(e*=-1),t&&(e=d3.round(e,E(e,t))),n=1+Math.floor(1e-12+Math.log(e)/Math.LN10),n=Math.max(-24,Math.min(24,Math.floor((n<=0?n+1:n-1)/3)*3))),kr[8+n/3]};var Lr=function(){return o},Ar=d3.map({linear:Lr,poly:O,quad:function(){return k},cubic:function(){return L},sin:function(){return M},exp:function(){return _},circle:function(){return D},elastic:P,back:H,bounce:function(){return B}}),Or=d3.map({"in":o,out:N,"in-out":C,"out-in":function(e){return C(N(e))}});d3.ease=function(e){var t=e.indexOf("-"),n=t>=0?e.substring(0,t):e,r=t>=0?e.substring(t+1):"in";return n=Ar.get(n)||Lr,r=Or.get(r)||o,T(r(n.apply(null,Array.prototype.slice.call(arguments,1))))},d3.event=null,d3.transform=function(e){var t=document.createElementNS(d3.ns.prefix.svg,"g");return(d3.transform=function(e){t.setAttribute("transform",e);var n=t.transform.baseVal.consolidate();return new q(n?n.matrix:Mr)})(e)},q.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var Mr={a:1,b:0,c:0,d:1,e:0,f:0};d3.interpolate=function(e,t){var n=d3.interpolators.length,r;while(--n>=0&&!(r=d3.interpolators[n](e,t)));return r},d3.interpolateNumber=function(e,t){return t-=e,function(n){return e+t*n}},d3.interpolateRound=function(e,t){return t-=e,function(n){return Math.round(e+t*n)}},d3.interpolateString=function(e,t){var n,r,i,s=0,o=0,u=[],a=[],f,l;_r.lastIndex=0;for(r=0;n=_r.exec(t);++r)n.index&&u.push(t.substring(s,o=n.index)),a.push({i:u.length,x:n[0]}),u.push(null),s=_r.lastIndex;s180?l+=360:l-f>180&&(f+=360),r.push({i:n.push(n.pop()+"rotate(",null,")")-2,x:d3.interpolateNumber(f,l)})):l&&n.push(n.pop()+"rotate("+l+")"),c!=h?r.push({i:n.push(n.pop()+"skewX(",null,")")-2,x:d3.interpolateNumber(c,h)}):h&&n.push(n.pop()+"skewX("+h+")"),p[0]!=d[0]||p[1]!=d[1]?(i=n.push(n.pop()+"scale(",null,",",null,")"),r.push({i:i-4,x:d3.interpolateNumber(p[0],d[0])},{i:i-2,x:d3.interpolateNumber(p[1],d[1])})):(d[0]!=1||d[1]!=1)&&n.push(n.pop()+"scale("+d+")"),i=r.length,function(e){var t=-1,s;while(++t180?s-=360:s<-180&&(s+=360),function(e){return it(n+s*e,r+o*e,i+u*e)+""}},d3.interpolateLab=function(e,t){e=d3.lab(e),t=d3.lab(t);var n=e.l,r=e.a,i=e.b,s=t.l-n,o=t.a-r,u=t.b-i;return function(e){return lt(n+s*e,r+o*e,i+u*e)+""}},d3.interpolateHcl=function(e,t){e=d3.hcl(e),t=d3.hcl(t);var n=e.h,r=e.c,i=e.l,s=t.h-n,o=t.c-r,u=t.l-i;return s>180?s-=360:s<-180&&(s+=360),function(e){return ut(n+s*e,r+o*e,i+u*e)+""}},d3.interpolateArray=function(e,t){var n=[],r=[],i=e.length,s=t.length,o=Math.min(e.length,t.length),u;for(u=0;u=0;)if(s=n[r])i&&i!==s.nextSibling&&i.parentNode.insertBefore(s,i),i=s;return this},$r.sort=function(e){e=Ct.apply(this,arguments);for(var t=-1,n=this.length;++t0?u=e:u=0:e>0&&(r.start({type:"start",alpha:u=e}),d3.timer(n.tick)),n):u},n.start=function(){function e(e,n){var i=t(r),s=-1,o=i.length,u;while(++si&&(i=u),r.push(u)}for(o=0;o0){s=-1;while(++s=a[0]&&d<=a[1]&&(l=o[d3.bisect(f,d,1,h)-1],l.y+=p,l.push(e[s]))}return o}var t=!0,n=Number,r=kn,i=Nn;return e.value=function(t){return arguments.length?(n=t,e):n},e.range=function(t){return arguments.length?(r=a(t),e):r},e.bins=function(t){return arguments.length?(i=typeof t=="number"?function(e){return Cn(e,t)}:a(t),e):i},e.frequency=function(n){return arguments.length?(t=!!n,e):t},e},d3.layout.hierarchy=function(){function e(t,o,u){var a=i.call(n,t,o);t.depth=o,u.push(t);if(a&&(l=a.length)){var f=-1,l,c=t.children=[],h=0,p=o+1,d;while(++f0){var l=n*f/2;Zn(o,function(e){e.r+=l}),Zn(o,jn),Zn(o,function(e){e.r-=l}),f=Math -.max(2*o.r/u,2*o.r/a)}return qn(o,u/2,a/2,1/f),s}var t=d3.layout.hierarchy().sort(Dn),n=0,r=[1,1];return e.size=function(t){return arguments.length?(r=t,e):r},e.padding=function(t){return arguments.length?(n=+t,e):n},Ln(e,t)},d3.layout.cluster=function(){function e(e,i){var s=t.call(this,e,i),o=s[0],u,a=0;Zn(o,function(e){var t=e.children;t&&t.length?(e.x=zn(t),e.y=Un(t)):(e.x=u?a+=n(e,u):0,e.y=0,u=e)});var f=Wn(o),l=Xn(o),c=f.x-n(f,l)/2,h=l.x+n(l,f)/2;return Zn(o,function(e){e.x=(e.x-c)/(h-c)*r[0],e.y=(1-(o.y?e.y/o.y:1))*r[1]}),s}var t=d3.layout.hierarchy().sort(null).value(null),n=Vn,r=[1,1];return e.separation=function(t){return arguments.length?(n=t,e):n},e.size=function(t){return arguments.length?(r=t,e):r},Ln(e,t)},d3.layout.tree=function(){function e(e,i){function s(e,t){var r=e.children,i=e._tree;if(r&&(o=r.length)){var o,a=r[0],f,l=a,c,h=-1;while(++h0&&(tr(nr(o,e,r),e,h),a+=h,f+=h),l+=o._tree.mod,a+=i._tree.mod,c+=u._tree.mod,f+=s._tree.mod;o&&!Jn(s)&&(s._tree.thread=o,s._tree.mod+=l-f),i&&!$n(u)&&(u._tree.thread=i,u._tree.mod+=a-c,r=e)}return r}var a=t.call(this,e,i),f=a[0];Zn(f,function(e,t){e._tree={ancestor:e,prelim:0,mod:0,change:0,shift:0,number:t?t._tree.number+1:0}}),s(f),o(f,-f._tree.prelim);var l=Kn(f,Gn),c=Kn(f,Qn),h=Kn(f,Yn),p=l.x-n(l,c)/2,d=c.x+n(c,l)/2,v=h.depth||1;return Zn(f,function(e){e.x=(e.x-p)/(d-p)*r[0],e.y=e.depth/v*r[1],delete e._tree}),a}var t=d3.layout.hierarchy().sort(null).value(null),n=Vn,r=[1,1];return e.separation=function(t){return arguments.length?(n=t,e):n},e.size=function(t){return arguments.length?(r=t,e):r},Ln(e,t)},d3.layout.treemap=function(){function e(e,t){var n=-1,r=e.length,i,s;while(++n0)u.push(f=a[v-1]),u.area+=f.area,p!=="squarify"||(h=r(u,d))<=c?(a.pop(),c=h):(u.area-=u.pop().area,i(u,d,o,!1),d=Math.min(o.dx,o.dy),u.length=u.area=0,c=Infinity);u.length&&(i(u,d,o,!0),u.length=u.area=0),s.forEach(t)}}function n(t){var r=t.children;if(r&&r.length){var s=l(t),o=r.slice(),u,a=[];e(o,s.dx*s.dy/t.value),a.area=0;while(u=o.pop())a.push(u),a.area+=u.area,u.z!=null&&(i(a,u.z?s.dx:s.dy,s,!o.length),a.length=a.area=0);r.forEach(n)}}function r(e,t){var n=e.area,r,i=0,s=Infinity,o=-1,u=e.length;while(++oi&&(i=r)}return n*=n,t*=t,n?Math.max(t*i*d/n,n/(t*s*d)):Infinity}function i(e,t,n,r){var i=-1,s=e.length,o=n.x,a=n.y,f=t?u(e.area/t):0,l;if(t==n.dx){if(r||f>n.dy)f=n.dy;while(++in.dx)f=n.dx;while(++i=e.x1&&t.x1<=e.x2||t.x2>=e.x1&&t.x2<=e.x2||e.x1>=t.x1&&e.x2<=t.x2)n=!0;if(t.y1>=e.y1&&t.y1<=e.y2||t.y2>=e.y1&&t.y2<=e.y2||e.y1>=t.y1&&e.y2<=t.y2)r=!0;return n&&r},o.detect_overlapping_region=function(e,t){var n="",r="";return e.y1>t.cy&&e.y1t.y1&&e.y2t.cx&&e.x1t.x1&&e.x2this.player_max_left?i=this.player_max_left:i=o&&(t=n+30,t0&&(s.scrollTop(t),this.scrollOffset=this.scrollOffset-30))},f.calculate_positions=function(e){this.window_height=s.height()},f.drag_handler=function(t){var n=t.target.nodeName;if(this.disabled||t.which!==1&&!o)return;if(this.ignore_drag(t))return;var r=this,i=!0;return this.$player=e(t.currentTarget),this.el_init_pos=this.get_actual_pos(this.$player),this.mouse_init_pos=this.get_mouse_pos(t),this.offsetY=this.mouse_init_pos.top-this.el_init_pos.top,this.$body.on(u.move,function(e){var t=r.get_mouse_pos(e),n=Math.abs(t.left-r.mouse_init_pos.left),s=Math.abs(t.top-r.mouse_init_pos.top);return n>r.options.distance||s>r.options.distance?i?(i=!1,r.on_dragstart.call(r,e),!1):(r.is_dragging===!0&&r.on_dragmove.call(r,e),!1):!1}),!1},f.on_dragstart=function(t){t.preventDefault(),this.drag_start=!0,this.is_dragging=!0;var r=this.$container.offset();return this.baseX=Math.round(r.left),this.baseY=Math.round(r.top),this.doc_height=e(n).height(),this.options.helper==="clone"?(this.$helper=this.$player.clone().appendTo(this.$container).addClass("helper"),this.helper=!0):this.helper=!1,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,this.options.start&&this.options.start.call(this.$player,t,{helper:this.helper?this.$helper:this.$player}),!1},f.on_dragmove=function(e){var t=this.get_offset(e);this.options.autoscroll&&this.manage_scroll(t),(this.helper?this.$helper:this.$player).css({position:"absolute",left:t.left,top:t.top});var n={position:{left:t.left,top:t.top}};return this.options.drag&&this.options.drag.call(this.$player,e,n),!1},f.on_dragstop=function(e){var t=this.get_offset(e);this.drag_start=!1;var n={position:{left:t.left,top:t.top}};return this.options.stop&&this.options.stop.call(this.$player,e,n),this.helper&&this.$helper.remove(),!1},f.on_select_start=function(e){if(this.disabled)return;if(this.ignore_drag(e))return;return!1},f.enable=function(){this.disabled=!1},f.disable=function(){this.disabled=!0},f.destroy=function(){this.disable(),e.removeData(this.$container,"drag")},f.ignore_drag=function(t){return this.options.handle?!e(t.target).is(this.options.handle):e.inArray(t.target.nodeName,this.options.ignore_dragging)>=0},e.fn.drag=function(t){return this.each(function(){e.data(this,"drag")||e.data(this,"drag",new a(this,t))})}}(jQuery,window,document),function(e,t,n,r){function s(t,n){this.options=e.extend(!0,i,n),this.$el=e(t),this.$wrapper=this.$el.parent(),this.$widgets=this.$el.children(this.options.widget_selector).addClass("gs_w"),this.widgets=[],this.$changed=e([]),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()}var i={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:!0,avoid_overlapped_widgets:!0,serialize_params:function(e,t){return{col:t.col,row:t.row,size_x:t.size_x,size_y:t.size_y}},collision:{},draggable:{distance:4}};s.generated_stylesheets=[];var o=s.prototype;o.init=function(){this.generate_grid_and_stylesheet(),this.get_widgets_from_DOM(),this.set_dom_grid_height(),this.$wrapper.addClass("ready"),this.draggable(),e(t).bind("resize",throttle(e.proxy(this.recalculate_faux_grid,this),200))},o.disable=function(){return this.$wrapper.find(".player-revert").removeClass("player-revert"),this.drag_api.disable(),this},o.enable=function(){return this.drag_api.enable(),this},o.add_widget=function(t,n,r,i,s){var o;n||(n=1),r||(r=1),!i&!s?o=this.next_position(n,r):(o={col:i,row:s},this.empty_cells(i,s,n,r));var u=e(t).attr({"data-col":o.col,"data-row":o.row,"data-sizex":n,"data-sizey":r}).addClass("gs_w").appendTo(this.$el).hide();return this.$widgets=this.$widgets.add(u),this.register_widget(u),this.add_faux_rows(o.size_y),this.set_dom_grid_height(),u.fadeIn()},o.resize_widget=function(t,n,r){var i=t.coords().grid;n||(n=i.size_x),r||(r=i.size_y),n>this.cols&&(n=this.cols);var s=this.get_cells_occupied(i),o=i.size_x,u=i.size_y,a=i.col,f=a,l=n>o,c=r>u;if(a+n-1>this.cols){var h=a+(n-1)-this.cols,p=a-h;f=Math.max(1,p)}var d={col:f,row:i.row,size_x:n,size_y:r},v=this.get_cells_occupied(d),m=[];e.each(s.cols,function(t,n){e.inArray(n,v.cols)===-1&&m.push(n)});var g=[];e.each(v.cols,function(t,n){e.inArray(n,s.cols)===-1&&g.push(n)});var y=[];e.each(s.rows,function(t,n){e.inArray(n,v.rows)===-1&&y.push(n)});var b=[];e.each(v.rows,function(t,n){e.inArray(n,s.rows)===-1&&b.push(n)}),this.remove_from_gridmap(i);if(g.length){var w=[f,i.row,n,Math.min(u,r),t];this.empty_cells.apply(this,w)}if(b.length){var E=[f,i.row,n,r,t];this.empty_cells.apply(this,E)}i.col=f,i.size_x=n,i.size_y=r,this.add_to_gridmap(d,t),t.data("coords").update({width:n*this.options.widget_base_dimensions[0]+(n-1)*this.options.widget_margins[0]*2,height:r*this.options.widget_base_dimensions[1]+(r-1)*this.options.widget_margins[1]*2}),r>u&&this.add_faux_rows(r-u),n>o&&this.add_faux_cols(n-o),t.attr({"data-col":f,"data-sizex":n,"data-sizey":r});if(m.length){var S=[m[0],i.row,m.length,Math.min(u,r),t];this.remove_empty_cells.apply(this,S)}if(y.length){var x=[f,i.row,n,r,t];this.remove_empty_cells.apply(this,x)}return t},o.empty_cells=function(t,n,r,i,s){var o=this.widgets_below({col:t,row:n-i,size_x:r,size_y:i});return o.not(s).each(e.proxy(function(t,r){var s=e(r).coords().grid;if(!(s.row<=n+i-1))return;var o=n+i-s.row;this.move_widget_down(e(r),o)},this)),this.set_dom_grid_height(),this},o.remove_empty_cells=function(t,n,r,i,s){var o=this.widgets_below({col:t,row:n,size_x:r,size_y:i});return o.not(s).each(e.proxy(function(t,n){this.move_widget_up(e(n),i)},this)),this.set_dom_grid_height(),this},o.next_position=function(e,t){e||(e=1),t||(t=1);var n=this.gridmap,r=n.length,i=[],s;for(var o=1;o",{"class":"preview-holder","data-row":this.$player.attr("data-row"),"data-col":this.$player.attr("data-col"),css:{width:i.width,height:i.height}}).appendTo(this.$el),this.options.draggable.start&&this.options.draggable.start.call(this,t,n)},o.on_drag=function(e,t){if(this.$player===null)return!1;var n={left:t.position.left+this.baseX,top:t.position.top+this.baseY};this.colliders_data=this.collision_api.get_closest_colliders(n),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.helper&&this.$player&&this.$player.css({left:t.position.left,top:t.position.top}),this.options.draggable.drag&&this.options.draggable.drag.call(this,e,t)},o.on_stop_drag=function(e,t){this.$helper.add(this.$player).add(this.$wrapper).removeClass("dragging"),t.position.left=t.position.left+this.baseX,t.position.top=t.position.top+this.baseY,this.colliders_data=this.collision_api.get_closest_colliders(t.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,this.options.draggable.stop&&this.options.draggable.stop.call(this,e,t),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()},o.on_overlapped_column_change=function(t,n){if(!this.colliders_data.length)return;var r=this.get_targeted_columns(this.colliders_data[0].el.data.col),i=this.last_cols.length,s=r.length,o;for(o=0;on.row?1:-1}),t},o.sort_by_row_and_col_asc=function(e){return e=e.sort(function(e,t){return e.row>t.row||e.row===t.row&&e.col>t.col?1:-1}),e},o.sort_by_col_asc=function(e){return e=e.sort(function(e,t){return e.col>t.col?1:-1}),e},o.sort_by_row_desc=function(e){return e=e.sort(function(e,t){return e.row+e.size_y=0&&e.inArray(n,r.rows)>=0},o.is_placeholder_in=function(t,n){var r=this.cells_occupied_by_placeholder||{};return this.is_placeholder_in_col(t)&&e.inArray(n,r.rows)>=0},o.is_placeholder_in_col=function(t){var n=this.cells_occupied_by_placeholder||[];return e.inArray(t,n.cols)>=0},o.is_empty=function(e,t){return typeof this.gridmap[e]!="undefined"&&typeof this.gridmap[e][t]!="undefined"&&this.gridmap[e][t]===!1?!0:!1},o.is_occupied=function(e,t){return this.gridmap[e]?this.gridmap[e][t]?!0:!1:!1},o.is_widget=function(e,t){var n=this.gridmap[e];return n?(n=n[t],n?n:!1):!1},o.is_widget_under_player=function(e,t){return this.is_widget(e,t)?this.is_player_in(e,t):!1},o.get_widgets_under_player=function(t){t||(t=this.cells_occupied_by_player||{cols:[],rows:[]});var n=e([]);return e.each(t.cols,e.proxy(function(r,i){e.each(t.rows,e.proxy(function(e,t){this.is_widget(i,t)&&(n=n.add(this.gridmap[i][t]))},this))},this)),n},o.set_placeholder=function(t,n){var r=e.extend({},this.placeholder_grid_data),i=this.widgets_below({col:r.col,row:r.row,size_y:r.size_y,size_x:r.size_x}),s=t+r.size_x-1;s>this.cols&&(t-=s-t);var o=this.placeholder_grid_data.row0){if(!(this.is_empty(e,u)||this.is_player(e,u)||this.is_widget(e,u)&&o[u].is(s)))break;r[e].push(u),i=u0){if(this.is_widget(s,u)&&!this.is_player_in(s,u)&&!o[u].is(e.el))break;!this.is_player(s,u)&&!this.is_placeholder_in(s,u)&&!this.is_player_in(s,u)&&r[s].push(u),u=t?e[r[0]]:!1},o.get_widgets_overlapped=function(){var t,n=e([]),r=[],i=this.cells_occupied_by_player.rows.slice(0);return i.reverse(),e.each(this.cells_occupied_by_player.cols,e.proxy(function(t,s){e.each(i,e.proxy(function(t,i){if(!this.gridmap[s])return!0;var o=this.gridmap[s][i];this.is_occupied(s,i)&&!this.is_player(o)&&e.inArray(o,r)===-1&&(n=n.add(o),r.push(o))},this))},this)),n},o.on_start_overlapping_column=function(e){this.set_player(e,!1)},o.on_start_overlapping_row=function(e){this.set_player(!1,e)},o.on_stop_overlapping_column=function(e){this.set_player(e,!1);var t=this;this.for_each_widget_below(e,this.cells_occupied_by_player.rows[0],function(e,n){t.move_widget_up(this,t.player_grid_data.size_y)})},o.on_stop_overlapping_row=function(e){this.set_player(!1,e);var t=this,n=this.cells_occupied_by_player.cols;for(var r=0,i=n.length;r0&&this.move_widget_down(r,s)},this)),u.row=a,this.update_widget_position(u,t),t.attr("data-row",u.row),this.$changed=this.$changed.add(t),s.push(t)}},o.can_go_up_to_row=function(t,n,r){var i=this.gridmap,s=!0,o=[],u=t.row,a;this.for_each_column_occupied(t,function(e){var t=i[e];o[e]=[],a=u;while(a--){if(!this.is_empty(e,a)||!!this.is_placeholder_in(e,a))break;o[e].push(a)}if(!o[e].length)return s=!1,!0});if(!s)return!1;a=r;for(a=1;a0?n:0},o.widgets_below=function(t){var n=e.isPlainObject(t)?t:t.coords().grid,r=this,i=this.gridmap,s=n.row+n.size_y-1,o=e([]);return this.for_each_column_occupied(n,function(t){r.for_each_widget_below(t,s,function(t,n){if(!r.is_player(this)&&e.inArray(this,o)===-1)return o=o.add(this),!0})}),this.sort_by_row_asc(o)},o.set_cells_player_occupies=function(e,t){return this.remove_from_gridmap(this.placeholder_grid_data),this.placeholder_grid_data.col=e,this.placeholder_grid_data.row=t,this.add_to_gridmap(this.placeholder_grid_data,this.$player),this},o.empty_cells_player_occupies=function(){return this.remove_from_gridmap(this.placeholder_grid_data),this},o.can_go_up=function(e){var t=e.coords().grid,n=t.row,r=n-1,i=this.gridmap,s=[],o=!0;return n===1?!1:(this.for_each_column_occupied(t,function(e){var t=this.is_widget(e,r);if(this.is_occupied(e,r)||this.is_player(e,r)||this.is_placeholder_in(e,r)||this.is_player_in(e,r))return o=!1,!0}),o)},o.can_move_to=function(e,t,n,r){var i=this.gridmap,s=e.el,o={size_y:e.size_y,size_x:e.size_x,col:t,row:n},u=!0,a=t+e.size_x-1;return a>this.cols?!1:r&&r0&&this.is_widget(r,h)&&e.inArray(o[r][h],c)===-1){u=s.call(o[r][h],r,h),c.push(o[r][h]);if(u)break}},"for_each/below":function(){for(h=i+1,a=o[r].length;h=1;i--)for(e=t[i].length-1;e>=1;e--)if(this.is_widget(i,e)){n.push(e),r[e]=i;break}var s=Math.max.apply(Math,n);return this.highest_occupied_cell={col:r[s],row:s},this.highest_occupied_cell},o.get_widgets_from=function(t,n){var r=this.gridmap,i=e();return t&&(i=i.add(this.$widgets.filter(function(){var n=e(this).attr("data-col");return n===t||n>t}))),n&&(i=i.add(this.$widgets.filter(function(){var t=e(this).attr("data-row");return t===n||t>n}))),i},o.set_dom_grid_height=function(){var e=this.get_highest_occupied_cell().row;return this.$el.css("height",e*this.min_widget_height),this},o.generate_stylesheet=function(t){var n="",r=this.options.max_size_x,i=0,o=0,u,a;t||(t={}),t.cols||(t.cols=this.cols),t.rows||(t.rows=this.rows),t.namespace||(t.namespace=this.options.namespace),t.widget_base_dimensions||(t.widget_base_dimensions=this.options.widget_base_dimensions),t.widget_margins||(t.widget_margins=this.options.widget_margins),t.min_widget_width=t.widget_margins[0]*2+t.widget_base_dimensions[0],t.min_widget_height=t.widget_margins[1]*2+t.widget_base_dimensions[1];var f=e.param(t);if(e.inArray(f,s.generated_stylesheets)>=0)return!1;s.generated_stylesheets.push(f);for(u=t.cols;u>=0;u--)n+=t.namespace+' [data-col="'+(u+1)+'"] { left:'+(u*t.widget_base_dimensions[0]+u*t.widget_margins[0]+(u+1)*t.widget_margins[0])+"px;} ";for(u=t.rows;u>=0;u--)n+=t.namespace+' [data-row="'+(u+1)+'"] { top:'+(u*t.widget_base_dimensions[1]+u*t.widget_margins[1]+(u+1)*t.widget_margins[1])+"px;} ";for(var l=1;l<=t.rows;l++)n+=t.namespace+' [data-sizey="'+l+'"] { height:'+(l*t.widget_base_dimensions[1]+(l-1)*t.widget_margins[1]*2)+"px;}";for(var c=1;c<=r;c++)n+=t.namespace+' [data-sizex="'+c+'"] { width:'+(c*t.widget_base_dimensions[0]+(c-1)*t.widget_margins[0]*2)+"px;}";return this.add_style_tag(n)},o.add_style_tag=function(e){var t=n,r=t.createElement("style");return t.getElementsByTagName("head")[0].appendChild(r),r.setAttribute("type","text/css"),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(n.createTextNode(e)),this},o.generate_faux_grid=function(e,t){this.faux_grid=[],this.gridmap=[];var n,r;for(n=t;n>0;n--){this.gridmap[n]=[];for(r=e;r>0;r--)this.add_faux_cell(r,n)}return this},o.add_faux_cell=function(t,n){var r=e({left:this.baseX+(n-1)*this.min_widget_width,top:this.baseY+(t-1)*this.min_widget_height,width:this.min_widget_width,height:this.min_widget_height,col:n,row:t,original_col:n,original_row:t}).coords();return e.isArray(this.gridmap[n])||(this.gridmap[n]=[]),this.gridmap[n][t]=!1,this.faux_grid.push(r),this},o.add_faux_rows=function(e){var t=this.rows,n=t+(e||1);for(var r=n;r>t;r--)for(var i=this.cols;i>=1;i--)this.add_faux_cell(r,i);return this.rows=n,this.options.autogenerate_stylesheet&&this.generate_stylesheet(),this},o.add_faux_cols=function(e){var t=this.cols,n=t+(e||1);for(var r=t;r=1;i--)this.add_faux_cell(i,r);return this.cols=n,this.options.autogenerate_stylesheet&&this.generate_stylesheet(),this},o.recalculate_faux_grid=function(){var n=this.$wrapper.width();return this.baseX=(e(t).width()-n)/2,this.baseY=this.$wrapper.offset().top,e.each(this.faux_grid,e.proxy(function(e,t){this.faux_grid[e]=t.update({left:this.baseX+(t.data.col-1)*this.min_widget_width,top:this.baseY+(t.data.row-1)*this.min_widget_height})},this)),this},o.get_widgets_from_DOM=function(){return this.$widgets.each(e.proxy(function(t,n){this.register_widget(e(n))},this)),this},o.generate_grid_and_stylesheet=function(){var n=this.$wrapper.width(),r=this.$wrapper.height(),i=Math.floor(n/this.min_widget_width)+this.options.extra_cols,s=this.$widgets.map(function(){return e(this).attr("data-col")});s=Array.prototype.slice.call(s,0),s.length||(s=[0]);var o=Math.max.apply(Math,s),u=this.options.extra_rows;return this.$widgets.each(function(t,n){u+=+e(n).attr("data-sizey")}),this.cols=Math.max(o,i,this.options.min_cols),this.rows=Math.max(u,this.options.min_rows),this.baseX=(e(t).width()-n)/2,this.baseY=this.$wrapper.offset().top,this.options.autogenerate_stylesheet&&this.generate_stylesheet(),this.generate_faux_grid(this.rows,this.cols)},e.fn.gridster=function(t){return this.each(function(){e(this).data("gridster")||e(this).data("gridster",new s(this,t))})},e.Gridster=o}(jQuery,window,document),vizjslib_git_revision="f0f0a7e0bb793db24891e90f3201ffb5434f0618",vizjslib_git_tag="14.12-2-gf0f0a7e",function(){function n(e,t,n){var r="";if(!t||t.length===0)return r;for(var i=0;i-1&&(f=t.getMetrics(),i(t,a,f,o))}):$.each(u,function(e,t){f=t.getMetrics(),i(t,a,f,o)}),config=o,a.summary=r("report-summary",config),a.summary.config.xaxis={noTickets:10,showLabels:!0},a.summary.config.handles={show:!0},a.summary.config.selection={mode:"x"},a.summary.config.mouse={},a.connection={name:"report-connection",adapterConstructor:e.components.QuadraticDrawing},a}function o(e,t){var n=[],r=null;return $.each(e,function(e,n){if(n.getMetrics()[t])return r=n,!1}),n.push(r),$.each(e,function(e,t){if(t===r)return;n.push(t)}),n}function u(n,r){var i=n.data.main_metric;t=n.data,r||(r=Report.getDataSources()),r=o(r,i);var u=[];for(var a=0;a-1?n.setCompaniesData([]):c(n.getCompaniesDataFile(),n.setCompaniesData,n)})}function p(){var e=["mediawiki"],t=Report.getDataSources();$.each(t,function(t,n){$.inArray(n.getName(),e)>-1?n.setReposData([]):c(n.getReposDataFile(),n.setReposData,n)}),c(Report.getReposMapFile(),Report.setReposMap)}function d(){var e=["irc","mediawiki"],t=Report.getDataSources();$.each(t,function(t,n){$.inArray(n.getName(),e)>-1?n.setCountriesData([]):c(n.getCountriesDataFile(),n.setCountriesData,n)})}function v(){var e=["irc","mediawiki"],t=Report.getDataSources();$.each(t,function(t,n){$.inArray(n.getName(),e)>-1?n.setDomainsData([]):c(n.getDomainsDataFile(),n.setDomainsData,n)})}function m(){var e=["irc","mediawiki"],t=Report.getDataSources();$.each(t,function(t,n){$.inArray(n.getName(),e)>-1?n.setProjectsData([]):c(n.getProjectsDataFile(),n.setProjectsData,n)})}function g(){var e=Report.getDataSources();$.each(e,function(e,t){t.getName()==="its"&&c(t.getTimeToFixDataFile(),t.setTimeToFixData,t)})}function y(){var e=Report.getDataSources();$.each(e,function(e,t){t.getName()==="its"&&c(t.getMarkovTableDataFile(),t.setMarkovTableData,t)})}function b(){var e=Report.getDataSources();$.each(e,function(e,t){t.getName()==="mls"&&c(t.getTimeToAttentionDataFile(),t.setTimeToAttentionData,t)})}function w(){var e=Report.getDataSources();$.each(e,function(e,t){c(t.getDemographicsAgingFile(),t.setDemographicsAgingData,t),c(t.getDemographicsBirthFile(),t.setDemographicsBirthData,t)})}function E(e){var t=Report.getDataSources();$.each(t,function(e,t){var n=t.getTopDataFile();if(l(n,t.setGlobalTopData,t))return;$.when($.getJSON(n)).done(function(e){t.setGlobalTopData(e),H()}).fail(function(){t.setGlobalTopData([],t),H()})})}function S(e,t){var n=null;return $.each(Report.getDataSources(),function(r,i){if(t=="repos"&&$.inArray(e,i.getReposData())>-1)return n=i,!1;if(t=="companies"&&$.inArray(e,i.getCompaniesData())>-1)return n=i,!1;if(t=="countries"&&$.inArray(e,i.getCountriesData())>-1)return n=i,!1;if(t=="domains"&&$.inArray(e,i.getDomainsData())>-1)return n=i,!1;if(t=="projects"&&$.inArray(e,i.getProjectsData())>-1)return n=i,!1}),n}function x(e){var t="";return e==="repos"?t="rep":e==="companies"?t="com":e==="countries"?t="cou":e==="domains"?t="dom":e==="projects"&&(t="prj"),t}function T(){var e=Report.getDataSources();$.each(e,function(e,t){c(t.getDataFile(),t.setData,t),c(t.getGlobalDataFile(),t.setGlobalData,t),t instanceof MLS&&c(t.getListsFile(),t.setListsData,t)})}function N(){c("VizGrimoireJS/data/metrics.json",Report.setMetricsDefinition)}function C(){var e=Report.getDataSources();$.each(e,function(e,t){c(t.getPeopleDataFile(),t.setPeopleData,t)})}function k(){c(Report.getDataDir()+"/people.json",Report.setPeopleIdentities)}function L(e){return e.getCompaniesData()===null?!1:!0}function A(e){return e.getReposData()===null?!1:!0}function O(e){return e.getCountriesData()===null?!1:!0}function M(e){return e.getDomainsData()===null?!1:!0}function _(e){return e.getProjectsData()===null?!1:!0}function D(){var e=0,t=Report.getProjectsData(),n=Report.getProjectsDirs();for(var r in t)e++;return e-1&&h(),$.inArray("repositories",i)>-1&&p(),$.inArray("countries",i)>-1&&d(),$.inArray("domains",i)>-1&&v(),$.inArray("projects",i)>-1&&m(),$.inArray("people",i)>-1&&(C(),k())}else h(),p(),d(),v(),m(),C(),k()},Loader.get_file_data_div=function(e,t,n){$.when($.getJSON(e)).done(function(r){t(n,e,r)}).fail(function(){t(e,null)})},Loader.check_filters_page=function(e){var t=!0,n=["repos","companies","countries"];return $.each(n,function(n,r){if(!Loader.check_filter_page(e,r))return t=!1,!1}),t},Loader.check_filter_page=function(e,t){var n=!0;e===undefined&&(e=1);var r=Report.getPageSize()*(e-1),i=r+Report.getPageSize();return $.each(Report.getDataSources(),function(e,s){var o=0;t==="repos"&&(o=s.getReposData().length),t==="companies"&&(o=s.getCompaniesData().length),t==="countries"&&(o=s.getCountriesData().length),t==="domains"&&(o=s.getDomainsData().length),t==="projects"&&(o=s.getProjectsData().length),i>o&&(i=o);for(var u=r;u=0&&Loader.data_load_item_top(e,ds,null,Convert.convertFilterTop,t,"top"),!1)):n},Loader.FilterItemCheck=function(e,t){var n=!0,r,i=Report.getReposMap();if(t==="repos"){if(Loader.check_item(e,t)===!1)return r=S(e,t),r===null?(Report.log("Can't find data source for "+e),!0):(Loader.data_load_item(e,r,null,Convert.convertFilterStudyItem,t,null),$.inArray(r.getName(),u)>=0&&Loader.data_load_item_top(e,r,null,Convert.convertFilterStudyItem,t),!1);if(i!==undefined&&i.length!==0){var s=[];$.each(Report.getDataSources(),function(n,r){var i=Convert.getRealItem(r,t,e);i!==undefined&&i!==null&&s.push(i)});if(Loader.check_items(s,t)===!1){for(var a=0;a=0&&$.inArray(e,s.getReposData())>=0&&s.getRepositoriesTopData()[e]!==undefined)return r=!0,!1}else if(s.getReposGlobalData()[e]!==undefined&&s.getReposMetricsData()[e]!==undefined)return r=!0,!1}else if(t==="companies"){var a=s.getCompaniesData();if(a.length===0)r=!0;else if($.inArray(e,a)===-1)r=!0;else{if(s.getCompaniesGlobalData()[e]===undefined||s.getCompaniesMetricsData()[e]===undefined)return r=!1,!1;if($.inArray(s.getName(),o)===-1&&s.getCompaniesTopData()[e]===undefined)return r=!1,!1;r=!0}}else if(t==="countries"){var f=s.getCountriesData();if(f.length===0)r=!0;else if($.inArray(e,f)===-1)r=!0;else{if(s.getCountriesGlobalData()[e]===undefined||s.getCountriesMetricsData()[e]===undefined)return r=!1,!1;r=!0}}else if(t==="domains"){var l=s.getDomainsData();if(l.length===0)r=!0;else if($.inArray(e,l)===-1)r=!0;else{if(s.getDomainsGlobalData()[e]===undefined||s.getDomainsMetricsData()[e]===undefined)return r=!1,!1;r=!0}}else if(t==="projects"){var c=s.getProjectsData();if(c.length===0)r=!0;else if($.inArray(e,c)===-1)r=!0;else{if(s.getProjectsGlobalData()[e]===undefined||s.getProjectsMetricsData()[e]===undefined)return r=!1,!1;r=!0}}}),r},Loader.check_items=function(e,t){var n=!0;return $.each(e,function(e,r){if(Loader.check_item(r,t)===!1)return n=!1,!1}),n},Loader.data_load_items_page=function(e,t,n,r){t===undefined&&(t=1);if(r==="repos"&&e.getReposData()===null)return!1;if(r==="companies"&&e.getCompaniesData()===null)return!1;if(r==="countries"&&e.getCountriesData()===null)return!1;if(r==="domains"&&e.getDomainsData()===null)return!1;if(r==="projects"&&e.getProjectsData()===null)return!1;var i=0;r==="repos"&&(i=e.getReposData().length),r==="companies"&&(i=e.getCompaniesData().length),r==="countries"&&(i=e.getCountriesData().length),r==="domains"&&(i=e.getDomainsData().length),r==="projects"&&(i=e.getProjectsData().length);if(i===0)return!0;var s=Report.getPageSize()*(t-1),o=s+Report.getPageSize();o>i&&(o=i);for(var u=s;u-1){t.addRepoMetricsData(e,[],t),t.addRepoGlobalData(e,[],t);return}}else if(i==="companies"){if($.inArray(t.getName(),u)>-1){t.addCompanyMetricsData(e,[],t),t.addCompanyGlobalData(e,[],t);return}}else if(i==="countries"){if($.inArray(t.getName(),o)>-1){t.addCountryMetricsData(e,[],t),t.addCountryGlobalData(e,[],t);return}}else if(i==="domains"){if($.inArray(t.getName(),f)>-1){t.addDomainMetricsData(e,[],t),t.addDomainGlobalData(e,[],t);return}}else{if(i!=="projects")return;if($.inArray(t.getName(),c)>-1){t.addDomainMetricsData(e,[],t),t.addDomainGlobalData(e,[],t);return}}var h=encodeURIComponent(e),p=t.getDataDir()+"/"+h+"-";p+=t.getName()+"-"+x(i);var d=p+"-evolutionary.json",v=p+"-static.json";if(a){file_evo_no_path=decodeURIComponent(d.replace(Report.getDataDir()+"/","")),file_static_no_path=decodeURIComponent(v.replace(Report.getDataDir()+"/","")),data_evo=a[file_evo_no_path],data_static=a[file_static_no_path];if(data_evo&&data_static){m(e,data_evo,data_static,t),g();return}}$.when($.getJSON(d),$.getJSON(v)).done(function(n,r){m(e,n[0],r[0],t)}).always(function(){g()})},Loader.check_data_loaded=function(){var e=!0;if(!P())return!1;var t=Report.getDataSources(),n=["companies","repositories","countries","domains","projects"];return Report.getConfig()!==null&&Report.getConfig().reports!==undefined&&(n=Report.getConfig().reports),$.each(t,function(t,r){if(r.getPeopleData()===null)return e=!1,!1;if($.inArray("companies",n)>-1&&!L(r))return e=!1,!1;if($.inArray("repositories",n)>-1&&!A(r))return e=!1,!1;if($.inArray("countries",n)>-1&&!O(r))return e=!1,!1;if($.inArray("domains",n)>-1&&!M(r))return e=!1,!1;if($.inArray("projects",n)>-1&&!_(r))return e=!1,!1;if(r instanceof MLS&&r.getListsData()===null)return e=!1,!1}),e}})();var DataProcess={};(function(){DataProcess.info=function(){},DataProcess.paginate=function(e,t){if(t===undefined||t===0||isNaN(t))return e;var n=[],r=Report.getPageSize(),i=(t-1)*r;for(var s=i;s-1&&(t=e.split("@")[0]),t},DataProcess.selectPersonName=function(e){var t="",n,r;for(var i=0;it.length&&(t=n);return t},DataProcess.selectPersonEmail=function(e){var t="",n,r;for(var i=0;i=0;u--){if(e[n][u]!==0){i===-1&&(i=s),s=o-i)continue;n[a].push(e[a][u])}}return n},DataProcess.filterDates=function(e,t,n){var r={};return $.each(n,function(i,s){r[i]=[],$.each(s,function(s,o){var u=n.unixtime[s];u>e&&(!t||t&&u<=t)&&r[i].push(o)})}),r},DataProcess.filterYear=function(e,t){e=parseInt(e,null);var n=(new Date(e.toString())).getTime(),r=(new Date((e+1).toString())).getTime(),i=filterDates(n,r,t);return i},DataProcess.fillDates=function(e,t){if(e[0].length===0)return t;var n=[[],[]],r=0;if(e[0][0]>t[0][0])for(r=0;r-1){var s=[];s[0]=e[r][0];for(var o=1;o1&&(params=document.URL.split("?")[1]),params}function n(){return aux=document.URL.split("?")[0].split("/"),res=aux[aux.length-1],res}function r(e){return url=e,t().length>0&&(url+="?"+t()),url}function i(t){return url=t,e()&&(url+="?release="+$.urlParam("release")),url}Utils.paramsInURL=t,Utils.isReleasePage=e,Utils.filenameInURL=n,Utils.createLink=r,Utils.createReleaseLink=i,$.urlParam=function(e){var t=(new RegExp("[?&]"+e+"=([^&#]*)")).exec(window.location.href);return t===null?null:t[1]||0}})();var HTMLComposer={};(function(){function e(e,t){var n='
';return n+='
',n+='
',n+='
',n+="

"+u(e)+"

",n+="
",n+='
',n+='
',n+="
",n+='
',n+='
',r+="
",r+='
',r+='
',$.each(n,function(n,i){r+='


',r+='
',r+='
',r+='
',r+="
"}),r+="
",r}function n(e,t,n){var r="";r+='";var i="";return $.each(t,function(t,o){e.getMetrics()[t]?(r+=i+e.getMetrics()[t].name,t==="first_date"||t==="last_date"?r+='

'+u(e.getName())+"

",s="
'+o+s:r+=''+Report.formatValue(o)+s):n[t]&&(r+=i+n[t],t==="first_date"||t==="last_date"?r+=''+o+s:r+=''+Report.formatValue(o)+s)}),r+="
",r}function r(e,t){var n="";return n+="",n+="
",n+="First contribution:
",n+="  "+t.first_date,n+="
",n+="Last contribution:
",n+="  "+t.last_date,n+="
",e=="scm"?n+="Commits:
  "+t.scm_commits:e=="its"?n+="Closed:
  "+t.its_closed:e=="mls"?n+="Sent:
  "+t.mls_sent:e=="irc"?n+="Sent:
  "+t.irc_sent:e=="scr"&&(n+="Closed:
  "+t.scr_closed),n+="
",n}function s(e,t){var n='

  ';return e.length>0?n+=e:t.length>0&&(t.indexOf("@")>0&&(t=t.split("@")[0]),n+=t),n+="

",n}function o(e,t){var n='

';return t==="companies"&&(n+='   '),n+=e,n+="

",n}function u(e){var t="";return e==="scm"?t=' Source Code Management':e==="scr"?t=' Source Code Review':e==="its"?t=' Issue tracking system':e==="mls"?t=' Mailing Lists':e==="irc"?t=' IRC Channels':e==="mediawiki"?t=' Wiki':e==="releases"&&(t=' Forge Releases' -),t}function a(){return html="",params="?data_dir="+$.urlParam("data_dir")+"&release="+$.urlParam("release"),html+='
',html+='
  • Source code repositories by companies
  • ',html+='
  • Mailing Lists by companies
  • ',html+='
  • Tickets by companies
  • ',html}function f(e,t){function n(e,t){return label="",$.each(t,function(t,n){if(n[1]===e)return label=n[0],!1}),label}if(t.length===0)return"";var r=null;if(t[0]instanceof Array){var s=[];$.each(t,function(e,t){s.push(t[1])}),r=t,t=s}return unsupported=["irc.html","qaforums.html","project.html"],ah_label=" All history ",label=e,label===null?label=ah_label:(label=decodeURIComponent(label),r!==null?(label=n(label,r),label="  "+label+"  "):label="  "+label[0].toUpperCase()+label.substring(1)+" release  ",t.reverse().push(ah_label),t.reverse()),html='
    ',html+='",html+='",html+="
    ",html}function l(e,t,n,r){return html="",html+="",html+='
    ',blabels=t.split(","),bmetrics=n.split(","),html+=p(e,blabels,bmetrics,!1),html+='
    ',tsm=r.split(","),html+=d(e,tsm[0],!1),html+="
    ",html+='
    ',html+=d(e,tsm[1],!1),html+="
    ",html+="
    ",html+="",html}function c(e,t,n,r,i){return html="",html+="",html+='
    ',blabels=t.split(","),bmetrics=n.split(","),html+=p(e,blabels,bmetrics,!0),html+='
    ',tsm=r.split(","),html+=d(e,tsm[0],!0),html+="
    ",html+='
    ',html+=d(e,tsm[1],!0),html+="
    ",html+="
    ",html+="",html}function h(e,t,n,r,i){return i?widget_name="ProjectData":widget_name="GlobalData",html="",html+='
    ',html+='
    ',html+='
    '+t+"
    ",html+="
    ",html+='
    ',html+='
    ',target_page=Utils.createLink(n+".html"),i?(html+=''):(html+=' ',html+=""),html+="
    ",html+="
    ",html+="
    ",html}function p(e,t,n,r){return r?widget_name="ProjectData":widget_name="GlobalData",html="",html+="",html+='
    ',html+='
    ',html+='
    ',html+='
    '+t[0]+"
    ",html+="
    ",html+='
    ',html+='
    ',target_page=Utils.createLink(e+".html"),e==="releases"&&(target_page=Utils.createLink("forge.html")),r?(html+=''):(html+=' ',html+=""),html+="
    ",html+="
    ",html+='
    ',t.length===2&&n.length===2?html+=h("12",t[1],e,n[1],r):t.length===3&&n.length===3?(html+=h("6",t[1],e,n[1],r),html+=h("6",t[2],e,n[2],r)):t.length===4&&n.length===4&&(html+=h("4",t[1],e,n[1],r),html+=h("4",t[2],e,n[2],r),html+=h("4",t[3],e,n[3],r)),html+="
    ",html+="
    ",html+="
    ",html+="",html}function d(e,t,n){return n?(ts_widget_name="FilterItemMetricsEvol",trend_widget_name="FilterItemMicrodashText",filter_name="projects"):(ts_widget_name="MetricsEvol",trend_widget_name="MicrodashText",filter_name=""),html="",html+='
    ',html+='
    '):(html+='',html+=' ',html+=""),html+="
    ",html}function v(e,t,n,r){text={companies:"Companies","companies-summary":"Companies summary",contributors:"Contributors",countries:"Countries",domains:"Domains",projects:"Projects",repos:"Repositories",tags:"Tags",states:"States"},html="",html+='",html}function m(){return html="",html+="",html+='
    ',html+='
    ',html+='
    ',html+='
    =0&&(link_exists=!0),Utils.isReleasePage()&&link_exists?(link_to=Utils.createReleaseLink(e),html=''+t+""):link_exists?html=''+t+"":html=t}catch(r){html=t}return html}function y(e,t,n,r){return r?periods=[""]:periods=["last month","last year",""],width=12/periods.length,html='
    ',$.each(periods,function(r,i){html+='
    ',html+='
    ',html+="
    "}),html+="
    ",html}HTMLComposer.personDSBlock=e,HTMLComposer.filterDSBlock=t,HTMLComposer.DSBlock=l,HTMLComposer.DSBlockProject=c,HTMLComposer.repositorySummaryTable=n,HTMLComposer.personSummaryTable=r,HTMLComposer.personName=s,HTMLComposer.itemName=o,HTMLComposer.sideMenu4Release=a,HTMLComposer.releaseSelector=f,HTMLComposer.sideBarLinks=v,HTMLComposer.overallSummaryBlock=m,HTMLComposer.smartLinks=g,HTMLComposer.TopByPeriod=y})();var Convert={};(function(){function e(e,t){return t.hasOwnProperty(e)&&t[e].title?t[e].title:undefined}function t(e,t){return e.project_idt.project_id?1:0}function n(e,t){var n=[],r=e,i="",s={};while(t[r].hasOwnProperty("parent_project"))i=t[r].parent_project,s=t[i],s.project_id=i,n.push(s),r=i;return n.reverse()}function r(e,n){var r=[],i={};return $.each(n,function(t,s){n[t].parent_project===e&&(i=n[t],i.project_id=t,r.push(i))}),r.sort(t),r}function i(t,n,i){var s="",o=n.length;return o>0?(children_sort=[],children_names=[],$.each(n,function(e,t){children_names.push(t.title)}),children_names=children_names.sort(),$.each(children_names,function(e,t){$.each(n,function(e,n){if(t===n.title)return children_sort.push(n),!1})}),n=children_sort,s+='"):s+="
  • "+e(t,i)+"
  • ",s}function s(e){var t='",t}function o(e){var t="";return t=e.replace(" ","_"),t=t.toLowerCase(),t}function u(t,n,i){var s="",o=n.length,a=t;return o>0?(s+="
  • ",s+=''+e(t,i)+"",s+=' '+o+' subprojects
      ',$.each(n,function(e,t){gchildren=r(t.project_id,i),s+=u(t.project_id,gchildren,i)}),s+="
  • "):s+='
  • '+e(t,i)+"
  • ",s}function a(){var e="
      ",t=Report.getProjectsHierarchy();if(t.length===0)return"";project_id="root";var i=r(project_id,t),s=n(project_id,t);return $.each(i,function(n,i){grandchildren=r(i.project_id,t),e+=u(i.project_id,grandchildren,t)}),e+="
    ",e}function f(){var e=[],t={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 n=url_tokens[url_tokens.length-1].split(".")[0];return n==="project"||n==="index"||n==="release"||n===""?[]:t.hasOwnProperty(n)?(e.push([n,t[n]]),e):[["#","Unavailable section name"]]}function l(){var e=[],t={mls:"MLS overview",irc:"IRC overview",its:"ITS overview",qaforums:"QA Forums overview",scr:"Code Review overview",scm:"SCM overview",wiki:"Wiki overview",downloads:"Downloads",forge:"Forge releases",demographics:"Demographics",data_sources:"Data sources",project_map:"Project map",people:"Contributor",company:"Company",country:"Country",domain:"Domain",release:"Companies analysis by release"},n={companies:"Activity by companies",contributors:"Activity by contributors",countries:"Activity by companies",domains:"Activity by domains",projects:"Activity by project",repos:"Activity by repositories",states:"Activity by states",tags:"Activity by tags"},r={repository:"Repository"};url_no_params=document.URL.split("?")[0],url_tokens=url_no_params.split("/");var i=url_tokens[url_tokens.length-1].split(".")[0];if(i==="project"||i==="index"||i==="")return[];var s=i.split("-");return s[0]==="repository"&&(ds_name=$.urlParam("ds"),s=[ds_name,"repos","repository"]),t.hasOwnProperty(s[0])?(e.push([s[0],t[s[0]]]),s.length>0&&n.hasOwnProperty(s[1])&&(e.push([s[0]+"-"+s[1],n[s[1]]]),s.length>2&&r.hasOwnProperty(s[2])&&e.push([s[0],r[s[2]]])),e):[["#","Unavailable section name"]]}function c(){return $.urlParam("release")!==null&&$.urlParam("release").length>0?!0:!1}function h(e){e===undefined&&(e="root");var t="",n="";t+='",t}function p(e){var t='",t}function d(e){var t=Report.getParameterByName("repository");if(t&&$.inArray(t,e.getReposData())<0)return"";var n=e.getName(),r="",i=e.getLabelForRepository(),s=e.getLabelForRepositories();t!==undefined?r=t:r="All "+s,html='
    ',html='
    1. Filtered by '+i+":  
    2. ",html+='
    3. ");var o=e.getReposData();return o.sort(),$.each(o,function(e,n){if(n===t)return;html+='
    4. ',html+=n,html+="
    5. "}),html+="
    ",html+="
    ",html}function v(){data=Report.getProjectData(),document.title=data.project_name+" Report by Bitergia",data.title&&(document.title=data.title),$(".report_date").text(data.date),$(".report_name").text(data.project_name),str=data.blog_url,str&&str.length>0?($("#blogEntry").html("
    Blog post with some more details"),$(".blog_url").attr("href",data.blog_url)):$("#more_info").hide(),str=data.producer,str&&str.length>0?$("#producer").html(str):$("#producer").html("Bitergia"),$(".project_name").text(data.project_name),$("#project_url").attr("href",data.project_url)}function m(e,t){t.help=!0;var n=$(e).data("help");n!==undefined&&(t.help=n),t.show_legend=!1,$(e).data("frame-time")&&(t.frame_time=!0),t.graph=$(e).data("graph"),$(e).data("min")&&(t.show_legend=!1,t.show_labels=!0,t.show_grid=!0,t.help=!1),$(e).data("legend")&&(t.show_legend=!0),t.ligth_style=!1,$(e).data("light-style")&&(t.light_style=!0),$(e).data("custom-title")&&(t.custom_title=$(e).data("custom-title")),t.help&&$(e).data("custom-help")?t.custom_help=$(e).data("custom-help"):t.custom_help="",$(e).data("repo-filter")&&(t.repo_filter=$(e).data("repo-filter"));var r=$(e).data("start");r&&(t.start_time=r);var i=$(e).data("end");i&&(t.end_time=i);var s=$(e).data("remove-last-point");return s&&(t.remove_last_point=!0),t}function g(){return Math.floor(Math.random()*1e3+1)}function y(e,t){if(e==="repos"){if(DS.getReposGlobalData()[t]===undefined||DS.getReposGlobalData()[t].length===0)return!1}else if(e==="companies"){if(DS.getCompaniesGlobalData()[t]===undefined||DS.getCompaniesGlobalData()[t].length===0)return!1}else if(e==="countries"){if(DS.getCountriesGlobalData()[t]===undefined||DS.getCountriesGlobalData()[t].length===0)return!1}else if(e==="companies")if(DS.getDomainsGlobalData()[t]===undefined||DS.getDomainsGlobalData()[t].length===0)return!1;return!0}function b(){var e={};return e.show_desc=!1,e.show_title=!1,e.show_labels=!0,e.show_legend=!1,e}Convert.convertMicrodashText=function(){var e=$(".MicrodashText");e.length>0&&$.each(e,function(e,t){$(this).empty();var n=$(this).data("metric"),r=$(this).data("name"),i=Report.getMetricDS(n)[0];if(i===undefined)return;var s=i.getGlobalData()[n],o='
    ';r&&(o+='
    ',o+=''+i.basic_metrics[n].name+"",o+="
    "),$.each([365,30,7],function(e,t){var s=i.getMetrics()[n].column,u=i.getGlobalData()[n+"_"+t],a=i.getGlobalData()["diff_net"+s+"_"+t],f=i.getGlobalData()["percentage_"+s+"_"+t];f=Math.round(f*10)/10;if(u===undefined)return;var l="";f===0?l=Math.abs(f):a>0?l="+"+f:a<0&&(l="-"+Math.abs(f)),r?o+='
    ':o+='
    ',o+='Last '+t+" days:",o+=" "+Report.formatValue(u)+"
    ",f===0?o+='  '+l+"% ":a>0?o+='  '+l+"% ":a<0&&(o+='  '+l+"% "),o+="
    "}),o+="
    ",$(t).append(o)})},Convert.convertMicrodash=function(){var e=$(".Microdash");e.length>0&&$.each(e,function(e,t){$(this).empty();var n=$(this).data("metric"),r=$(this).data("text"),i=Report.getMetricDS(n)[0],s=i.getGlobalData()[n],o="
    ";o+='
    ',o+=''+Report.formatValue(s),o+=" "+i.getMetrics()[n].name,o+="
    ",o+='
    ',o+='
    ',$.each([365,30,7],function(e,t){var r=i.getMetrics()[n].column,s=i.getGlobalData()["diff_net"+r+"_"+t],u=i.getGlobalData()["percentage_"+r+"_"+t],a=i.getGlobalData()[n+"_"+t];if(a===undefined)return;o+=""+t+" Days Change:"+Report.formatValue(a)+" ",s===0?o+="":s>0?(o+='',o+="(+"+u+"%) "):s<0&&(o+='',o+="(-"+Math.abs(u)+"%) ")}),o+="
    ",o+="
    ",$(t).append(o)})},Convert.convertSideBar=function(e){var t=$(".SideNavBar");t.length>0&&$.each(t,function(t,n){$(this).empty(),n.id||(n.id="SideNavBar");var r;e&&(r=Report.cleanLabel(e));var i=h(r);$("#"+n.id).append(i),data=Report.getProjectData(),$(".report_name").text(data.project_name),Utils.isReleasePage()&&$(".report_name").attr("href","./?release="+$.urlParam("release"))})},Convert.convertProjectNavBar=function(e){var t=$(".ProjectNavBar");t.length>0&&$.each(t,function(t,n){$(this).empty(),n.id||(n.id="ProjectNavBar");var r;e&&(r=Report.cleanLabel(e));var i=s(r);$("#"+n.id).append(i)})},Convert.convertNavbar=function(){$.get(Report.getHtmlDir()+"navbar.html",function(e){$("#Navbar").html(e);var t=Report.getParameterByName("project");Convert.convertProjectNavBar(t),Convert.convertReleaseSelector(),Convert.convertSideBar(t)})},Convert.convertReleaseSelector=function(){var e=Report.getReleaseNames();if(e.length>0){var t=$(".ReleaseSelector");t.length>0&&$.each(t,function(t,n){$(this).empty(),n.id||(n.id="ReleaseSelector"+g());var r=HTMLComposer.releaseSelector($.urlParam("release"),e);$("#"+n.id).append(r)})}},Convert.convertSectionBreadcrumb=function(e){var t=$(".SectionBreadcrumb");t.length>0&&$.each(t,function(t,n){$(this).empty(),n.id||(n.id="SectionBreadcrumb");var r;e&&(r=Report.cleanLabel(e));var i=p(r);$("#"+n.id).append(i)})},Convert.convertProjectMap=function(){var e=$(".ProjectMap");e.length>0&&$.each(e,function(e,t){$(this).empty(),t.id||(t.id="ProjectMap");var n,r=a();$("#"+t.id).append(r)})},Convert.convertFooter=function(){$.get(Report.getHtmlDir()+"footer.html",function(e){$("#Footer").html(e),$("#vizjs-lib-version").append(vizjslib_git_tag)})},Convert.convertSummary=function(){div_param="Summary";var e=$("."+div_param);e.length>0&&$.each(e,function(e,t){$(this).empty();var n=$(this).data("data-source"),r=Report.getDataSourceByName(n);if(r===null)return;t.id=n+"-Summary",r.displayGlobalSummary(t.id)})},Convert.convertRepositorySelector=function(){var e=$(".repository-selector");e.length>0&&$.each(e,function(e,t){$(this).empty();var n=$(this).data("data-source"),r=Report.getDataSourceByName(n);if(r===null)return;t.id=n+"-repository-selector";var i=d(r);$("#"+t.id).append(i)})},Convert.convertRefcard=function(){$.when($.get(Report.getHtmlDir()+"refcard.html"),$.get(Report.getHtmlDir()+"project-card.html")).done(function(e,t){refcard=e[0],projcard=t[0],$("#Refcard").html(refcard),v(),$.each(Report.getProjectsData(),function(e,t){var n="card-"+e.replace(".","").replace(" ","");$("#Refcard #projects_info").append(projcard),$("#Refcard #projects_info #new_card").attr("id",n),$.each(Report.getDataSources(),function(t,r){if(r.getProject()!==e){$("#"+n+" ."+r.getName()+"-info").hide();return}r.displayData(n)}),$("#"+n+" #project_name").text(e),Report.getProjectsDirs.length>1&&$("#"+n+" .project_info").append(' Report'),$("#"+n+" #project_url").attr("href",t.url)})})},Convert.convertGlobalData=function(){var e=$(".GlobalData");e.length>0&&$.each(e,function(e,t){ds=$(this).data("data-source"),DS=Report.getDataSourceByName(ds);if(DS===null)return;var n=DS.getGlobalData(),r=$(this).data("field");$(this).text(Report.formatValue(n[r],r))})},Convert.convertProjectData=function(){var e=$(".ProjectData"),t=Report.getParameterByName("project");e.length>0&&$.each(e,function(e,n){ds=$(this).data("data-source"),DS=Report.getDataSourceByName(ds);if(DS===null)return;var r=DS.getProjectsGlobalData()[t];if(r===undefined)return;var i=$(this).data("field");$(this).text(Report.formatValue(r[i],i))})},Convert.convertRadarActivity=function(){var e="RadarActivity",t=$("#"+e);t.length>0&&($.each(t,function(e,t){$(this).empty()}),Viz.displayRadarActivity(e))},Convert.convertRadarCommunity=function(){var e="RadarCommunity",t=$("#"+e);t.length>0&&($.each(t,function(e,t){$(this).empty()}),Viz.displayRadarCommunity("RadarCommunity"))},Convert.convertTreemap=function(){var e="Treemap",t=$("#"+e);if(t.length>0){$.each(t,function(e,t){$(this).empty()});var n=$("#Treemap").data("file");$("#Treemap").empty(),Viz.displayTreeMap("Treemap",n)}},Convert.convertBubbles=function(){div_param="Bubbles";var e=$("."+div_param);e.length>0&&$.each(e,function(e,t){$(this).empty();var n=$(this).data("data-source"),r=Report.getDataSourceByName(n);if(r===null)return;if(r.getData().length===0)return;var i=$(this).data("radius");t.id=n+"-Bubbles",r.displayBubbles(t.id,i)})},Convert.convertMetricsEvol=function(){var e={};e.show_desc=!1,e.show_title=!0,e.show_labels=!0;var t=Report.getVizConfig();t&&$.each(t,function(t,n){e[t]=n});var n="MetricsEvol",r=$("."+n);r.length>0&&$.each(r,function(t,n){var r={};$.each(e,function(e,t){r[e]=t}),$(this).empty();var i=$(this).data("metrics"),s=$(this).data("data-source");r.title=$(this).data("title");var o=Report.getDataSourceByName(s);if(o===null)return;r=m(n,r),n.id=i.replace(/,/g,"-")+"-"+s+"-metrics-evol-"+this.id,n.id=n.id.replace(/\n|\s/g,""),o.displayMetricsEvol(i.split(","),n.id,r,$(this).data("convert"))})},Convert.convertMetricsEvolCustomized=function(e){var t={};t.show_desc=!1,t.show_title=!0,t.show_labels=!0;var n=Report.getVizConfig();n&&$.each(n,function(e,n){t[e]=n});var r="MetricsEvolCustomized",i=$("."+r);i.length>0&&$.each(i,function(n,r){if(e!==$(this).data("filter"))return;var i={};$.each(t,function(e,t){i[e]=t}),$(this).empty();var s=$(this).data("metrics"),o=$(this).data("data-source");i.title=$(this).data("title");var u=Report.getDataSourceByName(o);if(u===null)return;i=m(r,i),r.id=s.replace(/,/g,"-")+"-"+o+"-metrics-evol-"+this.id,r.id=r.id.replace(/\n|\s/g,""),u.displayMetricsEvol(s.split(","),r.id,i,$(this).data("convert"))})},Convert.convertMetricsEvolSelector=function(){var e={};e.show_desc=!1,e.show_title=!0,e.show_labels=!0;var t=Report.getVizConfig();t&&$.each(t,function(t,n){e[t]=n});var n="MetricsEvol",r=$("."+n);r.length>0&&$.each(r,function(t,n){var r={};$.each(e,function(e,t){r[e]=t}),$(this).empty();var i=$(this).data("metrics"),s=$(this).data("data-source"),o=Report.getDataSourceByName(s);if(o===null)return;var u=Report.getParameterByName("repository");r.repo_filter=u,r=m(n,r),n.id=i.replace(/,/g,"-")+"-"+s+"-metrics-evol-"+u,n.id=n.id.replace(/\n|\s/g,""),o.displayMetricsEvol(i.split(","),n.id,r,$(this).data("convert"))})},Convert.convertMetricsEvolSet=function(){div_param="MetricsEvolSet";var e=$("."+div_param);e.length>0&&$.each(e,function(e,t){$(this).empty();var n=$(this).data("all"),r=$(this).data("relative"),i=$(this).data("summary-graph"),s=$(this).data("legend-show");t.id=o+"-MetricsEvolSet-"+this.id;if(n===!0)return t.id=o+"-All",Viz.displayEnvisionAll(t.id,r,s,i),!1;var o=$(this).data("data-source"),u=Report.getDataSourceByName(o);if(u===null)return;u.displayEnvision(t.id,r,s,i)})},Convert.convertTimeTo=function(){var e="TimeTo";divs=$("."+e),divs.length>0&&$.each(divs,function(e,t){$(this).empty();var n=$(this).data("data-source"),r=Report.getDataSourceByName(n);if(r===null)return;var i=$(this).data("quantil"),s=$(this).data("type");t.id=n+"-time-to-"+s+"-"+i,s==="fix"&&r.displayTimeToFix(t.id,i),s==="attention"&&r.displayTimeToAttention(t.id,i)})},Convert.convertMarkovTable=function(){var e="MarkovTable",t=$("."+e),n,r;t.length>0&&$.each(t,function(e,t){$(this).empty(),r=$(this).data("data-source"),n=Report.getDataSourceByName(r);if(n===null)return;if(n.getData().length===0)return;var i=$(this).data("title");t.id=r+"-markov-table",n.displayMarkovTable(t.id,i)})},Convert.convertLastActivity=function(){function t(t,n,r){var i="

    Last "+r+"

    ";$.each(Report.getDataSources(),function(t,s){var o=s.getGlobalData();$.each(o,function(t,s){var u="_"+n;if(t.indexOf(u,t.length-u.length)!==-1){var a=t.substring(0,t.length-u.length);r=a,e[a]&&(r=e[a].name),i+=r+":"+o[t]+"
    "}})}),$(t).append(i)}var e=Report.getAllMetrics(),n=$(".LastActivity"),r=null,i={Week:7,Month:30,Quarter:90,Year:365};n.length>0&&$.each(n,function(e,n){r=$(n).data("period"),t(n,i[r],r)})},Convert.convertTopByPeriod=function(){var e="TopByPeriod",t=$("."+e),n,r;if(t.length>0){var i=0;$.each(t,function(e,t){$(this).empty(),r=$(this).data("data-source"),n=Report.getDataSourceByName(r);if(n===null)return;if(n.getData().length===0)return;var i=!1;$(this).data("show_all")&&(i=!0);var s=$(this).data("metric"),o=$(this).data("limit"),u=Utils.isReleasePage(),a=HTMLComposer.TopByPeriod(r,s,o,u);t.id||(t.id="Parsed"+g()),$("#"+t.id).append(a)})}},Convert.convertTop=function(){var e="Top",t=$("."+e),n,r;if(t.length>0){var i=0;$.each(t,function(t,s){$(this).empty(),r=$(this).data("data-source"),n=Report.getDataSourceByName(r);if(n===null)return;if(n.getData().length===0)return;var o=!1;$(this).data("show_all")&&(o=!0);var u=$(this).data("metric"),a=$(this).data("limit"),f=$(this).data("graph"),l=$(this).data("people_links"),c=$(this).data("threads_links"),h=$(this).data("period"),p=$(this).data("period_all"),d=Report.getParameterByName("repository");s.id=r+"-"+e+i++,f&&(s.id+="-"+f),h===undefined&&p===undefined&&(p=!0),a===undefined&&(a=10),n.displayTop(s.id,o,u,h,p,f,a,l,c,d)})}},Convert.convertPersonMetrics=function(e,t){var n={};n.show_desc=!1,n.show_title=!1,n.show_labels=!0,divs=$(".PersonMetrics"),divs.length&&$.each(divs,function(r,i){$(this).empty(),ds=$(this).data("data-source"),DS=Report.getDataSourceByName(ds);if(DS===null)return;var s=$(this).data("metrics");n.show_legend=!1,n.help=!1,$(this).data("frame-time")&&(n.frame_time=!0),$(this).data("legend")&&(n.show_legend=!0),$(this).data("person_id")&&(e=$(this).data("person_id")),$(this).data("person_name")&&(t=$(this).data("person_name")),i.id=s.replace(/,/g,"-")+"-people-metrics",DS.displayMetricsPeople(e,t,s.split(","),i.id,n)})},Convert.convertPersonData=function(e,t){var n=$(".PersonData"),r,i;n.length>0&&$.each(n,function(n,s){$(this).empty(),$(this).data("person_id")&&(e=$(this).data("person_id")),s.id||(s.id="PersonData-"+e+"-"+g());var o=Report.getPeopleIdentities()[e];o?(r=DataProcess.selectPersonName(o),i=DataProcess.selectPersonEmail(o),i="("+DataProcess.hideEmail(i)+")"):(t!==undefined?r=t:r=e,i=""),html=HTMLComposer.personName(r,i),$("#"+s.id).append(html)})},Convert.personSummaryBlock=function(e){var t=$(".PersonSummaryBlock");t.length>0&&$.each(t,function(t,n){if(n.id.indexOf("Parsed")>=0)return;ds_name=$(this).data("data-source"),metric_name=$(this).data("metrics"),DS=Report.getDataSourceByName(ds_name);if(DS===null)return;if(DS.getData().length===0)return;if(DS.getPeopleMetricsData()[e].length===0)return;var r=HTMLComposer -.personDSBlock(ds_name,metric_name);n.id||(n.id="Parsed"+g()),$("#"+n.id).append(r)})},Convert.convertPersonSummary=function(e,t){var n=$(".PersonSummary");n.length>0&&$.each(n,function(n,r){$(this).empty(),ds=$(this).data("data-source"),DS=Report.getDataSourceByName(ds);if(DS===null)return;$(this).data("person_id")&&(e=$(this).data("person_id")),$(this).data("person_name")&&(t=$(this).data("person_name")),r.id=ds+"-refcard-people",DS.displayPeopleSummary(r.id,e,t,DS)})},Convert.convertPeople=function(e,t){e===undefined&&(e=Report.getParameterByName("id")),t===undefined&&(t=Report.getParameterByName("name"));if(e===undefined)return;if(Loader.check_people_item(e)===!1){$.each(Report.getDataSources(),function(t,n){Loader.data_load_people_item(e,n,Convert.convertPeople)});return}Convert.personSummaryBlock(e),Convert.convertPersonData(e,t),Convert.convertPersonSummary(e,t),Convert.convertPersonMetrics(e,t),Convert.activateHelp()},Convert.repositoryDSBlock=function(e){var t=$(".FilterDSBlock");t.length>0&&$.each(t,function(t,n){if(n.id.indexOf("Parsed")>=0)return;ds_name=$(this).data("data-source"),filter_name=$(this).data("filter"),aux=$(this).data("metrics"),metric_names=aux.split(","),$.each(metric_names,function(e,t){metric_names[e]=metric_names[e].replace(/:/g,",")}),DS=Report.getDataSourceByName(ds_name);if(DS===null)return;if(DS.getData().length===0)return;if(y(filter_name,e)){var r=HTMLComposer.filterDSBlock(ds_name,filter_name,metric_names);n.id||(n.id="Parsed"+g()),$("#"+n.id).append(r)}})},Convert.convertDSSummaryBlock=function(e){var t=$(".DSSummaryBlock");t.length>0&&$.each(t,function(e,t){if(t.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.getData().length===0)return;var n=HTMLComposer.DSBlock(ds_name,box_labels,box_metrics,ts_metrics);t.id||(t.id="Parsed"+g()),$("#"+t.id).append(n)})},Convert.convertDSSummaryBlockProjectFiltered=function(e){var t=$(".DSSummaryBlockProjectFiltered"),n=Report.getParameterByName("project");t.length>0&&$.each(t,function(e,t){if(t.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()[n]===undefined)return;if(DS.getProjectsGlobalData()[n].length===0)return;var r=HTMLComposer.DSBlockProject(ds_name,box_labels,box_metrics,ts_metrics,n);t.id||(t.id="Parsed"+g()),$("#"+t.id).append(r)})},Convert.convertOverallSummaryBlock=function(){var e=$(".OverallSummaryBlock");e.length>0&&$.each(e,function(e,t){if(t.id.indexOf("Parsed")>=0)return;var n=HTMLComposer.overallSummaryBlock();t.id||(t.id="Parsed"+g()),$("#"+t.id).append(n)})},Convert.convertDemographics=function(){var e=$(".Demographics");e.length>0&&$.each(e,function(e,t){$(this).empty(),ds=$(this).data("data-source"),DS=Report.getDataSourceByName(ds);if(DS===null)return;var n=$(this).data("period");t.id="Demographics-"+ds+"-"+"-"+n,DS.displayDemographics(t.id,n)})},Convert.getRealItem=function(e,t,n){var r=Report.getReposMap();if(r===undefined||r.length===0)return $.inArray(n,e.getReposData())>-1?n:null;var i=null;if(t==="repos"){var s=e.getReposMetricsData()[n];s===undefined?$.each(r,function(t,r){$.each(Report.getDataSources(),function(t,s){if(r[s.getName()]===n)return i=r[e.getName()],!1});if(i!==null)return!1}):i=n}else i=n;return i},Convert.convertFilterItemsSummary=function(e){var t="FilterItemsSummary";divs=$("."+t),divs.length>0&&$.each(divs,function(n,r){ds=$(this).data("data-source"),DS=Report.getDataSourceByName(ds);if(DS===null)return;e===undefined&&(e=$(this).data("filter"));if(e!==$(this).data("filter"))return;if(!e)return;r.id=ds+"-"+t,$(this).empty(),e==="repos"&&DS.displayReposSummary(r.id,DS),e==="countries"&&DS.displayCountriesSummary(r.id,DS),e==="companies"&&DS.displayCompaniesSummary(r.id,DS),e==="domains"&&DS.displayDomainsSummary(r.id,DS),e==="projects"&&DS.displayProjectsSummary(r.id,DS)})},Convert.convertFilterItemsGlobal=function(e){var t=b(),n="FilterItemsGlobal";divs=$("."+n),divs.length>0&&$.each(divs,function(r,i){ds=$(this).data("data-source"),DS=Report.getDataSourceByName(ds);if(DS===null)return;e===undefined&&(e=$(this).data("filter"));if(e!==$(this).data("filter"))return;if(!e)return;var s=$(this).data("metric"),o=$(this).data("show-others"),u=$(this).data("order-by");t.show_legend=$(this).data("legend"),$("#"+$(this).data("legend-div")).length>0?t.legend={container:$(this).data("legend-div")}:t.legend={container:null},t.graph=$(this).data("graph"),t.title=$(this).data("title"),t.show_title=1,i.id=s+"-"+n,$(this).empty(),e==="repos"&&DS.displayMetricReposStatic(s,i.id,t,u,o),e==="countries"&&DS.displayMetricCountriesStatic(s,i.id,t,u,o),e==="companies"&&DS.displayMetricCompaniesStatic(s,i.id,t,u,o),e==="domains"&&DS.displayMetricDomainsStatic(s,i.id,t,u,o),e==="projects"&&DS.displayMetricProjectsStatic(s,i.id,t,u,o)})},Convert.convertFilterItemsNav=function(e,t){var n="FilterItemsNav";divs=$("."+n);if(divs.length>0){var r=0;$.each(divs,function(i,s){ds=$(this).data("data-source"),DS=Report.getDataSourceByName(ds);if(DS===null)return;e===undefined&&(e=$(this).data("filter"));if(e!==$(this).data("filter"))return;if(!e)return;$(this).data("page")&&(t=$(this).data("page")),order_by=$(this).data("order-by"),s.id=ds+"-"+n+"-"+r,r+=1,$(this).empty(),e==="repos"?DS.displayItemsNav(s.id,e,t,order_by):e==="countries"?DS.displayItemsNav(s.id,e,t):e==="companies"?DS.displayItemsNav(s.id,e,t):e==="domains"?DS.displayItemsNav(s.id,e,t):e==="projects"&&DS.displayItemsNav(s.id,e,t)})}},Convert.convertFilterItemsMetricsEvol=function(e){var t=b(),n="FilterItemsMetricsEvol";divs=$("."+n),divs.length>0&&$.each(divs,function(r,i){ds=$(this).data("data-source"),DS=Report.getDataSourceByName(ds);if(DS===null)return;e===undefined&&(e=$(this).data("filter"));if(e!==$(this).data("filter"))return;if(!e)return;var s=$(this).data("metric"),o=!1;$(this).data("stacked")&&(o=!0),$(this).data("min")&&(config_viz.show_legend=!1,config_viz.show_labels=!0,config_viz.show_grid=!0,config_viz.help=!1);var u=$(this).data("start"),a=$(this).data("end");t.lines={stacked:o},$("#"+$(this).data("legend-div")).length>0?t.legend={container:$(this).data("legend-div")}:t.legend={container:null},t.show_legend=$(this).data("legend"),t.mouse_tracker=$(this).data("mouse_tracker");var f=$(this).data("remove-last-point");f&&(t.remove_last_point=!0),i.id=s+"-"+n,$(this).empty(),e==="companies"?DS.displayMetricCompanies(s,i.id,t,u,a):e==="repos"?DS.displayMetricRepos(s,i.id,t,u,a):e==="domains"?DS.displayMetricDomains(s,i.id,t,u,a):e==="projects"&&DS.displayMetricProjects(s,i.id,t,u,a)})},Convert.convertFilterItemsMiniCharts=function(e,t){var n=b(),r="FilterItemsMiniCharts";divs=$("."+r),divs.length>0&&$.each(divs,function(i,s){ds=$(this).data("data-source"),DS=Report.getDataSourceByName(ds);if(DS===null)return;e===undefined&&(e=$(this).data("filter"));if(e!==$(this).data("filter"))return;if(!e)return;$(this).data("page")&&(t=$(this).data("page"));var o=$(this).data("metrics"),u=$(this).data("order-by"),a=!0;$(this).data("show_links")!==undefined&&(a=$(this).data("show_links"));var f=$(this).data("start"),l=$(this).data("end"),c=$(this).data("convert");$(this).data("frame-time")&&(n.frame_time=!0);var h=$(this).data("remove-last-point");h&&(n.remove_last_point=!0),s.id=o.replace(/,/g,"-")+"-"+e+"-"+r,$(this).empty(),e==="repos"?DS.displayReposList(o.split(","),s.id,n,u,t,a,f,l,c):e==="countries"?DS.displayCountriesList(o.split(","),s.id,n,u,t,a,f,l,c):e==="companies"?DS.displayCompaniesList(o.split(","),s.id,n,u,t,a,f,l,c):e==="domains"?DS.displayDomainsList(o.split(","),s.id,n,u,t,a,f,l,c):e==="projects"&&DS.displayProjectsList(o.split(","),s.id,n,u,t,a,f,l,c)})},Convert.convertFilterItemData=function(e,t){var n=$(".FilterItemData");n.length>0&&$.each(n,function(n,r){$(this).empty();var i=Report.cleanLabel(t);r.id||(r.id="FilterItemData"+g()),html=HTMLComposer.itemName(i,e),$("#"+r.id).append(html)})},Convert.convertFilterItemSummary=function(e,t){var n="FilterItemSummary";divs=$("."+n),t!==null&&divs.length>0&&$.each(divs,function(r,i){var s=t;ds=$(this).data("data-source"),DS=Report.getDataSourceByName(ds);if(DS===null)return;e===undefined&&(e=$(this).data("filter"));if(e!==$(this).data("filter"))return;if(!e)return;$(this).data("item")&&(s=$(this).data("item")),i.id=ds+"-"+e+"-"+n,$(this).empty(),e==="repos"?DS.displayRepoSummary(i.id,s,DS):e==="countries"?DS.displayCountrySummary(i.id,s,DS):e==="companies"?DS.displayCompanySummary(i.id,s,DS):e==="domains"?DS.displayDomainSummary(i.id,s,DS):e==="projects"&&DS.displayProjectSummary(i.id,s,DS)})},Convert.convertFilterItemMicrodashText=function(e,t){var n=$(".FilterItemMicrodashText");n.length>0&&$.each(n,function(n,r){$(this).empty();var i,s=t,o=$(this).data("metric"),u=$(this).data("name"),a=Report.getMetricDS(o)[0];if(a===undefined)return;if(e!=="projects")return;i=a.getProjectsGlobalData()[t];if(i===undefined)return;var f='
    ';u&&(f+='
    ',f+=''+a.basic_metrics[o].name+"",f+="
    "),$.each([365,30,7],function(e,t){var n=a.getMetrics()[o].column,r=i[o+"_"+t],s=i["diff_net"+n+"_"+t],l=i["percentage_"+n+"_"+t];l=Math.round(l*10)/10;if(r===undefined)return;var c="";s>0&&(c="+"+l),s<0&&(c="-"+Math.abs(l)),u?f+='
    ':f+='
    ',f+='Last '+t+" days:",f+=" "+Report.formatValue(r)+"
    ",s===0?f+='  '+c+"% ":s>0?f+='  '+c+"% ":s<0&&(f+='  '+c+"% "),f+="
    "}),f+="
    ",$(r).append(f)})},Convert.convertFilterItemMetricsEvol=function(e,t){var n=b(),r="FilterItemMetricsEvol";divs=$("."+r),t!==null&&divs.length>0&&$.each(divs,function(i,s){var o=t,u=$(this).data("metrics");ds=$(this).data("data-source"),DS=Report.getDataSourceByName(ds);if(DS===null)return;e===undefined&&(e=$(this).data("filter"));if(e!==$(this).data("filter"))return;if(!e)return;$(this).data("item")&&(o=$(this).data("item")),n=m(s,n),s.id=Report.cleanLabel(t).replace(/ /g,"_")+"-",s.id+=u.replace(/,/g,"-")+"-"+ds+"-"+e+"-"+r,$(this).empty(),e==="repos"?DS.displayMetricsRepo(o,u.split(","),s.id,n):e==="countries"?DS.displayMetricsCountry(o,u.split(","),s.id,n):e==="companies"?DS.displayMetricsCompany(o,u.split(","),s.id,n):e==="domains"?DS.displayMetricsDomain(o,u.split(","),s.id,n):e==="projects"&&DS.displayMetricsProject(o,u.split(","),s.id,n)})},Convert.convertFilterItemTop=function(e,t){var n="FilterItemTop";divs=$("."+n),divs.length>0&&$.each(divs,function(r,i){var s=t;$(this).empty(),ds=$(this).data("data-source"),DS=Report.getDataSourceByName(ds);if(DS===null)return;e===undefined&&(e=$(this).data("filter"));if(e!==$(this).data("filter"))return;if(!e)return;$(this).data("item")&&(s=$(this).data("item"));var o=$(this).data("metric"),u=$(this).data("period"),a=$(this).data("titles");i.id=o+"-"+ds+"-"+e+"-"+n+"-"+g(),$(this).empty(),i.className="",e==="companies"&&DS.displayTopCompany(s,i.id,o,u,a)})},Convert.convertSmartLinks=function(){var e=$(".SmartLinks");e.length>0&&$.each(e,function(e,t){if(t.id.indexOf("Parsed")>=0)return;target_page=$(this).data("target"),label=$(this).data("label");var n=HTMLComposer.smartLinks(target_page,label);t.id||(t.id="Parsed"+g()),$("#"+t.id).append(n)})},Convert.convertFilterStudyItem=function(e,t){var n=Convert.convertFilterStudyItem;if(n.done===undefined)n.done={};else if(n.done[e]===!0)return;e==="repositories"&&(e="repos"),t===undefined&&(e==="repos"&&(t=Report.getParameterByName("repository")),e==="countries"&&(t=Report.getParameterByName("country")),e==="companies"&&(t=Report.getParameterByName("company")),e==="domains"&&(t=Report.getParameterByName("domain")),e==="projects"&&(t=Report.getParameterByName("project")));if(!t)return;if(Loader.FilterItemCheck(t,e)===!1)return;Convert.repositoryDSBlock(t),Convert.convertDSSummaryBlockProjectFiltered(),Convert.convertFilterItemData(e,t),Convert.convertFilterItemSummary(e,t),Convert.convertFilterItemMetricsEvol(e,t),Convert.convertFilterItemTop(e,t),Convert.convertFilterItemMicrodashText(e,t),Convert.convertProjectData(),Convert.activateHelp(),Convert.convertMetricsEvolSelector(),n.done[e]=!0},Convert.activateHelp=function(){$(".help").popover({html:!0,trigger:"manual"}).click(function(e){$(this).popover("toggle"),e.stopPropagation()})},Convert.convertFilterStudy=function(e){var t=Report.getCurrentPage();t===null&&(t=Report.getParameterByName("page"),t!==undefined&&Report.setCurrentPage(t));if(t===undefined){if(!($("[class^='FilterItems']").length>0))return;t=1,Report.setCurrentPage(t)}e==="repositories"&&(e="repos");if(Loader.check_filter_page(t,e)===!1){$.each(Report.getDataSources(),function(n,r){Loader.data_load_items_page(r,t,Convert.convertFilterStudy,e)});return}Convert.convertFilterItemsSummary(e),Convert.convertFilterItemsGlobal(e),Convert.convertFilterItemsNav(e,t),Convert.convertFilterItemsMetricsEvol(e),Convert.convertFilterItemsMiniCharts(e,t)},Convert.convertDSTable=function(){var e="DataSourcesTable",t=$("."+e),n,r;if(t.length>0){var i=0;$.each(t,function(t,n){$(this).empty(),n.id=e+i++,Viz.displayDataSourcesTable(n)})}},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.convertBasicDivsMisc=function(){Convert.convertRadarActivity(),Convert.convertRadarCommunity(),Convert.convertTreemap(),Convert.convertBubbles()},Convert.convertBasicMetrics=function(e){var t=Report.getParameterByName("repository");t===undefined&&Convert.convertMetricsEvol(),Convert.convertTimeTo(),Convert.convertMarkovTable()},Convert.convertModifiedBasicMetrics=function(e){var t=1;if(Loader.check_filter_page(t,e)===!1){$.each(Report.getDataSources(),function(n,r){if(e!=="repos")return;e==="repos"&&(total=r.getReposData().length);for(var i=0;i0&&(e.push("data/json/"+t),Report.setDataDir("data/json/"+t),e.length>0&&Report.setProjectsDirs(e))}function _(){M();var e=Report.getProjectsDirs(),t,n,r,i,s,o,u,a,f,l;return $.each(e,function(e,c){if(Report.getConfig()===null||Report.getConfig()["data-sources"]===undefined)n=new ITS,Report.registerDataSource(n),r=new MLS,Report.registerDataSource(r),t=new SCM,Report.registerDataSource(t),i=new SCR,Report.registerDataSource(i),s=new IRC,Report.registerDataSource(s),o=new MediaWiki,Report.registerDataSource(o),u=new People,Report.registerDataSource(u),a=new Downloads,Report.registerDataSource(a),f=new QAForums,Report.registerDataSource(f),l=new Releases,Report.registerDataSource(l);else{var h=Report.getConfig()["data-sources"];$.each(h,function(e,c){c==="its"?(n=new ITS,Report.registerDataSource(n)):c==="mls"?(r=new MLS,Report.registerDataSource(r)):c==="scm"?(t=new SCM,Report.registerDataSource(t)):c==="scr"?(i=new SCR,Report.registerDataSource(i)):c==="irc"?(s=new IRC,Report.registerDataSource(s)):c==="mediawiki"?(o=new MediaWiki,Report.registerDataSource(o)):c==="people"?(u=new People,Report.registerDataSource(u)):c==="downloads"?(a=new Downloads,Report.registerDataSource(a)):c==="qaforums"?(f=new QAForums,Report.registerDataSource(f)):c==="releases"?(l=new Releases,Report.registerDataSource(l)):Report.log("Not support data source "+c)})}n&&n.setDataDir(c),r&&r.setDataDir(c),t&&t.setDataDir(c),i&&i.setDataDir(c),s&&s.setDataDir(c),o&&o.setDataDir(c),u&&u.setDataDir(c),a&&a.setDataDir(c),f&&f.setDataDir(c),l&&l.setDataDir(c),t&&n&&t.setITS(n)}),!0}function D(){$.each(Report.getActiveStudies(),function(e,t){var n=t;t==="repositories"&&(n="repos"),DataProcess.orderItems(n),Convert.convertFilterStudy(t),Convert.convertFilterStudyItem(t)})}var e=null,t=null,n=null,r={},i=[],s=null,o="",u="data/json",a="config",f="data/json",l="",c=[f],h={},p={},d;Report.all_json_file=u+"/all.json";var v=a+"/project-info.json";viz_config_file=u+"/viz_cfg.json",markers_file=u+"/markers.json",repos_map_file=u+"/repos-map.json",projects_hierarchy_file=u+"/projects_hierarchy.json",menu_elements_file=a+"/menu-elements.json";var m=10,g=null,y={};Report.createDataSources=_,Report.getAllMetrics=O,Report.getMarkers=b,Report.getVizConfig=w,Report.getProjectsHierarchy=E,Report.getMenuElements=S,Report.getReleaseNames=x,Report.getMetricDS=A,Report.getGridster=T,Report.setGridster=N,Report.getCurrentPage=function(){return g},Report.setCurrentPage=function(e){g=e},Report.getPageSize=function(){return m},Report.setPageSize=function(e){m=e},Report.getProjectData=C,Report.getProjectsData=k,Report.convertStudies=D,Report.getDataSources=function(){return i},Report.registerDataSource=function(e){i.push(e)},Report.setHtmlDir=function(e){o=e},Report.getHtmlDir=function(){return o},Report.getDataDir=function(){return u},Report.setDataDir=function(e){u=e,v=e+"/project-info.json",config_file=e+"/viz_cfg.json",markers_file=e+"/markers.json",repos_mapping_file=u+"/repos-mapping.json",projects_hierarchy_file=u+"/projects_hierarchy.json"},Report.setMarkers=function(e){t=e},Report.getMarkersFile=function(){return markers_file},Report.getReposMap=function(){return d},Report.setReposMap=function(e){d=e},Report.getReposMapFile=function(){return repos_map_file},Report.setVizConfig=function(e){n=e},Report.getVizConfigFile=function(){return viz_config_file},Report.setProjectsHierarchy=function(e){projects_hierarchy=e},Report.getProjectsHierarchyFile=function(){return projects_hierarchy_file},Report.setMenuElements=function(e){menu_elements=e},Report.getMenuElementsFile=function(){return menu_elements_file},Report.setProjectData=function(t){e=t},Report.getProjectFile=function(){return v},Report.getProjectsDirs=function(){return c},Report.setProjectsDirs=function(e){c=e},Report.getProjectsList=function(){var e=[];return $.each(k(),function(t,n){e.push(t)}),e},Report.getProjectsDataSources=function(){return p},Report.setMetricsDefinition=function(e){$.each(Report.getDataSources(),function(t,n){n.setMetricsDefinition(e[n.getName()])})},Report.getPeopleIdentities=function(){return y},Report.setPeopleIdentities=function(e){y=e},Report.cleanLabel=function(e){var t=e,n=null;return e.split("___").length===2?(n=e.split(" "),t=n[0]):e.lastIndexOf("https:__api.github.com_repos_")===0?(t=t.replace("https:__api.github.com_repos_",""),t=t.split("_")[1]):e.lastIndexOf("http")===0||e.split("_").length>3?(n=e.split("_"),t=n.pop(),t===""&&(t=n.pop()),t=t.replace("buglist.cgi?product=",""),t=t.replace("gmane.comp.sysutils.","")):e.lastIndexOf("<")===0&&(t=MLS.displayMLSListName(e)),t},Report.formatValue=function(e,t){if(e===undefined)return"-";var n=["last_date","first_date"],r=e;try{r=parseFloat(e).toFixed(1).toString().replace(/\.0$/,""),r=L(r);if(navigator.language==="es"){var i=r.split(".");i[0]=i[0].replace(/,/g,"."),r=i.join(",")}}catch(s){}return typeof r=="number"&&isNaN(r)&&(r=e.toString()),t!==undefined&&$.inArray(t,n)>-1&&(r=e.toString()),r},Report.escapeHtml=function(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")},Report.getParameterByName=function(e){e=e.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var t=new RegExp("[\\?&]"+e+"=([^&#]*)"),n=t.exec(location.search);return n===null?undefined:Report.escapeHtml(decodeURIComponent(n[1].replace(/\+/g," ")))},Report.getDataSourceByName=function(e){var t=null;return $.each(Report.getDataSources(),function(n,r){if(r.getName()===e)return t=r,!1}),t},Report.displayActiveMenu=function(){var e=window.location.href,t=e.substr(e.lastIndexOf("/")+1,e.length);t=t.split(".html")[0];if(t.indexOf("scm")===0)$(".scm-menu")[0].className=$(".scm-menu")[0].className+" active";else if(t.indexOf("its")===0)$(".its-menu")[0].className=$(".its-menu")[0].className+" active";else if(t.indexOf("mls")===0)$(".mls-menu")[0].className=$(".mls-menu")[0].className+" active";else if(t.indexOf("scr")===0)$(".scr-menu")[0].className=$(".scr-menu")[0].className+" active";else if(t.indexOf("irc")===0)$(".irc-menu")[0].className=$(".irc-menu")[0].className+" active";else if(t.indexOf("qaforum")===0)$(".qaforum-menu")[0].className=$(".qaforum-menu")[0].className+" active";else if(t.indexOf("studies")===0)$(".studies-menu")[0].className=$(".studies-menu")[0].className+" active";else if(t.indexOf("wiki")===0)$(".wiki-menu")[0].className=$(".wiki-menu")[0].className+" active";else if(t.indexOf("downloads")===0)$(".downloads-menu")[0].className=$(".downloads-menu")[0].className+" active";else if(t.indexOf("projects")===0)$(".listprojects-menu")[0].className=$(".listprojects-menu")[0].className+" active";else if(t.indexOf("index")===0||t===""){if($(".summary-menu").length===0)return;$(".summary-menu")[0].className=$(".summary-menu")[0].className+" active"}else $(".experimental-menu")[0]&&($(".experimental-menu")[0].className=$(".experimental-menu")[0].className+" active")},Report.addDataDir=function(){var e,t=window.location.search.substr(1);return t&&t.indexOf("data_dir")!==-1&&(e=window.location.search.substr(1)),e},Report.configDataSources=function(){var e=Report.getProjectsDataSources();$.each(Report.getDataSources(),function(t,n){if(n.getData()instanceof Array)return;$.each(h,function(t,r){if(r.dir===n.getDataDir())return e[t]===undefined&&(e[t]=[]),$.each(e[t],function(e,t){if(n.getName()===t.getName())return!1}),n.setProject(t),e[t].push(n),!1})})},Report.getConfig=function(){return s},Report.setConfig=function(e){s=e,e&&(Report.log("Global config file found"),e["global-html-dir"]&&Report.setHtmlDir(e["global-html-dir"]),e["global-data-dir"]&&(Report.setDataDir(e["global-data-dir"]),Report.setProjectsDirs([e["global-data-dir"]])),e["projects-data-dirs"]&&Report.setProjectsDirs(e["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 e=[],t,n=["repositories","countries","companies","domains","projects"];return Report.getConfig()!==null?t=Report.getConfig().reports:t=n,$.each(n,function(n,r){$.inArray(r,t)>-1&&e.push(r)}),e},Report.convertStudiesGlobal=function(){Convert.convertPeople()};var P=!0;Report.getLog=function(){return P},Report.setLog=function(e){P=e},Report.log=function(e){Report.getLog()===!0&&window.console&&console.log(e)}})(),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(){var e="./config.json";$.getJSON(e,function(e){Report.setConfig(e)}).fail(function(){window.console&&Report.log("Can't read global config file "+e)}).always(function(e){Report.createDataSources(),$.getJSON(Report.all_json_file,function(e){window.console&&Report.log("Loaded all JSON data from "+Report.all_json_file),Loader.set_all_data(e)}).always(function(e){Loader.data_load()}),$("body").css("cursor","progress")})});var resized;$(window).resize(function(){clearTimeout(resized),resized=setTimeout(resizedw,100)});if(Viz===undefined)var Viz={};(function(){function t(e,t){var n="";return $.each(Report.getAllMetrics(),function(e,r){if(r.action===t)return n=r.column,!1}),n}function n(e,t,n){var r="

    "+n+"

    ",i='';i+="",$.each(t,function(e,n){subdata=t[e],old_value="old_value",new_value="new_value",percent="f",number="issue";for(var r=0;r",i+="",i+=""}}),i+="
    TransitionNumberPercent
    "+e+" -> "+s+""+u+""+o+"
    ",r+=i,div=$("#"+e),div.append(r);return}function r(e,t){return e.hasOwnProperty(t)?e[t]:t}function i(e,t){var n={};return n.id="id",e==="senders"&&(t==="mls"||t==="irc")&&(n.name="senders",n.action="sent"),e==="authors"&&t==="scm"&&(n.name="authors",n.action="commits"),e==="closers"&&t==="its"&&(n.name="closers",n.action="closed"),t==="scr"&&(e==="mergers"&&(n.name="mergers",n.action="merged"),e==="openers"&&(n.name="openers",n.action="opened"),e==="reviewers"&&(n.name="reviewers",n.action="reviews")),t==="downloads"&&(e==="ips"&&(n.name="ips",n.action="downloads"),e==="packages"&&(n.name="packages",n.action="downloads")),t==="mediawiki"&&e==="authors"&&(n.name="authors",n.action="reviews"),t==="qaforums"&&(e==="senders"||e==="asenders"||e==="qsenders"?(n.name="senders",n.action="sent"):e==="participants"&&(n.name="name",n.action="messages_sent")),t==="releases"&&e==="authors"&&(n.name="username",n.action="releases"),n}function s(){return["last month","last year",""]}function o(e,t,n){var r="";for(var i=0;i "+(i+1)+"",r+="",r+=e[n.name][i],r+="",r+=""+s+""}return r}function u(e,t,n){var r="";for(var i=0;i#"+(i+1)+"",r+="";if(n===!0){var s="http://www.google.com/search?output=search&q=X&btnI=1";e.hasOwnProperty("url")&&e.url[i].length>0&&(s="http://www.google.com/search?output=search&q=X%20site%3AY&btnI=1",s=s.replace(/Y/g,e.url[i])),s=s.replace(/X/g,e.subject[i]),r+="",r+='',r+=e.subject[i]+"",r+=' '}else r+=""+e.subject[i]+"";r+=""+e.initiator_name[i]+"",r+=""+e.length[i]+"",r+=""}return r}function a(e,t,n,r){var i="";for(var s=0;s"+(s+1)+"",i+="",n?(i+='"):i+=DataProcess.hideEmail(e[r.name][s]),i+="",i+=""+o+""}return i}function f(e,t,n,r){var i="",s=!0;i+='",i}function l(e,t,n,r,i){var s=t+"_"+e,o="",u="";return s in r&&(o=r[s].desc,o=o.toLowerCase()),i===""?data_period_formatted="Complete history":i==="last month"?data_period_formatted="Last 30 days":i==="last year"&&(data_period_formatted="Last 365 days"),Utils.isReleasePage()&&(data_period_formatted="Release history"),n===!0?u+="
    Top "+o+"
    ":u+='
    '+data_period_formatted+"
    ",u}function c(e,t,n,r,c,h,p,d){var v="",m="",g="",y=!0,b=$("#"+e),w=b.attr("data-data-source");periods=s(),d!==undefined&&(y=!1),g+=l(n,w,y,c,d),y===!0&&(v+=f(periods,n,t,w)),m+='
    ';var E=i(n,w);if(y===!0){var S=!0,x="";for(var T=0;T',m+='',n==="threads"?m+=u(t[N],r,p):n==="packages"||n==="ips"?(unit=c[w+"_"+n].action,metric_name=c[w+"_"+n].name,m+="",unit!==undefined&&(m+=""),m+="",m+=o(t[N],r,E)):(unit=c[w+"_"+n].action,metric_name=c[w+"_"+n].name,m+="",unit!==undefined&&(m+=""),m+="",m+=a(t[N],r,h,E),m+=""),m+="
    #"+metric_name.capitalize()+""+unit.capitalize()+"
    #"+metric_name.capitalize()+""+unit.capitalize()+"
    ",m+="
    "}}}else m+='',n==="threads"?m+=u(t,r,p):n==="packages"||n==="ips"?(unit=c[w+"_"+n].action,m+="",unit!==undefined&&(m+=""),m+="",m+=o(t,r,E)):(unit=c[w+"_"+n].action,m+="",unit!==undefined&&(m+=""),m+="",m+=a(t,r,h,E),m+=""),m+="
    #"+n.capitalize()+""+unit.capitalize()+"
    #"+n.capitalize()+""+unit.capitalize()+"
    ";m+="
    ",y===!1&&b.append(g),b.append(v),b.append(m),y===!0&&(script="",b.append(script))}function h(e,n,r,i,s,o,u,a){var f=n.name;if(!i||$.isEmptyObject(i))return;var l=n.action;u&&i[l].length
    "),m+=p,d=$("#"+e),d.append(m);if(s){var g=i[c],y=i[l];if(u){g=[],y=[];for(var b=0;b',html+="Data SourceFrom",html+="To (Updated on)",$.each(dsources,function(e,t){if(t.getName()==="people")return;var n=t.getGlobalData(),r=t.getTitle();r===undefined&&(r="-");var i=n.last_date;if(i===undefined)return;var s=n.first_date;s===undefined&&(s="-");var o=n.type;html+=""+r,o!==undefined&&(o=o.toLowerCase(),o=o.charAt(0).toUpperCase()+o.slice(1),html+=" ("+o+")"),html+="",html+=""+s+"",html+=""+i+""}),html+="",$(e).append(html)}function d(e,t,n){var r=Report.getAllMetrics(),i=': "+n.desc+"
    ",!1};for(var u=0;u',i+='
    ';var a=$("#"+e).prev()[0];a&&a.className==="help"&&$("#"+e).prev().empty(),$("#"+e).before(i)}function v(e,t,n,r,i){(!i||i.help!==!1)&&d(e,t,i.custom_help);var s=[];i.remove_last_point&&(n=DataProcess.revomeLastPoint(n)),i.frame_time&&(n=DataProcess.frameTime(n,t)),i.start_time&&(n=DataProcess.filterDates(i.start_time,i.end_time,n)),$.each(t,function(e,t){if(!n[t])return;var r=[[],[]];$.each(n[t],function(e,i){r[e]=[n.id[e],n[t][e]]});var i=t;Report.getAllMetrics()[t]&&(i=Report.getAllMetrics()[t].name),s.push({label:i,data:r})}),N(e,n,s,r,i)}function m(e,t,n,r,i,s){(!i||i.help!==!1)&&d(e,t,i.custom_help);var o=[],u=t[0],a={};$.each(n,function(e,t){if(t===undefined)return!1;if(t[u]===undefined)return!1;i.remove_last_point&&(t=DataProcess.revomeLastPoint(t)),i.frame_time&&(t=DataProcess.frameTime(t,[u])),i.start_time&&(t=DataProcess.filterDates -(i.start_time,i.end_time,t));var n=[[],[]];$.each(t[u],function(e,r){n[e]=[t.id[e],t[u][e]]}),o.push({label:e,data:n}),a=t}),N(e,a,o,r,i)}function g(e,t,n,r,i,s,o,u,a){var f=[],l={};$.each(n,function(e,n){if(n===undefined)return!1;if(n[t]===undefined)return!1;u&&(n=DataProcess.convert(n,u,t)),s&&(n=DataProcess.filterDates(s,o,n)),i.frame_time&&(n=DataProcess.frameTime(n,[t]));var r=[[],[]];for(var a=0;a";for(var i=0;i1&&r[i].label!==undefined&&(value_name=r[i].label,t+=value_name+":"),t+=""+Report.formatValue(s)+"
    "}return t}},selection:{mode:"x",fps:10},shadowSize:4};return i&&(Viz._history=n,Viz._lines_data=r,s.mouse.trackFormatter=Viz[i]),s}function b(e,t){if(t.length===0)return t;if(t.length>1)for(var n=0;nt[1]||t[1]===undefined?1:-1}),e}function x(e,t,n){t=Math.round(t),n=Math.round(n);var r=e.length,i=[];for(var s=0;s0;o--){var u=e[s].data[o][0],a=un;a&&e[s].data.splice(o,1)}var f=[];for(s=0;s";for(var i=0;i1&&n[i].label!==undefined&&(r+=n[i].label+":"),r+=Report.formatValue(s)+"
    "}return r}}};i&&(i.show_title||(u.title=""),"show_legend"in i&&(i.show_legend===!0?u.legend.show=!0:u.legend.show=!1),i.lines&&i.lines.stacked&&(u.lines={stacked:!0,fill:!0,fillOpacity:1,fillBorder:!0,lineWidth:.01}),i.show_labels||(u.xaxis.showLabels=!1,u.yaxis.showLabels=!1),i.show_grid===!1&&(u.grid.verticalLines=!1,u.grid.horizontalLines=!1,u.grid.outlineWidth=0),i.show_mouse===!1&&(u.mouse.track=!1),i.graph==="bars"&&(u.bars={show:!0}),i.light_style===!0&&(u.grid.color="#ccc",u.legend.show=!1),i.custom_title&&(u.subtitle=i.custom_title));var a=!1;i.graph!=="bars"&&n.length===1&&n[0].data[0][0]===0&&(a=!0);if(a){n=w(t,n);var f=t.id[t.id.length-1]+1;n[0].data.push([f,undefined]),n[1].data.push([f,undefined]),t.date.push(""),t.id.push(f)}graph=Flotr.draw(s,n,u),a&&(t.date&&t.date.pop(),t.id&&t.id.pop())}function k(e,t){var n,r=e.length;return n=parseInt(t.unixtime[1],10)-parseInt(t.unixtime[0],10),n/(r+1)}function L(e,t,n,r){var i=e.length,s=e[0].data.length;for(var o=0;o1&&(f.legend.show=!0),n=L(n,t,s,o);var l=!1;Utils.isReleasePage()===!1&&(i.graph!=="bars"&&n.length===1&&(l=!0),l?(n=w(t,n),T(n)):!l&&n.length>1&&b(t,n)),console.log(f),graph=c(),Flotr.EventAdapter.observe(u,"flotr:select",function(e){var t={xaxis:{minorTickFreq:4,mode:"time",timeUnit:"second",timeFormat:"%b %y",min:e.x1,max:e.x2},yaxis:{min:e.y1,autoscale:!0},grid:{verticalLines:!0,color:"#000000",outlineWidth:1,outline:"s"}};t.subtitle=E(f.subtitle,e.xfirst,e.xsecond);var r=JSON.parse(JSON.stringify(n)),i=x(r,e.x1,e.x2);t.yaxis.max=i+i*.2,graph=c(t)}),Flotr.EventAdapter.observe(u,"flotr:click",function(){c()})}function O(e,t,n,r,i,s,o,u,a){var f=!1;o&&(f=!0);var l=document.getElementById(e),c=null;s&&s.legend&&s.legend.container&&(c=$("#"+s.legend.container));var h=[],p,d="";if(!f)for(p=0;pf&&(f=n[1].length);var l=!1;s&&(l=!0);var c=document.getElementById(e),h=null;i&&i.legend&&i.legend.container&&(h=$("#"+i.legend.container));var p=[],d,v=[],m=[];for(d=0;dd?g=n[0][d]:g=undefined,n[1].length>d?y=n[1][d]:y=undefined,l?(p.push([g,d-a/2]),v.push([y,d+a/2])):(p.push([d-a/2,g]),v.push([d+a/2,y]))}m=[{data:p,label:t[0]},{data:v,label:t[1]}];var b={title:r,bars:{show:!0,horizontal:l,barWidth:a},grid:{verticalLines:!1,horizontalLines:!1,outlineWidth:0},xaxis:{showLabels:!1,min:0},yaxis:{showLabels:!0,min:0},mouse:{container:h,track:!0,trackFormatter:function(e){var n,r="x";l&&(r="y");var i=parseFloat(e[r],1),s=Math.round((i-.2)*10)/10,o=Math.round((i+.2)*10)/10;s===parseInt(i,10)?n=s:n=o;var a=n;u&&(a=n*u);var f=a+" years: ",c,h;return p[n]===undefined?c=0:c=parseInt(p[n][0],10),isNaN(c)&&(c=0),v[n]===undefined?h=0:h=parseInt(v[n][0],10),isNaN(h)&&(h=0),f+=c+" "+t[0],f+=" , ",f+=h+" "+t[1],f+=" ("+parseInt(c/h*100,10)+"% )",f}},legend:{show:!0,position:"ne",backgroundColor:"#D2E8FF",container:h}};i&&(i.show_title||(b.title=""),i.show_legend&&(b.legend.show=!0)),i&&i.show_legend!==!1&&(b.legend={show:!0,position:"ne",container:h}),b.grid.horizontalLines=!0,b.yaxis={showLabels:!0,min:0},o&&(b.yaxis={showLabels:!0,min:0,tickFormatter:o}),i&&i.xaxis&&(b.xaxis={showLabels:i.xaxis,min:0}),graph=Flotr.draw(c,m,b)}function _(e,t,n,r){var i=document.getElementById(e),s=Report.getMetricDS(t)[0],o=Report.getMetricDS(n)[0],u=[];if(s!=o){Report.log("Metrics for bubbles have different data sources");return}var a=[],f=[];$.each(Report.getDataSources(),function(e,t){t.getName()===s.getName()&&(a.push(t.getData()),f.push(t.getProject()))});var l=[[],[]];l=[a[0].id,a[0].date];for(var c=0;ci&&(i=a,i=parseInt(i*(1+s),10))}(function(){var e=[n,t]})(),graph=Flotr.draw(r,n,{radar:{show:!0},mouse:{track:!0,trackFormatter:function(e){var r="";for(var i=0;i";return r}},grid:{circular:!0,minorHorizontalLines:!0},yaxis:{min:0,max:i,minorTickFreq:1},xaxis:{ticks:t}})}function H(e,t){var n=[],r=[],i=[],s=[],o=0,u=0;for(o=0;o";for(var l in s){if(c.data[l]===undefined)continue;if($.inArray(l,c.data.envision_hide)>-1)continue;for(o=0;o"+a[1][n]+"",u+="",i.length>1&&(u+="");for(l in s){if(c.data[l]===undefined)continue;if($.inArray(l,c.data.envision_hide)>-1)continue;u+=""+s[l].name+""}return u+="",$.each(r,function(e,t){var n="";for(var o in s){if(c.data[o]===undefined)continue;if($.inArray(o,c.data.envision_hide)>-1)continue;mvalue=r[e][o],mvalue===undefined&&(mvalue="n/a"),n+=""+mvalue+""}i.length>1&&(n=""+e+""+n),n+="",u+=n}),u+="",u},c}function V(e){return e===undefined&&(e={}),e.show_desc===undefined&&(e.show_desc=!0),e.show_title===undefined&&(e.show_title=!0),e.show_labels===undefined&&(e.show_labels=!0),e}function J(e,t){var n=e.getMetrics(),r="";for(var i=0;i";for(var n=0;n1&&(lines_data[n].label!==undefined&&(company_name=lines_data[n].label),t+=lines_data[n].label+":"),t+=""+Report.formatValue(r)+"",company_name&&(t+="("+companies[company_name].pending[e.index]+")"),t+="
    "}return t},Viz.getEnvisionOptionsMin=function(e,t,n){var r=t.id[0],i=document.getElementById(e),s,o=Report.getMarkers(),u=Report.getAllMetrics();s={container:i,xTickFormatter:function(e){var n=t.date[e-r];return n==="0"&&(n=""),n},yTickFormatter:function(e){return e+""},selection:{data:{x:{min:t.id[0],max:t.id[t.id.length-1]}}}},s.data={summary:[t.id,t.sent],markers:o,dates:t.date,envision_hide:n,main_metric:"sent"};var a=Report.getAllMetrics(),f=null;for(var l in t)f=l,a[l]&&(f=a[l].name),s.data[l]=[{label:f,data:[t.id,t[l]]}];return s.trackFormatter=function(e){var n=e.series.data,i=n[e.index][0]-r,s=t.date[i]+":
    ";for(var o in u){if(t[o]===undefined)continue;s+=t[o][i]+" "+o+" , "}return s},s}})(),IRC.prototype=new DataSource("irc"),ITS.prototype=new DataSource("its"),MediaWiki.prototype=new DataSource("mediawiki"),MLS.prototype=new DataSource("mls"),SCM.prototype=new DataSource("scm"),SCR.prototype=new DataSource("scr"),People.prototype=new DataSource("people"),Downloads.prototype=new DataSource("downloads"),QAForums.prototype=new DataSource("qaforums"),Releases.prototype=new DataSource("releases");var Identity={};(function(){function t(t,n,r){var i="";t===e?i="":i=e,$("#"+r).sortable({handle:".handle",connectWith:"#"+i,start:function(e,t){t.item.siblings(".ui-selected").appendTo(t.item)},stop:function(t,n){n.item.parent()[0].id===e&&n.item.find(".handle").remove(),n.item.parent().append(n.item.find("li")),n.item.parent().find("li").addClass("mjs-nestedSortable-leaf")}}).selectable().find("li").prepend("
    ")}function n(e,t){$("#"+e.getName()+"filter").autocomplete({source:t,select:function(t,n){return $("#"+e.getName()+"filter").val(""),$("#"+e.getName()+"_people_"+n.item.value).addClass("ui-selected"),!1}})}var e="unique-sortable";Identity.showListNested=function(t,n){list="
      div",maxLevels:2,isTree:!0,expandOnHover:700,startCollapsed:!0}),$(".disclose").on("click",function(){$(this).closest("li").toggleClass("mjs-nestedSortable-collapsed").toggleClass("mjs-nestedSortable-expanded")})},Identity.showList=function(e,r){var i="",s=r.getPeopleData(),o=[];i='
        ';for(var u=0;u"),n(r,o),$("#"+e).append(i),t(e,i,r.getName()+"-sortable")}})(),vizjslib_git_revision="2bf7a7e0a81a6624d0e1db4adc824bdbc6c2d365",vizjslib_git_tag="14.12-3-g2bf7a7e"; \ No newline at end of file + */ +(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="20958777c5393e50f4ff9bd7adf7a684ec7466fb";vizjslib_git_tag="14.12-27-g2095877";(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=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_not_supported_company_top)===-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;for(var i=0;iname.length)name=cname}}return name};DataProcess.selectPersonEmail=function(person){var email="",cemail,ctype;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}})();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.sideMenu4Release=sideMenu4Release;HTMLComposer.releaseSelector=releaseSelector;HTMLComposer.sideBarLinks=sideBarLinks;HTMLComposer.overallSummaryBlock=overallSummaryBlock;HTMLComposer.smartLinks=smartLinks;HTMLComposer.TopByPeriod=TopByPeriod;function personDSBlock(ds_name,metric_name){var html='
    ';html+='
    ';html+='
    ';html+='
    ';html+="

    "+title4DS(ds_name)+"

    ";html+="
    ";html+='
    ';html+='
    ';html+="
    ";html+='
    ';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){var html="";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+='

    '+title4DS(ds.getName())+"

    ";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")html+="Closed:
      "+history.scr_closed;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==="mls")title=' Mailing Lists';else if(ds_name==="irc")title=' IRC Channels';else if(ds_name==="mediawiki")title=' Wiki';else if(ds_name==="releases")title=' Forge Releases';return title}function sideMenu4Release(){html="";params="?data_dir="+$.urlParam("data_dir")+"&release="+$.urlParam("release");html+='
  • Home
  • ';html+='
  • Source code repositories by companies
  • ';html+='
  • Mailing Lists by companies
  • ';html+='
  • Tickets by companies
  • ';return html}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);html+='
    ';tsm=ts_metrics.split(",");html+=DSTimeSerie(ds_name,tsm[0],false);html+="
    ";html+='
    ';html+=DSTimeSerie(ds_name,tsm[1],false);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 summaryCell(width,label,ds_name,metric,project_flag){if(project_flag){widget_name="ProjectData"}else{widget_name="GlobalData"}html="";html+='
    ';html+='
    ';html+='
    '+label+"
    ";html+="
    ";html+='
    ';html+='
    ';target_page=Utils.createLink(ds_name+".html");if(ds_name==="releases"){target_page=Utils.createLink("forge.html")}if(project_flag){html+=''}else{html+=' ';html+=""}html+="
    ";html+="
    ";html+="
    ";return html}function DSSummaryBox(ds_name,labels,metrics,project_flag){if(project_flag){widget_name="ProjectData"}else{widget_name="GlobalData"}html="";html+="";html+='
    ';html+='
    ';html+='
    ';html+='
    '+labels[0]+"
    ";html+="
    ";html+='
    ';html+='
    ';target_page=Utils.createLink(ds_name+".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)}else if(labels.length===3&&metrics.length===3){html+=summaryCell("6",labels[1],ds_name,metrics[1],project_flag);html+=summaryCell("6",labels[2],ds_name,metrics[2],project_flag)}else if(labels.length===4&&metrics.length===4){html+=summaryCell("4",labels[1],ds_name,metrics[1],project_flag);html+=summaryCell("4",labels[2],ds_name,metrics[2],project_flag);html+=summaryCell("4",labels[3],ds_name,metrics[3],project_flag)}html+="
    ";html+="
    ";html+="
    ";html+="";return html}function DSTimeSerie(ds_name,metric,project_flag){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{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"};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 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;if(clen>0){html+="
  • ";html+=''+getProjectTitle(project_id,hierarchy)+"";html+=' '+clen+' subprojects
      ';$.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",its:"ITS overview",qaforums:"QA Forums overview",scr:"Code Review overview",scm:"SCM overview",wiki:"Wiki overview",downloads:"Downloads",forge:"Forge releases",demographics:"Demographics",data_sources:"Data sources",project_map:"Project map",people:"Contributor",company:"Company",country:"Country",domain:"Domain",release:"Companies analysis by release"};var filters={companies:"Activity by companies",contributors:"Activity by contributors",countries:"Activity by companies",domains:"Activity by domains",projects:"Activity by project",repos:"Activity by repositories",states:"Activity by states",tags:"Activity by tags"};var filters2={repository:"Repository"};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{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.id,show_all,top_metric,period,period_all,graph,limit,people_links,threads_links,repository)})}};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");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);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");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);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");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);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=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);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=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)}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");div.id=metric+"-"+ds+"-"+filter+"-"+divlabel+"-"+getRandomId();$(this).empty();div.className="";if(filter==="companies")DS.displayTopCompany(real_item,div.id,metric,period,titles)})}};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.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.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(Loader.filterTopCheck(item,filter)===false)return;Convert.convertTop();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="";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.getReleaseNames=getReleaseNames;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(){return menu_elements.menu}function getReleaseNames(){return menu_elements.releases}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,mls,scr,irc,mediawiki,people,downloads,qaforums,releases;$.each(projects_dirs,function(i,project){if(Report.getConfig()===null||Report.getConfig()["data-sources"]===undefined){its=new ITS;Report.registerDataSource(its);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)}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==="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 Report.log("Not support data source "+name)})}if(its)its.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)});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(){var filename="./config.json";$.getJSON(filename,function(data){Report.setConfig(data)}).fail(function(){if(window.console)Report.log("Can't read global config file "+filename)}).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={};$.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;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};this.setCompaniesData=function(companies,self){if(companies===null)companies=[];if(self===undefined)self=this;self.companies=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){this.displaySubReportList("repos",metrics,div_id,config_metric,sort_metric,page,show_links,start,end,convert)};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){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+="";$.each(metrics,function(id,metric){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="";for(var j=0;j";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_new(div_id,data,metric,limit,desc_metrics,people_links,threads_links,selected_period){var tabs="";var tables="";var title="";var gen_tabs=true;var div=$("#"+div_id);var ds_name=div.attr("data-data-source");if(Report.getParameterByName("repository")!==undefined){people_links=false}periods=getSortedPeriods();if(selected_period!==undefined){gen_tabs=false}title+=composeTitle(metric,ds_name,gen_tabs,desc_metrics,selected_period);if(gen_tabs===true){tabs+=composeTopTabs(periods,metric,data,ds_name)}tables+='
    ';var var_names=getTopVarsFromMetric(metric,ds_name);if(gen_tabs===true){var first=true;var html="";for(var k=0;k';tables+='
    "+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){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);$("#"+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,this,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){var data=this.getCompaniesTopData()[company];if(data===undefined)return;var metric=this.getMetrics()[metric_id];Viz.displayTopCompany(company,data,div,metric,period,titles)};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"){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(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(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+"
    ';if(metric==="threads"){tables+=composeTopRowsThreads(data[key],limit,threads_links)}else if(metric==="packages"||metric==="ips"){unit=desc_metrics[ds_name+"_"+metric].action;metric_name=desc_metrics[ds_name+"_"+metric].name;tables+="";if(unit!==undefined)tables+="";tables+="";tables+=composeTopRowsDownloads(data[key],limit,var_names)}else{unit=desc_metrics[ds_name+"_"+metric].action;metric_name=desc_metrics[ds_name+"_"+metric].name;tables+="";if(unit!==undefined)tables+="";tables+="";tables+=composeTopRowsPeople(data[key],limit,people_links,var_names);tables+=""}tables+="
    #"+metric_name.capitalize()+""+unit.capitalize()+"
    #"+metric_name.capitalize()+""+unit.capitalize()+"
    ";tables+="
    "}}}else{tables+='';if(metric==="threads"){tables+=composeTopRowsThreads(data,limit,threads_links)}else if(metric==="packages"||metric==="ips"){unit=desc_metrics[ds_name+"_"+metric].action;tables+="";if(unit!==undefined)tables+="";tables+="";tables+=composeTopRowsDownloads(data,limit,var_names)}else{unit=desc_metrics[ds_name+"_"+metric].action;tables+="";if(unit!==undefined)tables+="";tables+="";tables+=composeTopRowsPeople(data,limit,people_links,var_names);tables+=""}tables+="
    #"+metric.capitalize()+""+unit.capitalize()+"
    #"+metric.capitalize()+""+unit.capitalize()+"
    "}tables+="
    ";if(gen_tabs===false){div.append(title)}div.append(tabs);div.append(tables);if(gen_tabs===true){script="";div.append(script)}}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+="Data SourceFrom";html+="To (Updated on)";$.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+=""+ds_name;if(type!==undefined){type=type.toLowerCase();type=type.charAt(0).toUpperCase()+type.slice(1);html+=" ("+type+")"}html+="";html+=""+first_date+"";html+=""+last_date+""});html+="";$(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)label+="("+companies[company_name].pending[o.index]+")";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=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;i1){if(lines_data[i].label!==undefined)label+=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 title="Time zones for "+metric_name;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");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")}})();vizjslib_git_revision="20958777c5393e50f4ff9bd7adf7a684ec7466fb";vizjslib_git_tag="14.12-27-g2095877"; diff --git a/browser/qaforums.html b/browser/qaforums.html index ec522875..c707f756 100644 --- a/browser/qaforums.html +++ b/browser/qaforums.html @@ -79,9 +79,21 @@
    - + +
    +
    +
    +
    +
    +
    +
    + +
    diff --git a/templates/qaforums/overview.tmpl b/templates/qaforums/overview.tmpl index e7f52d38..a6545390 100644 --- a/templates/qaforums/overview.tmpl +++ b/templates/qaforums/overview.tmpl @@ -48,9 +48,21 @@
    - + +
    +
    +
    +
    +
    +
    +
    + +
  • Home