1+ import { EditUserPage } from '../edit-user-page/edit-user-page' ;
2+ import { Url } from '../url/url' ;
3+
14class 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