Definite nuovi tipi di store e moduli ContextHub quando quelli forniti non soddisfano i requisiti della soluzione.
Gli store ContextHub vengono creati dai candidati store registrati. Per creare uno store personalizzato, dovete creare e registrare un candidato per lo store.
Il file javascript che include il codice che crea e registra il candidato store deve essere incluso in una cartella libreria client. La categoria della cartella deve corrispondere al seguente pattern:
contexthub.store.[storeType]
La parte [storeType]
della categoria è la storeType
con cui è registrato il candidato all'acquisto. (Vedere Registrazione di un candidato per lo store ContextHub). Ad esempio, per storeType di contexthub.mystore
, la categoria della cartella della libreria client deve essere contexthub.store.contexthub.mystore
.
Per creare un candidato all'acquisto, utilizzate la funzione ContextHub.Utils.inheritance.inherit
per estendere uno dei punti vendita di base:
ContextHub.Store.PersistedStore
ContextHub.Store.SessionStore
ContextHub.Store.JSONPStore
ContextHub.Store.PersistedJSONPStore
Tenere presente che ogni archivio di base estende lo store ContextHub.Store.Core
.
Nell'esempio seguente viene creata l'estensione più semplice del candidato ContextHub.Store.PersistedStore
allo store:
myStoreCandidate = function(){};
ContextHub.Utils.inheritance.inherit(myStoreCandidate,ContextHub.Store.PersistedStore);
Realisticamente, i candidati all'acquisto personalizzati definiranno funzioni aggiuntive o ignoreranno la configurazione iniziale dello store. Diversi candidati store di esempio sono installati nella directory archivio sotto /libs/granite/contexthub/components/stores
. Per imparare da questi esempi, utilizzate CRXDE Lite per aprire i file javascript.
Registrate un candidato per lo store per integrarlo con il framework ContextHub e consentire la creazione di store da esso. Per registrare un candidato per uno store, utilizzare la funzione registerStoreCandidate
della classe ContextHub.Utils.storeCandidates
.
Quando registrate un candidato per uno store, fornite un nome per il tipo di store. Quando create uno store dal candidato, utilizzate il tipo di store per identificare il candidato su cui si basa.
Quando registrate un candidato per un negozio, ne indicate la priorità. Quando un candidato del negozio viene registrato con lo stesso tipo di negozio di un candidato già registrato, viene utilizzato il candidato con la priorità più alta. Pertanto, potete escludere i candidati esistenti per lo store con nuove implementazioni.
ContextHub.Utils.storeCandidates.registerStoreCandidate(myStoreCandidate,
'contexthub.mystorecandidate', 0);
Nella maggior parte dei casi è necessario un solo candidato e la priorità può essere impostata su 0
, ma se siete interessati è possibile conoscere registrazioni più avanzate, che consente di scegliere una delle poche implementazioni dello store in base alla condizione javascript (applies
) e alla priorità del candidato.
Crea tipi di moduli di interfaccia utente personalizzati quando quelli installati con ContextHub🔗 non soddisfano i requisiti dell'utente. Per creare un tipo di modulo dell'interfaccia utente, create un nuovo renderer di moduli dell'interfaccia utente estendendo la classe ContextHub.UI.BaseModuleRenderer
e quindi registrandola con ContextHub.UI
.
Per creare un renderer di modulatore dell'interfaccia utente, create un oggetto Class
che contenga la logica per il rendering del modulo dell'interfaccia utente. Come minimo, la classe deve eseguire le azioni seguenti:
Estende la classe ContextHub.UI.BaseModuleRenderer
. Questa classe è l'implementazione di base per tutti i renderer di moduli dell'interfaccia utente. L'oggetto Class
definisce una proprietà denominata extend
che viene utilizzata per denominare questa classe come quella che viene estesa.
Fornire una configurazione predefinita. Creare una proprietà defaultConfig
. Questa proprietà è un oggetto che include le proprietà definite per il modulo contexthub.base
dell'interfaccia utente e tutte le altre proprietà richieste.
L'origine per ContextHub.UI.BaseModuleRenderer
si trova in /libs/granite/contexthub/code/ui/container/js/ContextHub.UI.BaseModuleRenderer.js. Per registrare il renderer, utilizzate il metodo registerRenderer
della classe ContextHub.UI
. È necessario specificare un nome per il tipo di modulo. Quando gli amministratori creano un modulo dell'interfaccia utente basato su questo renderer, specificano questo nome.
Creare e registrare la classe del renderer in una funzione anonima che esegue automaticamente. L'esempio seguente è basato sul codice sorgente per il modulo di interfaccia utente contexthub.browserinfo. Questo modulo dell'interfaccia utente è una semplice estensione della classe ContextHub.UI.BaseModuleRenderer
.
;(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());
}());
Il file javascript che include il codice che crea e registra il renderer deve essere incluso in una cartella libreria client. La categoria della cartella deve corrispondere al seguente pattern:
contexthub.module.[moduleType]
La parte [moduleType]
della categoria è la moduleType
con cui è registrato il renderer del modulo. Ad esempio, per moduleType
di contexthub.browserinfo
, la categoria della cartella della libreria client deve essere contexthub.module.contexthub.browserinfo
.