Liste des enregistrements

3.1 Barre d'outils

3.1.1. Bouton ajouter

Si la table est en lecture-écriture, le bouton Ajouter est actif. La nouvelle entité est immédiatement créée en bas de liste, sa clé primaire et les champs avec valeur automatique sont immédiatement calculés et sauvegardés. On peut tout de suite commencer à éditer les autres valeurs.

3.1.2 Bouton Supprimer

Si la table est en lecture-écriture, on peut supprimer une entité ou une sélection d'entités, contigüe ou disjointe. Un message de confirmation est présenté, puis un message de bon déroulement ou d'erreur en fonction du résultat de la suppression (entité verrouillée typiquement).

3.1.3 Bouton Copier

Récupère dans le presse-papiers l'intégralité du contenu de la sélection au format JSON, à l'exception des champs Blob et Image. Les champs calculés font partie du texte copié. Le __STAMP de 4D est également inclus dans le résultat.

3.1.4 Bouton Exporter

Cette fonction exporte l'ensemble des entités affichées dans la fenêtre et non pas la sélection manuelle. Un dialogue permet de sélectionner le format d'export : séparateur de champ, fin de ligne, ajout optionnel de guillemets autour de chaque valeur. Tous les champs sont exportés quelles que soient les colonnes affichées dans la liste.

3.1.5 Bouton Tout sélectionner

Affiche toutes les entités de la data classe.

3.1.6 Bouton Sous-Sélection

Permet d'isoler une sélection manuelle d'enregistrements/entités.

3.1.7 Bouton Rechercher

Propose un menu déroulant comportant 3 choix :

  • Recherche classique : l'éditeur de formulaire traditionnel de 4D s'ouvre
  • Recherche ORDA : une requête ORDA est préparée qu'il suffit de compléter selon la syntaxe ORDA. Il est bien sûr possible de remplacer "query" par une autre fonction, un lien, etc..

En cas de mauvaise syntaxe la requête ne sera pas exécutée.

La requête est conservée en mémoire afin de pouvoir la corriger sans tout ressaisir.

  • Recherche ORDA dans sélection

La requête ORDA est effectuée dans la sélection présente à l'écran.

3.1.8 Bouton Appliquer formule

S'applique sur une entité ou une sélection d'entités contigüe ou disjointe. Permet d'appliquer une formule ORDA en respectant la syntaxe "Entity.attribute:="

3.1.9 Bouton Voir liste tables

Ce bouton permet de remettre au premier plan la liste des tables.

3.2 Interface

Les fenêtres de tables/data classes s'ouvrent en cascade lorsqu'elles sont ouvertes l'une à la suite de l'autre ou toutes ensemble. Une fois une fenêtre agrandie et/ou déplacée, les fenêtres suivantes s'empileront au même endroit, avec un décalage et avec la même taille. En cliquant sur Majuscule lors de l'ouverture, on reviendra aux dimensions et emplacement par défaut.

La fermeture d'une fenêtre de l'ATL peut se faire par le raccourci clavier Cmd/Ctrl-W.

Les champs de la table/data classe sont représentés à la fois dans les colonnes de la liste et dans la sidebar sur la gauche de la fenêtre sous l'intitulé "Champs affichés".

Il est possible de masquer certains champs en les décochant, ou bien de tout décocher d'abord pour ne recocher ensuite qu'un nombre limité de champs.

En sélectionnant un des champs dans la sidebar, la colonne correspondante sera surlignée en jaune et un scroll horizontal s'effectuera si nécessaire pour l'afficher dans la fenêtre.

La largeur des colonnes peut être réglée de façon globale, en plus d'individuelle, grâce au curseur en bas de fenêtre. Dans tous les cas les colonnes correspondant aux champs booléens ne sont pas agrandies.

Les colonnes sont bien sûr déplaçables et triables.

Par défaut, afin de préserver les performances d'affichage, les champs objets sont représentés par la mention [object] s'ils contiennent une valeur, ou par la mention Null dans le cas contraire. En cochant l'option "Montrer les objets" dans la side bar, le contenu des objets sera affiché.

3.3 Recherche

Outre la recherche via l'éditeur de recherche 4D ou une formule ORDA (voir 3.1.7) il y a d'autres façons de rechercher des données dans l'ATL.

Le Search Picker en haut à droite de la fenêtre fonctionne selon la syntaxe (@valeur1@) AND (@valeur2@) AND .... (@valeurN@).

On peut donc saisir une ou plusieurs chaînes pour retrouver toutes les entités qui contiennent toutes ces valeurs dans les champs textes ou qui sont égales à ces valeurs dans les champs numériques.

Dans l'exemple ci-dessus, aucun résultat n'aurait été obtenu sans avoir coché l'option "Rechercher sur tous les champs" car aucun des champs de la table n'est indexé.

