-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
192 lines (109 loc) · 4.63 KB
/
script.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
122
123
124
125
126
127
128
129
130
131
132
const form = document.querySelector('form');
const trHead = document.querySelector('#head');
const conData = document.querySelector('#data');
const nameInput = document.querySelector('#name');
const addInput = document.querySelector('#add');
const telInput = document.querySelector('#tel');
const emailInput = document.querySelector('#email');
const urlInput = document.querySelector('#url');
const button = document.querySelector('button');
let db
window.onload = () => {
let request = window.indexedDB.open('contacts', 1)
request.onerror = () => {
console.log('Database failed to open')
}
request.onsuccess = () => {
console.log('Database opened successfully')
db = request.result;
displayData();
}
request.onupgradeneeded = (e) => {
let db = e.target.result;
let objectStore = db.createObjectStore('contacts', { keyPath: 'id', autoIncrement:true });
objectStore.createIndex('name', 'name', { unique: false });
objectStore.createIndex('address', 'address', { unique: false });
objectStore.createIndex('telephone', 'telephone', { unique: false });
objectStore.createIndex('email', 'email', { unique: false });
objectStore.createIndex('url', 'url', { unique: false });
console.log('Database setup complete');
};
form.onsubmit = (e) => {
e.preventDefault()
let newItem = { name: nameInput.value, address: addInput.value, telephone: telInput.value, email: emailInput.value, url: urlInput.value };
let transaction = db.transaction(['contacts'], 'readwrite');
let objectStore = transaction.objectStore('contacts');
var request = objectStore.add(newItem)
request.onsuccess = () => {
nameInput.value = '';
addInput.value = '';
telInput.value = '';
emailInput.value = '';
urlInput.value = '';
};
transaction.oncomplete = () => {
console.log('Transaction completed: database modification finished.');
displayData();
};
transaction.onerror = () => {
console.log('Transaction not opened due to error');
};
}
function displayData() {
while (conData.firstChild) {
conData.removeChild(conData.firstChild);
}
let objectStore = db.transaction('contacts').objectStore('contacts');
objectStore.openCursor().onsuccess = (e) => {
let cursor = e.target.result;
if(cursor) {
let tr = document.createElement('tr');
let tdName = document.createElement('td');
let tdAdd = document.createElement('td');
let tdTel = document.createElement('td');
let tdEmail = document.createElement('td');
let tdUrl = document.createElement('td');
tr.appendChild(tdName);
tr.appendChild(tdAdd);
tr.appendChild(tdTel);
tr.appendChild(tdEmail);
tr.appendChild(tdUrl);
conData.appendChild(tr);
tdName.textContent = cursor.value.name
tdAdd.textContent = cursor.value.address
tdTel.textContent = cursor.value.telephone
tdEmail.textContent = cursor.value.email
tdUrl.textContent = cursor.value.url
tr.setAttribute('data-contact-id', cursor.value.id);
let deleteBtn = document.createElement('button');
tr.appendChild(deleteBtn);
deleteBtn.textContent = 'Delete';
deleteBtn.onclick = deleteItem;
cursor.continue();
}
else {
if(!conData.firstChild) {
let para = document.createElement('p');
para.textContent = 'No contact stored.'
conData.appendChild(para);
}
console.log('Notes all displayed');
}
};
}
function deleteItem(e) {
let contactId = Number(e.target.parentNode.getAttribute('data-contact-id'));
let transaction = db.transaction(['contacts'], 'readwrite');
let objectStore = transaction.objectStore('contacts');
let request = objectStore.delete(contactId);
transaction.oncomplete = () => {
e.target.parentNode.parentNode.removeChild(e.target.parentNode);
console.log('Contact ' + contactId + ' deleted.');
if(!conData.firstChild) {
let para = document.createElement('p');
para.textContent = 'No notes stored.';
conData.appendChild(para);
}
};
}
}