| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 | let labelColors;Meteor.startup(() => {  labelColors = Boards.simpleSchema()._schema['labels.$.color'].allowedValues;});BlazeComponent.extendComponent({  onCreated() {    this.currentColor = new ReactiveVar(this.data().color);  },  labels() {    return labelColors.map(color => ({ color, name: '' }));  },  isSelected(color) {    return this.currentColor.get() === color;  },  events() {    return [      {        'click .js-palette-color'() {          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() {    const labels = Boards.findOne(Session.get('currentBoard')).labels;    const usedColors = _.pluck(labels, 'color');    const availableColors = _.difference(labelColors, usedColors);    return availableColors.length > 1 ? availableColors[0] : labelColors[0];  },});Template.cardLabelsPopup.events({  'click .js-select-label'(event) {    const card = Cards.findOne(Session.get('currentCard'));    const labelId = this._id;    card.toggleLabel(labelId);    event.preventDefault();  },  'click .js-edit-label': Popup.open('editLabel'),  'click .js-add-label': Popup.open('createLabel'),});Template.formLabel.events({  'click .js-palette-color'(event) {    const $this = $(event.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'(event, templateInstance) {    event.preventDefault();    const board = Boards.findOne(Session.get('currentBoard'));    const name = templateInstance      .$('#labelName')      .val()      .trim();    const color = Blaze.getData(templateInstance.find('.fa-check')).color;    board.addLabel(name, color);    Popup.back();  },});Template.editLabelPopup.events({  'click .js-delete-label': Popup.afterConfirm('deleteLabel', function() {    const board = Boards.findOne(Session.get('currentBoard'));    board.removeLabel(this._id);    Popup.back(2);  }),  'submit .edit-label'(event, templateInstance) {    event.preventDefault();    const board = Boards.findOne(Session.get('currentBoard'));    const name = templateInstance      .$('#labelName')      .val()      .trim();    const color = Blaze.getData(templateInstance.find('.fa-check')).color;    board.editLabel(this._id, name, color);    Popup.back();  },});Template.cardLabelsPopup.helpers({  isLabelSelected(cardId) {    return _.contains(Cards.findOne(cardId).labelIds, this._id);  },});
 |