Import Ruty
This commit is contained in:
@@ -0,0 +1,316 @@
|
||||
// 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();
|
||||
Reference in New Issue
Block a user