Changes between Initial Version and Version 1 of WF/CaixadeSelecaoMultipla-Duplex


Ignore:
Timestamp:
07/24/07 15:01:40 (17 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • WF/CaixadeSelecaoMultipla-Duplex

    v1 v1  
     1== Plugin: wf_select_duplex_init == 
     2 '''Descrição:''' Insere código que referencia arquivos de javascript responsáveis pela funcionalidade. 
     3 
     4 
     5 
     6'''Parâmetros:''' <nenhum> 
     7 
     8 
     9 
     10'''Exemplo:''' 
     11 
     12{wf_select_duplex_init} 
     13 
     14 
     15 
     16 
     17 
     18Observação: antes de utilizar "wf_select_duplex" (seja uma ou mais vezes), deve-se fazer uma '''única''' chamada ao plugin "wf_select_duplex_init".  
     19 
     20 
     21 
     22---- 
     23 
     24== Plugin: wf_select_duplex == 
     25 
     26'''Descrição:''' Este plugin insere dois ''select boxes'' de seleções múltiplas que permitem ao usuário cadastrar vários ítens de uma lista dada. O primeiro ''select'' é utilizado para mostrar todos os ítens "cadastráveis". Pode-se selecionar um ou mais ítens que são transferidos para o segundo ''select'' através do botão ">>". O mesmo pode ser feito do segundo ''select'' para o primeiro através do botão "<<". A idéia é realizar o cadastro de todos os ítens contidos no segundo ''select'' ao final das operações. 
     27 
     28 
     29 
     30'''Parâmetros:''' 
     31 
     32  nameLeft: o nome que o ''select'' da esquerda irá receber. 
     33 
     34  nameRight: o nome que o ''select'' da direita irá receber. 
     35 
     36  arrayLeft: lista dos ítens a serem carregados no ''select'' da esquerda. 
     37 
     38  arrayRight: lista dos ítens a serem carregados no ''select'' da direita. 
     39 
     40  size: tamanho dos ''select boxes''. 
     41 
     42  diffEnable: valor indicando se deve-se executar o diff entre os ''select boxes''. 
     43 
     44  style: para definir os estilos dos ''select boxes''. 
     45 
     46 
     47 
     48'''Parâmetros obrigatórios:''' 
     49 
     50  nameLeft 
     51 
     52  nameRight 
     53 
     54 
     55 
     56'''Valor padrão:''' 
     57 
     58  nameLeft: "_disponiveis_" + <valor randômico> 
     59 
     60  nameRight: "_cadastrados_" + <valor randômico> 
     61 
     62  size: 8 
     63 
     64  style: "width:200px" 
     65 
     66  diffEnable: true 
     67 
     68 
     69 
     70:[[Image(http://doc.workflow.celepar.parana/wiki/select_duplex.png)]] 
     71 
     72 
     73 
     74'''Exemplo de utilização:''' 
     75 
     76{wf_select_duplex nameLeft="disponiveis" nameRight="cadastrados"} 
     77 
     78 
     79 
     80O exemplo acima cria dois ''selects'' vazios, que podem ser populados posteriormente. 
     81 
     82 
     83 
     84{wf_select_duplex nameLeft="disponiveis" nameRight="cadastrados" arrayLeft=$lista} 
     85 
     86 
     87 
     88O exemplo acima cria dois ''selects'' carregando a variável "lista", que é um array vindo do modelo, no ''select'' da esquerda. Para cada item de $lista será criada uma ''option'' no ''select'', de forma que os índices do array serão atribuídos ao ''value'' da ''option'' e os valores do array ao ''text''. 
     89 
     90 
     91 
     92{wf_select_duplex nameLeft="disponiveis" nameRight="cadastrados" arrayLeft=$listaLeft arrayRight=$listaRight diffEnable=false} 
     93 
     94 
     95 
     96O exemplo acima cria dois ''selects'' carregados automaticamente com os arrays $listaLeft e $listaRight. Especificando-se 'diffEnable=false', não é efetuado o diff entre os ''selects'', caso nada fosse passado, seria utilizado o valor default 'diffEnable=true', que eliminaria os valores de $listaLeft encontrados em $listaRight. 
     97 
     98 
     99 
     100 
     101 
     102'''Exemplo integrado com o Select City:''' 
     103 
     104Pode-se integrar esse componente com o Select City: 
     105 
     106:[[Image(http://doc.workflow.celepar.parana/wiki/select_duplex_cities.png)]] 
     107 
     108 
     109 
     110Utilizando uma tabela para posicionar os componentes de maneira mais organizada: 
     111 
     112{{{ 
     113 
     114<table> 
     115 
     116    <tr> 
     117 
     118        <td class="form_label"> Estado</td> 
     119 
     120        <td> 
     121 
     122            {wf_select_city_init}{wf_select_state name="estado" onChange="atualizaCidades();"} 
     123 
     124        </td> 
     125 
     126    </tr> 
     127 
     128    <tr> 
     129 
     130        <td class="form_label"> Cidades</td> 
     131 
     132        <td> 
     133 
     134            {wf_select_duplex nameLeft="disponiveis" nameRight="cadastrados" arrayRight=$cidades} 
     135 
     136            <s c r i p t> draw_cities('disponiveis',1, callDiff); </s c r i p t> 
     137 
     138        </td> 
     139 
     140    </tr> 
     141 
     142</table> 
     143 
     144}}} 
     145 
     146 
     147 
     148Para o código acima, '''atualizaCidades''' e '''callDiff''' podem ser definidas da seguinte forma: 
     149 
     150{{{ 
     151 
     152function atualizaCidades() { 
     153 
     154    objEstado = eval('document.forms[0].estado'); 
     155 
     156    draw_cities('disponiveis', objEstado.value, callDiff); 
     157 
     158} 
     159 
     160 
     161 
     162var callDiff = function (){ 
     163 
     164    selectDiff('cadastrados','disponiveis'); 
     165 
     166} 
     167 
     168}}} 
     169 
     170 
     171 
     172Onde, '''selectDiff''' é uma função javascript definida no plugin '''wf_select_duplex''' e os parâmetros 'cadastrados' e 'disponiveis' são os nomes dos ''selects''. 
     173 
     174 
     175 
     176'''draw_cities''' é uma função javascript definida no plugin '''wf_select_city''' e atribui ao ''select'' '''disponiveis''' todas as cidades do estado de código '''1'''(Paraná). 
     177 
     178 
     179 
     180Como '''draw_cities''' é uma chamada Ajax (assíncrona), ela aceita um terceiro parâmetro, no caso '''callDiff''', que é a função que será executada ao final de '''draw_cities'''. 
     181 
     182 
     183 
     184Portanto, ao final dessa execução, teremos todas as cidades do Paraná carregadas no ''select'' 'disponiveis', todas as cidades recuperadas em $lista carregadas em 'cadastradas' e após a chamada '''callDiff''', as cidades de 'disponiveis' encontradas em 'cadastradas' serão removidas, pois elas não podem estar nos dois ''selects'' simultaneamente. 
     185 
     186 
     187 
     188'''ATENÇÃO:''' Antes do formulário ser submetido, você deve chamar a função javascript do componente "selectAllOptions". Essa função recebe como parâmetro o nome do ''select'' a ter as ''options'' selecionadas. No PHP serão recuperados os ''values'' dos elementos selecionados.