@credithub/harlan
v1.0.3
Published
Harlan é o sistema modular que permite você automatizar toda sua governança cadastral da nuvem.
Downloads
10
Readme
Harlan
Implementação do JavaScript
Sumário
Este documento é voltado para desenvolvedores que desejam carregar o Harlan dentro de seus sistemas ou otimizá-lo através da criação de módulos. Esse documento fornece um resumo do que é necessário para se trabalhar dentro deste sistema.
O que é o Harlan?
Acompanhe, pesquise e descubra de maneira simplificada por todas as informações disponíveis na API.
O Harlan é um sistema de governança cadastral aberto que permite que empresas desenvolvam seus modelos de negócio e aplicativos dentro de uma plataforma única e de maneira simplificada, utilizando as informações em uma interface construída com NodeJS.
Dependências
Para compilar o Harlan é necessário que você tenha instalado todas as dependências do Bower e do NodeJS. Além do Ruby e Compass para que os arquivos SASS sejam corretamente carregados.
Gerando os arquivos
O Harlan utiliza a tecnologia Gulp para a construção do projeto, o Gulp é uma ferramenta muito simples e sua documentação pode ser encontrada neste endereço.
Cookbook
npm install
bower install
npm run buildDesenvolvendo
Docker
Recomendamos para o desenvolvimento utilizar o Docker e imagens já preparadas do Harlan disponíveis no Docker Hub. Com os comandos abaixo você terá um ambiente preparado rodando na porta 3000.
docker compose build
docker compose run --service-ports harlanEstrutura de Arquivos
└── src
├── external-js
├── images
├── js
│ └── internals
│ ├── forms
│ ├── interface
│ ├── library
│ ├── modules
│ ├── parsers
│ └── widgets
├── scss
└── static-templateDesmistificando o src/js/controller.js
Todo o desenvolvimento do Harlan é orientado para que você consiga fazer o seguinte através de poucas linhas de JavaScript e CSS:
- Sobreescrever funcionalidades existentes.
- Receber os eventos do sistema de modo simplificado.
- Alterar toda a interface do sistema ou pontos específicos.
O controller é visível do user-space, que é onde os módulos externos a aplicação, sejam eles injetados no Harlan ou não, ou enxergam com o nome harlan, por exemplo:
/* file: src/external-js/mymodule.js */
harlan.registerCall("mymodule::action", function (args) {});
harlan.call("mymodule::action");Caso você esteja dentro do user-space da aplicação Harlan:
/* file: src/js/internals/modules/mymodule.js */
export default function mymodule(controller) {
controller.registerCall("mymodule::action", function (args) {});
controller.call("mymodule::action");
};
/* Dentro de controller.js adicionar antes do return */
module.exports = function () {
/* ... */
require("./modules/mymodule.js");
return this;
}Criando uma Call
A call é uma função que você deseja exportar para o sistema. Por exemplo, eu desejo exportar uma função que exibe um pop-up dando Hello World, abra o console JavaScript do Chrome e digite:
/* Chrome JS Console - https://developer.chrome.com/devtools/docs/console */
harlan.registerCall("mymodule::popup", function (args) {
/* Vamos chamar o módulo modal, assim como esse existem módulos interessantes em
src/js/modules */
var modal = harlan.call("modal");
modal.title("Hello World!");
modal.subtitle("Como é fácil criar um módulo para o Harlan!")
var form = modal.createForm();
form.element().submit(function (e) {
e.preventDefault();
modal.close();
});
form.addSubmit("exit", "Sair");
});Agora na sequência digite o seguinte:
harlan.call("mymodule::popup");Interceptando um Evento
O controller permite disparar e receber eventos, todos os eventos necessáriamente são gravados no Console do seu navegador.
/* Antes de autenticar digite no console */
harlan.registerTrigger("authentication::authenticated", "callback::test::name", function (args, callback) {
console.log("Eu recebi meu callback!");
callback(); /* Você sempre deve chamar o callback após terminar suas operações */
});Você também pode gerar seus próprios triggers, como por exemplo:
harlan.trigger("mymodule::finish", {key: "value"});Executando ao Inicializar
Apenas módulos internos podem executar instruções logo após a construção do DOM.
export default function (controller) {
controller.registerBootstrap("mymodule::bootstrap", function () {
console.log("Ok! O bootstrap funciona.");
});
};Deploy
export GCLOUD_JSON_FILE=gcloud-key-file.json
docker build --secret "id=gcloud-key-file,src=$GCLOUD_JSON_FILE" -t harlan:latest .
docker run harlan:latest