Páginas filhas
  • totvs.framework.adapter.dashboard - cards e charts

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Classe auxiliar para criação dinâmica de cards e charts (gráficos) para telas genéricas de dashboard, para ser utilizada em aplicativos angular POUI
Essa classe deve ser utilizada como herança da sua classe que terá os cards e charts
Essa classe por padrão herdas herda a classe genérica de adapter FwAdapterBaseV2, portanto podem ser utilizados os métodos disponíveis na classe pai também.

...

Métodos que devem ser implementados na classe que herdar esta

...

Método que irá criar um chart (grafico) no dashboard, o nome desse método é dinâmico, deve ser de acordo com o card que foi criado no new da classe.


Parâmetros:

NomeTipoDescrição
oChartObjetoObjeto do tipo totvs.framework.adapter.dashboard.chart

Retorno nil

Bloco de código
languagejava
themeMidnight
titleExemplo
collapsetrue
Method new(cVerb as character) as object Class home
    _Super:new( cVerb, .T. )

	// graficos disponiveis na home do dashboard de privilégio
    ::addChart("group_rules", STR0009  ) //"Regra de grupo do usuário"
Return self  

//-------------------------------------------------------------------
/*/{Protheus.doc} group_rules
    definições referente ao chart group_rules
@param, oCard, objeto de chart a ser criado.
@param, jResponse, json de retorno da api até o momento
@return objeto de chart passado por parametro
@author Caio Lima
@since 15/12/2023
//-----------------------------------------------------------------*/
Method group_rules(oChart as object, jResponse as json) as object Class home
    Local cSql as character
    Local cAlias as character
    Local cAliasBk as character

    oChart:setDescription(STR0029) //"Total de usuários por regra de acesso do grupo (prioriza, desconsidera ou soma)"
    oChart:addColumn("user_id", STR0011, "string", .T.) //"Id do usuário"
    oChart:addColumn("user_code", STR0012, "string", .T.) //"Código do usuário"
    oChart:addColumn("name", STR0013, "string", .T.) //"Nome do usuário"
    oChart:addColumn("group_rule", STR0030, "string", .T.) //"Regra de acesso do grupo"

    // a api de detalhes desse grafico será a mesma referente a api de total de usuários,
    // apenas mostrando a coluna de regra de acesso do grupo a mais
    oChart:setApiDetail("/api/framework/dashboard/detail/totvs.framework.adapter.privileges.home/total_users")
    
    cAliasBk := Alias()
    
    cSql := ::group_RulesQuery("total")
    cAlias := FwExecCachedQuery():OpenQuery(cSql,,,,"30","10")

    oChart:addDataChart(STR0032, (cAlias)->PRIORIZA, STR0031, "color-03") //"Usuários que priorizam os acessos do grupo" //"Prioriza"
    oChart:addDataChart(STR0033, (cAlias)->DESCONSIDERA, STR0034, "color-05") //"Desconsidera" //"Usuários que desconsideram os acessos do grupo"
    oChart:addDataChart(STR0036, (cAlias)->soma, STR0035, "color-07") //"Usuários que somam os acessos do grupo" //"Soma"
    
    (cAlias)->(DbCloseArea())

    FWRestAlias(cAliasBk)

Return(oChart)

...

Bloco de código
languagejava
themeMidnight
titleExemplo
collapsetrue
Method new(cVerb as character) as object Class home
    _Super:new( cVerb, .T. )
    // Cards disponiveis na home do dashboard de privilégio
    ::addCard("total_users", STR0001 ) //"Total de usuários"
Return self  

//-----------------------------------------------------------------------------
/*/{Protheus.doc} addFieldsTotal_Users
    Função para geração do mapa de campos
@author totvs
@since 11/12/2023
@version 1.0
/*/
//-----------------------------------------------------------------------------
Method addFieldsTotal_Users() Class home
    ::addMapFields( 'user_id' , 'USR_ID'  , .T., .T., { 'USR_ID', 'C', 06, 0 },,.T. )
    ::addMapFields( 'user_code' , 'USR_CODIGO'  , .T., .T., { 'USR_CODIGO', 'C', 25, 0 },,.T. )
    ::addMapFields( 'name'    , 'USR_NOME'   , .T., .F., { 'USR_NOME', 'C', 30, 0 },,.T. )
    ::addMapFields( 'group_rule'    , 'group_rule'   , .T., .F., { 'group_rule', 'C', 12, 0 },,.T. )
    ::setOrderDefault('user_id')
