'+icon+'
'+ name +'
'+fileSize+'\
' + detail.actions + '\
\
\
\
'+ name +''+fileSize+'\
\
\
\
\
')[0];
_this.fileList.append(file);
if (selected) {
file.querySelector("input[type='radio'], input[type='checkbox']").checked = true;
}
return file;
}
addFolder(f) {
let itemsLength = f.items.length,
name = this.escapeHTML(f.name),
icon = '
';
if(itemsLength) {
icon = '
';
}
if(itemsLength == 1) {
itemsLength += ' item';
}
else if(itemsLength > 1) {
itemsLength += ' items';
}
else {
itemsLength = 'Empty';
}
let folder = generateElements('
'+icon+'' + name + ' ' + itemsLength + '
')[0];
this.fileList.append(folder);
return folder;
}
render(data) {
let scannedFolders = [],
scannedFiles = [];
if(Array.isArray(data)) {
data.forEach(function (d) {
if (d.type === 'folder') {
scannedFolders.push(d);
}
else if (d.type === 'file') {
scannedFiles.push(d);
}
});
}
else if(typeof data === 'object') {
scannedFolders = data.folders;
scannedFiles = data.files;
}
// Empty the old result and make the new one
this.fileList.replaceChildren();//.style.display = 'none';
if(!scannedFolders.length && !scannedFiles.length) {
this.filemanager.querySelector('.nothingfound').style.display = '';
}
else {
this.filemanager.querySelector('.nothingfound').style.display = 'none';
}
let _this = this;
if(scannedFolders.length) {
scannedFolders.forEach(function(f) {
_this.addFolder(f);
});
}
if(scannedFiles.length) {
scannedFiles.forEach(function(f) {
_this.addFile(f);
});
}
// Generate the breadcrumbs
let url = '';
if(this.filemanager.classList.contains('searching')){
url = '
Search results: ';
this.fileList.classList.remove('animated');
}
else {
this.fileList.classList.add('animated');
this.breadcrumbsUrls.forEach(function (u, i) {
let name = u.split('/');
if (i !== _this.breadcrumbsUrls.length - 1) {
url += '
' + name[name.length-1] + ' → ';
}
else {
url += '
' + name[name.length-1] + '';
}
});
}
this.breadcrumbs.replaceChildren();
this.breadcrumbs.appendChild(generateElements('
home')[0]);
this.breadcrumbs.appendChild(generateElements('
' + url + '')[0]);
// Show the generated elements
this.fileList.animate({'display':'inline-block'});
}
// This function escapes special html characters in names
escapeHTML(text) {
return text.replace(/\&/g,'&').replace(/\/g,'>');
}
// Convert file sizes from bytes to human readable units
bytesToSize(bytes) {
let sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
if (bytes == 0) return '0 Bytes';
let i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));
return Math.round(bytes / Math.pow(1024, i), 2) + ' ' + sizes[i];
}
}
/*
export {
MediaModal
}
*/