78 lines
2.1 KiB
JavaScript
78 lines
2.1 KiB
JavaScript
|
import accounting from 'accounting';
|
||
|
import {ref} from 'vue';
|
||
|
|
||
|
accounting.settings.currency = {
|
||
|
...accounting.settings.currency,
|
||
|
precision: 2,
|
||
|
format: '%v %s',
|
||
|
decimal: ',',
|
||
|
thousand: '.',
|
||
|
};
|
||
|
|
||
|
export default function () {
|
||
|
const dropping = ref(false);
|
||
|
|
||
|
async function read(file) {
|
||
|
return new Promise((resolve) => {
|
||
|
var reader = new FileReader();
|
||
|
reader.onload = function () {
|
||
|
var r = reader.result;
|
||
|
resolve({
|
||
|
content: r.substr(r.search(',') + 1),
|
||
|
name: file.name,
|
||
|
type: file.type,
|
||
|
size: file.size,
|
||
|
});
|
||
|
};
|
||
|
reader.readAsDataURL(file);
|
||
|
});
|
||
|
}
|
||
|
function onDragEnter(e) {
|
||
|
e.preventDefault();
|
||
|
e.stopPropagation();
|
||
|
dropping.value = true;
|
||
|
}
|
||
|
function onDragOver(e) {
|
||
|
e.preventDefault();
|
||
|
e.stopPropagation();
|
||
|
}
|
||
|
function onDragLeave(e) {
|
||
|
e.preventDefault();
|
||
|
e.stopPropagation();
|
||
|
dropping.value = false;
|
||
|
}
|
||
|
function processDrop(e, maxFiles) {
|
||
|
e.preventDefault();
|
||
|
e.stopPropagation();
|
||
|
let dt = e.dataTransfer;
|
||
|
let files = [...dt.files].slice(0, maxFiles ? maxFiles : dt.files.length);
|
||
|
let result = [];
|
||
|
for (const f in files) {
|
||
|
if (typeof files[f] === 'object') {
|
||
|
result.push(files[f]);
|
||
|
}
|
||
|
}
|
||
|
dropping.value = false;
|
||
|
|
||
|
return result;
|
||
|
}
|
||
|
function size(file) {
|
||
|
if (file.size < 1000) {
|
||
|
return accounting.formatMoney(file.size, {symbol: 'B'});
|
||
|
}
|
||
|
if (file.size < 1000000) {
|
||
|
return accounting.formatMoney(file.size / 1000, {symbol: 'KB'});
|
||
|
}
|
||
|
if (file.size < 1000000000) {
|
||
|
return accounting.formatMoney(file.size / 1000000, {symbol: 'MB'});
|
||
|
}
|
||
|
if (file.size < 1000000000000) {
|
||
|
return accounting.formatMoney(file.size / 1000000000, {symbol: 'GB'});
|
||
|
}
|
||
|
|
||
|
return '';
|
||
|
}
|
||
|
|
||
|
return {dropping, onDragLeave, onDragOver, onDragEnter, processDrop, read};
|
||
|
}
|