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.

...

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

...

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} total_users
    definições referente ao card total_users
@param, oCard, objeto de card a ser criado.
@param, jResponse, json de retorno da api até o momento
@return objeto de card passado por parametro
@author totvs
@since 15/12/2023
//-----------------------------------------------------------------*/
Method total_users(oCard as object, jResponse as json) as object Class home
    Local cSql as character

    cSql := ::total_UsersQuery("total")

    oCard:setDescription(STR0010) //"Total de usuários existente no protheus"
    oCard:setValue(FwExecCachedQuery():ExecScalar(cSql, "QTD", "30", "10"))
    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)


...

chart_name
Âncora
chart_name
chart_name

Descrição

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)


...

card_nameQuery
Âncora
card_nameQuery
card_nameQuery

...

Método para definir a query que será utilizada nos detalhes de uma card ou chart, 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


sem parâmetros

Retorno caractere

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} total_UsersQuery
    Retorna a query referente a quantidade total de usuarios
@param cType, tipo de query a ser retornado, podendo ser detail ou total
@return character, sql a ser utilizado
@author totvs
@since 08/12/2023
//-----------------------------------------------------------------*/
Method total_UsersQuery(cType as character) as character Class home
    Local cSql as character

    If cType == "total"
        cSql := " SELECT COUNT(*) QTD "
    ElseIf cType == "detail"
        cSql := " SELECT #QueryFields# "
        cSql += " FROM ( SELECT US.*, "
        cSql += " CASE USR_GRPRULE  "+CRLF
        cSql += " WHEN '1' THEN '"+STR0032+"' "+CRLF // 'Priorizar'
        cSql += " WHEN '2' THEN '"+STR0033+"' "+CRLF // 'Desconsiderar'
        cSql += " WHEN '3' THEN '"+STR0036+"' END group_rule "+CRLF // 'Somar'
    EndIf

	cSql += " FROM "+MPSysSqlName("MPUSR_USR")+" US "
	cSql += " WHERE US.D_E_L_E_T_=' ' "

    If cType == "detail"
        cSql += " ) TAB WHERE 1=1 #QueryWhere# "
    EndIf

Return(cSql)

...

Método para definir os campos que serão utilizados nos detalhes de uma card ou chart, 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


sem parâmetros

Retorno caractere

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