316 lines
11 KiB
JavaScript
316 lines
11 KiB
JavaScript
// Ouverture menu nav
|
|
const menuTrigger = document.getElementById("menu-trigger");
|
|
const menu = document.getElementById("menu");
|
|
const overlay = document.getElementById("overlay")
|
|
|
|
menuTrigger.addEventListener("click", () => {
|
|
menu.classList.toggle("hidden");
|
|
if (!menu.classList.contains("hidden")) {
|
|
menu.classList.remove("hidden");
|
|
menu.style.left = "-300px";
|
|
overlay.style.display = "none";
|
|
} else {
|
|
menu.classList.add("hidden");
|
|
menu.style.left = "0px";
|
|
overlay.style.display = "block";
|
|
}
|
|
});
|
|
|
|
|
|
// Notepad
|
|
ActiveFolder = "Menu principal";
|
|
/*let ActiveFolder = e.target.textContent;*/
|
|
const folderList = document.getElementById("folder-list");
|
|
const noteList = document.getElementById("note-list");
|
|
const textEditor = document.getElementById("text-editor");
|
|
const backButton = document.getElementById("back-button");
|
|
const textEditorContainer = document.getElementById("text-editor-container");
|
|
|
|
// Fonction pour afficher les dossiers
|
|
function displayFolders() {
|
|
folderList.innerHTML = ""; // Efface la liste des dossiers actuels
|
|
|
|
data.forEach((item) => {
|
|
const folderItem = document.createElement("li");
|
|
folderItem.textContent = item.folder;
|
|
folderItem.classList.add("folder");
|
|
folderList.appendChild(folderItem);
|
|
RefreshActiveFolder("Menu principal");
|
|
});
|
|
}
|
|
|
|
// Fonction pour charger la liste des notes d'un dossier
|
|
function loadNotes(folderName) {
|
|
fetch(`/api/notes/${folderName}`)
|
|
.then((response) => response.json())
|
|
.then((notes) => {
|
|
// Afficher les notes dans l'interface utilisateur
|
|
const noteList = document.getElementById('note-list');
|
|
noteList.innerHTML = '';
|
|
|
|
notes.forEach((note) => {
|
|
const noteItem = document.createElement('li');
|
|
noteItem.textContent = note.name;
|
|
noteItem.classList.add('note');
|
|
noteList.appendChild(noteItem);
|
|
|
|
// Ajoutez un gestionnaire d'événements pour charger le contenu RTF au clic
|
|
noteItem.addEventListener('click', () => {
|
|
loadRTFContent(note.rtfFile);
|
|
});
|
|
});
|
|
})
|
|
.catch((error) => {
|
|
console.error('Erreur lors du chargement des notes : ', error);
|
|
});
|
|
}
|
|
|
|
|
|
// Fonction pour afficher les notes d'un dossier donné
|
|
function displayNotes(folderName) {
|
|
noteList.innerHTML = ""; // Efface la liste des notes actuelles
|
|
|
|
const folderpath = 'notepad/contents/${folderName}/'; // Défini le chemin vers les notes
|
|
|
|
const rtfFiles = ["Note_1.rtf", "Note_2.rtf"]; // Essai
|
|
|
|
rtfFiles.forEach((rtfFile) => {
|
|
const noteName = rtfFile.replace(".rtf", ""); // Retire l'extension ".rtf"
|
|
const noteItem = document.createElement("li"); // Crée la note dans la liste
|
|
noteItem.textContent = noteName;
|
|
noteItem.classList.add("note"); // Ajoute la classe "note" ce qui défini l'élément comme une note
|
|
|
|
// Gestionnaire d'évenements de clic sur la note
|
|
noteItem.addEventListener("click", () => {
|
|
loadRTFContent(noteName, folderName);
|
|
});
|
|
noteList.appendChild(noteItem);
|
|
})
|
|
}
|
|
|
|
// Afficher les dossiers au chargement de la page
|
|
displayFolders();
|
|
|
|
// Informe sur le dossier actuellement ouvert
|
|
function RefreshActiveFolder(folderName){
|
|
let ActiveFolder = folderName;
|
|
document.getElementById("ActiveFolderInfo").innerHTML = ActiveFolder;
|
|
}
|
|
|
|
// Gérez le clic sur les dossiers
|
|
folderList.addEventListener("click", (e) => {
|
|
if (e.target.classList.contains("folder")) {
|
|
const folderName = e.target.textContent;
|
|
displayNotes(folderName); // Affichez les notes du dossier sélectionné
|
|
RefreshActiveFolder(folderName); // Mettez à jour le dossier actif
|
|
showNotesInFolder(folderName); // Affichez les notes du dossier
|
|
}
|
|
});
|
|
|
|
|
|
// Récupérer les éléments boutons
|
|
const addFolderButton = document.getElementById("add-folder");
|
|
const addNoteButton = document.getElementById("add-note");
|
|
|
|
// Fonction d'ajout de dossier
|
|
function AddFolder(){
|
|
const folderName = prompt("Entrez le nom du dossier")
|
|
data.push({ folder: folderName, notes: [] });
|
|
displayFolders();
|
|
}
|
|
|
|
// Bouton d'ajout de dossier
|
|
addFolderButton.addEventListener("click", () => {
|
|
AddFolder();
|
|
});
|
|
|
|
// Gérez l'affichage initial de la page
|
|
function showInitialView() {
|
|
folderList.style.display = "block";
|
|
noteList.style.left = "-400px";
|
|
backButton.style.display = "none";
|
|
addNoteButton.style.display ="none";
|
|
textEditorContainer.style.display = "none"; // Masquez le conteneur du traitement de texte
|
|
}
|
|
|
|
// Gérez l'affichage des notes dans un dossier
|
|
function showNotesInFolder(folderName) {
|
|
folderList.style.display = "none";
|
|
noteList.style.left = "400px";
|
|
backButton.style.display = "block";
|
|
addNoteButton.style.display = "block";
|
|
textEditorContainer.style.display = "none";
|
|
|
|
// Affichez ici les notes du dossier sélectionné
|
|
}
|
|
|
|
// Gérez le clic sur un dossier pour afficher ses notes
|
|
folderList.addEventListener("click", (e) => {
|
|
if (e.target.classList.contains("folder")) {
|
|
const folderName = e.target.textContent;
|
|
showNotesInFolder(folderName);
|
|
}
|
|
});
|
|
|
|
// Gérez le clic sur le bouton "Retour" pour quitter un dossier
|
|
backButton.addEventListener("click", () => {
|
|
showInitialView();
|
|
RefreshActiveFolder("Menu principal");
|
|
});
|
|
|
|
// Fonction pour afficher le traitement de texte dans une note
|
|
function displayRTCContent(rtfContent) {
|
|
const textContent = document.getElementById("text-editor");
|
|
|
|
const rtfViewer = new RTFJS.RTF();
|
|
rtfViewer.setHtml(textEditor);
|
|
rtfViewer.render(rtfContent);
|
|
};
|
|
|
|
// Fonction de chargement de fichier RTF
|
|
function loadRTFContent(noteName, folderName) {
|
|
const rtfFileURL = 'notepad/contents/${folderName}/${noteName}.rtf';
|
|
|
|
fetch(rtfFileURL)
|
|
.then((response) => response.text())
|
|
.then((rtfContent) => {
|
|
displayRTFContent(rtfContent);
|
|
})
|
|
.catch((error) => {
|
|
console.error("Erreur lors du chargement du fichier RTF : ", error);
|
|
});
|
|
};
|
|
|
|
// Gérez le clic sur une note pour afficher son contenu dans le traitement de texte
|
|
noteList.addEventListener("click", (e) => {
|
|
if (e.target.classList.contains("note")) {
|
|
const noteItem = e.target;
|
|
const noteName = noteItem.textContent.trim();
|
|
|
|
// Charger contenu RTF
|
|
loadRTFContent(noteName, folderName);
|
|
}
|
|
});
|
|
|
|
// Fonction pour sauvegarder le contenu du traitement de texte dans la note
|
|
function saveNoteContent() {
|
|
const folderName = getSelectedFolder();
|
|
const folder = data.find((item) => item.folder === folderName);
|
|
if (folder) {
|
|
const selectedNote = noteList.querySelector(".selected");
|
|
if (selectedNote) {
|
|
const noteName = selectedNote.textContent.trim();
|
|
folder.notes = folder.notes.map((note) =>
|
|
note === noteName ? textEditor.textContent : note
|
|
);
|
|
saveDataLocally(); // Sauvegardez les modifications
|
|
}
|
|
}
|
|
}
|
|
|
|
// Gérez le clic sur une note pour la sélectionner
|
|
noteList.addEventListener("click", (e) => {
|
|
if (e.target.classList.contains("note")) {
|
|
// Désélectionnez toutes les notes
|
|
noteList.querySelectorAll(".note").forEach((note) => {
|
|
note.classList.remove("selected");
|
|
});
|
|
|
|
// Sélectionnez la note cliquée
|
|
e.target.classList.add("selected");
|
|
}
|
|
});
|
|
|
|
// Appel initial pour afficher la vue initiale
|
|
showInitialView();
|
|
|
|
// Gérez le clic sur le bouton "Ajouter une note"
|
|
addNoteButton.addEventListener("click", () => {
|
|
const parentFolder = ActiveFolder; // Utilisez ActiveFolder ici
|
|
if (parentFolder) {
|
|
const noteName = prompt("Nom de la nouvelle note :");
|
|
if (noteName) {
|
|
// Envoyer une requête au serveur pour ajouter la nouvelle note
|
|
const formData = new FormData();
|
|
formData.append("addNote", "true");
|
|
formData.append("folderName", parentFolder);
|
|
formData.append("noteContent", noteName);
|
|
|
|
fetch("notepad.php", {
|
|
method: "POST",
|
|
body: formData,
|
|
})
|
|
.then(response => response.text())
|
|
.then(data => {
|
|
if (data === "Nouvelle note ajoutée avec succès.") {
|
|
// Mettez à jour la liste des notes du dossier actif
|
|
displayNotes(parentFolder);
|
|
} else {
|
|
alert("Erreur : " + data);
|
|
}
|
|
})
|
|
.catch(error => {
|
|
console.error("Erreur lors de l'ajout de la note : " + error);
|
|
});
|
|
}
|
|
} else {
|
|
alert("Erreur : le dossier actif n'a pas été trouvé.");
|
|
}
|
|
});
|
|
|
|
// Fonction pour appliquer le style sélectionné au texte sélectionné
|
|
function applyStyle(style, value) {
|
|
document.execCommand(style, false, value);
|
|
}
|
|
|
|
// Gérez les boutons de mise en forme (par exemple, gras, italique, souligné)
|
|
document.getElementById("bold-button").addEventListener("click", () => {
|
|
applyStyle("bold");
|
|
});
|
|
|
|
document.getElementById("italic-button").addEventListener("click", () => {
|
|
applyStyle("italic");
|
|
});
|
|
|
|
document.getElementById("underline-button").addEventListener("click", () => {
|
|
applyStyle("underline");
|
|
});
|
|
|
|
// Vous pouvez ajouter d'autres boutons et styles selon vos besoins
|
|
|
|
// Gérez la mise à jour du contenu d'une note
|
|
function saveNoteContent() {
|
|
const selectedNote = noteList.querySelector(".selected");
|
|
if (selectedNote) {
|
|
const noteId = selectedNote.getAttribute("data-note-id");
|
|
const newNoteContent = textEditor.innerHTML;
|
|
|
|
// Envoyer une requête au serveur pour mettre à jour le contenu de la note
|
|
const formData = new FormData();
|
|
formData.append("updateNote", "true");
|
|
formData.append("noteId", noteId);
|
|
formData.append("newNoteContent", newNoteContent);
|
|
|
|
fetch("notepad.php", {
|
|
method: "POST",
|
|
body: formData,
|
|
})
|
|
.then(response => response.text())
|
|
.then(data => {
|
|
if (data === "Contenu de la note mis à jour avec succès.") {
|
|
// Mettez à jour la liste des notes du dossier actif
|
|
displayNotes(ActiveFolder);
|
|
} else {
|
|
alert("Erreur : " + data);
|
|
}
|
|
})
|
|
.catch(error => {
|
|
console.error("Erreur lors de la mise à jour de la note : " + error);
|
|
});
|
|
}
|
|
}
|
|
// Gérez la modification du contenu de la zone de texte éditable
|
|
textEditor.addEventListener("input", saveNoteContent);
|
|
|
|
// Appel initial pour afficher la vue initiale
|
|
showInitialView(); |