====== Á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. {{:desenvolvimento:especificacoes:arquitetura:servicos:arvore.png|}} ===== 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): Hierarquia orçamentária: Hierarquia acadêmica e carregamento via ajax: