Console

La Console serve a provare un frammento di codice Ninox prima di inserirlo nel tuo database: lo scrivi, lo esegui e vedi subito il risultato.

La Console esiste dalla versione 3.1. I debugger, «Verifica», «Formatta» e il completamento automatico JavaScript arrivano con la versione 3.2.0 (beta).

La scheda Console permette di scrivere codice Ninox e di eseguirlo subito, come in un interprete, e poi di metterlo a punto: verifica senza esecuzione, debugger passo passo, debugger a riproduzione.

La scheda è riservata agli amministratori. Mostra solo la sua icona, una finestra di terminale, tra le schede Tracciatore debug ed Errori; il nome compare al passaggio del mouse. Si disattiva nelle Impostazioni Ninext, sezione «Gestore script».

Scegliere il contesto di esecuzione

Il codice viene eseguito nel contesto di un record, come una formula della sua tabella — oppure senza record:

ContestoEffetto
Nessun amb.Nessun record: il codice viene valutato come codice globale.
Record att.Il record visualizzato in primo piano in Ninox. Il contesto segue i vostri cambi di record.
RecordUn record che scegliete voi, tra quelli aperti nelle finestre di Ninox, oppure con Scegli un altro record…, che apre un selettore (tabella, ricerca, elenco dei record).
FormulaIl record restituito da una formula che scrivete voi, per esempio record(Customer, 12). La formula viene rivalutata a ogni esecuzione.

La barra del contesto ricorda il contesto scelto; la sua crocetta lo reimposta.

Scrivere il codice

L'editor della Console offre:

  • l'evidenziazione della sintassi di Ninox;
  • il completamento automatico di funzioni, tabelle, campi e parole chiave, durante la digitazione o con Ctrl + Spazio;
  • la sottolineatura degli errori (ondulata rossa) e degli avvisi (a puntini color ambra) durante la digitazione, con un indicatore ⛔ o ⚠ nel margine;
  • l'evidenziazione delle altre occorrenze della parola selezionata;
  • un pulsante Copia, in alto a destra, al passaggio del mouse sull'editor;
  • una maniglia, sotto l'editor, che ne regola l'altezza.

Il completamento automatico JavaScript nei blocchi nativi

In un blocco #{ … }#, la Console offre lo stesso aiuto alla digitazione della console del browser, adattato a ciò che il blocco riceve davvero:

  • le variabili e i parametri Ninox visibili, nella loro forma JavaScript, con il loro tipo;
  • le funzioni Ninox locali, ui, database, e callback quando il blocco è dichiarato :callback o :async;
  • dopo un punto, i membri dell'oggetto — per un record, i nomi dei suoi campi; un nome che non è un identificatore JavaScript viene inserito nella forma ['…'];
  • nell'intestazione #{:, i tipi; dopo :nid( o :rid(, l'elenco delle tabelle.

Questo aiuto esiste solo nella Console.

Eseguire

Le tre modalità di esecuzione della Console

Il pulsante verde Esegui avvia il codice, così come Ctrl + Invio (⌘ + Invio su Mac). La sua freccia propone tre modalità:

ModalitàEffetto
EseguiEsegue il codice tutto d'un fiato e mostra il risultato.
RiproduzioneEsegue il codice una volta, poi vi lascia percorrerne lo svolgimento in avanti e all'indietro.
Passo passoEsegue il codice istruzione per istruzione, fermandosi dove decidete voi.

La modalità scelta viene memorizzata; il pulsante ne prende il nome, e la scorciatoia avvia quella modalità. Scegliere Passo passo o Riproduzione fa comparire subito, sotto l'editor, la barra di quel debugger, con i comandi al loro posto ma disattivati: nulla viene eseguito prima dell'avvio. Dopo un'esecuzione riuscita, il codice viene riformattato nell'editor; la cronologia conserva il testo così come l'avete scritto.

Leggere i risultati

Risultato di una query nella Console