Return


...

setDescription
Âncora
setDescription
setDescription

Descrição

Método para definir a descrição completa de um card ou chart, deve ser utilizado dentro do metodo dinâmico que recebe o nome do card ou chart e recebe como parâmetro o card ou chart


Parâmetros:

NomeTipoDescrição
cDescriptionCarácterdescrição a ser definida

Retorno nil

Bloco de código
languagejava
themeMidnight
titleExemplo
collapsetrue
//-------------------------------------------------------------------
/*/{Protheus.doc} total_users
    definições referente ao card total_users
@param, oCard, objeto de card a ser criado.
@return objeto de card passado por parametro
@author Caio Lima
@since 15/12/2023
//-----------------------------------------------------------------*/
Method total_users(oCard as object) as object Class home

    oCard:setDescription(STR0010) //"Total de usuários existente no protheus"
    
Return(oCard)


...

setValue
Âncora
setValue
setValue

Descrição

Método para definir o valor do card, deve ser utilizado dentro do método dinâmico que recebe o nome do card e recebe como parâmetro o card.
Disponível apenas para o card


Parâmetros:

NomeTipoDescrição
nValuenumericoValor a ser definido para o card

Retorno nil

Bloco de código
languagejava
themeMidnight
titleExemplo
collapsetrue
//-------------------------------------------------------------------
/*/{Protheus.doc} total_users
    definições referente ao card total_users
@param, oCard, objeto de card a ser criado.
@return objeto de card passado por parametro
@author Caio Lima
@since 15/12/2023
//-----------------------------------------------------------------*/
Method total_users(oCard as object) as object Class home
	Local cSql as character
	Local nValue as numeric

    cSql := ::total_UsersQuery("total")
	nValue := FwExecCachedQuery():ExecScalar(cSql, "QTD", "30", "10")

    oCard:setValue(nValue)
    
Return(oCard)


...

setApiDetail
Âncora
setApiDetail
setApiDetail

Descrição

Método para definir a api que será utilizada para os detalhes de um card ou chart
caso não seja definido será utilizado o default que é 
/api/framework/dashboard/detail/:cDashClient/:cWich


Parâmetros:

NomeTipoDescrição
cApiDetailCaráctercaminho para a api de detalhes de um card ou chart

Retorno nil

Bloco de código
languagejava
themeMidnight
titleExemplo
collapsetrue
//-------------------------------------------------------------------
/*/{Protheus.doc} total_users
    definições referente ao card total_users
@param, oCard, objeto de card a ser criado.
@return objeto de card passado por parametro
@author Caio Lima
@since 15/12/2023
//-----------------------------------------------------------------*/
Method total_users(oCard as object) as object Class home

	// utilizo a api de detalhes já existente no dashboard de saneamento.
    oCard:setApiDetail("/api/framework/privileges/sanitation/usersWithoutPrivileges")
    
Return(oCard)


...

addColumn
Âncora
addColumn
addColumn

Descrição

Adiciona uma coluna que será utilizada para a estrutura de detalhes do card


Parâmetros:

NomeTipoDescrição
cPropertycaracterenome da coluna que virá na api de detalhes
cLabelcaracteretitulo da coluna
cTypecaracteretipo da coluna
lVisiblelogicoindica se a coluna será visivel na grid de detalhes

Retorno nil

Bloco de código
languagejava
themeMidnight
titleExemplo
collapsetrue
//-------------------------------------------------------------------
/*/{Protheus.doc} total_users
    definições referente ao card total_users
@param, oCard, objeto de card a ser criado.
@return objeto de card passado por parametro
@author Caio Lima
@since 15/12/2023
//-----------------------------------------------------------------*/
Method total_users(oCard as object) as object Class home

	oCard:addColumn("user_id", STR0011, "string", .T.) //"Id do usuário"
    oCard:addColumn("user_code", STR0012, "string", .T.) //"Código do usuário"
    oCard:addColumn("name", STR0013, "string", .T.) //"Nome do usuário"
    
Return(oCard)