Console
La Console sert à essayer un morceau de code Ninox avant de le placer dans votre base : vous l'écrivez, vous l'exécutez, et vous voyez aussitôt le résultat.
La Console existe depuis la version 3.1. Les débogueurs, « Vérifier », « Mettre en forme » et l'autocomplétion JavaScript arrivent avec la version 3.2.0 (bêta).
L'onglet Console permet d'écrire du code Ninox et de l'exécuter aussitôt, comme dans un interpréteur, puis de le mettre au point : vérification sans exécution, débogueur pas à pas, débogueur par rejeu.
L'onglet est réservé aux administrateurs. Il n'affiche que son icône, une fenêtre de terminal, entre les onglets Traceur de débogage et Erreurs ; son nom apparaît au survol. Il se désactive dans les Paramètres Ninext, section « Gestionnaire de scripts ».
Choisir le contexte d'exécution
Le code s'exécute dans le contexte d'une fiche, comme une formule de sa table — ou sans fiche :
| Contexte | Effet |
|---|---|
| Aucun env | Aucune fiche : le code s'évalue comme du code global. |
| Enr. en cours | La fiche affichée au premier plan dans Ninox. Le contexte suit vos changements de fiche. |
| Enregistrement | Une fiche que vous choisissez, parmi celles ouvertes dans les fenêtres de Ninox, ou par Sélectionner un autre enregistrement…, qui ouvre un sélecteur (table, recherche, liste des fiches). |
| Formule | La fiche que renvoie une formule que vous écrivez, par exemple record(Customer, 12). La formule est réévaluée à chaque exécution. |
La barre de contexte rappelle le contexte choisi ; sa croix le réinitialise.
Écrire le code
L'éditeur de la Console offre :
- la coloration syntaxique de Ninox ;
- l'autocomplétion des fonctions, des tables, des champs et des mots-clés, pendant la frappe ou par Ctrl + Espace ;
- le soulignage des erreurs (vaguelette rouge) et des avertissements (pointillé ambre) pendant la frappe, avec une pastille ⛔ ou ⚠ dans la marge ;
- le surlignage des autres occurrences du mot sélectionné ;
- un bouton Copier, en haut à droite, au survol de l'éditeur ;
- une poignée, sous l'éditeur, qui en règle la hauteur.
L'autocomplétion JavaScript dans les blocs natifs
Dans un bloc #{ … }#, la Console propose la même aide à la saisie que la console du navigateur, adaptée à ce que reçoit vraiment le bloc :
- les variables et les paramètres Ninox visibles, sous leur forme JavaScript, avec leur type ;
- les fonctions Ninox locales,
ui,database, etcallbackquand le bloc est déclaré:callbackou:async; - après un point, les membres de l'objet — pour une fiche, les noms de ses champs ; un nom qui n'est pas un identifiant JavaScript s'insère sous la forme
['…']; - dans l'en-tête
#{:, les types ; après:nid(ou:rid(, la liste des tables.
Cette aide n'existe que dans la Console.
Exécuter

Le bouton vert Exécuter lance le code, tout comme Ctrl + Entrée (⌘ + Entrée sur Mac). Son chevron propose trois modes :
| Mode | Effet |
|---|---|
| Exécuter | Exécute le code d'un trait et affiche le résultat. |
| Rejeu | Exécute le code une fois, puis vous laisse parcourir son déroulement en avant et en arrière. |
| Pas à pas | Exécute le code instruction par instruction, en s'arrêtant où vous le décidez. |
Le mode choisi est mémorisé ; le bouton en prend le nom, et le raccourci lance ce mode. Choisir Pas à pas ou Rejeu fait aussitôt paraître, sous l'éditeur, la barre de ce débogueur, ses commandes en place mais éteintes : rien n'est exécuté avant le lancement. Après une exécution réussie, le code est remis en forme dans l'éditeur ; l'historique garde le texte tel que vous l'avez écrit.
Lire les résultats

