1
1
const params = new URLSearchParams ( window . location . search ) ;
2
2
const userListElement = document . getElementById ( USER_LIST_ELEMENT ) ;
3
3
const loaderElement = document . getElementById ( LOADER_ELEMENT ) ;
4
- const userloaderElement = document . getElementById ( USER_LOADER_ELEMENT ) ;
5
4
const tileViewBtn = document . getElementById ( TILE_VIEW_BTN ) ;
6
5
const tableViewBtn = document . getElementById ( TABLE_VIEW_BTN ) ;
7
6
const userSearchElement = document . getElementById ( USER_SEARCH_ELEMENT ) ;
@@ -16,9 +15,7 @@ const clearButton = document.getElementById(CLEAR_BUTTON);
16
15
17
16
let tileViewActive = false ;
18
17
let tableViewActive = true ;
19
- let isLoading = false ;
20
18
let page = 0 ;
21
- let run = true ;
22
19
23
20
const init = (
24
21
prevBtn ,
@@ -30,23 +27,26 @@ const init = (
30
27
paginationElement ,
31
28
loaderElement ,
32
29
) => {
33
- window . addEventListener ( 'scroll' , async ( ) => {
34
- console . log ( 'Page No is: ' + page ) ;
35
- if (
36
- window . innerHeight + window . scrollY >= document . body . offsetHeight - 100 &&
37
- run
38
- ) {
39
- if ( ! run ) {
40
- return ;
41
- }
42
- run = false ;
43
- showUserDataList (
44
- page ++ ,
45
- userListElement ,
46
- paginationElement ,
47
- loaderElement ,
48
- ) ;
49
- }
30
+ prevBtn . addEventListener ( 'click' , ( ) => {
31
+ showUserDataList (
32
+ -- page ,
33
+ userListElement ,
34
+ paginationElement ,
35
+ loaderElement ,
36
+ prevBtn ,
37
+ nextBtn ,
38
+ ) ;
39
+ } ) ;
40
+
41
+ nextBtn . addEventListener ( 'click' , ( ) => {
42
+ showUserDataList (
43
+ ++ page ,
44
+ userListElement ,
45
+ paginationElement ,
46
+ loaderElement ,
47
+ prevBtn ,
48
+ nextBtn ,
49
+ ) ;
50
50
} ) ;
51
51
52
52
tileViewBtn . addEventListener ( 'click' , ( ) => {
@@ -86,8 +86,6 @@ function showTileView(userListElement, tableViewBtn, tileViewBtn) {
86
86
tableViewBtn . classList . remove ( 'btn-active' ) ;
87
87
tileViewBtn . classList . add ( 'btn-active' ) ;
88
88
const listContainerElement = userListElement . lastChild ;
89
- const headList = document . getElementById ( 'head_list' ) ;
90
- headList . classList . add ( 'tile-webview' ) ;
91
89
listContainerElement . childNodes . forEach ( ( listElement ) => {
92
90
const imgElement = listElement . firstChild ;
93
91
imgElement . classList . add ( 'remove-element' ) ;
@@ -151,7 +149,14 @@ function generateUserList(
151
149
userListElement ,
152
150
paginationElement ,
153
151
loaderElement ,
152
+ prevBtn ,
154
153
) {
154
+ userListElement . innerHTML = '' ;
155
+ if ( page <= 0 ) {
156
+ prevBtn . classList . add ( 'btn-disabled' ) ;
157
+ } else {
158
+ prevBtn . classList . remove ( 'btn-disabled' ) ;
159
+ }
155
160
if ( ! users || ! users . length ) {
156
161
showErrorMessage (
157
162
'No data found' ,
@@ -161,39 +166,40 @@ function generateUserList(
161
166
) ;
162
167
return ;
163
168
}
169
+ const ulElement = document . createElement ( 'ul' ) ;
170
+ users . forEach ( ( userData ) => {
171
+ const listElement = document . createElement ( 'li' ) ;
172
+ const imgElement = document . createElement ( 'img' ) ;
173
+ imgElement . src = userData . picture ? userData . picture : DEFAULT_AVATAR ;
174
+ imgElement . classList . add ( 'user-img-dimension' ) ;
175
+ const pElement = document . createElement ( 'p' ) ;
176
+ const node = document . createTextNode (
177
+ `${ userData . first_name } ${ userData . last_name } ` ,
178
+ ) ;
179
+ pElement . appendChild ( node ) ;
180
+ listElement . appendChild ( imgElement ) ;
181
+ listElement . appendChild ( pElement ) ;
164
182
165
- const ulElement = document . getElementById ( 'head_list' ) ;
166
-
167
- if ( users != null ) {
168
- users . forEach ( ( userData ) => {
169
- const listElement = document . createElement ( 'li' ) ;
170
- const imgElement = document . createElement ( 'img' ) ;
171
- imgElement . src = userData . picture ? userData . picture : DEFAULT_AVATAR ;
172
- imgElement . classList . add ( 'user-img-dimension' ) ;
173
- listElement . classList . add ( 'tile-webview' ) ;
174
- const pElement = document . createElement ( 'p' ) ;
175
- const node = document . createTextNode (
176
- `${ userData . first_name } ${ userData . last_name } ` ,
177
- ) ;
178
- pElement . appendChild ( node ) ;
179
- listElement . appendChild ( imgElement ) ;
180
- listElement . appendChild ( pElement ) ;
181
-
182
- if ( tileViewActive ) {
183
- let imgElement = listElement . firstChild ;
184
- listElement . classList . add ( 'tile-width' ) ;
185
- imgElement . classList . add ( 'remove-element' ) ;
186
- }
187
- listElement . onclick = ( ) => {
188
- document . getElementById ( 'user-search' ) . value = '' ;
189
- window . location . href = `/users/details/index.html?username=${ userData . username } ` ;
190
- } ;
191
- ulElement . appendChild ( listElement ) ;
192
- } ) ;
193
- loaderElement . classList . add ( 'remove-element' ) ;
194
- userListElement . appendChild ( ulElement ) ;
195
- run = true ;
183
+ if ( tileViewActive ) {
184
+ let imgElement = listElement . firstChild ;
185
+ listElement . classList . remove ( 'tile-width' ) ;
186
+ imgElement . classList . add ( 'remove-element' ) ;
187
+ }
188
+ listElement . onclick = ( ) => {
189
+ document . getElementById ( 'user-search' ) . value = '' ;
190
+ window . location . href = `/users/details/index.html?username=${ userData . username } ` ;
191
+ } ;
192
+ ulElement . appendChild ( listElement ) ;
193
+ } ) ;
194
+ loaderElement . classList . add ( 'remove-element' ) ;
195
+ if ( showPagination ) {
196
+ paginationElement . classList . remove ( 'remove-element' ) ;
197
+ paginationElement . classList . add ( 'pagination' ) ;
198
+ } else {
199
+ paginationElement . classList . add ( 'remove-element' ) ;
200
+ paginationElement . classList . remove ( 'pagination' ) ;
196
201
}
202
+ userListElement . appendChild ( ulElement ) ;
197
203
}
198
204
199
205
async function fetchUsersData ( searchInput ) {
@@ -327,17 +333,17 @@ const showUserDataList = async (
327
333
userListElement ,
328
334
paginationElement ,
329
335
loaderElement ,
336
+ prevBtn ,
337
+ nextBtn ,
330
338
) => {
331
339
try {
332
- if ( isLoading ) return ;
333
- if ( page != 0 ) {
334
- isLoading = true ;
335
- userloaderElement . style . display = 'block' ;
336
- }
337
-
338
340
const userData = await getUsersData ( page ) ;
339
-
340
- if ( userData && userData . length ) {
341
+ if ( userData . length ) {
342
+ if ( userData . length < USER_FETCH_COUNT ) {
343
+ nextBtn . classList . add ( 'btn-disabled' ) ;
344
+ } else {
345
+ nextBtn . classList . remove ( 'btn-disabled' ) ;
346
+ }
341
347
let usersDataList = userData . filter (
342
348
( user ) => user . first_name && ! user . roles ?. archived ,
343
349
) ;
@@ -353,6 +359,7 @@ const showUserDataList = async (
353
359
userListElement ,
354
360
paginationElement ,
355
361
loaderElement ,
362
+ prevBtn ,
356
363
) ;
357
364
}
358
365
} catch ( err ) {
@@ -363,9 +370,6 @@ const showUserDataList = async (
363
370
paginationElement ,
364
371
loaderElement ,
365
372
) ;
366
- } finally {
367
- userloaderElement . style . display = 'none' ;
368
- isLoading = false ;
369
373
}
370
374
} ;
371
375
0 commit comments