123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- var labelColors;
- Meteor.startup(function() {
- labelColors = Boards.simpleSchema()._schema['labels.$.color'].allowedValues;
- });
- BlazeComponent.extendComponent({
- template: function() {
- return 'formLabel';
- },
- onCreated: function() {
- this.currentColor = new ReactiveVar(this.data().color);
- },
- labels: function() {
- return _.map(labelColors, function(color) {
- return { color: color, name: '' };
- });
- },
- isSelected: function(color) {
- return this.currentColor.get() === color;
- },
- events: function() {
- return [{
- 'click .js-palette-color': function() {
- this.currentColor.set(this.currentData().color);
- }
- }];
- }
- }).register('formLabel');
- Template.createLabelPopup.helpers({
- // This is the default color for a new label. We search the first color that
- // is not already used in the board (although it's not a problem if two
- // labels have the same color).
- defaultColor: function() {
- var labels = this.labels || this.card.board().labels;
- var usedColors = _.pluck(labels, 'color');
- var availableColors = _.difference(labelColors, usedColors);
- return availableColors.length > 1 ? availableColors[0] : labelColors[0];
- }
- });
- Template.cardLabelsPopup.events({
- 'click .js-select-label': function(evt) {
- var cardId = Template.parentData(2).data._id;
- var labelId = this._id;
- var operation;
- if (Cards.find({ _id: cardId, labelIds: labelId}).count() === 0)
- operation = '$addToSet';
- else
- operation = '$pull';
- var query = {};
- query[operation] = {
- labelIds: labelId
- };
- Cards.update(cardId, query);
- evt.preventDefault();
- },
- 'click .js-edit-label': Popup.open('editLabel'),
- 'click .js-add-label': Popup.open('createLabel')
- });
- Template.formLabel.events({
- 'click .js-palette-color': function(evt) {
- var $this = $(evt.currentTarget);
- // hide selected ll colors
- $('.js-palette-select').addClass('hide');
- // show select color
- $this.find('.js-palette-select').removeClass('hide');
- }
- });
- Template.createLabelPopup.events({
- // Create the new label
- 'submit .create-label': function(evt, tpl) {
- var name = tpl.$('#labelName').val().trim();
- var boardId = Session.get('currentBoard');
- var color = Blaze.getData(tpl.find('.fa-check')).color;
- Boards.update(boardId, {
- $push: {
- labels: {
- _id: Random.id(6),
- name: name,
- color: color
- }
- }
- });
- Popup.back();
- evt.preventDefault();
- }
- });
- Template.editLabelPopup.events({
- 'click .js-delete-label': Popup.afterConfirm('deleteLabel', function() {
- var boardId = Session.get('currentBoard');
- Boards.update(boardId, {
- $pull: {
- labels: {
- _id: this._id
- }
- }
- });
- Popup.back(2);
- }),
- 'submit .edit-label': function(evt, tpl) {
- evt.preventDefault();
- var name = tpl.$('#labelName').val().trim();
- var boardId = Session.get('currentBoard');
- var getLabel = Utils.getLabelIndex(boardId, this._id);
- var color = Blaze.getData(tpl.find('.fa-check')).color;
- var $set = {};
- $set[getLabel.key('name')] = name;
- $set[getLabel.key('color')] = color;
- Boards.update(boardId, { $set: $set });
- Popup.back();
- }
- });
- Template.cardLabelsPopup.helpers({
- isLabelSelected: function(cardId) {
- return _.contains(Cards.findOne(cardId).labelIds, this._id);
- }
- });
|