Par défaut seuls les champs indexés sont utilisés par le Search Picker pour des raisons de performance. Si la recherche ne retourne pas les résultats que vous espérez pensez à vérifier cette option. En cochant "Tous les champs" la recherche s'effectuera sur les champs non indexés et les champs calculés.

Par contre si beaucoup de champs sont présents dans la table, la recherche sera fortement ralentie. Il existe d'autres options de recherche comme rechercher précisément sur un champ.

Pour ce faire vous pouvez faire un clic droit sur une colonne de la liste ou une ligne de la side bar.

Une zone de texte vous permettra de saisir soit une valeur exacte à rechercher, soit une chaîne partielle à condition de saisir vous-même un ou deux @. Attention ! Contrairement au Search Picker les espaces ne sont pas considérés comme un séparateur de mots. La chaîne "Abu Dhabi" cherchera les villes correspondant exactement à ce libellé.

Sur un champ booléen vous pouvez saisir une des chaînes "True", "Vrai", "False" ou "Faux" pour réaliser la recherche.

Hormis pour les booléens, la recherche par clic droit et le search picker ne permettent pas de rechercher une valeur nulle ou vide. Pour cela vous devez utiliser le bouton de Recherche de la barre d'outils.

La recherche par clic-droit permet de rechercher rapidement sur un champ calculé.

A noter que le clic-droit ne fonctionne que si une sélection d'entités est déjà présente dans la liste. On ne peut pas faire de recherche de cette manière sur une liste vide.

3.3.1 Utiliser la valeur du search picker

Si une première recherche via le search picker a été faite et qu'elle ramène trop de résultats, on peut choisir une colonne spécifique puis faire clic droit pour ne rechercher que sur cette colonne. La valeur saisie dans le search picker est disponible pour un choix direct sans passer par le dialogue de saisie.

Dans l'exemple ci-dessous on recherche les aéroports situés à la latitude de 57° mais on obtient également ceux de longitude 57°.

On peut immédiatement faire un clic droit sur la colonne latitude et relancer la recherche sans ressaisir la valeur.

3.4 Navigation

Lorsqu'on a besoin de consulter l'enregistrement parent d'une donnée, ou au contraire les enregistrements liés à une clé primaire, dans le mode utilisation de 4D, il faut copier la clé primaire et la coller dans l'éditeur de recherche de la/les table(s) liée(s), ce qui est assez fastidieux et encore plus contraignant quand il s'agit de partir d'une sélection d'entités (on préfère écrire une méthode dans ce cas-là).

L'ATL propose une solution rapide et intuitive à cette question.

3.4.1 Consulter le parent d'une entité

En faisant un clic droit sur la clé étrangère d'une entité on voit immédiatement toutes les valeurs de l'enregistrement parent inscrites en gris dans le menu déroulant. Si seule la connaissance du nom de la fiche parent était nécessaire, cette opération est suffisante.

Mais on peut aussi ouvrir l'enregistrement parent pour le modifier ou continuer la navigation vers d'autres tables.

Note : les raccourcis clavier visibles dans la liste des champs sont inhérents au contenu de ces champs et doivent être ignorés.

3.4.2 Consulter les parents de plusieurs entités

En partant d'une sélection d'entités et en faisant clic-droit + Voir table parent on obtiendra la liste de tous les parents de la sélection.

3.4.3 Consulter les enfants d'une entité

En faisant un clic droit sur la clé primaire d'une entité on obtiendra la liste de toutes les tables et de tous les liens ORDA qui arrivent sur cette entité. Il suffit de sélectionner un des liens pour ouvrir une nouvelle fenêtre contenant la sélection des entités liées obtenues par ce lien.

Dans l'exemple ci-dessous, deux liens de la table Line arrivent sur la table Airport, on doit choisir par quel lien passer pour visualiser les lignes de l'aéroport sélectionné.

3.4.4 Consulter les enfants de plusieurs entités

La même logique s'applique sur une sélection d'entités : faire clic-droit sur la clé primaire d'une des entités et sélectionner le lien choisi pour ouvrir une nouvelle fenêtre contenant tous les enregistrements liés de la sélection.

Dans l'exemple ci-dessous nous cherchons tous les aéroports des pays d'Asie, Chine exceptée. Nous obtenons 383 résultats.

3.4.5 Navigation et visibilité des tables

La découverte des liens des tables liées prend en compte la restriction concernant les tables masquées (voir 1.3.1).

Voici un exemple avec la table Line visible :

Recherche parent depuis la table Slot.

Recherche enfants depuis la table Airport.

Voici le même exemple avec la table Line masquée.

Recherche parent depuis la table Slot.

Recherche enfants depuis la table Airport.

3.4.6 Navigation au long cours

