Skip to content

Commit

Permalink
conclui RED-15 / RED-82
Browse files Browse the repository at this point in the history
  • Loading branch information
sombriks committed May 19, 2024
1 parent 5ee4db7 commit 234aea2
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 56 deletions.
59 changes: 30 additions & 29 deletions service-node-koa/app/services/dashboard.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -229,44 +229,45 @@ async function vencimentos({ usuario_id, inicio, fim }) {

async function limites({ usuario_id, inicio, fim }) {
return knex.raw(`
select m.id as id,
c.descricao as descricao,
c.cor as color,
sum((m.valor * (case m.tipo_movimentacao_id when 1 then 1 when 2 then -1 else 1 end)))
over (partition by c.descricao order by m.id) as acc,
m.valor as value,
t.descricao as type,
c.limite as redline
with data_frame as (select m.id, conta_id, valor, tipo_movimentacao_id, t.descricao as type
from movimentacao m
join tipo_movimentacao t on m.tipo_movimentacao_id = t.id
where m.vencimento between :inicio and :fim
and m.conta_id in (select id from conta where usuario_id = :usuario_id))
select m.id as id,
c.descricao as descricao,
c.cor as color,
c.limite as redline,
m.type as type,
m.valor as value,
sum(m.valor * (case m.tipo_movimentacao_id when 1 then 1 else -1 end))
over (partition by c.id order by m.id) as acc
from conta c
join movimentacao m
on c.id = m.conta_id
join tipo_movimentacao t on t.id = m.tipo_movimentacao_id
where m.vencimento between :inicio
and :fim
left join data_frame m on c.id = m.conta_id
where c.tipo_conta_id in (2, 3)
and c.usuario_id = :usuario_id
and c.tipo_conta_id in (2, 3)
`, { usuario_id, inicio, fim })
}

async function planejamentos({ usuario_id, inicio, fim }) {
return knex.raw(`
with data_frame as (select m.id as id,
m.categoria_id as categoria_id,
m.descricao as descricao,
c.cor as color,
m.valor as value,
m.tipo_movimentacao_id as tipo_movimentacao_id,
sum((m.valor * (case m.tipo_movimentacao_id when 1 then 1 else -1 end)))
over (partition by c.descricao order by m.id) as acc
from categoria c
join movimentacao m on c.id = m.categoria_id
with data_frame as (select m.id, categoria_id, valor, tipo_movimentacao_id, t.descricao as type
from movimentacao m
join tipo_movimentacao t on m.tipo_movimentacao_id = t.id
where m.vencimento between :inicio and :fim
and c.usuario_id = :usuario_id)
select *
and m.conta_id in (select id from conta where usuario_id = :usuario_id))
select m.id as id,
p.descricao as descricao,
c.cor as color,
p.limite as redline,
m.type as type,
m.valor as value,
sum(m.valor * (case m.tipo_movimentacao_id when 1 then 1 else -1 end))
over (partition by c.id order by m.id) as acc
from planejamento p
join data_frame d on d.categoria_id = p.categoria_id
where p.inicial <= :inicio
and p.final >= :fim
join categoria c on p.categoria_id = c.id
left join data_frame m on c.id = m.categoria_id
where c.usuario_id = :usuario_id
`, { usuario_id, inicio, fim })
}

Expand Down
76 changes: 49 additions & 27 deletions web-app-vue/src/pages/dashboard/controles-dashboard.vue
Original file line number Diff line number Diff line change
Expand Up @@ -52,24 +52,27 @@
</v-chip>
</v-expansion-panel-text>
</v-expansion-panel>
<v-expansion-panel value="planejamentos">
<!-- situação dos planejamentos (linhas no plano com a REDLINE do planejamento)-->
<v-expansion-panel-title>Planejamentos</v-expansion-panel-title>
<v-expansion-panel-text>
<div v-for="(planejamento, i) in planejamentos" :key="i">
<VueUiXy :config="lineChartConfig" :dataset="planejamento" />
</div>
</v-expansion-panel-text>
</v-expansion-panel>
<v-expansion-panel value="despesas">
<!-- despesas por conta (pizza) -->
<!-- despesas por categoria (pizza) -->
<v-expansion-panel-title>Detalhes Despesas</v-expansion-panel-title>
<v-expansion-panel-text>
<h3>Despesas por conta</h3>
<VueUiDonut
:config="donutConfig"
:dataset="despesaConta"
></VueUiDonut>
<VueUiDonut :config="donutConfig" :dataset="despesaConta"></VueUiDonut>
<br />
<v-divider></v-divider>
<br />
<h3>Despesas por categoria</h3>
<VueUiDonut
:config="donutConfig"
:dataset="despesaCategoria"
></VueUiDonut>
<VueUiDonut :config="donutConfig" :dataset="despesaCategoria"></VueUiDonut>
</v-expansion-panel-text>
</v-expansion-panel>
<v-expansion-panel value="receitas">
Expand All @@ -78,18 +81,12 @@
<v-expansion-panel-title>Detalhes Receitas</v-expansion-panel-title>
<v-expansion-panel-text>
<h3>Receitas por conta</h3>
<VueUiDonut
:config="donutConfig"
:dataset="receitaConta"
></VueUiDonut>
<VueUiDonut :config="donutConfig" :dataset="receitaConta"></VueUiDonut>
<br />
<v-divider></v-divider>
<br />
<h3>Receitas por categoria</h3>
<VueUiDonut
:config="donutConfig"
:dataset="receitaCategoria"
></VueUiDonut>
<VueUiDonut :config="donutConfig" :dataset="receitaCategoria"></VueUiDonut>
</v-expansion-panel-text>
</v-expansion-panel>
<v-expansion-panel value="composicao">
Expand Down Expand Up @@ -161,11 +158,6 @@
/>
</v-expansion-panel-text>
</v-expansion-panel>
<v-expansion-panel value="planejamentos">
<!-- situação dos planejamentos (linhas no plano com a REDLINE do planejamento)-->
<v-expansion-panel-title>Planejamentos</v-expansion-panel-title>
<v-expansion-panel-text></v-expansion-panel-text>
</v-expansion-panel>
</v-expansion-panels>
</v-row>
</v-container>
Expand Down Expand Up @@ -289,7 +281,7 @@ const composicaoReceitas = computed(() => {
const limites = computed(() => {
const contas = {}
dashboardState.store.dashboard?.limites?.forEach(limite => {
dashboardState.store.dashboard?.limites?.forEach((limite) => {
if (!contas[limite.descricao]) {
contas[limite.descricao] = [
{
Expand All @@ -298,8 +290,8 @@ const limites = computed(() => {
color: 'red',
type: 'line',
series: dashboardState.store.dashboard?.limites
?.filter(l => l.descricao === limite.descricao)
.map(l => l.redline)
?.filter((l) => l.descricao === limite.descricao)
.map((l) => -l.redline)
},
{
name: limite.descricao,
Expand All @@ -312,8 +304,8 @@ const limites = computed(() => {
smooth: true,
type: 'line',
series: dashboardState.store.dashboard?.limites
?.filter(l => l.descricao === limite.descricao)
.map(l => l.acc)
?.filter((l) => l.descricao === limite.descricao)
.map((l) => l.acc)
}
]
}
Expand All @@ -322,7 +314,37 @@ const limites = computed(() => {
})
const planejamentos = computed(() => {
return dashboardState.store.dashboard?.planejamentos
const planejamentos = {}
dashboardState.store.dashboard?.planejamentos?.forEach((planejamento) => {
if(!planejamentos[planejamento.descricao]) {
planejamentos[planejamento.descricao] = [
{
shape: 'square',
name: 'Limite',
color: 'red',
type: 'line',
series: dashboardState.store.dashboard?.planejamentos
?.filter((l) => l.descricao === planejamento.descricao)
.map((l) => l.redline)
},
{
name: planejamento.descricao,
useProgression: true,
color: planejamento.color,
dataLabels: true,
shape: 'circle',
useTag: 'none',
useArea: true,
smooth: true,
type: 'line',
series: dashboardState.store.dashboard?.planejamentos
?.filter((l) => l.descricao === planejamento.descricao)
.map((l) => -l.acc)
}
]
}
})
return Object.values(planejamentos)
})
watch([inicio, fim], async ([inicio, fim]) => {
Expand Down

0 comments on commit 234aea2

Please sign in to comment.