-
Notifications
You must be signed in to change notification settings - Fork 65
/
Copy pathindex.js
86 lines (78 loc) · 2.78 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import React, { useState, useEffect } from 'react';
import * as S from './styled';
const colorMatch = (option) => {
switch (option) {
case 'Iniciante':
return 'nephritis';
case 'Intermediário':
return 'pumpkin';
case 'Avançado':
return 'pomegranate';
case 'Mobile':
return 'blue';
case 'Front-end':
return 'red';
case 'Back-end':
return 'light-purple';
default:
return 'green';
}
};
function ChallengeCard({ challenge, progress, redirect, buttonText }) {
const [techs, setTechs] = useState([]);
useEffect(() => {
const techsUnOrder = challenge.techs
.toString()
.split(',')
.map((element) => element.replace(/^[ ]/, ''));
techsUnOrder.forEach((techItem, i) => {
techsUnOrder.forEach((element, j) => {
if (j > i && element.length > techItem.length) {
const aux = techItem;
techsUnOrder[i] = element;
techsUnOrder[j] = aux;
}
});
});
setTechs(techsUnOrder);
}, [challenge.techs]);
return (
<S.ChallengeCard key={challenge.id}>
<S.Anchor to={`/challenges/${challenge.id}/details`}>
<S.CardImage>
<S.CardTechs>
{techs.map((item) => (
<p className="tech" key={`${item}-${challenge.id}`}>
{item}
</p>
))}
</S.CardTechs>
<S.CardPlatforms>
<S.Level color={colorMatch(challenge.type)}>
{challenge.type}
</S.Level>
<S.Level color={colorMatch(challenge.level)}>
{challenge.level}
</S.Level>
</S.CardPlatforms>
<img src={challenge.background} alt="" />
</S.CardImage>
{progress && <S.ProgressBar progress={progress} />}
</S.Anchor>
<S.CardContent>
<S.Anchor to={`/challenges/${challenge.id}/details`}>
<h1>{challenge.name}</h1>
</S.Anchor>
<p>
{challenge.description.length > 120
? challenge.description.substr(0, 120) + '...'
: challenge.description}
</p>{' '}
</S.CardContent>
<S.Anchor to={`${redirect}`}>
<S.Button>{buttonText}</S.Button>
</S.Anchor>
</S.ChallengeCard>
);
}
export default ChallengeCard;