Jump to content
ghlevin

Site responsivo - Problemas com SELECT e INPUT

Recommended Posts

Estou fazendo modificações no site de um cliente, tornando-o responsivo. Tive que fazer várias mudanças de layout que me foram enviadas por um fornecedor e, por causa dessas mudanças, algumas funções Javascript e PHP que eu tinha não funcionam no layout novo.

Em uma delas, eu tenho dois filtros de data e local (unidade ou empresa). O de data é uma INPUT e o de unidades é um SELECT. Vou colocar o código da view abaixo:

<form class="rd-mailform text-left" data-form-output="form-output-global" data-form-type="contact" method="post" novalidate="novalidate">
        <p class="mobile-hide">Selecione abaixo os par&acirc;metros para visualiza&ccedil;&atilde;o.&nbsp;Se desejar salvar,&nbsp;enviar por e-mail ou imprimir,&nbsp;clique em&nbsp;'Gerar PDF'&nbsp;ou&nbsp;'Gerar Excel'.</p>
        <!--<div class="range range-xs-center" style="margin: 0px !important;">-->
          <div class="cell-sm-6">
            <div class="form-group form-group-label-outside">
              <label class="form-label form-label-outside text-dark rd-input-label" for="data-relatorio">Data</label>
              <input class="form-control form-control-last-child" id="data-relatorio" type="text" name="first-name" >
            </div>
          </div>
          <div class="cell-sm-6 offset-top-20 offset-sm-top-0">
            <div class="form-group form-group-label-outside">
              <label class="form-label form-label-outside text-dark rd-input-label" for="comboUnidades">
                Unidade
              </label>
              <select id="comboUnidades" class="form-control select2-multiple" data-minimum-results-for-search="Infinity">
              </select>
            </div>
          </div>
          <div style="width: 100%">
            <div style="position: relative; float: left; padding: 5px" onclick="montaPDF()"><a class="btn btn-ellipse btn-java" href="#">GERAR PDF</a></div>
            <div style="position: relative; float: left; padding: 5px" onclick="montaExcel()" class="mobile-hide"><a class="btn btn-ellipse btn-java" href="#">GERAR EXCEL</a></div>
          </div>

      </form>

Abaixo parte do código do arquivo JS que mostra como eram carregados esses filtros. O de data usa originalmente uma função datepicker, que não funciona no layout atual. E o das unidades usa uma função AJAX pra colocar todas as opções que vem do banco MySQL do site dentro do select comboUnidades:

$(document).ready(function(){
showLoading();

var d = new Date();
d.setDate(d.getDate() - 1);
$('#data-relatorio').datepicker({ 
    dateFormat: "dd/mm/yy",
    maxDate: d
});

$("#data-relatorio").datepicker('setDate',d);

var param = location.href.split("?")[1];

if(typeof param != "undefined" ) {
    var unidade = param.split('=')[1];
}

$.ajax({
      async: false,
      url: '[:raiz]acompanhamentoDiario/getUnidades',
      dataType: 'json',       
      success: function(data) {
          if (data.length > 0){
              var retorno = "";
              for(var i = 0;i < data.length; i++){
                  retorno += "<option value='"+data[i]['id']+"'>"+data[i]['newnome']+"</option>";
              }
              $('#comboUnidades').html(retorno);

              if(typeof param != "undefined" ) {
                  $('#comboUnidades option[value='+unidade+']').attr('selected', 'selected');
                  $('#comboUnidades').trigger('change');
              }
          } else {

          }
      }
});
$('#data-relatorio').change(function(){
    montaTabela();
});

$('#comboUnidades').change(function(){
    montaTabela();
});

var d = new Date();

$('#divTabela').hide();

montaTabela();

hideLoading();

});

Essa função chamada no AJAX se encontra num arquivo de Controller:

public function getUnidades() {
    $acompanhamento = new AcompanhamentoDiario();
    $retorno = $acompanhamento->getUnidadesUsuario();
    echo json_encode($retorno);
}

Por sua vez, essa função do controller chama uma função em PHP que se encontra num arquivo da minha pasta Model do site. Ele traz as unidades do select dependendo do login do usuário:

public function getUnidadesUsuario() {        
    $idUser = Login::retornaIdUser();   
    $perfilAcesso =  Login::retornaPerfilAcesso();

    if(($perfilAcesso == 1) || ($perfilAcesso == 6)) { // Colocado o perfil 6 do Usuário de Demonstração
        /* se perfil de usuairo = 1*/
        $sql = "SELECT u.*,concat(e.sigla,' - ',u.nome) as newnome";
        $sql .= " FROM unidade u INNER JOIN cidade c ON u.CIDADE = c.id INNER JOIN estado e ON u.ESTADO = e.id";
        $sql .= " join usuario_unidade uu on (uu.id_unidade = u.id)";
        $sql .= " WHERE u.ind_unidade_ativa = 1 AND u.ind_predio_novo = 0";
        $sql .= " and uu.id_usuario = $idUser and lower(uu.ind_tipo_investidor) != 'c' ORDER BY newnome ASC";
    } elseif($perfilAcesso == 2) {
        /* se perfil de usuairo = 2*/
        $sql = "SELECT u.*,concat(e.sigla,' - ',u.nome) as newnome";
        $sql .= " FROM unidade u INNER JOIN cidade c ON u.CIDADE = c.id INNER JOIN estado e ON u.ESTADO = e.id";
        $sql .= " join administrador adm on (adm.id_unidade = u.id)";
        $sql .= " WHERE u.ind_predio_novo = 0";
        $sql .= " and adm.id_usuario = $idUser and adm.id_usuario NOT IN (3124,4378)";
        $sql .= " ORDER BY newnome ASC";
    } else {
        /* se perfil de usuario = 3*/
        $sql = "SELECT u.*,concat(e.sigla,' - ',u.nome) as newnome";
        $sql .= " FROM unidade u INNER JOIN cidade c ON u.CIDADE = c.id INNER JOIN estado e ON u.ESTADO = e.id";
        $sql .= " WHERE u.ind_predio_novo = 0 ORDER BY newnome ASC";
    }

    $res = parent::executaQuery($sql);

    return $res;
}

