File: addon/mixins/taggable-mixin.js
import Ember from 'ember';
/**
* @module ember-osf
* @submodule mixins
*/
/**
* Controller mixin that implements basic tagging functionality. Uses the model defined in the model hook.
* @class TaggableMixin
* @extends Ember.Mixin
*/
export default Ember.Mixin.create({
actions: {
/**
* Appends a tag to the current array of tags on the resource. Copies current
* list of tags, appends new tag to copy, and then sets tags on the resource
* as the modified copy.
*
* @method addATag
* @param {DS.Model} model A model instance that supports tags functionality
* @param {String} tag New tag to be added to list.
*/
addATag(model, tag) {
var currentTags = model.get('tags').slice(0);
Ember.A(currentTags);
currentTags.pushObject(tag);
model.set('tags', currentTags);
return model.save();
},
/**
* Removes a tag from the current array of tags on the resource.
*
* @method removeATag
* @param {DS.Model} model A model instance that supports tags functionality
* @param {String} tag Tag to be removed from list.
*/
removeATag(model, tag) {
var currentTags = model.get('tags').slice(0);
currentTags.splice(currentTags.indexOf(tag), 1);
model.set('tags', currentTags);
model.save();
}
}
});