Kitto é um framework para ajudar você a criar dashboards, escrito em Elixir/React.
A fonte dos painéis de demonstração pode ser encontrada em: kittoframework/demo.
Para começar a criar o seu próprio, leia abaixo.
Instale o arquivo mais recente
mix archive.install https://github.com/kittoframework/archives/raw/master/kitto_new-0.9.2.ez
Elixir
: >= 1,3Erlang/OTP
: >= 19Node
: 14.15.1npm
: 6.14.9Pode funcionar inadvertidamente em versões diferentes das acima, mas não terá sido completamente testado (consulte .travis.yml para a matriz de construção definida).
Você também pode usar a imagem oficial do Docker.
Abra um problema para solicitar suporte para uma plataforma específica.
mix kitto.new < project_name >
Instalar dependências
mix deps.get && npm install
Inicie um servidor Kitto (também observa alterações de ativos)
mix kitto.server
Experimente o painel de amostra em: http://localhost:4000/dashboards/sample
Para opções de configuração e solução de problemas, consulte o wiki.
Kitto é capaz de servir vários painéis. Cada um deles é servido a partir de um caminho no seguinte formato /dashboards/
.
Um painel consiste em uma grade Gridster contendo widgets React.
Você encontrará um painel de amostra em dashboards/sample
.
O trecho abaixo colocará um widget Text
simples no painel.
< li data-row =" 1 " data-col =" 1 " data-sizex =" 2 " data-sizey =" 1 " >
< div class =" widget-welcome "
data-widget =" Text "
data-source =" text "
data-title =" Hello "
data-text =" This is your shiny new dashboard. "
data-moreinfo =" Protip: You can drag the widgets around! " > div >
li >
Os atributos de dados mais importantes aqui são
data-widget
Seleciona o widget a ser usado. Veja: Widgetsdata-source
Seleciona a fonte de dados para preencher o widget. Veja: EmpregosOs outros atributos de dados são opções a serem passadas como acessórios para o widget React.
Ao criar um novo painel usando mix kitto.new
você obtém alguns exemplos de trabalhos no diretório jobs/
.
Um arquivo de trabalho é estruturado da seguinte forma:
# File jobs/random.exs
use Kitto.Job.DSL
job :random , every: :second do
broadcast! :random , % { value: :rand . uniform * 100 |> Float . round }
end
O procedimento acima gerará um processo supervisionado que emitirá um evento enviado pelo servidor com o nome random
a cada segundo.
Os trabalhos também podem executar comandos no servidor. A transmissão de dados usando comandos está no formato {exit_code: integer, stdout: String.t}
. Por exemplo, o trabalho a seguir transmitirá um evento kitto_last_commit
com os resultados da instrução curl
:
job :kitto_last_commit ,
every: { 5 , :minutes } ,
command: "curl https://api.github.com/repos/kittoframework/kitto/commits ? page = 1 & per_page = 1"
Você pode definir um trabalho para iniciar mais tarde usando a opção first_at
:
# Delay the first run by 2 minutes
job :random , every: :second , first_at: { 2 , :minutes } do
broadcast! :random , % { value: :rand . uniform * 100 |> Float . round }
end
Widgets residem em widgets/
são compilados usando Webpack e são carregados automaticamente nos painéis. Os ativos são reconstruídos mediante mudanças no desenvolvimento, mas precisam ser compilados para produção. Consulte webpack.config.js
para opções de construção.
Widget de exemplo ( widgets/text/text.js
)
{this.props.moreinfo}
import React from 'react' ; import Widget from '../../assets/javascripts/widget' ; import './text.scss' ; Widget . mount ( class Text extends Widget { render ( ) { return ( < div className = { this . props . className } > < h1 className = "title" > { this . props . title } < / h1 > < h3 > { this . state . text || this . props . text } < / h3 > < p className = "more-info" > { this . props . moreinfo } < / p > < / div > ) ; } } ) ;
Cada widget é atualizado com dados de uma fonte especificada usando o atributo data-source
.
destilaria | janela de encaixe | heróiku | sistema
Compilar o projeto
MIX_ENV=prod mix compile
Compilar ativos para produção
npm run build
Inicie o servidor
MIX_ENV=prod mix kitto.server
Ao criar um novo painel com:
mix kitto.new
você também recebe um Dockerfile
.
Crie uma imagem incluindo seu código, pronta para ser implantada.
docker build . -t my-awesome-dashboard
Gerar um contêiner da imagem
docker run -i -p 127.0.0.1:4000:4000 -t my-awesome-dashboard
Por favor, leia as instruções detalhadas no wiki.
Por favor, leia o guia de atualização no wiki.
mix test
mix credo
Tem alguma pergunta?
É fortemente inspirado no shopify/dash. ❤️
O caminho para Erlang/Elixir começa com Kitto.
Copyright (c) 2017 Dimitris Zorbas, Licença MIT. Consulte LICENSE.txt para obter mais detalhes.
Logotipo de Vangelis Tzortzis (github/site).