Вход Регистрация
Файл: templates/backend/default/assets/plugins/jquery-ricksaw-chart/js/Rickshaw.Graph.Renderer.Multi.js
Строк: 119
<?php
Rickshaw
.namespace('Rickshaw.Graph.Renderer.Multi');

Rickshaw.Graph.Renderer.Multi Rickshaw.Class.createRickshaw.Graph.Renderer, {

    
name'multi',

    
initialize: function($superargs) {

        
$super(args);
    },

    
defaults: function($super) {

        return 
Rickshaw.extend$super(), {
            
unstacktrue,
            
fillfalse,
            
stroketrue 
        
} );
    },

    
domain: function($super) {

        
this.graph.stackData();

        var 
domains = [];

        var 
groups this._groups();
        
this._stack(groups);

        
groups.forEach( function(group) {

            var 
data group.series
                
.filter( function(s) { return !s.disabled } )
                .
map( function(s) { return s.stack });

            if (!
data.length) return;

            var 
domain $super(data);
            
domains.push(domain);
        });

        var 
xMin d3.min(domains.map( function(d) { return d.x[0] } ));
        var 
xMax d3.max(domains.map( function(d) { return d.x[1] } ));
        var 
yMin d3.min(domains.map( function(d) { return d.y[0] } ));
        var 
yMax d3.max(domains.map( function(d) { return d.y[1] } ));

        return { 
x: [xMinxMax], y: [yMinyMax] };
    },

    
_groups: function() {

        var 
graph this.graph;

        var 
renderGroups = {};

        
graph.series.forEach( function(series) {

            if (
series.disabled) return;

            if (!
renderGroups[series.renderer]) {

                var 
ns "http://www.w3.org/2000/svg";
                var 
vis document.createElementNS(ns'g');

                
graph.vis[0][0].appendChild(vis);

                var 
renderer graph._renderers[series.renderer];

                
renderGroups[series.renderer] = {
                    
rendererrenderer,
                    
series: [],
                    
visd3.select(vis)
                };
            }
                
            
renderGroups[series.renderer].series.push(series);

        }, 
this);

        var 
groups = [];

        
Object.keys(renderGroups).forEach( function(key) {
            var 
group renderGroups[key];
            
groups.push(group);
        });

        return 
groups;
    },

    
_stack: function(groups) {

        
groups.forEach( function(group) {

            var 
series group.series
                
.filter( function(series) { return !series.disabled } );

            var 
data series
                
.map( function(series) { return series.stack } );

            if (!
group.renderer.unstack) {

                var 
layout d3.layout.stack();
                var 
stackedData Rickshaw.clone(layout(data));

                
series.forEach( function(seriesindex) {
                    
series._stack Rickshaw.clone(stackedData[index]);
                });
            }

        }, 
this );

        return 
groups;

    },

    
render: function() {

        
this.graph.series.forEach( function(series) {
            if (!
series.renderer) {
                throw new 
Error("Each series needs a renderer for graph 'multi' renderer");
            }
        });

        
this.graph.vis.selectAll('*').remove();

        var 
groups this._groups();
        
groups this._stack(groups);

        
groups.forEach( function(group) {

            var 
series group.series
                
.filter( function(series) { return !series.disabled } );

            
group.renderer.render({ seriesseriesvisgroup.vis });
            
series.forEach(function(s) { s.stack s._stack || s.stack || s.data; });
        });
    }

} );
?>
Онлайн: 0
Реклама