示例#1
0
  _onLayerDefinitionSynced: function (m) {
    // Base and labels layers are synced in a separate method
    if (!layerTypesAndKinds.isTypeDataLayer(m.get('type'))) {
      return;
    }

    if (!this._diDashboardHelpers.getLayer(m.id)) {
      this._createLayer(m);
    }
  },
示例#2
0
  _onLayerDefinitionChanged: function (layerDefinitionModel, changedAttributes) {
    var attrs = layerDefinitionModel.changedAttributes();
    var attrsNames = _.keys(attrs);

    // Base and labels layers are synced in a separate method
    if (!layerTypesAndKinds.isTypeDataLayer(layerDefinitionModel.get('type'))) {
      return;
    }

    // return if only the 'error' attribute has changed (no need to sync anything)
    if (attrsNames.length === 1 && attrsNames[0] === 'error') {
      return;
    }

    var layer = this._diDashboardHelpers.getLayer(layerDefinitionModel.id);
    if (!layerDefinitionModel.isNew()) {
      if (!layer) {
        this._createLayer(layerDefinitionModel);
        return;
      }

      if (attrs.type) {
        layer.remove();
        this._createLayer(layerDefinitionModel);
      } else {
        if (layerDefinitionModel.get('source') && !layer.get('source')) {
          attrs.source = layerDefinitionModel.get('source');
        }
        var onlySourceChanged = attrs.source && _.keys(attrs).length === 1;
        if (attrs.source) {
          // Set analysis model instead of the string ID source
          attrs.source = this._diDashboardHelpers.getAnalysisByNodeId(attrs.source);
          // Set source with setSource method
          layer.setSource(attrs.source, { silent: !onlySourceChanged });
          // Remove source form attrs to avoid updating source
          delete attrs.source;
        }
        attrs = this._adaptAttrsToCDBjs(layerDefinitionModel.get('type'), attrs);
        layer.update(attrs, { silent: onlySourceChanged });
      }
      // Find an animated layer if exists
      var animatedLayerDefinitionModel = this._layerDefinitionsCollection.find(function (model) {
        return model && model.styleModel && model.styleModel.get('type') === 'animation';
      });
      // Dependency with widgets-integration
      // If there is an animated layer, use that layer, else use the provided layer
      this.trigger('onLayerChanged', animatedLayerDefinitionModel || layerDefinitionModel);
    }
  },
示例#3
0
  _onLayerDefinitionAdded: function (m, c, opts) {
    // Base and labels layers are synced in a separate method
    if (!layerTypesAndKinds.isTypeDataLayer(m.get('type'))) {
      return;
    }

    // If added but not yet saved, postpone the creation until persisted (see sync listener)
    if (!m.isNew()) {
      if (!this._diDashboardHelpers.getLayer(m.id)) {
        this._createLayer(m);
      } else {
        // we need to sync model positions
        this._tryUpdateLayerPosition(m);
      }
    }
  },