Zum Ende der Metadaten springen
Zum Anfang der Metadaten

Sie zeigen eine alte Version dieser Seite an. Zeigen Sie die aktuelle Version an.

Unterschiede anzeigen Seitenhistorie anzeigen

Version 1 Nächste Version anzeigen »


Das Plugin base/dashboard stellt eine UI in Kartenform bereit, die man mit ORM-Tabellen und Links füllen kann.



Die Karten werden in dashboard.jsons mit folgender Syntax konfiguriert.:

dashboard.json Beispiel
{
  "category":"product/shop",
  "cards":[
    {
      "header":{
        "label":{
          "de":"Katalog",
          "en":"Catalog"
        },
        "icon":"fa-table",
        "accent":"info"
      },
      "category":"product/cms",
      "mainTables":{
        "100":"shopArticle",
        "200":"shopArticleVariant"
      },
      "contextTables":{
        "100":"shopVatRate",
        "200":"shopUnit",
        "300":"shopDeliveryTime"
      },
      "mainLinks":[
        {
          "icon":"fa-shopping-cart",
          "label":{
            "de":"Bestellungen",
            "en":"Orders"
          },
          "attributes":{
            "data-request":"base/ui.index&tableID=shopOrder"
          }
        },
        {
          "icon":"fa-info",
          "label":{
            "de":"Schriften",
            "en":"Fonts"
          },
          "target":"blank",
          "href":"https://documentation.brandbox.de/pages/viewpage.action?pageId=25202937"
        }
      ],
      "contextLinks":[
        {
          "icon":"fa-shopping-cart",
          "label":{
            "de":"Bestellungen",
            "en":"Orders"
          },
          "attributes":{
            "data-request":"base/ui.index&tableID=shopOrder"
          }
        },
        {
          "icon":"fa-info",
          "label":{
            "de":"Schriften",
            "en":"Fonts"
          },
          "target":"blank",
          "href":"https://documentation.brandbox.de/pages/viewpage.action?pageId=25202937"
        }
      ]
    }
  ],
  "systemTables":[
    "sessionArticle",
    "sessionCheckout"
  ]
}
  • Main Tables entsprechen den ORM-Tabellen, die innerhalb der Karte gelistet werden. 
  • Context Tables sind ORM-Tabellen, die im Context-Menü (Button unten rechts) gelistet werden. 
  • Main und Context Links werden ebenso an den jeweiligen Stellen vor den ORM-Tabellen angefügt. 
  • Die Keys in der dashboard.json der ORM-Tabellen werden zum Sortieren genutzt. Niedriger = weiter oben
  • System Tables werden nicht innerhalb der Kacheln gelistet sondern sind nur über die Toolbar unter "Systeminformationen anzeigen" erreichbar. Es sind Tabellen, die ein normaler Nutzer nicht benötigt, wie sessionArticles, sessionCheckout etc.
  • Category entspricht dem Produkt, in dem die Informationen der dashboard.json angezeigt werden sollen. Dies wirkt sich auf die Cards, sowie die System Tables aus, es ist jedoch zusätzlich möglich, für jede einzelne Card eine andere Category zu wählen. Wenn die Property fehlt, wird der übergeordnete Werte herangezogen.



Es kann zudem von bestehenden Cards extended werden, dabei wird folgende Syntax verwendet:

<Plugin Name>#<Position der Karte in der dashboard.json>

dashboard.json extend Beispiel
{
  "category":"product/shop",
  "cards":[
    {
      "extend":"shop/article#0",
      "mainTables":{
        "50":"shopGroup"
      },
      "contextTables":{}
    }
  ],
  "systemTables":[]
}


Um für die jeweiligen Produkte zu bestimmen, welche Karten standardmäßig sichtbar sein sollen, existiert eine dashboard-config.json, in der die einzelnen Cards in der selben Syntax wie beim extenden gelistet werden. Die Initial-Sortierung wird genauso, wie in der dashboard-config.json angegeben, übernommen.

dashboard-config.json Beispiel
{
  "plugins":[
    "shop/article#0",
    "shop/order#0",
    "shop/user#0",
    "shop/voucher#0",
    "shop/price#0",
    "shop/variant#0",
    "shop/checkout#0",
    "product/shop#0",
    "product/shop#1"
  ]
}


dashboard-schema.json

Um die Validität der dashboard.json-Dateien zu bestätigen, werden diese anhand eines Schemas validiert. Dieses Schema ist in der dashboard-schema.json definiert (base/dashboard/dashboard-schema.json). 

In diesem Schema sind alle Optionen und deren Erläuterungen aufgeführt.

dashboard-schema.json
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "name": "dashboard",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "category",
    "cards",
    "systemTables"
  ],
  "properties": {
    "category": {"description": "Category plugin name"},
    "cards": {"description": "List of dashboard cards."},
    "systemTables": {"List of orm tables to list as system tables."},
    "alwaysActive": {"Ignore if plugin is active or not"}
  }
}

Der oben stehende Ausschnitt der dashboard-schema.json zeigt, wie eine dashboard.json auf der obersten Ebene aufgebaut sein muss.

Jede dashboard.json muss die Eigenschaften "category", "cards" und "systemTables" haben. "alwaysActive" ist hingegen optional.

Weitere Eigenschaften sind nicht erlaubt ("additionalProperties" : false) und werfen beim Validieren einen Fehler.

Die einzelnen Eigenschaften müssen auch gewisse Strukturen aufweisen, die den entsprechenden Einträgen der diagram-schema.json entnommen werden kann. 


Genaueres zum Aufbau und Funktion einer schema.json-Datei kann hier nachgelesen werden: https://json-schema.org/understanding-json-schema.


Events

Event InterfaceBeschreibung
\brandbox\base\dashboard\lib\event\dashboardBundleEventInterface
  • onPopulateBundlePackages
    • Dieses Event bietet Programmierern die Möglichkeit die dashboard-bundle-Gruppen um Karten zu erweitern (oder Karten zu entfernen).

 Beispiel:

use brandbox\component\event;

    use brandbox\base\dashboard;

    /**
     * @author Christopher Holden <holden@konmedia.com>
     */
    class dashboardBundleEvent extends event\eventAbstract implements dashboard\lib\event\dashboardBundleEventInterface {

      const PRIORITY = 1;

      /**
       * This event presents programmers with the opportunity to manipulate the dashboard bundle groups.
       * Bundles are identified by the bundleName (e.g. "bundle/join").
       * By default the $packages contain all the dashboard entries defined in the respective dashboard-bundle.json.
       *
       * @param string $bundleName
       * @param string[] $packages
       */
      public function onPopulateBundlePackages($bundleName, &$packages) {

        if('bundle/shop' === $bundleName):
          $packages[] = 'shop/customprice#0';
        endif;

      }
    }

Hinweis: Da der Stand des Benutzer in der Datenbank gespeichert wird, muss der Benutzer unter Umständen erst "Dashboard zurücksetzten" ausführen um die Kachel zu sehen

  • Keine Stichwörter