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); } function create_login_view() { let tmp = document.createElement('div'); tmp.innerHTML = `

Login

`; document.getElementById("wrapper").innerHTML = tmp.innerHTML; } 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); } 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'; } } function create_main_view(data) { let curr_dir = get_curr_path(); let files = document.createElement('div'); files.innerHTML = `
Name Type
`; // 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'; }); } 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) { 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(`Image`); /* TODO */ } 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; } }