Defina nuevos tipos de almacenes y módulos de ContextHub cuando los proporcionados no cumplan con los requisitos de la solución.
Las tiendas de ContextHub se crean a partir de los candidatos de las tiendas registradas. Para crear una tienda personalizada, debe crear y registrar un candidato a la tienda.
El archivo javascript que incluye el código que crea y registra al candidato de la tienda debe incluirse en una carpeta de la biblioteca del cliente. La categoría de la carpeta debe coincidir con el siguiente patrón:
contexthub.store.[storeType]
La parte [storeType]
de la categoría es la storeType
con la que está registrado el candidato a la tienda. (Consulte Registro de un candidato de tienda de ContextHub). Por ejemplo, para storeType de contexthub.mystore
, la categoría de la carpeta de la biblioteca del cliente debe ser contexthub.store.contexthub.mystore
.
Para crear un candidato de almacén, utilice la función ContextHub.Utils.inheritance.inherit
para ampliar uno de los almacenes base:
ContextHub.Store.PersistedStore
ContextHub.Store.SessionStore
ContextHub.Store.JSONPStore
ContextHub.Store.PersistedJSONPStore
Tenga en cuenta que cada almacén base extiende el almacén ContextHub.Store.Core
.
El ejemplo siguiente crea la extensión más simple del candidato de almacén ContextHub.Store.PersistedStore
:
myStoreCandidate = function(){};
ContextHub.Utils.inheritance.inherit(myStoreCandidate,ContextHub.Store.PersistedStore);
De forma realista, los candidatos de la tienda personalizada definirán funciones adicionales o anularán la configuración inicial de la tienda. Varios candidatos del almacén de muestras están instalados en el repositorio que se encuentra a continuación /libs/granite/contexthub/components/stores
. Para obtener más información sobre estos ejemplos, utilice CRXDE Lite para abrir los archivos de javascript.
Registre un candidato a tienda para integrarlo con el marco de trabajo de ContextHub y permitir que se creen tiendas a partir de él. Para registrar un candidato de almacén, utilice la función registerStoreCandidate
de la clase ContextHub.Utils.storeCandidates
.
Al registrar un candidato a tienda, debe proporcionar un nombre para el tipo de tienda. Al crear una tienda a partir del candidato, se utiliza el tipo de tienda para identificar al candidato en el que se basa.
Al registrar un candidato a tienda, usted indica su prioridad. Cuando un candidato a tienda se registra con el mismo tipo de tienda que un candidato a tienda ya registrado, se utiliza el candidato con mayor prioridad. Por lo tanto, puede omitir los candidatos de tienda existentes con nuevas implementaciones.
ContextHub.Utils.storeCandidates.registerStoreCandidate(myStoreCandidate,
'contexthub.mystorecandidate', 0);
En la mayoría de los casos, solo se necesita un candidato y la prioridad se puede establecer en 0
, pero si le interesa puede obtener información sobre registros más avanzados, que permite elegir una de las pocas implementaciones de almacenamiento en base a la condición de javascript (applies
) y la prioridad candidata.
Cree tipos de módulos de interfaz de usuario personalizados cuando los que están instalados con ContextHub no cumplan con sus requisitos. Para crear un tipo de módulo de interfaz de usuario, cree un nuevo procesador de módulos de interfaz de usuario ampliando la clase ContextHub.UI.BaseModuleRenderer
y, a continuación, registrándola con ContextHub.UI
.
Para crear un procesador de módulos de interfaz de usuario, cree un objeto Class
que contenga la lógica que procesa el módulo de interfaz de usuario. Como mínimo, la clase debe realizar las siguientes acciones:
Extienda la clase ContextHub.UI.BaseModuleRenderer
. Esta clase es la implementación básica para todos los procesadores de módulos de interfaz de usuario. El objeto Class
define una propiedad denominada extend
que se utiliza para asignar a esta clase el nombre que se está extendiendo.
Proporcione una configuración predeterminada. Cree una propiedad defaultConfig
. Esta propiedad es un objeto que incluye las propiedades definidas para el módulo de interfaz de usuario contexthub.base
y cualquier otra propiedad que necesite.
El origen de ContextHub.UI.BaseModuleRenderer
se encuentra en /libs/granite/contexthub/code/ui/container/js/ContextHub.UI.BaseModuleRenderer.js. Para registrar el procesador, utilice el método registerRenderer
de la clase ContextHub.UI
. Debe proporcionar un nombre para el tipo de módulo. Cuando los administradores crean un módulo de interfaz de usuario basado en este procesador, especifican este nombre.
Cree y registre la clase de procesador en una función anónima de ejecución automática. El siguiente ejemplo se basa en el código fuente del módulo de interfaz de usuario contexthub.browserinfo. Este módulo de interfaz de usuario es una extensión simple de la clase 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());
}());
El archivo javascript que incluye el código que crea y registra el procesador debe incluirse en una carpeta de biblioteca de cliente. La categoría de la carpeta debe coincidir con el siguiente patrón:
contexthub.module.[moduleType]
La parte [moduleType]
de la categoría es la moduleType
con la que está registrado el procesador de módulos. Por ejemplo, para moduleType
de contexthub.browserinfo
, la categoría de la carpeta de la biblioteca del cliente debe ser contexthub.module.contexthub.browserinfo
.