Les résultats s'empilent, le plus récent en haut ; la Console en garde vingt. Chaque résultat indique son type, son contexte, sa date, son heure et sa durée d'exécution ; un clic sur son en-tête le replie, sa croix le supprime, et Effacer vide la liste.
- Une valeur simple s'affiche avec un bouton Copier.
- Une fiche s'affiche avec un bouton qui l'ouvre dans Ninox, et ses champs en arbre.
- Une liste de fiches s'affiche comme dans les vues de Ninox : mise en forme conditionnelle, vignettes des photos, pastilles de couleur, largeurs de colonnes. Un onglet par vue, dans l'ordre de Ninox ; les vues que vous n'avez pas le droit de voir sont masquées. Quand les onglets ne tiennent pas tous, le bouton … (« Autres vues ») liste ceux qui sont hors champ. Un clic sur une ligne ouvre la fiche, et les lignes se chargent par 100 au fil du défilement.
- Les objets et les listes s'affichent en arbre dépliable ; chaque valeur se copie, et une fiche s'ouvre d'un clic.
- Un texte qui contient du JSON s'affiche tel quel ; le bouton Arbre le déplie à la demande.
- Un texte de plus de 100 000 caractères s'affiche aussitôt, tronqué, avec Afficher tout ; Copier copie toujours le texte entier.
Pendant une évaluation longue, un indicateur d'attente apparaît.
Vérifier sans exécuter
Vérifier (Ctrl + Maj + Entrée, ⌘ + Maj + Entrée sur Mac) compile le code sans l'exécuter : aucun effet sur les données. Il signale les erreurs et les avertissements de Ninox, et applique les contrôles propres à Ninext :
- une fonction d'interface ou un bloc natif placés dans un
do as server, où ils seraient sans effet ; - une variable déclarée puis jamais lue ;
- la syntaxe JavaScript des blocs natifs ;
- le HTML et le CSS passés à
html().
Le verdict s'affiche dans la barre, et le curseur se place sur le premier diagnostic. Quand deux types ne s'accordent pas, l'explication dit lesquels. Si le code est valide, il est mis en forme.
Mettre en forme
Mettre en forme (Ctrl + Maj + F, ⌘ + Maj + F sur Mac) remet le code d'aplomb, sans l'exécuter : indentation, espaces autour des opérateurs, noms de champs écrits comme Ninox les affiche. Le JavaScript des blocs natifs #{ … }# est mis en forme lui aussi : un bloc écrit d'un seul tenant se déplie sous la ligne qui le porte.
Un code qui contient des erreurs doit d'abord être corrigé ; et si la mise en forme risque de faire perdre une partie du texte, elle s'abstient et le dit.
Le même bouton existe dans les éditeurs de script de Ninox : il apparaît en haut à droite, au survol de l'éditeur, et le raccourci clavier y fonctionne aussi.
Le débogueur pas à pas

