function create_login_view() {
let tmp = document.createElement('div');
tmp.innerHTML = `
`;
document.getElementById("login").appendChild(tmp.firstChild);
}
function create_logout_view() {
let logout = document.createElement('div');
logout.classList.add('logout');
logout.innerText = 'Logout';
logout.onclick = function () {
sessionStorage.removeItem('authorization');
location.reload();
}
document.getElementsByClassName('app-header')[0].appendChild(logout);
}
function create_tree_view_data(curr_dir) {
let url = 'http://localhost:8080' + curr_dir;
const xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function () {
if (this.readyState === 4) {
if (xmlHttp.status === 200) {
let data = JSON.parse(xmlHttp.responseText);
for (let i = 0; i < data.length; i++) {
if (data[i]['Type'] === 'dir') {
file_path.push(curr_dir + '/' + data[i]['Name']);
create_tree_view_data(curr_dir + '/' + data[i]['Name']);
}
}
tree = file_path.reduce((arr, path) => addPath(path.split('/'), arr), [])[0]['children'];
create_tree_view();
}
}
}
xmlHttp.open("GET", url, true);
xmlHttp.setRequestHeader('Authorization', 'Basic ' + sessionStorage.getItem('authorization'));
xmlHttp.send(null);
}
function addPath(pathcomponents, arr ){
let component = pathcomponents.shift()
let comp = arr.find(item => item.text === component)
if (!comp) {
comp = {text: component}
arr.push(comp)
}
if(pathcomponents.length){
addPath(pathcomponents, comp.children || (comp.children = []))
}
return arr
}
function create_tree_view() {
let tree = document.createElement('div');
tree.innerHTML = `
`;
document.getElementById("tree").innerHTML = '';
create_list_view(this.tree, document.getElementById("tree"), '');
// Remove nested-class from root element
document.getElementsByTagName('ul')[0].classList.remove('nested')
let toggler = document.getElementsByClassName("folder");
for (let i = 0; i < toggler.length; i++) {
toggler[i].addEventListener("click", function () {
if(this.parentElement.querySelector(".nested") !== null) {
this.parentElement.querySelector(".nested").classList.toggle("active");
}
this.classList.toggle("folder-open");
});
}
}
function tree_onclick(url) {
window.history.pushState('index', 'Filemanager', 'index.html?path=' + url);
url_listener();
}
function create_list_view(dataRoot, elementRoot, url) {
if (dataRoot) {
const list = document.createElement('ul');
list.classList.add('nested');
elementRoot.appendChild(list);
Object.keys(dataRoot).forEach(key => {
// // Create a text node and a list element to put it in
const listElement = document.createElement('li');
listElement.innerHTML = `${dataRoot[key].text}`;
list.appendChild(listElement);
// Continue recursively down now using the current list element
console.log(url + '/' + dataRoot[key].text)
create_list_view(dataRoot[key]['children'], listElement, url + '/' + dataRoot[key].text);
});
}
}
function create_file_view(data) {
let curr_dir = findGetParameter('path');
let files = document.createElement('div');
files.innerHTML = `
Name
Type
..
`;
// Folders
for (let i = 0; i < data.length; i++) {
if (data[i]['Type'] === 'dir') {
let folder = document.createElement('tr');
folder.style = 'cursor: pointer;';
folder.onclick = function () {
if (curr_dir === null) curr_dir = '';
window.history.pushState('index', 'Filemanager', 'index.html?path=' + curr_dir + '/' + data[i]['Name']);
url_listener();
};
folder.innerHTML = `
folder
${data[i]['Name']}
directory
`;
files.getElementsByTagName('tbody')[0].appendChild(folder);
}
}
// Files
for (let i = 0; i < data.length; i++) {
if (data[i]['Type'] !== 'dir') {
let file = document.createElement('tr');
file.style = 'cursor: pointer;';
file.onclick = function () {
load_file(data[i]['Name'], data[i]['Type']);
};
let icon = 'article';
if (data[i]['Type'].indexOf("application") >= 0) {
icon = 'apps';
} else if (data[i]['Type'].indexOf("audio") >= 0) {
icon = 'music_note';
} else if (data[i]['Type'].indexOf("drawing") >= 0) {
icon = 'gesture';
} else if (data[i]['Type'].indexOf("image") >= 0) {
icon = 'image';
} else if (data[i]['Type'].indexOf("message") >= 0) {
icon = 'mail';
} else if (data[i]['Type'].indexOf("multipart") >= 0) {
icon = 'note_add';
} else if (data[i]['Type'].indexOf("text") >= 0) {
icon = 'description';
} else if (data[i]['Type'].indexOf("video") >= 0) {
icon = 'movie';
}
file.innerHTML = `
${icon}
${data[i]['Name']}
${data[i]['Type']}
`;
files.getElementsByTagName('tbody')[0].appendChild(file);
}
}
// Path
let s = `
/
`;
if (curr_dir !== null) {
let folders = curr_dir.split('/');
for (let i = 1; i < folders.length; i++) {
s = s.concat(`