Consola

La Consola serveix per provar un fragment de codi Ninox abans d'incloure'l a la teva base de dades: l'escrius, l'executes i en veus el resultat a l'instant.

La Consola existeix des de la versió 3.1. Els depuradors, «Verifica», «Formata» i l'autocompletació JavaScript arriben amb la versió 3.2.0 (beta).

La pestanya Consola permet escriure codi de Ninox i executar-lo immediatament, com en un intèrpret, i després depurar-lo: verificació sense execució, depurador pas a pas, depurador per repetició.

La pestanya està reservada als administradors. Només mostra la seva icona, una finestra de terminal, entre les pestanyes Rastrejador de depuració i Errors; el nom apareix en passar-hi el ratolí per sobre. Es desactiva a la Configuració de Ninext, secció «Gestor d'scripts».

Triar el context d'execució

El codi s'executa en el context d'un registre, com una fórmula de la seva taula — o sense cap registre:

ContextEfecte
Sense entornCap registre: el codi s'avalua com a codi global.
Registre actiuEl registre que es mostra en primer pla a Ninox. El context segueix els vostres canvis de registre.
RegistreUn registre que trieu, d'entre els oberts a les finestres de Ninox, o amb Tria un altre registre…, que obre un selector (taula, cerca, llista de registres).
FórmulaEl registre que retorna una fórmula que escriviu, per exemple record(Customer, 12). La fórmula es torna a avaluar a cada execució.

La barra de context recorda el context triat; la seva creu el restableix.

Escriure el codi

L'editor de la Consola ofereix:

  • el ressaltat de sintaxi de Ninox;
  • l'autocompletació de les funcions, les taules, els camps i les paraules clau, mentre escriviu o amb Ctrl + Espai;
  • el subratllat dels errors (ondulació vermella) i dels avisos (puntejat ambre) mentre escriviu, amb un indicador ⛔ o ⚠ al marge;
  • el ressaltat de les altres aparicions de la paraula seleccionada;
  • un botó Copiar, a la part superior dreta, en passar el ratolí per sobre de l'editor;
  • una nansa, sota l'editor, que n'ajusta l'alçada.

L'autocompletació JavaScript als blocs natius

En un bloc #{ … }#, la Consola ofereix la mateixa ajuda a l'escriptura que la consola del navegador, adaptada al que rep realment el bloc:

  • les variables i els paràmetres de Ninox visibles, en la seva forma JavaScript, amb el seu tipus;
  • les funcions locals de Ninox, ui, database, i callback quan el bloc es declara :callback o :async;
  • després d'un punt, els membres de l'objecte — per a un registre, els noms dels seus camps; un nom que no és un identificador JavaScript s'insereix en la forma ['…'];
  • a la capçalera #{:, els tipus; després de :nid( o :rid(, la llista de taules.

Aquesta ajuda només existeix a la Consola.

Executar

Els tres modes d'execució de la Consola

El botó verd Executar llança el codi, igual que Ctrl + Retorn (⌘ + Retorn al Mac). La seva fletxa ofereix tres modes:

ModeEfecte
ExecutarExecuta el codi d'una tirada i mostra el resultat.
RepeticióExecuta el codi una vegada i després us deixa recórrer el seu desenvolupament endavant i enrere.
Pas a pasExecuta el codi instrucció per instrucció, i s'atura on decidiu.

El mode triat es desa; el botó n'adopta el nom, i la drecera llança aquest mode. Triar Pas a pas o Repetició fa aparèixer immediatament, sota l'editor, la barra d'aquest depurador, amb les ordres al seu lloc però desactivades: no s'executa res abans del llançament. Després d'una execució correcta, el codi es torna a formatar a l'editor; l'historial conserva el text tal com l'heu escrit.

Llegir els resultats

Resultat d'una consulta a la Consola

