Skip to content

Commit 99fab09

Browse files
author
Balashov Nikita
committed
user-page
1 parent ad4a857 commit 99fab09

File tree

1 file changed

+55
-12
lines changed

1 file changed

+55
-12
lines changed
Lines changed: 55 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,23 @@
1+
import {EditUserPage} from '../edit-user-page/edit-user-page';
2+
import {Url} from '../url/url';
3+
14
class UserPage{
2-
constructor(store) {
5+
constructor(store, accountName) {
6+
this.setStateUserPage = () => {
7+
const {setState} = store;
8+
const initializeState = {
9+
stateName: 'USER_PAGE',
10+
};
11+
setState(initializeState);
12+
}
313

14+
this.editUserPage = new EditUserPage(store, accountName);
15+
this.url = new Url(accountName);
416
}
517

6-
render() {
18+
render(user) {
19+
this.user = user;
20+
721
return /*html*/`
822
<div id="user-page">
923
@@ -13,38 +27,38 @@ class UserPage{
1327
</div>
1428
</header>
1529
16-
<main class="container mt-2">
30+
<main id="user-info" class="container mt-2">
1731
1832
<div class="row d-flex justify-content-center">
19-
<img id="user-page-avatar" src="img/avatar.jpg" alt="avatar">
33+
<img id="user-page-avatar" src="${!user.avatarUrl ? 'https://steamuserimages-a.akamaihd.net/ugc/504697773361488218/90CC7E33B932155252A6C15117A3AB8031B3FE36/' : user.avatarUrl}" alt="avatar">
2034
</div>
2135
2236
<div class="row d-flex justify-content-between">
2337
<p class="user-page-key">Full Name: </p>
24-
<p class="user-page-value">???????????</p>
38+
<p class="user-page-value">${user.fullName}</p>
2539
</div>
2640
<div class="row d-flex justify-content-between">
2741
<p class="user-page-key">Email: </p>
28-
<p class="user-page-value">??????@??????.???</p>
42+
<p class="user-page-value">${user.email}</p>
2943
</div>
3044
<div class="row d-flex justify-content-between">
3145
<p class="user-page-key">Phone number: </p>
32-
<p class="user-page-value">(???) ???-??-??</p>
46+
<p class="user-page-value">${user.phone}</p>
3347
</div>
3448
<div class="row d-flex justify-content-between">
3549
<p class="user-page-key">Birth date: </p>
36-
<p class="user-page-value">????/??/??</p>
50+
<p class="user-page-value">${user.birthdate ? user.birthdate.slice(0, 10) : '__________'}</p>
3751
</div>
3852
<div class="row d-flex justify-content-between">
3953
<p class="user-page-key">Address: </p>
40-
<p class="user-page-value">????? ??????</p>
54+
<p class="user-page-value">${user.address ? user.address : '__________'}</p>
4155
</div>
4256
<div class="row d-flex justify-content-between">
4357
<p class="user-page-key">Gender: </p>
44-
<p class="user-page-value">?????</p>
58+
<p class="user-page-value">${user.gender === "M" ? 'Male' : 'Female'}</p>
4559
</div>
4660
47-
<div class="row d-flex justify-content-around">
61+
<div id="usp-wraper-for-btns" class="row d-flex justify-content-around">
4862
<button type="button" class="btn btn-primary">Edit</button>
4963
<button type="button" class="btn btn-danger">Delete</button>
5064
</div>
@@ -54,4 +68,33 @@ class UserPage{
5468
</div>
5569
`;
5670
}
57-
}
71+
72+
applyListenersForUserPage() {
73+
const wraperForButtons = document.getElementById('usp-wraper-for-btns');
74+
75+
const handlerForButtons = (e) => {
76+
if(e.target.textContent.trim() === 'Edit') {
77+
this.editUserPage.setStateEditUser();
78+
const EDIT_USER_PAGE = this.editUserPage.render(this.user);
79+
80+
const MAIN_WRAPER = document.getElementById('main-wraper');
81+
MAIN_WRAPER.firstElementChild.outerHTML = EDIT_USER_PAGE;
82+
this.editUserPage.applyListenersForEditUserPage()
83+
}
84+
85+
if(e.target.textContent.trim() === 'Delete') {
86+
const requestForDelete = confirm('Are you sure?');
87+
if(requestForDelete) {
88+
this.url.deleteUserById(this.user._id);
89+
90+
const USER_PAGE = document.getElementById('user-info');
91+
USER_PAGE.innerHTML = /*html*/`<h1 class="respond-after-delete">This user was deleted</h1>`;
92+
}
93+
}
94+
};
95+
96+
wraperForButtons.addEventListener('click', handlerForButtons)
97+
}
98+
}
99+
100+
export {UserPage};

0 commit comments

Comments
 (0)