Sha256: f1649e21363dd33cead26ae7398ba58837c04e84a6cac0b52e090771995b2625

Contents?: true

Size: 1.97 KB

Versions: 1

Compression:

Stored size: 1.97 KB

Contents

ReportsKit.Chart = (function(options) {
  var self = this;

  self.initialize = function(options) {
    self.options = options;
    self.report = options.report;
    self.el = self.report.el;

    self.noResultsEl = $('<div>No data was found</div>').appendTo(self.report.visualizationEl).hide();
    self.loadingIndicatorEl = $('<div class="loading_indicator"></div>').appendTo(self.report.visualizationEl).hide();
    self.canvas = $('<canvas />').appendTo(self.report.visualizationEl);
  };

  self.render = function() {
    var path = self.el.data('path');
    var separator = path.indexOf('?') === -1 ? '?' : '&';
    path += separator + 'properties=' + encodeURIComponent(JSON.stringify(self.report.properties()));
    self.loadingIndicatorEl.fadeIn(5000);
    $.getJSON(path, function(response) {
      var data = response.data;
      var chartData = data.chart_data;
      var options = chartData.options;
      options = self.addAdditionalOptions(options, chartData.standard_options)

      var args = {
        type: data.type,
        data: chartData,
        options: options
      };
      self.loadingIndicatorEl.stop(true, true).hide();

      if (self.chart) {
        self.chart.data.datasets = chartData.datasets;
        self.chart.data.labels = chartData.labels;
        self.chart.update();
      } else {
        self.chart = new Chart(self.canvas, args);
      }
      self.noResultsEl.toggle(self.chart.data.labels.length === 0);
    });
  };

  self.addAdditionalOptions = function(options, standardOptions) {
    var additionalOptions = {};
    var maxItems = standardOptions && standardOptions.legend && standardOptions.legend.max_items;
    if (maxItems) {
      additionalOptions = {
        legend: {
          labels: {
            filter: function(item) {
              return item.index < maxItems;
            }
          }
        }
      };
      options = $.extend(true, options, additionalOptions);
    }
    return options;
  };

  self.initialize(options);

  return self;
});

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
reports_kit-0.2.0 app/assets/javascripts/reports_kit/lib/chart.js