Erweitern von ContextHub

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

Erstellen benutzerdefinierter Store-Kandidaten

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

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]

The storeType part of the category is the storeType with which the store candidate is registered. (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

To create a store candidate, you use the ContextHub.Utils.inheritance.inherit function to extend one of the base stores:

Note that each base store extends the ContextHub.Store.Core store.

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 wohl zusätzliche Funktionen definiert oder die ursprüngliche Konfiguration des Stores überschrieben. Several sample store candidates are installed in the repository below /libs/granite/contexthub/components/stores.

Registrieren von ContextHub-Store-Kandidaten

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 ein. 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);

In den meisten Fällen ist nur ein Kandidat erforderlich und die Priorität kann auf 0, aber wenn Sie interessiert sind, können Sie über fortgeschrittene Registrierungen erfahren, die es ermöglicht, eine von wenigen Stores-Implementierungen auf Basis von JavaScript-Bedingung (applies) und Kandidatenpriorität auszuwählen.

Erstellen von Typen von ContextHub-Benutzeroberflächenmodulen

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

To create a UI module renderer, create a Class object that contains the logic that renders the UI module. Ihre Klasse muss mindestens die folgenden Aktionen durchführen:

  • Extend the ContextHub.UI.BaseModuleRenderer class. 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. Create a defaultConfig property. 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. Sie müssen einen Namen für den Modultyp angeben. Wenn Administratoren 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. The following example is based on the source code for the contexthub.browserinfo UI module. 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());

}());

The javascript file that includes the code that creates and registers the renderer must be included in a client library folder. Die Ordnerkategorie muss dem folgenden Muster entsprechen:

contexthub.module.[moduleType]

The [moduleType] part of the category is the moduleType with which the module renderer is registered. For example, for the moduleType of contexthub.browserinfo, the category of the client library folder must be contexthub.module.contexthub.browserinfo.

Auf dieser Seite