I risultati si impilano, il più recente in alto; la Console ne conserva venti. Ogni risultato indica il suo tipo, il suo contesto, la data, l'ora e la durata di esecuzione; un clic sulla sua intestazione lo comprime, la sua crocetta lo elimina, e Cancella svuota l'elenco.

  • Un valore semplice viene mostrato con un pulsante Copia.
  • Un record viene mostrato con un pulsante che lo apre in Ninox, e con i suoi campi ad albero.
  • Un elenco di record viene mostrato come nelle viste di Ninox: formattazione condizionale, miniature delle foto, pallini colorati, larghezze delle colonne. Una scheda per vista, nell'ordine di Ninox; le viste che non avete il diritto di vedere sono nascoste. Quando le schede non ci stanno tutte, il pulsante … («Altre viste») elenca quelle fuori vista. Un clic su una riga apre il record, e le righe si caricano a gruppi di 100 man mano che scorrete.
  • Gli oggetti e gli elenchi vengono mostrati come albero espandibile; ogni valore si copia, e un record si apre con un clic.
  • Un testo che contiene JSON viene mostrato così com'è; il pulsante Albero lo espande a richiesta.
  • Un testo di oltre 100.000 caratteri viene mostrato subito, troncato, con Mostra tutto; Copia copia sempre il testo intero.

Durante una valutazione lunga compare un indicatore di attesa.

Verificare senza eseguire

Verifica (Ctrl + Maiusc + Invio, ⌘ + Maiusc + Invio su Mac) compila il codice senza eseguirlo: nessun effetto sui dati. Segnala gli errori e gli avvisi di Ninox, e applica i controlli propri di Ninext:

  • una funzione d'interfaccia o un blocco nativo posti in un do as server, dove sarebbero senza effetto;
  • una variabile dichiarata e poi mai letta;
  • la sintassi JavaScript dei blocchi nativi;
  • l'HTML e il CSS passati a html().

Il verdetto compare nella barra, e il cursore si posiziona sulla prima diagnostica. Quando due tipi non concordano, la spiegazione dice quali. Se il codice è valido, viene formattato.

Formattare

Formatta (Ctrl + Maiusc + F, ⌘ + Maiusc + F su Mac) rimette in ordine il codice, senza eseguirlo: indentazione, spazi attorno agli operatori, nomi dei campi scritti come li mostra Ninox. Anche il JavaScript dei blocchi nativi #{ … }# viene formattato: un blocco scritto su una sola riga si espande sotto la riga che lo contiene.

Un codice che contiene errori deve prima essere corretto; e se la formattazione rischia di far perdere una parte del testo, vi rinuncia e lo dice.

Lo stesso pulsante esiste negli editor di script di Ninox: compare in alto a destra, al passaggio del mouse sull'editor, e anche lì funziona la scorciatoia da tastiera.

Il debugger passo passo

Debugger passo passo: punto di interruzione e variabili

I punti di interruzione

  • Un clic nel margine sinistro, o sul numero di riga, imposta un punto di interruzione (disco rosso); un secondo clic lo rimuove.
  • Un clic destro, o Alt + clic, apre il pannello Condizione di arresto: l'esecuzione vi si ferma solo se la vostra condizione è vera, per esempio i > 10. Lo stesso pannello permette di disattivare il punto senza perderlo (Disattiva, anello grigio), e poi di riattivarlo (Riattiva). Un punto condizionale è un disco ambra.
  • Le condizioni vengono valutate senza accesso al database, con funzioni semplici (count, length, text, upper, lower, contains…). Se una condizione non può essere valutata, l'esecuzione si ferma per sicurezza.
  • Non appena è impostato un punto di interruzione attivo, anche Esegui vi si ferma, e poi prosegue passo passo.

I comandi

La sessione inizia in pausa sulla prima istruzione.

ComandoEffetto
Passo successivoEsegue l'istruzione e si ferma prima della successiva.
SottopassoAvanza sottoespressione per sottoespressione, mostrando il valore ottenuto. Su una chiamata di funzione o su un campo formula dello schema, scende nel suo codice.
EsciTermina la funzione in corso e torna al chiamante.
ContinuaProsegue fino al prossimo punto di interruzione, o fino alla fine.
InterrompiAbbandona l'esecuzione.

