listing files and dirs
This commit is contained in:
parent
4b26d3e4c0
commit
14204a7304
6 changed files with 172 additions and 4 deletions
107
js/main.js
Normal file
107
js/main.js
Normal file
|
@ -0,0 +1,107 @@
|
|||
/**
|
||||
* Created by mohamnag on 11/02/16.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
$(document).ready(function () {
|
||||
|
||||
var filesBaseUrl = "http://192.168.1.64:30080/files";
|
||||
|
||||
var fileListElement = $("#file-list");
|
||||
var fileItemElementTemplate = fileListElement.find("li").detach();
|
||||
|
||||
function renderFileElement(directory, fileName, fileType, fileSize, fileDate) {
|
||||
|
||||
var fileItemElement = fileItemElementTemplate.clone();
|
||||
|
||||
fileItemElement.addClass(fileType);
|
||||
fileItemElement.find(".file-name").text(fileName);
|
||||
|
||||
if (fileDate) {
|
||||
fileItemElement.find(".file-date").text(moment(fileDate).fromNow());
|
||||
}
|
||||
|
||||
if (fileType === "directory") {
|
||||
if (fileName === "..") {
|
||||
// navigate to parent dir
|
||||
fileItemElement.find(".file-link").click(function () {
|
||||
navigateTo(directory);
|
||||
});
|
||||
|
||||
} else {
|
||||
// navigate to sub dir
|
||||
fileItemElement.find(".file-link").click(function () {
|
||||
navigateTo(directory + fileName + "/");
|
||||
});
|
||||
}
|
||||
|
||||
} else if (fileType === "other") {
|
||||
// nginx returns symlinks as type other,
|
||||
// lets try to follow the links
|
||||
fileItemElement.find(".file-link").click(function () {
|
||||
navigateTo(directory + fileName + "/");
|
||||
});
|
||||
|
||||
} else {
|
||||
// just file dl
|
||||
fileItemElement.find(".file-link")
|
||||
.attr("href", directory + fileName)
|
||||
.attr("target", "_blank");
|
||||
}
|
||||
|
||||
if (fileSize) {
|
||||
fileItemElement.find(".file-size").text(fileSize);
|
||||
}
|
||||
|
||||
return fileItemElement;
|
||||
}
|
||||
|
||||
function getParentDir(path) {
|
||||
|
||||
if (path.length <= 1) {
|
||||
return null;
|
||||
}
|
||||
|
||||
var lastSlashPos = path.lastIndexOf("/", path.length - 2);
|
||||
var parentDir = lastSlashPos >= 0 ? path.substr(0, lastSlashPos + 1) : null;
|
||||
|
||||
return parentDir;
|
||||
}
|
||||
|
||||
function navigateTo(path) {
|
||||
console.log("navigateTo", path);
|
||||
|
||||
$.ajax({
|
||||
url: filesBaseUrl + path,
|
||||
success: function (filesData) {
|
||||
|
||||
fileListElement.empty();
|
||||
|
||||
var parentDir = getParentDir(path);
|
||||
|
||||
if (parentDir) {
|
||||
fileListElement.append(renderFileElement(
|
||||
parentDir,
|
||||
"..",
|
||||
"directory"
|
||||
));
|
||||
}
|
||||
|
||||
filesData.forEach(function (fileData) {
|
||||
fileListElement.append(renderFileElement(
|
||||
path,
|
||||
fileData.name,
|
||||
fileData.type,
|
||||
fileData.size,
|
||||
fileData.mtime
|
||||
));
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
navigateTo("/");
|
||||
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue