mirror of
https://github.com/wekan/wekan.git
synced 2025-09-22 01:50:48 +02:00
142 lines
4.3 KiB
JavaScript
142 lines
4.3 KiB
JavaScript
import { ReactiveCache } from '/imports/reactiveCache';
|
|
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 = ReactiveCache.getBoard(boardId);
|
|
board.attachments = boardAttachments;
|
|
return board;
|
|
})
|
|
return ret;
|
|
},
|
|
getBoardData(boardid) {
|
|
const ret = ReactiveCache.getBoard(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");
|
|
});
|
|
},
|
|
'click button.js-move-all-attachments-to-s3'(event) {
|
|
this.attachments.forEach(_attachment => {
|
|
Meteor.call('moveAttachmentToStorage', _attachment._id, "s3");
|
|
});
|
|
},
|
|
}
|
|
]
|
|
}
|
|
}).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");
|
|
});
|
|
},
|
|
'click button.js-move-all-attachments-of-board-to-s3'(event) {
|
|
this.data().attachments.forEach(_attachment => {
|
|
Meteor.call('moveAttachmentToStorage', _attachment._id, "s3");
|
|
});
|
|
},
|
|
}
|
|
]
|
|
},
|
|
}).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");
|
|
},
|
|
'click button.js-move-storage-s3'(event) {
|
|
Meteor.call('moveAttachmentToStorage', this.data()._id, "s3");
|
|
},
|
|
}
|
|
]
|
|
},
|
|
}).register('moveAttachment');
|