// Show base after login
function create_base_view() {
let tmp;
tmp = document.createElement('div');
tmp.innerHTML = `
`;
document.getElementById("wrapper").innerHTML = tmp.innerHTML;
tmp = document.createElement('div');
tmp.innerHTML = `
`;
document.getElementsByTagName('main')[0].appendChild(tmp);
}
// Show login
function create_login_view() {
let tmp = document.createElement('div');
tmp.innerHTML = ``;
document.getElementById("wrapper").innerHTML = tmp.innerHTML;
}
// Add logout button
function create_logout_view() {
let logout = document.createElement('div');
logout.id = 'logout';
logout.innerText = 'Logout';
logout.onclick = function () {
httpGetAsync(base_url + '/logout', null, function (response, code) {
if (code === 200) {
sessionStorage.removeItem('authorization');
document.getElementById('logout').remove();
document.getElementById('context_menu').parentElement.remove();
create_login_view();
} else {
try_to_parse_error(response);
}
});
};
document.getElementsByClassName('app-header')[0].appendChild(logout);
}
// Get icon for filetype
function get_icon(type) {
switch (type.split('/')[0]) {
case 'application':
return 'apps';
case 'audio':
return 'music_note';
case 'drawing':
return 'gesture';
case 'image':
return 'image';
case 'message':
return 'mail';
case 'multipart':
return 'note_add';
case 'text':
return 'description';
case 'video':
return 'movie';
default:
return 'article';
}
}
// Create content
function create_main_view(data) {
let curr_dir = get_curr_path();
let files = document.createElement('div');
files.innerHTML = `
`;
// Previous directory
if (curr_dir !== '/') {
files.getElementsByTagName('tbody')[0].appendChild(add_table_row("", "..", "", "", false, function () {
window.history.pushState('index', 'Filemanager', 'index.html?path=' + one_dir_back());
path_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 () {
let url;
if (curr_dir === '/') {
url = 'index.html?path=' + curr_dir + data[i]['Name'];
} else {
url = 'index.html?path=' + curr_dir + '/' + data[i]['Name'];
}
window.history.pushState('index', 'Filemanager', url);
path_changed();
}));
}
}
// Files
for (let i = 0; i < data.length; i++) {
if (data[i]['Type'] !== 'dir') {
files.getElementsByTagName('tbody')[0].appendChild(add_table_row(get_icon(data[i]['Type']), data[i]['Name'], data[i]['Type'], curr_dir, true, function () {
let url;
if (curr_dir === '/') {
url = '/' + data[i]['Name'];
} else {
url = curr_dir + '/' + data[i]['Name'];
}
show_file_view(url, 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';
});
}
// Create table row
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;
}
// Open file
function show_file_view(data, type) {
switch (type.split('/')[0]) {
case 'audio':
create_modal(`File: ${data}`, ``);
httpGetAsync(base_url + data + '?format=base64', null, function (response, code) {
if (code === 200) {
change_modal_content(``);
} else {
try_to_parse_error(response);
}
});
break;
case 'image':
create_modal(`File: ${data}`, ``);
httpGetAsync(base_url + data + '?format=base64', null, function (response, code) {
if (code === 200) {
change_modal_content(`
`);
} else {
try_to_parse_error(response);
}
});
break;
case 'text':
create_modal(`File: ${data}`, ``, ``);
httpGetAsync(base_url + data, null, function (response, code) {
if (code === 200) {
change_modal_content(``);
} else {
try_to_parse_error(response);
}
});
break;
case 'video':
create_modal(`File: ${data}`, ``);
httpGetAsync(base_url + data + '?format=base64', null, function (response, code) {
if (code === 200) {
change_modal_content(``);
} else {
try_to_parse_error(response);
}
});
break;
default:
create_modal(`File: ${data}`, `Cannot open file!`);
break;
}
}