function create_base_view() {
let tmp = document.createElement('div');
tmp.innerHTML = `
`;
document.getElementById("wrapper").innerHTML = tmp.innerHTML;
}
function create_login_view() {
let tmp = document.createElement('div');
tmp.innerHTML = ``;
document.getElementById("wrapper").innerHTML = '';
document.getElementById("wrapper").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 = base_url + 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_changed();
// }
//
// 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
// create_list_view(dataRoot[key]['children'], listElement, url + '/' + dataRoot[key].text);
// });
// }
// }
function create_main_view(data) {
let curr_dir = get_path();
let files = document.createElement('div');
files.innerHTML = `
`;
// Previous directory
if (curr_dir !== null && curr_dir !== '') {
files.getElementsByTagName('tbody')[0].appendChild(add_table_row("", "..", "", "", false, function () {
window.history.pushState('index', 'Filemanager', 'index.html?path=' + one_dir_back());
url_changed();
}));
}
// Folders
for (let i = 0; i < data.length; i++) {
if (data[i]['Type'] === 'dir') {
files.getElementsByTagName('tbody')[0].appendChild(add_table_row("folder", data[i]['Name'], "directory", curr_dir, true, function () {
window.history.pushState('index', 'Filemanager', 'index.html?path=' + curr_dir + '/' + data[i]['Name']);
url_changed();
}));
}
}
// Files
for (let i = 0; i < data.length; i++) {
if (data[i]['Type'] !== 'dir') {
let icon = '';
switch (data[i]['Type'].split('/')[0]) {
case 'application':
icon = 'apps';
break;
case 'audio':
icon = 'music_note';
break;
case 'drawing':
icon = 'gesture';
break;
case 'image':
icon = 'image';
break;
case 'message':
icon = 'mail';
break;
case 'multipart':
icon = 'note_add';
break;
case 'text':
icon = 'description';
break;
case 'video':
icon = 'movie';
break;
default:
icon = 'article';
break;
}
files.getElementsByTagName('tbody')[0].appendChild(add_table_row(icon, data[i]['Name'], data[i]['Type'], curr_dir, true, function () {
show_file_view(curr_dir + '/' + data[i]['Name'], data[i]['Type']);
}));
}
}
// Path
let s = `/
`;
if (curr_dir !== null) {
let folders = curr_dir.split('/');
for (let i = 1; i < folders.length; i++) {
if (folders[i] !== '') s = s.concat(`${folders[i]}
`);
}
}
files.getElementsByTagName('div')[0].innerHTML = s;
document.getElementById("files").innerHTML = '';
document.getElementById("files").appendChild(files);
// Close contextmenu
document.getElementsByTagName('body')[0].addEventListener('click', function () {
document.getElementById('context_menu').style.display = 'none';
});
}
function add_table_row(icon, name, type, path, context, click_function) {
let tr = document.createElement('tr');
tr.style.cursor = 'pointer';
tr.onclick = click_function;
if (context) {
tr.addEventListener("contextmenu", function (e) {
document.getElementById('context_menu').setAttribute('data-file-name', path + '/' + name);
document.getElementById('context_menu').setAttribute('data-mimetype', type);
document.getElementById('context_menu').style.display = 'block';
document.getElementById('context_menu').style.left = e.pageX + 'px';
document.getElementById('context_menu').style.top = e.pageY + 'px';
e.preventDefault();
});
}
tr.innerHTML = `
${icon} |
${name} |
${type} |
`;
return tr;
}
function show_file_view(data, type) {
let modal = document.getElementById("modal");
let title = document.getElementById("modal_title");
let modal_content = document.getElementsByClassName("modal_content")[0];
switch (type.split('/')[0]) {
case 'application':
modal_content.innerHTML = ``;
break;
case 'audio':
httpGetAsync(base_url + data + '?format=base64', null, show_audio_callback);
break;
case 'drawing':
modal_content.innerHTML = ``;
break;
case 'image':
httpGetAsync(base_url + data + '?format=base64', null, show_image_callback);
break;
case 'message':
modal_content.innerHTML = ``;
break;
case 'multipart':
modal_content.innerHTML = ``;
break;
case 'text':
httpGetAsync(base_url + data, null, show_text_callback);
break;
case 'video':
httpGetAsync(base_url + data + '?format=base64', null, show_video_callback);
break;
default:
modal_content.innerHTML = ``;
break;
}
title.innerHTML = `File: ${data}`;
modal.style.display = "block";
}