Erweitern von ContextHub extending-contexthub

Definieren Sie neue Typen von ContextHub-Stores und -Modulen, wenn die bereitgestellten Typen nicht Ihren Lösungsanforderungen entsprechen.

Erstellen benutzerdefinierter Store-Kandidaten creating-custom-store-candidates

ContextHub-Stores werden aus registrierten Store-Kandidaten erstellt. Um einen benutzerdefinierten Store zu erstellen, erstellen und registrieren Sie einen Store-Kandidaten.

Die JavaScript-Datei mit dem Code zum Erstellen und Registrieren des Store-Kandidaten muss in einem Client-Bibliotheksordner enthalten sein. Die Ordnerkategorie muss dem folgenden Muster entsprechen:

contexthub.store.[storeType]

Beim [storeType]-Teil der Kategorie handelt es sich um den storeType, mit dem der Store-Kandidat registriert wird. (Siehe Registrieren von ContextHub-Store-Kandidaten.) Beispielsweise muss für den Store-Typ contexthub.mystore die Kategorie des Client-Bibliotheksordners contexthub.store.contexthub.mystore lauten.

Erstellen von ContextHub-Store-Kandidaten creating-a-contexthub-store-candidate

Verwenden Sie zum Erstellen eines Store-Kandidaten die Funktion ContextHub.Utils.inheritance.inherit, um einen der grundlegenden Stores zu erweitern:

Jeder grundlegende Store erweitert den Store ContextHub.Store.Core.

Im folgenden Beispiel wird erst die einfachste Erweiterung des Store-Kandidaten ContextHub.Store.PersistedStore erstellt:

myStoreCandidate = function(){};
ContextHub.Utils.inheritance.inherit(myStoreCandidate,ContextHub.Store.PersistedStore);

In der Praxis werden mit Ihren benutzerdefinierten Store-Kandidaten wahrscheinlich zusätzliche Funktionen definiert oder die ursprüngliche Konfiguration des Stores überschrieben. Mehrere Beispiel-Store-Kandidaten werden im Repository unter /libs/granite/contexthub/components/stores installiert. Verwenden Sie CRXDE Lite, um die JavaScript-Dateien zu öffnen und sich diese Beispiele genauer anzusehen.

Registrieren von ContextHub-Store-Kandidaten registering-a-contexthub-store-candidate

Registrieren Sie einen Store-Kandidaten, um ihn mit dem ContextHub-Framework zu integrieren und Stores zu aktivieren, die auf Grundlage des Kandidaten erstellt werden sollen. Um einen Store-Kandidaten zu registrieren, verwenden Sie die Funktion registerStoreCandidate der Klasse ContextHub.Utils.storeCandidates.

Wenn Sie einen Store-Kandidaten registrieren, geben Sie einen Namen für den Store-Typ an. Beim Erstellen eines Stores auf Grundlage des Kandidaten identifizieren Sie über den Store-Typ den zugrunde liegenden Kandidaten.

Geben Sie beim Registrieren eines Store-Kandidaten dessen Priorität an. Wird ein Store-Kandidat mit demselben Store-Typ wie ein bereits registrierter Store-Kandidat registriert, wird der Kandidat mit der höheren Priorität verwendet. Daher können Sie vorhandene Store-Kandidaten durch neue Implementierungen überschreiben.

ContextHub.Utils.storeCandidates.registerStoreCandidate(myStoreCandidate,
                                'contexthub.mystorecandidate', 0);

Normalerweise ist nur ein Kandidat erforderlich und die Priorität kann auf 0 festgelegt werden. Wenn Sie jedoch daran interessiert sind, können Sie sich über fortgeschrittene Registrierungen informieren, mit denen eine oder mehrere Store-Implementierungen basierend auf der JavaScript-Bedingung (applies) und Kandidatenpriorität ausgewählt werden können.

Erstellen von Typen von ContextHub-Benutzeroberflächenmodulen creating-contexthub-ui-module-types

Erstellen Sie benutzerdefinierte Typen eines Benutzeroberflächenmoduls, wenn die mit ContextHub installierten Typen nicht Ihren Anforderungen entsprechen. Erstellen Sie dazu einen Benutzeroberflächenmodul-Renderer, indem Sie die Klasse ContextHub.UI.BaseModuleRenderer erweitern und sie dann mit ContextHub.UI registrieren.

Erstellen Sie zum Erstellen eines Benutzeroberflächenmodul-Renderers ein Class-Objekt, das die Logik enthält, die das Benutzeroberflächenmodul rendert. Ihre Klasse muss mindestens die folgenden Aktionen durchführen:

  • Erweitern der ContextHub.UI.BaseModuleRenderer-Klasse. Bei dieser Klasse handelt es sich um die Basisimplementierung für alle Benutzeroberflächenmodul-Renderer. Das Class-Objekt definiert eine Eigenschaft namens extend, mit der Sie diese Klasse als diejenige benennen, die erweitert wird.

  • Bereitstellen einer Standardkonfiguration. Erstellen Sie eine Eigenschaft defaultConfig. Diese Eigenschaft ist ein Objekt, das die Eigenschaften enthält, die für das Benutzeroberflächenmodul contexthub.base definiert sind, sowie alle anderen Eigenschaften, die Sie benötigen.

Die Quelle für ContextHub.UI.BaseModuleRenderer befindet sich unter /libs/granite/contexthub/code/ui/container/js/ContextHub.UI.BaseModuleRenderer.js. Verwenden Sie zum Registrieren des Renderers die Methode registerRenderer der ContextHub.UI-Klasse. Geben Sie einen Namen für den Modultyp an.  Wenn Admins ein Benutzeroberflächenmodul auf Grundlage dieses Renderers anlegen, geben sie diesen Namen an.

Erstellen und registrieren Sie die Renderer-Klasse in einer selbstausführenden anonymen Funktion. Das folgende Beispiel basiert auf dem Quell-Code des Benutzeroberflächenmoduls „contexthub.browserinfo“. Dieses Benutzeroberflächenmodul ist eine einfache Erweiterung der ContextHub.UI.BaseModuleRenderer-Klasse.

;(function() {

    var SurferinfoRenderer = new Class({
        extend: ContextHub.UI.BaseModuleRenderer,

        defaultConfig: {
            icon: 'coral-Icon--globe',
            title: 'Browser/OS Information',

            storeMapping: {
                surferinfo: 'surferinfo'
            },

            template:
                '<p>{{surferinfo.browser.family}} {{surferinfo.browser.version}}</p>' +
                '<p>{{surferinfo.os.name}} {{surferinfo.os.version}}</p>'
        }
    });

    ContextHub.UI.registerRenderer('contexthub.browserinfo', new SurferinfoRenderer());

}());

Die JavaScript-Datei mit dem Code zum Erstellen und Registrieren des Renderers muss in einem Client-Bibliotheksordner enthalten sein. Die Ordnerkategorie muss dem folgenden Muster entsprechen:

contexthub.module.[moduleType]

Beim [moduleType]-Teil der Kategorie handelt es sich um den moduleType, mit dem der Renderer registriert wird. Beispielsweise muss für den moduleType von contexthub.browserinfo die Kategorie des Client-Bibliotheksordners contexthub.module.contexthub.browserinfo lauten.

recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2