Grâce à ORDA on peut naviguer sur un nombre infini de niveaux très rapidement en enchaînant les recherches d'enfants et de parents à partir d'une sélection de départ.

Si l'on sait déjà que l'on va ouvrir des tables intermédiaires inutiles et qu'on ne souhaite pas encombrer son écran, on peut maintenir la touche majuscule en sélectionnant le lien Parent ou Enfant sur clic-droit. Ceci fermera la fenêtre d'origine en ouvrant la fenêtre de destination.

3.5 Edition

Les valeurs de la liste, à l'exception des champs calculés, se modifient en double-cliquant puis en remplaçant leur valeur dans la boîte de dialogue.

Il est possible de coller une nouvelle valeur plutôt que la saisir.

La valeur Null n'est pas acceptée : il faut passer par l'application d'une formule (voir 3.1.8).

Dès la validation du dialogue, la valeur est enregistrée. Une notification de succès ou d'échec de l'opération apparaît en haut de l'écran.

Attention ! Il n'existe aucun contrôle ni garde-fou concernant la modification d'une clé primaire ou d'une valeur unique. Il y a donc un risque de perdre un lien avec des fiches liées, ou de créer un doublon sur un champ unique.

3.5.1 Modification d'un booléen

Les champs booléens sont représentés sous forme de case à cocher. Il suffit donc de cocher ou décocher les valeurs.

Note : Il est possible de faire un clic droit sur une colonne booléenne sans altérer la valeur de la cellule. Cependant il faut veiller à ne pas cliquer par erreur sur ce type de colonne car les valeurs seraient immédiatement modifiées.

3.5.2 Modification d'une image

Double-cliquer sur la cellule pour ouvrir la zone de l'image qui peut être modifiée de trois façons :

  • Un simple clic sur l'image ouvrira une boîte de sélection de fichier,

  • On peut également glisser-déposer une image sur la zone,
  • Enfin le menu contextuel natif de 4D est opérationnel,

3.5.3 Modification d'un objet

En double-cliquant sur un champ objet on ouvre un éditeur JSON qui permet de modifier le contenu de l'objet de manière intuitive.

