cardCustomFields.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. Template.cardCustomFieldsPopup.helpers({
  2. hasCustomField() {
  3. const card = Cards.findOne(Session.get('currentCard'));
  4. const customFieldId = this._id;
  5. return card.customFieldIndex(customFieldId) > -1;
  6. },
  7. });
  8. Template.cardCustomFieldsPopup.events({
  9. 'click .js-select-field'(evt) {
  10. const card = Cards.findOne(Session.get('currentCard'));
  11. const customFieldId = this._id;
  12. card.toggleCustomField(customFieldId);
  13. evt.preventDefault();
  14. },
  15. 'click .js-settings'(evt) {
  16. EscapeActions.executeUpTo('detailsPane');
  17. Sidebar.setView('customFields');
  18. evt.preventDefault();
  19. }
  20. });
  21. const CardCustomField = BlazeComponent.extendComponent({
  22. getTemplate() {
  23. return 'cardCustomField-' + this.data().definition.type;
  24. },
  25. onCreated() {
  26. const self = this;
  27. },
  28. canModifyCard() {
  29. return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
  30. },
  31. });
  32. CardCustomField.register('cardCustomField');
  33. (class extends CardCustomField {
  34. onCreated() {
  35. }
  36. events() {
  37. return [{
  38. 'submit .js-card-customfield-text'(evt) {
  39. evt.preventDefault();
  40. const card = Cards.findOne(Session.get('currentCard'));
  41. const customFieldId = this.data()._id;
  42. const value = this.currentComponent().getValue();
  43. card.setCustomField(customFieldId,value);
  44. },
  45. }];
  46. }
  47. }).register('cardCustomField-text');
  48. (class extends CardCustomField {
  49. onCreated() {
  50. this._items = this.data().definition.settings.dropdownItems;
  51. this.items = this._items.slice(0);
  52. this.items.unshift({
  53. _id: "",
  54. name: TAPi18n.__('custom-field-dropdown-none')
  55. });
  56. }
  57. selectedItem() {
  58. const selected = this._items.find((item) => {
  59. return item._id == this.data().value;
  60. });
  61. return (selected) ? selected.name : TAPi18n.__('custom-field-dropdown-unknown');
  62. }
  63. events() {
  64. return [{
  65. 'submit .js-card-customfield-dropdown'(evt) {
  66. evt.preventDefault();
  67. const card = Cards.findOne(Session.get('currentCard'));
  68. const customFieldId = this.data()._id;
  69. const value = this.find('select').value;
  70. card.setCustomField(customFieldId,value);
  71. },
  72. }];
  73. }
  74. }).register('cardCustomField-dropdown');