| 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 | |
| 18 | Observaçã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 | |
| 80 | O 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 | |
| 88 | O 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 | |
| 96 | O 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 | |
| 104 | Pode-se integrar esse componente com o Select City: |
| 105 | |
| 106 | :[[Image(http://doc.workflow.celepar.parana/wiki/select_duplex_cities.png)]] |
| 107 | |
| 108 | |
| 109 | |
| 110 | Utilizando 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 | |
| 148 | Para o código acima, '''atualizaCidades''' e '''callDiff''' podem ser definidas da seguinte forma: |
| 149 | |
| 150 | {{{ |
| 151 | |
| 152 | function atualizaCidades() { |
| 153 | |
| 154 | objEstado = eval('document.forms[0].estado'); |
| 155 | |
| 156 | draw_cities('disponiveis', objEstado.value, callDiff); |
| 157 | |
| 158 | } |
| 159 | |
| 160 | |
| 161 | |
| 162 | var callDiff = function (){ |
| 163 | |
| 164 | selectDiff('cadastrados','disponiveis'); |
| 165 | |
| 166 | } |
| 167 | |
| 168 | }}} |
| 169 | |
| 170 | |
| 171 | |
| 172 | Onde, '''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 | |
| 180 | Como '''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 | |
| 184 | Portanto, 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. |