Tabela de conteúdos

Árvore de Unidades

Componente JSF para exibição de árvore de unidades composto por um campo para digitação do código da unidade, um campo do tipo autocomplete e uma árvore contendo a hierarquia das unidades, conforme mostrado na figura abaixo. Qualquer um dos três campos pode ser utilizado para seleção da unidade.

Implementação

Foi criado um componente JSF composto por três classes, o component, o renderer e a tag. O renderer é onde existe o código HTML renderizado pelo componente. Além disso, foi criada a classe ArvoreUnidades, que contém toda a lógica de criação das hierarquias de unidades; o arquivo arvore-unidades.js, com o javascript necessário para o funcionamento da árvore; a classe BuscaUnidadesServlet no SIGAdmin, para realização de buscas via Ajax; e o arquivo ufrn-jsfcomps.tld, no SIPAC, que contém o tag library descriptor da taglib do componente.

As classes podem ser vistas na tabela a seguir:

Classe Projeto
ArvoreUnidades EntidadesComuns
ArvoreUnidadesComponent EntidadesComuns
ArvoreUnidadesRenderer EntidadesComuns
ArvoreUnidadesTag EntidadesComuns
BuscaUnidadesServlet SIGAdmin

Os demais arquivos podem ser vistos na tabela a seguir:

Arquivo Projeto
arvore-unidades.js SharedResources
ufrn-jsfcomps.tld SIPAC

Tag

Atributos

Tipo: Identifica o tipo de árvore de unidades a ser renderizada. Pode ser organizacional, orcamentaria ou academica. Dependendo do seu valor, a árvore será renderizada de acordo com a hierarquia orçamentária, organizacional ou acadêmica. Caso esse atributo não seja informado, o valor padrão é o organizacional.

Modo: Informa se a árvore será renderizada localmente ou via ajax. Se for renderizada localmente (valores local ou client), a árvore é carregada completamente na página e não será necessário realizar mais nenhuma consulta ao servidor para utilizá-la. Se for renderizada via ajax (valores ajax ou server, a árvore terá apenas o seu primeiro nível carregado e, a cada vez que um nó for expandido, será feita uma consulta no servidor para buscar os nós do próximo nível carregado. Se nenhum valor for atribuído a esse campo, o valor padrão é client.

Size: Tamanho do campo de texto responsável pelo autocomplete das unidades. Semelhante ao atributo size dos campos input do HTML.

Value: Atributo do managed bean que representa a unidade que será escolhida pela árvore de unidades. Esse valor é obrigatório. ATENÇÃO: O atributo value deve apontar para o atributo unidade e não para o seu id, pois a árvore setará todos os atributos da unidade e não apenas o id.

Exemplos de Uso

Básico (hierarquia organizacional e carregamento local):

<ujsf:arvoreUnidades value="#{managedbean.unidade}"/>

Hierarquia orçamentária:

<ujsf:arvoreUnidades value="#{managedbean.unidade}" tipo="orcamentaria"/>

Hierarquia acadêmica e carregamento via ajax:

<ujsf:arvoreUnidades value="#{managedbean.unidade}" tipo="academica" modo="ajax"/>