Utilisation de l’outil debug via la console
Introduction
Lorsque la directive debug.activate
vaut true
, tous les outils de débogage sont disponibles depuis la console JavaScript de votre navigateur.
Il est aussi possible d’activer uniquement certaines fonctions.
Exemple :
On active tous les outils de débug :
; Dans le fichier application.ini
debug.activate = true
On active uniquement les outils suivants :
debug.getContext()
debug.refresh()
debug.hardRefresh()
; Dans le fichier application.ini
debug.activate.getContext = true
debug.activate.refresh = true
debug.activate.hardRefresh = true
Toutes les méthodes “debug” sont présentes ici.
N’hésitez pas à proposer des améliorations de cet outil en passant par une modification directement sur GitHub
Rafraîchissement
Les deux méthodes suivantes sont très pratiques lors de la phase de développement d’un projet.
Pour un développeur, l’idéal est d’ajouter les deux composants suivants dans une ressource de type menu :
debug.refresh( ‘{sTarget}’ )
Recharge la frame courrante.
sTarget
est passé, le loader sera placé dans la balise ciblé.<button id="refresh-button" onclick="debug.refresh( 'refresh-button' )">
Refresh
</button>
debug.hardRefresh()
Recharge la page (css, js) et conserve le contexte courant.
Très utile durant la phase de conception d’un widget.
Dataset
debug.getDatasets()
Retourne un tableau de tous les datasets de la frame courante.
Exemple de sortie de la console :
debug.getDataset( ‘{dataset_id}’ )
Retourne l’objet DataSet() pour un dataset donné.
Exemple de sortie de la console :
debug.getDataset( ‘{dataset_id}’ ).__proto__
Retourne toutes les méthodes de l’objet DataSet() pour un dataset donné.
Exemple de sortie de la console :
debug.getDataset( ‘{dataset_id}’ ).ToJSON()
Retourne le JSON pour un dataset donné.
Exemple de sortie de la console :
debug.getDataset( ‘{dataset_id}’ )._attrs
Retourne tous les ATTRS de l’objet DataSet() pour un dataset donné.
Exemple de sortie de la console :
debug.getDataset( ‘{dataset_id}’ ).get( ‘iTotalRows’ )
Retourne le nombre de rowdatas pour un dataset donné.
Exemple de sortie de la console :
Watcher
debug.watch( ‘{dataset_id}’, ‘{field_name}’ )
Affiche la valeur du champ {field_name}
pour le dataset {dataset_id}
pour le record courant à chaque altération de celui-ci.
Exemple de sortie de la console :
Contexte
Les méthodes suivantes permettent de récupérer le contexte d’exécution de la frame.
debug.getContext( {bHTMLRender} )
Retourne les informations sur le contexte d’exécution de la page courante.
debug.getContext() retourne, dans la console :
Date : 10/10/2019 08:29:12
Environment : production
Version of Voozanoo 4 : 19w38a-9174
User infos :
- Username : epiconcept-web
- Groups : Main[1]
- Roles : admin[1]
- Connection type : 11
Direct URL :
http://localhost/apps/voodocgen/public/voodocgen//mainframe/index/one/dp/home_index_frame/mfid/yui_3_10_1_1_1568193503765_32/id/16/
Parameters :
- module : home
- controller : index
- action : frame
- mfid : yui_3_10_1_1_1568193503765_32
- id : 16
debug.getContext( true ) affiche :
debug.getUserInfos()
Retourne les informations de l’utilisateur courant.
Exemple de sortie de la console :
debug.getParameters()
Retourne les paramètres de la frame courante
Exemple de sortie de la console :
debug.getParameter( ‘{key}’ )
Retourne la valeur d’un paramètre donné de la frame courante
Exemple de sortie de la console :
debug.getURL()
Retourne l’URL (XHR) de la frame courante.
Cette méthode est utilisée par la méthode debug.refresh()
Exemple de sortie de la console :
debug.getDirectURL()
Retourne l’URL de la frame courante.
Cette méthode est utilisée par la méthode debug.hardRefresh()
Exemple de sortie de la console :
debug.getDirectives()
Retourne les directives qui ne contiennent pas d’informations sensible ( Ex: resources.db.params.password
)
Exemple de sortie de la console :
Variable dynamique
debug.JsQuery( ‘{mon_calcul}’ )
Retourne l’exécution (via JsQuery) de {mon_calcul}.
Cette méthode est très pratique pour récupérer, en temps réel, le résultat d’une option show_on
.
Pour :
Exemple de sortie de la console :
Widgets
debug.getWidgets()
Retourne la liste des objets widget de la frame courante.
Exemple de sortie de la console :
debug.getWidgets()
ctlogger_main: Object { _BaseInvoked: true, _yuid: "yui_3_10_1_1_1568217448558_49390", _eventPrefix: "WidgetAVMessageLogger", … }
form_main: Object { _BaseInvoked: true, _yuid: "yui_3_10_1_1_1568217448558_49411", _eventPrefix: "WidgetPage", … }
meter-widget: Object { _BaseInvoked: true, _yuid: "yui_3_10_1_1_1568217448558_49454", _eventPrefix: "WidgetMeter", … }
vzn5d7919bd151e33_04092569: "form_main"
vzn5d7919bd152127_15051802: Object { _BaseInvoked: true, _yuid: "yui_3_10_1_1_1568217448558_49429", _eventPrefix: "WidgetButton", … }
vzn5d7919bd152b23_16186959: Object { _BaseInvoked: true, _yuid: "yui_3_10_1_1_1568217448558_49445", _eventPrefix: "WidgetBox", … }
debug.getWidget( {sIdWidget} )
Retourne un objet widget de la frame courante.
Pour :
<meter id="meter-widget" label="Synthèse des examens" action="exit" class="col-md-6">
...
</meter>
Exemple de sortie de la console :
debug.getWidget('meter-widget')
Object { _BaseInvoked: true, _yuid: "yui_3_10_1_1_1568218959659_440", _yuievt: {…}, _state: {…}, _ATTR_E_FACADE: {…}, _eventPrefix: "WidgetMeter", _plugins: {}, _lazyAddAttrs: true, name: "WidgetMeter", _classes: (4) […], … }
debug.getWidgetOptions( {sIdWidget} )
Retourne les ATTRS de type option
ou option_array
Exemple de sortie de la console :
debug.getWidgetOptions('meter-widget')
aData: Array [ {…} ]
mIsDenominatorPrinted: true
mRefreshBtn: false
sActionTarget: "global"
sDataToPrint: "1"
sDataToPrintColor: null
sDenominatorColor: "grey"
sDenominatorField: "({all_widgets.nb} == 0 ? 1 : {all_widgets.nb})"
sDenominatorLabel: "Total number of widgets scanned"
sLegend: null
sTitleColor: "primary"
sType: "bar"
Redirection
debug.goTo( {nom_du_module} )
Redirige vers le module spécifié
Exemple de sortie de la console :
debug.goTo()
[
"consumer",
"logout",
"dictionaries",
"exports",
"filters",
"groups",
"listings",
"project",
"provider-customer-management",
"provider-user-management",
"resources",
"roles",
"consistency-tests",
"translation",
"users",
"calculated-variables",
"notices"
]
debug.goTo('exports')
# redirection vers l'écran de gestion des exports.