Nouveautés de la version 4.2
1. Mise à jour de WildFly, de JAVA et du socle technique
-
Migration vers Java 17 et Wildfly 26.1.1 (Java 11 est toujours supporté) ;
-
WildFly 26 n’est plus compatible avec le module qui crypte le mot de passe dans le référentiel, il peut être chiffré dans un CreditentialStore et sa clé est offusquée dans le standalone.xml ;
La gestion de la configuration de Kerberos a été revue en raison du passage de WildFly vers le module elytron ;
-
Utilisation du paramètre -XX:+UseStringDeduplication pour éviter d’avoir plusieurs instances d’une String en mémoire (pour les longs live objets) et suppression du paramètre optimisationMode ;
-
Retrait du script de démarrage pour le support de Solaris, car l’OpenJDK n’est plus compatible depuis la version 9 ;
-
Mise à jour du script de migration en fonction des différences de configuration (et en recopiant les valeurs de tous les paramètres de JVM -Dxxxxx présents d’origine dans les nouveaux fichiers de conf et notamment -Dhttp[s].proxyHost -Dhttp[s].proxyPort) ;
-
Possibilité de choisir un schéma autre que celui par défaut pour le référentiel ;
-
Mise à jour de toutes les libraires JAVA et notamment :
Passage à Hibernate 5.6
Mise à jour de SMBJ pour son support du protocole SMBv3 ;
Remplacement de JCSH par SSHJ dans les librairies de fonctions SSH et File (pour SFTP), car JCSH ne gère pas les algorithmes de chiffrement récents ainsi que les clés SSH commençant par : -----BEGIN OPENSSH PRIVATE KEY----- ;
-
Mise à jour de toutes les libraires JavaScript pour la v4 :
-
Notamment les plugins Leaflet, CKeditor 4.18.0, jQuery 3.6…
-
-
Modernisation du code JavaScript avec, entre autres, la migration vers les classes JavaScript standard dans le code OUI et la compilation des classes en mode ECMASCRIPT_2016 ;
-
Configuration du java.io.tempdir dans le répertoire temp de WildFly plutôt que celui du système ;
-
Ajout comme dépendance optionnelle de NodeJS et Chromium/Chrome qui permettra d’invoquer du JavaScript ;
-
L’API JavaScript Puppeteer est désormais utilisée en remplacement de PhantomJS pour les fonctions de captures d’écran ;
2. Navigateurs supportés pour la version 4.2
La compilation du code JavaScript en mode ECMASCRIPT_2017 impose la fin du support des versions de Firefox antérieures à la 52, Chrome antérieur à la version 55 (et donc de Chrome sous Windows XP et Vista), Edge 40 et Safari 9 et 10 (et donc des iPhone 4s, 5, 5c, des iPad 2, 3, 4, Mini 1 et de Safari sous MacOs 10.9 Mavericks, 10.10 Yosemite) en raison du non-support des classes JavaScript, des fonctions asynchrones et des déclarations de variables avec « let » et « const ».
Les versions minimales retenues pour la version 4.2 sont donc :
-
Mozilla Firefox 52
-
Google Chrome 55 (57 pour le Designer)
-
Opera 42 (44 pour le Designer)
-
Apple Safari 11 (et donc nécessite au minium MacOS 10.11 El Capitan pour ce navigateur)
-
Microsoft Edge 41 (correspondant à la version 16 du moteur EdgeHTML)
-
Apple Safari sous iOS 11 (et donc nécessite au minium un iPhone 5s, iPhone SE, iPad 5, iPad Mini 2, iPad Air, iPad Pro)
-
WebView iOS 11 (dont Chrome, Firefox, Edge et les autres navigateurs)
-
Google Chrome sous Android
-
Mozilla Firefox sous Android
-
Samsung Internet Browser 6.2 sous Android
-
WebView Android 5
3. Améliorations de la gestion des services web
La refonte des Web services se poursuit dans cette version de la plateforme.
Refonte des Web services en mode fourniture,fourniture, principalement pour la gestion du mode REST « moderne » :
-
Le débogueur affiche désormais les en-têtes HTTP des requêtes passées et des réponses reçues
-
L’arbre des réponses JSON n’était pas ordonné correctement ;
-
Le nom du service Web accepte désormais les caractères / , . et – permettant d’écrire un service de type mon_service/api/v1 ;
-
Possibilité de passer des variables dans le chemin des méthodes REST (lorsque le mode SOAP n’est pas activé sur le service) ;
-
Export des descriptions au format OpenAPI v3.0.0 en YAML mieux adapté et adopté pour les API REST modernes (au lieu du WSDL lorsque le mode SOAP n’est pas activé sur le service) ;
-
Support des appels en mode HTTP PUT, PATCH et DELETE pour les méthodes REST (lorsque le mode SOAP n’est pas activé sur le service) ;
-
Possibilité de définir des en-têtes HTTP passées ou renvoyées en mode REST ;
-
Possibilité de définir les arguments du SOAP Header passé ou renvoyé en mode SOAP ;
-
Au cas où le retour d’une méthode ne contient qu’un seul élément de type Liste, il est désormais possible d’indiquer que cette liste est la racine du JSON retourné (dans l’onglet avancé de la méthode) ;
-
Possibilité de préciser qu’un argument est de type est énuméré et d’en spécifier les valeurs ;
-
Possibilité de définir le type de contenu de la réponse : JSON, XML, les deux, ou fichier dans les méthodes REST ;
-
Possibilité de définir le type de contenu de la requête x-www-form-urlencoded, fichier binaire, fichier dans un muti-part/form-data, ou objet JSON dans les méthodes POST, PUT et PATCH ;
-
Possibilité de définir une valeur par défaut pour les champs ;
-
Possibilité de définir les valeurs min et max pour les champs numériques ;
-
Support des retours d’erreur JSON et XML (à la manière du mode SOAP) si des arguments d’erreur ont été définis. (Ils doivent être affectés notamment dans l’événement En cas d’erreur) ;
-
L’assistant de création de service métier depuis un fichier de description accepte désormais les fichiers de descriptions OpenAPI v3.0, v3.1 et Swagger v2.0 au format YAML et JSON en plus du format SOAP WSDL ;
-
Ajout d’une variable prédéfinit permettant de récupérer le contenu de la réponse renvoyé dans les événements Après exécution en plus de celle, déjà présente, permettant de récupérer le contenu de la requête reçue ;
-
Gestion des codes retours personnalisés supplémentaires via la variable prédéfinie accessible en écriture Code Retour HTTP :
- Les codes supplémentaires doivent être définis dans le formulaire de la méthode ;
- Forcer un code 4xx ou 5xx retournera les arguments d’erreurs ou la variable dernière erreur s’il n’y en a pas et équeutera l’événement En cas d’échec après exécution ;
- Les codes par défauts sont le premier 2xx spécifié dans le formulaire de la méthode et 500 en cas d’erreur ;
- Le code retour 204 (No Content) permet de ne pas renvoyer de contenu dans la réponse ;
- Les codes standard sont principalement :
- Succès : 200 (OK), 201 (Créé), 202 (Accepté), 204 (Pas de Contenu), 205 (Réinitialiser le Contenu), 206 (Réponse Partielle).
- Erreurs client : 400 (Mauvaise requête), 401 (Non autorisé), 403 (Interdit), 404 (Introuvable), 409 (Conflit), 429 (Trop de Requêtes).
- Erreurs serveur : 500 (Erreur interne au serveur), 503 (Service indisponible).
Les services web en mode Appel ont aussi reçu quelques améliorations :
- Le débogueur affiche désormais les entêtes HTTP des requêtes passées et des réponses reçues dans le popup Afficher requête et résultats de l’action d’appel ;
-
Les arbres des requêtes et des réponses JSON n’étaient pas ordonnés correctement ;
-
Support des appels en mode HTTP PUT ;
-
Le mode muti-part/form-data accepte désormais plusieurs paramètres en plus du fichier ;
-
Le mode import accepte désormais des fichiers de description OpenAPI v3.0, v3.1 et Swagger v2.0 au format YAML et JSON en plus du format SOAP WSDL ;
-
En mode pour les méthodes POST, PUT, PATCH, il est désormais possible de définir un entête HTTP contenant la signature du corps de la requête en utilisant l’algorithme Hmac-SHA256. Un secret devra être affecté au champ HmacSecret dans l’action ;
4. Améliorations du composant Carte
Le composant carte a été amélioré :
-
Ré-implémentation de la barre d’outil pour dessiner en remplaçant le plugin Leaflet Draw par Leaflet Geoman (licence MIT) qui permet plusieurs des améliorations suivantes ;
-
Possibilité d’activer le mode création sur plusieurs éléments de même type ;
-
Dans ce cas une propriété Label permet de choisir le texte au survol du bouton de création pour différencier les éléments de même type ;
-
Les styles par défaut (color, weight, opacity…) et l’icône du marqueur sont appliqués sur l’icône du bouton de création pour différencier les éléments de même type ;
-
Lors de la création et de la modification, les points se collent aux marqueurs et autres traits existants lorsque la souris s’en rapproche ;
-
Possibilité d’activer la modification et/ou la suppression séparément (ATTENTION : cela nécessite une modification des applis qui utilisent la propriété Modifiable et supprimable dans des comportements ou qui ont affecté cette propriété à une colonne du jeu de donnée de la carte) ;
-
Il est possible de tourner les polygones et polylignes ;
-
Il est possible d’activer un nouveau bouton Couper les calques qui permet de faire des trous dans les polygones ou de couper les polygones et polylignes en plusieurs segments reliés entre eux, ce qui permet de les déplacer et de les tourner ensemble.
Pour que l’option apparaisse dans la barre de dessin il faut ajouter, dans le jeu de données, une colonne booléenne Point coupant le polygone ;
Pour le multi-segment, il faut que la colonne Identifiant de l’élément de carte contienne un tiret. (Exemple : 0-0 et 0-1 représentent deux segments du même multi ligne/polygone ;
-
Les différents boutons de modification et suppression de la barre de dessin n’apparaissent pas si aucun type d’élément de la carte n’a activé les options de modification ou la suppression ;
-
Il est possible de remplir une forme géométrique avec un motif en donnant l’URL à la propriété :
fill: url(/files/Images/pattern.png) ;
ou directement le contenu d'une image SVG sous la forme (width et height sont requis) :
fill: url(data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10"><line x1="0" y1="5" x2="10" y2="5" stroke="black" stroke-width="1"/></svg>);
-
En cas de remplissage avec un motif, on peut de le déformer ou de le tourner avec :
patternTransform: rotate(45) scale(-0.5) skewX(30);
-
Il est possible de choisir à quel niveau de zoom les éléments de carte s’affichent ;
-
La propriété Priorité de l’élément de carte fonctionne désormais pour les formes géométriques en plus des marqueurs. Cela est utile pour éviter que les petites formes ne se retrouvent en dessous des grandes et donc ne reçoivent pas les événements clic ;
-
Nouvelle option pour afficher la bulle d'aide au survol plutôt qu’au clic sur les marqueurs et formes géométriques ;
-
Support des couches de tuiles WMS Raster ;
-
Ajout d’un type de couche pour grouper des éléments de carte permettant à l’utilisateur d'afficher ou masquer un ensemble de marqueurs ou une forme géométrique (dont le type a été associé à cette couche) via le bouton de sélection des couches ;
-
Possibilité d’afficher plusieurs itinéraires si la fonction Identifiant de l’élément de carte est affecté à une colonne du jeu de données ;
-
Possibilité de choisir la position des icônes par rapport aux coordonnées sur les marqueurs ;
-
Recompilation de la librairie mapbox-gl-js sans le support des contrôles, marqueurs, évènements pour réduire la taille du JavaScript.
5. Ajout d'un nouveau type de rapport PDF
Ajout d’un nouveau type de rapport (API Ontomantics) qui permet de générer des fichiers PDF complexes.
Ce mode n’utilise pas de fichier modèle mais le Drag&Drop d’Ontomantics comme celui des écrans, mais dans une version considérablement allégée. Cela permet de facilement insérer des tableaux, graphiques, cartes, etc.
La page possède un composant racine de type Page contenant différentes zones pour les en-têtes et pieds de pages.
Les labels, posés dans les zones en-tête et pied de page, peuvent alors avoir les types suivants :
-
Défaut : Texte classique ;
-
Numéro de page : Le numéro de la page courante ;
-
Nombre de page : Le nombre de pages total ;
-
Contenu du titre [1...6] : Affiche le contenu de la balise <h1>...<h6> de la page courante ou des pages précédentes.
Les labels peuvent aussi contenir des $variables, des conditions #if() et des boucles #for() utilisant la syntaxe Apache Velocity comme pour les rapports textes. Ces variables apparaîtront alors dans l’onglet Contenu. Les #if(), #for() et leurs #end associés doivent impérativement se trouver dans la même étiquette.
Les sauts de page peuvent être gérés par l’utilisation des classes break-before-page, break-after-page, break-before-left, break-after-left, break-before-right, break-after-right, break-inside-avoid ou avec les styles CSS Inline correspondant.
Il est possible de copier / coller les contrôles d’un écran existant, mais les composants non-compatibles (tels que les éléments de formulaires) sont remplacés par des étiquettes.
La librairie Paged.js est ensuite utilisée pour découper le contenu de la page HTML en une succession de pages indépendantes permettant l’impression des en-têtes et pieds de pages complexes.
Paged.js est une bibliothèque JavaScript gratuite et open source qui pagine le contenu dans le navigateur pour créer une sortie PDF à partir de n'importe quel contenu HTML. Cela signifie que vous pouvez concevoir des ouvrages pour l'impression (par exemple, des livres) en utilisant HTML et CSS !
Paged.js suit les normes Paged Media publiées par le W3C (c'est-à-dire le module Paged Media et le module Generated Content for Paged Media). En effet, Paged.js agit comme un polyfill pour les modules CSS afin d'imprimer du contenu en utilisant des fonctionnalités qui ne sont pas encore supportées nativement par les navigateurs.
La conversion PDF est enfin effectuée par le navigateur Chromium (ou dérivé) qui est géré par un script NodeJS, utilisant l’API Puppeteer, qui se charge de démarrer et de contrôler le navigateur.
6. Nouveau composant GANTT
Un nouveau composant GANTT pour la gestion de projet a été implémenté.
Il est basé sur le composant planning, mais fonctionne différemment :
-
Il est composé de Tâches, de Phases (représentant un groupe de tâches) et de Jalons ;
-
Des types Tâches prévues, Phases prévues et Jalons prévus peuvent être affichés dans le but de comparer le décalage avec la réalisation ;
-
Chaque ligne ne peut contenir qu’une seule tâche, éventuellement divisée en plusieurs morceaux. Chaque morceau doit alors posséder le même ID de ligne ;
-
Chaque tâche doit renseigner sa phase parente avec la colonne ID Parent et les lignes seront triées principalement selon ce paramètre ;
-
Il est possible de dézoomer au niveau d’une semaine (si l'option a été activée) et d’un mois par colonne (la largeur d’une journée n’est pas limitée à 34 px minimum comme sur le planning) ;
-
Un second jeu de données est associé au composant pour les contraintes permettant de dessiner des flèches entre les tâches. Il doit posséder les colonnes :
-
-
Depuis et Jusqu’à : ID des deux lignes de tâches concernées ;
-
Type : Type de contrainte parmi : Finish-to-Start, Finish-to-Finish, Start-to-Start et Start-to-Start ;
-
Décalage : Une durée minimale optionnelle entre un Finish et un Start ;
-
-
Les lignes de phases du tableau peuvent être repliées à la manière d’un arbre ;
-
Si une tâche possède des sous-tâches, elle se transformera automatiquement en phase et ses dates seront calées sur les tâches enfants ;
-
Les tâches peuvent avoir une date de début et une durée. La date de fin est alors automatiquement calculée. Les dates de début ou de fin sont affectées/corrigées en fonctions des contraintes. La durée est prioritaire sur la date de fin ;
-
Si les date de début ou de fin du planning ne sont pas spécifiées, alors le composant se calera automatiquement sur la période couverte par les tâches du projet ;
-
Les durées pourront être configurées en jour ouvré, jour ouvrable ou brute ;
-
Une option permet l’affichage de la section critique (durée minimale possible du projet) ;
-
La fonctionnalité Est critique peut être affectée aux jeux de données de tâches et sera alors automatiquement remplie ;
-
Remplacement du style du jour courant par un trait noir vertical ;
-
Affichage de deux colonnes, date de début et date de fin dans les tableaux ;
-
Possibilité d’ajouter des contraintes (flèches) à la souris ;
7. Autres fonctionnalités
Une boite de dialogue peut désormais être ouverte directement depuis un élément du menu ;
La classe CSS est déplacée à la racine du popup. Cela peut nécessiter d’ajuster les styles personnalisés ;
Les composants Listes ont un DIV supplémentaire à leur racine ce qui permet de supprimer la position :sticky des filtres qui ne fonctionne pas correctement sous Safari. Cela peut nécessiter d’ajuster les styles personnalisés ;
Ajout de la résolution XXL à 1400 px comme pour Bootstrap 5 ;
L’U.C. des styles utilise désormais l’API JavaScript Autoprefixer (lorsque la dépendance optionnelle NodeJS est installée) qui permet lors de la sauvegarde :
-
D'être averti en cas d’erreur de syntaxe dans un fichier de classe ;
-
D'ajouter les préfixes (-moz, -webkit, -ms) pour un meilleur support des anciennes versions des navigateurs toujours supportées par la plateforme ;
-
De supprimer les propriétés préfixées pour le support des anciennes versions des navigateurs non supportées par la plateforme (lorsque la propriété non préfixée est définie après) ;
Les composants Liste de fichier et Lecteur de média affichent la prévisualisation des documents en PDF via une version embarquée de l’API PDF.js (l’API du lecteur PDF intégrée de base dans Firefox) à la place de celle intégrée par défaut aux navigateurs (Pour les navigateurs compatibles Firefox >= 78, Chrome/Edge >= 64 et Safari Mac >= 11.1 et Safari iOS ≥ 11.3). Ce qui a certains avantages :
-
Le lecteur s’affiche désormais même si celui par défaut est désactivé ou que le navigateur (principalement mobile) ne le supporte pas ;
-
Les PDF XFA s’affichent désormais sous les navigateurs Chromium (et dérivés) et Safari, ce qui n’était pas le cas avec le lecteur d’origine ;
-
Le bouton Télécharger télécharge désormais le fichier Office d’origine et pas forcément le PDF affiché ;
-
Les propriétés du document affichent le nom, la taille et la date de création du fichier Office d’origine et pas forcément ceux du PDF affiché ;
-
Options pour masquer les boutons Télécharger, Imprimer ou Plein écran.
Possibilité d’exporter et d'importer les variables de contextes au format Excel ;
Possibilité d’importer les rôles d’une application ou service Web depuis un fichier Excel ;
Meilleure gestion du déploiement en cas de renommage des tables ou des colonnes Clés primaires ;
Meilleure gestion des colonnes Auto-incrément (en particulier sur PostgreSQL et Oracle à partir de la version 12c) :
-
Sous PostgreSQL, la plateforme détecte si les séquences liées aux clés primaires ne sont pas à jour et un bouton permet, le cas échéant, de les synchroniser ;
-
Sous Oracle 12c et + les tables sont déployées avec une clé primaire auto-incrémentable ;
-
Les tables sont désormais créées et importées avec l’option Laisser la base gérer l’auto-incrément si la colonne ID est de type Nombre identité ;
L’OFFSET fonctionne désormais sous SQL Server à partir de la version 2012 ;
Amélioration de l’ergonomie des composants de saisie de date et heures : Il est désormais possible de spécifier, pour le contrôle Saisie de date, les propriétés Date minimale et Date maximale, de copier/coller une date dans ces champs, les flèches haut et bas respectent les limites de date et d’heure ;
Amélioration de l’ergonomie du composant de saisie de nombre, il n’est plus nécessaire de cliquer deux fois pour sélectionner la valeur.
Amélioration du composant tableau :
-
Nouveau filtre déroulant avec sélection multiple ;
-
Nouveau filtre avancé avec menu déroulant proposant en fonction du type de cellule de choisir entre Égal, Différent, Est vide, N’est pas vide, Entre, Inférieur, Supérieur, Contient, Ne contient pas, et des périodes de dates (Hier, Aujourd’hui, Demain, [La semaine / Le mois / L’année] [Précédent / Courant / Prochain])… ;
-
Option permettant de réorganiser les colonnes (pouvant être sauvée et restaurée grâce au paramètre Configuration utilisateur de la table) ;
-
Option permettant de redimensionner les colonnes (pouvant être sauvée et restaurée grâce au paramètre Configuration utilisateur de la table) ;
-
Les filtres des colonnes prennent en compte les autres filtres pour n’afficher que les valeurs restantes ;
-
Possibilité de filtrer les cellules vides dans les filtres Liste déroulantes ;
-
Nouveau type de colonne Sélection, lorsque la sélection multiple est activée, affichant des Checkboxes avec une Checkbox à trois états permettant de tout sélectionner/désélectionner dans l’entête et sur les lignes de regroupement ;
-
Pour les colonnes booléennes éditables, il est désormais possible d’activer l’option Afficher le bouton tout cocher/décocher dans l’entête et sur les lignes de regroupement ;
-
Possibilité de trier sur plusieurs colonnes en cliquant sur d’autres colonnes en appuyant sur les touches Ctrl ou Shift ;
-
Champs Style et Classe de style pour les en-tête et pied de pages des colonnes ;
-
Possibilité de contrôler l’état déplié/replié des lignes de la table expansible via une colonne du jeu de données ;
-
Plusieurs optimisations ;
Amélioration du composant graphique :
-
L’ordre d’affichage des colonnes Valeur est respecté dans le graphique mixte ;
-
Ajout de la propriété Couleur de remplissage en plus de Couleur (du trait). Il est possible d’utiliser la valeur Transparent sur les lignes pour désactiver l’aire en dessous ;
-
Ajout des options Masquer l’axe X et Masquer l’axe Y ;
-
Ajout de la propriété Texte du milieu pour les graphiques de type Donut ;
-
Possibilité de choisir l’épaisseur du donut (50 % du rayon par défaut) ;
-
Ajout de la possibilité de personnaliser les styles des lignes points barres et parts des graphiques, (cf. doc).
Possibilité de contrôler l’état déplié/replié des nœuds d’un arbre via une colonne du jeu de données ;
Le Pour chaque sur les lignes filtrées du tableau tient compte du tri courant et implémentation de la possibilité d’itérer sur les lignes filtrées des tableaux croisés, des plannings et des arbres.
Correction pour les éléments de menus qui ne se surlignent plus si la valeur n’est pas mappée sur une colonne du jeu de données du composant Répéter car cela posait un problème dès que le menu apparaissait en plusieurs exemplaires ;
Ajout des opérateurs date EXTRACT EPOCH S et EXTRACT EPOCH MS qui retournent respectivement le nombre de secondes et de millisecondes depuis le 1er janvier 1970 à minuit + le décalage induit pas le fuseau horaire défini sur le système (Sauf en mode Oracle et SQL Server) ;
Ajout des opérateurs date EXTRACT DATE et EXTRACT TIME qui tronquent respectivement l’heure et la date d'un timestamp ;
Ajout de l’opérateur string REMOVE ACCENTS ;
Les tâches du planning peuvent être redimensionnées par la gauche et les rôles peuvent désactiver la modification des tâches et/ou leur sélection ;
Option pour masquer l’entête sur le composant Table d’upload ;
Améliorations et corrections pour OpenID Connect. Il fonctionne désormais dans le login des applications du Player et il est désormais possible de choisir parmi deux modes d’activation :
-
Dans le nouveau mode Mixte où la page d'identification affiche un bouton pour se connecter avec OpenID Connect ainsi que le formulaire de connexion Ontomantics. Le formulaire de configuration ajoute trois champs : Label, Icône et Style CSS ;
-
En plus du fonctionnement actuel en mode Redirection où l'utilisateur est automatiquement redirigé vers le serveur d'authentification OpenID Connect. La page d'identification de la plateforme n'est alors plus visible. (Hormis en ajoutant le paramètre ?sso=disabled à l'URL de la plateforme)
Dans le formulaire de création des utilisateurs, il est désormais possible de choisir le mode de gestion des mots de passe parmi :
-
Envoyer un lien pour affecter le mot de passe par e-mail ;
-
Générer un mot de passe aléatoire et l'envoyer par e-mail ;
-
Saisir un mot de passe et l'envoyer par e-mail ;
-
Saisir un mot de passe sans l'envoyer par e-mail.
Dans l’action Affecter un utilisateur à un groupe, en mode Création de compte si le login n’existe pas, il est désormais possible de choisir le mode de gestion des mot de passe parmi :
-
Aucune action ;
-
Envoyer un lien d’activation par e-mail ;
-
Envoyer un lien pour affecter le mot de passe par e-mail ;
-
Générer un mot de passe aléatoire et l'envoyer par e-mail ;
-
Envoyer par e-mail le mot de passe affecté par e-mail ;
-
Générer un lien d’activation qui sera sauvé dans une variable ;
-
Générer un lien pour affecter le mot de passe qui sera sauvé dans une variable.
Il est, de plus, possible de choisir vers quelle application les liens de ces mails renvoient ou vers l’adresse générale de la plateforme.
Dans l’assistant d’import des utilisateurs, il est désormais possible de choisir l’action à effectuer pour les comptes sans mots de passe parmi :
-
Ne pas importer le compte ;
-
Envoyer un lien pour affecter le mot de passe par e-mail ;
-
Générer un mot de passe aléatoire et l'envoyer par e-mail.
Il est désormais possible de déboguer une application en tant qu’autre utilisateur ou utilisateur non-identifié (pour les applications accessibles publiquement) dans l’onglet Rôles.
Amélioration des performances lorsqu’on ouvre le débogueur après avoir lancé une application avec beaucoup d’écrans n’étant pas en cache.
Ajout d’un composant Annoter des PDFs. Basé sur PDF.js, il est, pour le moment, limité à la création de traits à main levée et de texte libre. Un bouton Sauver apparaît et envoie le fichier ainsi modifié au serveur. Le développeur peut alors sauver le fichier annoté via son nouvel identifiant. Ce composant n’est pas compatible avec les anciens navigateurs Firefox < 78, Chrome/Edge < 64 et Safari < 11.1.
Améliorations de l’ergonomie de la conception d’écran :
-
Ajout de l’élément Afficher uniquement dans les menus contextuels des contrôles Conteneur qui permet de retirer le reste de l’écran. Le bouton Réafficher tout le contenu apparaît alors dans la barre d’outil. Cela en complément du bouton N’afficher que le contenu principal déjà existant ;
-
Ajout du menu contextuel Insérer un contrôle … avec possibilité de choisir en premier, en dernier dans les éléments conteneur, avant, après, au-dessus et en dessous, en plus de l’insertion du contrôle parent existant ;
-
Ajout du menu contextuel Coller … avec possibilité de choisir en premier, en dernier dans les éléments conteneurs, avant, après, au-dessus et en dessous ;
-
Ajout du menu contextuel Insérer un contrôle et Coller … entre les lignes permettant d’en créer de nouvelles ;
-
Les boutons Plus apparaissant dans le Drag & Drop ouvrent désormais le popup d’insertion du contrôle à la place du menu déroulant ;
-
Le popup d'insertion des contrôles permet désormais de choisir le label pour les contrôles compatibles ainsi que l’orientation des dispositions linéaires ;
-
Corrections lorsque l'on déplace des contrôles de la grille X/Y vers la Grille Responsive.
Ajout d’une action permettant de masquer une notification ;
Amélioration des onglets Utilisateurs du groupe et Groupes de l’utilisateur ;
En plus du fonctionnement actuel en mode Redirection où l'utilisateur est automatiquement redirigé vers le serveur d'authentification OpenID Connect. La page d'identification de la plateforme n'est alors plus visible (hormis en ajoutant le paramètre ?sso=disabled à l'URL de la plateforme).
Lorsque l’on sauvegarde un fichier déjà existant dans la GED, on crée désormais un lien physique sur le système de fichier pour éviter de consommer deux fois l’espace disque (uniquement pour les fichiers nommés par leur identifiant). Ces fichiers sont mis en lecture seule pour éviter le risque d’en modifier un et donc que les autres le soient aussi.
Possibilité de recharger l’écran ou la boite de dialogue courant dans le débogueur pour afficher les modifications. Cela évite d’avoir à recharger toute l’application et à refaire tout le cheminement pour revenir dessus.
Le designer possède une nouvelle fonctionnalité permettant d'annuler les derniers changements ;
L’annulation fonctionne dans les différents modules du menu Conception et est limitée aux 10 dernières actions utilisateurs pour chaque application ouverte. Un nouveau bouton est apparu dans la barre d'outil du menu conception. L'annulation peut aussi être invoquée avec le raccourci clavier Ctrl+Z.
Nouvel assistant sur les formulaires permettant l’intégration des labels dans les champs de saisie.
Option pour rendre redimensionnable la première colonne des tableaux croisés, planning et Gantt.
Implémentation du double-clic sur les tâches des composants planning et Gantt.
Ré-implémentation du composant Image avec zone cliquable de la V3 ;
Amélioration des performances de l’U.C. de gestion des fichiers. Sous Linux, les fichiers identiques liés par lien physique ne sont plus comptés qu’une seule fois pour l’affichage de l’espace utilisé par un dossier ;
Possibilité de contrôler l’indicateur de chargement pendant l’exécution d’une règle ;
-
Pour cela, il suffit de changer les valeurs des trois nouvelles variables prédéfinies accessibles en écriture ;
-
La variable Type d'indicateur de chargement permet de choisir le type parmi Spinner (valeur par défaut), Linear ou Bar ;
-
La variable Valeur de l'indicateur de chargement permet d’affecter le pourcentage entre 0 et 100 ou vide si indéterminé ;
-
La variable Label de l'indicateur de chargement permet d’affecter un message en dessous de l’indicateur ;
-
Ces variables sont prises en compte immédiatement par le navigateur ;
-
Leurs valeurs sont réinitialisées à la fin de l’événement ;
-
Ces variables sont également accessibles dans les services métier.
Il est désormais possible d’effacer ou affecter la variable prédéfinie Dernière erreur ;
Ajout d’une option sur les rapports JETT permettant de choisir si l’on doit ou non « Évaluer les formules dans les rapports générés » afin que les résultats des calculs soit présents dans les fichiers générés. Désactiver cette option permet d'améliorer les performances si le rapport en contient, mais si des outils tiers doivent relire ces fichiers, ils pourraient ne pas avoir recalculé les résultats ;
Ajout du type Fichier sur les colonnes de JDD. Cela a pour effet d’afficher une miniature dans la colonne du tableau droit. Il dispose alors d’options pour afficher la miniature et ouvrir la prévisualisation comme pour le composant Liste de fichiers.
Les composants Liste de fichiers et Table d’upload ont une option pour afficher ou non la miniature.
Amélioration de l'import de fichier :
-
Implémentation de la lecture des fichiers JSON ;
-
Capturer un tableau Excel vertical par nom des colonnes (en spécifiant la ligne des titres) ;
-
Capturer un tableau Excel vertical par nom de tableau ET des colonnes, en spécifiant la ligne des titres relatifs à la zone définie ;
-
Possibilité de définir si une capture de cellule ou de colonne (par nom) est requise ou non dans l’import Excel ;
-
Ajout d’une option permettant de choisir si l’on doit ou non « Évaluer les formules dans les cellules lues » afin d'avoir les résultats des calculs à jour. Désactiver cette option permet d'améliorer les performances si les cellules lues du fichier en contiennent, mais si le fichier a été modifié par des outils tiers, ils pourraient ne pas avoir recalculé les résultats.
-
Ajout d’une option permettant de choisir de lire un fichier XLSX ou ODS en mode streaming. Activer cette option permet d'améliorer les performances et la mémoire consommée, mais les formules ne peuvent plus être évaluées afin d'avoir les résultats des calculs à jour si le fichier a été modifié par des outils tiers qui pourraient ne pas avoir recalculé les résultats. De plus, la lecture est limitée à une seule table verticale ou croisée avec recherche par nom de colonne ou de coordonnées.
Les requêtes SQL modifiant la structure de la base apparaissent dans l’onglet Historique des modèles de données.
Amélioration de la politique de mot de passe de la plateforme :
-
Option pour afficher le bouton permettant de révéler le mode de passe sur les différents champs ;
-
Option pour empêcher la saisie d'un mot de passe trop similaire au précédent (détection si un seul caractère diffère) ;
-
Option pour empêcher l'utilisation d'un mot de passe apparaissant dans la liste du million les plus fréquemment utilisée dans le monde ;
-
Option pour déconseiller l'utilisation des données personnelles telles que le nom, le prénom, la date de naissance, le nom de l'animal de compagnie, la ville de résidence…. Cela a pour effet d’afficher un message lors de la saisie et empêche l’utilisation du login, des noms, du dernier mot de l’adresse, du code postal de la ville et des portions de l’e-mail ;
-
Option pour bloquer temporairement les tentatives de connexions à un compte pendant plusieurs minutes après un certain nombre d'essais infructueux (1 min après 4, puis 2, 5, 10, 15, 20, 30, 60 minutes, ensuite 90 minutes entre chaque tentative suivante) ;
-
Options pour choisir le nombre minimal de caractères de chaque catégorie (majuscules, minuscules, chiffres, caractères spéciaux).
Amélioration de l’accessibilité de la plateforme :
-
Il est désormais possible d’affecter un titre personnalisé sur l’onglet avec la variable prédéfinie Titre de la page ;
-
Option Texte indicatif par défaut sur le composant Image ;
-
Navigation avec les flèches sur les composants Menus ;
-
La touche Échap ferme le dernier sous-menu ;
-
Améliorations sur les tableaux et paginations ;
-
Le composant Cadre dynamique n’était pas accessible au clavier ;
-
Les composants Liste, Liste déroulante, Combobox et Autocomplétion ne restituaient pas les options ;
-
Lien d’évitement invisible en début de la page permettant de se rendre directement au contenu principal ;
-
Possibilité de spécifier un exemple d’e-mail à afficher dans les messages d’erreur invalide ;
-
Amélioration de la navigation au clavier sur les composants Menus, tous les types de liste...
-
Futures améliorations à apporter selon : https://www.w3.org/WAI/ARIA/apg/patterns/
Possibilité d’exporter en Excel le résultat des requêtes dans l’onglet Données du modèle de données.
Possibilité d’exporter en Excel les jeux de données dans le débogueur.
L'exécution de la fonction mergePDF() de la librairie PDF est désormais instantanée.
Nouvelle fonction dans la librairie String formatDouble() et formatInt() prenant la langue en paramètre pour avoir les bons séparateurs de milliers et de virgules.
Possibilité de convertir les méthodes Web SOAP en méthode REST de type HTTP POST acceptant des requêtes de type JSON ou en méthode REST de type HTTP GET pour celles sans paramètre. Le fichier de description du service au format YAML OpenAPI est alors disponible en remplacement du WSDL. Il suffit ensuite de changer dans l’URL d’appel, coté client, les paramètres ?wsdl en ?yaml et de resynchroniser les services.
Les composants de saisie d’heure permettent de spécifier une heure par défaut. Lorsque le popup est ouvert sans aucune heure sélectionnée, le popup des heures défile sur l’heure sélectionnée plutôt que sur l’heure courante. Pour le composant avec date, si une date est choisie pour la première fois, l’heure ajoutée sera celle spécifiée plutôt que minuit.
Les libraires mail convertissent les images embarquées en base64 dans le texte HTML en multipart/related afin d’être compatibles avec les anciennes versions d’Outlook.
Les rapports Texte et XdocReport peuvent désormais utiliser plusieurs extensions pour Velocity (avec les variables: $locale, $number, $math, $date, $esc, $alternator, $list, $sorter, $iterator) (cf. doc: https://velocity.apache.org/tools/1.4/generic/index.html )
Nouvelles fonctions dans la librairie BarCode : generateQRCode() et generateDataMatrix()
Nouvelle fonction dans la librairie File : fileReadBinary()
Amélioration de la sécurité d’OpenIDConnect via la vérification de jeton JWT reçu (Signature, Dates d’expiration, ClientID, Issuer, Algo). Il est néanmoins possible de désactiver la vérification de la signature du jeton dans la page de configuration.
Possibilité de définir des paramètres supplémentaires, retournés par le serveur OpenIDConnect, selon les possibilités sélectionnées, à récupérer dans le jeu de données prédéfini Liste des paramètres. Les paramètres reçus apparaissent dans les logs DEBUG de la plateforme lors d'une connexion OpenIDConnect.
Possibilité de modifier dynamiquement la taille max des fichiers des composants Upload.