diff --git a/bower.json b/bower.json index 9e9856f..f500698 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "c3", "main": "c3.min.js", - "version": "0.1.32", + "version": "0.1.34", "homepage": "https://github.com/masayuki0812/c3", "authors": [ "Masayuki Tanaka " diff --git a/c3.js b/c3.js index b3d467f..edcc09c 100644 --- a/c3.js +++ b/c3.js @@ -2,7 +2,7 @@ 'use strict'; var c3 = { - version: "0.1.32" + version: "0.1.34" }; var CLASS = { @@ -33,12 +33,15 @@ shape: 'c3-shape', shapes: 'c3-shapes', line: 'c3-line', + lines: 'c3-lines', bar: 'c3-bar', bars: 'c3-bars', circle: 'c3-circle', circles: 'c3-circles', arc: 'c3-arc', + arcs: 'c3-arcs', area: 'c3-area', + areas: 'c3-areas', text: 'c3-text', texts: 'c3-texts', grid: 'c3-grid', @@ -61,6 +64,7 @@ legendItemEvent: 'c3-legend-item-event', legendItemTile: 'c3-legend-item-tile', legendItemHidden: 'c3-legend-item-hidden', + legendItemFocused: 'c3-legend-item-focused', dragarea: 'c3-dragarea', EXPANDED: '_expanded_', SELECTED: '_selected_', @@ -91,7 +95,7 @@ // Check next key's value isLast = (i === keys.length - 1); nextTarget = target[keys[i]]; - if ((!isLast && typeof nextTarget !== 'object') || (isLast && typeof defaultValue !== 'object' && typeof nextTarget === 'object' && nextTarget !== null)) { + if (!isLast && typeof nextTarget !== 'object') { return defaultValue; } target = nextTarget; @@ -105,7 +109,7 @@ var __size_width = getConfig(['size', 'width']), __size_height = getConfig(['size', 'height']); - var __padding_left = getConfig(['padding', 'left']), + var __padding_left = getConfig(['padding', 'left'], 50), __padding_right = getConfig(['padding', 'right']); var __zoom_enabled = getConfig(['zoom', 'enabled'], false), @@ -137,6 +141,7 @@ __data_regions = getConfig(['data', 'regions'], {}), __data_color = getConfig(['data', 'color']), __data_colors = getConfig(['data', 'colors'], {}), + __data_hide = getConfig(['data', 'hide'], false), __data_selection_enabled = getConfig(['data', 'selection', 'enabled'], false), __data_selection_grouped = getConfig(['data', 'selection', 'grouped'], false), __data_selection_isselectable = getConfig(['data', 'selection', 'isselectable'], function () { return true; }), @@ -191,7 +196,7 @@ __axis_y_label = getConfig(['axis', 'y', 'label'], {}), __axis_y_inner = getConfig(['axis', 'y', 'inner'], false), __axis_y_tick_format = getConfig(['axis', 'y', 'tick', 'format']), - __axis_y_padding = getConfig(['axis', 'y', 'padding'], {}), + __axis_y_padding = getConfig(['axis', 'y', 'padding']), __axis_y_ticks = getConfig(['axis', 'y', 'ticks'], 10), __axis_y2_show = getConfig(['axis', 'y2', 'show'], false), __axis_y2_max = getConfig(['axis', 'y2', 'max']), @@ -200,7 +205,7 @@ __axis_y2_label = getConfig(['axis', 'y2', 'label'], {}), __axis_y2_inner = getConfig(['axis', 'y2', 'inner'], false), __axis_y2_tick_format = getConfig(['axis', 'y2', 'tick', 'format']), - __axis_y2_padding = getConfig(['axis', 'y2', 'padding'], {}), + __axis_y2_padding = getConfig(['axis', 'y2', 'padding']), __axis_y2_ticks = getConfig(['axis', 'y2', 'ticks'], 10); // grid @@ -215,11 +220,11 @@ // point - point of each data var __point_show = getConfig(['point', 'show'], true), - __point_r = __point_show ? getConfig(['point', 'r'], 2.5) : 0, + __point_r = getConfig(['point', 'r'], 2.5), __point_focus_line_enabled = getConfig(['point', 'focus', 'line', 'enabled'], true), __point_focus_expand_enabled = getConfig(['point', 'focus', 'expand', 'enabled'], true), - __point_focus_expand_r = getConfig(['point', 'focus', 'expand', 'r'], __point_focus_expand_enabled ? 4 : __point_r), - __point_select_r = getConfig(['point', 'focus', 'select', 'r'], 8); + __point_focus_expand_r = getConfig(['point', 'focus', 'expand', 'r']), + __point_select_r = getConfig(['point', 'focus', 'select', 'r']); var __line_connect_null = getConfig(['line', 'connect_null'], false); @@ -264,7 +269,7 @@ } name = d[i].name; - value = valueFormat(d[i].value, d[i].ratio, d[i].id); + value = valueFormat(d[i].value, d[i].ratio, d[i].id, d[i].index); text += ""; text += "" + name + ""; @@ -349,10 +354,25 @@ } function transformMain(withTransition, transitions) { - var duration = withTransition !== false ? 250 : 0, - xAxis = (transitions && transitions.axisX) ? transitions.axisX : main.select('.' + CLASS.axisX).transition().duration(duration), - yAxis = (transitions && transitions.axisY) ? transitions.axisY : main.select('.' + CLASS.axisY).transition().duration(duration), - y2Axis = (transitions && transitions.axisYs) ? transitions.axisY2 : main.select('.' + CLASS.axisY2).transition().duration(duration); + var xAxis, yAxis, y2Axis; + if (transitions && transitions.axisX) { + xAxis = transitions.axisX; + } else { + xAxis = main.select('.' + CLASS.axisX); + if (withTransition) { xAxis = xAxis.transition(); } + } + if (transitions && transitions.axisY) { + yAxis = transitions.axisY; + } else { + yAxis = main.select('.' + CLASS.axisY); + if (withTransition) { yAxis = yAxis.transition(); } + } + if (transitions && transitions.axisY2) { + y2Axis = transitions.axisY2; + } else { + y2Axis = main.select('.' + CLASS.axisY2); + if (withTransition) { y2Axis = y2Axis.transition(); } + } main.attr("transform", translate.main); xAxis.attr("transform", translate.x); yAxis.attr("transform", translate.y); @@ -360,14 +380,18 @@ main.select('.' + CLASS.chartArcs).attr("transform", translate.arc); } function transformContext(withTransition, transitions) { - var duration = withTransition !== false ? 250 : 0, - subXAxis = (transitions && transitions.axisSubX) ? transitions.axisSubX : context.select('.' + CLASS.axisX).transition().duration(duration); + var subXAxis; + if (transitions && transitions.axisSubX) { + subXAxis = transitions.axisSubX; + } else { + subXAxis = context.select('.' + CLASS.axisX); + if (withTransition) { subXAxis = subXAxis.transition(); } + } context.attr("transform", translate.context); subXAxis.attr("transform", translate.subx); } function transformLegend(withTransition) { - var duration = withTransition !== false ? 250 : 0; - legend.transition().duration(duration).attr("transform", translate.legend); + (withTransition ? legend.transition() : legend).attr("transform", translate.legend); } function transformAll(withTransition, transitions) { transformMain(withTransition, transitions); @@ -555,6 +579,9 @@ } firstData = target.values[0], lastData = target.values[target.values.length - 1]; base = x(lastData.x) - x(firstData.x); + if (base === 0) { + return __axis_rotated ? height : width; + } maxDataCount = getMaxDataCount(); ratio = (hasBarType(c3.data.targets) ? (maxDataCount - (isCategorized ? 0.25 : 1)) / maxDataCount : 1); return maxDataCount > 1 ? (base * ratio) / (maxDataCount - 1) : base; @@ -668,7 +695,8 @@ } } else { axis.tickOffset = function () { - var edgeX = getEdgeX(c3.data.targets), base = x(edgeX[1]) - x(edgeX[0]); + var edgeX = getEdgeX(c3.data.targets), diff = x(edgeX[1]) - x(edgeX[0]), + base = diff ? diff : (__axis_rotated ? height : width); return (base / getMaxDataCount()) / 2; }; } @@ -855,21 +883,24 @@ var box = this.getBoundingClientRect(); if (maxWidth < box.width) { maxWidth = box.width; } }); - return maxWidth < 30 ? 30 : maxWidth; + return maxWidth < 0 ? 0 : maxWidth; } function updateAxisLabels() { main.select('.' + CLASS.axisX + ' .' + CLASS.axisXLabel) + .transition() .attr("x", xForXAxisLabel) .attr("dx", dxForXAxisLabel) .attr("dy", dyForXAxisLabel) .text(textForXAxisLabel); main.select('.' + CLASS.axisY + ' .' + CLASS.axisYLabel) + .transition() .attr("x", xForYAxisLabel) .attr("dx", dxForYAxisLabel) .attr("dy", dyForYAxisLabel) .attr("dy", dyForYAxisLabel) .text(textForYAxisLabel); main.select('.' + CLASS.axisY2 + ' .' + CLASS.axisY2Label) + .transition() .attr("x", xForY2AxisLabel) .attr("dx", dxForY2AxisLabel) .attr("dy", dyForY2AxisLabel) @@ -1311,6 +1342,11 @@ firstX = xDomain[0], lastX = xDomain[1], padding = getXDomainPadding(targets), min = 0, max = 0; + // show center of x domain if min and max are the same + if ((firstX - lastX) === 0) { + firstX = isTimeSeries ? new Date(firstX.getTime() * 0.5) : -0.5; + lastX = isTimeSeries ? new Date(lastX.getTime() * 1.5) : 0.5; + } if (firstX || firstX === 0) { min = isTimeSeries ? new Date(firstX.getTime() - padding.left) : firstX - padding.left; } @@ -1705,13 +1741,16 @@ function classTexts(d) { return generateClass(CLASS.texts, d.id); } function classShape(d, i) { return generateClass(CLASS.shape, i); } function classShapes(d) { return generateClass(CLASS.shapes, d.id); } - function classLine(d) { return classShapes(d) + generateClass(CLASS.line, d.id); } + function classLine(d) { return classShape(d) + generateClass(CLASS.line, d.id); } + function classLines(d) { return classShapes(d) + generateClass(CLASS.lines, d.id); } function classCircle(d, i) { return classShape(d, i) + generateClass(CLASS.circle, i); } function classCircles(d) { return classShapes(d) + generateClass(CLASS.circles, d.id); } function classBar(d, i) { return classShape(d, i) + generateClass(CLASS.bar, i); } function classBars(d) { return classShapes(d) + generateClass(CLASS.bars, d.id); } - function classArc(d) { return classShapes(d.data) + generateClass(CLASS.arc, d.data.id); } - function classArea(d) { return classShapes(d) + generateClass(CLASS.area, d.id); } + function classArc(d) { return classShape(d.data) + generateClass(CLASS.arc, d.data.id); } + function classArcs(d) { return classShapes(d.data) + generateClass(CLASS.arcs, d.data.id); } + function classArea(d) { return classShape(d) + generateClass(CLASS.area, d.id); } + function classAreas(d) { return classShapes(d) + generateClass(CLASS.areas, d.id); } function classRegion(d, i) { return generateClass(CLASS.region, i) + ' ' + ('class' in d ? d.class : ''); } function classEvent(d, i) { return generateClass(CLASS.eventRect, i); } function classTarget(id) { @@ -1730,9 +1769,9 @@ return targetId || targetId === 0 ? '-' + (targetId.replace ? targetId.replace(/([^a-zA-Z0-9-_])/g, '-') : targetId) : ''; } function selectorTarget(id) { return '.' + CLASS.target + getTargetSelectorSuffix(id); } - function selectorTargets(ids) { return ids.map(function (id) { return selectorTarget(id); }); } + function selectorTargets(ids) { return ids.length ? ids.map(function (id) { return selectorTarget(id); }) : null; } function selectorLegend(id) { return '.' + CLASS.legendItem + getTargetSelectorSuffix(id); } - function selectorLegends(ids) { return ids.map(function (id) { return selectorLegend(id); }); } + function selectorLegends(ids) { return ids.length ? ids.map(function (id) { return selectorLegend(id); }) : null; } function initialOpacity(d) { return d.value !== null && withoutFadeIn[d.id] ? 1 : 0; @@ -1757,7 +1796,7 @@ } function getDataLabelWidth(min, max) { var widths = [], paddingCoef = 1.3; - d3.select('svg').selectAll('.dummy') + selectChart.select('svg').selectAll('.dummy') .data([min, max]) .enter().append('text') .text(function (d) { return d; }) @@ -1879,7 +1918,7 @@ return closest; } function filterSameX(targets, x) { - return d3.merge(targets.map(function (t) { return t.values; })).filter(function (v) { return v.x === x; }); + return d3.merge(targets.map(function (t) { return t.values; })).filter(function (v) { return v.x - x === 0; }); } function getPathBox(path) { @@ -2030,7 +2069,7 @@ }; } function getBarW(axis, barTargetsNum) { - return __bar_width ? __bar_width : barTargetsNum ? (axis.tickOffset() * 2 * __bar_width_ratio) / barTargetsNum : 0; + return typeof __bar_width === 'number' ? __bar_width : barTargetsNum ? (axis.tickOffset() * 2 * __bar_width_ratio) / barTargetsNum : 0; } //-- Type --// @@ -2097,10 +2136,13 @@ function isArcType(d) { return isPieType(d) || isDonutType(d); } - /* not used function lineData(d) { - return isLineType(d) ? d.values : []; + return isLineType(d) ? [d] : []; } + function arcData(d) { + return isArcType(d.data) ? [d] : []; + } + /* not used function scatterData(d) { return isScatterType(d) ? d.values : []; } @@ -2220,9 +2262,9 @@ .attr("cx", __axis_rotated ? circleY : circleX) .attr("cy", __axis_rotated ? circleX : circleY) .attr("stroke", function () { return color(d); }) - .attr("r", __point_select_r * 1.4) + .attr("r", pointSelectR(d) * 1.4) .transition().duration(100) - .attr("r", __point_select_r); + .attr("r", pointSelectR); } function unselectPoint(target, d, i) { __data_onunselected(d, target.node()); @@ -2237,7 +2279,7 @@ function selectBar(target, d) { __data_onselected(d, target.node()); - target.transition().duration(100).style("fill", function () { return d3.rgb(color(d)).darker(1); }); + target.transition().duration(100).style("fill", function () { return d3.rgb(color(d)).brighter(0.75); }); } function unselectBar(target, d) { __data_onunselected(d, target.node()); @@ -2246,11 +2288,29 @@ function toggleBar(selected, target, d, i) { selected ? selectBar(target, d, i) : unselectBar(target, d, i); } + function toggleArc(selected, target, d, i) { + toggleBar(selected, target, d.data, i); + } + function getToggle(that) { + return that.nodeName === 'circle' ? togglePoint : (d3.select(that).classed(CLASS.bar) ? toggleBar : toggleArc); + } function filterRemoveNull(data) { return data.filter(function (d) { return isValue(d.value); }); } + //-- Point --// + + function pointR(d) { + return __point_show ? (typeof __point_r === 'function' ? __point_r(d) : __point_r) : 0; + } + function pointExpandedR(d) { + return __point_focus_expand_enabled ? (__point_focus_expand_r ? __point_focus_expand_r : pointR(d) * 1.75) : pointR(d); + } + function pointSelectR(d) { + return __point_select_r ? __point_select_r : pointR(d) * 4; + } + //-- Shape --// function getCircles(i, id) { @@ -2259,13 +2319,13 @@ function expandCircles(i, id) { getCircles(i, id) .classed(CLASS.EXPANDED, true) - .attr('r', __point_focus_expand_r); + .attr('r', pointExpandedR); } function unexpandCircles(i) { getCircles(i) .filter(function () { return d3.select(this).classed(CLASS.EXPANDED); }) .classed(CLASS.EXPANDED, false) - .attr('r', __point_r); + .attr('r', pointR); } function getBars(i) { return main.selectAll('.' + CLASS.bar + (isValue(i) ? '-' + i : '')); @@ -2372,17 +2432,17 @@ function generateGetBarPoints(barIndices, isSub) { var barTargetsNum = barIndices.__max__ + 1, barW = getBarW(xAxis, barTargetsNum), - x = getBarX(barW, barTargetsNum, barIndices, !!isSub), - y = getBarY(!!isSub), + barX = getBarX(barW, barTargetsNum, barIndices, !!isSub), + barY = getBarY(!!isSub), barOffset = getBarOffset(barIndices, !!isSub), yScale = isSub ? getSubYScale : getYScale; return function (d, i) { var y0 = yScale(d.id)(0), offset = barOffset(d, i) || y0, // offset is for stacked bar chart - posX = x(d), posY = y(d); + posX = barX(d), posY = barY(d); // fix posY not to overflow opposite quadrant if (__axis_rotated) { - if ((d.value > 0 && posY < offset) || (d.value < 0 && posY > offset)) { posY = offset; } + if ((0 < d.value && posY < y0) || (d.value < 0 && y0 < posY)) { posY = y0; } } // 4 points that make a bar return [ @@ -2529,6 +2589,11 @@ c3.data.xs = {}; c3.data.targets = convertDataToTargets(data); + // Set targets to hide if needed + if (__data_hide) { + addHiddenTargetIds(__data_hide === true ? mapToIds(c3.data.targets) : __data_hide); + } + // Init sizes and scales updateSizes(); updateScales(); @@ -2552,32 +2617,15 @@ // Define svgs svg = selectChart.append("svg") - .attr("width", width + margin.left + margin.right) - .attr("height", height + margin.top + margin.bottom) .on('mouseenter', __onenter) .on('mouseleave', __onleave); // Define defs defs = svg.append("defs"); - defs.append("clipPath") - .attr("id", clipId) - .append("rect") - .attr("width", width) - .attr("height", height); - defs.append("clipPath") - .attr("id", clipIdForXAxis) - .append("rect") - .attr("x", getXAxisClipX) - .attr("y", getXAxisClipY) - .attr("width", getXAxisClipWidth) - .attr("height", getXAxisClipHeight); - defs.append("clipPath") - .attr("id", clipIdForYAxis) - .append("rect") - .attr("x", getYAxisClipX) - .attr("y", getYAxisClipY) - .attr("width", getYAxisClipWidth) - .attr("height", getYAxisClipHeight); + defs.append("clipPath").attr("id", clipId).append("rect"); + defs.append("clipPath").attr("id", clipIdForXAxis).append("rect"); + defs.append("clipPath").attr("id", clipIdForYAxis).append("rect"); + updateSvgSize(); // Define regions main = svg.append("g").attr("transform", translate.main); @@ -2608,6 +2656,33 @@ /*-- Main Region --*/ + // Grids + grid = main.append('g') + .attr("clip-path", clipPath) + .attr('class', CLASS.grid); + + // X-Grid + if (__grid_x_show) { + grid.append("g").attr("class", CLASS.xgrids); + } + if (notEmpty(__grid_x_lines)) { + grid.append('g').attr("class", CLASS.xgridLines); + } + if (__point_focus_line_enabled) { + grid.append('g') + .attr("class", CLASS.xgridFocus) + .append('line') + .attr('class', CLASS.xgridFocus); + } + + // Y-Grid + if (__grid_y_show) { + grid.append('g').attr('class', CLASS.ygrids); + } + if (notEmpty(__grid_y_lines)) { + grid.append('g').attr('class', CLASS.ygridLines); + } + // Add Axis if (__axis_x_show) { main.append("g") @@ -2642,33 +2717,6 @@ .style("text-anchor", textAnchorForY2AxisLabel); } - // Grids - grid = main.append('g') - .attr("clip-path", clipPath) - .attr('class', CLASS.grid); - - // X-Grid - if (__grid_x_show) { - grid.append("g").attr("class", CLASS.xgrids); - } - if (notEmpty(__grid_x_lines)) { - grid.append('g').attr("class", CLASS.xgridLines); - } - if (__point_focus_line_enabled) { - grid.append('g') - .attr("class", CLASS.xgridFocus) - .append('line') - .attr('class', CLASS.xgridFocus); - } - - // Y-Grid - if (__grid_y_show) { - grid.append('g').attr('class', CLASS.ygrids); - } - if (notEmpty(__grid_y_lines)) { - grid.append('g').attr('class', CLASS.ygridLines); - } - // Regions main.append('g') .attr("clip-path", clipPath) @@ -2858,12 +2906,12 @@ .filter(function (d) { return __data_selection_isselectable(d); }) .each(function () { var _this = d3.select(this).classed(CLASS.EXPANDED, true); - if (this.nodeName === 'circle') { _this.attr('r', __point_focus_expand_r); } + if (this.nodeName === 'circle') { _this.attr('r', pointExpandedR); } svg.select('.' + CLASS.eventRect + '-' + i).style('cursor', null); }) - .filter(function () { + .filter(function (d) { if (this.nodeName === 'circle') { - return isWithinCircle(this, __point_select_r); + return isWithinCircle(this, pointSelectR(d)); } else if (this.nodeName === 'path') { return isWithinBar(this); @@ -2873,7 +2921,7 @@ var _this = d3.select(this); if (! _this.classed(CLASS.EXPANDED)) { _this.classed(CLASS.EXPANDED, true); - if (this.nodeName === 'circle') { _this.attr('r', __point_select_r); } + if (this.nodeName === 'circle') { _this.attr('r', pointSelectR); } } svg.select('.' + CLASS.eventRect + '-' + i).style('cursor', 'pointer'); }); @@ -2981,17 +3029,20 @@ .call(zoom).on("dblclick.zoom", null); } - function toggleShape(target, d, i) { - var shape = d3.select(target), - isSelected = shape.classed(CLASS.SELECTED); - var isWithin = false, toggle; - if (target.nodeName === 'circle') { - isWithin = isWithinCircle(target, __point_select_r * 1.5); + function toggleShape(that, d, i) { + var shape = d3.select(that), isSelected = shape.classed(CLASS.SELECTED), isWithin, toggle; + if (that.nodeName === 'circle') { + isWithin = isWithinCircle(that, pointSelectR(d) * 1.5); toggle = togglePoint; } - else if (target.nodeName === 'path') { - isWithin = isWithinBar(target); - toggle = toggleBar; + else if (that.nodeName === 'path') { + if (shape.classed(CLASS.bar)) { + isWithin = isWithinBar(that); + toggle = toggleBar; + } else { // would be arc + isWithin = true; + toggle = toggleArc; + } } if (__data_selection_grouped || isWithin) { if (__data_selection_enabled && __data_selection_isselectable(d)) { @@ -3004,7 +3055,7 @@ shape.classed(CLASS.SELECTED, !isSelected); toggle(!isSelected, shape, d, i); } - __data_onclick(d, target); + __data_onclick(d, that); } } @@ -3088,7 +3139,7 @@ function redraw(options) { var xaxis, subxaxis, yaxis, y2axis, xgrid, xgridData, xgridLines, xgridLine, ygrid, ygridLines, ygridLine; - var mainCircle, mainBar, mainRegion, mainText, contextBar, eventRect, eventRectUpdate; + var mainLine, mainArea, mainCircle, mainBar, mainArc, mainRegion, mainText, contextLine, contextBar, eventRect, eventRectUpdate; var barIndices = getBarIndices(), maxDataCountTarget; var rectX, rectW; var withY, withSubchart, withTransition, withTransitionForExit, withTransitionForAxis, withTransform, withUpdateXDomain, withUpdateOrgXDomain, withLegend; @@ -3176,14 +3227,14 @@ break; } } - d3.selectAll('.' + CLASS.axisX + ' .tick text').each(function (e) { + svg.selectAll('.' + CLASS.axisX + ' .tick text').each(function (e) { var index = tickValues.indexOf(e); if (index >= 0) { d3.select(this).style('display', index % intervalForCulling ? 'none' : 'block'); } }); } else { - d3.selectAll('.' + CLASS.axisX + ' .tick text').style('display', 'block'); + svg.selectAll('.' + CLASS.axisX + ' .tick text').style('display', 'block'); } } @@ -3335,56 +3386,54 @@ mainBar = main.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar) .data(barData); mainBar.enter().append('path') - .attr('d', drawBar) + .attr("class", classBar) .style("stroke", 'none') - .style("opacity", 0) - .style("fill", function (d) { return color(d); }) - .attr("class", classBar); + .style("fill", color); mainBar .style("opacity", initialOpacity) .transition().duration(duration) .attr('d', drawBar) + .style("fill", color) .style("opacity", 1); mainBar.exit().transition().duration(durationForExit) .style('opacity', 0) .remove(); - mainText = main.selectAll('.' + CLASS.texts).selectAll('.' + CLASS.text) - .data(barOrLineData); - mainText.enter().append('text') - .attr("class", classText) - .attr('text-anchor', function (d) { return __axis_rotated ? (d.value < 0 ? 'end' : 'start') : 'middle'; }) - .style("stroke", 'none') - .style("fill-opacity", 0); - mainText - .text(function (d) { return formatByAxisId(d.id)(d.value); }) - .style("fill-opacity", initialOpacityForText) - .transition().duration(duration) - .attr('x', xForText) - .attr('y', yForText) - .style("fill-opacity", opacityForText); - mainText.exit() - .transition().duration(durationForExit) - .style('fill-opacity', 0) - .remove(); - // lines and cricles - main.selectAll('.' + CLASS.line) + mainLine = main.selectAll('.' + CLASS.lines).selectAll('.' + CLASS.line) + .data(lineData); + mainLine.enter().append('path') + .attr('class', classLine) + .style("stroke", color); + mainLine .style("opacity", initialOpacity) .transition().duration(duration) .attr("d", lineOnMain) .style("opacity", 1); - main.selectAll('.' + CLASS.area) + mainLine.exit().transition().duration(durationForExit) + .style('opacity', 0) + .remove(); + + mainArea = main.selectAll('.' + CLASS.areas).selectAll('.' + CLASS.area) + .data(lineData); + mainArea.enter().append('path') + .attr("class", classArea) + .style("fill", color) + .style("opacity", function () { orgAreaOpacity = +d3.select(this).style('opacity'); return 0; }); + mainArea .style("opacity", 0) .transition().duration(duration) .attr("d", areaOnMain) .style("opacity", orgAreaOpacity); + mainArea.exit().transition().duration(durationForExit) + .style('opacity', 0) + .remove(); + mainCircle = main.selectAll('.' + CLASS.circles).selectAll('.' + CLASS.circle) .data(lineOrScatterData); mainCircle.enter().append("circle") .attr("class", classCircle) - .style('opacity', 0) - .attr("r", __point_r); + .attr("r", pointR); mainCircle .style("opacity", initialOpacity) .transition().duration(duration) @@ -3393,10 +3442,74 @@ .attr("cy", __axis_rotated ? circleX : circleY); mainCircle.exit().remove(); + mainText = main.selectAll('.' + CLASS.texts).selectAll('.' + CLASS.text) + .data(barOrLineData); + mainText.enter().append('text') + .attr("class", classText) + .attr('text-anchor', function (d) { return __axis_rotated ? (d.value < 0 ? 'end' : 'start') : 'middle'; }) + .style("stroke", 'none') + .style("fill-opacity", 0); + mainText + .text(function (d) { return formatByAxisId(d.id)(d.value, d.id); }) + .style("fill-opacity", initialOpacityForText) + .transition().duration(duration) + .attr('x', xForText) + .attr('y', yForText) + .style("fill-opacity", opacityForText); + mainText.exit() + .transition().duration(durationForExit) + .style('fill-opacity', 0) + .remove(); + // arc - main.each(function () { transiting = true; }).selectAll('.' + CLASS.chartArc).select('.' + CLASS.arc) + mainArc = main.selectAll('.' + CLASS.arcs).selectAll('.' + CLASS.arc) + .data(arcData); + mainArc.enter().append('path') + .attr("class", classArc) + .style("fill", function (d) { return color(d.data); }) + .style("cursor", function (d) { return __data_selection_isselectable(d) ? "pointer" : null; }) + .style("opacity", 0) + .each(function (d) { this._current = d; }) + .on('mouseover', function (d, i) { + var updated, arcData, callback; + if (transiting) { // skip while transiting + return; + } + updated = updateAngle(d); + arcData = convertToArcData(updated); + callback = getArcOnMouseOver(); + // transitions + expandArc(updated.data.id); + toggleFocusLegend(updated.data.id, true); + callback(arcData, i); + }) + .on('mousemove', function (d) { + var updated = updateAngle(d), arcData = convertToArcData(updated), selectedData = [arcData]; + showTooltip(selectedData, d3.mouse(this)); + }) + .on('mouseout', function (d, i) { + var updated, arcData, callback; + if (transiting) { // skip while transiting + return; + } + updated = updateAngle(d); + arcData = convertToArcData(updated); + callback = getArcOnMouseOut(); + // transitions + unexpandArc(updated.data.id); + revertLegend(); + hideTooltip(); + callback(arcData, i); + }) + .on('click', function (d, i) { + var updated = updateAngle(d), arcData = convertToArcData(updated), callback = getArcOnClick(); + toggleShape(this, d, i); + callback(arcData, i); + }); + mainArc .attr("transform", withTransform ? "scale(0)" : "") .style("opacity", function (d) { return d === this._current ? 0 : 1; }) + .each(function () { transiting = true; }) .transition().duration(duration) .attrTween("d", function (d) { var updated = updateAngle(d), interpolate; @@ -3420,6 +3533,9 @@ .call(endall, function () { transiting = false; }); + mainArc.exit().transition().duration(durationForExit) + .style('opacity', 0) + .remove(); main.selectAll('.' + CLASS.chartArc).select('text') .attr("transform", transformForArcLabel) .style("opacity", 0) @@ -3453,10 +3569,9 @@ contextBar = context.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar) .data(barData); contextBar.enter().append('path') - .attr('d', drawBarOnSub) + .attr("class", classBar) .style("stroke", 'none') - .style("fill", function (d) { return color(d); }) - .attr("class", classBar); + .style("fill", color); contextBar .style("opacity", initialOpacity) .transition().duration(duration) @@ -3466,11 +3581,19 @@ .style('opacity', 0) .remove(); // lines - context.selectAll('.' + CLASS.line) + contextLine = context.selectAll('.' + CLASS.lines).selectAll('.' + CLASS.line) + .data(lineData); + contextLine.enter().append('path') + .attr('class', classLine) + .style('stroke', color); + contextLine .style("opacity", initialOpacity) .transition().duration(duration) .attr("d", lineOnSub) .style('opacity', 1); + contextLine.exit().transition().duration(duration) + .style('opacity', 0) + .remove(); } } @@ -3645,10 +3768,11 @@ .attr('class', classChartText); mainTextEnter = mainTextUpdate.enter().append('g') .attr('class', classChartText) + .style('opacity', 0) .style("pointer-events", "none"); mainTextEnter.append('g') .attr('class', classTexts) - .style("fill", function (d) { return color(d); }); + .style("fill", color); //-- Bar --// mainBarUpdate = main.select('.' + CLASS.chartBars).selectAll('.' + CLASS.chartBar) @@ -3656,38 +3780,33 @@ .attr('class', classChartBar); mainBarEnter = mainBarUpdate.enter().append('g') .attr('class', classChartBar) + .style('opacity', 0) .style("pointer-events", "none"); // Bars for each data mainBarEnter.append('g') .attr("class", classBars) - .style("fill", function (d) { return color(d); }) - .style("stroke", "none") .style("cursor", function (d) { return __data_selection_isselectable(d) ? "pointer" : null; }); //-- Line --// - mainLineUpdate = main.select('.' + CLASS.chartLines) - .selectAll('.' + CLASS.chartLine) + mainLineUpdate = main.select('.' + CLASS.chartLines).selectAll('.' + CLASS.chartLine) .data(targets) - .attr('class', classChartLine); + .attr('class', classChartLine); mainLineEnter = mainLineUpdate.enter().append('g') .attr('class', classChartLine) + .style('opacity', 0) .style("pointer-events", "none"); // Lines for each data - mainLineEnter.append("path") - .attr("class", classLine) - .style("opacity", 0) - .style("stroke", function (d) { return color(d); }); + mainLineEnter.append('g') + .attr("class", classLines); // Areas - mainLineEnter.append("path") - .attr("class", classArea) - .style("opacity", function () { orgAreaOpacity = +d3.select(this).style('opacity'); return 0; }) - .style("fill", function (d) { return color(d); }); + mainLineEnter.append('g') + .attr('class', classAreas); // Circles for each data point on lines mainLineEnter.append('g') .attr("class", function (d) { return generateClass(CLASS.selectedCircles, d.id); }); mainLineEnter.append('g') .attr("class", classCircles) - .style("fill", function (d) { return color(d); }) + .style("fill", color) .style("cursor", function (d) { return __data_selection_isselectable(d) ? "pointer" : null; }); // Update date for selected circles targets.forEach(function (t) { @@ -3704,47 +3823,8 @@ .attr("class", classChartArc); mainPieEnter = mainPieUpdate.enter().append("g") .attr("class", classChartArc); - mainPieEnter.append("path") - .attr("class", classArc) - .style("opacity", 0) - .style("fill", function (d) { return color(d.data); }) - .style("cursor", function (d) { return __data_selection_isselectable(d) ? "pointer" : null; }) - .each(function (d) { this._current = d; }) - .on('mouseover', function (d, i) { - var updated, arcData, callback; - if (transiting) { // skip while transiting - return; - } - updated = updateAngle(d); - arcData = convertToArcData(updated); - callback = getArcOnMouseOver(); - // transitions - expandArc(updated.data.id); - focusLegend(updated.data.id); - callback(arcData, i); - }) - .on('mousemove', function (d) { - var updated = updateAngle(d), arcData = convertToArcData(updated), selectedData = [arcData]; - showTooltip(selectedData, d3.mouse(this)); - }) - .on('mouseout', function (d, i) { - var updated, arcData, callback; - if (transiting) { // skip while transiting - return; - } - updated = updateAngle(d); - arcData = convertToArcData(updated); - callback = getArcOnMouseOut(); - // transitions - unexpandArc(updated.data.id); - revertLegend(); - hideTooltip(); - callback(arcData, i); - }) - .on('click', function (d, i) { - var updated = updateAngle(d), arcData = convertToArcData(updated), callback = getArcOnClick(); - callback(arcData, i); - }); + mainPieEnter.append('g') + .attr('class', classArcs); mainPieEnter.append("text") .attr("dy", ".35em") .style("opacity", 0) @@ -3761,30 +3841,29 @@ .data(targets) .attr('class', classChartBar); contextBarEnter = contextBarUpdate.enter().append('g') + .style('opacity', 0) .attr('class', classChartBar); // Bars for each data contextBarEnter.append('g') - .attr("class", classBars) - .style("fill", function (d) { return color(d); }); + .attr("class", classBars); //-- Line --// contextLineUpdate = context.select('.' + CLASS.chartLines).selectAll('.' + CLASS.chartLine) .data(targets) .attr('class', classChartLine); contextLineEnter = contextLineUpdate.enter().append('g') + .style('opacity', 0) .attr('class', classChartLine); // Lines for each data - contextLineEnter.append("path") - .attr("class", classLine) - .style("opacity", 0) - .style("stroke", function (d) { return color(d); }); + contextLineEnter.append('g') + .attr("class", classLines); } /*-- Show --*/ // Fade-in each chart svg.selectAll('.' + CLASS.target).filter(function (d) { return isTargetToShow(d.id); }) - .transition() + .transition().duration(__transition_duration) .style("opacity", 1); } @@ -3868,38 +3947,45 @@ /*-- Draw Legend --*/ - function opacityForLegend(id) { - return d3.select(selectorLegend(id)).classed(CLASS.legendItemHidden) ? legendOpacityForHidden : 1; + function opacityForLegend(legendItem) { + return legendItem.classed(CLASS.legendItemHidden) ? legendOpacityForHidden : 1; } - function opacityForUnfocusedLegend(id) { - return d3.select(selectorLegend(id)).classed(CLASS.legendItemHidden) ? legendOpacityForHidden : 0.3; + function opacityForUnfocusedLegend(legendItem) { + return legendItem.classed(CLASS.legendItemHidden) ? legendOpacityForHidden : 0.3; } function toggleFocusLegend(id, focus) { - var legendItem = legend.selectAll('.' + CLASS.legendItem), - isTarget = function (d) { return (!id || d === id); }, - notTarget = function (d) { return !isTarget(d); }; - legendItem.filter(notTarget).transition().duration(100).style('opacity', focus ? opacityForUnfocusedLegend : opacityForLegend); - legendItem.filter(isTarget).transition().duration(100).style('opacity', focus ? opacityForLegend : opacityForUnfocusedLegend); - } - function focusLegend(id) { - toggleFocusLegend(id, true); - } - function defocusLegend(id) { - toggleFocusLegend(id, false); + legend.selectAll('.' + CLASS.legendItem) + .transition().duration(100) + .style('opacity', function (_id) { + var This = d3.select(this); + if (id && _id !== id) { + return focus ? opacityForUnfocusedLegend(This) : opacityForLegend(This); + } else { + return focus ? opacityForLegend(This) : opacityForUnfocusedLegend(This); + } + }); } function revertLegend() { legend.selectAll('.' + CLASS.legendItem) .transition().duration(100) - .style('opacity', opacityForLegend); + .style('opacity', function () { return opacityForLegend(d3.select(this)); }); } function showLegend(targetIds) { + if (!__legend_show) { + __legend_show = true; + legend.style('visibility', 'visible'); + } removeHiddenLegendIds(targetIds); legend.selectAll(selectorLegends(targetIds)) .style('visibility', 'visible') .transition() - .style('opacity', opacityForLegend); + .style('opacity', function () { return opacityForLegend(d3.select(this)); }); } function hideLegend(targetIds) { + if (__legend_show && isEmpty(targetIds)) { + __legend_show = false; + legend.style('visibility', 'hidden'); + } addHiddenLegendIds(targetIds); legend.selectAll(selectorLegends(targetIds)) .style('opacity', 0) @@ -3910,12 +3996,12 @@ var xForLegend, xForLegendText, xForLegendRect, yForLegend, yForLegendText, yForLegendRect; var paddingTop = 4, paddingRight = 26, maxWidth = 0, maxHeight = 0, posMin = 10; var l, totalLength = 0, offsets = {}, widths = {}, heights = {}, margins = [0], steps = {}, step = 0; - var withTransition, withTransitionForTransform, withTransformAll; + var withTransition, withTransitionForTransform; + var hasFocused = legend.selectAll('.' + CLASS.legendItemFocused).size(); options = options || {}; withTransition = isDefined(options.withTransition) ? options.withTransition : true; withTransitionForTransform = isDefined(options.withTransitionForTransform) ? options.withTransitionForTransform : true; - withTransformAll = isDefined(options.withTransformAll) ? options.withTransformAll : true; function updatePositions(textElement, id, reset) { var box = textElement.getBoundingClientRect(), @@ -4000,6 +4086,7 @@ typeof __legend_item_onclick === 'function' ? __legend_item_onclick(id) : c3.toggle(id); }) .on('mouseover', function (id) { + d3.select(this).classed(CLASS.legendItemFocused, true); if (!transiting) { c3.focus(id); } @@ -4008,6 +4095,7 @@ } }) .on('mouseout', function (id) { + d3.select(this).classed(CLASS.legendItemFocused, false); if (!transiting) { c3.revert(); } @@ -4057,6 +4145,19 @@ .attr('x', xForLegend) .attr('y', yForLegend); + // toggle legend state + legend.selectAll('.' + CLASS.legendItem) + .classed(CLASS.legendItemHidden, function (id) { return !isTargetToShow(id); }) + .transition() + .style('opacity', function (id) { + var This = d3.select(this); + if (isTargetToShow(id)) { + return !hasFocused || This.classed(CLASS.legendItemFocused) ? opacityForLegend(This) : opacityForUnfocusedLegend(This); + } else { + return legendOpacityForHidden; + } + }); + // Update all to reflect change of legend updateLegendItemWidth(maxWidth); updateLegendItemHeight(maxHeight); @@ -4066,9 +4167,7 @@ updateScales(); updateSvgSize(); // Update g positions - if (withTransformAll) { - transformAll(withTransitionForTransform, transitions); - } + transformAll(withTransitionForTransform, transitions); } /*-- Event Handling --*/ @@ -4105,7 +4204,7 @@ if (hasArcType(c3.data.targets)) { expandArc(targetId, true); } - focusLegend(targetId); + toggleFocusLegend(targetId, true); }; c3.defocus = function (targetId) { @@ -4121,7 +4220,7 @@ if (hasArcType(c3.data.targets)) { unexpandArc(targetId); } - defocusLegend(targetId); + toggleFocusLegend(targetId, false); }; c3.revert = function (targetId) { @@ -4150,11 +4249,6 @@ if (options.withLegend) { showLegend(targetIds); - } else { - legend.selectAll(selectorLegends(targetIds)) - .classed(CLASS.legendItemHidden, false) - .transition() - .style('opacity', 1); } redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true}); @@ -4171,11 +4265,6 @@ if (options.withLegend) { hideLegend(targetIds); - } else { - legend.selectAll(selectorLegends(targetIds)) - .classed(CLASS.legendItemHidden, true) - .transition() - .style('opacity', legendOpacityForHidden); } redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true}); @@ -4222,9 +4311,10 @@ } }; - c3.unload = function (targetIds) { + c3.unload = function (targetIds, done) { unload(mapToTargetIds(targetIds), function () { redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true}); + if (typeof done === 'function') { done(); } }); }; @@ -4232,26 +4322,24 @@ return d3.merge( main.selectAll('.' + CLASS.shapes + getTargetSelectorSuffix(targetId)).selectAll('.' + CLASS.shape) .filter(function () { return d3.select(this).classed(CLASS.SELECTED); }) - .map(function (d) { return d.map(function (_d) { return _d.__data__; }); }) + .map(function (d) { return d.map(function (d) { var data = d.__data__; return data.data ? data.data : data; }); }) ); }; c3.select = function (ids, indices, resetOther) { if (! __data_selection_enabled) { return; } main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).each(function (d, i) { - var shape = d3.select(this), - select = (this.nodeName === 'circle') ? selectPoint : selectBar, - unselect = (this.nodeName === 'circle') ? unselectPoint : unselectBar, - isTargetId = __data_selection_grouped || !ids || ids.indexOf(d.id) >= 0, + var shape = d3.select(this), id = d.data ? d.data.id : d.id, toggle = getToggle(this), + isTargetId = __data_selection_grouped || !ids || ids.indexOf(id) >= 0, isTargetIndex = !indices || indices.indexOf(i) >= 0, isSelected = shape.classed(CLASS.SELECTED); if (isTargetId && isTargetIndex) { if (__data_selection_isselectable(d) && !isSelected) { - select(shape.classed(CLASS.SELECTED, true), d, i); + toggle(true, shape.classed(CLASS.SELECTED, true), d, i); } } else if (isDefined(resetOther) && resetOther) { if (isSelected) { - unselect(shape.classed(CLASS.SELECTED, false), d, i); + toggle(false, shape.classed(CLASS.SELECTED, false), d, i); } } }); @@ -4260,15 +4348,14 @@ c3.unselect = function (ids, indices) { if (! __data_selection_enabled) { return; } main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).each(function (d, i) { - var shape = d3.select(this), - unselect = (this.nodeName === 'circle') ? unselectPoint : unselectBar, - isTargetId = __data_selection_grouped || !ids || ids.indexOf(d.id) >= 0, + var shape = d3.select(this), id = d.data ? d.data.id : d.id, toggle = getToggle(this), + isTargetId = __data_selection_grouped || !ids || ids.indexOf(id) >= 0, isTargetIndex = !indices || indices.indexOf(i) >= 0, isSelected = shape.classed(CLASS.SELECTED); if (isTargetId && isTargetIndex) { if (__data_selection_isselectable(d)) { if (isSelected) { - unselect(shape.classed(CLASS.SELECTED, false), d, i); + toggle(false, shape.classed(CLASS.SELECTED, false), d, i); } } } @@ -4443,20 +4530,12 @@ }; c3.legend.show = function (targetIds) { - if (!__legend_show) { - __legend_show = true; - legend.style('visibility', 'visible'); - } showLegend(mapToTargetIds(targetIds)); redraw({withLegend: true}); }; c3.legend.hide = function (targetIds) { hideLegend(mapToTargetIds(targetIds)); redraw({withLegend: true}); - if (__legend_show && isEmpty(targetIds)) { - __legend_show = false; - legend.style('visibility', 'hidden'); - } }; c3.resize = function (size) { diff --git a/c3.min.js b/c3.min.js index 1f0ebff..4fe0f02 100644 --- a/c3.min.js +++ b/c3.min.js @@ -1,3 +1,3 @@ -!function(a){"use strict";function b(a){return a||0===a}function c(a){return"undefined"==typeof a}function d(a){return"undefined"!=typeof a}var e={version:"0.1.32"},f={target:"c3-target",chart:"c3-chart",chartLine:"c3-chart-line",chartLines:"c3-chart-lines",chartBar:"c3-chart-bar",chartBars:"c3-chart-bars",chartText:"c3-chart-text",chartTexts:"c3-chart-texts",chartArc:"c3-chart-arc",chartArcs:"c3-chart-arcs",chartArcsTitle:"c3-chart-arcs-title",selectedCircle:"c3-selected-circle",selectedCircles:"c3-selected-circles",eventRect:"c3-event-rect",eventRects:"c3-event-rects",eventRectsSingle:"c3-event-rects-single",eventRectsMultiple:"c3-event-rects-multiple",zoomRect:"c3-zoom-rect",brush:"c3-brush",focused:"c3-focused",region:"c3-region",regions:"c3-regions",tooltip:"c3-tooltip",tooltipName:"c3-tooltip-name",shape:"c3-shape",shapes:"c3-shapes",line:"c3-line",bar:"c3-bar",bars:"c3-bars",circle:"c3-circle",circles:"c3-circles",arc:"c3-arc",area:"c3-area",text:"c3-text",texts:"c3-texts",grid:"c3-grid",xgrid:"c3-xgrid",xgrids:"c3-xgrids",xgridLine:"c3-xgrid-line",xgridLines:"c3-xgrid-lines",xgridFocus:"c3-xgrid-focus",ygrid:"c3-ygrid",ygrids:"c3-ygrids",ygridLine:"c3-ygrid-line",ygridLines:"c3-ygrid-lines",axisX:"c3-axis-x",axisXLabel:"c3-axis-x-label",axisY:"c3-axis-y",axisYLabel:"c3-axis-y-label",axisY2:"c3-axis-y2",axisY2Label:"c3-axis-y2-label",legendItem:"c3-legend-item",legendItemEvent:"c3-legend-item-event",legendItemTile:"c3-legend-item-tile",legendItemHidden:"c3-legend-item-hidden",dragarea:"c3-dragarea",EXPANDED:"_expanded_",SELECTED:"_selected_",INCLUDED:"_included_"};e.generate=function(e){function g(a,b){if(!(a in e))throw Error(b)}function h(a,b){var c,d,f,g=e;for(c=0;cPf&&(Pf=0),0>Rf&&(Rf=0),Qf=_g?Mf.left-Wi-Xi:Pf,Sf=_g?Rf:Uf-Nf.top-Nf.bottom,0>Qf&&(Qf=0),0>Sf&&(Sf=0),p(),Ri&&ee(xf.data.targets)&&(Of.left=Pf/2+Wf)}function o(){ej.select("line."+f.xgridFocus).attr("x1",_g?0:-10).attr("x2",_g?Pf:-10).attr("y1",_g?-10:Mf.top).attr("y2",_g?-10:Rf)}function p(){Wf=Rf/2,Vf=.95*Wf,Xf=de(xf.data.targets)?.6*Vf:0}function q(){var a=_g?f.axisX:f.axisY,b=ej.select("."+a).node(),c=b?b.getBoundingClientRect():{right:0},d=wf.select(zf).node().getBoundingClientRect(),e=c.right-d.left-t();return e>0?e:0}function r(){return Af?Af:x()}function s(){var a=Bf?Bf:y();return a>0?a:320}function t(){return ee(xf.data.targets)?0:Cf?Cf:_g?ah?v("x"):1:!sh||xh?1:v("y")}function u(){var a=1;return ee(xf.data.targets)?0:Df?Df:Ri?P()+(Bh&&!_g?v("y2"):a):Bh?Gh||_g?a:v("y2"):a}function v(a){var b=jb(a);return b.isInner?20+Cb(a):40+Cb(a)}function w(a){return"x"!==a||ah?"x"===a&&ph?ph:"y"!==a||sh?"y2"!==a||Bh?(jb(a).isInner?30:40)+("y2"===a?-10:0):Yi:Vg&&!Ri?10:1:0}function x(){return+wf.select(zf).style("width").replace("px","")}function y(){return+wf.select(zf).style("height").replace("px","")}function z(a){return a?-5:-(Mf.left-1)}function A(a){return a?-20:-4}function B(){return z(!_g)}function C(){return A(!_g)}function D(){return z(_g)}function E(){return A(_g)}function F(a){return a?Pf+2+4:Mf.left+20}function G(a){return a?(ph?ph:0)+80:Rf+8}function H(){return F(!_g)}function I(){return G(!_g)}function J(){return F(_g)}function K(){return G(_g)}function L(){var a,b,c,d,e,f=Ac(xf.data.targets);return f?(a=f.values[0],b=f.values[f.values.length-1],c=ig(b.x)-ig(a.x),d=zc(),e=ae(xf.data.targets)?(d-(zi?.25:1))/d:1,d>1?c*e/(d-1):c):0}function M(a){Si=a}function N(a){Ti=a}function O(a){Ui=a}function P(){return Vg?Ri?Ti*(Si+1):Tf:0}function Q(){return Vg?Ri?Uf:Ui*(Si+1):0}function R(){var a,b,c=!ig;ag=_g?1:0,bg=_g?Rf:Pf,cg=_g?0:Rf,dg=_g?Pf:1,eg=ag,fg=bg,gg=_g?0:Sf,hg=_g?Qf:1,ig=T(ag,bg,c?void 0:ig.domain(),function(){return og.tickOffset()}),jg=U(cg,dg,c?void 0:jg.domain()),kg=U(cg,dg,c?void 0:kg.domain()),lg=T(ag,bg,jj,function(a){return a%1?0:rg.tickOffset()}),mg=U(gg,hg,c?void 0:mg.domain()),ng=U(gg,hg,c?void 0:ng.domain()),a=$(),b=kh?kh:c?void 0:og.tickValues(),og=X(ig,Mi,a,b),rg=X(lg,Pi,a,b),pg=Y(jg,Ni,yh,Ah),qg=Y(kg,Oi,Hh,Jh),c||(Zi.scale(lg),Ef&&bj.scale(ig)),S()}function S(){Yf=Gb(),Zf=Hb(),$f=Hb(.98)}function T(a,b,d,e){var f=(yi?wf.time.scale():wf.scale.linear()).range([a,b]);if(f.orgDomain=function(){return f.domain()},d&&f.domain(d),c(e)&&(e=function(){return 0}),zi){var g,h=f;f=function(a){return h(a)+e(a)};for(g in h)f[g]=h[g];f.orgDomain=function(){return h.domain()},f.domain=function(a){return arguments.length?(h.domain(a),f):(a=h.domain(),[a[0],a[1]+1])}}return f}function U(a,b,c){var d=wf.scale.linear().range([a,b]);return c&&d.domain(c),d}function V(a){return"y2"===Z(a)?kg:jg}function W(a){return"y2"===Z(a)?ng:mg}function X(a,b,c,d){var e=(zi?Eb():wf.svg.axis()).scale(a).orient(b);return e.tickFormat(c).tickValues(d),zi?(e.tickCentered(eh),ve(gh)&&(gh=!1)):e.tickOffset=function(){var a=Bc(xf.data.targets),b=ig(a[1])-ig(a[0]);return b/zc()/2},zi&&e.categories(dh),e}function Y(a,b,c,d){return wf.svg.axis().scale(a).orient(b).tickFormat(c).ticks(d).outerTickSize(0)}function Z(a){return a in zg?zg[a]:"y"}function $(){var a=yi?Ji:zi?Tc:function(a){return 0>a?a.toFixed(0):a};return fh&&("function"==typeof fh?a=fh:yi&&(a=function(a){return a?Ii(fh)(a):""})),a}function _(a){var b;return"y"===a?b=wh:"y2"===a?b=Fh:"x"===a&&(b=rh),b}function ab(a){var b=_(a);return"string"==typeof b?b:b?b.text:null}function bb(a,b){var c=_(a);"string"==typeof c?"y"===a?wh=b:"y2"===a?Fh=b:"x"===a&&(rh=b):c&&(c.text=b)}function cb(a){return 10*Math.sin(Math.PI*(a/180))}function db(a){return 11.5-2.5*(a/15)}function eb(a,b,c){a.selectAll(".tick text").style("text-anchor","start"),b.selectAll(".tick text").attr("y",db(c)).attr("x",cb(c)).attr("transform","rotate("+c+")")}function fb(a,b){var c=_(a),d=c&&"object"==typeof c&&c.position?c.position:b;return{isInner:d.indexOf("inner")>=0,isOuter:d.indexOf("outer")>=0,isLeft:d.indexOf("left")>=0,isCenter:d.indexOf("center")>=0,isRight:d.indexOf("right")>=0,isTop:d.indexOf("top")>=0,isMiddle:d.indexOf("middle")>=0,isBottom:d.indexOf("bottom")>=0}}function gb(){return fb("x",_g?"inner-top":"inner-right")}function hb(){return fb("y",_g?"inner-right":"inner-top")}function ib(){return fb("y2",_g?"inner-right":"inner-top")}function jb(a){return"y2"===a?ib():"y"===a?hb():gb()}function kb(){return ab("x")}function lb(){return ab("y")}function mb(){return ab("y2")}function nb(a,b){return a?b.isLeft?0:b.isCenter?Pf/2:Pf:b.isBottom?-Rf:b.isMiddle?-Rf/2:0}function ob(a,b){return a?b.isLeft?"0.5em":b.isRight?"-0.5em":"0":b.isTop?"-0.5em":b.isBottom?"0.5em":"0"}function pb(a,b){return a?b.isLeft?"start":b.isCenter?"middle":"end":b.isBottom?"start":b.isMiddle?"middle":"end"}function qb(){return nb(!_g,gb())}function rb(){return nb(_g,hb())}function sb(){return nb(_g,ib())}function tb(){return ob(!_g,gb())}function ub(){return ob(_g,hb())}function vb(){return ob(_g,ib())}function wb(){var a=gb();return _g?a.isInner?"1.2em":-25-Cb("x"):a.isInner?"-0.5em":ph?ph-10:"3em"}function xb(){var a=hb();return _g?a.isInner?"-0.5em":"3em":a.isInner?"1.2em":-20-Cb("y")}function yb(){var a=ib();return _g?a.isInner?"1.2em":"-2.2em":a.isInner?"-0.5em":30+Cb("y2")}function zb(){return pb(!_g,gb())}function Ab(){return pb(_g,hb())}function Bb(){return pb(_g,ib())}function Cb(a){var b=0,c="x"===a?f.axisX:"y"===a?f.axisY:f.axisY2;return wf.selectAll("."+c+" .tick text").each(function(){var a=this.getBoundingClientRect();bb?30:b}function Db(){ej.select("."+f.axisX+" ."+f.axisXLabel).attr("x",qb).attr("dx",tb).attr("dy",wb).text(kb),ej.select("."+f.axisY+" ."+f.axisYLabel).attr("x",rb).attr("dx",ub).attr("dy",xb).attr("dy",xb).text(lb),ej.select("."+f.axisY2+" ."+f.axisY2Label).attr("x",sb).attr("dx",vb).attr("dy",yb).text(mb)}function Eb(){function a(a,b){a.attr("transform",function(a){return"translate("+(b(a)+p)+", 0)"})}function b(a,b){a.attr("transform",function(a){return"translate(0,"+b(a)+")"})}function c(a){var b=a[0],c=a[a.length-1];return c>b?[b,c]:[c,b]}function d(a){for(var b=[],c=Math.ceil(a[0]);c0&&b[0]>0&&b.unshift(b[0]-(b[1]-b[0])),b}function e(a){return a0)for(g=Rc(a),b=0;b=0}),0!==e.length)for(d=e[0],g&&i[d]&&i[d].forEach(function(a,b){i[d][b]=0>a?a:0}),c=1;c0||(i[d][b]+=+a)});return wf.min(Object.keys(i).map(function(a){return wf.min(i[a])}))}function Wb(a){var b,c,d,e,f,g,h=Cc(a),i=Pc(a);if(yg.length>0)for(g=Sc(a),b=0;b=0}),0!==e.length)for(d=e[0],g&&i[d]&&i[d].forEach(function(a,b){i[d][b]=a>0?a:0}),c=1;c+a||(i[d][b]+=+a)});return wf.max(Object.keys(i).map(function(a){return wf.max(i[a])}))}function Xb(a,c){var d,e,f,g,h,i,j,k,l=a.filter(function(a){return Z(a.id)===c}),m="y2"===c?Dh:uh,n="y2"===c?Ch:th,o=b(m)?m:Vb(l),p=b(n)?n:Wb(l),q="y2"===c?Eh:vh,r=ud()&&_g;return 0===l.length?"y2"===c?kg.domain():jg.domain():(o===p&&(0>o?p=0:o=0),d=Math.abs(p-o),e=f=g=r?0:.1*d,q&&(h=Math.max(Math.abs(o),Math.abs(p)),p=h-q,o=q-h),r&&(i=vd(o,p),j=ac(jg.range()),k=[i[0]/j,i[1]/j],f+=d*(k[1]/(1-k[0]-k[1])),g+=d*(k[0]/(1-k[0]-k[1]))),"y"===c&&zh&&(f=b(zh.top)?zh.top:e,g=b(zh.bottom)?zh.bottom:e),"y2"===c&&Ih&&(f=b(Ih.top)?Ih.top:e,g=b(Ih.bottom)?Ih.bottom:e),ae(l)&&!Rc(l)&&(g=o),[o-g,p+f])}function Yb(a){return nh?yi?re(nh):nh:wf.min(a,function(a){return wf.min(a.values,function(a){return a.x})})}function Zb(a){return mh?yi?re(mh):mh:wf.max(a,function(a){return wf.max(a.values,function(a){return a.x})})}function $b(a){var c,d,e,f,g=Bc(a),h=g[1]-g[0];return zi?d=0:ae(a)?(c=zc(),d=c>1?h/(c-1)/2:.5):d=.01*h,"object"==typeof oh&&we(oh)?(e=b(oh.left)?oh.left:d,f=b(oh.right)?oh.right:d):e=f="number"==typeof oh?oh:d,{left:e,right:f}}function _b(a){var b=[Yb(a),Zb(a)],c=b[0],d=b[1],e=$b(a),f=0,g=0;return(c||0===c)&&(f=yi?new Date(c.getTime()-e.left):c-e.left),(d||0===d)&&(g=yi?new Date(d.getTime()+e.right):d+e.right),[f,g]}function ac(a){return a[1]-a[0]}function bc(a){for(var b=0;bb?0:b-c}function hc(a){var b,c=fc(a),d="y"===a.axis?jg:kg;return b="y"===a.axis||"y2"===a.axis?_g?Rf:"start"in a?d(a.start):Rf:_g?"end"in a?ig(yi?re(a.end):a.end):Rf:Rf,c>b?0:b-c}function ic(a){return sg&&a===sg||we(tg)&&xe(tg,a)}function jc(a){return!ic(a)}function kc(a){return sg?sg:we(tg)?tg[a]:null}function lc(a,b){var c,d=b&&we(b)?Cc(b):[];return d.forEach(function(b){kc(b)===a&&(c=xf.data.xs[b])}),c}function mc(a,b){return a in xf.data.xs&&xf.data.xs[a]&&xf.data.xs[a][b]?xf.data.xs[a][b]:b}function nc(a){Object.keys(a).forEach(function(b){tg[b]=a[b]})}function oc(a){return 1===wf.set(Object.keys(a).map(function(b){return a[b]})).size()}function pc(a){var b;return a&&(b=wg[a.id],a.name=b?b:a.id),a}function qc(a,b){a.forEach(function(a){a.values.forEach(function(c,d){c.x=sc(b[d],a.id,d)}),xf.data.xs[a.id]=b})}function rc(a,b){a.forEach(function(a){b[a.id]&&qc([a],b[a.id])})}function sc(a,c,d){var e;return e=yi?a?a instanceof Date?a:re(a):re(mc(c,d)):Ai&&!zi?b(a)?+a:mc(c,d):d}function tc(a){var b,c,d=a[0],e={},f=[];for(b=1;b=0?xf.data.xs[c]=a.map(function(a){return a[f]}).filter(b):sg?(d=Object.keys(xf.data.xs),xf.data.xs[c]=d.length>0?xf.data.xs[d[0]]:void 0):we(tg)&&(xf.data.xs[c]=lc(f,xf.data.targets)):xf.data.xs[c]=a.map(function(a,b){return b})}),d.forEach(function(a){if(!xf.data.xs[a])throw new Error('x is not defined for id = "'+a+'".')}),c=d.map(function(b,c){var d=vg(b);return{id:d,id_org:b,values:a.map(function(a,e){var f=kc(b),g=a[f],h=sc(g,b,e);return Ai&&zi&&0===c&&g&&(0===e&&(dh=[]),dh.push(g)),("undefined"==typeof a[b]||xf.data.xs[b].length<=e)&&(h=void 0),{x:h,value:null===a[b]||isNaN(a[b])?null:+a[b],id:d}}).filter(function(a){return"undefined"!=typeof a.x})}}),c.forEach(function(a){var b;a.values=a.values.sort(function(a,b){var c=a.x||0===a.x?a.x:1/0,d=b.x||0===b.x?b.x:1/0;return c-d}),b=0,a.values.forEach(function(a){a.index=b++})}),Ag&&$d(Cc(c).filter(function(a){return!(a in Bg)}),Ag),c.forEach(function(a){cc(a.id_org,a)}),c}function wc(a){return{id:a.id,id_org:a.id_org,values:a.values.map(function(a){return{x:a.x,value:a.value,id:a.id}})}}function xc(a){return a>0&&xf.data.targets[0].values[a-1]?xf.data.targets[0].values[a-1].x:void 0}function yc(a){return a1?a.forEach(function(a){a.values.length>d&&(b=a,d=a.values.length)}):b=c?a[0]:null,b}function Bc(a){var b,c,d=Ac(a);return d?(b=d.values[0],c=d.values[d.values.length-1],[b.x,c.x]):[0,0]}function Cc(a){return a.map(function(a){return a.id})}function Dc(a){return a?"string"==typeof a?[a]:a:Cc(xf.data.targets)}function Ec(a,b){var c,d=Cc(a);for(c=0;c2){for(f=c-2,d=a[0],e=a[a.length-1],g=(e-d)/(f+1),j=[d],h=0;f>h;h++)i=+d+g*(h+1),j.push(yi?new Date(i):i);j.push(e)}return yi||(j=j.sort(function(a,b){return a-b})),j}function Lc(a){Ki=Ki.concat(a)}function Mc(a){Ki=Ki.filter(function(b){return a.indexOf(b)<0})}function Nc(a){Li=Li.concat(a)}function Oc(a){Li=Li.filter(function(b){return a.indexOf(b)<0})}function Pc(a){var b={};return a.forEach(function(a){b[a.id]=[],a.values.forEach(function(c){b[a.id].push(c.value)})}),b}function Qc(a,b){var c,d,e,f=Object.keys(a);for(c=0;ca})}function Sc(a){return Qc(a,function(a){return a>0})}function Tc(a){return a=0&&d===a[c].x;c--)e.push(a[c]);for(c=b;c0?g=h:f=h,g-f===1||0===f&&0===g?(e=[],(a[f].x||0===a[f].x)&&(e=e.concat(Gd(a,f))),(a[g].x||0===a[g].x)&&(e=e.concat(Gd(a,g))),Jd(e,b)):Hd(a,b,f,g)}function Id(a,b){var c;return c=a.map(function(a){return Hd(a.values,b)}),Jd(c,b)}function Jd(a,b){var c,d;return a.forEach(function(a){var e=ye(a,b);(c>e||!c)&&(c=e,d=a)}),d}function Kd(a,b){return wf.merge(a.map(function(a){return a.values})).filter(function(a){return a.x===b})}function Ld(a){var b=a.getBoundingClientRect(),c=[a.pathSegList.getItem(0),a.pathSegList.getItem(1)],d=c[0].x,e=Math.min(c[0].y,c[1].y);return{x:d,y:e,width:b.width,height:b.height}}function Md(){return Dg&&"desc"===Dg.toLowerCase()}function Nd(){return Dg&&"asc"===Dg.toLowerCase()}function Od(a){var b=Nd(),c=Md();return b||c?a.sort(function(a,c){var d=function(a,b){return a+Math.abs(b.value)},e=a.values.reduce(d,0),f=c.values.reduce(d,0);return b?f-e:e-f}):"function"==typeof Dg&&a.sort(Dg),a}function Pd(a,c){var d,e,f,g,h,i,j,k=ee(xf.data.targets),l=a.filter(function(a){return a&&b(a.value)});0!==l.length&&li&&(hj.html(oi(a,$(),wd(k),Hi)).style("display","block"),d=hj.property("offsetWidth"),e=hj.property("offsetHeight"),k?(g=Pf/2+c[0],i=Rf/2+c[1]+20):(_g?(f=q(),g=f+c[0]+100,h=g+d,j=r()-u(),i=ig(l[0].x)+20):(f=q(),g=f+t()+ig(l[0].x)+20,h=g+d,j=f+r()-u(),i=c[1]+15),h>j&&(g-=d+60),i+e>s()&&(i-=e+30)),hj.style("top",i+"px").style("left",g+"px"))}function Qd(){hj.style("display","none")}function Rd(a){var c=a.filter(function(a){return a&&b(a.value)});li&&(be(xf.data.targets)||ee(xf.data.targets)||ej.selectAll("line."+f.xgridFocus).style("visibility","visible").data([c[0]]).attr(_g?"y1":"x1",Cd).attr(_g?"y2":"x2",Cd))}function Sd(){ej.select("line."+f.xgridFocus).style("visibility","hidden")}function Td(a){return a.x||0===a.x?ig(a.x):null}function Ud(a){return V(a.id)(a.value)}function Vd(){var a,b,d={},e=0;return Ic(Fc(he)).forEach(function(f){for(a=0;a0&&(i+=g(b.values[f].value)-h)}),i}}function Zd(a,b){return Xh?Xh:b?2*a.tickOffset()*Yh/b:0}function $d(a,b){Dc(a).forEach(function(a){lj[a]=b===Bg[a],Bg[a]=b})}function _d(a,b){var c=!1;return a.forEach(function(a){Bg[a.id]===b&&(c=!0),a.id in Bg||"line"!==b||(c=!0)}),c}function ae(a){return _d(a,"bar")}function be(a){return _d(a,"scatter")}function ce(a){return _d(a,"pie")}function de(a){return _d(a,"donut")}function ee(a){return ce(a)||de(a)}function fe(a){var b="string"==typeof a?a:a.id;return!(b in Bg)||"line"===Bg[b]||"spline"===Bg[b]||"area"===Bg[b]||"area-spline"===Bg[b]}function ge(a){var b="string"==typeof a?a:a.id;return"spline"===Bg[b]||"area-spline"===Bg[b]}function he(a){var b="string"==typeof a?a:a.id;return"bar"===Bg[b]}function ie(a){var b="string"==typeof a?a:a.id;return"scatter"===Bg[b]}function je(a){var b="string"==typeof a?a:a.id;return"pie"===Bg[b]}function ke(a){var b="string"==typeof a?a:a.id;return"donut"===Bg[b]}function le(a){return je(a)||ke(a)}function me(a){return he(a)?a.values:[]}function ne(a){return fe(a)||ie(a)?a.values:[]}function oe(a){return he(a)||fe(a)?a.values:[]}function pe(a){return ke(a)&&fi||je(a)&&_h}function qe(a,b,c){var d=[];return function(e){var f,g=e.id||e;return a[g]instanceof Function?f=a[g](e):g in a?f=a[g]:(d.indexOf(g)<0&&d.push(g),f=b[d.indexOf(g)%b.length]),c instanceof Function?c(f,e):f}}function re(b){var c;try{c=ug?wf.time.format(ug).parse(b):new Date(b)}catch(d){a.console.error("Failed to parse x '"+b+"' to Date with format "+ug)}return c}function se(a,b){var c=wf.mouse(a),d=wf.select(a),e=1*d.attr("cx"),f=1*d.attr("cy");return Math.sqrt(Math.pow(e-c[0],2)+Math.pow(f-c[1],2))0}function xe(a,b){var c=!1;return Object.keys(a).forEach(function(d){a[d]===b&&(c=!0)}),c}function ye(a,b){var c="y"===Z(a.id)?jg:kg,d=_g?1:0,e=_g?0:1;return Math.pow(ig(a.x)-b[d],2)+Math.pow(c(a.value)-b[e],2)}function ze(a,b){var c=0;a.each(function(){++c}).each("end",function(){--c||b.apply(this,arguments)})}function Ae(a,b,c){Og(b,a.node()),ej.select("."+f.selectedCircles+ld(b.id)).selectAll("."+f.selectedCircle+"-"+c).data([b]).enter().append("circle").attr("class",function(){return Uc(f.selectedCircle,c)}).attr("cx",_g?Ud:Td).attr("cy",_g?Td:Ud).attr("stroke",function(){return Hi(b)}).attr("r",1.4*Vh).transition().duration(100).attr("r",Vh)}function Be(a,b,c){Pg(b,a.node()),ej.select("."+f.selectedCircles+ld(b.id)).selectAll("."+f.selectedCircle+"-"+c).transition().duration(100).attr("r",0).remove()}function Ce(a,b,c,d){a?Ae(b,c,d):Be(b,c,d)}function De(a,b){Og(b,a.node()),a.transition().duration(100).style("fill",function(){return wf.rgb(Hi(b)).darker(1)})}function Ee(a,b){Pg(b,a.node()),a.transition().duration(100).style("fill",function(){return Hi(b)})}function Fe(a,b,c,d){a?De(b,c,d):Ee(b,c,d)}function Ge(a){return a.filter(function(a){return b(a.value)})}function He(a,c){return(c?ej.selectAll("."+f.circles+ld(c)):ej).selectAll("."+f.circle+(b(a)?"-"+a:""))}function Ie(a,b){He(a,b).classed(f.EXPANDED,!0).attr("r",Uh)}function Je(a){He(a).filter(function(){return wf.select(this).classed(f.EXPANDED)}).classed(f.EXPANDED,!1).attr("r",Rh)}function Ke(a){return ej.selectAll("."+f.bar+(b(a)?"-"+a:""))}function Le(a){Ke(a).classed(f.EXPANDED,!0)}function Me(a){Ke(a).classed(f.EXPANDED,!1)}function Ne(a,b){var c=Re(a,b);return function(a,b){var d=c(a,b),e=_g?1:0,f=_g?0:1,g="M "+d[0][e]+","+d[0][f]+" L"+d[1][e]+","+d[1][f]+" L"+d[2][e]+","+d[2][f]+" L"+d[3][e]+","+d[3][f]+" z";return g}}function Oe(a,b){var c=Re(a,!1),d=b?Pe:Qe;return function(a,b){return d(c(a,b),a,this)}}function Pe(a,b){var c;return _g?(c=he(b)?4:6,a[2][1]+c*(b.value<0?-1:1)):a[0][0]+(a[2][0]-a[0][0])/2}function Qe(a,b,c){var d=c.getBoundingClientRect();return _g?(a[0][0]+a[2][0]+.6*d.height)/2:a[2][1]+(b.value<0?d.height:he(b)?-3:-6)}function Re(a,b){var c=a.__max__+1,d=Zd(og,c),e=Wd(d,c,a,!!b),f=Xd(!!b),g=Yd(a,!!b),h=b?W:V;return function(a,b){var c=h(a.id)(0),i=g(a,b)||c,j=e(a),k=f(a);return _g&&(a.value>0&&i>k||a.value<0&&k>i)&&(k=i),[[j,i],[j,k-(c-i)],[j+d,k-(c-i)],[j+d,i]]}}function Se(a,b,e,f){var g,h,i,j,k,l,m,n,o,p,q,r=-1,s="M",t=[];if(d(f))for(g=0;g=h;h+=u)s+=i(a[g-1],a[g],h,o)}r=a[g].x}return s}function Te(b){var c,d,e;if(ij=wf.select(zf),ij.empty())throw new Error('Bind element not found. Check the selector specified by "bindto" and existance of that element. Default "bindto" is "#chart".');if(ij.html("").classed("c3",!0),xf.data.xs={},xf.data.targets=vc(b),n(),R(),ig.domain(wf.extent(_b(xf.data.targets))),jg.domain(Xb(xf.data.targets,"y")),kg.domain(Xb(xf.data.targets,"y2")),lg.domain(ig.domain()),mg.domain(jg.domain()),ng.domain(kg.domain()),jj=ig.domain(),Zi.scale(lg),Ef&&bj.scale(ig),cj=ij.append("svg").attr("width",Pf+Mf.left+Mf.right).attr("height",Rf+Mf.top+Mf.bottom).on("mouseenter",Hf).on("mouseleave",If),dj=cj.append("defs"),dj.append("clipPath").attr("id",si).append("rect").attr("width",Pf).attr("height",Rf),dj.append("clipPath").attr("id",ti).append("rect").attr("x",B).attr("y",C).attr("width",H).attr("height",I),dj.append("clipPath").attr("id",ui).append("rect").attr("x",D).attr("y",E).attr("width",J).attr("height",K),ej=cj.append("g").attr("transform",Qi.main),fj=cj.append("g").attr("transform",Qi.context),gj=cj.append("g").attr("transform",Qi.legend),Sg||fj.style("visibility","hidden"),Vg||(gj.style("visibility","hidden"),Li=Cc(xf.data.targets)),hj=wf.select(zf).style("position","relative").append("div").style("position","absolute").style("pointer-events","none").style("z-index","10").style("display","none"),rf(Cc(xf.data.targets),{withTransform:!1,withTransitionForTransform:!1}),ah&&ej.append("g").attr("class",f.axisX).attr("clip-path",wi).attr("transform",Qi.x).append("text").attr("class",f.axisXLabel).attr("transform",_g?"rotate(-90)":"").style("text-anchor",zb),sh&&ej.append("g").attr("class",f.axisY).attr("clip-path",xi).attr("transform",Qi.y).append("text").attr("class",f.axisYLabel).attr("transform",_g?"":"rotate(-90)").style("text-anchor",Ab),Bh&&ej.append("g").attr("class",f.axisY2).attr("transform",Qi.y2).append("text").attr("class",f.axisY2Label).attr("transform",_g?"":"rotate(-90)").style("text-anchor",Bb),d=ej.append("g").attr("clip-path",vi).attr("class",f.grid),Kh&&d.append("g").attr("class",f.xgrids),we(Mh)&&d.append("g").attr("class",f.xgridLines),Sh&&d.append("g").attr("class",f.xgridFocus).append("line").attr("class",f.xgridFocus),Nh&&d.append("g").attr("class",f.ygrids),we(Oh)&&d.append("g").attr("class",f.ygridLines),ej.append("g").attr("clip-path",vi).attr("class",f.regions),ej.append("g").attr("clip-path",vi).attr("class",f.chart),c=ej.select("."+f.chart).append("g").attr("class",f.eventRects).style("fill-opacity",0).style("cursor",Ef?_g?"ns-resize":"ew-resize":null),ej.select("."+f.chart).append("g").attr("class",f.chartBars),ej.select("."+f.chart).append("g").attr("class",f.chartLines),ej.select("."+f.chart).append("g").attr("class",f.chartArcs).attr("transform",Qi.arc).append("text").attr("class",f.chartArcsTitle).style("text-anchor","middle").text(Rb()),ej.select("."+f.chart).append("g").attr("class",f.chartTexts),Ef&&ej.insert("rect",Gf?null:"g."+f.grid).attr("class",f.zoomRect).attr("width",Pf).attr("height",Rf).style("opacity",0).style("cursor",_g?"ns-resize":"ew-resize").call(bj).on("dblclick.zoom",null),qh&&Zi.extent("function"!=typeof qh?qh:qh(_b())),fj.append("g").attr("clip-path",vi).attr("class",f.chart),fj.select("."+f.chart).append("g").attr("class",f.chartBars),fj.select("."+f.chart).append("g").attr("class",f.chartLines),fj.append("g").attr("clip-path",vi).attr("class",f.brush).call(Zi).selectAll("rect").attr(_g?"width":"height",_g?Qf:Sf),fj.append("g").attr("class",f.axisX).attr("transform",Qi.subx).attr("clip-path",_g?"":wi),ef(xf.data.targets),_g?ej.select("."+f.axisX).style("opacity",0).call(og):(ej.select("."+f.axisY).style("opacity",0).call(pg),ej.select("."+f.axisY2).style("opacity",0).call(qg)),n(),R(),cf(),m(!1),$e({withTransform:!0,withUpdateXDomain:!0,withUpdateOrgXDomain:!0,withTransitionForAxis:!1}),pi){if(yi&&"string"==typeof qi){for(qi=re(qi),e=0;e0){d=[];for(var g in wg)for(c=0;cg&&h>c&&d>i&&j>d):"path"===this.nodeName&&(m=Ld(this),c=m.x,d=m.y,e=m.width,k=m.height,l=Fe,q=!(c>h||g>c+e||d>j||i>d+k)),q^p&&(n.classed(f.INCLUDED,!p),n.classed(f.SELECTED,!o),l(!o,n,a,b))}))}function Ye(a){ee(xf.data.targets)||Hg&&(Bi=a,ej.select("."+f.chart).append("rect").attr("class",f.dragarea).style("opacity",.1),Ci=!0,Qg())}function Ze(){ee(xf.data.targets)||Hg&&(ej.select("."+f.dragarea).transition().duration(100).style("opacity",0).remove(),ej.selectAll("."+f.shape).classed(f.INCLUDED,!1),Ci=!1,Rg())}function $e(a){var c,e,g,h,i,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,M,N,O,P,Q,R,S,T,U,V=Vd(),W=ee(xf.data.targets),X=Ic(xf.data.targets);if(a=d(a)?a:{},A=d(a.withY)?a.withY:!0,B=d(a.withSubchart)?a.withSubchart:!0,C=d(a.withTransition)?a.withTransition:!0,F=d(a.withTransform)?a.withTransform:!1,G=d(a.withUpdateXDomain)?a.withUpdateXDomain:!1,H=d(a.withUpdateOrgXDomain)?a.withUpdateOrgXDomain:!1,I=d(a.withLegend)?a.withLegend:!1,D=d(a.withTransitionForExit)?a.withTransitionForExit:C,E=d(a.withTransitionForAxis)?a.withTransitionForAxis:C,P=C?Lf:0,Q=D?P:0,R=E?P:0,c=ej.select("."+f.axisX).style("opacity",W?0:1),g=ej.select("."+f.axisY).style("opacity",W?0:1),h=ej.select("."+f.axisY2).style("opacity",W?0:1),e=fj.select("."+f.axisX).style("opacity",W?0:1),O={axisX:c.transition().duration(R),axisY:g.transition().duration(R),axisY2:h.transition().duration(R),axisSubX:e.transition().duration(R)},I&&Vg&&rf(Cc(xf.data.targets),a,O),zi&&(0!==X.length&&H&&G||ig.domain([0,c.selectAll(".tick").size()])),X.length&&(H&&(ig.domain(wf.extent(_b(X))),jj=ig.domain(),Ef&&bj.scale(ig).updateScaleExtent(),lg.domain(ig.domain()),Zi.scale(lg)),G&&(ig.domain(Zi.empty()?jj:Zi.extent()),Ef&&bj.scale(ig).updateScaleExtent()),kh||!jh&&!ih||(S=Kc(Jc(X),ih),og.tickValues(S),rg.tickValues(S))),jg.domain(Xb(X,"y")),kg.domain(Xb(X,"y2")),O.axisX.call(og),O.axisY.call(pg),O.axisY2.call(qg),O.axisSubX.call(rg),G&&X.length)if(gh&&S){for(T=1;T=0&&wf.select(this).style("display",b%U?"none":"block")})}else wf.selectAll("."+f.axisX+" .tick text").style("display","block");if(!_g&&lh&&eb(c,O.axisX,lh),J=Ne(V),M=Oe(V,!0),N=Oe(V,!1),Db(),mg.domain(jg.domain()),ng.domain(kg.domain()),hj.style("display","none"),o(),ej.select("line."+f.xgridFocus).style("visibility","hidden"),Kh){if("year"===Lh){j=[];for(var Y=_b(),Z=Y[0].getFullYear(),$=Y[1].getFullYear(),_=Z;$>=_;_++)j.push(new Date(_+"-01-01 00:00:00"))}else j=ig.ticks(10);i=ej.select("."+f.xgrids).selectAll("."+f.xgrid).data(j),i.enter().append("line").attr("class",f.xgrid),i.attr("x1",_g?0:function(a){return ig(a)-og.tickOffset()}).attr("x2",_g?Pf:function(a){return ig(a)-og.tickOffset()}).attr("y1",_g?function(a){return ig(a)-og.tickOffset()}:Mf.top).attr("y2",_g?function(a){return ig(a)-og.tickOffset()}:Rf).style("opacity",function(){return+wf.select(this).attr(_g?"y1":"x1")===(_g?Rf:0)?0:1}),i.exit().remove()}we(Mh)&&(k=ej.select("."+f.xgridLines).selectAll("."+f.xgridLine).data(Mh),l=k.enter().append("g").attr("class",function(a){return f.xgridLine+(a.class?a.class:"")}),l.append("line").style("opacity",0),l.append("text").attr("text-anchor","end").attr("transform",_g?"":"rotate(-90)").attr("dx",_g?0:-Mf.top).attr("dy",-5).style("opacity",0),k.select("line").transition().duration(P).attr("x1",_g?0:Dd).attr("x2",_g?Pf:Dd).attr("y1",_g?Dd:Mf.top).attr("y2",_g?Dd:Rf).style("opacity",1),k.select("text").transition().duration(P).attr("x",_g?Pf:0).attr("y",Dd).text(function(a){return a.text}).style("opacity",1),k.exit().transition().duration(P).style("opacity",0).remove()),A&&Nh&&(m=ej.select("."+f.ygrids).selectAll("."+f.ygrid).data(jg.ticks(Ph)),m.enter().append("line").attr("class",f.ygrid),m.attr("x1",_g?jg:0).attr("x2",_g?jg:Pf).attr("y1",_g?0:jg).attr("y2",_g?Rf:jg),m.exit().remove()),A&&we(Oh)&&(n=ej.select("."+f.ygridLines).selectAll("."+f.ygridLine).data(Oh),p=n.enter().append("g").attr("class",function(a){return f.ygridLine+(a.class?a.class:"")}),p.append("line").style("opacity",0),p.append("text").attr("text-anchor","end").attr("transform",_g?"rotate(-90)":"").attr("dx",_g?0:-Mf.top).attr("dy",-5).style("opacity",0),n.select("line").transition().duration(P).attr("x1",_g?Ed:0).attr("x2",_g?Ed:Pf).attr("y1",_g?0:Ed).attr("y2",_g?Rf:Ed).style("opacity",1),n.select("text").transition().duration(P).attr("x",_g?0:Pf).attr("y",Ed).text(function(a){return a.text}).style("opacity",1),n.exit().transition().duration(P).style("opacity",0).remove()),s=ej.select("."+f.regions).selectAll("rect."+f.region).data(ki),s.enter().append("rect").style("fill-opacity",0),s.attr("class",ed).attr("x",ec).attr("y",fc).attr("width",gc).attr("height",hc).transition().duration(P).style("fill-opacity",function(a){return b(a.opacity)?a.opacity:.1}),s.exit().transition().duration(P).style("fill-opacity",0).remove(),r=ej.selectAll("."+f.bars).selectAll("."+f.bar).data(me),r.enter().append("path").attr("d",J).style("stroke","none").style("opacity",0).style("fill",function(a){return Hi(a)}).attr("class",ad),r.style("opacity",qd).transition().duration(P).attr("d",J).style("opacity",1),r.exit().transition().duration(Q).style("opacity",0).remove(),t=ej.selectAll("."+f.texts).selectAll("."+f.text).data(oe),t.enter().append("text").attr("class",Vc).attr("text-anchor",function(a){return _g?a.value<0?"end":"start":"middle"}).style("stroke","none").style("fill-opacity",0),t.text(function(a){return Bd(a.id)(a.value)}).style("fill-opacity",rd).transition().duration(P).attr("x",M).attr("y",N).style("fill-opacity",td),t.exit().transition().duration(Q).style("fill-opacity",0).remove(),ej.selectAll("."+f.line).style("opacity",qd).transition().duration(P).attr("d",$i).style("opacity",1),ej.selectAll("."+f.area).style("opacity",0).transition().duration(P).attr("d",_i).style("opacity",kj),q=ej.selectAll("."+f.circles).selectAll("."+f.circle).data(ne),q.enter().append("circle").attr("class",$c).style("opacity",0).attr("r",Rh),q.style("opacity",qd).transition().duration(P).style("opacity",sd).attr("cx",_g?Ud:Td).attr("cy",_g?Td:Ud),q.exit().remove(),ej.each(function(){Fi=!0}).selectAll("."+f.chartArc).select("."+f.arc).attr("transform",F?"scale(0)":"").style("opacity",function(a){return a===this._current?0:1}).transition().duration(P).attrTween("d",function(a){var b,c=Fb(a);return c?(b=wf.interpolate(this._current,c),this._current=b(0),function(a){return Ib(b(a),!0)}):function(){return"M 0 0"}}).attr("transform",F?"scale(1)":"").style("opacity",1).call(ze,function(){Fi=!1}),ej.selectAll("."+f.chartArc).select("text").attr("transform",Jb).style("opacity",0).transition().duration(P).text(Mb).style("opacity",function(a){return Gc(a.data.id)&&le(a.data)?1:0}),ej.select("."+f.chartArcsTitle).style("opacity",de(xf.data.targets)?1:0),Sg&&(null!==wf.event&&"zoom"===wf.event.type&&Zi.extent(ig.orgDomain()).update(),B&&(!_g&&lh&&eb(e,O.axisSubX,lh),Zi.empty()||Zi.extent(ig.orgDomain()).update(),K=Ne(V,!0),u=fj.selectAll("."+f.bars).selectAll("."+f.bar).data(me),u.enter().append("path").attr("d",K).style("stroke","none").style("fill",function(a){return Hi(a)}).attr("class",ad),u.style("opacity",qd).transition().duration(P).attr("d",K).style("opacity",1),u.exit().transition().duration(P).style("opacity",0).remove(),fj.selectAll("."+f.line).style("opacity",qd).transition().duration(P).attr("d",aj).style("opacity",1))),ej.selectAll("."+f.selectedCircles).filter(function(a){return he(a)}).selectAll("circle").remove(),ej.selectAll("."+f.selectedCircle).transition().duration(P).attr("cx",_g?Ud:Td).attr("cy",_g?Td:Ud),v=ej.select("."+f.eventRects),we(tg)&&!oc(tg)?(v.classed(f.eventRectsMultiple)||v.classed(f.eventRectsMultiple,!0).classed(f.eventRectsSingle,!1).selectAll("."+f.eventRect).remove(),w=ej.select("."+f.eventRects).selectAll("."+f.eventRect).data([0]),Ve(w.enter()),w.attr("x",0).attr("y",0).attr("width",Pf).attr("height",Rf)):(v.classed(f.eventRectsSingle)||v.classed(f.eventRectsMultiple,!1).classed(f.eventRectsSingle,!0).selectAll("."+f.eventRect).remove(),Ai&&!zi?(z=function(a,b){var c=xc(b),d=yc(b),e=xf.data.xs[a.id][b];return(ig(d?d:e+50)-ig(c?c:e-50))/2},y=function(a,b){var c=xc(b),d=xf.data.xs[a.id][b];return(ig(d)+ig(c?c:d-50))/2}):(z=L(),y=function(a){return ig(a.x)-z/2}),x=Ac(xf.data.targets),ej.select("."+f.eventRects).datum(x?x.values:[]),w=ej.select("."+f.eventRects).selectAll("."+f.eventRect).data(function(a){return a}),Ue(w.enter()),w.attr("class",fd).attr("x",_g?0:y).attr("y",_g?y:0).attr("width",_g?Pf:z).attr("height",_g?z:Rf),w.exit().remove()),Cc(xf.data.targets).forEach(function(a){lj[a]=!0})}function _e(){$e({withTransition:!1,withY:!1,withSubchart:!1,withUpdateXDomain:!0})}function af(){return"mousemove"===wf.event.sourceEvent.type&&bj.altDomain?(ig.domain(bj.altDomain),void bj.scale(ig).updateScaleExtent()):(zi&&ig.orgDomain()[0]===jj[0]&&ig.domain([jj[0]-1e-10,ig.orgDomain()[1]]),$e({withTransition:!1,withY:!1,withSubchart:!1}),void("mousemove"===wf.event.sourceEvent.type&&(Di=!0)))}function bf(){function a(){b.forEach(function(a){a()})}var b=[];return a.add=function(a){b.push(a)},a}function cf(){cj.attr("width",Tf).attr("height",Uf),cj.select("#"+si).select("rect").attr("width",Pf).attr("height",Rf),cj.select("#"+ti).select("rect").attr("x",B).attr("y",C).attr("width",H).attr("height",I),cj.select("#"+ui).select("rect").attr("x",D).attr("y",E).attr("width",J).attr("height",K),cj.select("."+f.zoomRect).attr("width",Pf).attr("height",Rf),ij.style("max-height",Uf+"px")}function df(a){a=a||{},a.withTransition=d(a.withTransition)?a.withTransition:!0,a.withTransform=d(a.withTransform)?a.withTransform:!1,a.withLegend=d(a.withLegend)?a.withLegend:!1,a.withUpdateXDomain=!0,a.withUpdateOrgXDomain=!0,a.withTransitionForExit=!1,n(),R(),cf(),m(a.withTransition),$e(a)}function ef(a){var b,c,d,e,g,h,i,j,k,l,m,n;i=ej.select("."+f.chartTexts).selectAll("."+f.chartText).data(a).attr("class",hd),j=i.enter().append("g").attr("class",hd).style("pointer-events","none"),j.append("g").attr("class",Wc).style("fill",function(a){return Hi(a)}),e=ej.select("."+f.chartBars).selectAll("."+f.chartBar).data(a).attr("class",jd),d=e.enter().append("g").attr("class",jd).style("pointer-events","none"),d.append("g").attr("class",bd).style("fill",function(a){return Hi(a)}).style("stroke","none").style("cursor",function(a){return Jg(a)?"pointer":null}),c=ej.select("."+f.chartLines).selectAll("."+f.chartLine).data(a).attr("class",id),b=c.enter().append("g").attr("class",id).style("pointer-events","none"),b.append("path").attr("class",Zc).style("opacity",0).style("stroke",function(a){return Hi(a)}),b.append("path").attr("class",dd).style("opacity",function(){return kj=+wf.select(this).style("opacity"),0}).style("fill",function(a){return Hi(a)}),b.append("g").attr("class",function(a){return Uc(f.selectedCircles,a.id)}),b.append("g").attr("class",_c).style("fill",function(a){return Hi(a)}).style("cursor",function(a){return Jg(a)?"pointer":null}),a.forEach(function(a){ej.selectAll("."+f.selectedCircles+ld(a.id)).selectAll("."+f.selectedCircle).each(function(b,c){b.value=a.values[c].value})}),h=ej.select("."+f.chartArcs).selectAll("."+f.chartArc).data(_f(a)).attr("class",kd),g=h.enter().append("g").attr("class",kd),g.append("path").attr("class",cd).style("opacity",0).style("fill",function(a){return Hi(a.data)}).style("cursor",function(a){return Jg(a)?"pointer":null}).each(function(a){this._current=a}).on("mouseover",function(a,b){var c,d,e;Fi||(c=Fb(a),d=Lb(c),e=Tb(),Nb(c.data.id),mf(c.data.id),e(d,b))}).on("mousemove",function(a){var b=Fb(a),c=Lb(b),d=[c];Pd(d,wf.mouse(this))}).on("mouseout",function(a,b){var c,d,e;Fi||(c=Fb(a),d=Lb(c),e=Ub(),Ob(c.data.id),of(),Qd(),e(d,b))}).on("click",function(a,b){var c=Fb(a),d=Lb(c),e=Sb();e(d,b)}),g.append("text").attr("dy",".35em").style("opacity",0).style("text-anchor","middle").style("pointer-events","none"),Sg&&(n=fj.select("."+f.chartBars).selectAll("."+f.chartBar).data(a).attr("class",jd),m=n.enter().append("g").attr("class",jd),m.append("g").attr("class",bd).style("fill",function(a){return Hi(a)}),l=fj.select("."+f.chartLines).selectAll("."+f.chartLine).data(a).attr("class",id),k=l.enter().append("g").attr("class",id),k.append("path").attr("class",Zc).style("opacity",0).style("stroke",function(a){return Hi(a)})),cj.selectAll("."+f.target).filter(function(a){return Gc(a.id)}).transition().style("opacity",1)}function ff(a,b){(b.type||b.types)&&a.forEach(function(a){b.types?$d(a.id,b.types[a.id]):$d(a.id,b.type)}),xf.data.targets.forEach(function(b){for(var c=0;cf&&(f=(l-k)/2,x=0,D++)),C[a]=D,B[D]=f,y[a]=x,x+=k}var f,g,h=b.getBoundingClientRect(),i=10*Math.ceil((h.width+t)/10),j=10*Math.ceil((h.height+s)/10),k=Ri?j:i,l=Ri?Q():P();return d&&(x=0,D=0,u=0,v=0),Vg&&!Hc(c)?void(z[c]=A[c]=C[c]=y[c]=0):(z[c]=i,A[c]=j,(!u||i>=u)&&(u=i),(!v||j>=v)&&(v=j),g=Ri?v:u,void($g?(Object.keys(z).forEach(function(a){z[a]=u}),Object.keys(A).forEach(function(a){A[a]=v}),f=(l-g*a.length)/2,w>f?(x=0,D=0,a.forEach(function(a){e(a)})):e(c,!0)):e(c)))}var g,h,i,j,k,l,o,p,q,r,s=4,t=26,u=0,v=0,w=10,x=0,y={},z={},A={},B=[0],C={},D=0;b=b||{},p=d(b.withTransition)?b.withTransition:!0,q=d(b.withTransitionForTransform)?b.withTransitionForTransform:!0,r=d(b.withTransformAll)?b.withTransformAll:!0,Ri?(g=function(a){return u*(.2+C[a])},j=function(a){return B[C[a]]+y[a]}):(g=function(a){return B[C[a]]+y[a]},j=function(a){return v*(.2+C[a])}),h=function(a,b){return g(a,b)+14},k=function(a,b){return j(a,b)+9},i=function(a,b){return g(a,b)-4},l=function(a,b){return j(a,b)-7},o=gj.selectAll("."+f.legendItem).data(a).enter().append("g").attr("class",function(a){return Uc(f.legendItem,a)}).style("visibility",function(a){return Hc(a)?"visible":"hidden"}).style("cursor","pointer").on("click",function(a){"function"==typeof Xg?Xg(a):xf.toggle(a)}).on("mouseover",function(a){Fi||xf.focus(a),"function"==typeof Yg&&Yg(a)}).on("mouseout",function(a){Fi||xf.revert(),"function"==typeof Zg&&Zg(a)}),o.append("text").text(function(a){return d(wg[a])?wg[a]:a}).each(function(a,b){e(this,a,0===b)}).style("pointer-events","none").attr("x",Ri?h:-200).attr("y",Ri?-200:k),o.append("rect").attr("class",f.legendItemEvent).style("fill-opacity",0).attr("x",Ri?i:-200).attr("y",Ri?-200:l).attr("width",function(a){return z[a]}).attr("height",function(a){return A[a]}),o.append("rect").attr("class",f.legendItemTile).style("pointer-events","none").style("fill",function(a){return Hi(a)}).attr("x",Ri?h:-200).attr("y",Ri?-200:j).attr("width",10).attr("height",10),gj.selectAll("text").data(a).text(function(a){return d(wg[a])?wg[a]:a}).each(function(a,b){e(this,a,0===b)}).transition().duration(p?250:0).attr("x",h).attr("y",k),gj.selectAll("rect."+f.legendItemEvent).data(a).transition().duration(p?250:0).attr("x",i).attr("y",l),gj.selectAll("rect."+f.legendItemTile).data(a).transition().duration(p?250:0).attr("x",g).attr("y",j),N(u),O(v),M(D),n(),R(),cf(),r&&m(q,c)}function sf(a){return Ec(xf.data.targets,a.id)}function tf(a){return"data"in a&&Ec(xf.data.targets,a.data.id)}function uf(a){var b=a&&a.value?a.value:null,c=a&&a["class"]?a["class"]:null;return b?function(a){return a.value!==b}:c?function(a){return a["class"]!==c}:function(){return!0}}function vf(a,b,c){var d=!ee(xf.data.targets);Fi=!1,$d(a,b),df(c||{withTransitionForAxis:d})}var wf=a.d3?a.d3:a.require?a.require("d3"):void 0,xf={data:{},axis:{},legend:{}},yf={},zf=h(["bindto"],"#chart"),Af=h(["size","width"]),Bf=h(["size","height"]),Cf=h(["padding","left"]),Df=h(["padding","right"]),Ef=h(["zoom","enabled"],!1),Ff=h(["zoom","extent"]),Gf=h(["zoom","privileged"],!1),Hf=h(["onenter"],function(){}),If=h(["onleave"],function(){}),Jf=h(["onresize"],function(){}),Kf=h(["onresized"],function(){}),Lf=h(["transition","duration"],350);g("data","data is required in config");var Mf,Nf,Of,Pf,Qf,Rf,Sf,Tf,Uf,Vf,Wf,Xf,Yf,Zf,$f,_f,ag,bg,cg,dg,eg,fg,gg,hg,ig,jg,kg,lg,mg,ng,og,pg,qg,rg,sg=h(["data","x"]),tg=h(["data","xs"],{}),ug=h(["data","x_format"]),vg=h(["data","id_converter"],function(a){return a}),wg=h(["data","names"],{}),xg=h(["data","classes"],{}),yg=h(["data","groups"],[]),zg=h(["data","axes"],{}),Ag=h(["data","type"]),Bg=h(["data","types"],{}),Cg=h(["data","labels"],{}),Dg=h(["data","order"]),Eg=h(["data","regions"],{}),Fg=h(["data","color"]),Gg=h(["data","colors"],{}),Hg=h(["data","selection","enabled"],!1),Ig=h(["data","selection","grouped"],!1),Jg=h(["data","selection","isselectable"],function(){return!0}),Kg=h(["data","selection","multiple"],!0),Lg=h(["data","onclick"],function(){}),Mg=h(["data","onenter"],function(){}),Ng=h(["data","onleave"],function(){}),Og=h(["data","onselected"],function(){}),Pg=h(["data","onunselected"],function(){}),Qg=h(["data","ondragstart"],function(){}),Rg=h(["data","ondragend"],function(){}),Sg=h(["subchart","show"],!1),Tg=h(["subchart","size","height"],60),Ug=h(["color","pattern"],[]),Vg=h(["legend","show"],!0),Wg=h(["legend","position"],"bottom"),Xg=h(["legend","item","onclick"]),Yg=h(["legend","item","onmouseover"]),Zg=h(["legend","item","onmouseout"]),$g=h(["legend","equally"],!1),_g=h(["axis","rotated"],!1),ah=h(["axis","x","show"],!0),bh=h(["axis","x","type"],"indexed"),ch=h(["axis","x","localtime"],!0),dh=h(["axis","x","categories"],[]),eh=h(["axis","x","tick","centered"],!1),fh=h(["axis","x","tick","format"]),gh=h(["axis","x","tick","culling"],{}),hh=h(["axis","x","tick","culling","max"],10),ih=h(["axis","x","tick","count"]),jh=h(["axis","x","tick","fit"],!0),kh=h(["axis","x","tick","values"],null),lh=h(["axis","x","tick","rotate"]),mh=h(["axis","x","max"],null),nh=h(["axis","x","min"],null),oh=h(["axis","x","padding"],{}),ph=h(["axis","x","height"]),qh=h(["axis","x","default"]),rh=h(["axis","x","label"],{}),sh=h(["axis","y","show"],!0),th=h(["axis","y","max"]),uh=h(["axis","y","min"]),vh=h(["axis","y","center"]),wh=h(["axis","y","label"],{}),xh=h(["axis","y","inner"],!1),yh=h(["axis","y","tick","format"]),zh=h(["axis","y","padding"],{}),Ah=h(["axis","y","ticks"],10),Bh=h(["axis","y2","show"],!1),Ch=h(["axis","y2","max"]),Dh=h(["axis","y2","min"]),Eh=h(["axis","y2","center"]),Fh=h(["axis","y2","label"],{}),Gh=h(["axis","y2","inner"],!1),Hh=h(["axis","y2","tick","format"]),Ih=h(["axis","y2","padding"],{}),Jh=h(["axis","y2","ticks"],10),Kh=h(["grid","x","show"],!1),Lh=h(["grid","x","type"],"tick"),Mh=h(["grid","x","lines"],[]),Nh=h(["grid","y","show"],!1),Oh=h(["grid","y","lines"],[]),Ph=h(["grid","y","ticks"],10),Qh=h(["point","show"],!0),Rh=Qh?h(["point","r"],2.5):0,Sh=h(["point","focus","line","enabled"],!0),Th=h(["point","focus","expand","enabled"],!0),Uh=h(["point","focus","expand","r"],Th?4:Rh),Vh=h(["point","focus","select","r"],8),Wh=h(["line","connect_null"],!1),Xh=h(["bar","width"]),Yh=h(["bar","width","ratio"],.6),Zh=h(["pie","label","show"],!0),$h=h(["pie","label","format"]),_h=h(["pie","expand"],!0),ai=h(["pie","onclick"],function(){}),bi=h(["pie","onmouseover"],function(){}),ci=h(["pie","onmouseout"],function(){}),di=h(["donut","label","show"],!0),ei=h(["donut","label","format"]),fi=h(["donut","expand"],!0),gi=h(["donut","title"],""),hi=h(["donut","onclick"],function(){}),ii=h(["donut","onmouseover"],function(){}),ji=h(["donut","onmouseout"],function(){}),ki=h(["regions"],[]),li=h(["tooltip","show"],!0),mi=h(["tooltip","format","title"]),ni=h(["tooltip","format","value"]),oi=h(["tooltip","contents"],function(a,b,c,d){var e,g,h,i,j,k=mi?mi:b,l=ni?ni:c;for(g=0;g"+(h||0===h?""+h+"":"")),j=a[g].name,i=l(a[g].value,a[g].ratio,a[g].id),e+="",e+=""+j+"",e+=""+i+"",e+="");return e+""}),pi=h(["tooltip","init","show"],!1),qi=h(["tooltip","init","x"],0),ri=h(["tooltip","init","position"],{top:"0px",left:"50px"}),si=("string"==typeof zf?zf.replace("#",""):zf.id)+"-clip",ti=si+"-xaxis",ui=si+"-yaxis",vi=i(si),wi=i(ti),xi=i(ui),yi="timeseries"===bh,zi="categorized"===bh,Ai=!yi&&(sg||we(tg)),Bi=null,Ci=!1,Di=!1,Ei=!1,Fi=!1,Gi=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],Hi=qe(Gg,we(Ug)?Ug:Gi,Fg),Ii=ch?wf.time.format:wf.time.format.utc,Ji=function(){var a=[[Ii("%Y/%-m/%-d"),function(){return!0}],[Ii("%-m/%-d"),function(a){return a.getMonth()}],[Ii("%-m/%-d"),function(a){return 1!==a.getDate()}],[Ii("%-m/%-d"),function(a){return a.getDay()&&1!==a.getDate()}],[Ii("%I %p"),function(a){return a.getHours()}],[Ii("%I:%M"),function(a){return a.getMinutes()}],[Ii(":%S"),function(a){return a.getSeconds()}],[Ii(".%L"),function(a){return a.getMilliseconds()}]];return function(b){for(var c=a.length-1,d=a[c];!d[1](b);)d=a[--c];return d[0](b)}}(),Ki=[],Li=[],Mi=_g?"left":"bottom",Ni=_g?xh?"top":"bottom":xh?"right":"left",Oi=_g?Gh?"bottom":"top":Gh?"left":"right",Pi=_g?"left":"bottom",Qi={main:function(){return"translate("+Mf.left+","+Mf.top+")"},context:function(){return"translate("+Nf.left+","+Nf.top+")"},legend:function(){return"translate("+Of.left+","+Of.top+")"},x:function(){return"translate(0,"+(_g?0:Rf)+")"},y:function(){return"translate(0,"+(_g?Rf:0)+")"},y2:function(){return"translate("+(_g?0:Pf)+","+(_g?1:0)+")"},subx:function(){return"translate(0,"+(_g?0:Sf)+")"},arc:function(){return"translate("+Pf/2+","+Rf/2+")"}},Ri="right"===Wg,Si=0,Ti=0,Ui=0,Vi=.15,Wi=30,Xi=_g&&!ah?0:30,Yi=5;_f=wf.layout.pie().value(function(a){return a.values.reduce(function(a,b){return a+b.value},0)});var Zi,$i=function(){var a=wf.svg.line().x(_g?function(a){return V(a.id)(a.value)}:Cd).y(_g?Cd:function(a){return V(a.id)(a.value)});return Wh||(a=a.defined(function(a){return null!=a.value})),function(b){var c,d,e=Wh?Ge(b.values):b.values;return fe(b)?(a.interpolate(ge(b)?"cardinal":"linear"),Eg[b.id]?Se(e,ig,V(b.id),Eg[b.id]):a(e)):(c=e[0]?ig(e[0].x):0,d=e[0]?V(b.id)(e[0].value):0,_g?"M "+d+" "+c:"M "+c+" "+d)}}(),_i=function(){var a;return a=_g?wf.svg.area().x0(function(a){return V(a.id)(0)}).x1(function(a){return V(a.id)(a.value)}).y(Cd):wf.svg.area().x(Cd).y0(function(a){return V(a.id)(0)}).y1(function(a){return V(a.id)(a.value)}),function(b){var c,d,e=Ge(b.values);return _d([b],"area")||_d([b],"area-spline")?(a.interpolate(ge(b)?"cardinal":"linear"),a(e)):(c=e[0]?ig(e[0].x):0,d=e[0]?V(b.id)(e[0].value):0,_g?"M "+d+" "+c:"M "+c+" "+d)}}(),aj=function(){var a=wf.svg.line().x(_g?function(a){return W(a.id)(a.value)}:Fd).y(_g?Fd:function(a){return W(a.id)(a.value)});return function(b){var c=Ge(b.values);return fe(b)?a(c):"M "+lg(c[0].x)+" "+W(b.id)(c[0].value)}}(),bj=function(){};Zi=wf.svg.brush().on("brush",_e),Zi.update=function(){return fj&&fj.select("."+f.brush).call(this),this},Zi.scale=function(a){return _g?this.y(a):this.x(a)},Ef&&(bj=wf.behavior.zoom().on("zoomstart",function(){bj.altDomain=wf.event.sourceEvent.altKey?ig.orgDomain():null}).on("zoom",Ef?af:null),bj.scale=function(a){return _g?this.y(a):this.x(a)},bj.orgScaleExtent=function(){var a=Ff?Ff:[1,10];return[a[0],Math.max(zc()/a[1],a[1])]},bj.updateScaleExtent=function(){var a=ac(ig.orgDomain())/ac(jj),b=this.orgScaleExtent();return this.scaleExtent([b[0]*a,b[1]*a]),this});var cj,dj,ej,fj,gj,hj,ij,jj,kj,lj={};if(xf.focus=function(a){function b(a){Ic(a).transition().duration(100).style("opacity",1)}var c=cj.selectAll(md(a)),d=c.filter(sf),e=c.filter(tf);xf.revert(),xf.defocus(),b(d.classed(f.focused,!0)),b(e),ee(xf.data.targets)&&Nb(a,!0),mf(a)},xf.defocus=function(a){function b(a){Ic(a).transition().duration(100).style("opacity",.3)}var c=cj.selectAll(md(a)),d=c.filter(sf),e=c.filter(tf);xf.revert(),b(d.classed(f.focused,!1)),b(e),ee(xf.data.targets)&&Ob(a),nf(a)},xf.revert=function(a){function b(a){Ic(a).transition().duration(100).style("opacity",1)}var c=cj.selectAll(md(a)),d=c.filter(sf),e=c.filter(tf);b(d.classed(f.focused,!1)),b(e),ee(xf.data.targets)&&Ob(a),of()},xf.show=function(a,b){a=Dc(a),b=b||{},Mc(a),cj.selectAll(nd(a)).transition().style("opacity",1),b.withLegend?pf(a):gj.selectAll(pd(a)).classed(f.legendItemHidden,!1).transition().style("opacity",1),$e({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0})},xf.hide=function(a,b){a=Dc(a),b=b||{},Lc(a),cj.selectAll(nd(a)).transition().style("opacity",0),b.withLegend?qf(a):gj.selectAll(pd(a)).classed(f.legendItemHidden,!0).transition().style("opacity",Vi),$e({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0})},xf.toggle=function(a){Gc(a)?xf.hide(a):xf.show(a)},xf.unzoom=function(){Zi.clear().update(),$e({withUpdateXDomain:!0})},xf.load=function(a){return a.xs&&nc(a.xs),"classes"in a&&Object.keys(a.classes).forEach(function(b){xg[b]=a.classes[b]}),"categories"in a&&zi&&(dh=a.categories,og.categories(dh)),"cacheIds"in a&&bc(a.cacheIds)?void ff(dc(a.cacheIds),a.done):void("unload"in a?hf(Dc("boolean"==typeof a.unload&&a.unload?null:a.unload),function(){gf(a)}):gf(a))},xf.unload=function(a){hf(Dc(a),function(){$e({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0})})},xf.selected=function(a){return wf.merge(ej.selectAll("."+f.shapes+ld(a)).selectAll("."+f.shape).filter(function(){return wf.select(this).classed(f.SELECTED)}).map(function(a){return a.map(function(a){return a.__data__})}))},xf.select=function(a,b,c){Hg&&ej.selectAll("."+f.shapes).selectAll("."+f.shape).each(function(e,g){var h=wf.select(this),i="circle"===this.nodeName?Ae:De,j="circle"===this.nodeName?Be:Ee,k=Ig||!a||a.indexOf(e.id)>=0,l=!b||b.indexOf(g)>=0,m=h.classed(f.SELECTED);k&&l?Jg(e)&&!m&&i(h.classed(f.SELECTED,!0),e,g):d(c)&&c&&m&&j(h.classed(f.SELECTED,!1),e,g)})},xf.unselect=function(a,b){Hg&&ej.selectAll("."+f.shapes).selectAll("."+f.shape).each(function(c,d){var e=wf.select(this),g="circle"===this.nodeName?Be:Ee,h=Ig||!a||a.indexOf(c.id)>=0,i=!b||b.indexOf(d)>=0,j=e.classed(f.SELECTED);h&&i&&Jg(c)&&j&&g(e.classed(f.SELECTED,!1),c,d)})},xf.toLine=function(a){vf(a,"line")},xf.toSpline=function(a){vf(a,"spline")},xf.toBar=function(a){vf(a,"bar")},xf.toScatter=function(a){vf(a,"scatter")},xf.toArea=function(a){vf(a,"area")},xf.toAreaSpline=function(a){vf(a,"area-spline")},xf.toPie=function(a){vf(a,"pie",{withTransform:!0})},xf.toDonut=function(a){vf(a,"donut",{withTransform:!0})},xf.groups=function(a){return c(a)?yg:(yg=a,$e(),yg)},xf.xgrids=function(a){return a?(Mh=a,$e(),Mh):Mh},xf.xgrids.add=function(a){return a?xf.xgrids(Mh.concat(a)):void 0},xf.xgrids.remove=function(a){var b=uf(a); -return xf.xgrids(Mh.filter(b))},xf.ygrids=function(a){return a?(Oh=a,$e(),Oh):Oh},xf.ygrids.add=function(a){return a?xf.ygrids(Oh.concat(a)):void 0},xf.ygrids.remove=function(a){var b=uf(a);return xf.ygrids(Oh.filter(b))},xf.regions=function(a){return c(a)?ki:(ki=a,$e(),ki)},xf.regions.add=function(a){return c(a)?ki:(ki=ki.concat(a),$e(),ki)},xf.regions.remove=function(a,c){var e=[].concat(a);return c=d(c)?c:{},e.forEach(function(a){var d=b(c.duration)?c.duration:0;cj.selectAll("."+a).transition().duration(d).style("fill-opacity",0).remove(),ki=ki.filter(function(b){return b.classes.indexOf(a)<0})}),ki},xf.data.get=function(a){var b=xf.data.getAsTarget(a);return d(b)?b.values.map(function(a){return a.value}):void 0},xf.data.getAsTarget=function(a){var b=Fc(function(b){return b.id===a});return b.length>0?b[0]:void 0},xf.data.names=function(a){return arguments.length?(Object.keys(a).forEach(function(b){wg[b]=a[b]}),rf(Cc(xf.data.targets),{withTransition:!0}),wg):wg},xf.x=function(a){return arguments.length&&(qc(xf.data.targets,a),$e({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})),xf.data.xs},xf.xs=function(a){return arguments.length&&(rc(xf.data.targets,a),$e({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})),xf.data.xs},xf.axis.labels=function(a){arguments.length&&(Object.keys(a).forEach(function(b){bb(b,a[b])}),Db())},xf.axis.max=function(a){arguments.length&&("object"==typeof a?(b(a.y)&&(th=+a.y),b(a.y2)&&(Ch=+a.y2)):th=Ch=+a,$e())},xf.axis.min=function(a){arguments.length&&("object"==typeof a?(b(a.y)&&(uh=+a.y),b(a.y2)&&(Dh=+a.y2)):uh=Dh=+a,$e())},xf.axis.range=function(a){arguments.length&&("undefined"!=typeof a.max&&xf.axis.max(a.max),"undefined"!=typeof a.min&&xf.axis.min(a.min))},xf.legend.show=function(a){Vg||(Vg=!0,gj.style("visibility","visible")),pf(Dc(a)),$e({withLegend:!0})},xf.legend.hide=function(a){qf(Dc(a)),$e({withLegend:!0}),Vg&&ve(a)&&(Vg=!1,gj.style("visibility","hidden"))},xf.resize=function(a){Af=a?a.width:null,Bf=a?a.height:null,df({withLegend:!0,withTransition:!1,withTransitionForTransform:!1})},xf.destroy=function(){xf.data.targets=void 0,xf.data.xs={},ij.html(""),a.onresize=null},"url"in e.data)wf.xhr(e.data.url,function(a,b){var c,d=wf.csv.parseRows(b.response);1===d.length?(c=[{}],d[0].forEach(function(a){c[0][a]=null})):c=wf.csv.parse(b.response),Te(c)});else if("rows"in e.data)Te(tc(e.data.rows));else{if(!("columns"in e.data))throw Error("url or rows or columns is required.");Te(uc(e.data.columns))}return xf},"function"==typeof a.define&&a.define.amd?a.define("c3",["d3"],e):a.c3=e}(window); \ No newline at end of file +!function(a){"use strict";function b(a){return a||0===a}function c(a){return"undefined"==typeof a}function d(a){return"undefined"!=typeof a}var e={version:"0.1.34"},f={target:"c3-target",chart:"c3-chart",chartLine:"c3-chart-line",chartLines:"c3-chart-lines",chartBar:"c3-chart-bar",chartBars:"c3-chart-bars",chartText:"c3-chart-text",chartTexts:"c3-chart-texts",chartArc:"c3-chart-arc",chartArcs:"c3-chart-arcs",chartArcsTitle:"c3-chart-arcs-title",selectedCircle:"c3-selected-circle",selectedCircles:"c3-selected-circles",eventRect:"c3-event-rect",eventRects:"c3-event-rects",eventRectsSingle:"c3-event-rects-single",eventRectsMultiple:"c3-event-rects-multiple",zoomRect:"c3-zoom-rect",brush:"c3-brush",focused:"c3-focused",region:"c3-region",regions:"c3-regions",tooltip:"c3-tooltip",tooltipName:"c3-tooltip-name",shape:"c3-shape",shapes:"c3-shapes",line:"c3-line",lines:"c3-lines",bar:"c3-bar",bars:"c3-bars",circle:"c3-circle",circles:"c3-circles",arc:"c3-arc",arcs:"c3-arcs",area:"c3-area",areas:"c3-areas",text:"c3-text",texts:"c3-texts",grid:"c3-grid",xgrid:"c3-xgrid",xgrids:"c3-xgrids",xgridLine:"c3-xgrid-line",xgridLines:"c3-xgrid-lines",xgridFocus:"c3-xgrid-focus",ygrid:"c3-ygrid",ygrids:"c3-ygrids",ygridLine:"c3-ygrid-line",ygridLines:"c3-ygrid-lines",axisX:"c3-axis-x",axisXLabel:"c3-axis-x-label",axisY:"c3-axis-y",axisYLabel:"c3-axis-y-label",axisY2:"c3-axis-y2",axisY2Label:"c3-axis-y2-label",legendItem:"c3-legend-item",legendItemEvent:"c3-legend-item-event",legendItemTile:"c3-legend-item-tile",legendItemHidden:"c3-legend-item-hidden",legendItemFocused:"c3-legend-item-focused",dragarea:"c3-dragarea",EXPANDED:"_expanded_",SELECTED:"_selected_",INCLUDED:"_included_"};e.generate=function(e){function g(a,b){if(!(a in e))throw Error(b)}function h(a,b){var c,d,f,g=e;for(c=0;cXf&&(Xf=0),0>Zf&&(Zf=0),Yf=ih?Uf.left-dj-ej:Xf,$f=ih?Zf:ag-Vf.top-Vf.bottom,0>Yf&&(Yf=0),0>$f&&($f=0),p(),$i&&he(Ff.data.targets)&&(Wf.left=Xf/2+cg)}function o(){nj.select("line."+f.xgridFocus).attr("x1",ih?0:-10).attr("x2",ih?Xf:-10).attr("y1",ih?-10:Uf.top).attr("y2",ih?-10:Zf)}function p(){cg=Zf/2,bg=.95*cg,dg=ge(Ff.data.targets)?.6*bg:0}function q(){var a=ih?f.axisX:f.axisY,b=nj.select("."+a).node(),c=b?b.getBoundingClientRect():{right:0},d=Ef.select(Hf).node().getBoundingClientRect(),e=c.right-d.left-t();return e>0?e:0}function r(){return If?If:x()}function s(){var a=Jf?Jf:y();return a>0?a:320}function t(){return he(Ff.data.targets)?0:Kf?Kf:ih?jh?v("x"):1:!Bh||Gh?1:v("y")}function u(){var a=1;return he(Ff.data.targets)?0:Lf?Lf:$i?P()+(Kh&&!ih?v("y2"):a):Kh?Ph||ih?a:v("y2"):a}function v(a){var b=jb(a);return b.isInner?20+Cb(a):40+Cb(a)}function w(a){return"x"!==a||jh?"x"===a&&yh?yh:"y"!==a||Bh?"y2"!==a||Kh?(jb(a).isInner?30:40)+("y2"===a?-10:0):fj:ch&&!$i?10:1:0}function x(){return+Ef.select(Hf).style("width").replace("px","")}function y(){return+Ef.select(Hf).style("height").replace("px","")}function z(a){return a?-5:-(Uf.left-1)}function A(a){return a?-20:-4}function B(){return z(!ih)}function C(){return A(!ih)}function D(){return z(ih)}function E(){return A(ih)}function F(a){return a?Xf+2+4:Uf.left+20}function G(a){return a?(yh?yh:0)+80:Zf+8}function H(){return F(!ih)}function I(){return G(!ih)}function J(){return F(ih)}function K(){return G(ih)}function L(){var a,b,c,d,e,f=Ac(Ff.data.targets);return f?(a=f.values[0],b=f.values[f.values.length-1],c=qg(b.x)-qg(a.x),0===c?ih?Zf:Xf:(d=zc(),e=de(Ff.data.targets)?(d-(Ii?.25:1))/d:1,d>1?c*e/(d-1):c)):0}function M(a){_i=a}function N(a){aj=a}function O(a){bj=a}function P(){return ch?$i?aj*(_i+1):_f:0}function Q(){return ch?$i?ag:bj*(_i+1):0}function R(){var a,b,c=!qg;ig=ih?1:0,jg=ih?Zf:Xf,kg=ih?0:Zf,lg=ih?Xf:1,mg=ig,ng=jg,og=ih?0:$f,pg=ih?Yf:1,qg=T(ig,jg,c?void 0:qg.domain(),function(){return wg.tickOffset()}),rg=U(kg,lg,c?void 0:rg.domain()),sg=U(kg,lg,c?void 0:sg.domain()),tg=T(ig,jg,sj,function(a){return a%1?0:zg.tickOffset()}),ug=U(og,pg,c?void 0:ug.domain()),vg=U(og,pg,c?void 0:vg.domain()),a=$(),b=th?th:c?void 0:wg.tickValues(),wg=X(qg,Vi,a,b),zg=X(tg,Yi,a,b),xg=Y(rg,Wi,Hh,Jh),yg=Y(sg,Xi,Qh,Sh),c||(gj.scale(tg),Mf&&kj.scale(qg)),S()}function S(){eg=Gb(),fg=Hb(),gg=Hb(.98)}function T(a,b,d,e){var f=(Hi?Ef.time.scale():Ef.scale.linear()).range([a,b]);if(f.orgDomain=function(){return f.domain()},d&&f.domain(d),c(e)&&(e=function(){return 0}),Ii){var g,h=f;f=function(a){return h(a)+e(a)};for(g in h)f[g]=h[g];f.orgDomain=function(){return h.domain()},f.domain=function(a){return arguments.length?(h.domain(a),f):(a=h.domain(),[a[0],a[1]+1])}}return f}function U(a,b,c){var d=Ef.scale.linear().range([a,b]);return c&&d.domain(c),d}function V(a){return"y2"===Z(a)?sg:rg}function W(a){return"y2"===Z(a)?vg:ug}function X(a,b,c,d){var e=(Ii?Eb():Ef.svg.axis()).scale(a).orient(b);return e.tickFormat(c).tickValues(d),Ii?(e.tickCentered(nh),Ae(ph)&&(ph=!1)):e.tickOffset=function(){var a=Bc(Ff.data.targets),b=qg(a[1])-qg(a[0]),c=b?b:ih?Zf:Xf;return c/zc()/2},Ii&&e.categories(mh),e}function Y(a,b,c,d){return Ef.svg.axis().scale(a).orient(b).tickFormat(c).ticks(d).outerTickSize(0)}function Z(a){return a in Hg?Hg[a]:"y"}function $(){var a=Hi?Si:Ii?Tc:function(a){return 0>a?a.toFixed(0):a};return oh&&("function"==typeof oh?a=oh:Hi&&(a=function(a){return a?Ri(oh)(a):""})),a}function _(a){var b;return"y"===a?b=Fh:"y2"===a?b=Oh:"x"===a&&(b=Ah),b}function ab(a){var b=_(a);return"string"==typeof b?b:b?b.text:null}function bb(a,b){var c=_(a);"string"==typeof c?"y"===a?Fh=b:"y2"===a?Oh=b:"x"===a&&(Ah=b):c&&(c.text=b)}function cb(a){return 10*Math.sin(Math.PI*(a/180))}function db(a){return 11.5-2.5*(a/15)}function eb(a,b,c){a.selectAll(".tick text").style("text-anchor","start"),b.selectAll(".tick text").attr("y",db(c)).attr("x",cb(c)).attr("transform","rotate("+c+")")}function fb(a,b){var c=_(a),d=c&&"object"==typeof c&&c.position?c.position:b;return{isInner:d.indexOf("inner")>=0,isOuter:d.indexOf("outer")>=0,isLeft:d.indexOf("left")>=0,isCenter:d.indexOf("center")>=0,isRight:d.indexOf("right")>=0,isTop:d.indexOf("top")>=0,isMiddle:d.indexOf("middle")>=0,isBottom:d.indexOf("bottom")>=0}}function gb(){return fb("x",ih?"inner-top":"inner-right")}function hb(){return fb("y",ih?"inner-right":"inner-top")}function ib(){return fb("y2",ih?"inner-right":"inner-top")}function jb(a){return"y2"===a?ib():"y"===a?hb():gb()}function kb(){return ab("x")}function lb(){return ab("y")}function mb(){return ab("y2")}function nb(a,b){return a?b.isLeft?0:b.isCenter?Xf/2:Xf:b.isBottom?-Zf:b.isMiddle?-Zf/2:0}function ob(a,b){return a?b.isLeft?"0.5em":b.isRight?"-0.5em":"0":b.isTop?"-0.5em":b.isBottom?"0.5em":"0"}function pb(a,b){return a?b.isLeft?"start":b.isCenter?"middle":"end":b.isBottom?"start":b.isMiddle?"middle":"end"}function qb(){return nb(!ih,gb())}function rb(){return nb(ih,hb())}function sb(){return nb(ih,ib())}function tb(){return ob(!ih,gb())}function ub(){return ob(ih,hb())}function vb(){return ob(ih,ib())}function wb(){var a=gb();return ih?a.isInner?"1.2em":-25-Cb("x"):a.isInner?"-0.5em":yh?yh-10:"3em"}function xb(){var a=hb();return ih?a.isInner?"-0.5em":"3em":a.isInner?"1.2em":-20-Cb("y")}function yb(){var a=ib();return ih?a.isInner?"1.2em":"-2.2em":a.isInner?"-0.5em":30+Cb("y2")}function zb(){return pb(!ih,gb())}function Ab(){return pb(ih,hb())}function Bb(){return pb(ih,ib())}function Cb(a){var b=0,c="x"===a?f.axisX:"y"===a?f.axisY:f.axisY2;return Ef.selectAll("."+c+" .tick text").each(function(){var a=this.getBoundingClientRect();bb?0:b}function Db(){nj.select("."+f.axisX+" ."+f.axisXLabel).transition().attr("x",qb).attr("dx",tb).attr("dy",wb).text(kb),nj.select("."+f.axisY+" ."+f.axisYLabel).transition().attr("x",rb).attr("dx",ub).attr("dy",xb).attr("dy",xb).text(lb),nj.select("."+f.axisY2+" ."+f.axisY2Label).transition().attr("x",sb).attr("dx",vb).attr("dy",yb).text(mb)}function Eb(){function a(a,b){a.attr("transform",function(a){return"translate("+(b(a)+p)+", 0)"})}function b(a,b){a.attr("transform",function(a){return"translate(0,"+b(a)+")"})}function c(a){var b=a[0],c=a[a.length-1];return c>b?[b,c]:[c,b]}function d(a){for(var b=[],c=Math.ceil(a[0]);c0&&b[0]>0&&b.unshift(b[0]-(b[1]-b[0])),b}function e(a){return a0)for(g=Rc(a),b=0;b=0}),0!==e.length)for(d=e[0],g&&i[d]&&i[d].forEach(function(a,b){i[d][b]=0>a?a:0}),c=1;c0||(i[d][b]+=+a)});return Ef.min(Object.keys(i).map(function(a){return Ef.min(i[a])}))}function Wb(a){var b,c,d,e,f,g,h=Cc(a),i=Pc(a);if(Gg.length>0)for(g=Sc(a),b=0;b=0}),0!==e.length)for(d=e[0],g&&i[d]&&i[d].forEach(function(a,b){i[d][b]=a>0?a:0}),c=1;c+a||(i[d][b]+=+a)});return Ef.max(Object.keys(i).map(function(a){return Ef.max(i[a])}))}function Xb(a,c){var d,e,f,g,h,i,j,k,l=a.filter(function(a){return Z(a.id)===c}),m="y2"===c?Mh:Dh,n="y2"===c?Lh:Ch,o=b(m)?m:Vb(l),p=b(n)?n:Wb(l),q="y2"===c?Nh:Eh,r=xd()&&ih;return 0===l.length?"y2"===c?sg.domain():rg.domain():(o===p&&(0>o?p=0:o=0),d=Math.abs(p-o),e=f=g=r?0:.1*d,q&&(h=Math.max(Math.abs(o),Math.abs(p)),p=h-q,o=q-h),r&&(i=yd(o,p),j=ac(rg.range()),k=[i[0]/j,i[1]/j],f+=d*(k[1]/(1-k[0]-k[1])),g+=d*(k[0]/(1-k[0]-k[1]))),"y"===c&&Ih&&(f=b(Ih.top)?Ih.top:e,g=b(Ih.bottom)?Ih.bottom:e),"y2"===c&&Rh&&(f=b(Rh.top)?Rh.top:e,g=b(Rh.bottom)?Rh.bottom:e),de(l)&&!Rc(l)&&(g=o),[o-g,p+f])}function Yb(a){return wh?Hi?we(wh):wh:Ef.min(a,function(a){return Ef.min(a.values,function(a){return a.x})})}function Zb(a){return vh?Hi?we(vh):vh:Ef.max(a,function(a){return Ef.max(a.values,function(a){return a.x})})}function $b(a){var c,d,e,f,g=Bc(a),h=g[1]-g[0];return Ii?d=0:de(a)?(c=zc(),d=c>1?h/(c-1)/2:.5):d=.01*h,"object"==typeof xh&&Be(xh)?(e=b(xh.left)?xh.left:d,f=b(xh.right)?xh.right:d):e=f="number"==typeof xh?xh:d,{left:e,right:f}}function _b(a){var b=[Yb(a),Zb(a)],c=b[0],d=b[1],e=$b(a),f=0,g=0;return c-d===0&&(c=Hi?new Date(.5*c.getTime()):-.5,d=Hi?new Date(1.5*d.getTime()):.5),(c||0===c)&&(f=Hi?new Date(c.getTime()-e.left):c-e.left),(d||0===d)&&(g=Hi?new Date(d.getTime()+e.right):d+e.right),[f,g]}function ac(a){return a[1]-a[0]}function bc(a){for(var b=0;bb?0:b-c}function hc(a){var b,c=fc(a),d="y"===a.axis?rg:sg;return b="y"===a.axis||"y2"===a.axis?ih?Zf:"start"in a?d(a.start):Zf:ih?"end"in a?qg(Hi?we(a.end):a.end):Zf:Zf,c>b?0:b-c}function ic(a){return Ag&&a===Ag||Be(Bg)&&Ce(Bg,a)}function jc(a){return!ic(a)}function kc(a){return Ag?Ag:Be(Bg)?Bg[a]:null}function lc(a,b){var c,d=b&&Be(b)?Cc(b):[];return d.forEach(function(b){kc(b)===a&&(c=Ff.data.xs[b])}),c}function mc(a,b){return a in Ff.data.xs&&Ff.data.xs[a]&&Ff.data.xs[a][b]?Ff.data.xs[a][b]:b}function nc(a){Object.keys(a).forEach(function(b){Bg[b]=a[b]})}function oc(a){return 1===Ef.set(Object.keys(a).map(function(b){return a[b]})).size()}function pc(a){var b;return a&&(b=Eg[a.id],a.name=b?b:a.id),a}function qc(a,b){a.forEach(function(a){a.values.forEach(function(c,d){c.x=sc(b[d],a.id,d)}),Ff.data.xs[a.id]=b})}function rc(a,b){a.forEach(function(a){b[a.id]&&qc([a],b[a.id])})}function sc(a,c,d){var e;return e=Hi?a?a instanceof Date?a:we(a):we(mc(c,d)):Ji&&!Ii?b(a)?+a:mc(c,d):d}function tc(a){var b,c,d=a[0],e={},f=[];for(b=1;b=0?Ff.data.xs[c]=a.map(function(a){return a[f]}).filter(b):Ag?(d=Object.keys(Ff.data.xs),Ff.data.xs[c]=d.length>0?Ff.data.xs[d[0]]:void 0):Be(Bg)&&(Ff.data.xs[c]=lc(f,Ff.data.targets)):Ff.data.xs[c]=a.map(function(a,b){return b})}),d.forEach(function(a){if(!Ff.data.xs[a])throw new Error('x is not defined for id = "'+a+'".')}),c=d.map(function(b,c){var d=Dg(b);return{id:d,id_org:b,values:a.map(function(a,e){var f=kc(b),g=a[f],h=sc(g,b,e);return Ji&&Ii&&0===c&&g&&(0===e&&(mh=[]),mh.push(g)),("undefined"==typeof a[b]||Ff.data.xs[b].length<=e)&&(h=void 0),{x:h,value:null===a[b]||isNaN(a[b])?null:+a[b],id:d}}).filter(function(a){return"undefined"!=typeof a.x})}}),c.forEach(function(a){var b;a.values=a.values.sort(function(a,b){var c=a.x||0===a.x?a.x:1/0,d=b.x||0===b.x?b.x:1/0;return c-d}),b=0,a.values.forEach(function(a){a.index=b++})}),Ig&&be(Cc(c).filter(function(a){return!(a in Jg)}),Ig),c.forEach(function(a){cc(a.id_org,a)}),c}function wc(a){return{id:a.id,id_org:a.id_org,values:a.values.map(function(a){return{x:a.x,value:a.value,id:a.id}})}}function xc(a){return a>0&&Ff.data.targets[0].values[a-1]?Ff.data.targets[0].values[a-1].x:void 0}function yc(a){return a1?a.forEach(function(a){a.values.length>d&&(b=a,d=a.values.length)}):b=c?a[0]:null,b}function Bc(a){var b,c,d=Ac(a);return d?(b=d.values[0],c=d.values[d.values.length-1],[b.x,c.x]):[0,0]}function Cc(a){return a.map(function(a){return a.id})}function Dc(a){return a?"string"==typeof a?[a]:a:Cc(Ff.data.targets)}function Ec(a,b){var c,d=Cc(a);for(c=0;c2){for(f=c-2,d=a[0],e=a[a.length-1],g=(e-d)/(f+1),j=[d],h=0;f>h;h++)i=+d+g*(h+1),j.push(Hi?new Date(i):i);j.push(e)}return Hi||(j=j.sort(function(a,b){return a-b})),j}function Lc(a){Ti=Ti.concat(a)}function Mc(a){Ti=Ti.filter(function(b){return a.indexOf(b)<0})}function Nc(a){Ui=Ui.concat(a)}function Oc(a){Ui=Ui.filter(function(b){return a.indexOf(b)<0})}function Pc(a){var b={};return a.forEach(function(a){b[a.id]=[],a.values.forEach(function(c){b[a.id].push(c.value)})}),b}function Qc(a,b){var c,d,e,f=Object.keys(a);for(c=0;ca})}function Sc(a){return Qc(a,function(a){return a>0})}function Tc(a){return a=0&&d===a[c].x;c--)e.push(a[c]);for(c=b;c0?g=h:f=h,g-f===1||0===f&&0===g?(e=[],(a[f].x||0===a[f].x)&&(e=e.concat(Jd(a,f))),(a[g].x||0===a[g].x)&&(e=e.concat(Jd(a,g))),Md(e,b)):Kd(a,b,f,g)}function Ld(a,b){var c;return c=a.map(function(a){return Kd(a.values,b)}),Md(c,b)}function Md(a,b){var c,d;return a.forEach(function(a){var e=De(a,b);(c>e||!c)&&(c=e,d=a)}),d}function Nd(a,b){return Ef.merge(a.map(function(a){return a.values})).filter(function(a){return a.x-b===0})}function Od(a){var b=a.getBoundingClientRect(),c=[a.pathSegList.getItem(0),a.pathSegList.getItem(1)],d=c[0].x,e=Math.min(c[0].y,c[1].y);return{x:d,y:e,width:b.width,height:b.height}}function Pd(){return Lg&&"desc"===Lg.toLowerCase()}function Qd(){return Lg&&"asc"===Lg.toLowerCase()}function Rd(a){var b=Qd(),c=Pd();return b||c?a.sort(function(a,c){var d=function(a,b){return a+Math.abs(b.value)},e=a.values.reduce(d,0),f=c.values.reduce(d,0);return b?f-e:e-f}):"function"==typeof Lg&&a.sort(Lg),a}function Sd(a,c){var d,e,f,g,h,i,j,k=he(Ff.data.targets),l=a.filter(function(a){return a&&b(a.value)});0!==l.length&&ui&&(qj.html(xi(a,$(),zd(k),Qi)).style("display","block"),d=qj.property("offsetWidth"),e=qj.property("offsetHeight"),k?(g=Xf/2+c[0],i=Zf/2+c[1]+20):(ih?(f=q(),g=f+c[0]+100,h=g+d,j=r()-u(),i=qg(l[0].x)+20):(f=q(),g=f+t()+qg(l[0].x)+20,h=g+d,j=f+r()-u(),i=c[1]+15),h>j&&(g-=d+60),i+e>s()&&(i-=e+30)),qj.style("top",i+"px").style("left",g+"px"))}function Td(){qj.style("display","none")}function Ud(a){var c=a.filter(function(a){return a&&b(a.value)});ui&&(ee(Ff.data.targets)||he(Ff.data.targets)||nj.selectAll("line."+f.xgridFocus).style("visibility","visible").data([c[0]]).attr(ih?"y1":"x1",Fd).attr(ih?"y2":"x2",Fd))}function Vd(){nj.select("line."+f.xgridFocus).style("visibility","hidden")}function Wd(a){return a.x||0===a.x?qg(a.x):null}function Xd(a){return V(a.id)(a.value)}function Yd(){var a,b,d={},e=0;return Ic(Fc(ke)).forEach(function(f){for(a=0;a0&&(i+=g(b.values[f].value)-h)}),i}}function ae(a,b){return"number"==typeof ei?ei:b?2*a.tickOffset()*fi/b:0}function be(a,b){Dc(a).forEach(function(a){uj[a]=b===Jg[a],Jg[a]=b})}function ce(a,b){var c=!1;return a.forEach(function(a){Jg[a.id]===b&&(c=!0),a.id in Jg||"line"!==b||(c=!0)}),c}function de(a){return ce(a,"bar")}function ee(a){return ce(a,"scatter")}function fe(a){return ce(a,"pie")}function ge(a){return ce(a,"donut")}function he(a){return fe(a)||ge(a)}function ie(a){var b="string"==typeof a?a:a.id;return!(b in Jg)||"line"===Jg[b]||"spline"===Jg[b]||"area"===Jg[b]||"area-spline"===Jg[b]}function je(a){var b="string"==typeof a?a:a.id;return"spline"===Jg[b]||"area-spline"===Jg[b]}function ke(a){var b="string"==typeof a?a:a.id;return"bar"===Jg[b]}function le(a){var b="string"==typeof a?a:a.id;return"scatter"===Jg[b]}function me(a){var b="string"==typeof a?a:a.id;return"pie"===Jg[b]}function ne(a){var b="string"==typeof a?a:a.id;return"donut"===Jg[b]}function oe(a){return me(a)||ne(a)}function pe(a){return ie(a)?[a]:[]}function qe(a){return oe(a.data)?[a]:[]}function re(a){return ke(a)?a.values:[]}function se(a){return ie(a)||le(a)?a.values:[]}function te(a){return ke(a)||ie(a)?a.values:[]}function ue(a){return ne(a)&&oi||me(a)&&ii}function ve(a,b,c){var d=[];return function(e){var f,g=e.id||e;return a[g]instanceof Function?f=a[g](e):g in a?f=a[g]:(d.indexOf(g)<0&&d.push(g),f=b[d.indexOf(g)%b.length]),c instanceof Function?c(f,e):f}}function we(b){var c;try{c=Cg?Ef.time.format(Cg).parse(b):new Date(b)}catch(d){a.console.error("Failed to parse x '"+b+"' to Date with format "+Cg)}return c}function xe(a,b){var c=Ef.mouse(a),d=Ef.select(a),e=1*d.attr("cx"),f=1*d.attr("cy");return Math.sqrt(Math.pow(e-c[0],2)+Math.pow(f-c[1],2))0}function Ce(a,b){var c=!1;return Object.keys(a).forEach(function(d){a[d]===b&&(c=!0)}),c}function De(a,b){var c="y"===Z(a.id)?rg:sg,d=ih?1:0,e=ih?0:1;return Math.pow(qg(a.x)-b[d],2)+Math.pow(c(a.value)-b[e],2)}function Ee(a,b){var c=0;a.each(function(){++c}).each("end",function(){--c||b.apply(this,arguments)})}function Fe(a,b,c){Xg(b,a.node()),nj.select("."+f.selectedCircles+od(b.id)).selectAll("."+f.selectedCircle+"-"+c).data([b]).enter().append("circle").attr("class",function(){return Uc(f.selectedCircle,c)}).attr("cx",ih?Xd:Wd).attr("cy",ih?Wd:Xd).attr("stroke",function(){return Qi(b)}).attr("r",1.4*Qe(b)).transition().duration(100).attr("r",Qe)}function Ge(a,b,c){Yg(b,a.node()),nj.select("."+f.selectedCircles+od(b.id)).selectAll("."+f.selectedCircle+"-"+c).transition().duration(100).attr("r",0).remove()}function He(a,b,c,d){a?Fe(b,c,d):Ge(b,c,d)}function Ie(a,b){Xg(b,a.node()),a.transition().duration(100).style("fill",function(){return Ef.rgb(Qi(b)).brighter(.75)})}function Je(a,b){Yg(b,a.node()),a.transition().duration(100).style("fill",function(){return Qi(b)})}function Ke(a,b,c,d){a?Ie(b,c,d):Je(b,c,d)}function Le(a,b,c,d){Ke(a,b,c.data,d)}function Me(a){return"circle"===a.nodeName?He:Ef.select(a).classed(f.bar)?Ke:Le}function Ne(a){return a.filter(function(a){return b(a.value)})}function Oe(a){return Zh?"function"==typeof $h?$h(a):$h:0}function Pe(a){return ai?bi?bi:1.75*Oe(a):Oe(a)}function Qe(a){return ci?ci:4*Oe(a)}function Re(a,c){return(c?nj.selectAll("."+f.circles+od(c)):nj).selectAll("."+f.circle+(b(a)?"-"+a:""))}function Se(a,b){Re(a,b).classed(f.EXPANDED,!0).attr("r",Pe)}function Te(a){Re(a).filter(function(){return Ef.select(this).classed(f.EXPANDED)}).classed(f.EXPANDED,!1).attr("r",Oe)}function Ue(a){return nj.selectAll("."+f.bar+(b(a)?"-"+a:""))}function Ve(a){Ue(a).classed(f.EXPANDED,!0)}function We(a){Ue(a).classed(f.EXPANDED,!1)}function Xe(a,b){var c=_e(a,b);return function(a,b){var d=c(a,b),e=ih?1:0,f=ih?0:1,g="M "+d[0][e]+","+d[0][f]+" L"+d[1][e]+","+d[1][f]+" L"+d[2][e]+","+d[2][f]+" L"+d[3][e]+","+d[3][f]+" z";return g}}function Ye(a,b){var c=_e(a,!1),d=b?Ze:$e;return function(a,b){return d(c(a,b),a,this)}}function Ze(a,b){var c;return ih?(c=ke(b)?4:6,a[2][1]+c*(b.value<0?-1:1)):a[0][0]+(a[2][0]-a[0][0])/2}function $e(a,b,c){var d=c.getBoundingClientRect();return ih?(a[0][0]+a[2][0]+.6*d.height)/2:a[2][1]+(b.value<0?d.height:ke(b)?-3:-6)}function _e(a,b){var c=a.__max__+1,d=ae(wg,c),e=Zd(d,c,a,!!b),f=$d(!!b),g=_d(a,!!b),h=b?W:V;return function(a,b){var c=h(a.id)(0),i=g(a,b)||c,j=e(a),k=f(a);return ih&&(0k||a.value<0&&k>c)&&(k=c),[[j,i],[j,k-(c-i)],[j+d,k-(c-i)],[j+d,i]]}}function af(a,b,e,f){var g,h,i,j,k,l,m,n,o,p,q,r=-1,s="M",t=[];if(d(f))for(g=0;g=h;h+=u)s+=i(a[g-1],a[g],h,o)}r=a[g].x}return s}function bf(b){var c,d,e;if(rj=Ef.select(Hf),rj.empty())throw new Error('Bind element not found. Check the selector specified by "bindto" and existance of that element. Default "bindto" is "#chart".');if(rj.html("").classed("c3",!0),Ff.data.xs={},Ff.data.targets=vc(b),Pg&&Lc(Pg===!0?Cc(Ff.data.targets):Pg),n(),R(),qg.domain(Ef.extent(_b(Ff.data.targets))),rg.domain(Xb(Ff.data.targets,"y")),sg.domain(Xb(Ff.data.targets,"y2")),tg.domain(qg.domain()),ug.domain(rg.domain()),vg.domain(sg.domain()),sj=qg.domain(),gj.scale(tg),Mf&&kj.scale(qg),lj=rj.append("svg").on("mouseenter",Pf).on("mouseleave",Qf),mj=lj.append("defs"),mj.append("clipPath").attr("id",Bi).append("rect"),mj.append("clipPath").attr("id",Ci).append("rect"),mj.append("clipPath").attr("id",Di).append("rect"),nf(),nj=lj.append("g").attr("transform",Zi.main),oj=lj.append("g").attr("transform",Zi.context),pj=lj.append("g").attr("transform",Zi.legend),_g||oj.style("visibility","hidden"),ch||(pj.style("visibility","hidden"),Ui=Cc(Ff.data.targets)),qj=Ef.select(Hf).style("position","relative").append("div").style("position","absolute").style("pointer-events","none").style("z-index","10").style("display","none"),zf(Cc(Ff.data.targets),{withTransform:!1,withTransitionForTransform:!1}),d=nj.append("g").attr("clip-path",Ei).attr("class",f.grid),Th&&d.append("g").attr("class",f.xgrids),Be(Vh)&&d.append("g").attr("class",f.xgridLines),_h&&d.append("g").attr("class",f.xgridFocus).append("line").attr("class",f.xgridFocus),Wh&&d.append("g").attr("class",f.ygrids),Be(Xh)&&d.append("g").attr("class",f.ygridLines),jh&&nj.append("g").attr("class",f.axisX).attr("clip-path",Fi).attr("transform",Zi.x).append("text").attr("class",f.axisXLabel).attr("transform",ih?"rotate(-90)":"").style("text-anchor",zb),Bh&&nj.append("g").attr("class",f.axisY).attr("clip-path",Gi).attr("transform",Zi.y).append("text").attr("class",f.axisYLabel).attr("transform",ih?"":"rotate(-90)").style("text-anchor",Ab),Kh&&nj.append("g").attr("class",f.axisY2).attr("transform",Zi.y2).append("text").attr("class",f.axisY2Label).attr("transform",ih?"":"rotate(-90)").style("text-anchor",Bb),nj.append("g").attr("clip-path",Ei).attr("class",f.regions),nj.append("g").attr("clip-path",Ei).attr("class",f.chart),c=nj.select("."+f.chart).append("g").attr("class",f.eventRects).style("fill-opacity",0).style("cursor",Mf?ih?"ns-resize":"ew-resize":null),nj.select("."+f.chart).append("g").attr("class",f.chartBars),nj.select("."+f.chart).append("g").attr("class",f.chartLines),nj.select("."+f.chart).append("g").attr("class",f.chartArcs).attr("transform",Zi.arc).append("text").attr("class",f.chartArcsTitle).style("text-anchor","middle").text(Rb()),nj.select("."+f.chart).append("g").attr("class",f.chartTexts),Mf&&nj.insert("rect",Of?null:"g."+f.grid).attr("class",f.zoomRect).attr("width",Xf).attr("height",Zf).style("opacity",0).style("cursor",ih?"ns-resize":"ew-resize").call(kj).on("dblclick.zoom",null),zh&&gj.extent("function"!=typeof zh?zh:zh(_b())),oj.append("g").attr("clip-path",Ei).attr("class",f.chart),oj.select("."+f.chart).append("g").attr("class",f.chartBars),oj.select("."+f.chart).append("g").attr("class",f.chartLines),oj.append("g").attr("clip-path",Ei).attr("class",f.brush).call(gj).selectAll("rect").attr(ih?"width":"height",ih?Yf:$f),oj.append("g").attr("class",f.axisX).attr("transform",Zi.subx).attr("clip-path",ih?"":Fi),pf(Ff.data.targets),ih?nj.select("."+f.axisX).style("opacity",0).call(wg):(nj.select("."+f.axisY).style("opacity",0).call(xg),nj.select("."+f.axisY2).style("opacity",0).call(yg)),n(),R(),nf(),m(!1),jf({withTransform:!0,withUpdateXDomain:!0,withUpdateOrgXDomain:!0,withTransitionForAxis:!1}),yi){if(Hi&&"string"==typeof zi){for(zi=we(zi),e=0;e0){d=[];for(var g in Eg)for(c=0;cg&&h>c&&d>i&&j>d):"path"===this.nodeName&&(m=Od(this),c=m.x,d=m.y,e=m.width,k=m.height,l=Ke,q=!(c>h||g>c+e||d>j||i>d+k)),q^p&&(n.classed(f.INCLUDED,!p),n.classed(f.SELECTED,!o),l(!o,n,a,b))}))}function gf(a){he(Ff.data.targets)||Qg&&(Ki=a,nj.select("."+f.chart).append("rect").attr("class",f.dragarea).style("opacity",.1),Li=!0,Zg())}function hf(){he(Ff.data.targets)||Qg&&(nj.select("."+f.dragarea).transition().duration(100).style("opacity",0).remove(),nj.selectAll("."+f.shape).classed(f.INCLUDED,!1),Li=!1,$g())}function jf(a){var c,e,g,h,i,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z=Yd(),$=he(Ff.data.targets),_=Ic(Ff.data.targets);if(a=d(a)?a:{},E=d(a.withY)?a.withY:!0,F=d(a.withSubchart)?a.withSubchart:!0,G=d(a.withTransition)?a.withTransition:!0,J=d(a.withTransform)?a.withTransform:!1,K=d(a.withUpdateXDomain)?a.withUpdateXDomain:!1,M=d(a.withUpdateOrgXDomain)?a.withUpdateOrgXDomain:!1,N=d(a.withLegend)?a.withLegend:!1,H=d(a.withTransitionForExit)?a.withTransitionForExit:G,I=d(a.withTransitionForAxis)?a.withTransitionForAxis:G,T=G?Tf:0,U=H?T:0,V=I?T:0,c=nj.select("."+f.axisX).style("opacity",$?0:1),g=nj.select("."+f.axisY).style("opacity",$?0:1),h=nj.select("."+f.axisY2).style("opacity",$?0:1),e=oj.select("."+f.axisX).style("opacity",$?0:1),S={axisX:c.transition().duration(V),axisY:g.transition().duration(V),axisY2:h.transition().duration(V),axisSubX:e.transition().duration(V)},N&&ch&&zf(Cc(Ff.data.targets),a,S),Ii&&(0!==_.length&&M&&K||qg.domain([0,c.selectAll(".tick").size()])),_.length&&(M&&(qg.domain(Ef.extent(_b(_))),sj=qg.domain(),Mf&&kj.scale(qg).updateScaleExtent(),tg.domain(qg.domain()),gj.scale(tg)),K&&(qg.domain(gj.empty()?sj:gj.extent()),Mf&&kj.scale(qg).updateScaleExtent()),th||!sh&&!rh||(W=Kc(Jc(_),rh),wg.tickValues(W),zg.tickValues(W))),rg.domain(Xb(_,"y")),sg.domain(Xb(_,"y2")),S.axisX.call(wg),S.axisY.call(xg),S.axisY2.call(yg),S.axisSubX.call(zg),K&&_.length)if(ph&&W){for(X=1;X=0&&Ef.select(this).style("display",b%Y?"none":"block")})}else lj.selectAll("."+f.axisX+" .tick text").style("display","block");if(!ih&&uh&&eb(c,S.axisX,uh),O=Xe(Z),Q=Ye(Z,!0),R=Ye(Z,!1),Db(),ug.domain(rg.domain()),vg.domain(sg.domain()),qj.style("display","none"),o(),nj.select("line."+f.xgridFocus).style("visibility","hidden"),Th){if("year"===Uh){j=[];for(var ab=_b(),bb=ab[0].getFullYear(),cb=ab[1].getFullYear(),db=bb;cb>=db;db++)j.push(new Date(db+"-01-01 00:00:00"))}else j=qg.ticks(10);i=nj.select("."+f.xgrids).selectAll("."+f.xgrid).data(j),i.enter().append("line").attr("class",f.xgrid),i.attr("x1",ih?0:function(a){return qg(a)-wg.tickOffset()}).attr("x2",ih?Xf:function(a){return qg(a)-wg.tickOffset()}).attr("y1",ih?function(a){return qg(a)-wg.tickOffset()}:Uf.top).attr("y2",ih?function(a){return qg(a)-wg.tickOffset()}:Zf).style("opacity",function(){return+Ef.select(this).attr(ih?"y1":"x1")===(ih?Zf:0)?0:1}),i.exit().remove()}Be(Vh)&&(k=nj.select("."+f.xgridLines).selectAll("."+f.xgridLine).data(Vh),l=k.enter().append("g").attr("class",function(a){return f.xgridLine+(a.class?a.class:"")}),l.append("line").style("opacity",0),l.append("text").attr("text-anchor","end").attr("transform",ih?"":"rotate(-90)").attr("dx",ih?0:-Uf.top).attr("dy",-5).style("opacity",0),k.select("line").transition().duration(T).attr("x1",ih?0:Gd).attr("x2",ih?Xf:Gd).attr("y1",ih?Gd:Uf.top).attr("y2",ih?Gd:Zf).style("opacity",1),k.select("text").transition().duration(T).attr("x",ih?Xf:0).attr("y",Gd).text(function(a){return a.text}).style("opacity",1),k.exit().transition().duration(T).style("opacity",0).remove()),E&&Wh&&(m=nj.select("."+f.ygrids).selectAll("."+f.ygrid).data(rg.ticks(Yh)),m.enter().append("line").attr("class",f.ygrid),m.attr("x1",ih?rg:0).attr("x2",ih?rg:Xf).attr("y1",ih?0:rg).attr("y2",ih?Zf:rg),m.exit().remove()),E&&Be(Xh)&&(n=nj.select("."+f.ygridLines).selectAll("."+f.ygridLine).data(Xh),p=n.enter().append("g").attr("class",function(a){return f.ygridLine+(a.class?a.class:"")}),p.append("line").style("opacity",0),p.append("text").attr("text-anchor","end").attr("transform",ih?"rotate(-90)":"").attr("dx",ih?0:-Uf.top).attr("dy",-5).style("opacity",0),n.select("line").transition().duration(T).attr("x1",ih?Hd:0).attr("x2",ih?Hd:Xf).attr("y1",ih?0:Hd).attr("y2",ih?Zf:Hd).style("opacity",1),n.select("text").transition().duration(T).attr("x",ih?0:Xf).attr("y",Hd).text(function(a){return a.text}).style("opacity",1),n.exit().transition().duration(T).style("opacity",0).remove()),v=nj.select("."+f.regions).selectAll("rect."+f.region).data(ti),v.enter().append("rect").style("fill-opacity",0),v.attr("class",hd).attr("x",ec).attr("y",fc).attr("width",gc).attr("height",hc).transition().duration(T).style("fill-opacity",function(a){return b(a.opacity)?a.opacity:.1}),v.exit().transition().duration(T).style("fill-opacity",0).remove(),t=nj.selectAll("."+f.bars).selectAll("."+f.bar).data(re),t.enter().append("path").attr("class",bd).style("stroke","none").style("fill",Qi),t.style("opacity",td).transition().duration(T).attr("d",O).style("fill",Qi).style("opacity",1),t.exit().transition().duration(U).style("opacity",0).remove(),q=nj.selectAll("."+f.lines).selectAll("."+f.line).data(pe),q.enter().append("path").attr("class",Zc).style("stroke",Qi),q.style("opacity",td).transition().duration(T).attr("d",hj).style("opacity",1),q.exit().transition().duration(U).style("opacity",0).remove(),r=nj.selectAll("."+f.areas).selectAll("."+f.area).data(pe),r.enter().append("path").attr("class",fd).style("fill",Qi).style("opacity",function(){return tj=+Ef.select(this).style("opacity"),0}),r.style("opacity",0).transition().duration(T).attr("d",ij).style("opacity",tj),r.exit().transition().duration(U).style("opacity",0).remove(),s=nj.selectAll("."+f.circles).selectAll("."+f.circle).data(se),s.enter().append("circle").attr("class",_c).attr("r",Oe),s.style("opacity",td).transition().duration(T).style("opacity",vd).attr("cx",ih?Xd:Wd).attr("cy",ih?Wd:Xd),s.exit().remove(),w=nj.selectAll("."+f.texts).selectAll("."+f.text).data(te),w.enter().append("text").attr("class",Vc).attr("text-anchor",function(a){return ih?a.value<0?"end":"start":"middle"}).style("stroke","none").style("fill-opacity",0),w.text(function(a){return Ed(a.id)(a.value,a.id)}).style("fill-opacity",ud).transition().duration(T).attr("x",Q).attr("y",R).style("fill-opacity",wd),w.exit().transition().duration(U).style("fill-opacity",0).remove(),u=nj.selectAll("."+f.arcs).selectAll("."+f.arc).data(qe),u.enter().append("path").attr("class",dd).style("fill",function(a){return Qi(a.data)}).style("cursor",function(a){return Sg(a)?"pointer":null}).style("opacity",0).each(function(a){this._current=a}).on("mouseover",function(a,b){var c,d,e;Oi||(c=Fb(a),d=Lb(c),e=Tb(),Nb(c.data.id),vf(c.data.id,!0),e(d,b))}).on("mousemove",function(a){var b=Fb(a),c=Lb(b),d=[c];Sd(d,Ef.mouse(this))}).on("mouseout",function(a,b){var c,d,e;Oi||(c=Fb(a),d=Lb(c),e=Ub(),Ob(c.data.id),wf(),Td(),e(d,b))}).on("click",function(a,b){var c=Fb(a),d=Lb(c),e=Sb();ef(this,a,b),e(d,b)}),u.attr("transform",J?"scale(0)":"").style("opacity",function(a){return a===this._current?0:1}).each(function(){Oi=!0}).transition().duration(T).attrTween("d",function(a){var b,c=Fb(a);return c?(b=Ef.interpolate(this._current,c),this._current=b(0),function(a){return Ib(b(a),!0)}):function(){return"M 0 0"}}).attr("transform",J?"scale(1)":"").style("opacity",1).call(Ee,function(){Oi=!1}),u.exit().transition().duration(U).style("opacity",0).remove(),nj.selectAll("."+f.chartArc).select("text").attr("transform",Jb).style("opacity",0).transition().duration(T).text(Mb).style("opacity",function(a){return Gc(a.data.id)&&oe(a.data)?1:0}),nj.select("."+f.chartArcsTitle).style("opacity",ge(Ff.data.targets)?1:0),_g&&(null!==Ef.event&&"zoom"===Ef.event.type&&gj.extent(qg.orgDomain()).update(),F&&(!ih&&uh&&eb(e,S.axisSubX,uh),gj.empty()||gj.extent(qg.orgDomain()).update(),P=Xe(Z,!0),y=oj.selectAll("."+f.bars).selectAll("."+f.bar).data(re),y.enter().append("path").attr("class",bd).style("stroke","none").style("fill",Qi),y.style("opacity",td).transition().duration(T).attr("d",P).style("opacity",1),y.exit().transition().duration(T).style("opacity",0).remove(),x=oj.selectAll("."+f.lines).selectAll("."+f.line).data(pe),x.enter().append("path").attr("class",Zc).style("stroke",Qi),x.style("opacity",td).transition().duration(T).attr("d",jj).style("opacity",1),x.exit().transition().duration(T).style("opacity",0).remove())),nj.selectAll("."+f.selectedCircles).filter(function(a){return ke(a)}).selectAll("circle").remove(),nj.selectAll("."+f.selectedCircle).transition().duration(T).attr("cx",ih?Xd:Wd).attr("cy",ih?Wd:Xd),z=nj.select("."+f.eventRects),Be(Bg)&&!oc(Bg)?(z.classed(f.eventRectsMultiple)||z.classed(f.eventRectsMultiple,!0).classed(f.eventRectsSingle,!1).selectAll("."+f.eventRect).remove(),A=nj.select("."+f.eventRects).selectAll("."+f.eventRect).data([0]),df(A.enter()),A.attr("x",0).attr("y",0).attr("width",Xf).attr("height",Zf)):(z.classed(f.eventRectsSingle)||z.classed(f.eventRectsMultiple,!1).classed(f.eventRectsSingle,!0).selectAll("."+f.eventRect).remove(),Ji&&!Ii?(D=function(a,b){var c=xc(b),d=yc(b),e=Ff.data.xs[a.id][b];return(qg(d?d:e+50)-qg(c?c:e-50))/2},C=function(a,b){var c=xc(b),d=Ff.data.xs[a.id][b];return(qg(d)+qg(c?c:d-50))/2}):(D=L(),C=function(a){return qg(a.x)-D/2}),B=Ac(Ff.data.targets),nj.select("."+f.eventRects).datum(B?B.values:[]),A=nj.select("."+f.eventRects).selectAll("."+f.eventRect).data(function(a){return a}),cf(A.enter()),A.attr("class",id).attr("x",ih?0:C).attr("y",ih?C:0).attr("width",ih?Xf:D).attr("height",ih?D:Zf),A.exit().remove()),Cc(Ff.data.targets).forEach(function(a){uj[a]=!0})}function kf(){jf({withTransition:!1,withY:!1,withSubchart:!1,withUpdateXDomain:!0})}function lf(){return"mousemove"===Ef.event.sourceEvent.type&&kj.altDomain?(qg.domain(kj.altDomain),void kj.scale(qg).updateScaleExtent()):(Ii&&qg.orgDomain()[0]===sj[0]&&qg.domain([sj[0]-1e-10,qg.orgDomain()[1]]),jf({withTransition:!1,withY:!1,withSubchart:!1}),void("mousemove"===Ef.event.sourceEvent.type&&(Mi=!0)))}function mf(){function a(){b.forEach(function(a){a()})}var b=[];return a.add=function(a){b.push(a)},a}function nf(){lj.attr("width",_f).attr("height",ag),lj.select("#"+Bi).select("rect").attr("width",Xf).attr("height",Zf),lj.select("#"+Ci).select("rect").attr("x",B).attr("y",C).attr("width",H).attr("height",I),lj.select("#"+Di).select("rect").attr("x",D).attr("y",E).attr("width",J).attr("height",K),lj.select("."+f.zoomRect).attr("width",Xf).attr("height",Zf),rj.style("max-height",ag+"px")}function of(a){a=a||{},a.withTransition=d(a.withTransition)?a.withTransition:!0,a.withTransform=d(a.withTransform)?a.withTransform:!1,a.withLegend=d(a.withLegend)?a.withLegend:!1,a.withUpdateXDomain=!0,a.withUpdateOrgXDomain=!0,a.withTransitionForExit=!1,n(),R(),nf(),m(a.withTransition),jf(a)}function pf(a){var b,c,d,e,g,h,i,j,k,l,m,n;i=nj.select("."+f.chartTexts).selectAll("."+f.chartText).data(a).attr("class",kd),j=i.enter().append("g").attr("class",kd).style("opacity",0).style("pointer-events","none"),j.append("g").attr("class",Wc).style("fill",Qi),e=nj.select("."+f.chartBars).selectAll("."+f.chartBar).data(a).attr("class",md),d=e.enter().append("g").attr("class",md).style("opacity",0).style("pointer-events","none"),d.append("g").attr("class",cd).style("cursor",function(a){return Sg(a)?"pointer":null}),c=nj.select("."+f.chartLines).selectAll("."+f.chartLine).data(a).attr("class",ld),b=c.enter().append("g").attr("class",ld).style("opacity",0).style("pointer-events","none"),b.append("g").attr("class",$c),b.append("g").attr("class",gd),b.append("g").attr("class",function(a){return Uc(f.selectedCircles,a.id)}),b.append("g").attr("class",ad).style("fill",Qi).style("cursor",function(a){return Sg(a)?"pointer":null}),a.forEach(function(a){nj.selectAll("."+f.selectedCircles+od(a.id)).selectAll("."+f.selectedCircle).each(function(b,c){b.value=a.values[c].value})}),h=nj.select("."+f.chartArcs).selectAll("."+f.chartArc).data(hg(a)).attr("class",nd),g=h.enter().append("g").attr("class",nd),g.append("g").attr("class",ed),g.append("text").attr("dy",".35em").style("opacity",0).style("text-anchor","middle").style("pointer-events","none"),_g&&(n=oj.select("."+f.chartBars).selectAll("."+f.chartBar).data(a).attr("class",md),m=n.enter().append("g").style("opacity",0).attr("class",md),m.append("g").attr("class",cd),l=oj.select("."+f.chartLines).selectAll("."+f.chartLine).data(a).attr("class",ld),k=l.enter().append("g").style("opacity",0).attr("class",ld),k.append("g").attr("class",$c)),lj.selectAll("."+f.target).filter(function(a){return Gc(a.id)}).transition().duration(Tf).style("opacity",1)}function qf(a,b){(b.type||b.types)&&a.forEach(function(a){b.types?be(a.id,b.types[a.id]):be(a.id,b.type)}),Ff.data.targets.forEach(function(b){for(var c=0;cf&&(f=(l-k)/2,w=0,C++)),B[a]=C,A[C]=f,x[a]=w,w+=k}var f,g,h=b.getBoundingClientRect(),i=10*Math.ceil((h.width+s)/10),j=10*Math.ceil((h.height+r)/10),k=$i?j:i,l=$i?Q():P();return d&&(w=0,C=0,t=0,u=0),ch&&!Hc(c)?void(y[c]=z[c]=B[c]=x[c]=0):(y[c]=i,z[c]=j,(!t||i>=t)&&(t=i),(!u||j>=u)&&(u=j),g=$i?u:t,void(hh?(Object.keys(y).forEach(function(a){y[a]=t}),Object.keys(z).forEach(function(a){z[a]=u}),f=(l-g*a.length)/2,v>f?(w=0,C=0,a.forEach(function(a){e(a)})):e(c,!0)):e(c)))}var g,h,i,j,k,l,o,p,q,r=4,s=26,t=0,u=0,v=10,w=0,x={},y={},z={},A=[0],B={},C=0,D=pj.selectAll("."+f.legendItemFocused).size();b=b||{},p=d(b.withTransition)?b.withTransition:!0,q=d(b.withTransitionForTransform)?b.withTransitionForTransform:!0,$i?(g=function(a){return t*(.2+B[a])},j=function(a){return A[B[a]]+x[a]}):(g=function(a){return A[B[a]]+x[a]},j=function(a){return u*(.2+B[a])}),h=function(a,b){return g(a,b)+14},k=function(a,b){return j(a,b)+9},i=function(a,b){return g(a,b)-4},l=function(a,b){return j(a,b)-7},o=pj.selectAll("."+f.legendItem).data(a).enter().append("g").attr("class",function(a){return Uc(f.legendItem,a)}).style("visibility",function(a){return Hc(a)?"visible":"hidden"}).style("cursor","pointer").on("click",function(a){"function"==typeof eh?eh(a):Ff.toggle(a)}).on("mouseover",function(a){Ef.select(this).classed(f.legendItemFocused,!0),Oi||Ff.focus(a),"function"==typeof fh&&fh(a)}).on("mouseout",function(a){Ef.select(this).classed(f.legendItemFocused,!1),Oi||Ff.revert(),"function"==typeof gh&&gh(a)}),o.append("text").text(function(a){return d(Eg[a])?Eg[a]:a}).each(function(a,b){e(this,a,0===b)}).style("pointer-events","none").attr("x",$i?h:-200).attr("y",$i?-200:k),o.append("rect").attr("class",f.legendItemEvent).style("fill-opacity",0).attr("x",$i?i:-200).attr("y",$i?-200:l).attr("width",function(a){return y[a]}).attr("height",function(a){return z[a]}),o.append("rect").attr("class",f.legendItemTile).style("pointer-events","none").style("fill",function(a){return Qi(a)}).attr("x",$i?h:-200).attr("y",$i?-200:j).attr("width",10).attr("height",10),pj.selectAll("text").data(a).text(function(a){return d(Eg[a])?Eg[a]:a}).each(function(a,b){e(this,a,0===b)}).transition().duration(p?250:0).attr("x",h).attr("y",k),pj.selectAll("rect."+f.legendItemEvent).data(a).transition().duration(p?250:0).attr("x",i).attr("y",l),pj.selectAll("rect."+f.legendItemTile).data(a).transition().duration(p?250:0).attr("x",g).attr("y",j),pj.selectAll("."+f.legendItem).classed(f.legendItemHidden,function(a){return!Gc(a)}).transition().style("opacity",function(a){var b=Ef.select(this);return Gc(a)?!D||b.classed(f.legendItemFocused)?tf(b):uf(b):cj}),N(t),O(u),M(C),n(),R(),nf(),m(q,c)}function Af(a){return Ec(Ff.data.targets,a.id)}function Bf(a){return"data"in a&&Ec(Ff.data.targets,a.data.id)}function Cf(a){var b=a&&a.value?a.value:null,c=a&&a["class"]?a["class"]:null;return b?function(a){return a.value!==b}:c?function(a){return a["class"]!==c}:function(){return!0}}function Df(a,b,c){var d=!he(Ff.data.targets);Oi=!1,be(a,b),of(c||{withTransitionForAxis:d})}var Ef=a.d3?a.d3:a.require?a.require("d3"):void 0,Ff={data:{},axis:{},legend:{}},Gf={},Hf=h(["bindto"],"#chart"),If=h(["size","width"]),Jf=h(["size","height"]),Kf=h(["padding","left"],50),Lf=h(["padding","right"]),Mf=h(["zoom","enabled"],!1),Nf=h(["zoom","extent"]),Of=h(["zoom","privileged"],!1),Pf=h(["onenter"],function(){}),Qf=h(["onleave"],function(){}),Rf=h(["onresize"],function(){}),Sf=h(["onresized"],function(){}),Tf=h(["transition","duration"],350);g("data","data is required in config");var Uf,Vf,Wf,Xf,Yf,Zf,$f,_f,ag,bg,cg,dg,eg,fg,gg,hg,ig,jg,kg,lg,mg,ng,og,pg,qg,rg,sg,tg,ug,vg,wg,xg,yg,zg,Ag=h(["data","x"]),Bg=h(["data","xs"],{}),Cg=h(["data","x_format"]),Dg=h(["data","id_converter"],function(a){return a}),Eg=h(["data","names"],{}),Fg=h(["data","classes"],{}),Gg=h(["data","groups"],[]),Hg=h(["data","axes"],{}),Ig=h(["data","type"]),Jg=h(["data","types"],{}),Kg=h(["data","labels"],{}),Lg=h(["data","order"]),Mg=h(["data","regions"],{}),Ng=h(["data","color"]),Og=h(["data","colors"],{}),Pg=h(["data","hide"],!1),Qg=h(["data","selection","enabled"],!1),Rg=h(["data","selection","grouped"],!1),Sg=h(["data","selection","isselectable"],function(){return!0}),Tg=h(["data","selection","multiple"],!0),Ug=h(["data","onclick"],function(){}),Vg=h(["data","onenter"],function(){}),Wg=h(["data","onleave"],function(){}),Xg=h(["data","onselected"],function(){}),Yg=h(["data","onunselected"],function(){}),Zg=h(["data","ondragstart"],function(){}),$g=h(["data","ondragend"],function(){}),_g=h(["subchart","show"],!1),ah=h(["subchart","size","height"],60),bh=h(["color","pattern"],[]),ch=h(["legend","show"],!0),dh=h(["legend","position"],"bottom"),eh=h(["legend","item","onclick"]),fh=h(["legend","item","onmouseover"]),gh=h(["legend","item","onmouseout"]),hh=h(["legend","equally"],!1),ih=h(["axis","rotated"],!1),jh=h(["axis","x","show"],!0),kh=h(["axis","x","type"],"indexed"),lh=h(["axis","x","localtime"],!0),mh=h(["axis","x","categories"],[]),nh=h(["axis","x","tick","centered"],!1),oh=h(["axis","x","tick","format"]),ph=h(["axis","x","tick","culling"],{}),qh=h(["axis","x","tick","culling","max"],10),rh=h(["axis","x","tick","count"]),sh=h(["axis","x","tick","fit"],!0),th=h(["axis","x","tick","values"],null),uh=h(["axis","x","tick","rotate"]),vh=h(["axis","x","max"],null),wh=h(["axis","x","min"],null),xh=h(["axis","x","padding"],{}),yh=h(["axis","x","height"]),zh=h(["axis","x","default"]),Ah=h(["axis","x","label"],{}),Bh=h(["axis","y","show"],!0),Ch=h(["axis","y","max"]),Dh=h(["axis","y","min"]),Eh=h(["axis","y","center"]),Fh=h(["axis","y","label"],{}),Gh=h(["axis","y","inner"],!1),Hh=h(["axis","y","tick","format"]),Ih=h(["axis","y","padding"]),Jh=h(["axis","y","ticks"],10),Kh=h(["axis","y2","show"],!1),Lh=h(["axis","y2","max"]),Mh=h(["axis","y2","min"]),Nh=h(["axis","y2","center"]),Oh=h(["axis","y2","label"],{}),Ph=h(["axis","y2","inner"],!1),Qh=h(["axis","y2","tick","format"]),Rh=h(["axis","y2","padding"]),Sh=h(["axis","y2","ticks"],10),Th=h(["grid","x","show"],!1),Uh=h(["grid","x","type"],"tick"),Vh=h(["grid","x","lines"],[]),Wh=h(["grid","y","show"],!1),Xh=h(["grid","y","lines"],[]),Yh=h(["grid","y","ticks"],10),Zh=h(["point","show"],!0),$h=h(["point","r"],2.5),_h=h(["point","focus","line","enabled"],!0),ai=h(["point","focus","expand","enabled"],!0),bi=h(["point","focus","expand","r"]),ci=h(["point","focus","select","r"]),di=h(["line","connect_null"],!1),ei=h(["bar","width"]),fi=h(["bar","width","ratio"],.6),gi=h(["pie","label","show"],!0),hi=h(["pie","label","format"]),ii=h(["pie","expand"],!0),ji=h(["pie","onclick"],function(){}),ki=h(["pie","onmouseover"],function(){}),li=h(["pie","onmouseout"],function(){}),mi=h(["donut","label","show"],!0),ni=h(["donut","label","format"]),oi=h(["donut","expand"],!0),pi=h(["donut","title"],""),qi=h(["donut","onclick"],function(){}),ri=h(["donut","onmouseover"],function(){}),si=h(["donut","onmouseout"],function(){}),ti=h(["regions"],[]),ui=h(["tooltip","show"],!0),vi=h(["tooltip","format","title"]),wi=h(["tooltip","format","value"]),xi=h(["tooltip","contents"],function(a,b,c,d){var e,g,h,i,j,k=vi?vi:b,l=wi?wi:c;for(g=0;g"+(h||0===h?""+h+"":"")),j=a[g].name,i=l(a[g].value,a[g].ratio,a[g].id,a[g].index),e+="",e+=""+j+"",e+=""+i+"",e+="");return e+""}),yi=h(["tooltip","init","show"],!1),zi=h(["tooltip","init","x"],0),Ai=h(["tooltip","init","position"],{top:"0px",left:"50px"}),Bi=("string"==typeof Hf?Hf.replace("#",""):Hf.id)+"-clip",Ci=Bi+"-xaxis",Di=Bi+"-yaxis",Ei=i(Bi),Fi=i(Ci),Gi=i(Di),Hi="timeseries"===kh,Ii="categorized"===kh,Ji=!Hi&&(Ag||Be(Bg)),Ki=null,Li=!1,Mi=!1,Ni=!1,Oi=!1,Pi=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],Qi=ve(Og,Be(bh)?bh:Pi,Ng),Ri=lh?Ef.time.format:Ef.time.format.utc,Si=function(){var a=[[Ri("%Y/%-m/%-d"),function(){return!0}],[Ri("%-m/%-d"),function(a){return a.getMonth()}],[Ri("%-m/%-d"),function(a){return 1!==a.getDate()}],[Ri("%-m/%-d"),function(a){return a.getDay()&&1!==a.getDate()}],[Ri("%I %p"),function(a){return a.getHours()}],[Ri("%I:%M"),function(a){return a.getMinutes()}],[Ri(":%S"),function(a){return a.getSeconds()}],[Ri(".%L"),function(a){return a.getMilliseconds()}]];return function(b){for(var c=a.length-1,d=a[c];!d[1](b);)d=a[--c];return d[0](b)}}(),Ti=[],Ui=[],Vi=ih?"left":"bottom",Wi=ih?Gh?"top":"bottom":Gh?"right":"left",Xi=ih?Ph?"bottom":"top":Ph?"left":"right",Yi=ih?"left":"bottom",Zi={main:function(){return"translate("+Uf.left+","+Uf.top+")"},context:function(){return"translate("+Vf.left+","+Vf.top+")"},legend:function(){return"translate("+Wf.left+","+Wf.top+")"},x:function(){return"translate(0,"+(ih?0:Zf)+")"},y:function(){return"translate(0,"+(ih?Zf:0)+")"},y2:function(){return"translate("+(ih?0:Xf)+","+(ih?1:0)+")"},subx:function(){return"translate(0,"+(ih?0:$f)+")"},arc:function(){return"translate("+Xf/2+","+Zf/2+")"}},$i="right"===dh,_i=0,aj=0,bj=0,cj=.15,dj=30,ej=ih&&!jh?0:30,fj=5;hg=Ef.layout.pie().value(function(a){return a.values.reduce(function(a,b){return a+b.value},0)});var gj,hj=function(){var a=Ef.svg.line().x(ih?function(a){return V(a.id)(a.value)}:Fd).y(ih?Fd:function(a){return V(a.id)(a.value)});return di||(a=a.defined(function(a){return null!=a.value})),function(b){var c,d,e=di?Ne(b.values):b.values;return ie(b)?(a.interpolate(je(b)?"cardinal":"linear"),Mg[b.id]?af(e,qg,V(b.id),Mg[b.id]):a(e)):(c=e[0]?qg(e[0].x):0,d=e[0]?V(b.id)(e[0].value):0,ih?"M "+d+" "+c:"M "+c+" "+d)}}(),ij=function(){var a;return a=ih?Ef.svg.area().x0(function(a){return V(a.id)(0)}).x1(function(a){return V(a.id)(a.value)}).y(Fd):Ef.svg.area().x(Fd).y0(function(a){return V(a.id)(0)}).y1(function(a){return V(a.id)(a.value)}),function(b){var c,d,e=Ne(b.values);return ce([b],"area")||ce([b],"area-spline")?(a.interpolate(je(b)?"cardinal":"linear"),a(e)):(c=e[0]?qg(e[0].x):0,d=e[0]?V(b.id)(e[0].value):0,ih?"M "+d+" "+c:"M "+c+" "+d)}}(),jj=function(){var a=Ef.svg.line().x(ih?function(a){return W(a.id)(a.value)}:Id).y(ih?Id:function(a){return W(a.id)(a.value)});return function(b){var c=Ne(b.values);return ie(b)?a(c):"M "+tg(c[0].x)+" "+W(b.id)(c[0].value)}}(),kj=function(){};gj=Ef.svg.brush().on("brush",kf),gj.update=function(){return oj&&oj.select("."+f.brush).call(this),this},gj.scale=function(a){return ih?this.y(a):this.x(a)},Mf&&(kj=Ef.behavior.zoom().on("zoomstart",function(){kj.altDomain=Ef.event.sourceEvent.altKey?qg.orgDomain():null}).on("zoom",Mf?lf:null),kj.scale=function(a){return ih?this.y(a):this.x(a)},kj.orgScaleExtent=function(){var a=Nf?Nf:[1,10];return[a[0],Math.max(zc()/a[1],a[1])]},kj.updateScaleExtent=function(){var a=ac(qg.orgDomain())/ac(sj),b=this.orgScaleExtent();return this.scaleExtent([b[0]*a,b[1]*a]),this});var lj,mj,nj,oj,pj,qj,rj,sj,tj,uj={};if(Ff.focus=function(a){function b(a){Ic(a).transition().duration(100).style("opacity",1)}var c=lj.selectAll(pd(a)),d=c.filter(Af),e=c.filter(Bf);Ff.revert(),Ff.defocus(),b(d.classed(f.focused,!0)),b(e),he(Ff.data.targets)&&Nb(a,!0),vf(a,!0)},Ff.defocus=function(a){function b(a){Ic(a).transition().duration(100).style("opacity",.3)}var c=lj.selectAll(pd(a)),d=c.filter(Af),e=c.filter(Bf);Ff.revert(),b(d.classed(f.focused,!1)),b(e),he(Ff.data.targets)&&Ob(a),vf(a,!1)},Ff.revert=function(a){function b(a){Ic(a).transition().duration(100).style("opacity",1)}var c=lj.selectAll(pd(a)),d=c.filter(Af),e=c.filter(Bf);b(d.classed(f.focused,!1)),b(e),he(Ff.data.targets)&&Ob(a),wf()},Ff.show=function(a,b){a=Dc(a),b=b||{},Mc(a),lj.selectAll(qd(a)).transition().style("opacity",1),b.withLegend&&xf(a),jf({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0})},Ff.hide=function(a,b){a=Dc(a),b=b||{},Lc(a),lj.selectAll(qd(a)).transition().style("opacity",0),b.withLegend&&yf(a),jf({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0})},Ff.toggle=function(a){Gc(a)?Ff.hide(a):Ff.show(a)},Ff.unzoom=function(){gj.clear().update(),jf({withUpdateXDomain:!0})},Ff.load=function(a){return a.xs&&nc(a.xs),"classes"in a&&Object.keys(a.classes).forEach(function(b){Fg[b]=a.classes[b]}),"categories"in a&&Ii&&(mh=a.categories,wg.categories(mh)),"cacheIds"in a&&bc(a.cacheIds)?void qf(dc(a.cacheIds),a.done):void("unload"in a?sf(Dc("boolean"==typeof a.unload&&a.unload?null:a.unload),function(){rf(a)}):rf(a))},Ff.unload=function(a,b){sf(Dc(a),function(){jf({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0}),"function"==typeof b&&b()})},Ff.selected=function(a){return Ef.merge(nj.selectAll("."+f.shapes+od(a)).selectAll("."+f.shape).filter(function(){return Ef.select(this).classed(f.SELECTED)}).map(function(a){return a.map(function(a){var b=a.__data__;return b.data?b.data:b})}))},Ff.select=function(a,b,c){Qg&&nj.selectAll("."+f.shapes).selectAll("."+f.shape).each(function(e,g){var h=Ef.select(this),i=e.data?e.data.id:e.id,j=Me(this),k=Rg||!a||a.indexOf(i)>=0,l=!b||b.indexOf(g)>=0,m=h.classed(f.SELECTED);k&&l?Sg(e)&&!m&&j(!0,h.classed(f.SELECTED,!0),e,g):d(c)&&c&&m&&j(!1,h.classed(f.SELECTED,!1),e,g)})},Ff.unselect=function(a,b){Qg&&nj.selectAll("."+f.shapes).selectAll("."+f.shape).each(function(c,d){var e=Ef.select(this),g=c.data?c.data.id:c.id,h=Me(this),i=Rg||!a||a.indexOf(g)>=0,j=!b||b.indexOf(d)>=0,k=e.classed(f.SELECTED);i&&j&&Sg(c)&&k&&h(!1,e.classed(f.SELECTED,!1),c,d) +})},Ff.toLine=function(a){Df(a,"line")},Ff.toSpline=function(a){Df(a,"spline")},Ff.toBar=function(a){Df(a,"bar")},Ff.toScatter=function(a){Df(a,"scatter")},Ff.toArea=function(a){Df(a,"area")},Ff.toAreaSpline=function(a){Df(a,"area-spline")},Ff.toPie=function(a){Df(a,"pie",{withTransform:!0})},Ff.toDonut=function(a){Df(a,"donut",{withTransform:!0})},Ff.groups=function(a){return c(a)?Gg:(Gg=a,jf(),Gg)},Ff.xgrids=function(a){return a?(Vh=a,jf(),Vh):Vh},Ff.xgrids.add=function(a){return a?Ff.xgrids(Vh.concat(a)):void 0},Ff.xgrids.remove=function(a){var b=Cf(a);return Ff.xgrids(Vh.filter(b))},Ff.ygrids=function(a){return a?(Xh=a,jf(),Xh):Xh},Ff.ygrids.add=function(a){return a?Ff.ygrids(Xh.concat(a)):void 0},Ff.ygrids.remove=function(a){var b=Cf(a);return Ff.ygrids(Xh.filter(b))},Ff.regions=function(a){return c(a)?ti:(ti=a,jf(),ti)},Ff.regions.add=function(a){return c(a)?ti:(ti=ti.concat(a),jf(),ti)},Ff.regions.remove=function(a,c){var e=[].concat(a);return c=d(c)?c:{},e.forEach(function(a){var d=b(c.duration)?c.duration:0;lj.selectAll("."+a).transition().duration(d).style("fill-opacity",0).remove(),ti=ti.filter(function(b){return b.classes.indexOf(a)<0})}),ti},Ff.data.get=function(a){var b=Ff.data.getAsTarget(a);return d(b)?b.values.map(function(a){return a.value}):void 0},Ff.data.getAsTarget=function(a){var b=Fc(function(b){return b.id===a});return b.length>0?b[0]:void 0},Ff.data.names=function(a){return arguments.length?(Object.keys(a).forEach(function(b){Eg[b]=a[b]}),zf(Cc(Ff.data.targets),{withTransition:!0}),Eg):Eg},Ff.x=function(a){return arguments.length&&(qc(Ff.data.targets,a),jf({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})),Ff.data.xs},Ff.xs=function(a){return arguments.length&&(rc(Ff.data.targets,a),jf({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})),Ff.data.xs},Ff.axis.labels=function(a){arguments.length&&(Object.keys(a).forEach(function(b){bb(b,a[b])}),Db())},Ff.axis.max=function(a){arguments.length&&("object"==typeof a?(b(a.y)&&(Ch=+a.y),b(a.y2)&&(Lh=+a.y2)):Ch=Lh=+a,jf())},Ff.axis.min=function(a){arguments.length&&("object"==typeof a?(b(a.y)&&(Dh=+a.y),b(a.y2)&&(Mh=+a.y2)):Dh=Mh=+a,jf())},Ff.axis.range=function(a){arguments.length&&("undefined"!=typeof a.max&&Ff.axis.max(a.max),"undefined"!=typeof a.min&&Ff.axis.min(a.min))},Ff.legend.show=function(a){xf(Dc(a)),jf({withLegend:!0})},Ff.legend.hide=function(a){yf(Dc(a)),jf({withLegend:!0})},Ff.resize=function(a){If=a?a.width:null,Jf=a?a.height:null,of({withLegend:!0,withTransition:!1,withTransitionForTransform:!1})},Ff.destroy=function(){Ff.data.targets=void 0,Ff.data.xs={},rj.html(""),a.onresize=null},"url"in e.data)Ef.xhr(e.data.url,function(a,b){var c,d=Ef.csv.parseRows(b.response);1===d.length?(c=[{}],d[0].forEach(function(a){c[0][a]=null})):c=Ef.csv.parse(b.response),bf(c)});else if("rows"in e.data)bf(tc(e.data.rows));else{if(!("columns"in e.data))throw Error("url or rows or columns is required.");bf(uc(e.data.columns))}return Ff},"function"==typeof a.define&&a.define.amd?a.define("c3",["d3"],e):a.c3=e}(window); \ No newline at end of file diff --git a/htdocs/data/c3_test2_ts.csv b/htdocs/data/c3_test2_ts.csv new file mode 100644 index 0000000..2b8d00e --- /dev/null +++ b/htdocs/data/c3_test2_ts.csv @@ -0,0 +1,6 @@ +x,data1,data2,data3 +2013-04-01,20,180,400 +2013-04-02,40,150,310 +2013-04-03,70,120,470 +2013-04-04,50,170,400 +2013-04-05,80,200,380 \ No newline at end of file diff --git a/htdocs/data/c3_test_ts.csv b/htdocs/data/c3_test_ts.csv new file mode 100644 index 0000000..5bfbd34 --- /dev/null +++ b/htdocs/data/c3_test_ts.csv @@ -0,0 +1,6 @@ +x,data1,data2,data3 +2012-12-31,120,80,200 +2013-01-01,140,50,210 +2013-01-02,170,100,250 +2013-01-03,150,70,300 +2013-01-04,180,120,280 \ No newline at end of file diff --git a/htdocs/samples/axes_x_tick_culling.html b/htdocs/samples/axes_x_tick_culling.html new file mode 100644 index 0000000..f0f54ca --- /dev/null +++ b/htdocs/samples/axes_x_tick_culling.html @@ -0,0 +1,39 @@ + + + + + +
+ + + + + + diff --git a/htdocs/samples/axes_x_tick_rotate.html b/htdocs/samples/axes_x_tick_rotate.html new file mode 100644 index 0000000..9cfb531 --- /dev/null +++ b/htdocs/samples/axes_x_tick_rotate.html @@ -0,0 +1,55 @@ + + + + + +
+ + + + + + diff --git a/htdocs/samples/custom_x_scale.html b/htdocs/samples/custom_x_scale.html index 6c8aecc..f56569e 100644 --- a/htdocs/samples/custom_x_scale.html +++ b/htdocs/samples/custom_x_scale.html @@ -36,6 +36,15 @@ setTimeout(function () { chart.x([200, 210, 350, 400, 550, 750]); }, 2000); + + setTimeout(function () { + chart.load({ + columns: [ + ['data3', 300, 410, 350, 400, 500, 350], + ] + }); + }, 3000); + diff --git a/htdocs/samples/custom_xs_scale.html b/htdocs/samples/custom_xs_scale.html index 8bd7715..5dd78b8 100644 --- a/htdocs/samples/custom_xs_scale.html +++ b/htdocs/samples/custom_xs_scale.html @@ -26,24 +26,38 @@ }, onenter: function (d) { console.log("onenter", d); }, onleave: function (d) { console.log("onleave", d); } - }, + } }); setTimeout(function () { chart.load({ columns: [ - ['data1', 100, 210, 150, 200, null, 150], + ['data1', 100, 210, 150, null, 200, 150], ['data2', 200, 310, 50, 400, 120, 250, 10], ] }); }, 1000); setTimeout(function () { - chart.xs({ - 'data1': [200, 210, 350, 400, 600, 750] -// 'data2': [200, 210, 350, 400, 550, 750, 900] + chart.load({ + columns: [ + ['x2', 150, 220, 230, 400, 540, 600, 800], + ['data2', 200, 310, 50, 400, 120, 250, 10], + ['data3', 300, 410, 350, 600, 420, 550, 310], + ], + xs: { + data3: 'x2' + } }); }, 2000); + + setTimeout(function () { + chart.xs({ + 'data1': [200, 210, 350, 400, 600, 750], + 'data2': [200, 210, 350, 400, 550, 750, 900] + }); + }, 3000); + diff --git a/htdocs/samples/data_hide.html b/htdocs/samples/data_hide.html new file mode 100644 index 0000000..fb3469b --- /dev/null +++ b/htdocs/samples/data_hide.html @@ -0,0 +1,24 @@ + + + + + +
+ + + + + + diff --git a/htdocs/samples/data_load_timeseries.html b/htdocs/samples/data_load_timeseries.html new file mode 100644 index 0000000..46d2fcc --- /dev/null +++ b/htdocs/samples/data_load_timeseries.html @@ -0,0 +1,53 @@ + + + + + +
+ + + + + + diff --git a/htdocs/samples/grid_x_lines.html b/htdocs/samples/grid_x_lines.html index 0b65e54..6f1e3fe 100644 --- a/htdocs/samples/grid_x_lines.html +++ b/htdocs/samples/grid_x_lines.html @@ -20,21 +20,21 @@ }, grid: { x: { - lines: [{value: 3, text:'Lable 3'}, {value: 4.5, text: 'Lable 4.5'}] + lines: [{value: 3, text:'Label 3'}, {value: 4.5, text: 'Label 4.5'}] } } }); setTimeout(function () { - chart.xgrids([{value: 1, text:'Lable 1'}, {value: 4, text: 'Lable 4'}]); + chart.xgrids([{value: 1, text:'Label 1'}, {value: 4, text: 'Label 4'}]); }, 1000); setTimeout(function () { - chart.xgrids([{value: 2, text:'Lable 2'}]); + chart.xgrids([{value: 2, text:'Label 2'}]); }, 2000); setTimeout(function () { - chart.xgrids.add([{value: 3, text:'Lable 3', class:'hoge'}]); + chart.xgrids.add([{value: 3, text:'Label 3', class:'hoge'}]); }, 3000); setTimeout(function () { diff --git a/htdocs/samples/grid_y_lines.html b/htdocs/samples/grid_y_lines.html index 260bd19..e1e7207 100644 --- a/htdocs/samples/grid_y_lines.html +++ b/htdocs/samples/grid_y_lines.html @@ -20,21 +20,21 @@ }, grid: { y: { - lines: [{value: 30, text:'Lable 30'}, {value: 250, text: 'Lable 250'}] + lines: [{value: 30, text:'Label 30'}, {value: 250, text: 'Label 250'}] } } }); setTimeout(function () { - chart.ygrids([{value: 130, text:'Lable 130'}, {value: 50, text: 'Lable 50'}]); + chart.ygrids([{value: 130, text:'Label 130'}, {value: 50, text: 'Label 50'}]); }, 1000); setTimeout(function () { - chart.ygrids([{value: 130, text:'Lable 130', class: 'hoge'}]); + chart.ygrids([{value: 130, text:'Label 130', class: 'hoge'}]); }, 2000); setTimeout(function () { - chart.ygrids.add([{value: 230, text:'Lable 230'}]); + chart.ygrids.add([{value: 230, text:'Label 230'}]); }, 3000); setTimeout(function () { diff --git a/htdocs/samples/grids.html b/htdocs/samples/grids.html new file mode 100644 index 0000000..04c06da --- /dev/null +++ b/htdocs/samples/grids.html @@ -0,0 +1,32 @@ + + + + + +
+ + + + + + diff --git a/htdocs/samples/point_r.html b/htdocs/samples/point_r.html new file mode 100644 index 0000000..46ee3ec --- /dev/null +++ b/htdocs/samples/point_r.html @@ -0,0 +1,28 @@ + + + + + +
+ + + + + + diff --git a/htdocs/samples/simple.html b/htdocs/samples/simple.html index 31918eb..dc83518 100644 --- a/htdocs/samples/simple.html +++ b/htdocs/samples/simple.html @@ -6,7 +6,7 @@
- +