Вход Регистрация
Файл: src/public/plugins/metrics-graphics/common/y_axis.js
Строк: 242
<?php
function y_rug (args) {
  
'use strict';
  
args.rug_buffer_size args.chart_type === 'point'
    
args.buffer 2
    
args.buffer 3;

  var 
rug mg_make_rug(args'mg-y-rug');

  
rug.attr('x1'args.left 1)
    .
attr('x2'args.left args.rug_buffer_size)
    .
attr('y1'args.scalefns.yf)
    .
attr('y2'args.scalefns.yf);

  
mg_add_color_accessor_to_rug(rugargs'mg-y-rug-mono');
}

MG.y_rug y_rug;

function 
mg_change_y_extents_for_bars (argsmy) {
  if (
args.chart_type === 'bar') {
    
my.min 0;
    
my.max d3.max(args.data[0], function (d) {
      var 
trio = [];
      
trio.push(d[args.y_accessor]);

      if (
args.baseline_accessor !== null) {
        
trio.push(d[args.baseline_accessor]);
      }

      if (
args.predictor_accessor !== null) {
        
trio.push(d[args.predictor_accessor]);
      }

      return 
Math.max.apply(nulltrio);
    });
  }
  return 
my;
}

function 
mg_compute_yax_format (args) {
  var 
yax_format args.yax_format;
  if (!
yax_format) {
    if (
args.format === 'count') {
      
// increase decimals if we have small values, useful for realtime data
      
if (args.processed.max_y 0.0001) {
        
args.decimals 6;
      } else if (
args.processed.max_y 0.1) {
        
args.decimals 4;
      }

      
yax_format = function (f) {
        if (
1.0) {
          
// Don't scale tiny values.
          
return args.yax_units d3.round(fargs.decimals);
        } else {
          var 
pf d3.formatPrefix(f);
          return 
args.yax_units pf.scale(f) + pf.symbol;
        }
      };
    } else { 
// percentage
      
yax_format = function (d_) {
        var 
d3.format('.2p');
        return 
n(d_);
      };
    }
  }
  return 
yax_format;
}

function 
mg_bar_add_zero_line (args) {
  var 
svg mg_get_svg_child_of(args.target);
  var 
extents args.scales.X.domain();
  if (
>= extents[0] && extents[1] >= 0) {
    var 
args.scales.Y.range();
    var 
args.categorical_groups.length args.scales.YGROUP(args.categorical_groups[args.categorical_groups.length-1]) : args.scales.YGROUP()
    
svg.append('svg:line')
    .
attr('x1'args.scales.X(0))
    .
attr('x2'args.scales.X(0))
    .
attr('y1'r[0] + mg_get_plot_top(args))
    .
attr('y2'r[r.length-1] + )//+ args.scales.YGROUP.rangeBand())
    
.attr('stroke''black')
    .
attr('opacity'.2);
  }
}

function 
set_min_max_y (args) {
  
// flatten data
  // remove weird data, if log.
  
var data mg_flatten_array(args.data);

  if (
args.y_scale_type === 'log') {
    
data data.filter(function (d) {
      return 
d[args.y_accessor] > 0;
    });
  }

  if (
args.baselines) {
    
data data.concat(args.baselines);
  }

  var 
extents d3.extent(data, function (d) {
    return 
d[args.y_accessor];
  });

  var 
my = {};
  
my.min extents[0];
  
my.max extents[1];
  
// the default case is for the y-axis to start at 0, unless we explicitly want it
  // to start at an arbitrary number or from the data's minimum value
  
if (my.min >= && !args.min_y && !args.min_y_from_data) {
    
my.min 0;
  }

  
mg_change_y_extents_for_bars(argsmy);
  
my.min = (args.min_y !== null)
    ? 
args.min_y
    
my.min;

  
my.max = (args.max_y !== null)
    ? 
args.max_y
    
: (my.max 0)
      ? 
my.max + (my.max my.max args.inflator)
      : 
my.max args.inflator;

  if (
args.y_scale_type !== 'log' && my.min 0) {
    
my.min my.min - (my.min my.min args.inflator);
  }

  if (!
args.min_y && args.min_y_from_data) {

      var 
buff = (my.max my.min) *.01;
      
my.min extents[0] - buff;
      
my.max extents[1] + buff;
  }
  
args.processed.min_y my.min;
  
args.processed.max_y my.max;
}

function 
mg_y_domain_range (argsscale) {
  
scale.domain([args.processed.min_yargs.processed.max_y])
    .
range([mg_get_plot_bottom(args), args.top]);
  return 
scale;
}

function 
mg_define_y_scales (args) {
  var 
scale args.y_scale_type === 'log' d3.scale.log() : d3.scale.linear();
  if (
args.y_scale_type === 'log') {
    if (
args.chart_type === 'histogram') {
      
// log histogram plots should start just below 1
      // so that bins with single counts are visible
      
args.processed.min_y 0.2;
    } else {
      if (
args.processed.min_y <= 0) {
        
args.processed.min_y 1;
      }
    }
  }
  
args.scales.mg_y_domain_range(argsscale);
  
args.scales.Y.clamp(args.y_scale_type === 'log');

  
// used for ticks and such, and designed to be paired with log or linear
  
args.scales.Y_axis mg_y_domain_range(argsd3.scale.linear());
}

