generated from microverseinc/readme-template
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
121 lines (105 loc) · 3.19 KB
/
index.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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/* eslint-disable max-classes-per-file */
import date from './modules/date.js';
import Book from './modules/Book.js';
import {
btnList,
addNewBtn,
contactBtn,
listSection,
addNewSection,
contactSection,
} from './modules/nav_list.js';
btnList.addEventListener('click', () => {
btnList.classList.add('active');
addNewBtn.classList.remove('active');
contactBtn.classList.remove('active');
listSection.style.display = 'block';
addNewSection.style.display = 'none';
contactSection.style.display = 'none';
});
addNewBtn.addEventListener('click', () => {
btnList.classList.remove('active');
addNewBtn.classList.add('active');
contactBtn.classList.remove('active');
listSection.style.display = 'none';
addNewSection.style.display = 'block';
contactSection.style.display = 'none';
});
contactBtn.addEventListener('click', () => {
btnList.classList.remove('active');
addNewBtn.classList.remove('active');
contactBtn.classList.add('active');
listSection.style.display = 'none';
addNewSection.style.display = 'none';
contactSection.style.display = 'flex';
});
// handle dates actions
const handleTime = () => {
const myDate = document.querySelector('#myClock');
myDate.innerHTML = date;
};
handleTime();
class BookList {
static getList() {
let books;
if (localStorage.getItem('books') === null) {
books = [];
} else {
books = JSON.parse(localStorage.getItem('books'));
}
return books;
}
static addItem(book) {
const books = BookList.getList();
books.push(book);
localStorage.setItem('books', JSON.stringify(books));
}
static deleteItem(title) {
const books = BookList.getList();
books.forEach((book, index) => {
if (book.title === title) {
books.splice(index, 1);
}
});
localStorage.setItem('books', JSON.stringify(books));
}
}
class BookUI {
static displayBooks() {
const books = BookList.getList();
books.forEach((book) => BookUI.addBooks(book));
}
static addBooks(book) {
const list = document.querySelector('#book-Collection');
const bookRow = document.createElement('tr');
bookRow.innerHTML = `<th id="th1">${book.title}</th>
<th id="th2">${`by ${book.author}`}</th>
<th id="th3"> <button class="delete">Remove</button></th>
`;
list.appendChild(bookRow);
}
static deleteBook(el) {
if (el.classList.contains('delete')) {
el.parentElement.parentElement.remove();
}
}
static clearFilds() {
document.querySelector('#title').value = '';
document.querySelector('#author').value = '';
}
}
document.addEventListener('DOMContentLoaded', BookUI.displayBooks);
document.querySelector('#bookForm').addEventListener('submit', (e) => {
e.preventDefault();
const title = document.querySelector('#title').value;
const author = document.querySelector('#author').value;
const book = new Book(title, author);
BookUI.addBooks(book);
BookList.addItem(book);
BookUI.clearFilds();
});
document.getElementById('book-Collection').addEventListener('click', (e) => {
BookUI.deleteBook(e.target);
// eslint-disable-next-line max-len
BookList.deleteItem(e.target.parentElement.previousElementSibling.previousElementSibling.textContent);
});