CartoDB/cartodb20

View on GitHub
lib/assets/javascripts/builder/components/modals/add-analysis/analysis-option-models/generated-analysis-option-model.js

Summary

Maintainability
A
1 hr
Test Coverage
var _ = require('underscore');
var AnalysisOptionModel = require('./analysis-option-model');
var camshaftReference = require('builder/data/camshaft-reference');

/**
 * Model to represent a generated analysis option.
 */
module.exports = AnalysisOptionModel.extend({

  /**
   * @override {AnalysisOptionModel.getNodeAttrs}
   */
  getFormAttrs: function () {
    var attrs = AnalysisOptionModel.prototype.getFormAttrs.apply(this, arguments);

    this._removeSourceIfThereAreMultipleSources(attrs);

    return attrs;
  },

  _removeSourceIfThereAreMultipleSources: function (attrs) {
    var params = camshaftReference.paramsForType(attrs.type);
    var sourceCount = _.reduce(Object.keys(params), function (memo, name) {
      if (params[name].type === 'node') {
        memo++;
      }
      return memo;
    }, 0);

    if (sourceCount > 1) {
      delete attrs.source;
    }
  }

});