Files
Pignio/static/add.js

69 lines
2.0 KiB
JavaScript

if ('up' in window) {
up.compiler('form.add', addHandler);
} else {
var form = document.querySelector('form.add');
if (form) {
addHandler(form);
}
}
function addHandler(form) {
var link = form.querySelector('input[name="link"]');
var checkLink = form.querySelector('input.from-link');
// var checkProxatore = form.querySelector('input.with-proxatore');
var image = form.querySelector('img.image');
var upload = form.querySelector('input[name="file"]');
upload.addEventListener('change', function(ev) {
const file = ev.target.files[0];
if (!file) return;
const reader = new FileReader();
reader.onload = function(e) {
image.src = e.target.result;
image.parentElement.hidden = false;
};
reader.readAsDataURL(file);
});
document.addEventListener('paste', function(ev) {
const items = (ev.clipboardData || ev.originalEvent.clipboardData).items;
for (let item of items) {
if (item.type.indexOf('image') !== -1) {
const file = item.getAsFile();
const reader = new FileReader();
reader.onload = function(e) {
image.src = e.target.result;
image.parentElement.hidden = false;
const dataTransfer = new DataTransfer();
dataTransfer.items.add(file);
upload.files = dataTransfer.files;
};
reader.readAsDataURL(file);
break;
}
}
});
['change', 'input', 'paste'].forEach(handler => {
link.addEventListener(handler, () => {
var url = link.value.trim();
if (checkLink.checked && url) {
fetch('../api/preview?url=' + encodeURIComponent(url))
.then(res => res.json())
.then(data => {
for (var key in data) {
var field = form.querySelector(`[name="${key}"]`);
if (field) {
field.value = data[key];
}
var el = form.querySelector(`[class="${key}"]`);
if (el) {
el.src = data[key];
el.parentElement.hidden = false;
}
}
})
}
})
});
}