Home  ›  Funcionalidades  ›  Dashboard  ›  Dashboard Personalizado

Dashboard Personalizado


Compartilhe


Resumo

O ADOTI R2 permite que seus administradores coloquem novos gráficos no dashboard. Estes gráficos podem ser colocados em quaisquer sites ou coleções.

Mais Informações

Para criar um gráfico dentro da aba Dashboard, é necessário criar um XML com as especificações indicadas neste artigo.

Crie uma pasta chamada ‘dashboard’ dentro da pasta de instalação do ADOTI no servidor. É nesta pasta que devem estar os arquivos XML com as informações para criação dos gráficos.

Abaixo, o exemplo de um XML de um gráfico que mostra os computadores que estão no ADOTI e a sua quantidade de memória RAM dentro de um RANGE específico:

<?xml version="1.0" encoding="utf-8" ?>
<dashboard>
    <Title>Computadores x RAM</Title>
    <QueryType>Range</QueryType>
    <Container>-1</Container>
    <ToCollection>false</ToCollection>
    <Labels>0-256 MB;257-512 MB;513-1024 MB;1025-2048 MB;Mais que 2048 MB</Labels>
    <Ranges>0-256;257-512;513-1024;1025-2048;2049-+</Ranges>
    <ChartQuery>
        <![CDATA[
            SELECT
                SUM(CASE WHEN t4.ValueNumber BETWEEN 0 AND 256 THEN 1 ELSE 0 END),
                SUM(CASE WHEN t4.ValueNumber BETWEEN 257 AND 512 THEN 1 ELSE 0 END),
                SUM(CASE WHEN t4.ValueNumber BETWEEN 513 AND 1024 THEN 1 ELSE 0 END),
                SUM(CASE WHEN t4.ValueNumber BETWEEN 1025 AND 2048 THEN 1 ELSE 0 END),
                SUM(CASE WHEN t4.ValueNumber > 2049 THEN 1 ELSE 0 END)
            FROM
                Tree_SERVER t1
                INNER JOIN Tree_SERVER t2 ON t1.pLeft < t2.pLeft AND t1.pRight > t2.pRight
                ##C1## INNER JOIN Tree_DataValues_SERVER stat ON t2.ID = stat.TreeItemID AND stat.DataStructID = 1 AND stat.ValueNumber = ##STATUSID##
                ##C2## LEFT  JOIN Tree_DataValues_SERVER stat ON t2.ID = stat.TreeItemID AND stat.DataStructID = 1 AND (stat.ValueNumber <> ##STATUSID## OR stat.ValueNumber IS NULL)
                INNER JOIN Tree_DataValues_SERVER t4 ON t2.ID = t4.TreeItemID AND t4.DataStructID = 750
            WHERE
                t1.ID = ##SITEID##
                AND t2.CategoryID = 3
                AND t2.pTrashed IS NULL
        ]]>
    </ChartQuery>
    <ReverseQuery>
        <![CDATA[
            SELECT
                t2.Path,
                t2.Name,
                t4.ValueNumber
            FROM
                Tree_SERVER t1
                INNER JOIN Tree_SERVER t2 ON t1.pLeft < t2.pLeft AND t1.pRight > t2.pRight AND t2.CategoryID = 3
                ##C1## INNER JOIN Tree_DataValues_SERVER stat ON t2.ID = stat.TreeItemID AND stat.DataStructID = 1 AND stat.ValueNumber = ##STATUSID##
                ##C2## LEFT  JOIN Tree_DataValues_SERVER stat ON t2.ID = stat.TreeItemID AND stat.DataStructID = 1 AND (stat.ValueNumber <> ##STATUSID## OR stat.ValueNumber IS NULL)
                INNER JOIN Tree_DataValues_SERVER t4 ON t2.ID = t4.TreeItemID AND t4.DataStructID = 750 AND (t4.ValueNumber BETWEEN ##START## AND ##END##)
            WHERE
                t1.ID = ##SITEID##
                AND t2.pTrashed IS NULL
        ]]>
    </ReverseQuery>
</dashboard>

Este XML resultará no seguinte gráfico de dashboard:

Detalhando o XML

 

Título:

<Title>Computadores x RAM</Title>

A Tag Title vai armazenar o nome do gráfico;

 

QueryType:

<QueryType>Range</QueryType>

O Query Type pode ser do tipo RANGE ou SINGLE.

  • Range: Utilizado quando os valores que serão mostrados no gráfico são resultados de uma SOMA de uma faixa de valores específicos. O Exemplo acima utiliza range, por exemplo, para mostrar quantos computadores tem de memória instalada entre 0 e 256 MB de Ram, depois entre 256 e 512, e assim por diante.
  • Single: Utilizado quando os valores apresentados no gráfico são resultados de uma CONTAGEM de uma categoria específica. Por exemplo, mostrar quantos computadores ativos, inativos e desligados existem.

 

Container:

<Container>-1</Container>

Container é o ID do site que receberá este gráfico. O ID do Site ou coleção pode ser visto na parte superior do lado direito, quando este está em foco.

Pode ser utilizado o valor -1 (para todos os sites) ou ID’s de sites separados por vírgula.

 

ToCollection:

<ToCollection>false</ToCollection>

ToCollection permite que o gráfico seja mostrado em coleções ou não. Caso seja true, será mostrado nas coleções.

Caso o ID da coleção seja colocado na TAG Container, e esta opção esteja “false”, o gráfico não será mostrado na coleção.

 

Labels:

<Labels>0-256 MB;257-512 MB;513-1024 MB;1025-2048 MB;Mais que 2048 MB</Labels

É a legenda do gráfico. Esta opção não é obrigatória. Se não tiver esta tag dentro do XML, o ADOTI colocará como legenda o nome das colunas do SQL que está em ChartQuery.

 

Ranges:

<Ranges>0-256;257-512;513-1024;1025-2048;2049-+</Ranges>

Opção obrigatória apenas quando o gráfico for do tipo RANGE. Os valores aqui citados serão utilizados pela ReverseQuery, responsável pelo drilldown, a trazer os valores corretos de acordo com o que foi clicado no gráfico. Neste exemplo específico, quando o usuário clicar na legenda em “0-256 MB”, o ADOTI utilizará o Primeiro Valor dentro de Ranges para fazer o drilldown. Dentro da ReverseQuery, existe um INNER JOIN utilizando as máscaras ##START## e ##END##, que serão respectivamente 0 e 256.

 

ChartQuery:

<ChartQuery><![CDATA[SQL]</ChartQuery>

ChartQuery é o comando SQL que trará os valores para montar o gráfico. Esta query deve ser feita levando em consideração o tipo de QueryType escolhido (RANGE ou SINGLE).

Esta query deve seguir as seguintes regras:

Para ambos os tipos de QueryType (SINGLE ou RANGE):

  • INNER/LEFT JOIN com a tabela Tree_DataValues_SERVER para fazer o filtro com o status do Ativo: Utilize a máscara ##C1## antes do INNER JOIN, para que o Dashboard possa ser mostrado com ativos que possuem o status selecionado no filtro do rodapé da página do Dashboard. Utilize a máscara ##C2## antes do LEFT JOIN, para que o Dashboard possa ser mostrado com ativos que não possuem o status selecionado no filtro do rodapé da página do Dashboard. Utilize também a máscara ##STATUSID## para que seja substituido pelo status escolhido dentro do dashboard;
  • Condição para filtro por site: Dentro do WHERE, fazer o filtro por site utilizando a máscara ##SITEID##. Esta máscara será substituida pelo site em que o usuário está.

Se o QueryType for SINGLE, adicione a seguinte regra:

  • Primeiro resultado da Query deve ser o ID: Quaiquer que sejam as categorias, o primeiro resultado desta query sempre deve ser o ID. Este ID será passado para a ReverseQuery, e será substituido nela pela máscara ##ID##.

Importante: O Comando SQL Deve, obrigatóriamente, estar dento do CDATA (veja exemplo na query acima). O CDATA indica que tudo o que estiver dentro dele não deve ser interpretado como tags do XML. Isso se deve aos comandos SQL utilizarem sinais como > (maior) e < (menor).

 

 ReverseQuery:

<ReverseQuery><![CDATA[SQL]</ReverseQuery>

Este é o comando SQL que mostrará o resultado do drilldown, ou seja, quando o usuário clicar em um dos valores do gráfico. Assim como o ChartQuery, este também deve serguir algumas regras.

Se o QueryType for RANGE, deve-se adicionar a seguinte regra:

  • INNER JOIN para trazer os valores do RANGE utilizando as máscaras ##START## e ##END##: Estas máscaras serão substituidas pelos valores que estão na tag Ranges. Seria o filtro para que somente os resultados que estão entre estes valores sejam mostrados.
  • INNER/LEFT JOIN com a tabela Tree_DataValues_SERVER para fazer o filtro com o status do Ativo: Utilize a máscara ##C1## antes do INNER JOIN, para que o Dashboard possa ser mostrado com ativos que possuem o status selecionado no filtro do rodapé da página do Dashboard. Utilize a máscara ##C2## antes do LEFT JOIN, para que o Dashboard possa ser mostrado com ativos que não possuem o status selecionado no filtro do rodapé da página do Dashboard. Utilize também a máscara ##STATUSID## para que seja substituido pelo status escolhido dentro do dashboard;
  • Condição para filtro por site: Dentro do WHERE, fazer o filtro por site utilizando a máscara ##SITEID##. Esta máscara será substituida pelo site em que o usuário está.

E se o QueryType for SINGLE, adicione a seguinte regra:

  • Condição para filtro: Dentro do WHERE, fazer o filtro por categoria, utilizando a máscara ##ID##. Esta máscara será substituida pelo ID da categoria, primeiro resultado da ChartQuery.

Abaixo, dois exemplos para download. Um do tipo Single e outro do tipo Range.

[download id=”1440″] e [download id=”1443″]

Sobre o Artigo
Autor: Cassiano
ID do Artigo: 366
A informação contida neste artigo aplica-se a: Dashboard
Palavras-chave: , , , , , , , , , , , , , , ,



Deixe uma resposta

Você deve estar logado para postar um comentário.

(3 voto(s), média: 4,67)
Loading...