| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 | 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'(evt) {    const card = Cards.findOne(Session.get('currentCard'));    const labelId = this._id;    card.toggleLabel(labelId);    evt.preventDefault();  },  'click .js-edit-label': Popup.open('editLabel'),  'click .js-add-label': Popup.open('createLabel'),});Template.formLabel.events({  'click .js-palette-color'(evt) {    const $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'(evt, tpl) {    evt.preventDefault();    const board = Boards.findOne(Session.get('currentBoard'));    const name = tpl.$('#labelName').val().trim();    const color = Blaze.getData(tpl.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'(evt, tpl) {    evt.preventDefault();    const board = Boards.findOne(Session.get('currentBoard'));    const name = tpl.$('#labelName').val().trim();    const color = Blaze.getData(tpl.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);  },});
 |