Skip to content

Commit 8f4920c

Browse files
Merge pull request #4 from Equipe-Meta-Code/feat-update-history-page
merge update history page
2 parents b91a3c3 + 4c257a6 commit 8f4920c

3 files changed

Lines changed: 48 additions & 34 deletions

File tree

app/src/components/home/ProjectCard.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ const ProjectCard: React.FC<{ project: Project }> = ({ project }) => {
2424
const valueLeft = project.total - project.spent;
2525

2626
return (
27-
<TouchableOpacity onPress={() => navigation.navigate('Historico', { projectId: project.id })}>
27+
<TouchableOpacity onPress={() => navigation.navigate('Historico', { projectId: project.name })}>
2828
<View style={styles.card}>
2929

3030
{project.department && (

app/src/pages/historico/index.tsx

Lines changed: 45 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import React, { useState, useEffect } from "react";
22
import { View, FlatList, TouchableOpacity, Text } from "react-native";
3+
import { useRoute } from "@react-navigation/native";
34
import Header from "../../components/historico/Header";
45
import ExpenseSection from "../../components/historico/ExpenseSection";
56
import { styles } from "../../styles/historico.styles";
@@ -9,87 +10,99 @@ const despesas = [
910
categoria: "Transporte",
1011
icone: "🚖",
1112
itens: [
12-
{ data: "27/05/2024", projeto: "Projeto 2", valor: "R$ 14,80" },
13-
{ data: "28/05/2024", projeto: "Projeto 1", valor: "R$ 22,30" },
14-
{ data: "29/05/2024", projeto: "Projeto 2", valor: "R$ 60,90" },
15-
{ data: "30/05/2024", projeto: "Projeto 1", valor: "R$ 25,40" },
16-
{ data: "01/06/2024", projeto: "Projeto 1", valor: "R$ 48,00" },
13+
{ data: "27/05/2024", projeto: "Projeto Alpha", valor: "R$ 14,80" },
14+
{ data: "28/05/2024", projeto: "Projeto Beta", valor: "R$ 22,30" },
15+
{ data: "29/05/2024", projeto: "Projeto Gama", valor: "R$ 60,90" },
16+
{ data: "30/05/2024", projeto: "Projeto Delta", valor: "R$ 25,40" },
17+
{ data: "01/06/2024", projeto: "Projeto Epsilon", valor: "R$ 48,00" },
1718
],
1819
},
1920
{
2021
categoria: "Hospedagem",
2122
icone: "🏨",
2223
itens: [
23-
{ data: "27/05/2024", projeto: "Projeto 3", valor: "R$ 14,80" },
24-
{ data: "28/05/2024", projeto: "Projeto 3", valor: "R$ 22,30" },
25-
{ data: "29/05/2024", projeto: "Projeto 3", valor: "R$ 60,90"},
26-
{ data: "30/05/2024", projeto: "Projeto 2", valor: "R$ 120,00"},
27-
{ data: "30/05/2024", projeto: "Projeto 2", valor: "R$ 7,48"},
24+
{ data: "27/05/2024", projeto: "Projeto Zeta", valor: "R$ 14,80" },
25+
{ data: "28/05/2024", projeto: "Projeto Theta", valor: "R$ 22,30" },
26+
{ data: "29/05/2024", projeto: "Projeto Iota", valor: "R$ 60,90"},
27+
{ data: "30/05/2024", projeto: "Projeto Alpha", valor: "R$ 120,00"},
28+
{ data: "30/05/2024", projeto: "Projeto Epsilon", valor: "R$ 7,48"},
2829

2930
],
3031
},
3132
{
3233
categoria: "Alimentação",
3334
icone: "🍔",
3435
itens: [
35-
{ data: "12/06/2024", projeto: "Projeto 1", valor: "R$ 856,13" },
36-
{ data: "14/06/2024", projeto: "Projeto 2", valor: "R$ 45,90" },
37-
{ data: "15/06/2024", projeto: "Projeto 3", valor: "R$ 210,75" },
36+
{ data: "12/06/2024", projeto: "Projeto Theta", valor: "R$ 856,13" },
37+
{ data: "14/06/2024", projeto: "Projeto Alpha", valor: "R$ 45,90" },
38+
{ data: "15/06/2024", projeto: "Projeto Beta", valor: "R$ 210,75" },
3839
],
3940
},
4041
{
4142
categoria: "Entretenimento",
4243
icone: "🎬",
4344
itens: [
44-
{ data: "05/06/2024", projeto: "Projeto 2", valor: "R$ 50,00"},
45-
{ data: "10/06/2024", projeto: "Projeto 2", valor: "R$ 120,00" },
45+
{ data: "05/06/2024", projeto: "Projeto Gama", valor: "R$ 50,00"},
46+
{ data: "10/06/2024", projeto: "Projeto Alpha", valor: "R$ 120,00" },
4647
],
4748
},
4849
{
4950
categoria: "Educação",
5051
icone: "📚",
5152
itens: [
52-
{ data: "02/06/2024", projeto: "Projeto 3", valor: "R$ 299,99" },
53-
{ data: "03/06/2024", projeto: "Projeto 3", valor: "R$ 89,90" },
53+
{ data: "02/06/2024", projeto: "Projeto Zeta", valor: "R$ 299,99" },
54+
{ data: "03/06/2024", projeto: "Projeto Beta", valor: "R$ 89,90" },
5455
],
5556
},
5657
{
5758
categoria: "Saúde",
5859
icone: "⚕️",
5960
itens: [
60-
{ data: "08/06/2024", projeto: "Projeto 1", valor: "R$ 250,00"},
61-
{ data: "09/06/2024", projeto: "Projeto 1", valor: "R$ 80,45" },
61+
{ data: "08/06/2024", projeto: "Projeto Delta", valor: "R$ 250,00"},
62+
{ data: "09/06/2024", projeto: "Projeto Iota", valor: "R$ 80,45" },
6263
],
6364
},
6465
];
6566

6667

67-
const calcularTotal = () => {
68-
return despesas
69-
.flatMap((categoria) => categoria.itens)
70-
.reduce((total, item) => total + parseFloat(item.valor.replace("R$ ", "").replace(",", ".")), 0)
71-
.toFixed(2)
72-
.replace(".", ",");
73-
};
68+
const Historico: React.FC = () => {
69+
interface RouteParams {
70+
projectId?: string;
71+
}
72+
73+
const route = useRoute();
74+
const { projectId } = route.params as RouteParams || {};
7475

75-
const Historico: React.FC = () => {
76-
const totalDespesas = calcularTotal();
76+
const despesasFiltradas = projectId
77+
? despesas.map((categoria) => ({
78+
...categoria,
79+
itens: categoria.itens.filter((item) => item.projeto === projectId),
80+
})).filter((categoria) => categoria.itens.length > 0)
81+
: despesas;
7782

83+
const calcularTotal = () => {
84+
return despesasFiltradas
85+
.flatMap((categoria) => categoria.itens)
86+
.reduce((total, item) => total + parseFloat(item.valor.replace("R$ ", "").replace(",", ".")), 0)
87+
.toFixed(2)
88+
.replace(".", ",");
89+
};
90+
91+
const totalDespesas = calcularTotal();
7892
const [dataAtual, setDataAtual] = useState("");
7993

8094
useEffect(() => {
8195
const hoje = new Date();
8296
const dia = hoje.getDate().toString().padStart(2, "0");
83-
const mes = (hoje.getMonth() + 1).toString().padStart(2, "0");
97+
const mes = (hoje.getMonth() + 1).toString().padStart(2, "0");
8498
setDataAtual(`${dia}/${mes}`);
8599
}, []);
86-
87100

88101
return (
89102
<View style={styles.container}>
90103
<Header />
91104
<FlatList
92-
data={despesas}
105+
data={despesasFiltradas}
93106
keyExtractor={(item) => item.categoria}
94107
renderItem={({ item }) => <ExpenseSection {...item} />}
95108
contentContainerStyle={styles.listContainer}
@@ -108,4 +121,4 @@ const Historico: React.FC = () => {
108121
);
109122
};
110123

111-
export default Historico;
124+
export default Historico;

app/tsconfig.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"extends": "expo/tsconfig.base",
33
"compilerOptions": {
44
"strict": true,
5-
"jsx": "react"
5+
"jsx": "react",
6+
"esModuleInterop": true
67
}
78
}

0 commit comments

Comments
 (0)