Defina nuevos tipos de módulos y tiendas de ContextHub cuando los que se proporcionan no cumplan con los requisitos de su solución.
Las tiendas de ContextHub se crean a partir de candidatos de tiendas registradas. Para crear un almacén personalizado, debe crear y registrar un candidato de almacén.
El archivo javascript que incluye el código que crea y registra el candidato al almacén debe incluirse en un carpeta de biblioteca de cliente. La categoría de la carpeta debe coincidir con el siguiente patrón:
contexthub.store.[storeType]
El storeType
parte de la categoría es la storeType
con el que está registrado el candidato a tienda. (Consulte Registro de un candidato de tienda de ContextHub). Por ejemplo, para el tipo de almacén de contexthub.mystore
, la categoría de la carpeta de la biblioteca de cliente debe ser contexthub.store.contexthub.mystore
.
Para crear un candidato de tienda, se utiliza el 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 amplía la variable ContextHub.Store.Core
tienda.
En el siguiente ejemplo se crea la extensión más sencilla del ContextHub.Store.PersistedStore
candidato de tienda:
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 de tienda de muestra están instalados en el repositorio a continuación /libs/granite/contexthub/components/stores
.
Registre un candidato de tienda para integrarlo con el marco de ContextHub y permitir que se creen tiendas a partir de él. Para registrar un candidato a tienda, utilice el registerStoreCandidate
función del ContextHub.Utils.storeCandidates
clase.
Al registrar un candidato de tienda, se proporciona un nombre para el tipo de tienda. Al crear un almacén a partir del candidato, se utiliza el tipo de almacén para identificar el candidato en el que se basa.
Cuando se registra un candidato a tienda, se indica su prioridad. Cuando se registra un candidato de tienda con el mismo tipo de tienda que un candidato de tienda ya registrado, se utiliza el candidato con la prioridad más alta. Por lo tanto, puede anular los candidatos de tienda existentes con nuevas implementaciones.
ContextHub.Utils.storeCandidates.registerStoreCandidate(myStoreCandidate,
'contexthub.mystorecandidate', 0);
En la mayoría de los casos, solo es necesario un candidato y la prioridad se puede establecer en 0
, pero si está interesado, puede obtener más información sobre registros más avanzados, lo que permite elegir una de las pocas implementaciones de la tienda en función de la condición de javascript (applies
) y prioridad de los candidatos.
Cree tipos de módulos de IU personalizados cuando los que están instalado con ContextHub no cumpla 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 ContextHub.UI.BaseModuleRenderer
y, a continuación, registrarla con ContextHub.UI
.
Para crear un procesador de módulos de IU, cree un Class
que contiene la lógica que procesa el módulo de interfaz de usuario. Como mínimo, la clase debe realizar las siguientes acciones:
ContextHub.UI.BaseModuleRenderer
clase. Esta clase es la implementación base para todos los procesadores de módulos de IU. El Class
define una propiedad denominada extend
que se utiliza para asignar a esta clase el nombre que se está extendiendo.defaultConfig
propiedad. Esta propiedad es un objeto que incluye las propiedades definidas para la variable contexthub.base
Módulo de interfaz de usuario y otras propiedades que necesite.La fuente de ContextHub.UI.BaseModuleRenderer
se encuentra en /libs/granite/contexthub/code/ui/container/js/ContextHub.UI.BaseModuleRenderer.js
. Para registrar el procesador, utilice el registerRenderer
método del ContextHub.UI
clase. 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 contexthub.browserinfo
Módulo de IU. Este módulo de interfaz de usuario es una simple extensión del ContextHub.UI.BaseModuleRenderer
clase.
;(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 un carpeta de biblioteca de cliente. La categoría de la carpeta debe coincidir con el siguiente patrón:
contexthub.module.[moduleType]
El [moduleType]
parte de la categoría es la moduleType
con el que está registrado el procesador de módulos. Por ejemplo, para moduleType
de contexthub.browserinfo
, la categoría de la carpeta de la biblioteca de cliente debe ser contexthub.module.contexthub.browserinfo
.