Errors
Pestanya completament redissenyada a partir de la versió 3.2.0 (beta). A la 3.1.2, només llista els errors de compilació i els identificadors duplicats.
La pestanya Errors analitza tota la base de dades i llista els errors i els avisos del seu codi: camps, activadors, columnes de les vistes, informes d'impressió, codi global i activador «After Open». L'anàlisi la fa un analitzador transcrit del de Ninox: el que assenyala correspon al que diria Ninox. Cada línia porta directament al codi afectat.
La pestanya està reservada als administradors. Només mostra la seva icona, un triangle d'advertència; el nom apareix en passar-hi el ratolí per sobre, i un indicador vermell dona el nombre de diagnòstics mostrats.
El resum i els filtres

La capçalera dona el resum: «Sense error», «3 error(s)», «3 error(s), 12 avís(os)», «36 avís(os)»…
El botó Filtres obre el tauler Diagnòstics mostrats: un interruptor per tipus de diagnòstic, classificats en dos grups, Errors i Avisos. Cada línia dona el nombre de diagnòstics d'aquest tipus a la base de dades — fins i tot quan el tipus està amagat: veieu tant el que amagueu com el que mostreu. Quan hi ha tipus amagats, el botó ho recorda («2 tipus amagat(s)»); Mostra-ho tot els torna a mostrar. El navegador desa els filtres, que valen per a totes les bases de dades.
Què s'assenyala
Els errors impedeixen que el codi funcioni:
| Filtre | Què s'assenyala |
|---|---|
| Errors de compilació | El codi que Ninox rebutja: la fórmula no s'executa. |
| IDs duplicats | Diversos camps d'una mateixa taula comparteixen el mateix identificador intern (per exemple, un camp d'entrada i un element visual): les referències esdevenen ambigües. |
| Errors de l'analitzador | Els errors que l'analitzador de Ninext detecta i que Ninox no ha assenyalat. |
| Errors dels continguts incrustats | Un error de sintaxi JavaScript en un bloc natiu #{ … }#. |
Els avisos assenyalen un codi que funciona, però segurament no com us penseu:
| Filtre | Què s'assenyala |
|---|---|
| Analitzador | Els avisos de Ninox, i les anotacions NativeJS mal formades (tipus desconegut, taula inexistent). |
| Context de servidor | Un codi sense efecte allà on s'executa: una funció d'interfície com alert() o openRecord(), o un bloc natiu #{ … }#, situats en un activador de taula (després de crear, després de modificar) o en un do as server. Al servidor, s'ignoren sense cap avís. |
| Errors congelats | Errors que Ninox encara mostra tot i que la fórmula és correcta (vegeu més avall). |
| Referències no resoltes | La lectura d'un camp de referència la taula de destinació del qual ja no existeix (taula suprimida, base de dades externa absent): val «void», i qualsevol recorregut amb un punt es trenca. |
| Continguts incrustats | Un bloc JavaScript tipat que no retorna res, en tots els seus camins o en alguns; un bloc asíncron que no crida mai callback; un HTML desequilibrat passat a html() (etiqueta que no es tanca mai, etiqueta de tancament òrfena); un CSS amb claus desequilibrades, o del qual el navegador descartarà regles. |
| Codi mort dins del codi | Variables declarades amb var o let que després no es llegeixen mai. |
| Funcions globals no utilitzades | Funcions globals que cap element de la base de dades no crida. |
| Fórmules no utilitzades | Fórmules que cap codi no referencia. |
Les funcions i les fórmules no utilitzades només són candidates a la supressió: una crida construïda dinàmicament o feta des de JavaScript escapa a l'anàlisi, i una fórmula mostrada en un formulari o en una vista continua sent útil encara que cap codi no la llegeixi. Comproveu-ho abans de suprimir.
Llegir una línia

