|
1 | 1 | //Task3 |
2 | | -class UsersContacts { |
3 | | - constructor() { |
4 | | - this.dataUsers = [ |
5 | | - // { |
6 | | - // name: 'Иван', |
7 | | - // lastName: 'Петров', |
8 | | - |
9 | | - // }, |
10 | | - // { |
11 | | - // name: 'Сергей', |
12 | | - // lastName: 'Сергей', |
13 | | - |
14 | | - // }, |
15 | | - // { |
16 | | - // name: 'Иван', |
17 | | - // lastName: 'Иванов', |
18 | | - |
19 | | - // }, |
20 | | - // { |
21 | | - // name: 'Александр', |
22 | | - // lastName: 'Александров', |
23 | | - |
24 | | - // }, |
25 | | - // { |
26 | | - // name: 'Алекс', |
27 | | - // lastName: 'Смирнов', |
28 | | - |
29 | | - // }, |
30 | | - // { |
31 | | - // name: 'Сергей', |
32 | | - // lastName: 'Волков', |
33 | | - |
34 | | - // }, |
35 | | - // { |
36 | | - // name: 'Мария', |
37 | | - // lastName: 'Шарапова', |
38 | | - |
39 | | - // }, |
40 | | - // { |
41 | | - // name: 'Александр', |
42 | | - // lastName: 'Винник', |
43 | | - |
44 | | - // }, |
45 | | - // { |
46 | | - // name: 'Дарий', |
47 | | - // lastName: 'Смирнов', |
48 | | - |
49 | | - // }, |
50 | | - // { |
51 | | - // name: 'Елена', |
52 | | - // lastName: 'Лещенко', |
53 | | - |
54 | | - // }, |
55 | | - // { |
56 | | - // name: 'Ольга', |
57 | | - // lastName: 'Новикова', |
58 | | - |
59 | | - // }, |
60 | | - // { |
61 | | - // name: 'Наталья', |
62 | | - // lastName: 'Шемякина', |
63 | | - |
64 | | - // }, |
65 | | - // { |
66 | | - // name: 'Анна', |
67 | | - // lastName: 'Донцова', |
68 | | - |
69 | | - // }, |
70 | | - // { |
71 | | - // name: 'Влад', |
72 | | - // lastName: 'Яма', |
73 | | - |
74 | | - // }, |
75 | | - // { |
76 | | - // name: 'Кира', |
77 | | - // lastName: 'Воробьева', |
78 | | - |
79 | | - // }, |
80 | | - // { |
81 | | - // name: 'Виктор', |
82 | | - // lastName: 'Кривенко', |
83 | | - |
84 | | - // } |
85 | | - ]; |
86 | | - this.columnHeadings = ['Name', 'Last name', 'Email']; |
87 | | - }; |
| 2 | +let headerAndFooter = new HeaderAndFooter('Contacts'); |
| 3 | +headerAndFooter.renderTemplate(); |
88 | 4 |
|
89 | | - createForm() { |
90 | | - return ` |
91 | | - <form class="form-inline search-form"> |
92 | | - <div class="form-group"> |
93 | | - <label class="sr-only" for="search">Search</label> |
94 | | - <input type="text" class="form-control" id= "search" placeholder="Search"> |
95 | | - </div> |
96 | | - </form> |
97 | | - `; |
98 | | - }; |
| 5 | +let usersContacts = new UsersContacts(); |
| 6 | +usersContacts.loadData(); |
99 | 7 |
|
100 | | - createTable() { |
101 | | - let self = this; |
102 | | - let thead = function() { |
103 | | - let openThead = ` |
104 | | - <thead> |
105 | | - <tr> |
106 | | - `; |
107 | | - let createThead = self.columnHeadings.reduce((start, elem) => { |
108 | | - start += `<th>${elem}</th>\n` |
109 | | - return start; |
110 | | - }, ''); |
111 | | - let resultThead = openThead + `${createThead}</tr></thead>`; |
112 | | - return resultThead; |
113 | | - }; |
114 | | - let tbody = function() { |
115 | | - let openTbody = ` |
116 | | - <tbody> |
117 | | - `; |
118 | | - let createTbody = self.dataUsers.reduce((start, elem) => { |
119 | | - start += ` |
120 | | - <tr> |
121 | | - <td>${elem.name}</td> |
122 | | - <td>${elem.lastName}</td> |
123 | | - <td>${elem.email}</td> |
124 | | - </tr> |
125 | | - `; |
126 | | - return start; |
127 | | - }, ''); |
128 | | - let resultTbody = openTbody + `${createTbody}</tbody>`; |
129 | | - return resultTbody; |
130 | | - }; |
131 | | - let resultTable = ` |
132 | | - <table class="table table-hover contacts"> |
133 | | - ${thead()} |
134 | | - ${tbody()} |
135 | | - </table> |
136 | | - `; |
137 | | - return resultTable; |
138 | | - }; |
| 8 | +let buttonKeypad = document.querySelector('a.Keypad'); |
139 | 9 |
|
140 | | - sort() { |
141 | | - let table = document.querySelector('.table'); |
| 10 | +buttonKeypad.addEventListener('click', function(event) { |
| 11 | + event.preventDefault(); |
| 12 | + let keypad = new Keypad(); |
| 13 | + keypad.renderKeypad(); |
| 14 | +}); |
142 | 15 |
|
143 | | - table.addEventListener('click', function(e) { |
144 | | - if(e.target.tagName != 'TH') { |
145 | | - return; |
146 | | - }; |
147 | | - sortTable(e.target.cellIndex, e.target.textContent); |
148 | | - }); |
149 | 16 |
|
150 | | - function sortTable(colNum, caption) { |
151 | | - let tbody = table.getElementsByTagName('tbody')[0]; |
152 | | - let rowsArray = [].slice.call(tbody.rows); |
153 | | - let compare; |
| 17 | +let buttonEditContact = document.querySelector('a.Edit'); |
154 | 18 |
|
155 | | - switch (caption) { |
156 | | - case 'Name': |
157 | | - compare = function(rowA, rowB) { |
158 | | - if(rowA.cells[colNum].textContent < rowB.cells[colNum].textContent) { |
159 | | - return -1; |
160 | | - }; |
161 | | - if(rowA.cells[colNum].textContent > rowB.cells[colNum].textContent) { |
162 | | - return 1; |
163 | | - }; |
164 | | - return 0; |
165 | | - }; |
166 | | - break; |
167 | | - case 'Last name': |
168 | | - compare = function(rowA, rowB) { |
169 | | - if(rowA.cells[colNum].textContent < rowB.cells[colNum].textContent) { |
170 | | - return -1; |
171 | | - }; |
172 | | - if(rowA.cells[colNum].textContent > rowB.cells[colNum].textContent) { |
173 | | - return 1; |
174 | | - }; |
175 | | - return 0; |
176 | | - }; |
177 | | - break; |
178 | | - case 'Email': |
179 | | - compare = function(rowA, rowB) { |
180 | | - if(rowA.cells[colNum].textContent < rowB.cells[colNum].textContent) { |
181 | | - return -1; |
182 | | - }; |
183 | | - if(rowA.cells[colNum].textContent > rowB.cells[colNum].textContent) { |
184 | | - return 1; |
185 | | - }; |
186 | | - return 0; |
187 | | - }; |
188 | | - break; |
189 | | - }; |
| 19 | +buttonEditContact.addEventListener('click', function(event) { |
| 20 | + event.preventDefault(); |
| 21 | + let editContact = new EditContact(); |
| 22 | + editContact.renderEditContact(); |
| 23 | +}); |
190 | 24 |
|
191 | | - rowsArray.sort(compare); |
192 | | - table.removeChild(tbody); |
193 | | - for (let i = 0; i < rowsArray.length; i++) { |
194 | | - tbody.appendChild(rowsArray[i]); |
195 | | - }; |
196 | | - table.appendChild(tbody); |
197 | | - }; |
198 | | - }; |
| 25 | +let buttonUser = document.querySelector('a.User'); |
199 | 26 |
|
200 | | - renderForm() { |
201 | | - let mainContainer = document.querySelector('main .container'); |
202 | | - mainContainer.innerHTML = `${this.createForm()}${this.createTable()}`; |
203 | | - this.sort(); |
204 | | - }; |
| 27 | +buttonUser.addEventListener('click', function(event) { |
| 28 | + event.preventDefault(); |
| 29 | + let user = new User(); |
| 30 | + user.renderUser(); |
| 31 | +}); |
205 | 32 |
|
206 | | - uploadingData() { |
207 | | - const url = 'http://easycode-js.herokuapp.com/Butenko_N/users'; |
208 | | - const xhr = new XMLHttpRequest(); |
209 | | - xhr.onreadystatechange = () => { |
210 | | - if(xhr.readyState === XMLHttpRequest.DONE) { |
211 | | - //this.dataUsers = xhr.responseText; |
212 | | - let usersArr = JSON.parse(xhr.responseText); |
213 | | - let newUsers = usersArr.map((elem) => { |
214 | | - return { |
215 | | - email: elem.email, |
216 | | - name: elem.fullName.split(' ')[0], |
217 | | - lastName: elem.fullName.split(' ')[1], |
218 | | - }; |
219 | | - }); |
220 | | - this.dataUsers = newUsers; |
221 | | - this.renderForm(); |
222 | | - }; |
223 | | - }; |
224 | | - xhr.open('GET', url, true); |
225 | | - xhr.send(); |
226 | | - |
227 | | - }; |
228 | | - |
229 | | -}; |
| 33 | +let buttonAddUser = document.querySelector('a.Add'); |
230 | 34 |
|
231 | | -let usersContacts = new UsersContacts(); |
232 | | -usersContacts.uploadingData(); |
| 35 | +buttonAddUser.addEventListener('click', function(event) { |
| 36 | + event.preventDefault(); |
| 37 | + let addUser = new AddUser(); |
| 38 | + addUser.renderAddUser(); |
| 39 | +}); |
| 40 | + |
| 41 | +let buttonContacts = document.querySelector('a.Contacts'); |
233 | 42 |
|
| 43 | +buttonContacts.addEventListener('click', function(event) { |
| 44 | + event.preventDefault(); |
| 45 | + let contacts = new UsersContacts(); |
| 46 | + contacts.loadData(); |
| 47 | +}); |
0 commit comments