mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-11 12:03:14 +00:00
74 lines
1.9 KiB
JavaScript
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;
|
|
});
|