Els resultats s'apilen, el més recent al capdamunt; la Consola en conserva vint. Cada resultat indica el seu tipus, el seu context, la seva data, la seva hora i la seva durada d'execució; un clic a la seva capçalera el plega, la seva creu el suprimeix, i Esborrar buida la llista.

  • Un valor simple es mostra amb un botó Copiar.
  • Un registre es mostra amb un botó que l'obre a Ninox, i els seus camps en arbre.
  • Una llista de registres es mostra com a les vistes de Ninox: format condicional, miniatures de les fotos, pastilles de color, amplades de columna. Una pestanya per vista, en l'ordre de Ninox; les vistes que no teniu dret a veure queden amagades. Quan les pestanyes no hi caben totes, el botó … («Més vistes») llista les que queden fora. Un clic en una línia obre el registre, i les línies es carreguen de 100 en 100 a mesura que us desplaceu.
  • Els objectes i les llistes es mostren en un arbre desplegable; cada valor es pot copiar, i un registre s'obre amb un clic.
  • Un text que conté JSON es mostra tal qual; el botó Arbre el desplega a demanda.
  • Un text de més de 100 000 caràcters es mostra de seguida, truncat, amb Mostra-ho tot; Copiar sempre copia el text sencer.

Durant una avaluació llarga, apareix un indicador d'espera.

Verificar sense executar

Verifica (Ctrl + Maj + Retorn, ⌘ + Maj + Retorn al Mac) compila el codi sense executar-lo: cap efecte sobre les dades. Assenyala els errors i els avisos de Ninox, i aplica els controls propis de Ninext:

  • una funció d'interfície o un bloc natiu situats en un do as server, on no tindrien cap efecte;
  • una variable declarada que després no es llegeix mai;
  • la sintaxi JavaScript dels blocs natius;
  • l'HTML i el CSS passats a html().

El veredicte es mostra a la barra, i el cursor se situa al primer diagnòstic. Quan dos tipus no concorden, l'explicació diu quins. Si el codi és vàlid, es formata.

Formatar

Formata (Ctrl + Maj + F, ⌘ + Maj + F al Mac) endreça el codi, sense executar-lo: sagnat, espais al voltant dels operadors, noms de camps escrits tal com els mostra Ninox. El JavaScript dels blocs natius #{ … }# també es formata: un bloc escrit d'una sola tirada es desplega sota la línia que el conté.

Un codi que conté errors s'ha de corregir primer; i si el format pot fer perdre una part del text, no s'aplica i ho diu.

El mateix botó existeix als editors d'scripts de Ninox: apareix a la part superior dreta, en passar el ratolí per sobre de l'editor, i la drecera de teclat també hi funciona.

El depurador pas a pas

Depurador pas a pas: punt d'aturada i variables

Els punts d'aturada

  • Un clic al marge esquerre, o sobre el número de línia, posa un punt d'aturada (disc vermell); un segon clic el treu.
  • Un clic dret, o Alt + clic, obre el tauler Condició d'aturada: l'execució només s'hi atura si la vostra condició és certa, per exemple i > 10. El mateix tauler permet desactivar el punt sense perdre'l (anella grisa), amb Desactiva, i després tornar-lo a activar amb Reactiva. Un punt condicional és un disc ambre.
  • Les condicions s'avaluen sense accés a la base de dades, amb funcions senzilles (count, length, text, upper, lower, contains…). Si una condició no es pot avaluar, l'execució s'atura per seguretat.
  • Tan bon punt hi ha un punt d'aturada actiu, Executar també s'hi atura, i després continua pas a pas.

Les ordres

La sessió comença en pausa a la primera instrucció.

OrdreEfecte
Pas següentExecuta la instrucció i s'atura abans de la següent.
SubpasAvança subexpressió per subexpressió, i mostra el valor obtingut. En una crida de funció o en un camp de fórmula de l'esquema, entra al seu codi.
SortirAcaba la funció en curs i torna a qui l'ha cridada.
ContinuarAvança fins al proper punt d'aturada, o fins al final.
AturarAbandona l'execució.

Quan la barra és estreta, les ordres ja només mostren la seva icona; el nom apareix en passar-hi el ratolí per sobre. El botó d'informació (ⓘ) de la barra desplega les instruccions d'ús del depurador, i la creu, que apareix un cop acabada l'execució, en tanca el tauler.

