Conversation
| .then(function (data) { | ||
| persons = data.results; | ||
| displayList = persons; | ||
| displayCards(); |
There was a problem hiding this comment.
Single responsibility - your functions should do only one job. As an example function in which you fetch users should only fetch them and not render, transform or process them in other ways. All these things should be done in another place, outside your function. The same applied to the sort function, which usually does all types of sorting 😉
There was a problem hiding this comment.
I would be honest, but i didnt find the way how to delete this displayCards() from this piece of code, so i just renamed function. I was trying to put this displayCards() in document.addEventListener('DOMContentLoaded', function () , but it didnt work...
There was a problem hiding this comment.
Tip - you should use then in special place ;)
There was a problem hiding this comment.
Yep, this I understood, but where:)
Ok, I will try to figure out!
There was a problem hiding this comment.
Ok, I think I found out how to do it!
First of all - I tried to use one more promise inside of document.addEventListener('DOMContentLoaded', function (){...} , but it didnt work, i dont know why. Then I decided to use async and seems it worked!
| displayList = displayList.sort((a, b) => a.dob.age - b.dob.age); | ||
| break; | ||
| case 'ageHigh': | ||
| displayList = displayList.sort((b, a) => a.dob.age - b.dob.age); |
There was a problem hiding this comment.
- Why you need assigning to
displayList? - Same function as at line 81. DRY
There was a problem hiding this comment.
Thank you!
Yes, really, i dont need this 'assigning '!
Ok, I will read this comments.
There was a problem hiding this comment.
I'm sorry, Did I understand correctly - I should remake this part of code (this switch is too long and it's not "Single responsibility"):
if (radio) {
switch (radio.id) {
case 'genderAll':
displayList = persons;
break;
case 'genderMale':
displayList = persons.filter(el => el.gender === 'male');
break;
case 'genderFemale':
displayList = persons.filter(el => el.gender === 'female');
break;
case 'nameAsc':
displayList.sort((b, a) => a.name.last > b.name.last ? -1 : 1);
break;
case 'nameDesc':
displayList.sort((b, a) => a.name.last < b.name.last ? -1 : 1);
break;
case 'ageLow':
displayList.sort((a, b) => a.dob.age - b.dob.age);
break;
case 'ageHigh':
displayList.sort((b, a) => a.dob.age - b.dob.age);
break;
}
With adding functions for sorting.
BTW, Should I delete "long switch" and make few different "addEventListneres" for each case of switch or it will be very ig load on site? (sorry may be for stupid questions, but i just want to understand)
There was a problem hiding this comment.
- Yes, you should delete the long switch
- You can have a listener on the form and listen to
changeevent. Or you can separate listeners between fieldsets. Up to you
There was a problem hiding this comment.
Huh! Unbelievable, but seems I did it!:)
I dodnt know why, but this refactoring took me quit long time.
Basically, I think. It because I start fixing everything at one time... it was big mistake - nothing work and could understand why. So, then I started do it step-by-step, like You teaching us:) Refactored sort logic, then long switch.
Sorry, may be It's not necessary to write it here, but whom else can i write it;))
Ok, so now code looks better, I hope:)
|
@SamVal007 if you think your changes address the reviewer's comments please re-request review |
|
I'm sorry that I'm out of deadline. |
- Add functions for sorting (more structural logic for sorting)
- Changed long switch to more compact logic (with using addEventListener('change', ({target: radioButton}))
|
|
||
| document.addEventListener('DOMContentLoaded', function () { | ||
| makeFriendList(); | ||
| //displayCards(); //I dodnt know why, but if put displayCards() here -> it doesnt work |
There was a problem hiding this comment.
So you need to found out :D Or you need my help?
There was a problem hiding this comment.
It seems, now it works as we want with single responsibility!
But I watched one video about pure functions and understood, that this my code is smelling a little)) Right?:)
I should make it without using GLOBAL arrays let persons = []; let displayList = [];. Right?
| displayCards(); | ||
| }) | ||
|
|
||
| btn.addEventListener('click', () =>{ |
There was a problem hiding this comment.
Didnt get, what?:)
"Dont use short carts for names"? Right?
There was a problem hiding this comment.
@zonzujiro
What do you think about other places? Is there everything good?
|
|
||
| let persons = []; | ||
| let displayList = []; | ||
| const putPersonsInDisplayList = () => {displayList = persons;}; |
|
Sorry, man. I'm with covid right now. I will return to PR in a week or so. If not - pls ping me in Telegram :) |
|
OMG, I'm sorry, I didn't know.
Wish You become Healthy as fast as it is possible.
PS. No worries about PR! It doesn't matter right now!
…On Sun, Apr 11, 2021 at 3:50 PM Ivan Tytarenko ***@***.***> wrote:
Sorry, man. I'm with covid right now.
I will return to PR in a week or so.
If not - pls ping me in Telegram :)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#457 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ASDPGHGSXMY6P5L6HXZ56TDTIGLJ7ANCNFSM4XY4JNTQ>
.
--
С ув. Самойленко В.
|
zonzujiro
left a comment
There was a problem hiding this comment.
You should pay more attention to code style :) Redundant empty lines, missing curly brackets, etc.
| if (value === 'genderAll') putPersonsInDisplayList() | ||
| else{ | ||
| displayList = persons.filter(el => el.gender === value); | ||
| } | ||
|
|
There was a problem hiding this comment.
Broken syntax. Avoid such mistakes :)
Add brackets and use prettier
| makeFriendList() | ||
| .then(() => { | ||
| displayCards(); | ||
| }); |
There was a problem hiding this comment.
| makeFriendList() | |
| .then(() => { | |
| displayCards(); | |
| }); | |
| makeFriendList().then(displayCards); |
| }); | ||
|
|
||
| SEARCH_FIELD.addEventListener('input', function () { | ||
| let searchStr = ''; |
There was a problem hiding this comment.
No need in Str in variable. Type of data is redundant info in variable name. Please, find another one.
| MENU_FORMS.addEventListener('change', ({target: radioButton}) => { | ||
| putPersonsInDisplayList(); | ||
|
|
||
| if (radioButton.name === 'genderField') filtrByGender(radioButton.value); |
There was a problem hiding this comment.
Sometimes you use brackets, sometimes don't.
You should pick one approach and use it :)
| if (radioButton.name === "nameField") { | ||
| nameSorters[radioButton.value](); | ||
| } | ||
|
|
||
| if (radioButton.name === "ageField") { | ||
| ageSorters[radioButton.value](); | ||
| } |
There was a problem hiding this comment.
ageSorters[radioButton.name]()?
|
|
||
| const ageSorters = { | ||
| ageLow: () => persons.sort((a, b) => compareAge(b, a)), | ||
|
|
#Friends_APP
demo
codebase
Please, review.