Skip to content

Commit

Permalink
add task solution
Browse files Browse the repository at this point in the history
  • Loading branch information
VasylynaBC committed Nov 6, 2024
1 parent e7e80f9 commit 687641d
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 20 deletions.
54 changes: 37 additions & 17 deletions src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,27 +1,47 @@
import React from 'react';
import React, { useState } from 'react';
import './App.scss';
import { GoodsList } from './GoodsList';

// import { getAll, get5First, getRed } from './api/goods';
import { getAll, get5First, getRedGoods } from './api/goods';
import { Good } from './types/Good';
// or
// import * as goodsAPI from './api/goods';

export const App: React.FC = () => (
<div className="App">
<h1>Dynamic list of Goods</h1>
export const App: React.FC = () => {
const [users, setUsers] = useState<Good[]>([]);

<button type="button" data-cy="all-button">
Load all goods
</button>
function allGoods () {
return getAll().then((userslist) => {
setUsers(userslist);
});
}
function getFisrt () {
return get5First().then((userslist) => {
setUsers(userslist);
});
}
function getRed () {
return getRedGoods().then((userslist) => {
setUsers(userslist);
});
}
return (
<div className="App">
<h1>Dynamic list of Goods</h1>

<button type="button" data-cy="first-five-button">
Load 5 first goods
</button>
<button type="button" onClick={allGoods} data-cy="all-button">
Load all goods
</button>

<button type="button" data-cy="red-button">
Load red goods
</button>
<button type="button" onClick={getFisrt} data-cy="first-five-button">
Load 5 first goods
</button>

<GoodsList goods={[]} />
</div>
);
<button type="button" onClick={getRed} data-cy="red-button">
Load red goods
</button>

<GoodsList goods={users} />
</div>
)
};
2 changes: 1 addition & 1 deletion src/GoodsList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ type Props = {
export const GoodsList: React.FC<Props> = ({ goods }) => (
<ul>
{goods.map(good => (
<li key={good.id} data-cy="good">
<li key={good.id} data-cy="good" style={{color:good.color}}>
{good.name}
</li>
))}
Expand Down
6 changes: 4 additions & 2 deletions src/api/goods.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,11 @@ export function getAll(): Promise<Good[]> {
}

export const get5First = () => {
return getAll().then(goods => goods); // sort and get the first 5
return getAll()
.then(goods => goods.sort((a,b) => (a.name > b.name) ? 1 : ((b.name > a.name) ? -1 : 0)) // sort and get the first 5
.slice(0,5));
};

export const getRedGoods = () => {
return getAll().then(goods => goods); // get only red
return getAll().then(goods => goods.filter(good => good.color === 'red')); // get only red
};

0 comments on commit 687641d

Please sign in to comment.