Quan l'execució entra en una funció o en una fórmula, el seu codi s'obre en un marc apilat, que llisca des de la dreta com a Ninox. Hi podeu posar punts d'aturada: s'agrupen pel nom de la funció, valen per a totes les crides d'aquesta funció i per a les execucions següents, i desapareixen quan es torna a carregar la pàgina. El marc d'una fórmula de l'esquema porta la menció fórmula. Una nansa, a la vora esquerra d'un marc, ajusta quina part del marc de sota cobreix. Un bloc #{ … }# compta com un sol pas.

Les variables

A cada pas, el tauler Variables conegudes en aquest pas dona el valor i el tipus de cada variable; un valor es pot desplegar i copiar, i un registre s'obre amb un clic. Les variables que existeixen però que són fora d'abast apareixen en gris.

Cal saber

L'execució queda realment suspesa a cada pausa, i mentrestant la base de dades continua funcionant: altres usuaris, interfície de programació, activadors. El que ja s'ha executat queda aplicat, encara que atureu l'execució. Una pausa de més de deu minuts posa fi a l'execució.

El depurador per repetició

El codi s'executa de debò, una sola vegada i d'una tirada. Després recorreu el seu desenvolupament endavant i enrere, amb les ordres del pas a pas — Pas següent, Subpas, Sortir, Continuar —, i també Primer pas i Pas anterior. La llista de passos dona el valor obtingut a cadascun; un clic en un pas us hi porta directament. La repetició compta en passos grans: un per instrucció executada, i un per volta de bucle, que dona el valor de la variable del bucle. Els subpassos, sagnats, porten el número del seu pas gran (3.1, 3.2…) i es compten a part («+6 subpassos»); Sortir també torna d'un subpas al pas gran que el conté. Els marcs apilats i el tauler de variables són els mateixos que en el pas a pas. Ideal per entendre què ha passat sense tornar a executar el codi.

Límits:

  • un registre apareix en el seu estat actual, no en el del moment de l'execució;
  • la condició d'un punt d'aturada condicional no es reprodueix: la repetició s'hi atura sempre;
  • més enllà de 10 000 passos, l'enregistrament queda truncat.

Els dos depuradors rebutgen un codi que conté errors, i ho indiquen com Verifica.

Depurar des de l'editor de Ninox

En passar el ratolí per sobre d'un editor d'scripts de Ninox, el botó Depurar a la Consola apareix a la part superior dreta. Obre la Consola i hi porta el vostre codi, sense executar-lo, amb el registre en curs com a context: si no hi ha cap registre actiu d'aquesta taula, el selector de registres s'obre en aquesta taula. Des del codi global, el context és Sense entorn, i només s'hi porta la funció on es troba el cursor.

El codi portat substitueix el de la Consola, i els seus punts d'aturada.

L'historial, i la vostra feina que us segueix

  • El botó Historial llista les 50 darreres ordres; Alt + ↑ i Alt + ↓ les recorren des de l'editor. Un clic torna a carregar el codi i el seu context, en lloc del codi en curs i dels seus punts d'aturada.
  • En passar el ratolí per sobre d'una línia de l'historial, una paperera la suprimeix.
  • El codi recuperat de l'historial es reconstrueix en l'idioma actual de Ninox: «Id» es converteix en «Nr» en alemany. Per tant, un codi recuperat després d'un canvi d'idioma sempre compila.
  • En iniciar-se, la Consola recupera el vostre darrer codi, el seu context, els seus resultats i els seus punts d'aturada — cadascú els seus en un ordinador compartit.
  • Per a un administrador, l'historial i el darrer codi també el segueixen d'un ordinador a un altre, i sobreviuen a l'esborrat de les dades del navegador.

Atenció

Aquest historial es desa, en text pla, a la configuració del plugin, que carreguen tots els usuaris de la base de dades. No hi deixeu contrasenyes ni claus d'accés.