').attr('id','loading'));
11 | socket.emit('open', '');
12 | });
13 |
14 | // Get file list
15 | function getFiles(directory) {
16 | directory = directory.replace("//","/");
17 | directory = directory.replace("|","'");
18 | let directoryClean = directory.replace("'","|");
19 | if ((directory !== '/') && (directory.endsWith('/'))) {
20 | directory = directory.slice(0, -1);
21 | }
22 | $('#filebrowser').empty();
23 | $('#filebrowser').append($('
').attr('id','loading'));
24 | socket.emit('getfiles', directory);
25 | }
26 |
27 | // Render file list
28 | async function renderFiles(data) {
29 | let dirs = data[0];
30 | let files = data[1];
31 | let directory = data[2];
32 | let baseName = directory.split('/').slice(-1)[0];
33 | let parentFolder = directory.replace(baseName,'');
34 | let parentLink = $('
').addClass('directory').attr('onclick', 'getFiles(\'' + parentFolder + '\');').text('..');
35 | let directoryClean = directory.replace("'","|");
36 | if (directoryClean == '/') {
37 | directoryClean = '';
38 | }
39 | let table = $('').addClass('fileTable');
40 | let tableHeader = $('');
41 | for await (name of ['Name', 'Type', 'Delete (NO WARNING)']) {
42 | tableHeader.append($('').text(name));
43 | }
44 | let parentRow = $(' | ');
45 | for await (item of [parentLink, $('').text('Parent'), $(' | ')]) {
46 | parentRow.append(item);
47 | }
48 | table.append(tableHeader,parentRow);
49 | $('#filebrowser').empty();
50 | $('#filebrowser').data('directory', directory);
51 | $('#filebrowser').append($('').text(directory));
52 | $('#filebrowser').append(table);
53 | if (dirs.length > 0) {
54 | for await (let dir of dirs) {
55 | let tableRow = $(' ');
56 | let dirClean = dir.replace("'","|");
57 | let link = $('').addClass('directory').attr('onclick', 'getFiles(\'' + directoryClean + '/' + dirClean + '\');').text(dir);
58 | let type = $(' | ').text('Dir');
59 | let del = $(' | ').append($(' | | |