Le Dashboard est une application de dynacase permettant de mettre en place et gérer un dashboard.
Dashboard est composé de deux modules
L'application DASHBOARD_UI est accessible dans une iframe avec l'url http://host?app=DASHBOARD_UI
et les utilisateurs doivent avoir l'ACL : BASIC de l'application DASHBOARD_UI
Le dashboard est paramétré au moyen de documents dynacase. Il se base sur les famille suivantes :
cette famille permet de définir un widget.
Pour définir, un widget vous devez indiquer :
cette famille permet de définir une typologie de dashboard (contenu, nom, ordre d'affichage, accessibilité).
Les utilisateurs ou groupes ayant accès verront ce dashboard s'ajouter aux leurs lors de leur prochaine consultation du dashboard. Vous pouvez ensuite indiquer les éléments suivants :
Il est à noter que si vous spécifiez pour un widget un numéro de colonne plus élévé que le nombre de colonnes de la tab, alors la tab est choisie en utilisant le reste de la division entière du numéro de colonne par le nombre de tab.
Si vous supprimez un widget d'un tab template, il n'est pas supprimé des tab user où il est déjà présent.
Si vous supprimez un tab template, les tab user déjà initié associé à ce tab template ne sont pas supprimés.
Pour paramétrer le dashboard, vous devez donc :
Si vous ne spécifiez de tab template pour une catégorie d'utilisateur, ceux-ci verront un message d'erreur. Il est donc conseillé de faire un template de dashboard par défaut.
Vous pouvez aussi définir des assets (js et css) qui seront ajoutés dans la page du dashboard. Pour ce faire, il suffit de compléter le paramètres applicatif Asset (js et css) ajouté à la page dashboard UI (ASSETS) de l'application DASHBOARD_UI.
Le dashboard est fourni par défaut avec un widget de recherche. Celui-ci permet de présenter une collection de documents (recherche ou dossier) dans le dashboard.
Pour le mettre à disposition et le paramétrer vous devez :
Créer un nouveau document de la famille Dashboard Widget et indiquer dans le paramétrage :
pour la consultation :
vous pouvez de plus indiquer dans les paramétres par défaut :
pour le paramétrage :
comme action : WIDGET_SEARCH_PARAM
vous pouvez de plus indiquer dans les paramètres par défaut :
Si vous voulez créer un widget non paramétrable ne remplissez pas la partie paramétrage, il serait de plus dommage de faire remplir l'action de paramétrage avec les deux canModify à FALSE car cela ferait une IHM avec juste un bouton de validation.
En consultation, vous devez fournir au moins un collectionId ou un fetchApp.
FetchApp et fetchAction permettent de changer l'action par défaut qui est appelée pour compléter le widget.
Si vous souhaitez créer votre propre application/action de recherche, vous pouvez vous inspirer de l'action widget_search_content_json dans l'application DASHBOARD_UI, qui a la forme suivante :
<?php require_once "DASHBOARD_UI/widget_search_content.php"; /** * Return the json content for a docGrid * * @param Action $action */ function widget_search_content_json(Action &$action) { $return = array( "success" => true ); try { $return["data"] = widget_search_content($action); } catch (Exception $e) { $message = sprintf("(%s from %s : %s) %s", get_class($e), $e->getFile(), $e->getLine(), $e->getMessage()); error_log(__METHOD__ . ' ' . $message); $return["success"] = false; $return["error"] = $message; unset($return["data"]); } $action->lay->template = json_encode($return); $action->lay->noparse = true; header('Content-type: application/json'); }
Cette action appelle l'action par défaut pour compléter le widget et retourne le contenu en JSON. Il est à noter que vous pouvez passer en deuxième paramètre à widget_search_content un objet SearchDoc il sera alors utilisé en lieu et place de la collection définie par collectionId.
Pour créer un nouveau type de widget, il faut définir une ou des actions fournissant deux types d'éléments :
<?php require_once 'FDL/freedom_util.php'; function hello_world(Action &$action) { $usage = new \ActionUsage($action); $elementId = $usage->addNeeded("elementId", "elementId"); $dashboardUUID = $usage->addNeeded("dashboardUUID", "dashboardUUID"); $widgetUUID = $usage->addNeeded("widgetUUID", "widgetUUID"); $message = $usage->addOption("message", "message", array(), "coucou"); $color = $usage->addOption("color", "message", array(), ""); $userName = \new_Doc('', $action->user->fid)->getTitle(); $return = array( "success" => true, "data" => array( "assets" => array( "js" => array("DASHBOARD_WIDGETS/Layout/hello_world.js"), "css" => "DASHBOARD_WIDGETS/Layout/hello_world.css" ), "html" => '<script type="text/javascript"> window.hello_world.hello("#' . $elementId . '", "' . $message . ' ' . $userName . '", "' . $color . '"); </script> <div class="helloPeople">Hello World !!!!!</div>', "title" => 'hello world' ) ); $action->lay->template = json_encode($return); $action->lay->noparse = true; header('Content-type: application/json'); }
En entrée de l'action de consultation, l'application DASHBOARD_UI envoie les éléments suivants :
$("#elementId").find(".dcpui-dashboardwidget-content"))
,L'action de consultation doit fournir un retour en JSON semblable à celui ci-dessus :
contient le HTML et les assets :
les fichiers js et css qui seront intégrés dans la page :
Vous avez à votre disposition une classe permettant de consulter et enregistrer les paramètres de configuration du widget, celle-ci est présente sous le namespace dcp\dashboard_ui
et s'utilise de la manière suivante :
use dcp\dashboard_ui as dui; /* initialisation */ $dashboardManager = new dui\DashboardManager(); /* récuperation de la configuration */ $conf = $dashboardManager->getWidgetConf($dashboardUUID, $widgetUUID); /* change the conf */ […] /* save the conf */ $currentConf = $dashboardManager->setWidgetConf($dashboardUUID, $widgetUUID, $conf)
<?php use dcp\dashboard_ui as dui; require_once 'FDL/freedom_util.php'; function hello_world(Action &$action) { $usage = new \ActionUsage($action); $dashboardUUID = $usage->addNeeded("dashboardUUID", "dashboardUUID"); $widgetUUID = $usage->addNeeded("widgetUUID", "widgetUUID"); $modeSave = $usage->addOption("modeSave", "modeSave", array(), false); $widgetConf = $usage->addOption("widgetConf", "widgetConf", array(), false); if ($modeSave !== false) { $dashboardManager = new dui\DashboardManager(); $dashboardManager->setWidgetConf($dashboardUUID, $widgetUUID, json_decode($widgetConf, true)); Redirect($action, "DASHBOARD_UI", "RELOAD_WIDGET", '?dashboardUUID=' . urlencode($dashboardUUID) . '&widgetUUID=' . urlencode($widgetUUID) . '&'); } else { $dashboardManager = new dui\DashboardManager(); $currentConf = $dashboardManager->getWidgetConf($dashboardUUID, $widgetUUID); $action->lay->set("message", $currentConf["message"]); $action->lay->set("color", $currentConf["color"]); $action->lay->set("dashboardUUID", $dashboardUUID); $action->lay->set("widgetUUID", $widgetUUID); } }
Dans l'exemple ci-dessus l'action en modeSave à false utilise le moteur de Layout pour produire un formulaire qui appelle de nouveau l'action en modeSave à true qui, à son tour, sauvegarde la configuration et redirige vers une page spécifique qui fermera l'overlay d'affichage de l'action de paramétrage et rechargera le widget.
Une action de paramétrage reçoit en entrée les éléments suivants :
et elle doit en fin de paramétrage renvoyer vers l'action RELOAD_WIDGET de l'application DASHBOARD_UI avec comme paramètres le dashboardUUID et le widgetUUID (attention : ceux-ci doivent être fournis sous la forme d'une string url_encodée terminant par un &).
Recharger un widget : vous pouvez recharger un widget en utilisant l'api du widget et en faisant un appel de ce genre :
$("#elementId").dashboardwidget("reload", config)
L'objet config est optionnel et est un objet javascript contenant les paramètres attendu par l'action de consultation du widget.
Note : Il existe également la méthode refresh
, mais cette dernière ne prend
pas de paramètre.
Ce document est publié sous licence CC http://creativecommons.org/licenses/by-nc-sa/2.0/fr/
Vous êtes libres :
Selon les conditions suivantes :
Guide d'intégration
© Anakeen, Anakeen Labs <labs@anakeen.com>
Module Dashboard, version 1.0
Édition 2
Publié le 03/08/2018
Ce livre a été produit avec easybook 4.8, logiciel libre et open source développé par Javier Eguiluz à l'aide de différents composants Symfony.