How to use dygraphs - 10 common examples

To help you get started, we’ve selected a few dygraphs examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github influxdata / influxdb / ui / src / external / dygraph.js View on Github external
},
      true /* no need to redraw */
    )
  }
}

function isValidPoint(p, opt_allowNaNY) {
  if (!p) return false // null or undefined object
  if (p.yval === null) return false // missing point
  if (p.x === null || p.x === undefined) return false
  if (p.y === null || p.y === undefined) return false
  if (isNaN(p.x) || (!opt_allowNaNY && isNaN(p.y))) return false
  return true
}

Dygraph.prototype.findClosestPoint = function(domX, domY) {
  if (Dygraph.VERSION !== '2.0.0') {
    console.error(
      `Dygraph version changed to ${Dygraph.VERSION} - re-copy findClosestPoint`
    )
  }
  var minXDist = Infinity
  var minYDist = Infinity
  var xdist, ydist, dx, dy, point, closestPoint, closestSeries, closestRow
  for (var setIdx = this.layout_.points.length - 1; setIdx >= 0; --setIdx) {
    var points = this.layout_.points[setIdx]
    for (var i = 0; i < points.length; ++i) {
      point = points[i]
      if (!isValidPoint(point)) continue

      dx = point.canvasx - domX
      dy = point.canvasy - domY
github influxdata / influxdb / ui / src / external / dygraph.ts View on Github external
if (p.yval === null) {
    return false
  } // missing point
  if (p.x === null || p.x === undefined) {
    return false
  }
  if (p.y === null || p.y === undefined) {
    return false
  }
  if (isNaN(p.x) || (!opt_allowNaNY && isNaN(p.y))) {
    return false
  }
  return true
}

Dygraph.prototype.findClosestPoint = function(domX, domY) {
  if (Dygraph.VERSION !== '2.0.0') {
    console.error(
      `Dygraph version changed to ${Dygraph.VERSION} - re-copy findClosestPoint`
    )
  }
  let minXDist = Infinity
  let minYDist = Infinity
  let xdist, ydist, dx, dy, point, closestPoint, closestSeries, closestRow
  for (let setIdx = this.layout_.points.length - 1; setIdx >= 0; --setIdx) {
    const points = this.layout_.points[setIdx]
    for (let i = 0; i < points.length; ++i) {
      point = points[i]
      if (!isValidPoint(point, null)) {
        continue
      }
github kresusapp / kresus / client / components / charts / balance-chart.js View on Github external
}
    }

    let balance = account.initialBalance;
    let csv = 'Date,Balance\n';
    for (let [date, amount] of opmap) {
        balance += amount;
        csv += `${date},${round2(balance)}\n`;
    }

    /* eslint-disable no-new */

    // Create the chart
    let chartsColors = getChartsDefaultColors(theme);

    return new Dygraph(document.getElementById(chartId), csv, {
        color: chartsColors.LINES,

        axisLineColor: chartsColors.AXIS,

        axes: {
            x: {
                axisLabelFormatter: date => {
                    // Undefined means the default locale
                    let defaultLocale;
                    return date.toLocaleDateString(defaultLocale, {
                        year: '2-digit',
                        month: 'short'
                    });
                }
            }
        },
github openpowerquality / opq / view / app / imports / ui / components / WaveformViewer.jsx View on Github external
Meteor.defer(() => {
      // Note: There's no real need to store the Dygraph instance itself. It's simpler to allow render() to create a new
      // instance each time the graph visibility is set to true.
      const dygraph = new Dygraph(dyDomElement, dyPlotPoints, dyOptions);
      dygraph.ready(() => this.setState({ isLoading: false }));
    });
  }
github openpowerquality / opq / view / app / imports / ui / components / eventWaveformChart / eventWaveformChart.js View on Github external
1: 152.1,
        3: 154.20,
        4: 146.46,
      };

      const calibConstant = boxCalibrationConstants[eventData.box_id] || 1;

      const dyPlotPoints = eventData.waveform.map((val, index) => {
        const timestamp = eventData.event_start + (index * (1.0 / 12.0));
        return [timestamp, val / calibConstant];
      });

      const ctx = template.$('.dygraphEventWaveform').get(0); // Dygraphs requires the raw DOM element.

      // Dygraphs
      template.graph = new Dygraph(ctx, dyPlotPoints, {
        labels: ['Timestamp', 'Voltage'],
        axes: {
          x: {
            valueFormatter: (millis, opts, seriesName, dygraph, row, col) => { // eslint-disable-line no-unused-vars
              // We must separately calculate the microseconds and concatenate it to the date string.
              const dateString = Moment(millis).format('[[]MM-DD-YYYY[]] HH:mm:ss.SSS').toString()
                  + ((row * (1.0 / 12.0)) % 1).toFixed(3).substring(2);
              return dateString;
            },
            axisLabelFormatter: (timestamp) => Moment(timestamp).format('HH:mm:ss.SSS'),
          },
        },
      });

      // Sync Graph
      Template.currentData().dygraphSync(template.graph);
github NASA-AMMOS / AIT-GUI / ait / gui / static / js / ait / gui / Plot.js View on Github external
createChart (vnode, options) {
        let startarray = [ ]
        this._plot._options.labels.forEach( (name) => {
            startarray.push(0)
        })

        // Dygraphs is being initialized off of a nested div within the
        // ait-plot tag so that displaying the legend in an external
        // div works as expected. If the external div is nested within the
        // same tag that Dygraph is initialized on then functionality breaks.
        return new Dygraph(vnode.dom.children[0], [ startarray ], options)
    }
github numenta / numenta-apps / unicorn / app / browser / components / Chart.jsx View on Github external
// move chart back to last valid display position from previous viewing?
    if ('viewpoint' in metric && metric.viewpoint) {
      this._chartRange = [metric.viewpoint, metric.viewpoint + rangeWidth];
    }

    // init, render, and draw chart!
    options.labelsUTC = true;
    options.dateWindow = this._chartRange;  // update viewport of range selector
    this._previousDataSize = data.length;
    this._dygraph = new CustomDygraph(element, data, options,
                                      this.props.yScaleCalculate);

    // after: track chart viewport position changes
    rangeEl = element.getElementsByClassName(RANGE_SELECTOR_CLASS)[0];
    Dygraph.addEvent(rangeEl, 'mousedown', this._handleMouseDown.bind(this));
    Dygraph.addEvent(element, 'mouseup', this._handleMouseUp.bind(this));
  }
github numenta / numenta-apps / unicorn / app / browser / components / Chart.jsx View on Github external
// move chart back to last valid display position from previous viewing?
    if ('viewpoint' in metric && metric.viewpoint) {
      this._chartRange = [metric.viewpoint, metric.viewpoint + rangeWidth];
    }

    // init, render, and draw chart!
    options.labelsUTC = true;
    options.dateWindow = this._chartRange;  // update viewport of range selector
    this._previousDataSize = data.length;
    this._dygraph = new CustomDygraph(element, data, options,
                                      this.props.yScaleCalculate);

    // after: track chart viewport position changes
    rangeEl = element.getElementsByClassName(RANGE_SELECTOR_CLASS)[0];
    Dygraph.addEvent(rangeEl, 'mousedown', this._handleMouseDown.bind(this));
    Dygraph.addEvent(element, 'mouseup', this._handleMouseUp.bind(this));
  }
github numenta / numenta-apps / unicorn / app / browser / lib / Dygraphs / Plugins.js View on Github external
// FOR A PARTICULAR PURPOSE. See the GNU Affero Public License for more details.
//
// You should have received a copy of the GNU Affero Public License along with
// this program. If not, see http://www.gnu.org/licenses.
//
// http://numenta.org/licenses/

import Dygraph from 'dygraphs';


/**
 * Override default pre-draw of Dygraphs RangeSelector background, so we can
 *  customize the styling (remove RangeSelector outline border).
 * @see node_modules/dygraphs/plugins/range-selector.js
 */
Dygraph.Plugins.RangeSelector.prototype.drawStaticLayer_ = function () {
  let margin = 0.5;
  let ctx = this.bgcanvas_ctx_;
  ctx.clearRect(0, 0, this.canvasRect_.w, this.canvasRect_.h);

  try {
    this.drawMiniPlot_();
  } catch (error) {
    throw new Error(error);
  }

  this.bgcanvas_ctx_.lineWidth = 1;
  ctx.strokeStyle = '#fff';
  ctx.beginPath();
  ctx.moveTo(margin, margin);
  ctx.lineTo(margin, this.canvasRect_.h-margin);
  ctx.lineTo(this.canvasRect_.w-margin, this.canvasRect_.h-margin);
github numenta / numenta-apps / unicorn / app / browser / lib / Dygraphs / CustomDygraph.js View on Github external
*
 * @param {Element} element - param for Dygraph constructor
 * @param {Array} data - param for Dygraph constructor
 * @param {Object} options - param for Dygraph constructor
 * @param {Function} yAxisRangeCalculate - takes a dygraph
 *                                         returns a [min, max] y axis range
 */
function CustomDygraph(element, data, options, yAxisRangeCalculate) {
  // This code uses prototype syntax rather than class syntax because it needs
  // to set `this.yAxisRangeCalculate_` before calling the Dygraph constructor,
  // which isn't possible with class syntax.
  this.yAxisRangeCalculate_ = yAxisRangeCalculate;
  Dygraph.call(this, element, data, options);
}

CustomDygraph.prototype = Object.create(Dygraph.prototype);
CustomDygraph.prototype.drawGraph_ = function () {
  let yExtentAdjusted = this.yAxisRangeCalculate_(this);

  // Change it directly. Using `updateOptions` won't work. If it causes a
  // redraw, there's a stack overflow. With blockRedraw=true, it doesn't update
  // the axes. Avoid using a valueRange in the options if you're using a
  // CustomDygraph.
  this.axes_[0].valueRange = yExtentAdjusted;
  this.axes_[0].computedValueRange = yExtentAdjusted;
  this.axes_[0].extremeRange = yExtentAdjusted.map(
    (v) => v - yExtentAdjusted[0]
  );

  Dygraph.prototype.drawGraph_.call(this);
};