CartoDB/cartodb20

View on GitHub
lib/assets/javascripts/builder/components/modals/add-basemap/wms/wms-layers-collection.js

Summary

Maintainability
A
2 hrs
Test Coverage
var _ = require('underscore');
var Backbone = require('backbone');
var WMSLayerModel = require('./wms-layer-model');

module.exports = Backbone.Collection.extend({

  model: function (attrs, opts) {
    var self = opts.collection;

    return new WMSLayerModel(attrs, {
      wmsService: self._wmsService
    });
  },

  parse: function (r) {
    var layers = [];

    if (r.layers) {
      layers = _.map(r.layers, function (layer) {
        return _.extend({ type: r.type || 'wms' }, layer);
      });
    }

    return layers;
  },

  sync: function (method, model, options) {
    options = options || {};
    options.url = this.url(method.toLowerCase());
    options.dataType = 'jsonp';
    method = 'READ';

    return Backbone.sync.apply(this, arguments);
  },

  url: function () {
    return this._wmsService.getFetchLayersURL();
  },

  initialize: function (models, opts) {
    if (!opts.wmsService) throw new Error('wmsService is required');

    this._wmsService = opts.wmsService;
  }

});