Criando a página de Novo pedido

Neste vídeo será criado uma página que permite que o usuário crie novos pedidos através de um formulário. Este formulário realiza uma requisição POST para a API de pedidos

Passos de execução

  • Criar um canal "Novo Pedido" com página "Novo pedido"
  • Instanciar interface do serviço "Script" no page holder "main"
  • Criar estilo "Novo pedido" com o seguinte HTML:
<section class="main__container container">
  <h1 class="main__title">Novo pedido</h1>
  <form class="form" id="form-novo-pedido">
    <div class="form-group">
      <label class="form__input-container">
        <input class="form__input" id="nome-pedido" minlength="3" name="nome-pedido" placeholder="Seu nome" type="text" />
        <span class="form__label">Nome do pedido</span>
      </label>
    </div>
    <div class="form-group">
      <label class="form__textarea-container">
        <textarea class="form__textarea" cols="30" id="info-adicional" minlength="3" name="info-adicional" placeholder="Digite as informações adicionais do pedido" rows="10"></textarea>
        <span class="form__label">Informações adicionais</span>
      </label>
    </div>
    <div class="form-group">
      <label class="form__textarea-container">
        <textarea class="form__textarea" cols="30" id="detalhes-pedido" minlength="3" name="detalhes-pedido" placeholder="Digite os detalhes do pedido" rows="10"></textarea>
        <span class="form__label">Detalhes do pedido</span>
      </label>
    </div>
    <button class="form__submit">Enviar</button>
  </form>
</section>
<script>
  const form = document.getElementById('form-novo-pedido');
  form.addEventListener('submit', function(event) {
    // Evitar o comportamento padrão do envio do formulário
    event.preventDefault();
    var headers = new Headers();
    headers.append("Content-Type", "application/json");
    var formData = JSON.stringify({
      "nome_pedido": document.getElementById('nome-pedido').value,
      "detalhes": document.getElementById('detalhes-pedido').value,
      "numero_pedido": gerarNumeroPedidoFake(),
      "info_adicional": document.getElementById('info-adicional').value
    });
    var requestOptions = {
      method: 'POST',
      headers: headers,
      body: formData
    };
    fetch("${environment.properties['api-url'][0]}/pedidos", requestOptions).then(response => response.json()) // Converte a resposta em um objeto JSON
      .then(data => {
        // Trata a resposta da solicitação POST
        console.log(data);
        alert('Pedido criado com sucesso!');
      }).catch(error => {
        console.error(error);
        alert('Ocorreu um erro ao criar o pedido');
      });
  });

  function gerarNumeroPedidoFake() {
    const numero = Math.floor(Math.random() * 100000000);
    return ('00000000' + numero).slice(-8);
  }
</script>
  • Criar novo pedido
    • Nome do pedido: Solicitação de novo teclado
    • Informações adicionais: Sem fio
    • Detalhes:
Pedido de Teclado Logitech K400

Detalhes do Produto:
Produto: Teclado Logitech K400
Quantidade: 1
Cor: Preta
Outras Especificações: Sem fio