From 673dd2b140791fade4c2943abc399d718b789950 Mon Sep 17 00:00:00 2001 From: Airistotal Date: Thu, 20 Aug 2015 14:49:09 -0500 Subject: [PATCH] Refactored where d3 is coming from --- .../scripts/reports_webapp/run_stats.js | 1108 ++++++++--------- static/maps/reports_webapp/run_stats.js.map | 2 +- static/scripts/reports_webapp/run_stats.js | 2 +- templates/base.mako | 4 +- 4 files changed, 555 insertions(+), 561 deletions(-) diff --git a/client/galaxy/scripts/reports_webapp/run_stats.js b/client/galaxy/scripts/reports_webapp/run_stats.js index 66e3c3056ff..9426643d635 100644 --- a/client/galaxy/scripts/reports_webapp/run_stats.js +++ b/client/galaxy/scripts/reports_webapp/run_stats.js @@ -45,523 +45,102 @@ function refresh() { setTimeout(refresh, 60000); //1 minute = 60000 ms function create_chart( inp_data, name, time, title ) { - require( ["d3"], function (e) { - // Initialize starting variables - var data = inp_data; + // Initialize starting variables + var data = inp_data; - var hours_array = [] - var now = get_utc_time_hours() - for(var i = 0; i < 24; i++) { - hours_array.push(date_by_subtracting_hours(now, i)); - } + var hours_array = [] + var now = get_utc_time_hours() + for(var i = 0; i < 24; i++) { + hours_array.push(date_by_subtracting_hours(now, i)); + } - var days_array = [] - var now = get_utc_time_hours() - for(var i = 0; i < 30; i++) { - days_array.push(date_by_subtracting_days(now, i)); - } + var days_array = [] + var now = get_utc_time_hours() + for(var i = 0; i < 30; i++) { + days_array.push(date_by_subtracting_days(now, i)); + } - var margin = {top: 60, right: 30, bottom: 50, left: 60}; - var width = 300; - var barWidth = 0; - if(time == "hours") { - barWidth = width / 24; - } else if(time == "days") { - barWidth = width / 30; - } - var chart_width = width + margin.left + margin.right; + var margin = {top: 60, right: 30, bottom: 50, left: 60}; + var width = 300; + var barWidth = 0; + if(time == "hours") { + barWidth = width / 24; + } else if(time == "days") { + barWidth = width / 30; + } + var chart_width = width + margin.left + margin.right; - var chart_zoom = 1.75; - var height = 150; - if(d3.max(data) != 0) { - var zoom = height / d3.max(data); - } else { - var zoom = 1.0; - } - var chart_height = height + margin.top + margin.bottom; + var chart_zoom = 1.75; + var height = 150; + if(d3.max(data) != 0) { + var zoom = height / d3.max(data); + } else { + var zoom = 1.0; + } + var chart_height = height + margin.top + margin.bottom; - // Function for zooming in and out of charts - function click() { - var classes = d3.select(this).attr("class"); - classes = classes.split(" "); - d3.selectAll("." + classes[0]).filter("." + classes[1]) - .style("cursor", "zoom-in") - .transition() - .duration(750) - .attr("height", chart_height) - .attr("width", chart_width); + // Function for zooming in and out of charts + function click() { + var classes = d3.select(this).attr("class"); + classes = classes.split(" "); + d3.selectAll("." + classes[0]).filter("." + classes[1]) + .style("cursor", "zoom-in") + .transition() + .duration(750) + .attr("height", chart_height) + .attr("width", chart_width); - d3.select(this) - .style("cursor", "default") - .transition() - .duration(750) - .attr("height", chart_height*chart_zoom) - .attr("width", chart_width*chart_zoom); - } + d3.select(this) + .style("cursor", "default") + .transition() + .duration(750) + .attr("height", chart_height*chart_zoom) + .attr("width", chart_width*chart_zoom); + } - // Initialize all chart containers to have the correct height - $(".charts").css("height", chart_height * (chart_zoom)); + // Initialize all chart containers to have the correct height + $(".charts").css("height", chart_height * (chart_zoom)); - // Create the chart object - var chart = d3.select("#" + name) - .attr("width", chart_width) - .attr("height", chart_height) - .attr("preserveAspectRatio", "xMidYMin") - .attr("viewBox", "0 0 " + chart_width + " " + chart_height) - .on("click", click); + // Create the chart object + var chart = d3.select("#" + name) + .attr("width", chart_width) + .attr("height", chart_height) + .attr("preserveAspectRatio", "xMidYMin") + .attr("viewBox", "0 0 " + chart_width + " " + chart_height) + .on("click", click); - // Create bars on the chart and assosciate data with it - var bar = chart.selectAll("g") - .data(data) - .enter().append("g") - .attr("transform", function(d, i) { - // Place the bar in the correct place - curr_margin = +margin.left; - curr_margin += +(i * barWidth); - return "translate(" + curr_margin + "," + margin.top + ")"; - }) - .on("mouseenter", function(d) { - // Show tool tip - var i = 1; - var size = d; - - while( size >= 10) { - size = size / 10; - i++; - } - - var wdth = (i * 4) + 10; - d3.select(d3.event.path[1]).select(".tool_tip") - .select("text") - .attr("transform", "translate( " + (margin.left - 5) + ", " + ((height - (d * zoom)) + +margin.top + 10) + " )" ) - .attr("visibility", "visible") - .text(d); - - d3.select(d3.event.path[1]).select(".tool_tip") - .attr("width", wdth + "px") - .attr("height", "15px") - .select("rect") - .attr("transform", "translate( " + ((+margin.left) - wdth) + ", " + ((height - (d * zoom)) + +margin.top) + " )" ) - .attr("width", wdth + "px") - .attr("height", "15px") - .attr("fill","#ebd9b2"); - }) - .on("mouseleave", function(d) { - // Remove tool tip - d3.select(d3.event.path[1]).select(".tool_tip") - .select("text") - .attr("visibility", "hidden"); - - d3.select(d3.event.path[1]).select(".tool_tip") - .select("rect") - .attr("width", "0") - .attr("height", "0") - .attr("fill","") - .text(d); - }); - - // Add a title to the chart - chart.append("g") - .append("text") - .attr("class", "title") - .attr("text-anchor", "end") - .attr("transform", function(e) { - return "translate( " + width + ",15 )"; + // Create bars on the chart and assosciate data with it + var bar = chart.selectAll("g") + .data(data) + .enter().append("g") + .attr("transform", function(d, i) { + // Place the bar in the correct place + curr_margin = +margin.left; + curr_margin += +(i * barWidth); + return "translate(" + curr_margin + "," + margin.top + ")"; }) - .text(title); - - // Add an x axis line to the chart - chart.append("g") - .attr("class", "axis") - .append("path") - .attr("class", "x") - .attr("d", function(d) { - var m_x = margin.left; - var m_y = +margin.top + height; - var l_x = m_x + width; - var l_y = m_y; - - return "M" + m_x + " " + m_y + " L " + l_x + " " + l_y; - }); - - // Declare how high the y axis goes - var y = d3.scale.linear() - .range([height, 0]); - - // Create a yAxis object - var yAxis = d3.svg.axis() - .scale(y) - .orient("left") - .tickFormat( function(d) { return d3.round( d*d3.max(data), 0 ) }); - - // Put the y axis on the chart - chart.append("g") - .attr("class", "y axis") - .attr("id", ("y_" + name)) - .attr("text-anchor", "end") - .attr("transform", "translate( " + margin.left + "," + margin.top + ")") - .call(yAxis) - .select(".domain"); - - // Put a title for y axis on chart - chart.append("g") - .append("text") - .attr("class", "ax_title") - .attr("transform", function(e) { - var axis = d3.select("#y_" + name).node() - var left_pad = +margin.left - axis.getBoundingClientRect().width - 5; - var top_pad = +margin.top + (axis.getBoundingClientRect().height/2) - 30 - var trans = "translate(" + left_pad + "," + top_pad + ")rotate(-90)"; - - return trans; - }) - .text("Number of Jobs"); - - // Add color to the chart's bars - bar.append("rect") - .attr("y", function(d) { return height - (d * zoom); }) - .attr("height", function(d) { return (d * zoom); }) - .attr("width", barWidth - 1); - - // Append x axis - if(time == "hours") { - // Append hour lines - bar.append("line") - .attr("x1", 0) - .attr("y1", 0) - .attr("x2", 0) - .attr("y2", 3) - .attr("stroke", "black") - .attr("stroke-width", 1) - .attr("pointer-events", "none") - .attr("transform", function(d, i) { - return "translate( " + (barWidth/2) + ", " + height + ")" - }); - - // Append hour numbers - bar.append("text") - .attr("fill", "rgb(0,0,0)") - .attr("transform", "translate( 10, " + (height + 10) + " )") - .text(function(d, i) { - var time = "0000" - - if( hours_array[i].getHours() < 10 ) { - time = "0" + String(hours_array[i].getHours()); - } else { - time = hours_array[i].getHours(); - } - - return time; - }); - - // Append day lines - var curr_day = ""; - var first = false; - bar.append("line") - .attr("x1", 0) - .attr("y1", 0) - .attr("x2", 0) - .attr("y2", function(d, i) { - var _y2 = 0; - - if(hours_array[i].getDate() != curr_day) { - if(!first) { - _y2 = 27; - first = true; - } else { - _y2 = 20; - } - - curr_day = hours_array[i].getDate(); - } - - return _y2; - }) - .attr("stroke", "black") - .attr("stroke-width", 1) - .attr("pointer-events", "none") - .attr("transform", function(d, i) { - return "translate( 0, " + height + ")"; - }); - - // Append day numbers - curr_day = ""; - curr_day_text = ""; - first = false; - bar.append("text") - .attr("fill", "rgb(0,0,0)") - .attr("pointer-events", "none") - .text(function(d, i) { - var time = ""; - var locale = "en-us"; - - if(hours_array[i].getDate() != curr_day_text) { - time = String(hours_array[i].toLocaleString(locale, { month: "long" })); - time += " " + String(hours_array[i].getDate()) - - curr_day_text = hours_array[i].getDate(); - } - - return time; - }) - .attr("transform", function(d, i) { - var text_height = height; - var this_width = d3.select(this).node().getBBox().width; - - if(hours_array[i].getDate() != curr_day) { - if(!first) { - text_height += 26; - first = true; - } else { - text_height += 18; - } - - curr_day = hours_array[i].getDate(); - } - - return "translate( " + (this_width + 2) + ", " + (text_height) + " )" - }); - } else if(time == "days") { - // Append day lines - bar.append("line") - .attr("x1", 0) - .attr("y1", 0) - .attr("x2", 0) - .attr("y2", 3) - .attr("stroke", "black") - .attr("stroke-width", 1) - .attr("pointer-events", "none") - .attr("transform", function(d, i) { - return "translate( " + (barWidth/2) + ", " + height + ")" - }); - - // Append day numbers - bar.append("text") - .attr("fill", "rgb(0,0,0)") - .attr("transform", "translate( 9, " + (height + 10) + " )") - .text(function(d, i) { - var time = "0000" - - if( days_array[i].getDate() < 10 ) { - time = "0" + String(days_array[i].getDate()); - } else { - time = days_array[i].getDate(); - } - - return time; - }); - - // Append month lines - var curr_month = ""; - var first = false; - bar.append("line") - .attr("x1", 0) - .attr("y1", 0) - .attr("x2", 0) - .attr("y2", function(d, i) { - var _y2 = 0; - - if(days_array[i].getMonth() != curr_month) { - if(!first) { - _y2 = 27; - first = true; - } else { - _y2 = 20; - } - - curr_month = days_array[i].getMonth(); - } - - return _y2; - }) - .attr("stroke", "black") - .attr("stroke-width", 1) - .attr("pointer-events", "none") - .attr("transform", function(d, i) { - return "translate( 0, " + height + ")"; - }); - - // Append month numbers - curr_month = ""; - curr_month_text = ""; - first = false; - bar.append("text") - .attr("fill", "rgb(0,100,0)") - .attr("pointer-events", "none") - .text(function(d, i) { - var time = ""; - var locale = "en-us"; - - if(days_array[i].getMonth() != curr_month_text) { - time = String(days_array[i].toLocaleString(locale, { month: "long" })); - time += " " + String(days_array[i].getFullYear()) - - curr_month_text = days_array[i].getMonth(); - } - - return time; - }) - .attr("transform", function(d, i) { - var text_height = height; - var this_width = d3.select(this).node().getBBox().width; - - if(days_array[i].getMonth() != curr_month) { - if(!first) { - text_height += 26; - first = true; - } else { - text_height += 18; - } - - curr_month = days_array[i].getMonth(); - } - - return "translate( " + (this_width + 2) + ", " + (text_height) + " )" - }); - } - - // Put an invisible tool tip on the chart - chart.append("g") - .attr("class", "tool_tip") - .append("rect"); - chart.select(".tool_tip") - .append("text"); - - // Initialize initial zoomed charts - if(name == "jc_dy_chart" || name == "jc_hr_chart") { - d3.select("#" + name) - .attr("height", chart_height * chart_zoom) - .attr("width", chart_width * chart_zoom) - .style("cursor", "default"); - } - }); -} - -//============================================================================================================ - -function create_histogram( inp_data, name, title ) { - require( ["d3"], function (e) { - // Initialize initial variables - // inp_data is an array of numbers that are the amount of minutes per run - var data = inp_data; - - var chart_zoom = 1.75; - var margin = {top: 60, right: 30, bottom: 50, left: 60}; - - var height = 150; - var chart_height = height + margin.top + margin.bottom; - - var width = 300; - var chart_width = width + margin.left + margin.right; - - // Cereate x axis metadata - // Used for x axis, histogram creation, and bar initialization - var x = d3.scale.linear() - .domain([0, d3.max(data)]) - .range([0, width]); - - // Generate a histogram using twenty uniformly-spaced bins. - var data = d3.layout.histogram() - .bins(x.ticks(20))(data); - - // Create an array of the sizes of the bars - var lengths = []; - for(var i = 0; i < data.length; i ++) { - lengths.push(data[i].length) - } - - // Find the amount needed to magnify the bars - if(d3.max(data) != 0) { - var zoom = height / d3.max(lengths); - } else { - var zoom = 1.0; - } - - // Create y axis metadata - // Used for y axis and bar initialization - var y = d3.scale.linear() - .domain([0, d3.max(data, function(d) { return d.y; })]) - .range([height, 0]); - - // Function for zooming in and out of charts - function click() { - var classes = d3.select(this).attr("class"); - classes = classes.split(" "); - d3.selectAll("." + classes[0]).filter("." + classes[1]) - .style("cursor", "zoom-in") - .transition() - .duration(750) - .attr("height", chart_height) - .attr("width", chart_width); - - d3.select(this) - .style("cursor", "default") - .transition() - .duration(750) - .attr("height", chart_height*chart_zoom) - .attr("width", chart_width*chart_zoom); - } - - // Formatter for x axis times (converting minutes to HH:MM). - var formatMinutes = function(d) { - hours = Math.floor( d / 60 ) - minutes = Math.floor(d - (hours * 60)) - - if(hours < 10) { - hours = "0" + hours - } - if(minutes < 10) { - minutes = "0" + minutes - } - - return hours + ":" + minutes; - }; - - // Create a chart object - var chart = d3.select("#" + name) - .attr("viewBox", "0 0 " + chart_width + " " + chart_height) - .attr("width", chart_width) - .attr("height", chart_height) - .attr("preserveAspectRatio", "xMidYMin") - .on("click", click); - - // Put title on chart - chart.append("g") - .append("text") - .attr("class", "title") - .attr("transform", function(e) { - return "translate( " + width + ",15 )"; - }) - .text(title); - - // Put bars on chart - var bar = chart.selectAll(".bar") - .data(data) - .enter().append("g") - .attr("class", "bar") - .attr("transform", function(d) { - return "translate(" + (+x(d.x) + +margin.left) + "," + (+y(d.y) + +margin.top) + ")"; }) .on("mouseenter", function(d) { // Show tool tip - i = 0; - size = d.length; + var i = 1; + var size = d; - while( size >= 1) { + while( size >= 10) { size = size / 10; i++; } + var wdth = (i * 4) + 10; d3.select(d3.event.path[1]).select(".tool_tip") .select("text") - .attr("transform", "translate( " + (margin.left - 5) + ", " + (height - (d.length * zoom) + +margin.top + 10) + " )" ) + .attr("transform", "translate( " + (margin.left - 5) + ", " + ((height - (d * zoom)) + +margin.top + 10) + " )" ) .attr("visibility", "visible") - .text(d.length); + .text(d); d3.select(d3.event.path[1]).select(".tool_tip") .attr("width", wdth + "px") .attr("height", "15px") .select("rect") - .attr("transform", "translate( " + ((+margin.left) - wdth) + ", " + (height - (d.length * zoom) + +margin.top) + " )") + .attr("transform", "translate( " + ((+margin.left) - wdth) + ", " + ((height - (d * zoom)) + +margin.top) + " )" ) .attr("width", wdth + "px") .attr("height", "15px") .attr("fill","#ebd9b2"); @@ -577,80 +156,497 @@ function create_histogram( inp_data, name, title ) { .attr("width", "0") .attr("height", "0") .attr("fill","") + .text(d); }); - // Create bar width - var bar_x; - if(data[0] == undefined) { - bar_x = 1; - } else { - bar_x = x(data[0].dx); - } + // Add a title to the chart + chart.append("g") + .append("text") + .attr("class", "title") + .attr("text-anchor", "end") + .attr("transform", function(e) { + return "translate( " + width + ",15 )"; + }) + .text(title); - // Add color to bar - bar.append("rect") - .attr("x", 1) - .attr("width", bar_x - 1) - .attr("height", function(d) { return height - y(d.y); }); + // Add an x axis line to the chart + chart.append("g") + .attr("class", "axis") + .append("path") + .attr("class", "x") + .attr("d", function(d) { + var m_x = margin.left; + var m_y = +margin.top + height; + var l_x = m_x + width; + var l_y = m_y; - // Create x axis - var xAxis = d3.svg.axis() - .scale(x) - .orient("bottom") - .tickFormat(formatMinutes); + return "M" + m_x + " " + m_y + " L " + l_x + " " + l_y; + }); - // Add x axis to chart - chart.append("g") - .attr("class", "x axis") - .attr("id", "x_" + name) - .attr("transform", "translate( " + margin.left + "," + (+height + +margin.top) + ")") - .call(xAxis); + // Declare how high the y axis goes + var y = d3.scale.linear() + .range([height, 0]); - // Add a title to the x axis - chart.append("g") - .append("text") - .attr("class", "ax_title") - .attr("transform", function(e) { - var axis = d3.select("#x_" + name).node() - var left_pad = +margin.left + (axis.getBoundingClientRect().width/2) + 30; - var top_pad = +margin.top + height + axis.getBoundingClientRect().height + 10 - var trans = "translate(" + left_pad + "," + top_pad + ")"; + // Create a yAxis object + var yAxis = d3.svg.axis() + .scale(y) + .orient("left") + .tickFormat( function(d) { return d3.round( d*d3.max(data), 0 ) }); - return trans; - }) - .text("ETA - hrs:mins"); + // Put the y axis on the chart + chart.append("g") + .attr("class", "y axis") + .attr("id", ("y_" + name)) + .attr("text-anchor", "end") + .attr("transform", "translate( " + margin.left + "," + margin.top + ")") + .call(yAxis) + .select(".domain"); - // Create y axis - var yAxis = d3.svg.axis() - .scale(y) - .orient("left"); + // Put a title for y axis on chart + chart.append("g") + .append("text") + .attr("class", "ax_title") + .attr("transform", function(e) { + var axis = d3.select("#y_" + name).node() + var left_pad = +margin.left - axis.getBoundingClientRect().width - 5; + var top_pad = +margin.top + (axis.getBoundingClientRect().height/2) - 30 + var trans = "translate(" + left_pad + "," + top_pad + ")rotate(-90)"; - // Add y axis to chart - chart.append("g") - .attr("class", "y axis") - .attr("id", ("y_" + name)) - .attr("transform", "translate( " + margin.left + "," + margin.top + ")") - .call(yAxis); + return trans; + }) + .text("Number of Jobs"); - // Add a title to the y axis - chart.append("g") - .append("text") - .attr("class", "ax_title") - .attr("transform", function(e) { - var axis = d3.select("#y_" + name).node() - var left_pad = +margin.left - axis.getBoundingClientRect().width - 5; - var top_pad = +margin.top + (axis.getBoundingClientRect().height/2) - 30 - var trans = "translate(" + left_pad + "," + top_pad + ")rotate(-90)"; + // Add color to the chart's bars + bar.append("rect") + .attr("y", function(d) { return height - (d * zoom); }) + .attr("height", function(d) { return (d * zoom); }) + .attr("width", barWidth - 1); - return trans; - }) - .text("Number of Jobs"); + // Append x axis + if(time == "hours") { + // Append hour lines + bar.append("line") + .attr("x1", 0) + .attr("y1", 0) + .attr("x2", 0) + .attr("y2", 3) + .attr("stroke", "black") + .attr("stroke-width", 1) + .attr("pointer-events", "none") + .attr("transform", function(d, i) { + return "translate( " + (barWidth/2) + ", " + height + ")" + }); - // Put an invisible tool tip on the chart - chart.append("g") - .attr("class", "tool_tip") - .append("rect"); - chart.select(".tool_tip") - .append("text"); - }); + // Append hour numbers + bar.append("text") + .attr("fill", "rgb(0,0,0)") + .attr("transform", "translate( 10, " + (height + 10) + " )") + .text(function(d, i) { + var time = "0000" + + if( hours_array[i].getHours() < 10 ) { + time = "0" + String(hours_array[i].getHours()); + } else { + time = hours_array[i].getHours(); + } + + return time; + }); + + // Append day lines + var curr_day = ""; + var first = false; + bar.append("line") + .attr("x1", 0) + .attr("y1", 0) + .attr("x2", 0) + .attr("y2", function(d, i) { + var _y2 = 0; + + if(hours_array[i].getDate() != curr_day) { + if(!first) { + _y2 = 27; + first = true; + } else { + _y2 = 20; + } + + curr_day = hours_array[i].getDate(); + } + + return _y2; + }) + .attr("stroke", "black") + .attr("stroke-width", 1) + .attr("pointer-events", "none") + .attr("transform", function(d, i) { + return "translate( 0, " + height + ")"; + }); + + // Append day numbers + curr_day = ""; + curr_day_text = ""; + first = false; + bar.append("text") + .attr("fill", "rgb(0,0,0)") + .attr("pointer-events", "none") + .text(function(d, i) { + var time = ""; + var locale = "en-us"; + + if(hours_array[i].getDate() != curr_day_text) { + time = String(hours_array[i].toLocaleString(locale, { month: "long" })); + time += " " + String(hours_array[i].getDate()) + + curr_day_text = hours_array[i].getDate(); + } + + return time; + }) + .attr("transform", function(d, i) { + var text_height = height; + var this_width = d3.select(this).node().getBBox().width; + + if(hours_array[i].getDate() != curr_day) { + if(!first) { + text_height += 26; + first = true; + } else { + text_height += 18; + } + + curr_day = hours_array[i].getDate(); + } + + return "translate( " + (this_width + 2) + ", " + (text_height) + " )" + }); + } else if(time == "days") { + // Append day lines + bar.append("line") + .attr("x1", 0) + .attr("y1", 0) + .attr("x2", 0) + .attr("y2", 3) + .attr("stroke", "black") + .attr("stroke-width", 1) + .attr("pointer-events", "none") + .attr("transform", function(d, i) { + return "translate( " + (barWidth/2) + ", " + height + ")" + }); + + // Append day numbers + bar.append("text") + .attr("fill", "rgb(0,0,0)") + .attr("transform", "translate( 9, " + (height + 10) + " )") + .text(function(d, i) { + var time = "0000" + + if( days_array[i].getDate() < 10 ) { + time = "0" + String(days_array[i].getDate()); + } else { + time = days_array[i].getDate(); + } + + return time; + }); + + // Append month lines + var curr_month = ""; + var first = false; + bar.append("line") + .attr("x1", 0) + .attr("y1", 0) + .attr("x2", 0) + .attr("y2", function(d, i) { + var _y2 = 0; + + if(days_array[i].getMonth() != curr_month) { + if(!first) { + _y2 = 27; + first = true; + } else { + _y2 = 20; + } + + curr_month = days_array[i].getMonth(); + } + + return _y2; + }) + .attr("stroke", "black") + .attr("stroke-width", 1) + .attr("pointer-events", "none") + .attr("transform", function(d, i) { + return "translate( 0, " + height + ")"; + }); + + // Append month numbers + curr_month = ""; + curr_month_text = ""; + first = false; + bar.append("text") + .attr("fill", "rgb(0,100,0)") + .attr("pointer-events", "none") + .text(function(d, i) { + var time = ""; + var locale = "en-us"; + + if(days_array[i].getMonth() != curr_month_text) { + time = String(days_array[i].toLocaleString(locale, { month: "long" })); + time += " " + String(days_array[i].getFullYear()) + + curr_month_text = days_array[i].getMonth(); + } + + return time; + }) + .attr("transform", function(d, i) { + var text_height = height; + var this_width = d3.select(this).node().getBBox().width; + + if(days_array[i].getMonth() != curr_month) { + if(!first) { + text_height += 26; + first = true; + } else { + text_height += 18; + } + + curr_month = days_array[i].getMonth(); + } + + return "translate( " + (this_width + 2) + ", " + (text_height) + " )" + }); + } + + // Put an invisible tool tip on the chart + chart.append("g") + .attr("class", "tool_tip") + .append("rect"); + chart.select(".tool_tip") + .append("text"); + + // Initialize initial zoomed charts + if(name == "jc_dy_chart" || name == "jc_hr_chart") { + d3.select("#" + name) + .attr("height", chart_height * chart_zoom) + .attr("width", chart_width * chart_zoom) + .style("cursor", "default"); + } +} + +//============================================================================================================ + +function create_histogram( inp_data, name, title ) { + // Initialize initial variables + // inp_data is an array of numbers that are the amount of minutes per run + var data = inp_data; + + var chart_zoom = 1.75; + var margin = {top: 60, right: 30, bottom: 50, left: 60}; + + var height = 150; + var chart_height = height + margin.top + margin.bottom; + + var width = 300; + var chart_width = width + margin.left + margin.right; + + // Cereate x axis metadata + // Used for x axis, histogram creation, and bar initialization + var x = d3.scale.linear() + .domain([0, d3.max(data)]) + .range([0, width]); + + // Generate a histogram using twenty uniformly-spaced bins. + var data = d3.layout.histogram() + .bins(x.ticks(20))(data); + + // Create an array of the sizes of the bars + var lengths = []; + for(var i = 0; i < data.length; i ++) { + lengths.push(data[i].length) + } + + // Find the amount needed to magnify the bars + if(d3.max(data) != 0) { + var zoom = height / d3.max(lengths); + } else { + var zoom = 1.0; + } + + // Create y axis metadata + // Used for y axis and bar initialization + var y = d3.scale.linear() + .domain([0, d3.max(data, function(d) { return d.y; })]) + .range([height, 0]); + + // Function for zooming in and out of charts + function click() { + var classes = d3.select(this).attr("class"); + classes = classes.split(" "); + d3.selectAll("." + classes[0]).filter("." + classes[1]) + .style("cursor", "zoom-in") + .transition() + .duration(750) + .attr("height", chart_height) + .attr("width", chart_width); + + d3.select(this) + .style("cursor", "default") + .transition() + .duration(750) + .attr("height", chart_height*chart_zoom) + .attr("width", chart_width*chart_zoom); + } + + // Formatter for x axis times (converting minutes to HH:MM). + var formatMinutes = function(d) { + hours = Math.floor( d / 60 ) + minutes = Math.floor(d - (hours * 60)) + + if(hours < 10) { + hours = "0" + hours + } + if(minutes < 10) { + minutes = "0" + minutes + } + + return hours + ":" + minutes; + }; + + // Create a chart object + var chart = d3.select("#" + name) + .attr("viewBox", "0 0 " + chart_width + " " + chart_height) + .attr("width", chart_width) + .attr("height", chart_height) + .attr("preserveAspectRatio", "xMidYMin") + .on("click", click); + + // Put title on chart + chart.append("g") + .append("text") + .attr("class", "title") + .attr("transform", function(e) { + return "translate( " + width + ",15 )"; + }) + .text(title); + + // Put bars on chart + var bar = chart.selectAll(".bar") + .data(data) + .enter().append("g") + .attr("class", "bar") + .attr("transform", function(d) { + return "translate(" + (+x(d.x) + +margin.left) + "," + (+y(d.y) + +margin.top) + ")"; }) + .on("mouseenter", function(d) { + // Show tool tip + i = 0; + size = d.length; + + while( size >= 1) { + size = size / 10; + i++; + } + var wdth = (i * 4) + 10; + d3.select(d3.event.path[1]).select(".tool_tip") + .select("text") + .attr("transform", "translate( " + (margin.left - 5) + ", " + (height - (d.length * zoom) + +margin.top + 10) + " )" ) + .attr("visibility", "visible") + .text(d.length); + + d3.select(d3.event.path[1]).select(".tool_tip") + .attr("width", wdth + "px") + .attr("height", "15px") + .select("rect") + .attr("transform", "translate( " + ((+margin.left) - wdth) + ", " + (height - (d.length * zoom) + +margin.top) + " )") + .attr("width", wdth + "px") + .attr("height", "15px") + .attr("fill","#ebd9b2"); + }) + .on("mouseleave", function(d) { + // Remove tool tip + d3.select(d3.event.path[1]).select(".tool_tip") + .select("text") + .attr("visibility", "hidden"); + + d3.select(d3.event.path[1]).select(".tool_tip") + .select("rect") + .attr("width", "0") + .attr("height", "0") + .attr("fill","") + }); + + // Create bar width + var bar_x; + if(data[0] == undefined) { + bar_x = 1; + } else { + bar_x = x(data[0].dx); + } + + // Add color to bar + bar.append("rect") + .attr("x", 1) + .attr("width", bar_x - 1) + .attr("height", function(d) { return height - y(d.y); }); + + // Create x axis + var xAxis = d3.svg.axis() + .scale(x) + .orient("bottom") + .tickFormat(formatMinutes); + + // Add x axis to chart + chart.append("g") + .attr("class", "x axis") + .attr("id", "x_" + name) + .attr("transform", "translate( " + margin.left + "," + (+height + +margin.top) + ")") + .call(xAxis); + + // Add a title to the x axis + chart.append("g") + .append("text") + .attr("class", "ax_title") + .attr("transform", function(e) { + var axis = d3.select("#x_" + name).node() + var left_pad = +margin.left + (axis.getBoundingClientRect().width/2) + 30; + var top_pad = +margin.top + height + axis.getBoundingClientRect().height + 10 + var trans = "translate(" + left_pad + "," + top_pad + ")"; + + return trans; + }) + .text("ETA - hrs:mins"); + + // Create y axis + var yAxis = d3.svg.axis() + .scale(y) + .orient("left"); + + // Add y axis to chart + chart.append("g") + .attr("class", "y axis") + .attr("id", ("y_" + name)) + .attr("transform", "translate( " + margin.left + "," + margin.top + ")") + .call(yAxis); + + // Add a title to the y axis + chart.append("g") + .append("text") + .attr("class", "ax_title") + .attr("transform", function(e) { + var axis = d3.select("#y_" + name).node() + var left_pad = +margin.left - axis.getBoundingClientRect().width - 5; + var top_pad = +margin.top + (axis.getBoundingClientRect().height/2) - 30 + var trans = "translate(" + left_pad + "," + top_pad + ")rotate(-90)"; + + return trans; + }) + .text("Number of Jobs"); + + // Put an invisible tool tip on the chart + chart.append("g") + .attr("class", "tool_tip") + .append("rect"); + chart.select(".tool_tip") + .append("text"); } diff --git a/static/maps/reports_webapp/run_stats.js.map b/static/maps/reports_webapp/run_stats.js.map index 690dff409fb..a3f6cb5e84d 100644 --- a/static/maps/reports_webapp/run_stats.js.map +++ b/static/maps/reports_webapp/run_stats.js.map @@ -1 +1 @@ -{"version":3,"file":"run_stats.js","sources":["../../src/reports_webapp/run_stats.js"],"names":["days_in_month","month","year","Date","getDate","date_by_subtracting_days","date","days","getFullYear","getMonth","getHours","getMinutes","getSeconds","getMilliseconds","date_by_subtracting_hours","hours","get_utc_time_hours","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","refresh","window","location","reload","create_chart","inp_data","name","time","title","require","click","classes","d3","select","this","attr","split","selectAll","filter","style","transition","duration","chart_height","chart_width","chart_zoom","data","hours_array","now","i","push","days_array","margin","top","right","bottom","left","width","barWidth","height","max","zoom","$","css","chart","on","bar","enter","append","d","curr_margin","size","wdth","event","path","text","m_x","m_y","l_x","l_y","y","scale","linear","range","yAxis","svg","axis","orient","tickFormat","round","call","node","left_pad","getBoundingClientRect","top_pad","trans","String","curr_day","first","_y2","curr_day_text","locale","toLocaleString","text_height","this_width","getBBox","curr_month","curr_month_text","create_histogram","x","domain","layout","histogram","bins","ticks","lengths","length","formatMinutes","Math","floor","minutes","bar_x","undefined","dx","xAxis","setTimeout"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"run_stats.js","sources":["../../src/reports_webapp/run_stats.js"],"names":["days_in_month","month","year","Date","getDate","date_by_subtracting_days","date","days","getFullYear","getMonth","getHours","getMinutes","getSeconds","getMilliseconds","date_by_subtracting_hours","hours","get_utc_time_hours","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","refresh","window","location","reload","create_chart","inp_data","name","time","title","click","classes","d3","select","this","attr","split","selectAll","filter","style","transition","duration","chart_height","chart_width","chart_zoom","data","hours_array","now","i","push","days_array","margin","top","right","bottom","left","width","barWidth","height","max","zoom","$","css","chart","on","bar","enter","append","d","curr_margin","size","wdth","event","path","text","m_x","m_y","l_x","l_y","y","scale","linear","range","yAxis","svg","axis","orient","tickFormat","round","call","node","left_pad","getBoundingClientRect","top_pad","trans","String","curr_day","first","_y2","curr_day_text","locale","toLocaleString","text_height","this_width","getBBox","curr_month","curr_month_text","create_histogram","x","domain","layout","histogram","bins","ticks","lengths","length","formatMinutes","Math","floor","minutes","bar_x","undefined","dx","xAxis","setTimeout"],"mappings":"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"} \ No newline at end of file diff --git a/static/scripts/reports_webapp/run_stats.js b/static/scripts/reports_webapp/run_stats.js index 6733fb48f4b..ce0b7cb0af9 100644 --- a/static/scripts/reports_webapp/run_stats.js +++ b/static/scripts/reports_webapp/run_stats.js @@ -1,2 +1,2 @@ -function days_in_month(a,b){return new Date(b,a,0).getDate()}function date_by_subtracting_days(a,b){return new Date(a.getFullYear(),a.getMonth(),a.getDate()-b,a.getHours(),a.getMinutes(),a.getSeconds(),a.getMilliseconds())}function date_by_subtracting_hours(a,b){return new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours()-b,a.getMinutes(),a.getSeconds(),a.getMilliseconds())}function get_utc_time_hours(){var a=new Date;return new Date(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate(),a.getUTCHours(),0,0)}function refresh(){window.location.reload(!0)}function create_chart(a,b,c,d){require(["d3"],function(){function e(){var a=d3.select(this).attr("class");a=a.split(" "),d3.selectAll("."+a[0]).filter("."+a[1]).style("cursor","zoom-in").transition().duration(750).attr("height",r).attr("width",n),d3.select(this).style("cursor","default").transition().duration(750).attr("height",r*o).attr("width",n*o)}for(var f=a,g=[],h=get_utc_time_hours(),i=0;24>i;i++)g.push(date_by_subtracting_hours(h,i));for(var j=[],h=get_utc_time_hours(),i=0;30>i;i++)j.push(date_by_subtracting_days(h,i));var k={top:60,right:30,bottom:50,left:60},l=300,m=0;"hours"==c?m=l/24:"days"==c&&(m=l/30);var n=l+k.left+k.right,o=1.75,p=150;if(0!=d3.max(f))var q=p/d3.max(f);else var q=1;var r=p+k.top+k.bottom;$(".charts").css("height",r*o);var s=d3.select("#"+b).attr("width",n).attr("height",r).attr("preserveAspectRatio","xMidYMin").attr("viewBox","0 0 "+n+" "+r).on("click",e),t=s.selectAll("g").data(f).enter().append("g").attr("transform",function(a,b){return curr_margin=+k.left,curr_margin+=+(b*m),"translate("+curr_margin+","+k.top+")"}).on("mouseenter",function(a){for(var b=1,c=a;c>=10;)c/=10,b++;var d=4*b+10;d3.select(d3.event.path[1]).select(".tool_tip").select("text").attr("transform","translate( "+(k.left-5)+", "+(p-a*q+ +k.top+10)+" )").attr("visibility","visible").text(a),d3.select(d3.event.path[1]).select(".tool_tip").attr("width",d+"px").attr("height","15px").select("rect").attr("transform","translate( "+(+k.left-d)+", "+(p-a*q+ +k.top)+" )").attr("width",d+"px").attr("height","15px").attr("fill","#ebd9b2")}).on("mouseleave",function(a){d3.select(d3.event.path[1]).select(".tool_tip").select("text").attr("visibility","hidden"),d3.select(d3.event.path[1]).select(".tool_tip").select("rect").attr("width","0").attr("height","0").attr("fill","").text(a)});s.append("g").append("text").attr("class","title").attr("text-anchor","end").attr("transform",function(){return"translate( "+l+",15 )"}).text(d),s.append("g").attr("class","axis").append("path").attr("class","x").attr("d",function(){var a=k.left,b=+k.top+p,c=a+l,d=b;return"M"+a+" "+b+" L "+c+" "+d});var u=d3.scale.linear().range([p,0]),v=d3.svg.axis().scale(u).orient("left").tickFormat(function(a){return d3.round(a*d3.max(f),0)});if(s.append("g").attr("class","y axis").attr("id","y_"+b).attr("text-anchor","end").attr("transform","translate( "+k.left+","+k.top+")").call(v).select(".domain"),s.append("g").append("text").attr("class","ax_title").attr("transform",function(){var a=d3.select("#y_"+b).node(),c=+k.left-a.getBoundingClientRect().width-5,d=+k.top+a.getBoundingClientRect().height/2-30,e="translate("+c+","+d+")rotate(-90)";return e}).text("Number of Jobs"),t.append("rect").attr("y",function(a){return p-a*q}).attr("height",function(a){return a*q}).attr("width",m-1),"hours"==c){t.append("line").attr("x1",0).attr("y1",0).attr("x2",0).attr("y2",3).attr("stroke","black").attr("stroke-width",1).attr("pointer-events","none").attr("transform",function(){return"translate( "+m/2+", "+p+")"}),t.append("text").attr("fill","rgb(0,0,0)").attr("transform","translate( 10, "+(p+10)+" )").text(function(a,b){var c="0000";return c=g[b].getHours()<10?"0"+String(g[b].getHours()):g[b].getHours()});var w="",x=!1;t.append("line").attr("x1",0).attr("y1",0).attr("x2",0).attr("y2",function(a,b){var c=0;return g[b].getDate()!=w&&(x?c=20:(c=27,x=!0),w=g[b].getDate()),c}).attr("stroke","black").attr("stroke-width",1).attr("pointer-events","none").attr("transform",function(){return"translate( 0, "+p+")"}),w="",curr_day_text="",x=!1,t.append("text").attr("fill","rgb(0,0,0)").attr("pointer-events","none").text(function(a,b){var c="",d="en-us";return g[b].getDate()!=curr_day_text&&(c=String(g[b].toLocaleString(d,{month:"long"})),c+=" "+String(g[b].getDate()),curr_day_text=g[b].getDate()),c}).attr("transform",function(a,b){var c=p,d=d3.select(this).node().getBBox().width;return g[b].getDate()!=w&&(x?c+=18:(c+=26,x=!0),w=g[b].getDate()),"translate( "+(d+2)+", "+c+" )"})}else if("days"==c){t.append("line").attr("x1",0).attr("y1",0).attr("x2",0).attr("y2",3).attr("stroke","black").attr("stroke-width",1).attr("pointer-events","none").attr("transform",function(){return"translate( "+m/2+", "+p+")"}),t.append("text").attr("fill","rgb(0,0,0)").attr("transform","translate( 9, "+(p+10)+" )").text(function(a,b){var c="0000";return c=j[b].getDate()<10?"0"+String(j[b].getDate()):j[b].getDate()});var y="",x=!1;t.append("line").attr("x1",0).attr("y1",0).attr("x2",0).attr("y2",function(a,b){var c=0;return j[b].getMonth()!=y&&(x?c=20:(c=27,x=!0),y=j[b].getMonth()),c}).attr("stroke","black").attr("stroke-width",1).attr("pointer-events","none").attr("transform",function(){return"translate( 0, "+p+")"}),y="",curr_month_text="",x=!1,t.append("text").attr("fill","rgb(0,100,0)").attr("pointer-events","none").text(function(a,b){var c="",d="en-us";return j[b].getMonth()!=curr_month_text&&(c=String(j[b].toLocaleString(d,{month:"long"})),c+=" "+String(j[b].getFullYear()),curr_month_text=j[b].getMonth()),c}).attr("transform",function(a,b){var c=p,d=d3.select(this).node().getBBox().width;return j[b].getMonth()!=y&&(x?c+=18:(c+=26,x=!0),y=j[b].getMonth()),"translate( "+(d+2)+", "+c+" )"})}s.append("g").attr("class","tool_tip").append("rect"),s.select(".tool_tip").append("text"),("jc_dy_chart"==b||"jc_hr_chart"==b)&&d3.select("#"+b).attr("height",r*o).attr("width",n*o).style("cursor","default")})}function create_histogram(a,b,c){require(["d3"],function(){function d(){var a=d3.select(this).attr("class");a=a.split(" "),d3.selectAll("."+a[0]).filter("."+a[1]).style("cursor","zoom-in").transition().duration(750).attr("height",i).attr("width",k),d3.select(this).style("cursor","default").transition().duration(750).attr("height",i*f).attr("width",k*f)}for(var e=a,f=1.75,g={top:60,right:30,bottom:50,left:60},h=150,i=h+g.top+g.bottom,j=300,k=j+g.left+g.right,l=d3.scale.linear().domain([0,d3.max(e)]).range([0,j]),e=d3.layout.histogram().bins(l.ticks(20))(e),m=[],n=0;n=1;)size/=10,n++;var b=4*n+10;d3.select(d3.event.path[1]).select(".tool_tip").select("text").attr("transform","translate( "+(g.left-5)+", "+(h-a.length*o+ +g.top+10)+" )").attr("visibility","visible").text(a.length),d3.select(d3.event.path[1]).select(".tool_tip").attr("width",b+"px").attr("height","15px").select("rect").attr("transform","translate( "+(+g.left-b)+", "+(h-a.length*o+ +g.top)+" )").attr("width",b+"px").attr("height","15px").attr("fill","#ebd9b2")}).on("mouseleave",function(){d3.select(d3.event.path[1]).select(".tool_tip").select("text").attr("visibility","hidden"),d3.select(d3.event.path[1]).select(".tool_tip").select("rect").attr("width","0").attr("height","0").attr("fill","")});s=void 0==e[0]?1:l(e[0].dx),t.append("rect").attr("x",1).attr("width",s-1).attr("height",function(a){return h-p(a.y)});var u=d3.svg.axis().scale(l).orient("bottom").tickFormat(q);r.append("g").attr("class","x axis").attr("id","x_"+b).attr("transform","translate( "+g.left+","+(+h+ +g.top)+")").call(u),r.append("g").append("text").attr("class","ax_title").attr("transform",function(){var a=d3.select("#x_"+b).node(),c=+g.left+a.getBoundingClientRect().width/2+30,d=+g.top+h+a.getBoundingClientRect().height+10,e="translate("+c+","+d+")";return e}).text("ETA - hrs:mins");var v=d3.svg.axis().scale(p).orient("left");r.append("g").attr("class","y axis").attr("id","y_"+b).attr("transform","translate( "+g.left+","+g.top+")").call(v),r.append("g").append("text").attr("class","ax_title").attr("transform",function(){var a=d3.select("#y_"+b).node(),c=+g.left-a.getBoundingClientRect().width-5,d=+g.top+a.getBoundingClientRect().height/2-30,e="translate("+c+","+d+")rotate(-90)";return e}).text("Number of Jobs"),r.append("g").attr("class","tool_tip").append("rect"),r.select(".tool_tip").append("text")})}setTimeout(refresh,6e4); +function days_in_month(a,b){return new Date(b,a,0).getDate()}function date_by_subtracting_days(a,b){return new Date(a.getFullYear(),a.getMonth(),a.getDate()-b,a.getHours(),a.getMinutes(),a.getSeconds(),a.getMilliseconds())}function date_by_subtracting_hours(a,b){return new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours()-b,a.getMinutes(),a.getSeconds(),a.getMilliseconds())}function get_utc_time_hours(){var a=new Date;return new Date(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate(),a.getUTCHours(),0,0)}function refresh(){window.location.reload(!0)}function create_chart(a,b,c,d){function e(){var a=d3.select(this).attr("class");a=a.split(" "),d3.selectAll("."+a[0]).filter("."+a[1]).style("cursor","zoom-in").transition().duration(750).attr("height",r).attr("width",n),d3.select(this).style("cursor","default").transition().duration(750).attr("height",r*o).attr("width",n*o)}for(var f=a,g=[],h=get_utc_time_hours(),i=0;24>i;i++)g.push(date_by_subtracting_hours(h,i));for(var j=[],h=get_utc_time_hours(),i=0;30>i;i++)j.push(date_by_subtracting_days(h,i));var k={top:60,right:30,bottom:50,left:60},l=300,m=0;"hours"==c?m=l/24:"days"==c&&(m=l/30);var n=l+k.left+k.right,o=1.75,p=150;if(0!=d3.max(f))var q=p/d3.max(f);else var q=1;var r=p+k.top+k.bottom;$(".charts").css("height",r*o);var s=d3.select("#"+b).attr("width",n).attr("height",r).attr("preserveAspectRatio","xMidYMin").attr("viewBox","0 0 "+n+" "+r).on("click",e),t=s.selectAll("g").data(f).enter().append("g").attr("transform",function(a,b){return curr_margin=+k.left,curr_margin+=+(b*m),"translate("+curr_margin+","+k.top+")"}).on("mouseenter",function(a){for(var b=1,c=a;c>=10;)c/=10,b++;var d=4*b+10;d3.select(d3.event.path[1]).select(".tool_tip").select("text").attr("transform","translate( "+(k.left-5)+", "+(p-a*q+ +k.top+10)+" )").attr("visibility","visible").text(a),d3.select(d3.event.path[1]).select(".tool_tip").attr("width",d+"px").attr("height","15px").select("rect").attr("transform","translate( "+(+k.left-d)+", "+(p-a*q+ +k.top)+" )").attr("width",d+"px").attr("height","15px").attr("fill","#ebd9b2")}).on("mouseleave",function(a){d3.select(d3.event.path[1]).select(".tool_tip").select("text").attr("visibility","hidden"),d3.select(d3.event.path[1]).select(".tool_tip").select("rect").attr("width","0").attr("height","0").attr("fill","").text(a)});s.append("g").append("text").attr("class","title").attr("text-anchor","end").attr("transform",function(){return"translate( "+l+",15 )"}).text(d),s.append("g").attr("class","axis").append("path").attr("class","x").attr("d",function(){var a=k.left,b=+k.top+p,c=a+l,d=b;return"M"+a+" "+b+" L "+c+" "+d});var u=d3.scale.linear().range([p,0]),v=d3.svg.axis().scale(u).orient("left").tickFormat(function(a){return d3.round(a*d3.max(f),0)});if(s.append("g").attr("class","y axis").attr("id","y_"+b).attr("text-anchor","end").attr("transform","translate( "+k.left+","+k.top+")").call(v).select(".domain"),s.append("g").append("text").attr("class","ax_title").attr("transform",function(){var a=d3.select("#y_"+b).node(),c=+k.left-a.getBoundingClientRect().width-5,d=+k.top+a.getBoundingClientRect().height/2-30,e="translate("+c+","+d+")rotate(-90)";return e}).text("Number of Jobs"),t.append("rect").attr("y",function(a){return p-a*q}).attr("height",function(a){return a*q}).attr("width",m-1),"hours"==c){t.append("line").attr("x1",0).attr("y1",0).attr("x2",0).attr("y2",3).attr("stroke","black").attr("stroke-width",1).attr("pointer-events","none").attr("transform",function(){return"translate( "+m/2+", "+p+")"}),t.append("text").attr("fill","rgb(0,0,0)").attr("transform","translate( 10, "+(p+10)+" )").text(function(a,b){var c="0000";return c=g[b].getHours()<10?"0"+String(g[b].getHours()):g[b].getHours()});var w="",x=!1;t.append("line").attr("x1",0).attr("y1",0).attr("x2",0).attr("y2",function(a,b){var c=0;return g[b].getDate()!=w&&(x?c=20:(c=27,x=!0),w=g[b].getDate()),c}).attr("stroke","black").attr("stroke-width",1).attr("pointer-events","none").attr("transform",function(){return"translate( 0, "+p+")"}),w="",curr_day_text="",x=!1,t.append("text").attr("fill","rgb(0,0,0)").attr("pointer-events","none").text(function(a,b){var c="",d="en-us";return g[b].getDate()!=curr_day_text&&(c=String(g[b].toLocaleString(d,{month:"long"})),c+=" "+String(g[b].getDate()),curr_day_text=g[b].getDate()),c}).attr("transform",function(a,b){var c=p,d=d3.select(this).node().getBBox().width;return g[b].getDate()!=w&&(x?c+=18:(c+=26,x=!0),w=g[b].getDate()),"translate( "+(d+2)+", "+c+" )"})}else if("days"==c){t.append("line").attr("x1",0).attr("y1",0).attr("x2",0).attr("y2",3).attr("stroke","black").attr("stroke-width",1).attr("pointer-events","none").attr("transform",function(){return"translate( "+m/2+", "+p+")"}),t.append("text").attr("fill","rgb(0,0,0)").attr("transform","translate( 9, "+(p+10)+" )").text(function(a,b){var c="0000";return c=j[b].getDate()<10?"0"+String(j[b].getDate()):j[b].getDate()});var y="",x=!1;t.append("line").attr("x1",0).attr("y1",0).attr("x2",0).attr("y2",function(a,b){var c=0;return j[b].getMonth()!=y&&(x?c=20:(c=27,x=!0),y=j[b].getMonth()),c}).attr("stroke","black").attr("stroke-width",1).attr("pointer-events","none").attr("transform",function(){return"translate( 0, "+p+")"}),y="",curr_month_text="",x=!1,t.append("text").attr("fill","rgb(0,100,0)").attr("pointer-events","none").text(function(a,b){var c="",d="en-us";return j[b].getMonth()!=curr_month_text&&(c=String(j[b].toLocaleString(d,{month:"long"})),c+=" "+String(j[b].getFullYear()),curr_month_text=j[b].getMonth()),c}).attr("transform",function(a,b){var c=p,d=d3.select(this).node().getBBox().width;return j[b].getMonth()!=y&&(x?c+=18:(c+=26,x=!0),y=j[b].getMonth()),"translate( "+(d+2)+", "+c+" )"})}s.append("g").attr("class","tool_tip").append("rect"),s.select(".tool_tip").append("text"),("jc_dy_chart"==b||"jc_hr_chart"==b)&&d3.select("#"+b).attr("height",r*o).attr("width",n*o).style("cursor","default")}function create_histogram(a,b,c){function d(){var a=d3.select(this).attr("class");a=a.split(" "),d3.selectAll("."+a[0]).filter("."+a[1]).style("cursor","zoom-in").transition().duration(750).attr("height",i).attr("width",k),d3.select(this).style("cursor","default").transition().duration(750).attr("height",i*f).attr("width",k*f)}for(var e=a,f=1.75,g={top:60,right:30,bottom:50,left:60},h=150,i=h+g.top+g.bottom,j=300,k=j+g.left+g.right,l=d3.scale.linear().domain([0,d3.max(e)]).range([0,j]),e=d3.layout.histogram().bins(l.ticks(20))(e),m=[],n=0;n=1;)size/=10,n++;var b=4*n+10;d3.select(d3.event.path[1]).select(".tool_tip").select("text").attr("transform","translate( "+(g.left-5)+", "+(h-a.length*o+ +g.top+10)+" )").attr("visibility","visible").text(a.length),d3.select(d3.event.path[1]).select(".tool_tip").attr("width",b+"px").attr("height","15px").select("rect").attr("transform","translate( "+(+g.left-b)+", "+(h-a.length*o+ +g.top)+" )").attr("width",b+"px").attr("height","15px").attr("fill","#ebd9b2")}).on("mouseleave",function(){d3.select(d3.event.path[1]).select(".tool_tip").select("text").attr("visibility","hidden"),d3.select(d3.event.path[1]).select(".tool_tip").select("rect").attr("width","0").attr("height","0").attr("fill","")});s=void 0==e[0]?1:l(e[0].dx),t.append("rect").attr("x",1).attr("width",s-1).attr("height",function(a){return h-p(a.y)});var u=d3.svg.axis().scale(l).orient("bottom").tickFormat(q);r.append("g").attr("class","x axis").attr("id","x_"+b).attr("transform","translate( "+g.left+","+(+h+ +g.top)+")").call(u),r.append("g").append("text").attr("class","ax_title").attr("transform",function(){var a=d3.select("#x_"+b).node(),c=+g.left+a.getBoundingClientRect().width/2+30,d=+g.top+h+a.getBoundingClientRect().height+10,e="translate("+c+","+d+")";return e}).text("ETA - hrs:mins");var v=d3.svg.axis().scale(p).orient("left");r.append("g").attr("class","y axis").attr("id","y_"+b).attr("transform","translate( "+g.left+","+g.top+")").call(v),r.append("g").append("text").attr("class","ax_title").attr("transform",function(){var a=d3.select("#y_"+b).node(),c=+g.left-a.getBoundingClientRect().width-5,d=+g.top+a.getBoundingClientRect().height/2-30,e="translate("+c+","+d+")rotate(-90)";return e}).text("Number of Jobs"),r.append("g").attr("class","tool_tip").append("rect"),r.select(".tool_tip").append("text")}setTimeout(refresh,6e4); //# sourceMappingURL=../../maps/reports_webapp/run_stats.js.map \ No newline at end of file diff --git a/templates/base.mako b/templates/base.mako index 87020c2bb39..96f211b8678 100644 --- a/templates/base.mako +++ b/templates/base.mako @@ -53,6 +53,7 @@ "libs/underscore", "libs/backbone/backbone", "libs/handlebars.runtime", + "libs/d3", "galaxy.base", 'libs/require' )} @@ -77,9 +78,6 @@ ## configure require require.config({ baseUrl: "${h.url_for('/static/scripts') }", - paths: { - "d3": "http://d3js.org/d3.v3.min", - }, shim: { "libs/underscore": { exports: "_" }, "libs/backbone/backbone": { exports: "Backbone" }