Defeito #237
Atualizado por Anderson Tadayuki Saikawa há aproximadamente 6 anos
Na interface de manutenção de funcionário, os arrays de dados utilizados nos campos lista de seleção, estão desordenados. Por exemplo o array de localidades.
Revisar e alterar a ordenação das listas de opções, em todos os formulários do organograma.
OBS: As listas são geradas ordenadas alfabeticamente no PHP, porém, antes do Javascript construir a lista de seleção, ele ajusta as listas em um array cujo índice é o ID e o valor é a descrição que será apresentada no selectbox.
Por exemplo, o PHP gera uma lista de organizações conforme o array:
<pre>
$organizacao[0]['organizacao_id'] = 15
$organizacao[0]['sigla'] = 'APPA'
$organizacao[0]['descricao'] = 'Administração dos Portos de Paranaguá e Antonina'
$organizacao[0]['ativa'] = 'S'
$organizacao[1]['organizacao_id'] = 1
$organizacao[1]['sigla'] = 'CELEPAR'
$organizacao[1]['descricao'] = 'Companhia de Tecnologia da Informação e Comunicação do Paraná'
$organizacao[1]['ativa'] = 'S'
$organizacao[2]['organizacao_id'] = 45
$organizacao[2]['sigla'] = 'DER'
$organizacao[2]['descricao'] = 'Departamento de Estradas de Rodagem'
$organizacao[2]['ativa'] = 'S'
</pre>
O array $organizacao é de tamanho 3, sendo que cada item é um array com os dados de cada organização. Ou seja, o Javascript recebe esta matriz ordenada.
O motivo de estar desordenando esta lista é que quando o Javascript a recebe, está alterando para um array em que o índice é a propriedade 'organizacao_id' e o valor é a 'sigla', ficando semelhante a:
<pre>
$items[1] = 'CELEPAR'
$items[15] = 'APPA'
$items[45] = 'DER'
</pre>
Para o Javascript, isto é um array de tamanho 46 contendo "buracos" nas posições do array que não possuem valor. Portanto, este array acaba ficando ordenado pela propriedade 'ocorrencia_id'.
A solução será ajustar o Javascript para que seja montada uma matriz padronizada para que o método _'constructSelectBox'_ extraia corretamente a propriedade que deverá ser o índice e a que será o valor. Isto é, o método _'constructSelectBox'_ deverá receber uma matriz semelhante a:
<pre>
$items[0]['id'] = 15
$items[0]['value'] = 'APPA'
$items[1]['id'] = 1
$items[1]['value'] = 'CELEPAR'
$items[2]['id'] = 45
$items[2]['value'] = 'DER'
</pre>
Revisar e alterar a ordenação das listas de opções, em todos os formulários do organograma.
OBS: As listas são geradas ordenadas alfabeticamente no PHP, porém, antes do Javascript construir a lista de seleção, ele ajusta as listas em um array cujo índice é o ID e o valor é a descrição que será apresentada no selectbox.
Por exemplo, o PHP gera uma lista de organizações conforme o array:
<pre>
$organizacao[0]['organizacao_id'] = 15
$organizacao[0]['sigla'] = 'APPA'
$organizacao[0]['descricao'] = 'Administração dos Portos de Paranaguá e Antonina'
$organizacao[0]['ativa'] = 'S'
$organizacao[1]['organizacao_id'] = 1
$organizacao[1]['sigla'] = 'CELEPAR'
$organizacao[1]['descricao'] = 'Companhia de Tecnologia da Informação e Comunicação do Paraná'
$organizacao[1]['ativa'] = 'S'
$organizacao[2]['organizacao_id'] = 45
$organizacao[2]['sigla'] = 'DER'
$organizacao[2]['descricao'] = 'Departamento de Estradas de Rodagem'
$organizacao[2]['ativa'] = 'S'
</pre>
O array $organizacao é de tamanho 3, sendo que cada item é um array com os dados de cada organização. Ou seja, o Javascript recebe esta matriz ordenada.
O motivo de estar desordenando esta lista é que quando o Javascript a recebe, está alterando para um array em que o índice é a propriedade 'organizacao_id' e o valor é a 'sigla', ficando semelhante a:
<pre>
$items[1] = 'CELEPAR'
$items[15] = 'APPA'
$items[45] = 'DER'
</pre>
Para o Javascript, isto é um array de tamanho 46 contendo "buracos" nas posições do array que não possuem valor. Portanto, este array acaba ficando ordenado pela propriedade 'ocorrencia_id'.
A solução será ajustar o Javascript para que seja montada uma matriz padronizada para que o método _'constructSelectBox'_ extraia corretamente a propriedade que deverá ser o índice e a que será o valor. Isto é, o método _'constructSelectBox'_ deverá receber uma matriz semelhante a:
<pre>
$items[0]['id'] = 15
$items[0]['value'] = 'APPA'
$items[1]['id'] = 1
$items[1]['value'] = 'CELEPAR'
$items[2]['id'] = 45
$items[2]['value'] = 'DER'
</pre>