50 lines
1.3 KiB
JavaScript
50 lines
1.3 KiB
JavaScript
define([
|
|
'backbone', 'underscore', 'underscore.string', 'gettext',
|
|
'backbone.associations'
|
|
], function(Backbone, _, str, gettext) {
|
|
'use strict';
|
|
|
|
var Group = Backbone.AssociatedModel.extend({
|
|
defaults: function() {
|
|
return {
|
|
name: '',
|
|
version: 1,
|
|
order: null,
|
|
usage: []
|
|
};
|
|
},
|
|
url: function() {
|
|
var parentModel = this.collection.parents[0];
|
|
return parentModel.urlRoot + '/' + encodeURIComponent(parentModel.id) + '/' + encodeURIComponent(this.id);
|
|
},
|
|
|
|
reset: function() {
|
|
this.set(this._originalAttributes, {parse: true});
|
|
},
|
|
|
|
isEmpty: function() {
|
|
return !this.get('name');
|
|
},
|
|
|
|
toJSON: function() {
|
|
return {
|
|
id: this.get('id'),
|
|
name: this.get('name'),
|
|
version: this.get('version'),
|
|
usage: this.get('usage')
|
|
};
|
|
},
|
|
|
|
validate: function(attrs) {
|
|
if (!str.trim(attrs.name)) {
|
|
return {
|
|
message: gettext('Group name is required'),
|
|
attributes: {name: true}
|
|
};
|
|
}
|
|
}
|
|
});
|
|
|
|
return Group;
|
|
});
|