Skip to content

Commit

Permalink
implement sort gender
Browse files Browse the repository at this point in the history
  • Loading branch information
Easybuoy committed Nov 18, 2019
1 parent 4f86305 commit e0f36f0
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 2 deletions.
26 changes: 24 additions & 2 deletions src/components/Characters/CharacterList.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ import {
sortName,
calculateFeet,
calculateInches,
filterGender
filterGender,
sortGender
} from '../../utils';

export const sortArrow = order => {
Expand All @@ -32,6 +33,7 @@ export const sortArrow = order => {
export const CharacterList = ({ movie, characters, loading }) => {
const [heightOrder, setHeightOrder] = useState(undefined);
const [nameOrder, setNameOrder] = useState(undefined);
const [genderOrder, setGenderOrder] = useState(undefined);
const [genderValue, setGenderValue] = useState('Filter Gender');
const [stateCharacters, setStateCharacters] = useState([]);

Expand Down Expand Up @@ -75,6 +77,21 @@ export const CharacterList = ({ movie, characters, loading }) => {
setStateCharacters(sorted);
};

const sortGenderField = array => {
let sorted = [];
if (genderOrder === 0 || genderOrder === undefined) {
sorted = sortGender(array, 'asc');
setGenderOrder(1);
}

if (genderOrder === 1) {
sorted = sortGender(array, 'dsc');
setGenderOrder(0);
}

setStateCharacters(sorted);
};

const filterGenderField = (array, letter) => {
const sorted = filterGender(array, letter);
setStateCharacters(sorted);
Expand Down Expand Up @@ -120,7 +137,12 @@ export const CharacterList = ({ movie, characters, loading }) => {
>
Name {sortArrow(nameOrder)}
</th>
<th>Gender</th>
<th
onClick={() => sortGenderField(characters)}
className="toggle gender"
>
Gender {sortArrow(genderOrder)}
</th>
<th
onClick={() => sortHeightField(characters)}
className="toggle height"
Expand Down
13 changes: 13 additions & 0 deletions src/utils/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,19 @@ export const sortHeight = (array, order) => {
}
};


export const sortGender = (array, order) => {
switch (order) {
case 'asc':
return array.sort((a, b) => a.gender.localeCompare(b.gender));
case 'dsc':
return array.sort((a, b) => b.gender.localeCompare(a.gender));
default:
return array;
}
};


export const filterGender = (array, letter) => {
switch (letter) {
case 'MALE':
Expand Down

0 comments on commit e0f36f0

Please sign in to comment.