Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

[Dúvida] Meu site não carrega mais

Quando faço alguma ação de transação, depósito etc, para de funcionar

import { Transacao } from "../types/Transacao.js";
import { TipoTransacao } from "../types/TipoTransacao.js";
import { atualizarSaldo, getSaldo } from "./saldo-component.js";

const elementoFormulario = document.querySelector(".block-nova-transacao form") as HTMLFormElement;

elementoFormulario.addEventListener("submit", function (event) {
  event.preventDefault();
  if (!elementoFormulario.checkValidity()) {
    alert("Preencha todos os campos da transação!");
    return;
  }


  const inputTipoTransacao = elementoFormulario.querySelector("#tipoTransacao") as HTMLSelectElement;
  const inputValor = elementoFormulario.querySelector("#valor") as HTMLInputElement;
  const inputData = elementoFormulario.querySelector("#data") as HTMLInputElement;

  let tipoTransacao: TipoTransacao = inputTipoTransacao.value as TipoTransacao;
  let valor: number = inputValor.valueAsNumber;
  let data: Date = new Date(inputData.value);
  let saldo: number = getSaldo();


  if (tipoTransacao == "Depósito") {
    saldo += valor;
  } else if (tipoTransacao == TipoTransacao.TRANSFERENCIA || tipoTransacao == TipoTransacao.PAGAMENTO_BOLETO) {
    saldo -= valor;
  } else {
    alert("Tipo de Transação é inválida!");
    return;
  }

  atualizarSaldo(saldo);

  const novaTransacao: Transacao = {
    tipoTransacao: tipoTransacao,
    valor: valor,
    data: data,
  };

  console.log(novaTransacao);
  elementoFormulario.reset();
});
import { formatarData, formatarMoeda } from "../utils/fomatters.js";
import { FormatoData } from "../types/FormatoData.js";


let saldo:number = 3000;

const elementoSaldo = document.querySelector(".saldo-valor .valor") as HTMLElement;
const elementoDataAcesso = document.querySelector(".block-saldo time") as HTMLElement;

if (!elementoDataAcesso != null) {
    const dataAcesso: Date = new Date();
    elementoDataAcesso.textContent = formatarData(dataAcesso, FormatoData.DIA_SEMANA_DIA_MES_ANO);
}

export function getSaldo(): number {
  return saldo;
}

atualizarSaldo(saldo);

export function atualizarSaldo(novoSaldo: number): void {
  saldo = novoSaldo;
  if (elementoSaldo != null) {
    elementoSaldo.textContent = formatarMoeda(saldo);
  }
}


import { FormatoData } from "../types/FormatoData";

export function formatarMoeda (valor: number) : string {
    return valor.toLocaleString("pt-br", {style: "currency", currency: "BRL"})
}

export function formatarData (data: Date, formato: FormatoData = FormatoData.PADRAO) : string {
    if (formato === FormatoData.DIA_SEMANA_DIA_MES_ANO) {
    return data.toLocaleString("pt-br", {
        weekday: "long",
        day: "2-digit",
        month: "2-digit",
        year: "numeric"

    });

} else if (formato === FormatoData.DIA_MES ) {
    return data.toLocaleDateString("pt-br" , {day: "2-digit", month: "2-digit"})
}

return data.toLocaleDateString("pt-br");

}
import "./components/nova-transacao-component";
import "./components/saldo-component";
3 respostas

Oiêê Anny, tudo bem contigo? Espero que sim!

Vamos verificar algumas coisas no seu código que podem estar causando esse problema:

  1. Atualização de Saldo: Você está corretamente atualizando o saldo baseado no tipo de transação, mas precisamos garantir que a função atualizarSaldo() esteja sendo chamada corretamente após cada transação. Pelo seu código, parece que isso está sendo feito, mas vale a pena revisar se as condições para cada tipo de transação estão corretas e se o saldo está sendo atualizado adequadamente.

  2. Renderização do Saldo: No seu módulo saldo-component, você tem uma função atualizarSaldo() que atualiza o texto do elemento que mostra o saldo. Certifique-se de que o elemento HTML .saldo-valor .valor realmente existe no seu HTML e que está acessível quando você tenta atualizar seu conteúdo.

  3. Validação de Formulário: Você está verificando se o formulário é válido com elementoFormulario.checkValidity(). Certifique-se de que todos os campos do formulário estão sendo preenchidos corretamente antes de submeter o formulário, pois campos não preenchidos ou preenchidos incorretamente podem impedir a submissão e atualização correta.

  4. Erros no Console: Sempre que algo não funciona como esperado, é uma boa prática verificar o console do navegador para quaisquer mensagens de erro. Isso pode fornecer pistas sobre o que está falhando.

  5. Fluxo de Dados: Como você está usando módulos, certifique-se de que todas as importações estão corretas e que as funções estão sendo importadas e usadas corretamente em cada módulo.

Aqui está um exemplo de como você pode revisar a chamada e atualização do saldo:

if (tipoTransacao == "Depósito") {
    saldo += valor;
} else if (tipoTransacao == TipoTransacao.TRANSFERENCIA || tipoTransacao == TipoTransacao.PAGAMENTO_BOLETO) {
    saldo -= valor;
} else {
    alert("Tipo de Transação é inválida!");
    return;
}

// Após ajustar o saldo, atualizamos na interface
atualizarSaldo(saldo);

Certifique-se de que o elemento do saldo está sendo selecionado corretamente e que não há erros de digitação ou lógica que possam estar causando o problema. Além disso, verifique se as funções de formatação estão retornando os valores esperados.

Espero ter ajudado!

Caso tenha dúvidas, fico à disposição.

Abraços e bons estudos!

solução!

Boa noite. Tive um erro parecido, mas não o mesmo que o seu. Fui no arquivo "main.ts" e tirei um ponto a mais que tinha colocado.

O seu está faltando o ".js =

import "./components/nova-transacao-component.js";
import "./components/saldo-component.js";

Era exatamente isso, muito obrigada Vitor!! ^^