A função montaTabela(), por ora, ainda não quero modificar, por isso não vou mostrar como ela é. Ela é executada na página dependendo da mudança dos filtros. Por ora, eu só queria saber como "popular" o select comboUnidades e como funcionar o filtro de data data-relatorio de forma semelhante ao datePicker.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By FabianoSouza
      Pessoal, qual a forma correta de enviar emoji por AJAX ao meu backend?
       
      Tem que usar:
      encodeURIComponent(minhaString) ??
      Quando envio uma string que tem texto junto com emoji,  meu código não funciona.
      Quando envio apenas o emoji, vai um código meio louco para o backend.
       
      Qual a maneira correta de tratar isso?
      Seria separar texto de emoji para enviar, e no backend juntar tudo novamente para poder gravar no banco?
       
      Preciso entender conceitualmente qual é a melhor forma de tratar essa situação, depois partir para a programação.
       
      Já fiz os testes do meu banckend: grava emoji com texto direitinho.
      O problema está realmente no meu frontend. Preciso saber como devo fazer o POST dos dados.
       
      Valew!!
       
       
    • By msantino
      Bom dia.
       
      Estou desenvolvendo uma aplicação que vai acessar e gravar dados via webservice dentro do nosso crm... mas estou com um problema que quando tento fazer o acesso mostra a seguinte mensagem de erro:
       
      Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing Schema: can't import schema from 'http://dsksp015.phonoway.com.br:8051/wsDataServer/mex?xsd=xsd0' in /home/httpd/html/phonoweb.com.br/public_html/carrinhobitrix_busca/teste_soap.php:113 Stack trace: #0 /home/httpd/html/phonoweb.com.br/public_html/carrinhobitrix_busca/teste_soap.php(113): SoapClient->SoapClient('http://187.93.2...') #1 {main} thrown in /home/httpd/html/phonoweb.com.br/public_html/carrinhobitrix_busca/teste_soap.php on line 113
       
      Não sei se faz alguma diferença, mas nosso CRM é o TOTVS RM
       
      Grato.
    • By mamotinho
      Boa noite! estou com dúvidas em relação a array, eu tenho uma procedure no SQL Server e essa procedure exibe uma lista de resultados, eu gostaria de pega o valor desses resultados e lista em um array para eu comparar com outro valor que vai ser selecionado em um select , tipo abaixo:
       
      $arraySelect = $db->prepare(exec WebSite.dbo.server_value_product 2);
      $arraySelect->execute();
      $arrayExemple = $arraySelect->fetchAll();

      procedure_list = array($arrayExemple);
       
      !in_array($valorSelect, $procedure_list){
         echo 'O Valor selecionado não existe nos resultados da procedure';
      }
       
       
      alguem sabe como posso listar o resultado da procedure em array. e sabe se o valor que procuro está entre os resultados da array.
    • By asacap1000
      Galera já não sei mais onde procurar, estou configurando o processo de login com certificação digital porém não consigo ler o retorno. No site da Certisign explica em java e .Net mas utilizo em minha aplicação da intranet tudo em PHP como eu teria que fazer. Segue exemplo que eles fornecem em .Net
       
      <form action="https://autenticador.certisign.com.br/CertisignLogin/certificado/login" method="get"> <input type="hidden" value="209" id="id" name="id"> <input type="hidden" value="CHAVE CRIPTOGRAFICA INICIAL" id="nome" name="nome"> <input type="hidden" value="http://www.seusite.com.br/suaAplicacao/retorno" id="retorno" name="retorno"> <div> <input type="image" src="images/ico-certisign_30x30.png" alt="Submit" id="btnLoginCertisign"> </div> </form> O de cima envia até aí tudo bem
       
      Abaixo o retorno que é o que não consigo fazer em PHP
       
      string retorno = Request["cb"]; string encryptionKey = "<conteúdo da chave criptográfica descarregada na etapa 2>"; retorno = CryptoLogin.Instance.DecryptText(retorno,encryptionKey);</conteúdo> A variável retorno deverá mostrar as informações como o exemplo aaixo.
       
      CertificadoBean: { emissor: Certisign Autoridade Certificadora TESTE, nome: "PROPRIETARIO DO CERTIFICADO DE TESTE", cpf: "001.002.003-44", cnpj: "", OAB: "", validade: "2015-05-27 20:59:59", emissao: "2014-05-27 21:00:00", email: "proprietario.teste@certisign.com.br", certificadoBase64: "MIIFmDCCBICgAwI...... BAQUFADCCARAx" }  
    • By Luis Fernando R. Valle
      Estou desenvolvendo um site de vinhetas, mas estou com o seguinte problema. Quando o cliente clica em um áudio ele toca normalmente, mas quando clica em um segundo com o primeiro ainda em execução, ficam os dois áudios executando ao mesmo tempo no sit.
      Gostaria que um executasse por vez.
       
      Lembrando que os áudios estão inseridos separadamente.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.