90 lines
2.6 KiB
JavaScript
90 lines
2.6 KiB
JavaScript
add_file_tree_clickhanlder("left");
|
|
add_file_tree_clickhanlder("right");
|
|
|
|
function add_file_tree_clickhanlder(side) {
|
|
var hierarchy = document.getElementById("hierarchy-"+side );
|
|
hierarchy.addEventListener("click", function(event) {
|
|
var elem = event.target;
|
|
if(elem.tagName.toLowerCase() == "span" && elem !== event.currentTarget) {
|
|
|
|
var type = elem.classList.contains("folder") ? "folder" : "file";
|
|
if(type=="file") {
|
|
remove_info(side)
|
|
let path = cleanup_tree(elem);
|
|
path.unshift(elem.textContent);
|
|
let root_dir = document.getElementById(side + "_dir").value;
|
|
path.push(root_dir);
|
|
if( elem.textContent.endsWith('.mkv')) {
|
|
fetchmkvdata(path,side);
|
|
localStorage.setItem(side, JSON.stringify( [path, "file"]))
|
|
} else if ( elem.textContent.endsWith('.mp3') || elem.textContent.endsWith('.mp4')) {
|
|
create_convert_button(path, side);
|
|
}
|
|
handle_merge_button_changes()
|
|
|
|
}
|
|
if (type == "folder") {
|
|
var isexpanded = elem.dataset.isexpanded=="true";
|
|
|
|
if ( !isexpanded ) {
|
|
|
|
let path = get_path_var(elem);
|
|
let root_dir = document.getElementById(side + "_dir").value;
|
|
path.push(root_dir);
|
|
localStorage.setItem(side, JSON.stringify( [path, "folder"]))
|
|
fetchTable(elem.parentElement,path,side );
|
|
fetchmkvdata(path.reverse(),side);
|
|
} else {
|
|
localStorage.setItem(side, null)
|
|
remove_info(side)
|
|
cleanup_tree(elem);
|
|
handle_merge_button_changes()
|
|
}
|
|
|
|
elem.dataset.isexpanded = !isexpanded;
|
|
var toggleelms = [].slice.call(elem.parentElement.children);
|
|
var classnames = "file,foldercontainer".split(",");
|
|
toggleelms.forEach(function(element) {
|
|
if(classnames.some(function(val) {
|
|
return element.classList.contains(val);
|
|
}))
|
|
element.style.display = isexpanded ? "none" : "block";
|
|
});
|
|
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
function cleanup_tree(elem) {
|
|
let path = Array();
|
|
let parent_el = elem.parentElement;
|
|
while ( !parent_el.id || !parent_el.id.startsWith("hierarchy")) {
|
|
console.log(parent_el);
|
|
path.push(parent_el.dataset.folder);
|
|
parent_el = parent_el.parentElement;
|
|
}
|
|
|
|
parent_el.innerHTML ="";
|
|
for (let el of path.reverse()) {
|
|
let next_node = create_folder(el);
|
|
parent_el.appendChild(next_node);
|
|
parent_el = next_node;
|
|
}
|
|
if (elem.classList.contains("file")) {
|
|
parent_el.appendChild(elem);
|
|
}
|
|
return path;
|
|
}
|
|
|
|
function get_path_var(elem) {
|
|
let path = Array();
|
|
let parent_el = elem.parentElement;
|
|
while ( !parent_el.id || !parent_el.id.startsWith("hierarchy")) {
|
|
console.log(parent_el);
|
|
path.push(parent_el.dataset.folder);
|
|
parent_el = parent_el.parentElement;
|
|
}
|
|
return path;
|
|
}
|