function 
mg_add_y_label (gargs) {
  if (
args.y_label) {
    
g.append('text')
      .
attr('class''label')
      .
attr('x', function () {
        return -
* (mg_get_plot_top(args) +
        ((
mg_get_plot_bottom(args)) - (mg_get_plot_top(args))) / 2);
      })
      .
attr('y', function () {
        return 
args.left 2;
      })
      .
attr('dy''0.4em')
      .
attr('text-anchor''middle')
      .
text(function (d) {
        return 
args.y_label;
      })
      .
attr('transform', function (d) {
        return 
'rotate(-90)';
      });
  }
}

function 
mg_add_y_axis_rim (gargs) {
  var 
tick_length args.processed.y_ticks.length;
  if (!
args.x_extended_ticks && !args.y_extended_ticks && tick_length) {
    var 
y1scaley2scale;

    if (
args.axes_not_compact && args.chart_type !== 'bar') {
      
y1scale args.height args.bottom;
      
y2scale args.top;
    } else if (
tick_length) {
      
y1scale args.scales.Y(args.processed.y_ticks[0]).toFixed(2);
      
y2scale args.scales.Y(args.processed.y_ticks[tick_length 1]).toFixed(2);
    } else {
      
y1scale 0;
      
y2scale 0;
    }

    
g.append('line')
      .
attr('x1'args.left)
      .
attr('x2'args.left)
      .
attr('y1'y1scale)
      .
attr('y2'y2scale);
  }
}

function 
mg_add_y_axis_tick_lines (gargs) {
  
g.selectAll('.mg-yax-ticks')
    .
data(args.processed.y_ticks).enter()
    .
append('line')
    .
classed('mg-extended-y-ticks'args.y_extended_ticks)
    .
attr('x1'args.left)
    .
attr('x2', function () {
      return (
args.y_extended_ticks)
        ? 
args.width args.right
        
args.left args.yax_tick_length;
    })
    .
attr('y1', function (d) { return args.scales.Y(d).toFixed(2); })
    .
attr('y2', function (d) { return args.scales.Y(d).toFixed(2); });
}

function 
mg_add_y_axis_tick_labels (gargs) {
  var 
yax_format mg_compute_yax_format(args);
  
g.selectAll('.mg-yax-labels')
    .
data(args.processed.y_ticks).enter()
    .
append('text')
    .
attr('x'args.left args.yax_tick_length 2)
    .
attr('dx', -3)
    .
attr('y', function (d) {
      return 
args.scales.Y(d).toFixed(2);
    })
    .
attr('dy''.35em')
    .
attr('text-anchor''end')
    .
text(function (d) {
      var 
yax_format(d);
      return 
o;
    });
}

function 
y_axis (args) {
  if (!
args.processed) {
    
args.processed = {};
  }

  var 
svg mg_get_svg_child_of(args.target);

  
set_min_max_y(args);
  
MG.call_hook('y_axis.process_min_max'argsargs.processed.min_yargs.processed.max_y);

  
//mg_define_y_scales(args);
  //mg_add_scale_function(args, 'yf', 'Y', args.y_accessor);

  
mg_selectAll_and_remove(svg'.mg-y-axis');

  if (!
args.y_axis) { return this; }

  var 
mg_add_g(svg'mg-y-axis');
  
mg_add_y_label(gargs);
  
mg_process_scale_ticks(args'y');
  
mg_add_y_axis_rim(gargs);
  
mg_add_y_axis_tick_lines(gargs);
  
mg_add_y_axis_tick_labels(gargs);

  if (
args.y_rug) { y_rug(args); }

  return 
this;
}

MG.y_axis y_axis;

function 
mg_add_categorical_labels (args) {
  var 
svg mg_get_svg_child_of(args.target);
  
mg_selectAll_and_remove(svg'.mg-y-axis');
  var 
mg_add_g(svg'mg-y-axis');
  var 
group_g;
  (
args.categorical_groups.length args.categorical_groups : ['1']).forEach(function(group){
    
group_g mg_add_g(g'mg-group-' mg_normalize(group))

    if (
args.ygroup_accessor !== undefined) {
      
mg_add_group_label(group_ggroupargs);
    }
    else {
      var 
labels mg_add_graphic_labels(group_ggroupargs);
      
mg_rotate_labels(labelsargs.rotate_y_labels);
    }
  });
}

function 
mg_add_graphic_labels (ggroupargs) {
  return 
g.selectAll('text').data(args.categorical_variables).enter().append('svg:text')
      .
attr('x'args.left args.buffer)
      .
attr('y', function (d) {
        return 
args.scales.YGROUP(group) + args.scales.Y(d) + args.scales.Y.rangeBand() / 2;
      })
      .
attr('dy''.35em')
      .
attr('text-anchor''end')
      .
text(String);
}

function 
mg_add_group_label (ggroupargs) {
    
g.append('svg:text')
      .
classed('mg-barplot-group-label'true)
      .
attr('x'args.left args.buffer)
      .
attr('y'args.scales.YGROUP(group) + args.scales.YGROUP.rangeBand()/2)
      .
attr('dy''.35em')
      .
attr('text-anchor''end')
      .
text(group);
}

function 
y_axis_categorical (args) {
  if (!
args.y_axis) { return this; }
  
mg_add_categorical_labels(args);

  if (
args.show_bar_zeromg_bar_add_zero_line(args);

  return 
this;
}

MG.y_axis_categorical y_axis_categorical;
?>
Онлайн: 1
Реклама