I have this Javascript which call the web api to see the available folder and then the available files. Any comment or code review on my code?
var divFolder = document.getElementById("rootFolder");
var divFiles = document.getElementById("files");
function createFolderElement(data) {
var li = document.createElement("div");
li.setAttribute('data-id', data.filePathId);
li.setAttribute('class', "folder");
divFolder.appendChild(li);
li.innerHTML = data.folderName
}
function createFileElement(data) {
debugger
var li = document.createElement("div");
li.setAttribute('data-id', data.id);
li.setAttribute('class', "file");
divFiles.appendChild(li);
li.innerHTML = data.fileName
}
async function fetchFolder(parentId) {
document.getElementById('spinner').style.display = 'block'
divFolder.innerHTML = ''
const response = await fetch(`https://localhost:44371/api/file/folder/${parentId}`);
if (!response.ok) {
const message = `An error has occured: ${response.status}`;
$("div.message").text(message);
$("div.message").addClass("message alert alert-warning");
//throw new Error(message);
}
const files = await response.json();
if (files.length > 0) {
files.forEach((data) => {
createFolderElement(data)
})
createFolderEventListener();
document.getElementById('spinner').style.display = 'none'
}
}
async function fetchFiles(filePathId) {
document.getElementById('spinner').style.display = 'block'
divFolder.innerHTML = ''
const response = await fetch(`https://localhost:44371/api/file/files/${filePathId}`);
if (!response.ok) {
const message = `An error has occured: ${response.status}`;
$("div.message").text(message);
$("div.message").addClass("message alert alert-warning");
//throw new Error(message);
}
const folders = await response.json();
debugger
if (folders.length > 0) {
folders.forEach((data) => {
createFileElement(data)
})
createFileEventListener();
}
document.getElementById('spinner').style.display = 'none'
}
function createFolderEventListener() {
const myfolder = document.getElementsByClassName("folder");
[...myfolder].forEach(function (element) {
element.addEventListener("click", function () {
fetchFolder(element.dataset.id);
fetchFiles(element.dataset.id);
});
});
};
function createFileEventListener() {
const myfolder = document.getElementsByClassName("file");
[...myfolder].forEach(function (element) {
element.addEventListener("click", function () {
downloadPdf(element.dataset.id, element.textContent)
});
});
};
$(function () {
document.getElementById('spinner').style.display = 'none'
fetchFolder(1);
})
div.folder {
border: 1px solid black;
margin: 2px;
cursor: pointer
}
div.file {
border: 1px solid black;
margin: 2px;
cursor: pointer
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="message"></div>
<img src="~/img/loading.gif" id="spinner" />
<div id="rootFolder"></div>
<div id="files"></div>