From 7bbaef14342c3d22bb2c3bdba03d6331e7a09c47 Mon Sep 17 00:00:00 2001 From: Gustavo Soares Date: Mon, 29 Sep 2025 16:23:38 -0300 Subject: [PATCH 1/9] feat: ajustando variavel composicao --- frontend/src/router/variaveis.js | 21 +++++++++++++------ .../src/views/variaveis/VariaveisLista.vue | 8 +++---- .../VariavelResumoIndex.vue} | 7 ++++--- .../partials}/VariaveisResumoSessao.vue | 4 +--- 4 files changed, 24 insertions(+), 16 deletions(-) rename frontend/src/views/variaveis/{VariaveisResumo.vue => VariavelResumo/VariavelResumoIndex.vue} (98%) rename frontend/src/views/variaveis/{partials/VariaveisResumo => VariavelResumo/partials}/VariaveisResumoSessao.vue (97%) diff --git a/frontend/src/router/variaveis.js b/frontend/src/router/variaveis.js index abc5d3edec..498abf737a 100644 --- a/frontend/src/router/variaveis.js +++ b/frontend/src/router/variaveis.js @@ -62,20 +62,29 @@ export default { }), meta: { rotasParaMenuSecundário: [ - // 'variaveisResumo', + 'variavel.composicao', ], rotasParaMigalhasDePão: ['variaveisListar'], }, children: [ { - name: 'variaveisResumo', + name: 'variavel.composicao', path: 'resumo', - component: () => import('@/views/variaveis/VariaveisResumo.vue'), + component: () => import('@/views/variaveis/VariavelResumo/VariavelResumoIndex.vue'), meta: { rotaDeEscape: 'variaveisListar', - rotasParaMigalhasDePão: ['variaveisListar'], - título: () => useVariaveisGlobaisStore()?.emFoco?.titulo || 'Resumo Variável', - títuloParaMenu: 'Resumo', + rotasParaMigalhasDePão: ['variaveisListar', 'variavel.composicao'], + título: 'Composição', + títuloParaMenu: 'Composição', + tituloParaMigalhaDePao: () => { + const { emFoco } = useVariaveisGlobaisStore(); + + if (!emFoco) { + return 'Composição da variável'; + } + + return `Variavel ${emFoco.titulo}`; + }, }, }, { diff --git a/frontend/src/views/variaveis/VariaveisLista.vue b/frontend/src/views/variaveis/VariaveisLista.vue index 32ee772646..d2ee5cc4ef 100644 --- a/frontend/src/views/variaveis/VariaveisLista.vue +++ b/frontend/src/views/variaveis/VariaveisLista.vue @@ -1,4 +1,7 @@ From 3074ca3e98ee6a976aa8aadbc9d7946b553d9098 Mon Sep 17 00:00:00 2001 From: Gustavo Soares Date: Mon, 6 Oct 2025 17:16:33 -0300 Subject: [PATCH 5/9] feat: criando grafico para variavel --- frontend/index.html | 248 ++++++++++--- .../GraficoVariaveisIndex.vue | 109 ++++++ .../partials/VariaveisSeries.vue | 325 ++++++++++++++++++ .../EvolucaoDeMetaIniciativaAtividade.vue | 20 +- frontend/src/helpers/obterAnoAtual.ts | 7 + frontend/src/stores/variaveis.store.js | 29 +- .../src/views/variaveis/VariavelResumo.vue | 17 +- 7 files changed, 694 insertions(+), 61 deletions(-) create mode 100644 frontend/src/components/graficos/GraficoVariaveis/GraficoVariaveisIndex.vue create mode 100644 frontend/src/components/graficos/GraficoVariaveis/partials/VariaveisSeries.vue create mode 100644 frontend/src/helpers/obterAnoAtual.ts diff --git a/frontend/index.html b/frontend/index.html index 82a8b5b4a8..81d46fae95 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -2,16 +2,18 @@ - - - - - - + + + + + SMAE - + - + + /> @@ -103,12 +105,7 @@ - + @@ -272,12 +269,12 @@ /> - + @@ -347,64 +344,159 @@ - - + + - - - - + + + + - - - + + + - + - - + + - - + + - - - - - - - - + + + + + + + + - + - + - - - - + + + + @@ -435,8 +527,20 @@ - - + + @@ -468,11 +572,51 @@ + d="M4.444 1.685a10 10 0 1 1 11.11 16.63 10 10 0 0 1-11.11-16.63Zm1.111 14.967a8 8 0 1 0 8.89-13.306 8 8 0 0 0-8.89 13.306Zm.605-5.621a3.983 3.983 0 0 1 1.85-4.498 3.984 3.984 0 0 1 4.82.647l1.861-1.075 1.011 1.75L13.84 8.93a3.985 3.985 0 0 1-1.85 4.497 3.984 3.984 0 0 1-4.82-.647l-1.862 1.075-1.01-1.749 1.862-1.075Zm2.87.675c.59.33 1.333.35 1.96-.011.626-.362.98-1.016.99-1.691l-2.95 1.702Zm1.94-3.452a1.979 1.979 0 0 0-2.95 1.703l2.95-1.703Z" + /> - + + + + + + + + + diff --git a/frontend/src/components/graficos/GraficoVariaveis/GraficoVariaveisIndex.vue b/frontend/src/components/graficos/GraficoVariaveis/GraficoVariaveisIndex.vue new file mode 100644 index 0000000000..35c7bbbfe9 --- /dev/null +++ b/frontend/src/components/graficos/GraficoVariaveis/GraficoVariaveisIndex.vue @@ -0,0 +1,109 @@ + + + diff --git a/frontend/src/components/graficos/GraficoVariaveis/partials/VariaveisSeries.vue b/frontend/src/components/graficos/GraficoVariaveis/partials/VariaveisSeries.vue new file mode 100644 index 0000000000..d8198ffe87 --- /dev/null +++ b/frontend/src/components/graficos/GraficoVariaveis/partials/VariaveisSeries.vue @@ -0,0 +1,325 @@ + + + + + +1\ diff --git a/frontend/src/components/metas/EvolucaoDeMetaIniciativaAtividade.vue b/frontend/src/components/metas/EvolucaoDeMetaIniciativaAtividade.vue index 039b1b487d..cec95b68ad 100644 --- a/frontend/src/components/metas/EvolucaoDeMetaIniciativaAtividade.vue +++ b/frontend/src/components/metas/EvolucaoDeMetaIniciativaAtividade.vue @@ -48,6 +48,7 @@ fill="currentColor" /> +

{{ variavel.codigo }} - {{ variavel.titulo }}

@@ -72,7 +73,8 @@ 'CadastroMeta.administrador_no_pdm', 'CadastroMetaPS.administrador_no_pdm', 'CadastroMetaPDM.administrador_no_pdm' - ])" + ]) + " class="f0 dropbtn right" > + + props.variavel.id, () => { +watch(() => props.variavel.id, async () => { if (props.variavel.id) { - haChamadasPendentes.value = true; - VariaveisStore.getValores(props.variavel.id, { leitura: true }) - .then(() => { - haChamadasPendentes.value = false; - }); + try { + haChamadasPendentes.value = true; + + await VariaveisStore.getValores(props.variavel.id, { leitura: true }); + } finally { + haChamadasPendentes.value = false; + } } }, { immediate: true }); diff --git a/frontend/src/helpers/obterAnoAtual.ts b/frontend/src/helpers/obterAnoAtual.ts new file mode 100644 index 0000000000..f333b646b0 --- /dev/null +++ b/frontend/src/helpers/obterAnoAtual.ts @@ -0,0 +1,7 @@ +import { getYear } from 'date-fns'; + +function obterAnoAtual() { + return getYear(new Date()).toString(); +} + +export default obterAnoAtual; diff --git a/frontend/src/stores/variaveis.store.js b/frontend/src/stores/variaveis.store.js index 9e19c7433a..0f18125087 100644 --- a/frontend/src/stores/variaveis.store.js +++ b/frontend/src/stores/variaveis.store.js @@ -1,5 +1,5 @@ -import dateToField from '@/helpers/dateToField'; import { defineStore } from 'pinia'; +import dateToField from '@/helpers/dateToField'; const baseUrl = `${import.meta.env.VITE_API_URL}`; @@ -232,6 +232,33 @@ export const useVariaveisStore = defineStore('Variaveis', { this.sériesDaVariávelComposta = { error }; } }, + + async buscarAnalise(variavelId, dataValor) { + try { + switch (this.route.meta.entidadeMãe) { + case 'planoSetorial': + case 'programaDeMetas': + return await this.requestS.get(`${baseUrl}/variavel-analise-qualitativa`, { + consulta_historica: true, + data_referencia: dataValor, + variavel_id: variavelId, + }); + + default: + return await this.requestS.get( + `${baseUrl}/mf/metas/variaveis/analise-qualitativa`, + { + data_valor: dataValor, + variavel_id: variavelId, + }, + ); + } + } catch (erro) { + console.error(erro); + + throw erro; + } + }, }, getters: { valoresEmFoco({ Valores }) { diff --git a/frontend/src/views/variaveis/VariavelResumo.vue b/frontend/src/views/variaveis/VariavelResumo.vue index 3efa4db00b..4d532aa34f 100644 --- a/frontend/src/views/variaveis/VariavelResumo.vue +++ b/frontend/src/views/variaveis/VariavelResumo.vue @@ -1,5 +1,20 @@ - + From 8b15392b1d16cd166d3eda8dac59c9185a45cbf9 Mon Sep 17 00:00:00 2001 From: Gustavo Soares Date: Tue, 7 Oct 2025 13:29:56 -0300 Subject: [PATCH 6/9] feat: adjusting review --- .../partials/VariaveisSeries.vue | 31 ++++++++++++------- frontend/src/router/variaveis.js | 6 ++-- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/frontend/src/components/graficos/GraficoVariaveis/partials/VariaveisSeries.vue b/frontend/src/components/graficos/GraficoVariaveis/partials/VariaveisSeries.vue index d8198ffe87..ce09fb2f93 100644 --- a/frontend/src/components/graficos/GraficoVariaveis/partials/VariaveisSeries.vue +++ b/frontend/src/components/graficos/GraficoVariaveis/partials/VariaveisSeries.vue @@ -135,7 +135,7 @@ const colunas = computed(() => { const serieSelecionada = computed(() => { const dadosSerieSelecionada = linhasSelecionadas.value; - if (!dadosSerieSelecionada) { + if (!dadosSerieSelecionada?.length) { return []; } @@ -146,7 +146,7 @@ const serieSelecionada = computed(() => { 'Realizado Acumulado', ]; - const seriesSituacoes = dadosSerieSelecionada[0].series; + const seriesSituacoes = dadosSerieSelecionada[0].series ?? []; const serieFormatada = seriesSituacoes.reduce((agrupador, serie, serieIndex) => { if (!agrupador[serieIndex]) { @@ -169,18 +169,25 @@ const serieSelecionada = computed(() => { return serieFormatada; }); -watch(() => agrupadores.value, () => { - const anoAtual = obterAnoAtual(); - - const anoExiste = agrupadores.value.find((item) => item === anoAtual); - if (anoExiste) { - serieAgrupadaSelecionada.value = anoExiste; - } +watch( + () => agrupadores.value, + (lista) => { + if (!lista?.length) { + serieAgrupadaSelecionada.value = undefined; + return; + } - const ultimoPeriodo = agrupadores.value[0]; + const anoAtual = obterAnoAtual(); + const anoExiste = lista.find((item) => item === anoAtual); + if (anoExiste) { + serieAgrupadaSelecionada.value = anoExiste; + return; + } - serieAgrupadaSelecionada.value = ultimoPeriodo; -}, { immediate: true, deep: true }); + serieAgrupadaSelecionada.value = lista[0] || undefined; + }, + { immediate: true }, +); diff --git a/frontend/src/router/variaveis.js b/frontend/src/router/variaveis.js index ffc4f2f7f3..72dc83e75a 100644 --- a/frontend/src/router/variaveis.js +++ b/frontend/src/router/variaveis.js @@ -82,7 +82,7 @@ export default { return 'Resumo da variável'; } - return `Variavel ${emFoco.titulo}`; + return `Variável ${emFoco.titulo}`; }, tituloParaMigalhaDePao: () => { const { emFoco } = useVariaveisGlobaisStore(); @@ -91,7 +91,7 @@ export default { return 'Resumo da variável'; } - return `Variavel ${emFoco.titulo}`; + return `Variável ${emFoco.titulo}`; }, }, }, @@ -113,7 +113,7 @@ export default { return 'Composição da variável'; } - return `Variavel ${emFoco.titulo}`; + return `Variável ${emFoco.titulo}`; }, }, }, From 2bb495bce28a664fdbf1d411c01298c83f57839a Mon Sep 17 00:00:00 2001 From: Gustavo Soares Date: Tue, 7 Oct 2025 13:38:38 -0300 Subject: [PATCH 7/9] feat: corrigindo erro --- .../variaveis/VariavelComposicao/VariavelComposicaoIndex.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/views/variaveis/VariavelComposicao/VariavelComposicaoIndex.vue b/frontend/src/views/variaveis/VariavelComposicao/VariavelComposicaoIndex.vue index bbf5ee8599..feb36e0425 100644 --- a/frontend/src/views/variaveis/VariavelComposicao/VariavelComposicaoIndex.vue +++ b/frontend/src/views/variaveis/VariavelComposicao/VariavelComposicaoIndex.vue @@ -178,7 +178,7 @@ const assuntosComCategoriasMapeados = computed(() => const categoria = categoriasPorId.value[categoriaId]; - if (!amount[categoriaId] && categoria) { + if (!amount[categoriaId]) { amount[categoriaId] = { nome: categoria?.nome, id: categoriaId, From 973175f54f335cbaef8f1a00a2fc6c876a421409 Mon Sep 17 00:00:00 2001 From: Gustavo Soares Date: Tue, 7 Oct 2025 13:56:15 -0300 Subject: [PATCH 8/9] feat: adjusting review --- .../graficos/GraficoVariaveis/partials/VariaveisSeries.vue | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/graficos/GraficoVariaveis/partials/VariaveisSeries.vue b/frontend/src/components/graficos/GraficoVariaveis/partials/VariaveisSeries.vue index ce09fb2f93..fb84a72545 100644 --- a/frontend/src/components/graficos/GraficoVariaveis/partials/VariaveisSeries.vue +++ b/frontend/src/components/graficos/GraficoVariaveis/partials/VariaveisSeries.vue @@ -50,7 +50,7 @@ const variaveisStore = useVariaveisStore(); const serieAgrupadaSelecionada = ref(); const analiseVariavelSelecionada = ref(null); -async function objterDocumento(item: Periodo) { +async function obterDocumento(item: Periodo) { const { variavel } = props.informacaoVariavel; if (!item.temDocumento || !variavel) { return; @@ -84,7 +84,7 @@ const agrupadores = computed(() => { const linhas = computed(() => { const variavelLinhas = props.informacaoVariavel?.linhas; if (!variavelLinhas) { - return null; + return {}; } return variavelLinhas.reduce((agrupador, item) => { @@ -243,7 +243,7 @@ watch(
-
- +
+
+
- - - -
+ + - -
-
- - - - - - - - + + + + + + + + + + + + + - - - - - - - +
@@ -302,8 +306,8 @@ if (props.autoSubmit) { >