Gapminder/vizabi

View on GitHub
src/models/dataconnected.js

Summary

Maintainability
A
35 mins
Test Coverage
import * as utils from "base/utils";
import Model from "base/model";
import EventSource from "base/events";

/*!
 * DATACONNECTED MODEL
 *
 * Any model which may trigger a reload of data is here. Dimensions, Time, Hooks and Locales are DataConnected
 */

const DataConnected = Model.extend({

  dataConnectedChildren: [],

  checkDataChanges(changedChildren) {
    const _this = this;

    if (!changedChildren || !this.dataConnectedChildren)
      return;

    if (!utils.isArray(changedChildren) && utils.isObject(changedChildren))
      changedChildren = Object.keys(changedChildren);

    if (changedChildren.length == 0 || this.dataConnectedChildren.length == 0)
      return;

    const dataConnectedChangedChildren = changedChildren.filter(child => _this.dataConnectedChildren.indexOf(child) !== -1);

    if (dataConnectedChangedChildren.length > 0) {
      this.trigger("dataConnectedChange");
      this.startLoading({ dataConnectedChange: true });
    }

  }

});

export default DataConnected;