cartodb/lib/assets/javascripts/dashboard/data/table/column-model.js
2020-06-15 10:58:47 +08:00

49 lines
1.2 KiB
JavaScript

const _ = require('underscore');
const Backbone = require('backbone');
const checkAndBuildOpts = require('builder/helpers/required-opts');
const REQUIRED_OPTS = [
'configModel'
];
module.exports = Backbone.Model.extend({
idAttribute: 'name',
url: function (method) {
var version = this._configModel.urlVersion('column', method);
var table = this.table || this.collection.table;
if (!table) {
console.error('column has no table assigned');
}
var base = '/api/' + version + '/tables/' + table.get('name') + '/columns/';
if (this.isNew()) {
return base;
}
return base + this.id;
},
initialize: function (opts) {
checkAndBuildOpts(opts, REQUIRED_OPTS, this);
this.table = this.get('table');
if (!this.table) {
throw 'you should specify a table model'; // eslint-disable-line
}
this.unset('table', { silent: true });
},
toJSON: function () {
var c = _.clone(this.attributes);
// this hack is created to create new column
// if you set _name instead name backbone does not get
// it as idAttribute so launch a POST instead of a PUT
if (c._name) {
c.name = c._name;
delete c._name;
}
return c;
}
});