Versão 46
Novidades
Configuração da tela de login
A tela de login padrão do Web Framework passa a permitir a configuração das cores e imagens de fundo, sem a necessidade de customização por meio de arquivos CSS. Para isso, deve ser utilizado o processo “Admin > Aparência e personalização > Tela de login”.
Mais detalhes podem ser obtidos no manual Páginas de login.
Configurações gerais
O sistema passa a contar com uma solução mais simples para gerenciar configurações gerais que não são diretamente associadas às classes e registros do sistema, evitando a criação de classes de configurações e arquivos de definição de classes (x-class) especificamente para esse fim.
Mais detalhes podem ser obtidos no manual Configurações gerais.
Melhorias
Admin
- Foi criado o processo “Admin > Replicação de dados > Registros ignorados” com o objetivo de cadastrar as chaves que não devem ser sincronizadas na replicação de dados. Ele deve ser utilizado quando o administrador do ambiente de produção não deseja enviar alterações específicas para as bases de destino, ou quando o desenvolvedor ou consultor que está utilizando uma base de desenvolvimento ou homologação quer garantir que o registro seja estável e não sofra mais modificações a partir da base de origem.
- O processo “Admin > Monitoramento > Engines” passa a apresentar a quantidade de arquivos e sockets abertos pelos Engines.
Engine
- Foi criado o método
DatabaseSchema.prototype.dropView
com o objetivo de remover uma visão da base de dados. - Foram criados os métodos
LobStorage.prototype.setLobExtraAttributes
eLobStorage.prototype.getLobExtraAttributes
com o objetivo atualizar e obter, respectivamente, os atributos extras de um documento do banco de dados. - Os métodos
LobStorage.prototype.addLob
eLobStorage.prototype.updateLob
passam a permitir indicar os atributos extras do documento por meio da nova opçãoextraAttributes
. - O Engine passa a gravar periodicamente no “supervisor.log” as seguintes informações:
- Memória física disponível.
- Espaço em disco disponível na unidade onde o Engine está instalado.
- Sockets abertos.
- Arquivos abertos.
- Foi criada a classe
JWS
com o objetivo de permitir a geração, leitura e validação de tokens JWS. - A classe
FileStorage
passa a permitir o armazenamento de arquivos privados (arquivos armazenados na LobStorage). Mais detalhes em Vincular arquivos a cadastros. - A classe
FileStorage
passa a limitar a quantidade de arquivos vinculados a um registro, o tamanho do arquivo adicionado e o tamanho máximo disponível para armazenamento de todos os arquivos vinculados a um registro. Mais detalhes em Vincular arquivos a cadastros. - A função
validateString
passa a aceitar o tipo “color”. Ao utilizar esse tipo, será validado se o valor informado está no formato “#rrggbb”. - Foi criada a classe
ECCryptoPKey
com o objetivo de realizar operações de assinatura digital e validação utilizando curvas elípticas. - O Engine passa a utilizar a porta TCP 587 no envio de e-mails caso a opção
Email.prototype.autoTls
esteja ativa e uma porta não tenha sido especificada de forma explícita no endereço informado emsmtpServer
. - Os scripts executados via IDE do Engine passam a ser registrados na tabela de log transacional,
comportamento que já era adotado pela extensão do VS Code. Como o log pode ser consultado pelos
administradores do sistema, é importante que sejam evitados valores literais com informações
sigilosas, como senhas de usuários. Para esses casos, é recomendado que os valores sejam
publicados como variáveis de ambiente e sejam consultados por meio da propriedade
engine.env
no script a ser executado.
Extensão VS Code
- Passa a ser possível selecionar colunas para cópia ou exportação de um resultado de execução de script ou query do tipo DataSet. A seleção é feita clicando sobre o cabeçalho da coluna enquanto é pressionada a tecla ctrl ou a shift.
- A exportação dos dados de um DataSet passa a contar com a opção “csv (excel)”, um CSV formatado para funcionar com a configuração padrão do Excel.
- Foi disponibilizada a view para declaração de variáveis de ambiente a serem utilizadas
na execução de scripts. As variáveis informadas estarão disponíveis no objeto
engine.env
durante a execução do script. Mais detalhes em Variáveis.
Web Framework
- Passa a ser possível criar campos do tipo “grid” em grades de variáveis, sem
DataSet
associado. Nesse cenário de uso, não serão aplicados filtros de registros com base na grade mestre, portanto a grade detalhe sempre exibirá todos os registros doDataSet
retornado pelo eventocreateDataSet
. - O diálogo de formulário passa a tratar como “combo” quaisquer campos que possuam a propriedade
options
preenchida, comportamento já adotado pelas grades. - Passa a ser possível o upload de múltiplos arquivos na grade de arquivos vinculados. Por padrão, será permitida a importação de até 50 arquivos vinculados ao registro. Mais detalhes em Vincular arquivos a cadastros.
Defeitos corrigidos
Engine
- Ao disparar um evento criado usando a classe
LegacyEvent
poderia ocorrer o erro “Erro na declaração do evento” caso fossem utilizadas funções anônimas dentro do evento declarado. - As funções
stringToInteger
estringToNumber
consideravam valores textuais não numéricos como0
em vez de gerar um erro informando que o valor informado não era um número. - O método
DataSet.prototype.getFieldModified
não detectava a modificação do campo até que a alteração do registro fosse efetivada por meio de umpost
. O problema ocorria apenas quando a propriedadelogChanges
estava ativa.
Web Framework
- Ao acessar a página de login, o navegador poderia sugerir a tradução da página de um idioma estrangeiro para o português.
- Ao excluir um registro da grade e inserir um novo, ocorria indevidamente a sugestão dos valores do registro recém excluído.
- Ao realizar uma busca na grade utilizando a opção “Todos os campos”, ocorria o erro “Erro na execução da busca na grid” caso um campo do tipo “memo” de um DataSet fosse definido com o tipo “string” na grade.
- Ao mostrar ou ocultar o campo de chaves da grade mãe, os botões das grades filhas desapareciam.
- A redefinição de senha na tela de login não gerava um erro claro se o envio do e-mail falhasse devido a uma configuração incorreta do servidor SMTP no Manage.
- Os valores retornados pelos campos “combo” dos diálogos de formulário sempre eram do
tipo “string”, independentemente do valor configurado na propriedade
options
.
Outras alterações
Engine
- O método
DataSet.prototype.getFieldModified
passa a se chamarDataSet.prototype.fieldWasModified
. O métodogetFieldModified
foi mantido apenas para fins de compatibilidade.