Skip to content

Widgets

Os widgets consistem em um agrupamento de elementos para gerar uma visões gráfica e exibir os dados indexados na plataforma.

Criar um Widget

Acesse a área administrativa e navegue para área: "Widgets". Clique no botão de mais para criar um novo widget, preencha todos os campos e clique em "salvar".

Criar novo Campo

Uma vez criado o novo widget clique para navegar para a página de detalhes.

Estrutura Básica

Um widget é um código JSON que possúi quatro atributos principais: Container, Conteúdos, Camadas e Fontes de Dados.

json
{
  "container": {...},
  "contents": [...],
  "layers": [...],
  "datasources": [...]
}

Dito isso para criar um novo widget devemos obrigatóriamente definir pelo menos um conteúdo contendo ao menos um elemento. O sistema define automaticamente as configurações básicas do container e uma camada com o código root.

INFO

O atributo de classe (class) deve utilizar a biblioteca Tailwind CSS como referência.

Já para definir o valor do atributo estilo (style) deve utilizar a notação padrão de CSS.

Container

  • Tag: container
  • Tipo: object
  • Atributos: class | style | elevation | click | height | width

O Container funciona para definidir configurações que serão realizadas no agrupador de todas as camadas, conteúdos e elementos do Widget. Mesmo que não seja definido um container a plataforma vai criar um container automaticamente.

json
{
  "container": {
    "elevation": 2,
    "height": "190px",
    "style": "background-color: unset !important;",
    "width": "170px"
  }
}

Container Click

  • Tag: click
  • Tipo: object
  • Atributos: content | title | type | height | width

O atrubuto click é utilizado para definir o comportamento da ação de click no widget como um topo.

Para definir

json
{
  "container": {
    "click": {
      "content": {
        "type": "widget",
        "widgetCode": "dash-principal-program-modal"
      },
      "title": "Programa Corporativo",
      "type": "contentModal",
      "width": "1300px"
    }
  }
}

Camadas

  • Tag: layers
  • Tipo: array
  • Atributos: code | class | style | full | top | right | bottom | left

Uma camada é utilizada para agrupar conteúdos, importante lembrar que as camadas sao posicionadas de forma empilhada uma sobre a outra, quem vem primeiro na no array vai estar acima das outras camadas. Mesmo que não seja definida uma camada a plataforma vai criar uma automaticamente.

Caso o atributo full seja definido a camada vai ter o tamanho total do container do widget. Também é possível utilizar os atributos top, right, bottom, left para definir a posição da camada dentro do container, mas para isso o atributo full deve ser definido como falso.

json
{
  "layers": [
    {
      "code": "root",
      "full": true
    },
    {
      "class": "flex flex-wrap items-center",
      "code": "box",
      "style": "background: #FFFFFF; margin-top: 105px; width: 100%;"
    }
  ]
}

Conteúdos

  • Tag: contents
  • Tipo: array
  • Atributos: class | style | layer | elements

Um conteúdo é um agrupador de elementos. Além da lista de elementos ele pode receber atributos de classe e estilo. Clique aqui para acessar a lista de elementos disponíveis.

Por padrão todo conteúdo é definido dentro da camada root caso seja necessário colocar o conteúdo em outra camada dve ser utilizado o atributo layer com o código da camada desejada.

Exemplo:

json
{
  "contents": [
    {
      "class": "flex justify-center items-center",
      "elements": [
        {
          "data": "Rótulo",
          "type": "text"
        }
      ],
      "style": "width: 100%; height: 100%;"
    }
  ]
}

Origem dos Dados

  • Tag: datasources
  • Tipo: array
  • Atributos: code | type

As fontes de dados são responsáveis por carregar os conteúdos que serão exibidos pelo widget. O mesmo widget pode exibir dados de fontes diferentes, essa definição de onde virão os dados é realizada quando utilizamos o widget em um slot. Clique aqui para saber mais sobre a configuração das origens dos dados.

json
{
  "datasources": [
    {
      "code": "active",
      "type": "boolean"
    },
    {
      "code": "total",
      "type": "number"
    },
    {
      "code": "label",
      "type": "string"
    },
    {
      "code": "project",
      "type": "object"
    },
    {
      "code": "results",
      "type": "array"
    }
  ]
}