Extensão do ContextHub extending-contexthub
Defina novos tipos de armazenamentos e módulos do ContextHub quando os fornecidos não atenderem aos requisitos da solução.
Criação de Candidatos de Loja Personalizada creating-custom-store-candidates
As lojas ContextHub são criadas a partir de candidatos a lojas registradas. Para criar uma loja personalizada, você precisa criar e registrar um candidato de loja.
O arquivo javascript que inclui o código que cria e registra o candidato da loja deve ser incluído em um pasta da biblioteca do cliente. A categoria da pasta deve corresponder ao seguinte padrão:
contexthub.store.[storeType]
O [storeType]
parte da categoria é storeType
com o qual o candidato da loja está registrado. (Consulte Registrando um candidato a armazenamento do ContextHub). Por exemplo, para o storeType de contexthub.mystore
, a categoria da pasta da biblioteca do cliente deve ser contexthub.store.contexthub.mystore
.
Criando um candidato a armazenamento do ContextHub creating-a-contexthub-store-candidate
Para criar um candidato de loja, use a variável ContextHub.Utils.inheritance.inherit
para estender um dos armazenamentos base:
Observe que cada loja base estende a variável ContextHub.Store.Core
armazenar.
O exemplo a seguir cria a extensão mais simples do ContextHub.Store.PersistedStore
candidato à loja:
myStoreCandidate = function(){};
ContextHub.Utils.inheritance.inherit(myStoreCandidate,ContextHub.Store.PersistedStore);
Realisticamente, os candidatos a loja personalizada definirão funções adicionais ou substituirão a configuração inicial da loja. Vários candidatos à loja de amostras são instalados no repositório abaixo /libs/granite/contexthub/components/stores
. Para aprender com essas amostras, use o CRXDE Lite para abrir os arquivos javascript.
Registrando um candidato a armazenamento do ContextHub registering-a-contexthub-store-candidate
Registre um candidato a loja para integrá-lo à estrutura do ContextHub e permitir que as lojas sejam criadas a partir dele. Para registrar um candidato de loja, use a variável registerStoreCandidate
da ContextHub.Utils.storeCandidates
classe .
Ao registrar um candidato de loja, forneça um nome para o tipo de loja. Ao criar uma loja do candidato, você usa o tipo de loja para identificar o candidato em que se baseia.
Ao registrar um candidato a loja, você indica sua prioridade. Quando um candidato de loja é registrado usando o mesmo tipo de loja que um candidato de loja já registrado, o candidato com prioridade mais alta é usado. Portanto, você pode substituir candidatos de loja existentes por novas implementações.
ContextHub.Utils.storeCandidates.registerStoreCandidate(myStoreCandidate,
'contexthub.mystorecandidate', 0);
Na maioria dos casos, só é necessário um candidato e a prioridade pode ser definida como 0
, mas se você estiver interessado, poderá saber mais sobre registros mais avançados, O que permite que uma das poucas implementações da loja seja escolhida com base na condição de javascript (applies
) e a prioridade do candidato.
Criação de tipos de módulos da interface do usuário do ContextHub creating-contexthub-ui-module-types
Criar tipos de módulo de interface de usuário personalizada quando os instalado com o ContextHub não atenda aos seus requisitos. Para criar um tipo de módulo de interface do usuário, crie um novo renderizador de módulo de interface do usuário estendendo o ContextHub.UI.BaseModuleRenderer
e registrá-la com ContextHub.UI
.
Para criar um renderizador de módulo de interface do usuário, crie um Class
objeto que contém a lógica que renderiza o módulo da interface do usuário. No mínimo, sua classe deve executar as seguintes ações:
-
Estender o
ContextHub.UI.BaseModuleRenderer
classe . Essa classe é a implementação básica para todos os renderizadores de módulo da interface do usuário. OClass
objeto define uma propriedade chamadaextend
que você usa para nomear essa classe como aquela que está sendo estendida. -
Forneça uma configuração padrão. Crie um
defaultConfig
propriedade. Essa propriedade é um objeto que inclui as propriedades definidas para a variávelcontexthub.base
Módulo de interface do usuário e quaisquer outras propriedades necessárias.
A fonte para ContextHub.UI.BaseModuleRenderer
está localizado em /libs/granite/contexthub/code/ui/container/js/ContextHub.UI.BaseModuleRenderer.js. Para registrar o renderizador, use o registerRenderer
do método ContextHub.UI
classe . É necessário fornecer um nome para o tipo de módulo. Quando os administradores criam um módulo de interface com base nesse renderizador, eles especificam esse nome.
Crie e registre a classe renderer em uma função anônima de execução automática. O exemplo a seguir é baseado no código-fonte do módulo da interface do usuário contexthub.browserinfo . Este módulo de interface é uma extensão simples do ContextHub.UI.BaseModuleRenderer
classe .
;(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());
}());
O arquivo javascript que inclui o código que cria e registra o renderizador deve ser incluído em um pasta da biblioteca do cliente. A categoria da pasta deve corresponder ao seguinte padrão:
contexthub.module.[moduleType]
O [moduleType]
parte da categoria é moduleType
com o qual o renderizador de módulo é registrado. Por exemplo, para a variável moduleType
de contexthub.browserinfo
, a categoria da pasta da biblioteca do cliente deve ser contexthub.module.contexthub.browserinfo
.