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.

Criando Candidatos à Loja Personalizada

As lojas do ContextHub são criadas de candidatos a lojas registradas. Para criar uma loja personalizada, é necessário 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 uma pasta da biblioteca do cliente. A categoria da pasta deve corresponder ao seguinte padrão:

contexthub.store.[storeType]

A parte storeType da categoria é a storeType com a qual o candidato da loja está registrado. (Consulte Registrando um Candidato à Loja 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 de armazenamento do ContextHub

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

Observe que cada armazenamento base estende a loja ContextHub.Store.Core.

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

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

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

Registrando um candidato da loja do ContextHub

Registre um candidato de loja para integrá-lo à estrutura do ContextHub e permitir que as lojas sejam criadas a partir dela. Para registrar um candidato de loja, use a função registerStoreCandidate da classe ContextHub.Utils.storeCandidates.

Ao registrar um candidato de loja, forneça um nome para o tipo de loja. Ao criar uma loja a partir do candidato, use o tipo de loja para identificar o candidato no qual ela 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 os candidatos de armazenamento existentes por novas implementações.

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

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

Criando tipos de módulo de interface do usuário do ContextHub

Crie tipos de módulo de interface de usuário personalizados quando os que estão instalados com o ContextHub não atenderem aos seus requisitos. Para criar um tipo de módulo de interface, crie um novo renderizador de módulo de interface estendendo a classe ContextHub.UI.BaseModuleRenderer e, em seguida, registrando-o com ContextHub.UI.

Para criar um renderizador de módulo de interface, crie um objeto Class que contenha a lógica que renderiza o módulo de interface do usuário. No mínimo, sua classe deve executar as seguintes ações:

  • Estende a classe ContextHub.UI.BaseModuleRenderer. Essa classe é a implementação básica para todos os renderizadores de módulo de interface. O objeto Class 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. Crie uma propriedade defaultConfig. Esta propriedade é um objeto que inclui as propriedades definidas para o módulo contexthub.base da interface do usuário e quaisquer outras propriedades necessárias.

A fonte de ContextHub.UI.BaseModuleRenderer está localizada em /libs/granite/contexthub/code/ui/container/js/ContextHub.UI.BaseModuleRenderer.js. Para registrar o renderizador, use o método registerRenderer da classe ContextHub.UI. É 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 renderizadora em uma função anônima autoexecutável. O exemplo a seguir baseia-se no código fonte do módulo contexthub.browserinfo da interface do usuário. Este módulo de interface é uma extensão simples da 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());

}());

O arquivo javascript que inclui o código que cria e registra o renderizador deve ser incluído em uma pasta da biblioteca do cliente. A categoria da pasta deve corresponder ao seguinte padrão:

contexthub.module.[moduleType]

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

Nesta página

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free