function show_file_tree() { $("#dir_select").modal(); } function getDirView(event = false) { if (event) { try { let path = event.target.parentElement.getAttribute('data-path'); if (event.target.parentElement.classList.contains('clicked')) { if ($(`#${path}span`).hasClass('files-tree-title')) { $(`#${path}ul`).toggleClass("d-block"); $(`#${path}span`).toggleClass("tree-caret-down"); } return; } else { getTreeView(path); } } catch { console.log("Well that failed"); } } else if ($("#root_files_button").hasClass("clicked")) { getTreeView($("#zip_server_path").val(), true); } else { getTreeView($("#file-uploaded").val(), true, true); } } async function getTreeView(path, unzip = false, upload = false) { const token = getCookie("_xsrf"); console.log("IN TREE VIEW") console.log({ "page": "import", "folder": path, "upload": upload, "unzip": unzip }); let res = await fetch(`/api/v2/import/file/unzip/`, { method: 'POST', headers: { 'X-XSRFToken': token }, body: JSON.stringify({ "page": "import", "folder": path, "upload": upload, "unzip": unzip }), }); let responseData = await res.json(); if (responseData.status === "ok") { console.log(responseData); process_tree_response(responseData); let x = document.querySelector('.bootbox'); if (x) { x.remove() } x = document.querySelector('.modal-backdrop'); if (x) { x.remove() } show_file_tree(); } else { bootbox.alert({ title: responseData.status, message: responseData.error }); } } function process_tree_response(response) { const styles = window.getComputedStyle(document.getElementById("lower_half")); //If this value is still hidden we know the user is executing a zip import and not an upload if (styles.visibility === "hidden") { document.getElementById('zip_submit').disabled = false; } else { document.getElementById('upload_submit').disabled = false; } let path = response.data.root_path.path; $(".root-input").val(response.data.root_path.path); let text = `<ul class="tree-nested d-block" id="${path}ul">`; Object.entries(response.data).forEach(([key, value]) => { if (key === "root_path" || key === "db_stats") { //continue is not valid in for each. Return acts as a continue. return; } let dpath = value.path; let filename = key; if (value.dir) { text += `<li class="tree-item" id="${dpath}li" data-path="${dpath}"> <div id="${dpath}" data-path="${dpath}" data-name="${filename}" class="tree-caret tree-ctx-item tree-folder"> <input type="radio" name="root_path" value="${dpath}"> <span id="${dpath}span" class="files-tree-title" data-path="${dpath}" data-name="${filename}" onclick="getDirView(event)"> <i style="color: var(--info);" class="far fa-folder"></i> <i style="color: var(--info);" class="far fa-folder-open"></i> ${filename} </span> </input></div><li>` } else { text += `<li class="d-block tree-ctx-item tree-file" data-path="${dpath}" data-name="${filename}" onclick="" id="${dpath}li"><input type='radio' class="checkBoxClass d-none file-check" name='root_path' value="${dpath}" disabled><span style="margin-right: 6px;"> <i class="far fa-file"></i></span></input>${filename}</li> ` } }); text += `</ul>`; if (response.data.root_path.top) { try { document.getElementById('main-tree-div').innerHTML += text; document.getElementById('main-tree').parentElement.classList.add("clicked"); } catch { document.getElementById('files-tree').innerHTML = text; } } else { try { document.getElementById(path + "span").classList.add('tree-caret-down'); document.getElementById(path).innerHTML += text; document.getElementById(path).classList.add("clicked"); } catch { console.log("Bad") } let toggler = document.getElementById(path + "span"); if (toggler.classList.contains('files-tree-title')) { document.getElementById(path + "span").addEventListener("click", function caretListener() { document.getElementById(path + "ul").classList.toggle("d-block"); document.getElementById(path + "span").classList.toggle("tree-caret-down"); }); } } } function getToggleMain(event) { const path = event.target.parentElement.getAttribute('data-path'); document.getElementById("files-tree").classList.toggle("d-block"); document.getElementById(path + "span").classList.toggle("tree-caret-down"); document.getElementById(path + "span").classList.toggle("tree-caret"); }