quarta-feira, 24 de outubro de 2012

Utilizando autocomplete no Maker

Bom pessoal, uma funcionalidade que muita gente utiliza hoje na web é a função de autocomplete que pode ser adicionada a uma caixa de texto comum. Neste exemplo estarei abordando mais uma vez a possibilidade de integração das aplicações Maker com bibliotecas externas. Hoje será a vez de integrar com o jQueryUI (conjunto de componentes construídos com base no jQuery) e meu exemplo está relacionado justamente a integração da funcionalidade de autocomplete com o MakerEdit (Componente caixa de texto utilizado no Maker).


Para começar é necessário que baixemos as bibliotecas do jQuery e jQuery UI, disponíveis nos links abaixo:

jQuery: http://code.jquery.com/jquery-1.8.2.js
jQuery UI : http://jqueryui.com/resources/download/jquery-ui-1.9.0.custom.zip

No meu exemplo coloquei os arquivos com extensão JS na raiz do meu contexto.

Dentro do Maker a integração será muito simples. Neste exemplo criei 2 fluxos, um no evento ao entrar do formulário para incluir as bibliotecas (Arquivos JS) no fomulário que estou utilizando e outro, vinculado ao um botão no formulário, para ativar o comportamento na caixa de texto.

O fluxo abaixo está vinculado ao evento "Ao entrar" do formulário. Nele tenho 2 processamentos, no primeiro eu incluo os arquivos JS no formulário e no segundo eu incluo o arquivo de folha de estilo. Para incluir qualquer biblioteca JS utilizo a função "Executar Javascript", disponível na API de funções do Maker, como parâmetro para essa função passei o seguinte trecho de código em JS:

webrun.include("jquery-1.8.2.js");
webrun.include("jquery-ui.js"); 

O outro fluxo utilizado nesse exemplo está vinculado ao botão "Adicionar autocomplete ao componente texto" (Fluxo abaixo), nesse fluxo tenho um único processamento utilizando a função "Executar javascript", que é responsável por vincular a funcionalidade de autocomplete ao componente MakerEdit. 

/*Obtenho a referencia do componente, WFRInput3 é o nome da caixa de texto interna do componente MakerEdit, esse nome é formado pela junção de "WFRInput" + Código do componente, no caso deste exemplo estarei obtendo a referência da caixa de texto WFRInput3*/

var comp = findNode(document, 'WFRInput3');

//Crio o array com os itens que poderão ser utilizados pelo autocomplete
        var availableTags = [
            "ActionScript",
            "AppleScript",
            "Asp",
            "BASIC",
            "C",
            "C++",
            "Clojure",
            "COBOL",
            "ColdFusion",
            "Erlang",
            "Fortran",
            "Groovy",
            "Haskell",
            "Java",
            "JavaScript",
            "Lisp",
            "Perl",
            "PHP",
            "Python",
            "Ruby",
            "Scala",
            "Scheme"
        ];

//Associo a funcionalidade de autocomplete ao componente
        jQuery(comp).autocomplete({
            //Na opção source pode ser passada uma URL também.
            source: availableTags, 
            appendTo: $("MakerEdit1").div
        });


Notem uma coisa importante quando utilizamos jQuery no Maker, não devemos utilizar o alias "$", pois o mesmo já esta em uso dentro do Maker, utilizo sempre "jQuery".

Muito simples integrar recursos de autocomplete no Maker não? Espero ter ajudado. O FRZ deste exemplo pode ser obtido no link abaixo. Abraços e até o próximo post!!



11 comentários:

  1. Posso colocar no maker.commons ??

    "No meu exemplo coloquei os arquivos com extensão JS na raiz do meu contexto."

    E onde devo colocar ???

    ResponderExcluir
    Respostas
    1. Sim.. pode ser colocado dentro do Maker.commons, considero até a melhor opção, visto que volta e meia é necessário republicar o contexto do webrun. Não existe um local especifico para colocar esses arquivos, vc poderá distribui-los dentro do contexto da sua aplicação de uma maneira que facilite a organização do seu trabalho. Abs.

      Excluir
  2. Como faríamos pra autocompletar com dados de uma consulta ao banco de dados? Obrigado!

    ResponderExcluir
    Respostas
    1. Marcos! estou preparando mais um post, irei mostrar como utilizar dados do autocomplete obtidos a partir de uma tabela do banco de dados. Abs.

      Excluir
    2. Marcos, veja esse link.. Acho que irá atender a sua necessidade: http://maker-geek.blogspot.com.br/2012/10/utilizando-autocomplete-no-maker-parte-2.html

      Excluir
  3. Bom dia André Neto!
    Estava implementando de acordo com o "tutorial" descrito no blog e também fiz a importação do arquivo de exemplo. Ambos apresentam problema de "Syntax Error" ao entrar no formulário que fiz de exemplo. Teria alguma idéia? Peguei a versão do jQuery igual a do blog 1.8.2. Obrigado!

    ResponderExcluir
    Respostas
    1. Nadson, pode mandar o fluxo que está utilizando para adicionar a funcionalidade de autocomplete. Mande também o código JavaScript que está utilizando como parâmetro do seu fluxo, é provável que o erro esteja nele.

      Excluir
  4. Enviando primeiro o js do autocomplete. No final do código, jQuery(comp).AutoComplete << Esse AutoComplete tem que ser o nome exato do fluxo(função), correto?

    Aqui vai o js:

    var comp = findNode(document, 'WFRInput600514');

    //Nesse caso as opcoes de autocomplete serão fixas
    var Tags =[
    "Naydson",
    "Raphael",
    "Endrigo",
    "Henrique"
    ];

    //Inserindo auto complete ao edit

    jQuery(comp).autocomplete({
    source: Tags,
    appendTo: jQuery("AutoComplete1").div
    });

    ResponderExcluir
    Respostas
    1. Cara o erro esta nesse trecho aqui:

      appendTo: jQuery("AutoComplete1").div

      Na verdade é:

      appendTo: $("AutoComplete1").div

      Lembro que "AutoComplete1", deve ser o valor da propriedade nome do seu componente no Maker.


      Excluir
  5. Link da importação jQuery e jQuery-ui:

    http://imageshack.us/photo/my-images/692/importacaojqueryjuj.jpg/

    ResponderExcluir
  6. O nome dos arquivos JS eu modifiquei.
    mas está exatamente assim se a imagem não ficou boa:

    webrun.include('jQuery182.js');
    webrun.include('jquery-ui.js');

    Os 2 arquivos estão na pasta Maker.Commons.
    Obrigado pela atenção!

    ResponderExcluir