mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-01-23 10:45:47 +00:00
refactor(upload-files) add from dom
This commit is contained in:
parent
ebe0183de0
commit
4dc5f6a249
4 changed files with 73 additions and 54 deletions
|
|
@ -258,58 +258,6 @@ function CmdProto() {
|
|||
return DOM.loadRemote('menu', callback);
|
||||
};
|
||||
|
||||
this.uploadFiles = (dir, files) => {
|
||||
let i = 0;
|
||||
const slice = [].slice;
|
||||
|
||||
if (!files) {
|
||||
files = dir;
|
||||
dir = CurrentInfo.dirPath;
|
||||
}
|
||||
|
||||
const n = files.length;
|
||||
|
||||
if (!n)
|
||||
return;
|
||||
|
||||
const array = slice.call(files);
|
||||
|
||||
exec.eachSeries(array, loadFile, func(files[0].name));
|
||||
|
||||
function func(name) {
|
||||
return () => {
|
||||
CloudCmd.refresh(null, () => {
|
||||
DOM.setCurrentByName(name);
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
function loadFile(file, callback) {
|
||||
const name = file.name;
|
||||
const path = dir + name;
|
||||
const prefixURL = CloudCmd.PREFIX_URL;
|
||||
const api = prefixURL + FS;
|
||||
|
||||
const percent = (i, n, per = 100) => {
|
||||
return Math.round(i * per / n);
|
||||
};
|
||||
|
||||
const step = (n) => 100 / n;
|
||||
|
||||
++i;
|
||||
|
||||
load.put(api + path, file)
|
||||
.on('end', callback)
|
||||
.on('progress', (count) => {
|
||||
const max = step(n);
|
||||
const value = (i - 1) * max + percent(count, 100, max);
|
||||
|
||||
Images.show.load('top');
|
||||
Images.setProgress(Math.round(value));
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* create new folder
|
||||
*
|
||||
|
|
|
|||
68
client/dom/upload-files.js
Normal file
68
client/dom/upload-files.js
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
'use strict';
|
||||
|
||||
const exec = require('execon');
|
||||
|
||||
const DOM = require('.');
|
||||
const load = require('./load');
|
||||
const Images = require('./images');
|
||||
|
||||
const {FS} = require('../../common/cloudfunc');
|
||||
const {CurrentInfo} = DOM;
|
||||
|
||||
const CloudCmd = require('../client');
|
||||
|
||||
const {
|
||||
PREFIX_URL,
|
||||
} = CloudCmd;
|
||||
|
||||
module.exports = (dir, files) => {
|
||||
let i = 0;
|
||||
const slice = [].slice;
|
||||
|
||||
if (!files) {
|
||||
files = dir;
|
||||
dir = CurrentInfo.dirPath;
|
||||
}
|
||||
|
||||
const n = files.length;
|
||||
|
||||
if (!n)
|
||||
return;
|
||||
|
||||
const array = slice.call(files);
|
||||
|
||||
exec.eachSeries(array, loadFile, func(files[0].name));
|
||||
|
||||
function func(name) {
|
||||
return () => {
|
||||
CloudCmd.refresh(null, () => {
|
||||
DOM.setCurrentByName(name);
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
function loadFile(file, callback) {
|
||||
const name = file.name;
|
||||
const path = dir + name;
|
||||
const api = PREFIX_URL + FS;
|
||||
|
||||
const percent = (i, n, per = 100) => {
|
||||
return Math.round(i * per / n);
|
||||
};
|
||||
|
||||
const step = (n) => 100 / n;
|
||||
|
||||
++i;
|
||||
|
||||
load.put(api + path, file)
|
||||
.on('end', callback)
|
||||
.on('progress', (count) => {
|
||||
const max = step(n);
|
||||
const value = (i - 1) * max + percent(count, 100, max);
|
||||
|
||||
Images.show.load('top');
|
||||
Images.setProgress(Math.round(value));
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -5,6 +5,8 @@
|
|||
const exec = require('execon');
|
||||
const itype = require('itype/legacy');
|
||||
|
||||
const uploadFiles = require('./dom/upload-files');
|
||||
|
||||
const {
|
||||
FS,
|
||||
apiURL
|
||||
|
|
@ -398,7 +400,7 @@ function dragndrop() {
|
|||
event.preventDefault();
|
||||
|
||||
if (!items || !items.length || !items[0].webkitGetAsEntry)
|
||||
return DOM.uploadFiles(files);
|
||||
return uploadFiles(files);
|
||||
|
||||
const dirFiles = [...items].filter((item) => {
|
||||
return item.kind === 'file';
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ const exec = require('execon');
|
|||
const load = require('../dom/load');
|
||||
const Files = require('../dom/files');
|
||||
const Images = require('../dom/images');
|
||||
const uploadFiles = require('../dom/upload-files');
|
||||
|
||||
CloudCmd.Upload = UploadProto;
|
||||
|
||||
|
|
@ -67,7 +68,7 @@ function afterShow() {
|
|||
|
||||
hide();
|
||||
|
||||
DOM.uploadFiles(files);
|
||||
uploadFiles(files);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue