Files
Phraseanet/www/scripts/apps/admin/fields/collections/fields.js
2013-07-11 01:41:50 +02:00

74 lines
1.9 KiB
JavaScript

/*
* This file is part of Phraseanet
*
* (c) 2005-2013 Alchemy
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
define([
"underscore",
"backbone",
"models/field"
], function(_, Backbone, FieldModel) {
var FieldCollection = Backbone.Collection.extend({
initialize: function(models, options) {
options = options || {};
if (typeof options === "object" && false === "sbas_id" in options) {
throw "You must set a sbas id"
}
this.sbasId = options.sbas_id;
},
model: FieldModel,
url: function() {
return "/admin/fields/" + this.sbasId + "/fields";
},
search: function(letters) {
if (letters === "")
return this;
var pattern = new RegExp(letters, "gi");
return _(this.filter(function(data) {
return pattern.test(data.get("name"));
}));
},
comparator: function(item) {
return item.get("sorter");
},
nextIndex: function(model) {
var index = this.indexOf(model);
if (index < 0) {
throw "Model not found"
}
if ((index + 1) === this.length) {
return null;
}
return index + 1;
},
previousIndex: function(model) {
var index = this.indexOf(model);
if (index < 0) {
throw "Model not found"
}
if (index === 0) {
return null;
}
return index - 1;
},
// save all collection
save: function(options) {
return Backbone.sync("update", this, options || {});
}
});
return FieldCollection;
});