Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Vanessa Gonçalves Carvalho

recuperar foco para bipar rotulo

Recommended Posts

Projeto ASP.NET MVC 4 com ANGUJAR JS.
Tenho uma missão que estou tentando descobrir primeiro pelo JavaScript/JQuery, mas o problema envolve a camada do MVC também. 
 
É a seguinte: 
1) tenho uma View que possui uma caixa de texto que será preenchida com o "bipe" (pistolado) de um código de barras (com o número de um recibo) executado pelo usuário. Por este motivo, a caixa de texto deve ter sempre o "foco", por causa da "bipagem". 
2) No evento "enter" (View) desta "caixa de texto" acionamos uma function no Angular que chama uma ActionResult na controller (verifica no banco de dados se o recibo pistolado é válido) e retorna um boolean via JSON para o Angular. 
4) Na sequencia, se for verdadeiro, executa o commit deste form via Angular (a action deste form, chama outra controller e ActionResult que será exibida na sequencia). Caso seja false, exibe uma mensagem na tela do próprio form (via Angular).
3) No item 4, quando é true e chama a 2ª View e Controller, executa na sequencia, a impressão do html (formulário preenchido com dados do banco de dados), fecha este 2º form e retorna para a 1ª View com o foco na caixa de texto.
Toda essa parte estava funcionando! 
 
O desafio que recebi: 
- O usuário deste site é um operário de uma fábrica e "bipa" os códigos de barra em alta velocidade, sem olhar para a tela. Em alguns momentos em que o sistema está processando os dados, ou quando ocorre um erro na impressora, a caixa de texto perde o foco e a bipagem é perdida. 
 
Consequência: 
A minha missão é resolver este problema de bipagem/foco para que o operário possa executar esta impressão em alta velocidade, como é realizado atualmente em outro sistema desktop que será substituído.
 
Teria alguma dica de como eu poderia realizar esta missão? Desde já muito obrigada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sei que esta fora do seu controle, mas o sistema web nunca terá a mesma performance do sistema desktop. 

 

Sobre o seu problema, a solucão me parece via javascript (jquery ou angular) setar o foco no controle toda vez que o form for carregado. O fato do campo perder o foco enquanto o sistema esta processando, me parece normal, o que tem que garantir é  que o foco volte assim que terminar de processar (usando js).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma outra opção também seria, ao invés de enviar todas as vezes que o usuário bipar o código, criar uma fila (ou pelo menos dar a oportunidade para o usuário entrar em um modo de fila).

 

Você criaria um array vazio que teria os códigos, a cada bipe, esse array era acrescido de mais um código (via angular), isso é bastante rápido e o two-way data binding dele rodando no client e não no servidor faz com que ele fique quase em tempo real. Então você guarda toda a sequencia de códigos informados na lista e processa um por vez quando o usuário realizar uma ação (por exemplo, clicar no botão "Enviar")

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, KhaosDoctor disse:

Uma outra opção também seria, ao invés de enviar todas as vezes que o usuário bipar o código, criar uma fila (ou pelo menos dar a oportunidade para o usuário entrar em um modo de fila).

 

Você criaria um array vazio que teria os códigos, a cada bipe, esse array era acrescido de mais um código (via angular), isso é bastante rápido e o two-way data binding dele rodando no client e não no servidor faz com que ele fique quase em tempo real. Então você guarda toda a sequencia de códigos informados na lista e processa um por vez quando o usuário realizar uma ação (por exemplo, clicar no botão "Enviar")

Essa ideia é bem rápido sim, mas tem um problema: Imagine que passei 50 itens, e algum item tenha dado algum erro (retornado false, como Vanessa disse que é possível), como saber qual item foi?

 

Se por acaso retornar false, essa mensagem bloqueia a tela, ou é apenas uma mensagem numa label por exemplo?

Poderia bloquear a tela se retornar false, e esperar uma ação do usuário (um clique num botão 'ok', tipo um 'alert'), isso faria o bip parar de bipar, e ele olharia a tela e saberia que deu algo errado.

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, itlpps disse:

Essa ideia é bem rápido sim, mas tem um problema: Imagine que passei 50 itens, e algum item tenha dado algum erro (retornado false, como Vanessa disse que é possível), como saber qual item foi?

 

Se por acaso retornar false, essa mensagem bloqueia a tela, ou é apenas uma mensagem numa label por exemplo?

Poderia bloquear a tela se retornar false, e esperar uma ação do usuário (um clique num botão 'ok', tipo um 'alert'), isso faria o bip parar de bipar, e ele olharia a tela e saberia que deu algo errado.

 

São boas dúvidas, mas ai pode ser o seguinte, ele gravaria só o código, quando usuário enviasse, o sistema iria fazer as checagens item a item. Se um retornasse false, o usuário e o sistema saberiam qual é o item com erro, talvez através de um resumo no final do que foi feito como Realizado x Erros e etc

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Pessoal, pergunta bem simples. Abaixo tenho o seguinte código:
       
      <script>
      function alerta()
      {
        if (window.confirm("Você realmente quer sair?")) {
          window.open("sair.html");
      }
      }
      </script>
       
      Funciona perfeitamente, só que está abrindo em outra janela e quero que abra na mesma janela.
       
      Alguém pode me ajudar?
    • Por Giovanird
      Olá a todos!
      Tenho uma pagina que possui uma DIV onde coloquei uma pagina PHP.
      Uso a função setInterval para atualizar a pagina inclusa dentro da DIV.
      O problema é que ao acessar o site , a DIV só me mostra a pagina inclusa somente quando completo o primeiro minuto.
      Preciso que a pagina inclusa já inicie carregada
       
      Meu código JavaScript e a DIV com a pagina PHP
       
      <script> function atualiza(){ var url = 'direita.php'; $.get(url, function(dataReturn) { $('#direita').html(dataReturn); }); } setInterval("atualiza()",60000); </script> <div> <span id="direita"></span> </div>  
    • Por Thiago Duarte
      Oi, gostaria de arrastar imagem e ao soltar formar bloco html, meu bloco de html ficaria com nome, content-1.html, content-2.html, etc
       
      Alguem pode me ajudar?
    • Por belann
      Olá!
       
      Estou fazendo o upload de arquivos com fetch dessa forma
      fetch(url, {
              method: 'POST',
              headers: {'Content-Type': 'multipart/form-data',},
              body: formData 
          }).catch((error) => (console.log("Problemas com o Upload"), error));
       
      estou usando input type=file
      e criando uma const formData = new FormData(); 
      mas não faz e não dá nenhum erro.
      estou fazendo o upload com a url="http://localhost/dashboard/dados".
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.