Skip to content

Commit

Permalink
Merge pull request #405 from dadosjusbr/consolidacao-rem-oma
Browse files Browse the repository at this point in the history
Adicionando as remunerações na página de OMA
  • Loading branch information
danielfireman authored Jul 11, 2023
2 parents fa54023 + 5ddd030 commit 2596ab2
Show file tree
Hide file tree
Showing 11 changed files with 264 additions and 126 deletions.
4 changes: 3 additions & 1 deletion src/@types/PAPI_TYPES.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ type SummaryzedMI = {
metadados: Metadata;
indice_transparencia: Score;
dados_coleta: Collect;
error: MiError;
error?: MiError;
};

type Summaries = {
Expand All @@ -18,6 +18,8 @@ type Summary = {
quantidade: number;
remuneracao_base: DataSummary;
outras_remuneracoes: DataSummary;
descontos: DataSummary;
remuneracoes: DataSummary;
};

type DataSummary = {
Expand Down
10 changes: 9 additions & 1 deletion src/@types/UIAPI_TYPES.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,11 @@ type DataForChartAtAgencyScreen = {
PackageSize: number;
};

type AgencySalary = {
type AgencyRemuneration = {
max_salario: number;
histograma: number[];
package: Backup;
proc_info?: ProcInfo;
};

type GeneralTotals = {
Expand Down Expand Up @@ -59,6 +60,7 @@ type v2AgencySummary = {
max_outras_remuneracoes: number;
descontos: number;
max_descontos: number;
max_remuneracao: number;
timestamp: Timestamp;
total_membros: number;
total_remuneracao: number;
Expand All @@ -84,6 +86,8 @@ type v2MonthTotals = {
total_membros: number;
remuneracao_base: number;
remuneracao_base_por_membro: number;
remuneracoes: number;
remuneracoes_por_membro: number;
outras_remuneracoes: number;
outras_remuneracoes_por_membro: number;
descontos: number;
Expand Down Expand Up @@ -172,6 +176,9 @@ type AnnualSummaryData = {
descontos: number;
descontos_por_mes: number;
descontos_por_membro: number;
remuneracoes: number;
remuneracoes_por_mes: number;
remuneracoes_por_membro: number;
meses_com_dados: number;
package: Backup;
};
Expand All @@ -182,4 +189,5 @@ type mensalRemuneration = {
remuneracao_base: number;
outras_remuneracoes: number;
descontos: number;
remuneracoes: number;
};
168 changes: 145 additions & 23 deletions src/components/OmaChart/components/AgencyGenerals.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,83 +2,205 @@ import {
Avatar,
Box,
Grid,
IconButton,
List,
ListItem,
ListItemAvatar,
ListItemText,
Paper,
Tooltip,
Typography,
} from '@mui/material';
import AccountBalanceWalletIcon from '@mui/icons-material/AccountBalanceWallet';
import RemoveCircle from '@mui/icons-material/CancelPresentation';
import Payments from '@mui/icons-material/Payments';
import CardGiftcardIcon from '@mui/icons-material/CardGiftcard';
import EmojiPeopleIcon from '@mui/icons-material/EmojiPeople';
import InfoIcon from '@mui/icons-material/Info';
import { formatCurrencyValue } from '../../../functions/format';

const index = ({
totalMembers,
maxWage,
totalWage,
maxPerk,
totalPerks,
maxRemuneration,
totalRemuneration,
discounts,
maxDiscounts,
}: {
totalMembers: number;
maxWage: number;
totalWage: number;
maxPerk: number;
totalPerks: number;
maxRemuneration: number;
totalRemuneration: number;
discounts: number;
maxDiscounts: number;
}) => (
<Grid item xs={12} md={20}>
<Paper elevation={0}>
<Box p={2} pb={0} textAlign="center">
<Typography variant="h6">
Resumo de remunerações de membros ativos
<Tooltip
placement="bottom"
title={
<Typography fontSize={{ xs: '0.8rem', md: '0.9rem' }}>
<b>Remuneração:</b> Valor final da soma entre salário e
benefícios, retirando os descontos.
<hr />
<b>Salário:</b> Valor recebido de acordo com a prestação de
serviços, em decorrência do contrato de trabalho.
<hr />
<b>Benefícios:</b> Qualquer remuneração recebida por um
funcionário que não seja proveniente de salário. Exemplos de
benefícios são: diárias, gratificações, remuneração por função
de confiança, benefícios pessoais ou eventuais, auxílios
alimentação, saúde, escolar...
<hr />
<b>Descontos:</b> Valor retirado do salário ou de benefícios do
funcionário de acordo com a lei, como imposto de renda,
contribuição para previdência, pensão alimentícia, entre outros.
<hr />
<b>Membros:</b> Participantes ativos do órgao, incluindo os
servidores públicos, os militares e os membros do Poder
Judiciário.
<hr />
<b>Servidor:</b> Funcionário público que exerce cargo ou função
pública, com vínculo empregatício, e que recebe remuneração fixa
ou variável.
</Typography>
}
>
<IconButton aria-label="Botão de informações">
<InfoIcon />
</IconButton>
</Tooltip>
</Typography>
</Box>
<Box p={2} pt={0}>
<Box p={2} pt={0} maxWidth={905} margin="0 auto">
<List dense>
<Grid container justifyContent="space-between">
<Grid item md={3}>
<Grid container justifyContent="flex-start" alignItems="center">
<Grid item>
<ListItem>
<ListItemAvatar>
<Avatar>
<EmojiPeopleIcon />
<Payments />
</Avatar>
</ListItemAvatar>
<ListItemText
primary={`Quantidade de membros: ${totalMembers}`}
/>
<Box>
<ListItemText primaryTypographyProps={{ lineHeight: 1 }}>
Remuneração média:{' '}
{formatCurrencyValue(totalRemuneration / totalMembers, 2)}
</ListItemText>
<ListItemText
secondaryTypographyProps={{ lineHeight: 1 }}
secondary={`Maior remuneração: ${formatCurrencyValue(
maxRemuneration,
1,
)}`}
/>
<ListItemText
secondaryTypographyProps={{ lineHeight: 1 }}
secondary={`Total de remunerações:
${formatCurrencyValue(totalRemuneration, 2)}`}
/>
</Box>
</ListItem>
</Grid>
<Grid item md={3}>
<Grid item>
<ListItem>
<ListItemAvatar>
<Avatar>
<AccountBalanceWalletIcon />
</Avatar>
</ListItemAvatar>
<ListItemText
primary={`Maior salário: R$ ${(maxWage / 1000).toFixed(
2,
)} mil`}
secondary={`Total de salários: R$ ${(
totalWage / 1000000
).toFixed(2)}M`}
/>
<Box>
<ListItemText primaryTypographyProps={{ lineHeight: 1 }}>
Salário bruto médio:{' '}
{formatCurrencyValue(totalWage / totalMembers, 2)}
</ListItemText>
<ListItemText
secondaryTypographyProps={{ lineHeight: 1 }}
secondary={`Maior salário bruto: ${formatCurrencyValue(
maxWage,
1,
)}`}
/>
<ListItemText
secondaryTypographyProps={{ lineHeight: 1 }}
secondary={`Total de salários brutos:
${formatCurrencyValue(totalWage, 2)}`}
/>
</Box>
</ListItem>
</Grid>
<Grid item md={3}>
<Grid item>
<ListItem>
<ListItemAvatar>
<Avatar>
<CardGiftcardIcon />
</Avatar>
</ListItemAvatar>
<Box>
<ListItemText primaryTypographyProps={{ lineHeight: 1 }}>
Benefício bruto médio:{' '}
{formatCurrencyValue(totalPerks / totalMembers, 2)}
</ListItemText>
<ListItemText
secondaryTypographyProps={{ lineHeight: 1 }}
secondary={`Maior benefício bruto: ${formatCurrencyValue(
maxPerk,
1,
)}`}
/>
<ListItemText
secondaryTypographyProps={{ lineHeight: 1 }}
secondary={`Total de benefícios brutos:
${formatCurrencyValue(totalPerks, 2)}`}
/>
</Box>
</ListItem>
</Grid>
<Grid item md={3.8}>
<ListItem>
<ListItemAvatar>
<Avatar>
<RemoveCircle />
</Avatar>
</ListItemAvatar>
<Box>
<ListItemText primaryTypographyProps={{ lineHeight: 1 }}>
Desconto médio:{' '}
{formatCurrencyValue(discounts / totalMembers, 2)}
</ListItemText>
<ListItemText
secondaryTypographyProps={{ lineHeight: 1 }}
secondary={`Maior desconto: ${formatCurrencyValue(
maxDiscounts,
1,
)}`}
/>
<ListItemText
secondaryTypographyProps={{ lineHeight: 1 }}
secondary={`Total de desconto:
${formatCurrencyValue(discounts, 2)}`}
/>
</Box>
</ListItem>
</Grid>
<Grid item>
<ListItem>
<ListItemAvatar>
<Avatar>
<EmojiPeopleIcon />
</Avatar>
</ListItemAvatar>
<ListItemText
primary={`Maior benefício: R$ ${(maxPerk / 1000).toFixed(
2,
)} mil`}
secondary={`Total de benefícios: R$ ${(
totalPerks / 1000000
).toFixed(2)}M`}
primary={`Quantidade de membros: ${totalMembers}`}
/>
</ListItem>
</Grid>
Expand Down
34 changes: 15 additions & 19 deletions src/components/OmaChart/components/CollectInfos.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,25 +36,21 @@ const index = ({ mi, agency }: { mi: SummaryzedMI; agency: string }) => (
placement="top"
sx={{ mb: 0.5 }}
title={
<Typography fontSize="0.8rem">
<p>
<b>Repositório do Coletor:</b> Link para o repositório de
código aberto utilizado para a realização da coleta de dados
do respectivo órgão - baixando os dados diretamente,
realizando a raspagem do HTML ou ainda simulando um usuário.
</p>
<p>
<b>Repositório para Tratamento dos Dados:</b> Link para o
repositório de código aberto utilizado para o tratamento dos
dados obtidos pelo coletor - organizando, detalhando e
unificando esses dados. Alguns órgãos recebem o tratamento de
dados ainda no coletor, não possuindo esse estágio.
</p>
<p>
<b>Duração da Coleta:</b> Tempo total do processo de coleta -
considerando a coleta, o tratamento, a validação, o
empacotamento e o armazenamento desses dados.
</p>
<Typography fontSize={{ xs: '0.8rem', md: '0.9rem' }}>
<b>Repositório do Coletor:</b> Link para o repositório de código
aberto utilizado para a realização da coleta de dados do
respectivo órgão - baixando os dados diretamente, realizando a
raspagem do HTML ou ainda simulando um usuário.
<hr />
<b>Repositório para Tratamento dos Dados:</b> Link para o
repositório de código aberto utilizado para o tratamento dos
dados obtidos pelo coletor - organizando, detalhando e
unificando esses dados. Alguns órgãos recebem o tratamento de
dados ainda no coletor, não possuindo esse estágio.
<hr />
<b>Duração da Coleta:</b> Tempo total do processo de coleta -
considerando a coleta, o tratamento, a validação, o
empacotamento e o armazenamento desses dados.
</Typography>
}
>
Expand Down
2 changes: 1 addition & 1 deletion src/components/OmaChart/components/MembersGraph.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { graphOptions } from '../functions/graphConfig';

const Chart = dynamic(() => import('react-apexcharts'), { ssr: false });

const index = ({ chartData }: { chartData: AgencySalary }) => (
const index = ({ chartData }: { chartData: AgencyRemuneration }) => (
<Grid item xs={12}>
<Paper elevation={0}>
<Box pt={4} py={4} px={2}>
Expand Down
23 changes: 9 additions & 14 deletions src/components/OmaChart/components/TransparencyMetrics.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,20 +38,15 @@ const index = ({
placement="top"
sx={{ mb: 0.5 }}
title={
<Typography fontSize="0.8rem">
<p>
<b>Índice de transparência:</b> Média harmônica entre os
índices de completude e facilidade em {MONTHS[month]} de{' '}
{year}
</p>
<p>
<b>Índice de completude:</b> Pontua a completude dos dados
segundo os critérios listados
</p>
<p>
<b>Índice de facilidade:</b> Pontua a facilidade de obtenção e
uso dos dados segundo os critérios listados
</p>
<Typography fontSize={{ xs: '0.8rem', md: '0.9rem' }}>
<b>Índice de transparência:</b> Média harmônica entre os índices
de completude e facilidade em {MONTHS[month]} de {year}.
<hr />
<b>Índice de completude:</b> Pontua a completude dos dados
segundo os critérios listados.
<hr />
<b>Índice de facilidade:</b> Pontua a facilidade de obtenção e
uso dos dados segundo os critérios listados.
</Typography>
}
>
Expand Down
6 changes: 5 additions & 1 deletion src/components/OmaChart/functions/graphConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,10 @@ export const graphOptions = {
cssClass: 'apexcharts-yaxis-label',
},
},
title: {
text: 'Valor',
offsetX: 5,
},
},
xaxis: {
categories: [
Expand All @@ -54,7 +58,7 @@ export const graphOptions = {
],
title: {
text: 'Quantidade',
offsetY: 30,
offsetY: 10,
},
},
fill: {
Expand Down
Loading

0 comments on commit 2596ab2

Please sign in to comment.