cartodb/lib/assets/javascripts/builder/components/modals/publish/privacy-model.js
2020-06-15 10:58:47 +08:00

45 lines
1019 B
JavaScript
Executable File

var Backbone = require('backbone');
var _ = require('underscore');
module.exports = Backbone.Model.extend({
defaults: {
privacy: 'PUBLIC',
disabled: false,
selected: false,
password: undefined
},
validate: function (attrs) {
if (attrs.disabled && attrs.selected) {
return 'Option can not be disabled and selected at the same time';
}
},
classNames: function () {
return _.chain(['disabled', 'selected'])
.map(function (attr) { return this.attributes[attr] !== undefined ? 'is-' + attr : undefined; }, this)
.compact().value().join(' ');
},
canSave: function () {
return !this.get('disabled');
},
isPassword: function () {
return false;
},
isSelected: function () {
return this.get('selected') === true;
},
saveToVis: function (vis, callbacks) {
return vis.save(this._attrsToSave(), _.extend({ wait: true }, callbacks));
},
_attrsToSave: function () {
return _.pick(this.attributes, 'privacy', 'password');
}
});