[DIF] Novas features

2 views
Skip to first unread message

Pedro Viegas

unread,
Jul 26, 2024, 9:19:44 AM7/26/24
to DIF2 Mailing list

Boa tarde,

 

Um resumo das novas funcionalidades da DIF3 nas últimas semanas.

 

1. Tree com auto selectOnClick

Todas as tree e treeCard passam a ter o comportamento de ao clicar num nó com filhos abrir ou fechar automaticamente.

 

 

2. Footnotes em botões

Passa a ser possível associar a um ToolbarAction ou ActionItem um atributo footnote.

Este declara uma footnote para o container atual e coloca a nota no título do botão.

 

<dif:toolbarAction id="calendInscricoesMatriculasAction"
                  
text="${messages.configCalendarioInscricoesMatriculas}"
                  
jsCode="" disabled="true"
                  
footNote="${messages.configCalendarioInscricoesMatriculasNote}"/>

 

 

 

 

3. TreeCard com autoGrowToContent

Passa a ser possível omitir a altura do container e indicar que deve crescer consoante o necessário para o painel ativo. Mudará o a altura a cada mudança de painel visível.

Tem um mínimo de altura definido neste modo. Máximo não tem.

Este passa a ser o comportamento por omissão.

 

<dif:treeCard id="parametrosCSETreeCard" autoGrowToContent="true">

 

 

4. Titles de vários componentes foram promovidos a subTitle

O componente subTitle e formSubTitle estavam a ser usados em situações em que já podiamos ter um título mas o mesmo era demasiado pouco destacado.

Foram promovidos à importância de subtitle os titulos dos fieldSets e fieldLayout

 

 

 

5. Auto atribuição de campo PK com o último +1

Para tabelas em que a PK é um campo único numérico e que por omissão deve ser implementada a atribuição automática do máximo valor da PK dos registos existentes +1, e logicamente quando não existe uma sequência para tal ou um autoNumber do mySQL que o faça ao nível da BD o que é muito mais eficiente e menos propenso a chaves duplicadas, a DIF passa a ter a capacidade de o fazer de forma automática por nós.

 

Declaração da tabela perante a DIF

// Auto number PK
DIFModel.declareAutoNumberPK(TableStaepo.class);

Visualmente o campo nas DetailsForms é automáticamente identificado como tal:

 

 

Se a form for normal com base num @BeanParameter deveria também ser mostrada esta indicação, mas não está para já implementado.

De qualquer forma, desde que seja feito o insert na tabela via DataSet, não interessa se for em código ou componente o último+1 será despoletado caso a PK seja passada vazia.

 

 

6. Validação de parâmetros dependentes

Foi feita uma validação adicional em modo de desenvolvimento para quando um parâmetro na lista de parâmetros dependentes de uma rule DEPENDS não é encontrado.

é tentada a procura pelo mesmo sem o prefixo do nome da form (convenção).

Se encontrado é usado mas é reportado um mau uso para o LOG para correção.

 

Ex:

@Parameter(linkToForm = "siaConfigTurmasForm")
protected String atrbTurDisAdiantAluno;
@ParameterBean(linkToForm = "siaConfigTurmasForm", rules = {
       
@RuleForAttribute(attributeID = ConfigSiaOptico.Fields.ATRB1TURDISP, ruleId = ParameterRules.DEPENDENT,
                value =
"N", action = ParameterRuleAction.DISABLE,
                parameters = ConfigSiaOptico.Fields.
BASEATRIBTURMAS),

       
// BASE ATRIBUICAO - NAS TURMAS ÚNICAS DO CURSO DO ALUNO (U)
       
@RuleForAttribute(attributeID = ConfigSiaOptico.Fields.BASEATRIBTURMAS, ruleId = ParameterRules.DEPENDENT,
                value =
"U", parameters = "atrbTurDisAdiantAluno,atrbTurDisAnoaluAluno," +
                                          ConfigSiaOptico.Fields.
ATRBTURDISATRAS + "," +
                                          ConfigSiaOptico.Fields.
DISPTURGENERICAS + "," +
                                          ConfigSiaOptico.Fields.
TURMASGENERICAS),
       
// BASE ATRIBUICAO - NA TURMA DE ACESSO DO ALUNO(A)
       
@RuleForAttribute(attributeID = ConfigSiaOptico.Fields.BASEATRIBTURMAS, ruleId = ParameterRules.DEPENDENT,
                value =
"A", parameters = "atrbTurDisAnoaluCurso,atrbTurDisAdiantCurso," +
                                          ConfigSiaOptico.Fields.
TURMAACESSOEXCLUSIVA + "," +
                                          ConfigSiaOptico.Fields.
ESCOLHERTURMAACESSO + "," +
                                          ConfigSiaOptico.Fields.
TURMASACESSO),
       
@RuleForAttribute(attributeID = ConfigSiaOptico.Fields.ACTLISTATURAUTORIZ,
                ruleId = ParameterRules.
DEPENDENT, value = "S", parameters = "")})
protected ConfigSiaOptico siaConfigTurmasForm;

11:20:05,312 INFO  [STDOUT]     The parameter "atrbturdisadiantaluno" in ParameterRuleDependent should be prefixed with the form name "siaconfigturmasformatrbturdisadiantaluno"

 

 

7. Modo SuperAdmin

Passa a ser possível as aplicações que usam a DIF definir um modo superUser mediante as regras que entenderem.

Foi implementada uma para o SIGESbo/netPA e restantes aplicações do SIGES similar à que existia no BackOffice (mas só para o user "digitalis" por segurança!).

A DIF por default tem uma implementação que impede este modo.

Se este modo estiver ligado o DIFRegistratorExplorer permite o registo das aplicações diretamente. Para já apenas isto na DIF.

Cada aplicação fará o uso que entender.

 

Para tal é necessário registar no IoC de uma implementação do interface ISuperUserMode...

binder.bind(ISuperUserMode.class, SuperUserModeSIGESImpl.class).override().asSingleton();

Se esta implementação tiver uma stage definida e declarada para a ativação do modo então para aceder é necessário chamar o URL:

Para utilizar esta implementação nos nossos IFs basta o seguinte:

this.superUserMode.isActive(this.context.getSession())

O que devolverá true se o user em sessão estiver com o modo SuperAdmin ligado.

 

 


Com os melhores cumprimentos,

 

 

Pedro Viegas
Director Departamento de Desenvolvimento
(Development Manager)
Digitalis Informática Lda
R&D: 
http://development.digitalis.pt

 

signature_1796888153

Reply all
Reply to author
Forward
0 new messages