/core/js/systemtags/systemtagscollection.js
JavaScript | 89 lines | 45 code | 14 blank | 30 comment | 6 complexity | 26a1ae1430c855146211e301228ca1ad MD5 | raw file
- /*
- * 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);