Skip to content
Snippets Groups Projects
Select Git revision
  • 998147dc6f511ee8eca67a4a1d49611b21752bc3
  • main default protected
  • ui-rewrite
3 results

page_upload.js

Blame
  • page_upload.js 3.13 KiB
    function postData(url, data) {
        return fetch(url, {
            body: data,
            cache: 'no-cache',
            credentials: 'same-origin',
            method: 'POST',
            mode: 'cors',
            redirect: 'follow'
        }).then(response => response.json())
    }
    
    const page = document.querySelector(".page.upload");
    const form = document.querySelector("form.upload");
    const element = document.querySelector("form.upload input[type=file]");
    const results = document.querySelector(".uploading.images");
    const sidebar = document.querySelector(".uploading.images .sidebar");
    element.addEventListener("change", () => {
        page.classList.add("submitted");
        for (let file of element.files) {
            const reader = new FileReader();
            reader.addEventListener("load", (e) => {
                const dataUrl = e.target.result;
    
                const image_container = document.createElement("div");
                image_container.classList.add("detail", "uploading");
    
                const image_title = document.createElement("h2");
                image_title.classList.add("title", "fake-input");
                image_title.contentEditable = "true";
                image_title.setAttribute("placeholder", "Title");
                image_container.appendChild(image_title);
    
                const image_link = document.createElement("a");
                image_link.classList.add("image");
    
                const image_progress = document.createElement("div");
                image_progress.classList.add("progress");
    
                const image_progress_indeterminate = document.createElement("div");
                image_progress_indeterminate.classList.add("indeterminate");
    
                image_progress.appendChild(image_progress_indeterminate);
                image_link.appendChild(image_progress);
    
                const image = document.createElement("img");
                image.src = dataUrl;
                image_link.appendChild(image);
    
                image_container.appendChild(image_link);
    
                const image_description = document.createElement("p");
                image_description.classList.add("description", "fake-input");
                image_description.contentEditable = "true";
                image_description.setAttribute("placeholder", "Description");
                image_description.dataset["multiline"] = "true";
                image_container.appendChild(image_description);
    
                results.insertBefore(image_container, sidebar);
                initFakeInput();
    
                const data = new FormData();
                data.append("file", file, file.name);
    
                postData("/upload/", data).then((json) => {
                    image_container.classList.remove("uploading");
                    if (json.success) {
                        image_link.href = "/" + json.id;
                        image.src = "/" + json.id;
                    } else {
                        const image_error = document.createElement("div");