123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- BlazeComponent.extendComponent({
- customFields() {
- return CustomFields.find({
- boardIds: {$in: [Session.get('currentBoard')]},
- });
- },
- events() {
- return [{
- 'click .js-open-create-custom-field': Popup.open('createCustomField'),
- 'click .js-edit-custom-field': Popup.open('editCustomField'),
- }];
- },
- }).register('customFieldsSidebar');
- const CreateCustomFieldPopup = BlazeComponent.extendComponent({
- _types: ['text', 'number', 'date', 'dropdown'],
- onCreated() {
- this.type = new ReactiveVar((this.data().type) ? this.data().type : this._types[0]);
- this.dropdownItems = new ReactiveVar((this.data().settings && this.data().settings.dropdownItems) ? this.data().settings.dropdownItems : []);
- },
- types() {
- const currentType = this.data().type;
- return this._types.
- map((type) => {return {
- value: type,
- name: TAPi18n.__(`custom-field-${type}`),
- selected: type === currentType,
- };});
- },
- isTypeNotSelected(type) {
- return this.type.get() !== type;
- },
- getDropdownItems() {
- const items = this.dropdownItems.get();
- Array.from(this.findAll('.js-field-settings-dropdown input')).forEach((el, index) => {
- //console.log('each item!', index, el.value);
- if (!items[index]) items[index] = {
- _id: Random.id(6),
- };
- items[index].name = el.value.trim();
- });
- return items;
- },
- getSettings() {
- const settings = {};
- switch (this.type.get()) {
- case 'dropdown': {
- const dropdownItems = this.getDropdownItems().filter((item) => !!item.name.trim());
- settings.dropdownItems = dropdownItems;
- break;
- }
- }
- return settings;
- },
- events() {
- return [{
- 'change .js-field-type'(evt) {
- const value = evt.target.value;
- this.type.set(value);
- },
- 'keydown .js-dropdown-item.last'(evt) {
- if (evt.target.value.trim() && evt.keyCode === 13) {
- const items = this.getDropdownItems();
- this.dropdownItems.set(items);
- evt.target.value = '';
- }
- },
- 'click .js-field-show-on-card'(evt) {
- let $target = $(evt.target);
- if(!$target.hasClass('js-field-show-on-card')){
- $target = $target.parent();
- }
- $target.find('.materialCheckBox').toggleClass('is-checked');
- $target.toggleClass('is-checked');
- },
- 'click .js-field-automatically-on-card'(evt) {
- let $target = $(evt.target);
- if(!$target.hasClass('js-field-automatically-on-card')){
- $target = $target.parent();
- }
- $target.find('.materialCheckBox').toggleClass('is-checked');
- $target.toggleClass('is-checked');
- },
- 'click .js-field-showLabel-on-card'(evt) {
- let $target = $(evt.target);
- if(!$target.hasClass('js-field-showLabel-on-card')){
- $target = $target.parent();
- }
- $target.find('.materialCheckBox').toggleClass('is-checked');
- $target.toggleClass('is-checked');
- },
- 'click .primary'(evt) {
- evt.preventDefault();
- const data = {
- name: this.find('.js-field-name').value.trim(),
- type: this.type.get(),
- settings: this.getSettings(),
- showOnCard: this.find('.js-field-show-on-card.is-checked') !== null,
- showLabelOnMiniCard: this.find('.js-field-showLabel-on-card.is-checked') !== null,
- automaticallyOnCard: this.find('.js-field-automatically-on-card.is-checked') !== null,
- };
- // insert or update
- if (!this.data()._id) {
- data.boardIds = [Session.get('currentBoard')];
- CustomFields.insert(data);
- } else {
- CustomFields.update(this.data()._id, {$set: data});
- }
- Popup.back();
- },
- 'click .js-delete-custom-field': Popup.afterConfirm('deleteCustomField', function() {
- const customField = CustomFields.findOne(this._id);
- if (customField.boardIds.length > 1) {
- CustomFields.update(customField._id, {
- $pull: {
- boardIds: Session.get('currentBoard'),
- },
- });
- } else {
- CustomFields.remove(customField._id);
- }
- Popup.close();
- }),
- }];
- },
- });
- CreateCustomFieldPopup.register('createCustomFieldPopup');
- (class extends CreateCustomFieldPopup {
- template() {
- return 'createCustomFieldPopup';
- }
- }).register('editCustomFieldPopup');
- /*Template.deleteCustomFieldPopup.events({
- 'submit'(evt) {
- const customFieldId = this._id;
- CustomFields.remove(customFieldId);
- Popup.close();
- }
- });*/
|