save
This commit is contained in:
parent
20287ddfbc
commit
789469e89a
@ -1,52 +1,64 @@
|
|||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
|
|
||||||
$("#addNoteDiv").on('click', function() {
|
$("#addNoteDiv").on('click', function() {
|
||||||
|
|
||||||
|
// Listener für den Plus Button zum hinzufügen von Note Forms.
|
||||||
|
|
||||||
|
console.log("Add")
|
||||||
|
|
||||||
createForm();
|
createForm();
|
||||||
})
|
})
|
||||||
|
|
||||||
$('#allNotesDiv').on('click', 'button', async function() {
|
$('#allNotesDiv').on('click', 'button', async function() {
|
||||||
//
|
|
||||||
|
// Listener für den Save Button zum speichern von Note Forms.
|
||||||
|
|
||||||
console.log("Save")
|
console.log("Save")
|
||||||
console.log(this)
|
|
||||||
//
|
|
||||||
|
|
||||||
let buttonId = (this.id).split("_")[1];
|
let buttonId = (this.id).split("_")[1];
|
||||||
let type = (this.id).split("_")[0];
|
let type = (this.id).split("_")[0];
|
||||||
if (type == 'saveNoteButton'){
|
try {
|
||||||
await saveNoteObject(buttonId);
|
if (type == 'saveNoteButton'){
|
||||||
} else if (type == 'editNoteButton'){
|
// Speichern einer neuen Note.
|
||||||
await saveNoteObject(buttonId, true);
|
await saveNoteObject(buttonId);
|
||||||
|
} else if (type == 'editNoteButton'){
|
||||||
|
// Editieren einer gespeicherten Note.
|
||||||
|
await saveNoteObject(buttonId, true);
|
||||||
|
}
|
||||||
|
} catch(err){
|
||||||
|
alert(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
console.log(buttonId)
|
|
||||||
//
|
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
$('#noteStorage').on('click', 'button', async function() {
|
$('#noteStorage').on('click', 'button', async function() {
|
||||||
//
|
|
||||||
|
// Listener für den Delete Button zum Löschen einer Note aus dem Note Browser und Local Storage.
|
||||||
|
|
||||||
console.log("Delete")
|
console.log("Delete")
|
||||||
console.log(this)
|
|
||||||
//
|
|
||||||
|
|
||||||
let buttonId = (this.id).split("_")[1];
|
let buttonId = (this.id).split("_")[1];
|
||||||
|
try {
|
||||||
//
|
await removeBrowserItem(buttonId);
|
||||||
console.log(buttonId)
|
} catch(err) {
|
||||||
//
|
alert(err);
|
||||||
await removeBrowserItem(buttonId);
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
$("#refreshButton").on('click', async function() {
|
$("#refreshButton").on('click', async function() {
|
||||||
//
|
|
||||||
|
// Listener für den Refresh Button zum aktualisieren der gespeicherten Notes.
|
||||||
|
|
||||||
console.log("Refresh")
|
console.log("Refresh")
|
||||||
//
|
|
||||||
createLoadingSign(id="", append="noteStorage");
|
createLoadingSign(id="", append="noteStorage");
|
||||||
enableLoadingSign(id="");
|
enableLoadingSign(id="");
|
||||||
await sleep(2000);
|
await sleep(2000);
|
||||||
disableLoadingSign(id="");
|
disableLoadingSign(id="");
|
||||||
await refreshBrowser();
|
try {
|
||||||
|
await refreshBrowser();
|
||||||
|
} catch(err){
|
||||||
|
alert(err);
|
||||||
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -54,22 +66,33 @@ let id=1;
|
|||||||
|
|
||||||
function createForm(){
|
function createForm(){
|
||||||
|
|
||||||
|
// Erstellt eine NoteForm und initialisiert die OnClick-Listener auf den Buttons der Form
|
||||||
|
|
||||||
id++;
|
id++;
|
||||||
//
|
|
||||||
console.log("createForm() "+id)
|
console.log("createForm() "+id)
|
||||||
//
|
|
||||||
let wrapper = document.createElement("div");
|
let wrapper = document.createElement("div");
|
||||||
wrapper.setAttribute('id', "note"+id);
|
wrapper.setAttribute('id', "note"+id);
|
||||||
wrapper.style.margin = '2.5px';
|
wrapper.style.margin = '2.5px';
|
||||||
let inputsWrapper = document.createElement("div");
|
let inputsWrapper = document.createElement("div");
|
||||||
inputsWrapper.setAttribute('class', "noteDiv");
|
inputsWrapper.setAttribute('class', "noteDiv");
|
||||||
|
|
||||||
|
let inputDiv = document.createElement("div");
|
||||||
let input = document.createElement("input");
|
let input = document.createElement("input");
|
||||||
|
let deleteButton = document.createElement('button');
|
||||||
input.setAttribute('type', "text");
|
input.setAttribute('type', "text");
|
||||||
input.setAttribute('name',"noteTitle");
|
input.setAttribute('name',"noteTitle");
|
||||||
input.setAttribute('id', "inputTitle"+id);
|
input.setAttribute('id', "inputTitle"+id);
|
||||||
input.setAttribute('placeholder', "Enter title...");
|
input.setAttribute('placeholder', "Enter title...");
|
||||||
input.style.marginBottom='5px';
|
input.style.marginBottom='5px';
|
||||||
|
deleteButton.style.marginLeft = '2px';
|
||||||
|
deleteButton.innerHTML = "X";
|
||||||
|
deleteButton.setAttribute('id', "deleteForm_" + id);
|
||||||
|
deleteButton.setAttribute('onClick', "deleteForm(this.id)");
|
||||||
|
deleteButton.setAttribute('class', "right");
|
||||||
|
inputDiv.appendChild(input);
|
||||||
|
inputDiv.appendChild(deleteButton);
|
||||||
|
|
||||||
let textAreaDiv = document.createElement("div");
|
let textAreaDiv = document.createElement("div");
|
||||||
let textarea = document.createElement("textarea");
|
let textarea = document.createElement("textarea");
|
||||||
@ -86,7 +109,7 @@ function createForm(){
|
|||||||
saveNoteButton.setAttribute('id',"saveNoteButton_"+id);
|
saveNoteButton.setAttribute('id',"saveNoteButton_"+id);
|
||||||
saveNoteButton.innerHTML = 'Save';
|
saveNoteButton.innerHTML = 'Save';
|
||||||
|
|
||||||
inputsWrapper.appendChild(input);
|
inputsWrapper.appendChild(inputDiv);
|
||||||
inputsWrapper.appendChild(textAreaDiv);
|
inputsWrapper.appendChild(textAreaDiv);
|
||||||
inputsWrapper.appendChild(saveNoteButton);
|
inputsWrapper.appendChild(saveNoteButton);
|
||||||
wrapper.appendChild(inputsWrapper);
|
wrapper.appendChild(inputsWrapper);
|
||||||
@ -94,24 +117,41 @@ function createForm(){
|
|||||||
document.getElementById('allNotesDiv').appendChild(wrapper);
|
document.getElementById('allNotesDiv').appendChild(wrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function deleteForm(idName){
|
||||||
|
|
||||||
|
// Aktiviert durch OnClickListener auf dem X-Button innerhalb der Form zum Schließen der Form
|
||||||
|
|
||||||
|
console.log("deleteForm() " + id);
|
||||||
|
|
||||||
|
id = idName.split("_")[1];
|
||||||
|
document.getElementById("note"+id).remove();
|
||||||
|
}
|
||||||
|
|
||||||
function createFormWithSavedContent(item, id){
|
function createFormWithSavedContent(item, id){
|
||||||
//
|
|
||||||
console.log("createFormWithSavedContent() "+id)
|
// Holt eine gespeicherte Form aus dem Speicher und erstellt erneut eine NoteForm und initialisiert die OnClick-Listener auf den Buttons der Form
|
||||||
console.log(item.title);
|
|
||||||
console.log(item.text);
|
console.log("createFormWithSavedContent() "+ id)
|
||||||
//
|
|
||||||
|
|
||||||
let wrapper = document.createElement("div")
|
let wrapper = document.createElement("div")
|
||||||
wrapper.setAttribute('id', "note"+id)
|
wrapper.setAttribute('id', "note"+id)
|
||||||
let inputsWrapper = document.createElement("div")
|
let inputsWrapper = document.createElement("div")
|
||||||
inputsWrapper.setAttribute('class', "noteDiv");
|
inputsWrapper.setAttribute('class', "noteDiv");
|
||||||
|
|
||||||
|
let inputDiv = document.createElement("div");
|
||||||
let input = document.createElement("input");
|
let input = document.createElement("input");
|
||||||
|
let deleteButton = document.createElement('button');
|
||||||
input.setAttribute('type', "text");
|
input.setAttribute('type', "text");
|
||||||
input.setAttribute('name',"noteTitle");
|
input.setAttribute('name',"noteTitle");
|
||||||
input.setAttribute('id', "inputTitle"+id);
|
input.setAttribute('id', "inputTitle"+id);
|
||||||
input.setAttribute('value', item.title);
|
input.setAttribute('value', item.title);
|
||||||
input.style.marginBottom='5px';
|
input.style.marginBottom='5px';
|
||||||
|
deleteButton.style.marginLeft = '2px';
|
||||||
|
deleteButton.innerHTML = "X";
|
||||||
|
deleteButton.setAttribute('id', "deleteForm_" + id);
|
||||||
|
deleteButton.setAttribute('onClick', "deleteForm(this.id)");
|
||||||
|
inputDiv.appendChild(input);
|
||||||
|
inputDiv.appendChild(deleteButton);
|
||||||
|
|
||||||
let textAreaDiv = document.createElement("div");
|
let textAreaDiv = document.createElement("div");
|
||||||
let textarea = document.createElement("textarea");
|
let textarea = document.createElement("textarea");
|
||||||
@ -129,7 +169,7 @@ function createFormWithSavedContent(item, id){
|
|||||||
editNoteButton.setAttribute('id',"editNoteButton_"+id);
|
editNoteButton.setAttribute('id',"editNoteButton_"+id);
|
||||||
editNoteButton.innerHTML = 'Save';
|
editNoteButton.innerHTML = 'Save';
|
||||||
|
|
||||||
inputsWrapper.appendChild(input);
|
inputsWrapper.appendChild(inputDiv);
|
||||||
inputsWrapper.appendChild(textAreaDiv);
|
inputsWrapper.appendChild(textAreaDiv);
|
||||||
inputsWrapper.appendChild(editNoteButton);
|
inputsWrapper.appendChild(editNoteButton);
|
||||||
wrapper.appendChild(inputsWrapper);
|
wrapper.appendChild(inputsWrapper);
|
||||||
@ -140,6 +180,12 @@ function createFormWithSavedContent(item, id){
|
|||||||
let ctr;
|
let ctr;
|
||||||
|
|
||||||
async function sleep(ms) {
|
async function sleep(ms) {
|
||||||
|
|
||||||
|
// Best Practice Variante zum pausieren von Code
|
||||||
|
// Soll hier Prozesse simulieren die bei synchronem Code zu I/O-Blocking führen würden
|
||||||
|
|
||||||
|
console.log("sleep() " + ms);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
return new Promise(resolve => setTimeout(resolve, ms));
|
return new Promise(resolve => setTimeout(resolve, ms));
|
||||||
}
|
}
|
||||||
@ -149,21 +195,28 @@ async function sleep(ms) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function removeNote(id){
|
async function removeNote(id){
|
||||||
try {
|
|
||||||
return new Promise(resolve => {
|
// Löscht eine Note aus dem Note Browser
|
||||||
|
|
||||||
|
console.log("removeNote() " + id);
|
||||||
|
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
try {
|
||||||
localStorage.removeItem('noteObj' + id);
|
localStorage.removeItem('noteObj' + id);
|
||||||
removeBrowserItem(id);
|
removeBrowserItem(id);
|
||||||
resolve();
|
resolve();
|
||||||
});
|
} catch(err) {
|
||||||
}
|
reject(err);
|
||||||
catch (alert) {
|
}
|
||||||
return alert(alert);
|
});
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async function saveNote(id){
|
async function saveNote(id){
|
||||||
try {
|
|
||||||
return new Promise(resolve => {
|
console.log("saveNote() " + id);
|
||||||
|
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
try {
|
||||||
let noteTitle = document.getElementById('inputTitle' + id).value;
|
let noteTitle = document.getElementById('inputTitle' + id).value;
|
||||||
let noteText = document.getElementById('noteText' + id).value;
|
let noteText = document.getElementById('noteText' + id).value;
|
||||||
let noteObj = {
|
let noteObj = {
|
||||||
@ -174,16 +227,18 @@ async function saveNote(id){
|
|||||||
let noteObj_serialized = JSON.stringify(noteObj); //stringify noteObj so it is displayed properly when set to local Storage
|
let noteObj_serialized = JSON.stringify(noteObj); //stringify noteObj so it is displayed properly when set to local Storage
|
||||||
localStorage.setItem("noteObj" + id, noteObj_serialized);
|
localStorage.setItem("noteObj" + id, noteObj_serialized);
|
||||||
resolve(noteObj);
|
resolve(noteObj);
|
||||||
});
|
} catch(err) {
|
||||||
}
|
reject(err);
|
||||||
catch (alert) {
|
}
|
||||||
return alert(alert);
|
});
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async function refreshBrowser(){
|
async function refreshBrowser(){
|
||||||
try {
|
|
||||||
return new Promise(resolve => {
|
console.log("refreshBrowser()");
|
||||||
|
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
try {
|
||||||
let noteStorage = [];
|
let noteStorage = [];
|
||||||
let keys = Object.keys(localStorage);
|
let keys = Object.keys(localStorage);
|
||||||
let i = keys.length;
|
let i = keys.length;
|
||||||
@ -196,18 +251,16 @@ async function refreshBrowser(){
|
|||||||
createBrowserItem(JSON.parse(element));
|
createBrowserItem(JSON.parse(element));
|
||||||
});
|
});
|
||||||
resolve();
|
resolve();
|
||||||
});
|
} catch(err) {
|
||||||
}
|
reject(err);
|
||||||
catch (alert) {
|
}
|
||||||
return alert(alert);
|
});
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async function saveNoteObject(id, overwrite=false){
|
async function saveNoteObject(id, overwrite=false){
|
||||||
//
|
|
||||||
console.log("saveNoteObject() "+id)
|
console.log("saveNoteObject() " + id + " " + overwrite);
|
||||||
console.log(id)
|
|
||||||
//
|
|
||||||
createLoadingSign(id, append="note")
|
createLoadingSign(id, append="note")
|
||||||
enableLoadingSign(id);
|
enableLoadingSign(id);
|
||||||
await sleep(10000) //sleep() simulates the delay that would occur when there is a remote server access or similar,
|
await sleep(10000) //sleep() simulates the delay that would occur when there is a remote server access or similar,
|
||||||
@ -215,24 +268,30 @@ async function saveNoteObject(id, overwrite=false){
|
|||||||
//the leftover code of the async function is executed after the delay
|
//the leftover code of the async function is executed after the delay
|
||||||
disableLoadingSign(id);
|
disableLoadingSign(id);
|
||||||
|
|
||||||
if (overwrite == true){
|
try {
|
||||||
await removeNote(id);
|
if (overwrite == true){
|
||||||
|
await removeNote(id);
|
||||||
|
}
|
||||||
|
let obj = await saveNote(id);
|
||||||
|
createBrowserItem(obj);
|
||||||
|
} catch(err){
|
||||||
|
alert(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
let obj = await saveNote(id);
|
|
||||||
createBrowserItem(obj);
|
|
||||||
document.getElementById("note"+id).remove();
|
document.getElementById("note"+id).remove();
|
||||||
}
|
}
|
||||||
|
|
||||||
function enableLoadingSign(id){
|
function enableLoadingSign(id){
|
||||||
console.log("id:"+id);
|
|
||||||
|
console.log("enableLoadingSign() " + id);
|
||||||
|
|
||||||
let target = 'loadSign'+id;
|
let target = 'loadSign'+id;
|
||||||
console.log("enableLoadingSign() "+id)
|
|
||||||
document.getElementById(target).style.display = "block";
|
document.getElementById(target).style.display = "block";
|
||||||
}
|
}
|
||||||
|
|
||||||
function disableLoadingSign(id){
|
function disableLoadingSign(id){
|
||||||
console.log("id:"+id);
|
|
||||||
|
console.log("disableLoadingSign() " + id);
|
||||||
|
|
||||||
let target = 'loadSign'+id;
|
let target = 'loadSign'+id;
|
||||||
let sign = document.getElementById(target);
|
let sign = document.getElementById(target);
|
||||||
sign.style.display = "none";
|
sign.style.display = "none";
|
||||||
@ -240,11 +299,11 @@ function disableLoadingSign(id){
|
|||||||
}
|
}
|
||||||
|
|
||||||
function createLoadingSign(id, append){
|
function createLoadingSign(id, append){
|
||||||
console.log("id:"+id);
|
|
||||||
|
console.log("createLoadingSign() " + id);
|
||||||
|
|
||||||
let target = 'loadSign'+id;
|
let target = 'loadSign'+id;
|
||||||
let appendTo = append+id;
|
let appendTo = append+id;
|
||||||
console.log(appendTo);
|
|
||||||
console.log("createLoadingSign() "+id)
|
|
||||||
let loadingSign = document.createElement('div');
|
let loadingSign = document.createElement('div');
|
||||||
let loadingSignWrapper = document.createElement('div');
|
let loadingSignWrapper = document.createElement('div');
|
||||||
loadingSign.setAttribute('class', 'loader')
|
loadingSign.setAttribute('class', 'loader')
|
||||||
@ -254,7 +313,9 @@ function createLoadingSign(id, append){
|
|||||||
}
|
}
|
||||||
|
|
||||||
function createBrowserItem(item){
|
function createBrowserItem(item){
|
||||||
console.log(item);
|
|
||||||
|
console.log("createBrowserItem() " + item);
|
||||||
|
|
||||||
let wrapperDiv = document.createElement('div');
|
let wrapperDiv = document.createElement('div');
|
||||||
let browserItem = document.createElement('div');
|
let browserItem = document.createElement('div');
|
||||||
let deleteButton = document.createElement('button');
|
let deleteButton = document.createElement('button');
|
||||||
@ -271,39 +332,49 @@ function createBrowserItem(item){
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function removeBrowserItem(id){
|
async function removeBrowserItem(id){
|
||||||
try {
|
|
||||||
return new Promise(resolve => {
|
console.log("removeBrowserItem() " + id);
|
||||||
console.log("removeBrowserItem() " + id);
|
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
try {
|
||||||
localStorage.removeItem('noteObj' + id);
|
localStorage.removeItem('noteObj' + id);
|
||||||
document.getElementById("browserItem_" + id).remove();
|
document.getElementById("browserItem_" + id).remove();
|
||||||
document.getElementById("deleteItem_" + id).remove();
|
document.getElementById("deleteItem_" + id).remove();
|
||||||
resolve();
|
resolve();
|
||||||
});
|
} catch(err) {
|
||||||
}
|
reject(err);
|
||||||
catch (alert) {
|
}
|
||||||
return alert(alert);
|
});
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getItemFromStorage(idTmp){
|
async function getItemFromStorage(idTmp){
|
||||||
return new Promise(resolve => {
|
|
||||||
let item = JSON.parse(localStorage.getItem('noteObj'+idTmp));
|
console.log("getItemFromStorage() " + idTmp);
|
||||||
console.log("in promise "+item);
|
|
||||||
resolve(item);
|
return new Promise((resolve, reject) => {
|
||||||
|
try {
|
||||||
|
let item = JSON.parse(localStorage.getItem('noteObj'+idTmp));
|
||||||
|
resolve(item);
|
||||||
|
} catch (err) {
|
||||||
|
reject(err);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
async function getSavedNote(id){
|
async function getSavedNote(id){
|
||||||
|
|
||||||
console.log("getSavedNote() "+ id);
|
console.log("getSavedNote() "+ id);
|
||||||
|
|
||||||
createLoadingSign("", "allNotesDiv");
|
createLoadingSign("", "allNotesDiv");
|
||||||
enableLoadingSign("");
|
enableLoadingSign("");
|
||||||
await sleep(5000);
|
await sleep(5000);
|
||||||
disableLoadingSign("");
|
disableLoadingSign("");
|
||||||
console.log("id before split " + id);
|
|
||||||
let idTmp = id.split("_")[1];
|
let idTmp = id.split("_")[1];
|
||||||
console.log("idTmp " +idTmp);
|
try {
|
||||||
let item = await getItemFromStorage(idTmp);
|
let item = await getItemFromStorage(idTmp);
|
||||||
console.log(item);
|
createFormWithSavedContent(item, idTmp);
|
||||||
createFormWithSavedContent(item, idTmp);
|
} catch(err) {
|
||||||
|
alert(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user