/* eslint-disable */ /* * Copyright (c) 2015 * * This file is licensed under the Affero General Public License version 3 * or later. * * See the COPYING-README file. * */ (function(OC) { function filterFunction(model, term) { return model.get('name').substr(0, term.length).toLowerCase() === term.toLowerCase() } /** * @class OCA.SystemTags.SystemTagsCollection * @classdesc * * Collection of tags assigned to a file * */ var SystemTagsCollection = OC.Backbone.Collection.extend( /** @lends OC.SystemTags.SystemTagsCollection.prototype */ { sync: OC.Backbone.davSync, model: OC.SystemTags.SystemTagModel, url: function() { return OC.linkToRemote('dav') + '/systemtags/' }, filterByName: function(name) { return this.filter(function(model) { return filterFunction(model, name) }) }, reset: function() { this.fetched = false return OC.Backbone.Collection.prototype.reset.apply(this, arguments) }, /** * Lazy fetch. * Only fetches once, subsequent calls will directly call the success handler. * * @param options * @param [options.force] true to force fetch even if cached entries exist * * @see Backbone.Collection#fetch */ fetch: function(options) { var self = this options = options || {} if (this.fetched || options.force) { // directly call handler if (options.success) { options.success(this, null, options) } // trigger sync event this.trigger('sync', this, null, options) return Promise.resolve() } var success = options.success options = _.extend({}, options) options.success = function() { self.fetched = true if (success) { return success.apply(this, arguments) } } return OC.Backbone.Collection.prototype.fetch.call(this, options) } }) OC.SystemTags = OC.SystemTags || {} OC.SystemTags.SystemTagsCollection = SystemTagsCollection /** * @type OC.SystemTags.SystemTagsCollection */ OC.SystemTags.collection = new OC.SystemTags.SystemTagsCollection() })(OC)