Els diagnòstics s'agrupen per família. El títol de cada família porta una pastilla que n'indica el nombre: vermella per als errors, ataronjada per als avisos. Quan hi ha diverses famílies, estan plegades, i un clic en un títol desplega la seva; una família sola es mostra desplegada.
Les famílies porten el nom del seu filtre, excepte aquestes:
| Filtre | Família a la llista |
|---|---|
| Errors de l'analitzador | Errors addicionals de l'analitzador Ninext |
| Analitzador | Avisos de l'analitzador |
| Context de servidor | Codi fora del seu context d'execució |
| Errors congelats | Errors congelats (la fórmula és correcta) |
| Errors dels continguts incrustats i Continguts incrustats | Una sola família, JS / HTML / CSS incrustats, que porta fins a dues pastilles: una per als seus errors, una per als seus avisos. |
Cada línia dona:
- en cursiva, el missatge — gris per a un error, ambre per a un avís — seguit del fragment de codi afectat; quan dos tipus no concorden, una frase diu quins;
- l'element afectat, presentat com a Camps i fórmules: icona de tipus, badge de dependències, «Fx», ruta de navegació.
En passar el ratolí per sobre del fragment en negreta de la ruta de navegació (la fórmula, l'activador o la funció global) es mostra el codi, amb els errors subratllats.
Anar al codi
Feu clic al fragment en negreta de la ruta de navegació: Ninext obre l'editor al lloc correcte. Per al codi global, el diagnòstic s'associa a la funció que el conté — «Global functions › nomDeLaFuncio» — i l'editor del codi global s'obre en aquesta funció. L'activador «After Open» s'obre de la mateixa manera.
El botó vermell que apareix en passar el ratolí per sobre, a la dreta de la línia, en mode d'edició («Edit mode»), selecciona el camp al seu formulari per a una línia que es refereix a un camp, i obre l'editor del codi per a les altres línies.
A continuació, a la base de dades d'exemple, un clic al fragment en negreta d'una línia que es refereix a la fórmula d'un camp: Ninext obre un registre de la taula, la finestra del camp i, després, l'editor gran de fórmules, on el fragment afectat apareix subratllat; en passar-hi el ratolí per sobre se n'obté el missatge. Els altres elements de la ruta de navegació obren el seu propi nivell: un clic al nom del camp obre el registre i la finestra del camp, sense l'editor.

Una anàlisi en segon pla
L'anàlisi treballa en petites porcions i va retornant el control al navegador: fins i tot en una base de dades gran, res no es bloqueja. Es torna a llançar tota sola després de cada modificació de l'esquema. No hi ha cap indicador de progrés: la llista anterior continua visible fins que la nova la substitueix.
Els errors congelats
De vegades Ninox compila un camp de fórmula durant una recàrrega de l'esquema, abans que aquest sigui complet, i després ja no el torna a compilar: el camp mostra errors durant tota la sessió, tot i que la seva fórmula és correcta. Ninext torna a compilar la fórmula pel seu compte; si els errors no hi apareixen, els classifica a Errors congelats.
Solució: torneu a carregar la base de dades, o deseu qualsevol modificació de l'esquema.
Mentre escriviu, als editors de Ninox
Els errors i els avisos també se subratllen mentre escriviu als editors d'scripts de Ninox (editor gran de fórmules, panell d'un camp o d'una taula):
- ondulació vermella per a un error, puntejat ambre per a un avís;
- en passar el ratolí per sobre del fragment subratllat, un missatge emergent n'explica el motiu, i diu quins tipus no concorden;
- el subratllat només es produeix quan Ninext sap amb certesa en quina taula s'executa el codi;
- la llista d'autocompletació té prioritat: no s'obre cap missatge emergent mentre es mostra.
Seleccionar una paraula ressalta les seves altres aparicions — als editors de Ninox, a la Consola i als blocs de codi de Ninext. En passar el ratolí per sobre de l'editor, apareixen dos botons a la part superior dreta: Formata i Depurar a la Consola (vegeu Consola).
Columnes residuals a les vistes de taula
Un error de compilació pot venir d'una columna de vista de taula que encara fa servir un camp suprimit. Ninox no informa de cap problema, ja que el camp simplement s'ha tret de l'esquema: és una referència residual, que ha quedat a la configuració de columnes de la vista.
Per corregir-la:
- Feu clic a Formula, en negreta al final de la ruta de navegació («Taula › Vista › … › Formula»).
- Ninext obre la vista, l'editor de la columna i, després, l'editor de la seva fórmula.
- Feu clic a OK a l'editor de la fórmula i, després, al de la columna.
En desar, Ninox refresca la configuració de la vista i n'elimina les referències a camps inexistents. L'error desapareix de Ninext.
