c3_chart_internal_fn.redrawSubchart = function()

in TestApplications/Web/js/lib/components/c3-0.4.2/c3.js [5097:5176]


    c3_chart_internal_fn.redrawSubchart = function (withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices) {
        var $$ = this, d3 = $$.d3, context = $$.context, config = $$.config,
            contextLine,  contextArea, contextBar, drawAreaOnSub, drawBarOnSub, drawLineOnSub,
            barData = $$.barData.bind($$),
            lineData = $$.lineData.bind($$),
            classBar = $$.classBar.bind($$),
            classLine = $$.classLine.bind($$),
            classArea = $$.classArea.bind($$),
            initialOpacity = $$.initialOpacity.bind($$);

        // subchart
        if (config.subchart_show) {
            // reflect main chart to extent on subchart if zoomed
            if (d3.event && d3.event.type === 'zoom') {
                $$.brush.extent($$.x.orgDomain()).update();
            }
            // update subchart elements if needed
            if (withSubchart) {

                // rotate tick text if needed
                if (!config.axis_rotated && config.axis_x_tick_rotate) {
                    $$.rotateTickText($$.axes.subx, transitions.axisSubX, config.axis_x_tick_rotate);
                }

                // extent rect
                if (!$$.brush.empty()) {
                    $$.brush.extent($$.x.orgDomain()).update();
                }
                // setup drawer - MEMO: this must be called after axis updated
                drawAreaOnSub = $$.generateDrawArea(areaIndices, true);
                drawBarOnSub = $$.generateDrawBar(barIndices, true);
                drawLineOnSub = $$.generateDrawLine(lineIndices, true);
                // bars
                contextBar = context.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar)
                    .data(barData);
                contextBar.enter().append('path')
                    .attr("class", classBar)
                    .style("stroke", 'none')
                    .style("fill", $$.color);
                contextBar
                    .style("opacity", initialOpacity)
                    .transition().duration(duration)
                    .attr('d', drawBarOnSub)
                    .style('opacity', 1);
                contextBar.exit().transition().duration(duration)
                    .style('opacity', 0)
                    .remove();
                // lines
                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", drawLineOnSub)
                    .style('opacity', 1);
                contextLine.exit().transition().duration(duration)
                    .style('opacity', 0)
                    .remove();
                // area
                contextArea = context.selectAll('.' + CLASS.areas).selectAll('.' + CLASS.area)
                    .data(lineData);
                contextArea.enter().append('path')
                    .attr("class", classArea)
                    .style("fill", $$.color)
                    .style("opacity", function () { $$.orgAreaOpacity = +d3.select(this).style('opacity'); return 0; });
                contextArea
                    .style("opacity", 0)
                    .transition().duration(duration)
                    .attr("d", drawAreaOnSub)
                    .style("fill", $$.color)
                    .style("opacity", $$.orgAreaOpacity);
                contextArea.exit().transition().duration(durationForExit)
                    .style('opacity', 0)
                    .remove();
            }
        }
    };