Á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"/>