-
Notifications
You must be signed in to change notification settings - Fork 0
/
Note.js
83 lines (68 loc) · 2.28 KB
/
Note.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
document.addEventListener('DOMContentLoaded', () => {
Note.setup();
});
class Note extends DataComponent {
static documentElementId = 'notes-mb';
static listId = 'notes-mb';
static listpadType = 'notepad';
static dataKey = 'noteData';
// decode data from document element and return local storage object
static documentElementToLocalStorageObject() {
let notes = [];
[...document.getElementsByClassName(this.listpadType)].forEach(listpad => {
notes.push({
title: listpad.getElementsByClassName('notepad-title')[0].value,
memo: listpad.getElementsByClassName('notepad-memo')[0].value,
uid: listpad.getAttribute('uid')
});
});
let data = this.initialize();
data.noteData.notes = notes;
return data;
}
// update document element with retreived local storage data
static localStorageObjectToDocumentElement(data) {
this.list().createNewListpadButton('New Note', () => {
this.prependNoteToPopup(this.createBlankNoteObject());
this.updateDataFromPopup();
});
let notes = data.noteData.notes;
notes.forEach(note => {
this.documentElement().append(this.createNote(note));
});
return this.documentElement();
}
static addNoteToPopup(note) {
this.documentElement().append(this.createNote(note));
}
static prependNoteToPopup(note) {
this.list().newListpadButton().after(this.createNote(note));
}
static createNote(note) {
let listpad = this.createListpad(note.uid);
let listbox = listpad.listbox;
let title = listbox.createElement('input', 'title');
title.placeholder = 'New Note';
title.value = note.title;
let memo = listbox.createElement('textarea', 'memo');
memo.placeholder = 'This is my note';
memo.value = note.memo;
memo.spellcheck = false;
return listpad.element();
}
static initialize() {
return {
noteData: {
notes: [
]
}
};
}
static createBlankNoteObject() {
return {
uid: createUid(),
title: '',
memo: ''
}
}
}