| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 | import Attachments, { fileStoreStrategyFactory } from '/models/attachments';const filesize = require('filesize');BlazeComponent.extendComponent({  subscription: null,  showMoveAttachments: new ReactiveVar(false),  sessionId: null,  onCreated() {    this.error = new ReactiveVar('');    this.loading = new ReactiveVar(false);  },  events() {    return [      {        'click a.js-move-attachments': this.switchMenu,      },    ];  },  switchMenu(event) {    const target = $(event.target);    if (!target.hasClass('active')) {      this.loading.set(true);      this.showMoveAttachments.set(false);      if (this.subscription) {        this.subscription.stop();      }      $('.side-menu li.active').removeClass('active');      target.parent().addClass('active');      const targetID = target.data('id');      if ('move-attachments' === targetID) {        this.showMoveAttachments.set(true);        this.subscription = Meteor.subscribe('attachmentsList', () => {          this.loading.set(false);        });      }    }  },}).register('attachments');BlazeComponent.extendComponent({  getBoardsWithAttachments() {    this.attachments = Attachments.find().get();    this.attachmentsByBoardId = _.chain(this.attachments)      .groupBy(fileObj => fileObj.meta.boardId)      .value();    const ret = Object.keys(this.attachmentsByBoardId)      .map(boardId => {        const boardAttachments = this.attachmentsByBoardId[boardId];        _.each(boardAttachments, _attachment => {          _attachment.flatVersion = Object.keys(_attachment.versions)            .map(_versionName => {              const _version = Object.assign(_attachment.versions[_versionName], {"versionName": _versionName});              _version.storageName = fileStoreStrategyFactory.getFileStrategy(_attachment, _versionName).getStorageName();              return _version;            });        });        const board = Boards.findOne(boardId);        board.attachments = boardAttachments;        return board;      })    return ret;  },  getBoardData(boardid) {    const ret = Boards.findOne(boardId);    return ret;  },  events() {    return [      {        'click button.js-move-all-attachments-to-fs'(event) {          this.attachments.forEach(_attachment => {            Meteor.call('moveAttachmentToStorage', _attachment._id, "fs");          });        },        'click button.js-move-all-attachments-to-gridfs'(event) {          this.attachments.forEach(_attachment => {            Meteor.call('moveAttachmentToStorage', _attachment._id, "gridfs");          });        },      }    ]  }}).register('moveAttachments');BlazeComponent.extendComponent({  events() {    return [      {        'click button.js-move-all-attachments-of-board-to-fs'(event) {          this.data().attachments.forEach(_attachment => {            Meteor.call('moveAttachmentToStorage', _attachment._id, "fs");          });        },        'click button.js-move-all-attachments-of-board-to-gridfs'(event) {          this.data().attachments.forEach(_attachment => {            Meteor.call('moveAttachmentToStorage', _attachment._id, "gridfs");          });        },      }    ]  },}).register('moveBoardAttachments');BlazeComponent.extendComponent({  fileSize(size) {    const ret = filesize(size);    return ret;  },  events() {    return [      {        'click button.js-move-storage-fs'(event) {          Meteor.call('moveAttachmentToStorage', this.data()._id, "fs");        },        'click button.js-move-storage-gridfs'(event) {          Meteor.call('moveAttachmentToStorage', this.data()._id, "gridfs");        },      }    ]  },}).register('moveAttachment');
 |