summaryrefslogtreecommitdiffstats
path: root/client/lib
diff options
context:
space:
mode:
authorRomulus Urakagi Tsai <urakagi@gmail.com>2019-08-12 01:43:21 +0000
committerRomulus Urakagi Tsai <urakagi@gmail.com>2019-08-12 01:43:21 +0000
commitefdab37f3faeb125a9b8d31969762932bbbc0c4b (patch)
tree5fdb667b151819325e340a23c7250bd2bb638137 /client/lib
parent4f4e0a21f80019048aad6b7a679899c048cb3865 (diff)
parentdb1cf5bb64f10317742361637d239f08bec141b8 (diff)
downloadwekan-efdab37f3faeb125a9b8d31969762932bbbc0c4b.tar.gz
wekan-efdab37f3faeb125a9b8d31969762932bbbc0c4b.tar.bz2
wekan-efdab37f3faeb125a9b8d31969762932bbbc0c4b.zip
Merge branch 'master' of https://github.com/wekan/wekan
Diffstat (limited to 'client/lib')
-rw-r--r--client/lib/utils.js77
1 files changed, 77 insertions, 0 deletions
diff --git a/client/lib/utils.js b/client/lib/utils.js
index 5681273e..81835929 100644
--- a/client/lib/utils.js
+++ b/client/lib/utils.js
@@ -24,6 +24,83 @@ Utils = {
);
},
+ MAX_IMAGE_PIXEL: Meteor.settings.public.MAX_IMAGE_PIXEL,
+ COMPRESS_RATIO: Meteor.settings.public.IMAGE_COMPRESS_RATIO,
+ processUploadedAttachment(card, fileObj, callback) {
+ const next = attachment => {
+ if (typeof callback === 'function') {
+ callback(attachment);
+ }
+ };
+ if (!card) {
+ return next();
+ }
+ const file = new FS.File(fileObj);
+ if (card.isLinkedCard()) {
+ file.boardId = Cards.findOne(card.linkedId).boardId;
+ file.cardId = card.linkedId;
+ } else {
+ file.boardId = card.boardId;
+ file.swimlaneId = card.swimlaneId;
+ file.listId = card.listId;
+ file.cardId = card._id;
+ }
+ file.userId = Meteor.userId();
+ if (file.original) {
+ file.original.name = fileObj.name;
+ }
+ return next(Attachments.insert(file));
+ },
+ shrinkImage(options) {
+ // shrink image to certain size
+ const dataurl = options.dataurl,
+ callback = options.callback,
+ toBlob = options.toBlob;
+ let canvas = document.createElement('canvas'),
+ image = document.createElement('img');
+ const maxSize = options.maxSize || 1024;
+ const ratio = options.ratio || 1.0;
+ const next = function(result) {
+ image = null;
+ canvas = null;
+ if (typeof callback === 'function') {
+ callback(result);
+ }
+ };
+ image.onload = function() {
+ let width = this.width,
+ height = this.height;
+ let changed = false;
+ if (width > height) {
+ if (width > maxSize) {
+ height *= maxSize / width;
+ width = maxSize;
+ changed = true;
+ }
+ } else if (height > maxSize) {
+ width *= maxSize / height;
+ height = maxSize;
+ changed = true;
+ }
+ canvas.width = width;
+ canvas.height = height;
+ canvas.getContext('2d').drawImage(this, 0, 0, width, height);
+ if (changed === true) {
+ const type = 'image/jpeg';
+ if (toBlob) {
+ canvas.toBlob(next, type, ratio);
+ } else {
+ next(canvas.toDataURL(type, ratio));
+ }
+ } else {
+ next(changed);
+ }
+ };
+ image.onerror = function() {
+ next(false);
+ };
+ image.src = dataurl;
+ },
capitalize(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
},