Tema
SDK de eventos
Referência do objecto keplin, disponível no código dos eventos dos widgets e do ecrã. Para o enquadramento e exemplos, ver Eventos e código.
Tudo vive dentro de keplin. Não há variáveis globais soltas.
O evento
ts
keplin.event // Record<string, unknown>O conteúdo do evento que disparou o código. Os campos dependem do evento — a tabela completa está em Catálogo de widgets.
| Evento | Campos |
|---|---|
onChange | value |
onClick (gráfico) | name, seriesName, value, dataIndex |
onRowClick, onRowDoubleClick | row, index |
onTabChange | tab |
onDataLoaded | — |
Widgets
ts
keplin.widgets.get(id: string): WidgetHandleDevolve o handle de um widget do ecrã. Um identificador que não exista dá erro.
O handle tem:
| Membro | O que faz |
|---|---|
id, type | Identificação (leitura) |
show(), hide() | Mostrar e esconder |
visible | Estado actual (leitura) |
setEnabled(bool) | Activar e desactivar |
enabled | Estado actual (leitura) |
getValue() | Valor actual (campos de entrada) |
setValue(v) | Definir o valor |
setProps(patch) | Alterar propriedades |
Mostrar, esconder, activar e desactivar são genéricos: funcionam em qualquer widget, não só nos campos de entrada.
Conjuntos de dados
ts
keplin.data.store(nome: string)Devolve o conjunto de dados com aquele nome. Os de registo único e os de colecção partilham o handle; kind diz qual é.
Colecção (kind === "list"):
| Membro | O que faz |
|---|---|
rows() | As linhas carregadas |
total() | Total de registos, ou null |
page(), pageSize() | Estado da paginação |
goToPage(n) | Muda de página |
sort(), setSort(...) | Ordenação |
reload() | Volta a carregar |
status() | idle, loading, ready ou error |
Registo (kind === "record"):
| Membro | O que faz |
|---|---|
get(campo), set(campo, v) | Ler e escrever um campo |
record() | O registo inteiro |
isDirty() | Foi alterado desde que carregou |
reload(), reset() | Recarregar, repor |
status() | Estado |
Consultas
ts
keplin.api.query(operacao, args?, campos?): Promise<Record<string, unknown>[]>
keplin.api.gql(documento, variaveis?): Promise<unknown>Consultas ao modelo, em leitura. Correm no servidor, contra um esquema restringido às entidades que este ecrã usa — o navegador não conhece o endereço dos dados nem transporta credenciais.
ts
const linhas = await keplin.api.query("getVendas", { take: 10 }, ["numero", "valor"]);Navegação
ts
keplin.nav.go(caminho: string) // navega dentro da aplicação
keplin.nav.back() // volta atrás
keplin.nav.params // parâmetros do ecrã actualInterface
ts
keplin.ui.toast(mensagem, tipo?) // "success" | "error" | "info"
await keplin.ui.confirm(mensagem) // devolve true/false
await keplin.ui.openModal(alvo, params?) // abre um ecrã por cima
keplin.ui.closeModal(resultado?) // fecha o ecrã actual
keplin.ui.clearDrilldown() // limpa as selecções de cruzamentoopenModal resolve quando o ecrã fecha, com o que esse ecrã passar em closeModal.
closeModal não faz nada num ecrã normal.
Sessão
ts
keplin.session.user // null num dashboard público
keplin.session.roles // string[]
keplin.session.hasRole(nome) // boolean
await keplin.session.logout()Num dashboard aberto por link público não há sessão: user é null e hasRole devolve sempre falso.
Traduções
ts
keplin.i18n.t(chave) // uma chave desconhecida devolve a própria chave
keplin.i18n.localeArmazenamento local
ts
keplin.storage.get<T>(chave): T | null
keplin.storage.set(chave, valor)
keplin.storage.remove(chave)Guardado no navegador de quem está a ver, com o âmbito da aplicação. Serve para preferências, não para dados.
O que o SDK não tem
Não há escrita de dados, nem criação ou alteração de utilizadores, nem operações de administração. O DeepVisuals é um produto de visualização, e o SDK reflecte isso.
Autocomplete
O editor conhece os identificadores dos widgets e os nomes dos conjuntos de dados deste ecrã, e sugere-os. Um identificador errado é assinalado enquanto se escreve.