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

Rickshaw.Graph.Renderer = Rickshaw.Class.create( {

    
initialize: function(args) {
        
this.graph = args.graph;
        
this.tension = args.tension || this.tension;
        
this.graph.unstacker = this.graph.unstacker || new Rickshaw.Graph.Unstacker( { graph: this.graph } );
        
this.configure(args);
    },

    
seriesPathFactory: function() {
        
//implement in subclass
    
},

    
seriesStrokeFactory: function() {
        
// implement in subclass
    
},

    
defaults: function() {
        return {
            
tension: 0.8,
            
strokeWidth: 2,
            
unstack: true,
            
padding: { top: 0.01, right: 0, bottom: 0.01, left: 0 },
            
stroke: false,
            
fill: false
        
};
    },

    
domain: function(data) {

        var 
stackedData = data || this.graph.stackedData || this.graph.stackData();
        var 
firstPoint = stackedData[0][0];

        if (
firstPoint === undefined) {
            return { 
x: [null, null], y: [null, null] };
        }

        var 
xMin = firstPoint.x;
        var 
xMax = firstPoint.x;

        var 
yMin = firstPoint.y + firstPoint.y0;
        var 
yMax = firstPoint.y + firstPoint.y0;

        
stackedData.forEach( function(series) {

            
series.forEach( function(d) {

                if (
d.y == null) return;

                var 
y = d.y + d.y0;

                if (
y < yMin) yMin = y;
                if (
y > yMax) yMax = y;
            } );

            if (
series[0].x < xMin) xMin = series[0].x;
            if (
series[series.length - 1].x > xMax) xMax = series[series.length - 1].x;
        } );

        
xMin -= (xMax - xMin) * this.padding.left;
        
xMax += (xMax - xMin) * this.padding.right;

        
yMin = this.graph.min === 'auto' ? yMin : this.graph.min || 0;
        
yMax = this.graph.max === undefined ? yMax : this.graph.max;

        if (
this.graph.min === 'auto' || yMin < 0) {
            
yMin -= (yMax - yMin) * this.padding.bottom;
        }

        if (
this.graph.max === undefined) {
            
yMax += (yMax - yMin) * this.padding.top;
        }

        return { 
x: [xMin, xMax], y: [yMin, yMax] };
    },

    
render: function(args) {

        
args = args || {};

        var 
graph = this.graph;
        var 
series = args.series || graph.series;

        var 
vis = args.vis || graph.vis;
        
vis.selectAll('*').remove();

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

        var 
nodes = vis.selectAll("path")
            .
data(data)
            .
enter().append("svg:path")
            .
attr("d", this.seriesPathFactory());

        var 
i = 0;
        
series.forEach( function(series) {
            if (
series.disabled) return;
            
series.path = nodes[0][i++];
            
this._styleSeries(series);
        }, 
this );
    },

    
_styleSeries: function(series) {

        var 
fill = this.fill ? series.color : 'none';
        var 
stroke = this.stroke ? series.color : 'none';

        
series.path.setAttribute('fill', fill);
        
series.path.setAttribute('stroke', stroke);
        
series.path.setAttribute('stroke-width', this.strokeWidth);
        
series.path.setAttribute('class', series.className);
    },

    
configure: function(args) {

        
args = args || {};

        
Rickshaw.keys(this.defaults()).forEach( function(key) {

            if (!
args.hasOwnProperty(key)) {
                
this[key] = this[key] || this.graph[key] || this.defaults()[key];
                return;
            }

            if (
typeof this.defaults()[key] == 'object') {

                
Rickshaw.keys(this.defaults()[key]).forEach( function(k) {

                    
this[key][k] =
                        
args[key][k] !== undefined ? args[key][k] :
                        
this[key][k] !== undefined ? this[key][k] :
                        
this.defaults()[key][k];
                }, 
this );

            } else {
                
this[key] =
                    
args[key] !== undefined ? args[key] :
                    
this[key] !== undefined ? this[key] :
                    
this.graph[key] !== undefined ? this.graph[key] :
                    
this.defaults()[key];
            }

        }, 
this );
    },

    
setStrokeWidth: function(strokeWidth) {
        if (
strokeWidth !== undefined) {
            
this.strokeWidth = strokeWidth;
        }
    },

    
setTension: function(tension) {
        if (
tension !== undefined) {
            
this.tension = tension;
        }
    }
} );
?>
Онлайн: 2
Реклама