diff --git a/css/notes_app.css b/css/notes_app.css
index a718e84..2f402a1 100644
--- a/css/notes_app.css
+++ b/css/notes_app.css
@@ -6,19 +6,39 @@ body{
}
#storageBrowser{
- margin-bottom:2.5px;
+ background-color: #ddfe7d ;
+ margin:2.5px;
+ border-radius: 5px;
border:1px black solid;
width: 300px;
}
#storageBrowserHeader{
+ background-color:#f9f5f4;
display: inline-block;
+ font-weight: bold;
+ border-radius: 5px;
border-bottom:1px black solid;
border-right: 1px black solid;
+ overflow: hidden;
}
-#refreshButtonDiv{
- float: right;
+.right{
+ float:right;
+ padding: 1px;
+}
+
+#addNoteDiv{
+ margin:2.5px;
+}
+
+#addNoteButton{
+ height: 26px;
+ width: 26px;
+ font-size: 40px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
}
#mainHeader h1{
@@ -32,7 +52,9 @@ body{
}
.noteDiv{
+ background-color: #ddfe7d ;
padding:5px;
+ border-radius: 5px;
margin-top:2px;
display: inline-block;
border:1px black solid;
diff --git a/html/index.html b/html/index.html
index bb01333..c77b589 100644
--- a/html/index.html
+++ b/html/index.html
@@ -6,7 +6,9 @@
-
diff --git a/scripts/notes_app.js b/scripts/notes_app.js
index e907c90..5a5b8c7 100644
--- a/scripts/notes_app.js
+++ b/scripts/notes_app.js
@@ -4,39 +4,49 @@ $(document).ready(function(){
createForm();
})
- $('#allNotesDiv').on('click', 'button', function() {
- console.log("Add")
+ $('#allNotesDiv').on('click', 'button', async function() {
+ //
+ console.log("Save")
console.log(this)
+ //
+
let buttonId = (this.id).split("_")[1];
let type = (this.id).split("_")[0];
if (type == 'saveNoteButton'){
- saveNoteObject(buttonId);
+ await saveNoteObject(buttonId);
} else if (type == 'editNoteButton'){
- saveNoteObject(buttonId, true);
+ await saveNoteObject(buttonId, true);
}
+
+ //
console.log(buttonId)
+ //
})
- $('#noteStorage').on('click', 'button', function() {
+ $('#noteStorage').on('click', 'button', async function() {
+ //
console.log("Delete")
console.log(this)
+ //
+
let buttonId = (this.id).split("_")[1];
+
+ //
console.log(buttonId)
- removeBrowserItem(buttonId);
+ //
+ await removeBrowserItem(buttonId);
})
- //$('.browserElement').on('click', 'div', function() {
- // console.log("Load");
- // console.log(this);
- // let divId = (this.id).split("_")[1];
- // console.log(divId);
- // getSavedNote(divId);
- //})
-
- $("#refreshButton").on('click', function() {
+ $("#refreshButton").on('click', async function() {
+ //
console.log("Refresh")
- updateNoteBrowser();
+ //
+ createLoadingSign(id="", append="noteStorage");
+ enableLoadingSign(id="");
+ await sleep(2000);
+ disableLoadingSign(id="");
+ await refreshBrowser();
})
})
@@ -45,10 +55,13 @@ let id=1;
function createForm(){
id++;
+ //
console.log("createForm() "+id)
- let wrapper = document.createElement("div")
- wrapper.setAttribute('id', "note"+id)
- let inputsWrapper = document.createElement("div")
+ //
+ let wrapper = document.createElement("div");
+ wrapper.setAttribute('id', "note"+id);
+ wrapper.style.margin = '2.5px';
+ let inputsWrapper = document.createElement("div");
inputsWrapper.setAttribute('class', "noteDiv");
let input = document.createElement("input");
@@ -58,7 +71,7 @@ function createForm(){
input.setAttribute('placeholder', "Enter title...");
input.style.marginBottom='5px';
- let div1 = document.createElement("div");
+ let textAreaDiv = document.createElement("div");
let textarea = document.createElement("textarea");
textarea.setAttribute('name',"noteText");
textarea.setAttribute('id', "noteText"+id);
@@ -66,30 +79,27 @@ function createForm(){
textarea.style.width='300px';
textarea.style.height='150px';
textarea.style.boxSizing='border-box';
- div1.appendChild(textarea);
+ textAreaDiv.appendChild(textarea);
- let div2 = document.createElement("div")
- div2.setAttribute('id', 'buttonDiv'+id)
- let btn = document.createElement("button");
- btn.setAttribute('type',"button");
- btn.setAttribute('id',"saveNoteButton_"+id);
- btn.innerHTML = 'Save';
+ let saveNoteButton = document.createElement("button");
+ saveNoteButton.setAttribute('type',"button");
+ saveNoteButton.setAttribute('id',"saveNoteButton_"+id);
+ saveNoteButton.innerHTML = 'Save';
inputsWrapper.appendChild(input);
- inputsWrapper.appendChild(div1);
- inputsWrapper.appendChild(btn);
+ inputsWrapper.appendChild(textAreaDiv);
+ inputsWrapper.appendChild(saveNoteButton);
wrapper.appendChild(inputsWrapper);
document.getElementById('allNotesDiv').appendChild(wrapper);
}
-function createFormWithSavedContent(id){
-
+function createFormWithSavedContent(item, id){
+ //
console.log("createFormWithSavedContent() "+id)
- item = JSON.parse(localStorage.getItem('noteObj'+id))
-
console.log(item.title);
console.log(item.text);
+ //
let wrapper = document.createElement("div")
wrapper.setAttribute('id', "note"+id)
@@ -101,10 +111,9 @@ function createFormWithSavedContent(id){
input.setAttribute('name',"noteTitle");
input.setAttribute('id', "inputTitle"+id);
input.setAttribute('value', item.title);
- //document.getElementById("inputTitle"+id).value = item.title;
input.style.marginBottom='5px';
- let div1 = document.createElement("div");
+ let textAreaDiv = document.createElement("div");
let textarea = document.createElement("textarea");
textarea.setAttribute('name',"noteText");
textarea.setAttribute('id', "noteText"+id);
@@ -113,19 +122,16 @@ function createFormWithSavedContent(id){
textarea.style.width='300px';
textarea.style.height='150px';
textarea.style.boxSizing='border-box';
- //document.getElementById('noteText'+id).value = item.text;
- div1.appendChild(textarea);
+ textAreaDiv.appendChild(textarea);
- let div2 = document.createElement("div")
- div2.setAttribute('id', 'buttonDiv'+id)
- let btn = document.createElement("button");
- btn.setAttribute('type',"button");
- btn.setAttribute('id',"editNoteButton_"+id);
- btn.innerHTML = 'Save';
+ let editNoteButton = document.createElement("button");
+ editNoteButton.setAttribute('type',"button");
+ editNoteButton.setAttribute('id',"editNoteButton_"+id);
+ editNoteButton.innerHTML = 'Save';
inputsWrapper.appendChild(input);
- inputsWrapper.appendChild(div1);
- inputsWrapper.appendChild(btn);
+ inputsWrapper.appendChild(textAreaDiv);
+ inputsWrapper.appendChild(editNoteButton);
wrapper.appendChild(inputsWrapper);
document.getElementById('allNotesDiv').appendChild(wrapper);
@@ -133,119 +139,166 @@ function createFormWithSavedContent(id){
let ctr;
-function sleep(ms) {
- return new Promise(resolve => setTimeout(resolve, ms));
- }
+async function sleep(ms) {
+ try {
+ return new Promise(resolve => setTimeout(resolve, ms));
+ }
+ catch (alert) {
+ return alert(alert);
+ }
+}
+
+async function removeNote(id){
+ try {
+ return new Promise(resolve => {
+ localStorage.removeItem('noteObj' + id);
+ removeBrowserItem(id);
+ resolve();
+ });
+ }
+ catch (alert) {
+ return alert(alert);
+ }
+}
+
+async function saveNote(id){
+ try {
+ return new Promise(resolve => {
+ let noteTitle = document.getElementById('inputTitle' + id).value;
+ let noteText = document.getElementById('noteText' + id).value;
+ let noteObj = {
+ idK: id,
+ title: noteTitle,
+ text: noteText
+ };
+ let noteObj_serialized = JSON.stringify(noteObj); //stringify noteObj so it is displayed properly when set to local Storage
+ localStorage.setItem("noteObj" + id, noteObj_serialized);
+ resolve(noteObj);
+ });
+ }
+ catch (alert) {
+ return alert(alert);
+ }
+}
+
+async function refreshBrowser(){
+ try {
+ return new Promise(resolve => {
+ let noteStorage = [];
+ let keys = Object.keys(localStorage);
+ let i = keys.length;
+ while (i--) {
+ noteStorage.push(localStorage.getItem(keys[i]));
+ }
+ let parentNode = document.getElementById('noteStorage');
+ parentNode.innerHTML = '';
+ noteStorage.forEach(element => {
+ createBrowserItem(JSON.parse(element));
+ });
+ resolve();
+ });
+ }
+ catch (alert) {
+ return alert(alert);
+ }
+}
async function saveNoteObject(id, overwrite=false){
-
+ //
console.log("saveNoteObject() "+id)
console.log(id)
+ //
+ createLoadingSign(id, append="note")
enableLoadingSign(id);
- await sleep(10000) //sleep simulates the remote server access or similar,
+ await sleep(10000) //sleep() simulates the delay that would occur when there is a remote server access or similar,
//so instead of sleep would be e.g. saveToRemoteServer()...
//the leftover code of the async function is executed after the delay
disableLoadingSign(id);
-
+
if (overwrite == true){
- localStorage.removeItem('noteObj'+id);
- removeBrowserItem(id);
+ await removeNote(id);
}
- let noteTitle = document.getElementById('inputTitle'+id).value;
- let noteText = document.getElementById('noteText'+id).value;
- let noteObj = {
- idK: id,
- title: noteTitle,
- text: noteText
- };
- let noteObj_serialized = JSON.stringify(noteObj); //stringify noteObj so it is displayed properly when set to local Storage
- localStorage.setItem("noteObj"+id, noteObj_serialized);
- createBrowserItem(noteObj);
-
- console.log(noteObj_serialized)
-
+ let obj = await saveNote(id);
+ createBrowserItem(obj);
document.getElementById("note"+id).remove();
}
function enableLoadingSign(id){
+ console.log("id:"+id);
+ let target = 'loadSign'+id;
console.log("enableLoadingSign() "+id)
- createLoadingSign(id)
- document.getElementById('loadSign'+id).style.display = "block";
+ document.getElementById(target).style.display = "block";
}
function disableLoadingSign(id){
- let sign = document.getElementById('loadSign'+id);
+ console.log("id:"+id);
+ let target = 'loadSign'+id;
+ let sign = document.getElementById(target);
sign.style.display = "none";
sign.parentNode.removeChild(sign);
}
-function createLoadingSign(id){
+function createLoadingSign(id, append){
+ console.log("id:"+id);
+ let target = 'loadSign'+id;
+ let appendTo = append+id;
+ console.log(appendTo);
console.log("createLoadingSign() "+id)
let loadingSign = document.createElement('div');
let loadingSignWrapper = document.createElement('div');
loadingSign.setAttribute('class', 'loader')
- loadingSign.setAttribute('id', 'loadSign'+id);
+ loadingSign.setAttribute('id', target);
loadingSignWrapper.appendChild(loadingSign);
- document.getElementById("note"+id).appendChild(loadingSignWrapper);
-}
-
-function updateNoteBrowser(){
-
- let noteStorage = [];
- let keys = Object.keys(localStorage);
- let i = keys.length;
-
- while ( i-- ) {
- noteStorage.push(localStorage.getItem(keys[i]));
- }
-
- localStorage.clear();
-
- noteStorage.forEach(element => {
- createBrowserItem(JSON.parse(element))
- });
-
+ document.getElementById(appendTo).appendChild(loadingSignWrapper);
}
function createBrowserItem(item){
console.log(item);
let wrapperDiv = document.createElement('div');
let browserItem = document.createElement('div');
- let button = document.createElement('button');
+ let deleteButton = document.createElement('button');
wrapperDiv.setAttribute('class', 'browserElement');
browserItem.innerHTML = item.title;
- button.innerHTML = "X";
+ deleteButton.style.marginLeft = '2px';
+ deleteButton.innerHTML = "X";
browserItem.setAttribute('id', "browserItem_"+item.idK);
browserItem.setAttribute('onClick', "getSavedNote(this.id)");
- button.setAttribute('id', "deleteItem_" + item.idK);
+ deleteButton.setAttribute('id', "deleteItem_" + item.idK);
wrapperDiv.appendChild(browserItem);
- wrapperDiv.appendChild(button);
+ wrapperDiv.appendChild(deleteButton);
document.getElementById('noteStorage').appendChild(wrapperDiv);
}
-function removeBrowserItem(id){
- console.log("removeBrowserItem() "+id)
- localStorage.removeItem('noteObj'+id);
- document.getElementById("browserItem_"+id).remove();
- document.getElementById("deleteItem_"+id).remove();
+async function removeBrowserItem(id){
+ try {
+ return new Promise(resolve => {
+ console.log("removeBrowserItem() " + id);
+ localStorage.removeItem('noteObj' + id);
+ document.getElementById("browserItem_" + id).remove();
+ document.getElementById("deleteItem_" + id).remove();
+ resolve();
+ });
+ }
+ catch (alert) {
+ return alert(alert);
+ }
}
-function getSavedNote(id){
+async function getSavedNote(id){
console.log("getSavedNote() "+ id);
+ createLoadingSign("", "allNotesDiv");
+ enableLoadingSign("");
+ await sleep(5000);
+ disableLoadingSign("");
+ console.log("id before split " + id);
let idTmp = id.split("_")[1];
- createFormWithSavedContent(idTmp);
+ console.log("idTmp " +idTmp);
+ let item = await new Promise(resolve => {
+ let item = JSON.parse(localStorage.getItem('noteObj'+idTmp));
+ console.log("in promise "+item);
+ resolve(item);
+ })
+ console.log(item);
+ createFormWithSavedContent(item, idTmp);
}
-
-
-
-
-
-
-
-
-
-
-
-
-