Quando la barra è stretta, i comandi mostrano solo la loro icona; il loro nome compare al passaggio del mouse. Il pulsante di informazione (ⓘ) della barra espande le istruzioni del debugger, e la crocetta, che compare una volta terminata l'esecuzione, ne chiude il pannello.

Quando l'esecuzione scende in una funzione o in una formula, il suo codice si apre in un riquadro impilato, che scorre da destra come in Ninox. Vi si possono impostare punti di interruzione: sono raggruppati per nome di funzione, valgono per tutte le chiamate di quella funzione e per le esecuzioni successive, e spariscono al ricaricamento della pagina. Il riquadro di una formula dello schema porta la dicitura formula. Una maniglia, sul bordo sinistro di un riquadro, regola quanta parte del riquadro sottostante esso copre. Un blocco #{ … }# conta come un solo passo.

Le variabili

A ogni passo, il pannello Variabili note a questo passo indica il valore e il tipo di ogni variabile; un valore si espande, si copia, e un record si apre con un clic. Le variabili che esistono ma sono fuori portata compaiono in grigio.

Da sapere

L'esecuzione è davvero sospesa a ogni pausa, e nel frattempo il database continua a vivere: altri utenti, interfaccia di programmazione, trigger. Ciò che è già stato eseguito resta applicato, anche se interrompete. Una pausa di oltre dieci minuti pone fine all'esecuzione.

Il debugger a riproduzione

Il codice viene eseguito per davvero, una sola volta e tutto d'un fiato. Poi ne percorrete lo svolgimento in avanti e all'indietro, con i comandi del passo passo — Passo successivo, Sottopasso, Esci, Continua — più Primo passo e Passo precedente. L'elenco dei passi indica il valore ottenuto a ciascuno; un clic su un passo vi porta direttamente. La riproduzione conta in passi grandi: uno per istruzione eseguita, e uno per giro di ciclo, che indica il valore della variabile del ciclo. I sottopassi, rientrati, portano il numero del loro passo grande (3.1, 3.2…) e sono contati a parte («+6 sottopassi»); Esci risale anche da un sottopasso al passo grande che lo contiene. I riquadri impilati e il pannello delle variabili sono gli stessi del passo passo. Ideale per capire che cosa è successo senza rilanciare il codice.

Limiti:

  • un record compare nel suo stato attuale, non in quello del momento dell'esecuzione;
  • la condizione di un punto di interruzione condizionale non viene rivalutata: la riproduzione vi si ferma sempre;
  • oltre i 10.000 passi, la registrazione viene troncata.

Entrambi i debugger rifiutano un codice che contiene errori, e lo segnalano come Verifica.

Eseguire il debug dall'editor di Ninox

Al passaggio del mouse su un editor di script di Ninox, il pulsante Esegui il debug nella Console compare in alto a destra. Apre la Console e vi porta il vostro codice, senza eseguirlo, con il record corrente come contesto: se non c'è un record attivo di quella tabella, il selettore di record si apre su di essa. Dal codice globale, il contesto è Nessun amb., e viene portata solo la funzione in cui si trova il cursore.

Il codice portato sostituisce quello della Console e i suoi punti di interruzione.

La cronologia, e il vostro lavoro che vi segue

  • Il pulsante Cronologia elenca gli ultimi 50 comandi; Alt + ↑ e Alt + ↓ li percorrono dall'editor. Un clic ricarica il codice e il suo contesto, al posto del codice in corso e dei suoi punti di interruzione.
  • Al passaggio del mouse su una riga della cronologia, un cestino la elimina.
  • Il codice ripreso dalla cronologia viene ricostruito nella lingua attuale di Ninox: «Id» diventa «Nr» in tedesco. Un codice richiamato dopo un cambio di lingua quindi compila sempre.
  • All'avvio, la Console ritrova il vostro ultimo codice, il suo contesto, i suoi risultati e i suoi punti di interruzione — ognuno i propri su una postazione condivisa.
  • Per un amministratore, la cronologia e l'ultimo codice seguono anche da un computer all'altro, e sopravvivono alla cancellazione dei dati del browser.

Attenzione

Questa cronologia viene salvata, in chiaro, nelle impostazioni del plugin, che tutti gli utenti del database caricano. Non lasciatevi password né chiavi di accesso.