Вход Регистрация
Файл: src/public/plugins/metrics-graphics/common/markers.js
Строк: 127
<?php
function mg_return_label (d) {
  return 
d.label;
}

function 
mg_remove_existing_markers (svg) {
  
svg.selectAll('.mg-markers').remove();
  
svg.selectAll('.mg-baselines').remove();
}

function 
mg_in_range (args) {
  return function (
d) {
    return (
args.scales.X(d[args.x_accessor]) > mg_get_plot_left(args))
    && (
args.scales.X(d[args.x_accessor]) < mg_get_plot_right(args));
  };
}

function 
mg_x_position (args) {
  return function (
d) {
    return 
args.scales.X(d[args.x_accessor]);
  };
}

function 
mg_x_position_fixed (args) {
  var 
_mg_x_pos = mg_x_position(args);
  return function (
d) {
    return 
_mg_x_pos(d).toFixed(2);
  };
}

function 
mg_y_position_fixed (args) {
  var 
_mg_y_pos = args.scales.Y;
  return function (
d) {
    return 
_mg_y_pos(d.value).toFixed(2);
  };
}

function 
mg_place_annotations(checker, class_name, args, svg, line_fcn, text_fcn){
    var 
g;
    if (
checker) {
        
g = svg.append('g').attr('class', class_name);
        
line_fcn(g, args);
        
text_fcn(g, args);
    }
}

function 
mg_place_markers (args, svg) {
  
mg_place_annotations(args.markers, 'mg-markers', args, svg, mg_place_marker_lines, mg_place_marker_text);
}

function 
mg_place_baselines (args, svg) {
  
mg_place_annotations(args.baselines, 'mg-baselines', args, svg, mg_place_baseline_lines, mg_place_baseline_text);   
}

function 
mg_place_marker_lines (gm, args) {
  var 
x_pos_fixed = mg_x_position_fixed(args);
  
gm.selectAll('.mg-markers')
    .
data(args.markers.filter(mg_in_range(args)))
    .
enter()
    .
append('line')
    .
attr('x1', x_pos_fixed)
    .
attr('x2', x_pos_fixed)
    .
attr('y1', args.top)
    .
attr('y2', mg_get_plot_bottom(args))
    .
attr('class', function (d) {
      return 
d.lineclass;
    })
    .
attr('stroke-dasharray', '3,1');
}

function 
mg_place_marker_text (gm, args) {
  
gm.selectAll('.mg-markers')
    .
data(args.markers.filter(mg_in_range(args)))
    .
enter()
    .
append('text')
    .
attr('class', function (d) { return d.textclass || ''; })
    .
classed('mg-marker-text', true)
    .
attr('x', mg_x_position(args))
    .
attr('y', args.top * 0.95)
    .
attr('text-anchor', 'middle')
    .
text(mg_return_label)
    .
each(function (d) {
      if (
d.click) d3.select(this).style('cursor', 'pointer').on('click', d.click);
    });
  
mg_prevent_horizontal_overlap(gm.selectAll('.mg-marker-text')[0], args);
}

function 
mg_place_baseline_lines (gb, args) {
  var 
y_pos = mg_y_position_fixed(args);
  
gb.selectAll('.mg-baselines')
    .
data(args.baselines)
    .
enter().append('line')
    .
attr('x1', mg_get_plot_left(args))
    .
attr('x2', mg_get_plot_right(args))
    .
attr('y1', y_pos)
    .
attr('y2', y_pos);
}

function 
mg_place_baseline_text (gb, args) {
  var 
y_pos = mg_y_position_fixed(args);
  
gb.selectAll('.mg-baselines')
    .
data(args.baselines)
    .
enter().append('text')
    .
attr('x', mg_get_plot_right(args))
    .
attr('y', y_pos)
    .
attr('dy', -3)
    .
attr('text-anchor', 'end')
    .
text(mg_return_label);
}

function 
markers (args) {
  
'use strict';
  var 
svg = mg_get_svg_child_of(args.target);
  
mg_remove_existing_markers(svg);
  
mg_place_markers(args, svg);
  
mg_place_baselines(args, svg);
  return 
this;
}

MG.markers = markers;
?>
Онлайн: 2
Реклама