On peut insérer, déplacer ou supprimer dans l'objet des éléments qui peuvent être de plusieurs types :

  • Objets,
  • Collections (désignés comme Arrays dans l'éditeur JSON),
  • Clés/Valeurs : textes, numériques,booléens ("true" ou "false").

Les valeurs décimales doivent être saisies avec un point, et non pas une virgule.

Il est à noter que contrairement au reste de l'ATL, les modifications doivent être validées pour être prises en compte.

Il est possible de rendre nul l'objet courant avec le bouton correspondant. La fenêtre de l'éditeur sera immédiatement fermée et l'objet sera noté Null dans la liste de l'ATL.

On peut également copier ou coller un objet entre deux enregistrements.

Il est possible d'imprimer le contenu de l'objet par clic droit.

Pour plus de détails sur le fonctionnement de l'éditeur se référer à https://github.com/josdejong/jsoneditor/

3.5.4 Copier-coller des valeurs

Outre la copie de l'enregistrement entier (voir 3.1.3) et la copie d'une valeur depuis l'éditeur de saisie (voir 3.5), il est possible de copier la valeur d'une cellule particulière par clic droit + Copier.

Et il est ensuite possible de coller la valeur dans une autre cellule, si la table n'est pas en lecture seule (voir 1.3.2 et 1.3.3).

Attention, cette action appliquée sur une sélection de plusieurs lignes ne traitera que le dernière ligne (voir point suivant).

3.5.5 Copier des colonnes

Sur une sélection de plusieurs entités, l'action Clic-droit + Copier colonne permet de coller la suite de valeurs du champ sélectionné dans un éditeur de texte ou une feuille de calcul (pour calculer une somme par exemple).

3.5.6 Copier des valeurs distinctes

Sur une sélection de plusieurs entités, l'action Clic-droit + Valeur distinctes permet de coller toutes les valeurs distinctes de la colonne pour les lignes sélectionnées dans le presse-papiers.

3.6 Rafraîchissement

Par principe, les valeurs visibles dans l'ATL sont celles correspondant au moment de l'ouverture de la table, ou de la dernière action réalisée (une recherche par exemple).

Sans aucune action de la part de l'utilisateur, les données peuvent devenir périmées et incorrectes, ainsi que leur lien vers leurs données liées.

Il y a plusieurs façons de rafraîchir les données de façon manuelle ou automatique.

3.6.1 Rafraîchissement manuel

On peut tout simplement cliquer sur Tout Sélectionner (voir 3.1.5) pour rafraîchir toute la table.

Si on souhaite uniquement mettre à jour une entité précise sans perdre sa recherche courante, on peut utiliser le clic droit sur la clé primaire avec l'option Recharger l'enregistrement.

3.6.2 Rafraîchissement automatique

Dans la side bar on peut trouver 3 options de rafraîchissement automatique :

  • Sur activation : c'est le mode par défaut : le rafraîchissement des entités affichées se fait sans perdre la sélection courante au moment où la fenêtre repasse au premier plan,

  • Sur minuteur : avec cette option, les données visibles sont régulièrement rafraîchies, toutes les 10 secondes par défaut. Il est possible de modifier cette fréquence au niveau des paramètres de l'ATL (voir 1.3.5).

  • Désactivé : on peut choisir de ne pas rafraîchir les données pour par exemple afficher deux fenêtres de la même sélection dont l'une reste dans un état initial et l'autre est modifiée et rafraîchie en temps réel.

Dans tous les cas le réglage de rafraîchissement automatique est propre à chaque table.

3.7 Préférences d'affichage

Certaines tables ont beaucoup de champs qu'il n'est pas forcément utile de visualiser en permanence. D'autres champs sont au contraire très importants et mériteraient d'être vus en début de liste. Enfin vous pouvez avoir besoin de vues différentes en fonction du contexte et de vos objectifs. Vous pouvez gérer tous ces paramètres grâce aux préférences d'affichage. Vous pouvez par exemple avoir une préférence pour n'afficher que les champs indexés afin de faire des recherches rapides, etc.

Les préférences sont indépendantes pour chaque table. Par contre elles sont partagées pour tous les utilisateurs.

3.7.1 Créer une préférence

Effectuez les réglages d'affichage à mémoriser en choisissant :

  • les colonnes à afficher
  • l'ordre des colonnes visibles
  • l'ordre de tri (choix de la colonne, descendant ou ascendant)
  • la largeur des colonnes
  • les options de recherche (champs indexés ou tous les champs)
  • les options d'affichage des objets et de rafraîchissement automatique.

Note : la zone de recherche ne fait pas partie des critères d'affichages mémorisés. Les préférences ne concernent donc que l'apparence des données, et pas du tout leur contenu.

Cliquer sur le bouton Ajouter.

Saisir le nom de la préférence, qui ne doit pas avoir été déjà utilisé pour cette table. Les espaces seront automatiquement supprimés en début et en fin de chaîne.

La Préférence est mémorisée

Vous pouvez créer autant de préférences que désiré en suivant la même procédure.

3.7.2 Appeler une préférence

Pour modifier l'affichage selon une préférence enregistrée, il suffit de la sélectionner dans la liste des préférences. Les noms de préférence apparaissent en ordre alphabétique.

Pour revenir à une vue standard avec tous les champs, choisir l'option "Effacer" dans le sélecteur. Ceci ne supprime pas la préférence, mais simplement ne l'utilise plus.

3.7.3 Modifier une préférence

Lorsqu'une préférence est utilisée, il est possible de modifier son réglage et son nom en modifiant les paramètres avant de cliquer sur le bouton Modifier.

Vous pouvez alors :

  • Valider sans modifier le nom. Les paramètres d'affichage actuels seront mémorisés avec votre préférence.

  • Valider après avoir modifié le nom. Les paramètres d'affichage actuels seront mémorisés avec votre préférence qui sera renommée.

  • Annuler. La préférence ne sera pas modifiée. Les paramètres d'affichage actuel ne seront associés à aucune préférence.

3.7.4 Préférence favorite

A l'ouverture d'une table, aucune préférence n'est sélectionnée. Tous les champs sont affichés selon les réglages par défaut de l'ATL.

En cliquant sur le bouton Favori, la préférence courante sera utilisée par défaut à la prochaine ouverture de la table.

Il n'est possible de désigner qu'une préférence favorite par table.

Pour modifier la préférence par défaut vous pouvez soit :

  • sélectionner une autre préférence et cliquer à nouveau sur Favori pour la désigner comme nouvelle préférence par défaut.

  • sélectionner la préférence par défaut et cliquer sur Favori pour effacer le réglage. Aucune préférence par défaut ne sera plus utilisée.

3.7.5 Supprimer une préférence

Pour supprimer une préférence la sélectionner puis cliquer sur le bouton Supprimer. Un dialogue de confirmation s'affiche.

Une fois validée, la préférence est supprimée et l'affichage revient au réglage par défaut de l'ATL.

Si la préférence supprimée était favorite, plus aucune préférence par défaut n'existera pour cette table.

3.7.6 Rafraîchir une préférence

Il peut arriver qu'une fois une préférence sélectionnée vous ayez modifié plusieurs paramètres d'affichage (colonnes affichées, tri, etc.) sans pour autant vouloir modifier la préférence actuelle.

Un clic sur le bouton rafraîchir permet de rappeler la préférence et d'appliquer ses réglages. Cette action est équivalente à choisir à nouveau la préférence dans la liste.