Les points d'arrêt
- Un clic dans la marge de gauche, ou sur le numéro de ligne, pose un point d'arrêt (disque rouge) ; un second clic le retire.
- Un clic droit, ou Alt + clic, ouvre le panneau Condition d'arrêt : l'exécution ne s'y arrête que si votre condition est vraie, par exemple
i > 10. Le même panneau permet de Désactiver le point sans le perdre (anneau gris), puis de le Réactiver. Un point conditionnel est un disque ambre. - Les conditions sont évaluées sans accès à la base, avec des fonctions simples (
count,length,text,upper,lower,contains…). Si une condition ne peut pas être évaluée, l'exécution s'arrête par sécurité. - Dès qu'un point d'arrêt actif est posé, Exécuter s'y arrête lui aussi, puis continue en pas à pas.
Les commandes
La session démarre en pause sur la première instruction.
| Commande | Effet |
|---|---|
| Pas suivant | Exécute l'instruction et s'arrête avant la suivante. |
| Sous-pas | Avance sous-expression par sous-expression, en montrant la valeur obtenue. Sur un appel de fonction ou sur un champ formule du schéma, descend dans son code. |
| Sortir | Termine la fonction en cours et revient à l'appelant. |
| Continuer | Court jusqu'au prochain point d'arrêt, ou jusqu'à la fin. |
| Arrêter | Abandonne l'exécution. |
Quand la barre est étroite, les commandes n'affichent plus que leur icône ; leur nom apparaît au survol. Le bouton d'information (ⓘ) de la barre déplie le mode d'emploi du débogueur, et la croix, qui paraît une fois l'exécution terminée, ferme son panneau.
Quand l'exécution descend dans une fonction ou dans une formule, son code s'ouvre dans un cadre empilé, qui glisse depuis la droite comme dans Ninox. On peut y poser des points d'arrêt : ils sont rangés par nom de fonction, valent pour tous les appels de cette fonction et pour les exécutions suivantes, et disparaissent au rechargement de la page. Le cadre d'une formule du schéma porte la mention formule. Une poignée, sur le bord gauche d'un cadre, règle la part du cadre du dessous qu'il recouvre. Un bloc #{ … }# compte pour un seul pas.
Les variables
À chaque pas, le panneau Variables connues à cette étape donne la valeur et le type de chaque variable ; une valeur se déplie, se copie, et une fiche s'ouvre d'un clic. Les variables qui existent mais sont hors de portée apparaissent en gris.
À savoir
L'exécution est réellement suspendue à chaque pause, et la base continue de vivre pendant ce temps : autres utilisateurs, interface de programmation, déclencheurs. Ce qui a déjà été exécuté reste appliqué, même si vous arrêtez. Une pause de plus de dix minutes met fin à l'exécution.
Le débogueur par rejeu
Le code s'exécute pour de bon, une seule fois et d'un trait. Vous parcourez ensuite son déroulement en avant et en arrière, avec les commandes du pas à pas — Pas suivant, Sous-pas, Sortir, Continuer —, plus Première étape et Pas précédent. La liste des étapes donne la valeur obtenue à chacune ; un clic sur une étape y mène directement. Le rejeu compte en grands pas : un par instruction exécutée, et un par tour de boucle, qui donne la valeur de la variable de boucle. Les sous-pas, en retrait, portent le numéro de leur grand pas (3.1, 3.2…) et sont comptés à part (« +6 sous-pas ») ; Sortir remonte aussi d'un sous-pas au grand pas qui le porte. Les cadres empilés et le panneau des variables sont les mêmes qu'au pas à pas. Idéal pour comprendre ce qui s'est passé sans relancer le code.
Limites :
- une fiche apparaît dans son état actuel, pas dans celui du moment de l'exécution ;
- la condition d'un point d'arrêt conditionnel n'est pas rejouée : le rejeu s'y arrête toujours ;
- au-delà de 10 000 étapes, l'enregistrement est tronqué.
Les deux débogueurs refusent un code qui contient des erreurs, et le signalent comme Vérifier.
Déboguer depuis l'éditeur de Ninox
Au survol d'un éditeur de script de Ninox, le bouton Déboguer dans la Console apparaît en haut à droite. Il ouvre la Console et y emporte votre code, sans l'exécuter, avec la fiche en cours comme contexte : s'il n'y a pas de fiche active de cette table, le sélecteur de fiche s'ouvre sur elle. Depuis le code global, le contexte est Aucun env, et seule la fonction où se trouve le curseur est emportée.
Le code emporté remplace celui de la Console, et ses points d'arrêt.
L'historique, et votre travail qui vous suit
- Le bouton Historique liste les 50 dernières commandes ; Alt + ↑ et Alt + ↓ les parcourent depuis l'éditeur. Un clic recharge le code et son contexte, à la place du code en cours et de ses points d'arrêt.
- Au survol d'une ligne de l'historique, une corbeille la supprime.
- Le code repris de l'historique est reconstruit dans la langue actuelle de Ninox : « Id » devient « Nr » en allemand. Un code rappelé après un changement de langue compile donc toujours.
- Au démarrage, la Console retrouve votre dernier code, son contexte, ses résultats et ses points d'arrêt — chacun les siens sur un poste partagé.
- Pour un administrateur, l'historique et le dernier code suivent aussi d'un ordinateur à l'autre, et survivent au vidage des données du navigateur.
Attention
Cet historique est enregistré, en clair, dans les réglages du plugin, que chargent tous les utilisateurs de la base. N'y laissez pas de mot de passe ni de clé d'accès.
