"use strict"; function getStockXScale(stockData, width) { var stockXScale = d3.scaleTime() .rangeRound([0, width]) .domain(d3.extent(stockData, function(d) { return d.date; })); return stockXScale; }; function getStockYScale(stackStockData, height) { var stockYScale = d3.scaleLinear() .rangeRound([height, 100]) .domain([0, d3.max(stackStockData, function(sector) { return d3.max(sector, function(d) { return d[1]; }); })]); return stockYScale; }; function getStockColorScale(activeSectors) { var stockColorScale = d3.scaleOrdinal(d3.schemeCategory10) .domain(activeSectors); return stockColorScale; }; function getAreaMaker(stockXScale, stockYScale) { var areaMaker = d3.area() .curve(d3.curveCatmullRom) .x(function(d, i) { return stockXScale(d.data.date); }) .y0(function(d) { return stockYScale(d[0]); }) .y1(function(d) { return stockYScale(d[1]); }); return areaMaker; }; function getInvertedX(mouseX, chartWidth, dataLength) { var invertedX = parseInt(mouseX / chartWidth * dataLength); invertedX = Math.min(invertedX, dataLength - 1); return invertedX; }; function getValueSum(hashMap) { var sum = 0; Object.keys(hashMap).forEach(function(key) { if ($.isNumeric(hashMap[key])) { sum += hashMap[key]; } }); return sum; }; function getOrderedStack(firstKey, activeSectors, length) { var stack = d3.stack() .keys(activeSectors) // .order(function(series) { // var order = d3.range(length); // for (var i = 0; i < length; i++) { // if (series[i].key == firstKey) { // var tmp = order[0]; // order[0] = i; // order[i] = tmp; // break; // } // } // return order; // }); return stack; }; function obscureALlExcept(obj, i, time = 100, opacity = 0.2) { obj.transition() .duration(time) .attr("opacity", function(d, j) { return j != i ? opacity : 1; }); }; function obscureAll(obj, time = 100, opacity = 0) { obj.transition() .duration(time) .attr("opacity", opacity); }; function unobscureAll(obj, time = 100) { obj.transition() .duration(time) .attr("opacity", "1"); };