Extensão do 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 à loja personalizada

Os armazenamentos do ContextHub são criados de candidatos de armazenamento registrados. Para criar um armazenamento personalizado, é necessário criar e registrar um candidato de armazenamento.

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]

A variável storeType parte da categoria é a storeType com o qual o candidato da loja está registrado. (Consulte Registrando um candidato de 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.

Criação de um candidato de armazenamento do ContextHub

Para criar um candidato de armazenamento, use o ContextHub.Utils.inheritance.inherit função para estender um dos armazenamentos base:

Observe que cada armazenamento básico estende o ContextHub.Store.Core armazenamento.

O exemplo a seguir cria a extensão mais simples do ContextHub.Store.PersistedStore candidato a armazenamento:

myStoreCandidate = function(){};
ContextHub.Utils.inheritance.inherit(myStoreCandidate,ContextHub.Store.PersistedStore);

Na realidade, seus candidatos de armazenamento personalizados definirão funções adicionais ou substituirão a configuração inicial do armazenamento. Vários exemplos de candidatos à loja estão instalados no repositório abaixo /libs/granite/contexthub/components/stores.

Registrando um candidato de armazenamento do ContextHub

Registre um candidato de armazenamento para integrá-lo à estrutura do ContextHub e permitir que os armazenamentos sejam criados a partir dele. Para registrar um candidato de armazenamento, use o registerStoreCandidate função da ContextHub.Utils.storeCandidates classe.

Ao registrar um candidato de armazenamento, forneça um nome para o tipo de armazenamento. Ao criar um armazenamento a partir do candidato, use o tipo de armazenamento para identificar o candidato no qual ele se baseia.

Ao registrar um candidato de armazenamento, você indica sua prioridade. Quando um candidato de armazenamento é registrado usando o mesmo tipo de armazenamento que um candidato de armazenamento já registrado, o candidato com a prioridade mais alta é usado. Portanto, você pode substituir candidatos de armazenamento existentes por novas implementações.

ContextHub.Utils.storeCandidates.registerStoreCandidate(myStoreCandidate,
                                'contexthub.mystorecandidate', 0);

Na maioria dos casos, é necessário apenas um candidato e a prioridade pode ser definida como 0, mas se você estiver interessado, poderá saber mais sobre registros mais avançados, que permite que uma das poucas implementações de armazenamento seja escolhida com base na condição do javascript (applies) e a prioridade do candidato.

Criação de tipos de módulo da interface do usuário do ContextHub

Criar tipos de módulo de interface personalizada quando os que estão instalado com o ContextHub não atendem 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, em seguida, registrando-a 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:

  • Estenda o ContextHub.UI.BaseModuleRenderer classe. Essa classe é a implementação base para todos os renderizadores de módulo de interface do usuário. A variável Class O objeto define uma propriedade chamada extend que você usa para nomear essa classe como aquela que está sendo estendida.
  • Forneça uma configuração padrão. Criar um defaultConfig propriedade. Essa propriedade é um objeto que inclui as propriedades definidas para o contexthub.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 método do ContextHub.UI classe. É necessário fornecer um nome para o tipo de módulo. Quando os administradores criam um módulo de interface do usuário com base nesse renderizador, eles especificam esse nome.

Crie e registre a classe do renderizador em uma função anônima autoexecutável. O exemplo a seguir é baseado no código-fonte para o contexthub.browserinfo Módulo de interface do usuário. Esse módulo de interface do usuário é 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]

A variável [moduleType] parte da categoria é a moduleType com o qual o renderizador do módulo está registrado. Por exemplo, para o moduleType de contexthub.browserinfo, a categoria da pasta da biblioteca do cliente deve ser contexthub.module.contexthub.browserinfo.

Nesta página