Descrição

Fornece um objeto utilizado na construção de Painéis ou Gráficos.

Este objeto pode ser utilizado na construção de serviços REST utilizados no Dashboard.


New()

Sintaxe:

CorePanel():New()

Descrição:

Método construtor da classe.

Local oCorePanel := CorePanel():New() 



SetFields()

Sintaxe:

CorePanel():SetFields(aCampos)

Descrição:

Método que define os campos que serão retornados no Json do serviço.

Parâmetros:

NomeTipoDescriçãoDefaultObrigatórioReferência
aCamposArrayArray que contém o De / Para dos campos que serão apresentados no serviço
X
Local oCorePanel := CorePanel():New() 
Local aCampos 	 := {} 
 
Aadd(aCampos, {"code", "A1_CODIGO"}) 
Aadd(aCampos, {"name", "A1_NOME"}) 
oCorePanel:SetFields(aCampos) 



SetQuery()

Sintaxe:

CorePanel():SetQuery(cQuery)

Descrição:

Método que define a query que será utilizada no serviço.

Parâmetros:

NomeTipoDescriçãoDefaultObrigatórioReferência
cQueryCaractereRecebe a query que será executada. 
X
Local oCorePanel := CorePanel():New() 
Local cQuery 	 := "" 

cQuery := " SELECT A1_COD, A1_NOME FROM " + RetSqlName("SA1") + " SA1 "
oCorePanel:SetQuery(cQuery)



SetWhere()

Sintaxe:

CorePanel():SetWhere(cWhere)

Descrição:

Método que define a clausula where que será no método SetQuery().

Parâmetros:

NomeTipoDescriçãoDefaultObrigatórioReferência
cWhereCaractereWhere que será utilizado na query enviada para o método SetQuery()  


Local oCorePanel := CorePanel():New() 
Local cQuery 	 := " SELECT A1_COD, A1_NOME FROM "+ RetSqlName("SA1") + " SA1 "
Local cWhere 	 := "" 

oCorePanel:SetQuery(cQuery)

cWhere := " SA1.D_E_L_E_T = ' ' "
oCorePanel:SetWhere(cWhere)




SetIndexKey()

Sintaxe:

CorePanel():SetIndexKey(cIndexFather)

Descrição:

Método que atribui a ordenação do Alias principal.

Parâmetros:

NomeTipoDescriçãoDefaultObrigatórioReferência
cIndexFatherCaractereOrdem utilizada no alias


Local oCorePanel := CorePanel():New() 

//Ordenação Crescente (ASC)
oCorePanel:SetIndexKey("A1_NOME")

//Ordenação Decrescente (DESC)
oCorePanel:SetIndexKey("-A1_NOME")



SetGroupBy()

Sintaxe:

CorePanel():SetGroupBy(cGroup)

Descrição:

Método responsável por definir um agrupador na query utilizada no serviço.

Parâmetros:

NomeTipoDescriçãoDefaultObrigatórioReferência
cGroupCaractere

Campos que devem compor o agrupador


X
Local oCorePanel := CorePanel():New() 
Local cQuery	 := " SELECT tbl.CAMPO1, tbl.CAMPO2, COUNT(1) COUNT FROM TABLE tbl "
Local cWhere	 := " WHERE FILIAL = 'valor' AND D_E_L_E_T_ = ' ' "

oCorePanel:SetQuery(cQuery)
oCorePanel:SetWhere(cWhere)
oCorePanel:SetGroupBy(" tbl.CAMPO1, tbl.CAMPO2 ")
oCorePanel:SetIndexKey("tbl.CAMPO1")

SetPage()

Sintaxe:

CorePanel():SetPage(nPage)

Descrição:

Método que atribui o número da página em que o usuário vai navegar.

Parâmetros:

NomeTipoDescriçãoDefaultObrigatórioReferência
nPageNuméricoNúmero da página que será apresentada para o usuário1

Local oCorePanel := CorePanel():New()
Local nPage 	 := 8 

oCorePanel:SetPage(nPage)



SetPageSize()

Sintaxe:

CorePanel():SetPageSize(nPageSize)

Descrição:

Método que atribui a quantidade máxima de registros que serão exibidos por página.

Parâmetros:

NomeTipoDescriçãoDefaultObrigatórioReferência
nPageSizeNuméricoQuantidade máxima de registros apresentados por página para o usuário.10

Local oCorePanel := CorePanel():New()
Local nPageSize	 := 20

oCorePanel:SetPageSize(nPageSize)



DefFields()

Sintaxe:

CorePanel():DefFields(lConvProt, cField)

Descrição:

Método que efetua a conversão entre campos do Objeto e Protheus

Parâmetros:

NomeTipoDescriçãoDefaultObrigatórioReferência
lConvProtLógicoDefine se deve converter os campos para padrão Protheus.T.

cFieldCaractereCampo que será convertido


Local oCorePanel := CorePanel():New()

oCorePanel:DefFields(.T.,"CAMPO")



GetDataType()

Sintaxe:

CorePanel():GetDataType(lConvProt, cField)

Descrição:

Retorna o tipo do dado de um determinado campo.

Parâmetros:

NomeTipoDescriçãoDefaultObrigatórioReferência
lConvProtLógicoDefine se deve converter os campos para padrão Protheus.T.

cFieldCaracteresCampo que será convertido


Local oCorePanel := CorePanel():New()
Local dData

If oCorePanel:GetDataType(.T.,"CAMPO") == "D"
	dData := Date()
Endif



SetFieldsFilt()

Sintaxe:

CorePanel():SetFieldsFilt(cFields) 

Descrição:

Método que define quais campos serão retornados pelo serviço.

Parâmetros:

NomeTipoDescriçãoDefaultObrigatórioReferência
cFieldsCaractereCampos que serão retornados no JSON.
X
Local oCorePanel := CorePanel():New()
Local cFields 	 := "order, totValue, product"

oCorePanel:SetFieldsFilt(cFields) 



ToObjectJson()

Sintaxe:

CorePanel():ToObjectJson()

Descrição:

Método que retorna o JSON serializado.

Local oCorePanel := CorePanel():New()
Local lRet 		 := .T. 
Local cError := “Erro na requisição” 
 
If lRet 
	Self:SetResponse( oCorePanel:ToObjectJson())
Else 
	cError := oCorePanel:GetJsonError() 
	SetRestFault( 500,  EncodeUtf8(cError) ) 
EndIf 



ToSingleObject()

Sintaxe:

CorePanel():ToSingleObject()

Descrição:

Método que retorna um JSON serializado para apenas um objeto.

Utilizado em requisições do tipo GET que retornam informações de apenas um registro.

Local oCorePanel := CorePanel():New()
Local lRet 		 := .T. 
Local cError := “Erro na requisição” 
 
If lRet 
	Self:SetResponse(oCorePanel:ToSingleObject()) 
Else 
	cError := oCorePanel:GetJsonError() 
	SetRestFault( 500,  EncodeUtf8(cError) ) 
EndIf 



GetJsonObject()

Sintaxe:

CorePanel():GetJsonObject()

Descrição:

Método que retorna o objeto JSON da classe

Local oCorePanel := CorePanel():New()
Local oJson

oJson:= oCorePanel:GetJsonObject()

If oJson['items'] != Nil
	...
Endif



SetApiQstring()

Sintaxe:

CorePanel():SetApiQstring(aQueryString)

Descrição:

Método que define os campos (Retornados pelo Json), page (página que será apresentada) e pagesize (Quantidade máxima de registros por página) e filtros.

Parâmetros:

NomeTipoDescriçãoDefaultObrigatórioReferência
aQueryStringArrayRecebe o filtro a ser utilizado quando retornado o Json


Local oCorePanel 	:= CorePanel():New()
Local aQueryString 	:= {} 

aAdd(aQueryString, {“fields”	, “order, totValue”	}) 
aAdd(aQueryString, {“page”		, 10				}) 
aAdd(aQueryString, {“pagesize”	, 5					}) 

oCorePanel:SetApiQString(aQueryString) 



SetApiFilter()

Sintaxe:

CorePanel():SetApiFilter(aFilter)

Descrição:

Método que atribui um filtro de pesquisa.

Parâmetros:

NomeTipoDescriçãoDefaultObrigatórioReferência
aFilterArrayArray com expressões de filtro que serão utilizadas
X
Local oCorePanel 	:= CorePanel():New()
Local aFilter		:= {} 

aAdd(aFilter, {“A1_COD = '000001'”}) 

oCorePanel:SetApiFilter(aFilter)



GetApiFilter()

Sintaxe:

CorePanel():GetApiFilter()

Descrição:

Método que retorna o filtro de pesquisa.

Local oCorePanel 	:= CorePanel():New()

oCorePanel:GetApiFilter()



BuildJson()

Sintaxe:

CorePanel():BuildJson()

Descrição:

Método que responsável por construir o objeto JSON.

Local oCorePanel  := CorePanel():New() 
 
Self:SetContentType("application/json") 
 
oCorePanel:SetQuery(cQuery) 
oCorePanel:SetWhere(cWhere) 
oCorePanel:SetFields(aCampos) 
oCorePanel:SetApiQstring(aQueryString) 
oCorePanel:BuildJson() 



SetJson()

Sintaxe:

CorePanel():SetJson(lHasNext, aItems)

Descrição:

Método que responsável por atribuir um objeto JSON, de acordo com o contrato estabelecido pela TOTVS, contento o [items] e o [hasNext].

Parâmetros:

NomeTipoDescriçãoDefaultObrigatórioReferência
lHasNextLógicoIndica se o objeto possui próxima página..T.

aItemsArrayArray com os valores do objeto.


Local aItems 		:= {} 
Local lHasNext 		:= .T. 
Local oCorePanel  	:= CorePanel():New() 
Local oItem 		:= JsonObject():New()
 
If (cTemp)->(Eof()) 
	lHasnext := .F. 
EndIf 
 
aAdd(aItems, oItem) 
oCorePanel:SetJson(lHasNext, aItems) 



SetTable()

Sintaxe:

CorePanel():SetTable(cAlias)

Descrição:

Método que recebe o alias que será responsável pela geração do JSON.

Parâmetros:

NomeTipoDescriçãoDefaultObrigatórioReferência
cAliasCaractereAlias recebido para a geração do JSON.
X
Local oCorePanel := CorePanel():New() 
Local cAlias 	 := GetNextArea() 
 
oCorePanel:SetTable(cAlias) 
 



SetUpsertData()

Sintaxe:

CorePanel():SetUpsertData(cAlias, cIndex, cBody)

Descrição:

Método que efetua a inclusão ou alteração de registros.

Parâmetros:

NomeTipoDescriçãoDefaultObrigatórioReferência
cAliasCaractereAlias recebido para a geração do JSON.
X
cIndexCaractereÍndice utilizado na busca.


cBodyCaractereJson recebido no Body da mensagem.
X
Local oCorePanel := CorePanel():New() 

If oCorePanel:SetUpsertData(cAlias, Nil, cBody)
	Self:SetResponse( EncodeUtf8("Registro incluído com sucesso"))
Else
	SetRestFault( 500,  EncodeUtf8("Falha ao converter o arquivo.") )
Endif 



Destroy()

Sintaxe:

CorePanel():Destroy()

Descrição:

Método responsável por destruir o objeto.

Local oCorePanel := CorePanel():New() 

If oCorePanel:SetUpsertData(cAlias, Nil, cBody)
	Self:SetResponse( EncodeUtf8("Registro incluído com sucesso"))
Else
	SetRestFault( 500,  EncodeUtf8("Falha ao converter o arquivo.") )
Endif 

oCorePanel:Destroy()



SetPOHeader()

Sintaxe:

CorePanel():SetPOHeader(aFields)

Descrição:

Método responsável por retornar um Array conforme esperado na propriedade p-columns do componente Table da biblioteca de componentes PO-UI

Parâmetros:

NomeTipoDescriçãoDefaultObrigatórioReferência
aFieldsArray

Array de até quatro dimensões com os dados:

aFields[n, 1] = Property

aFields[n, 2] = Label - Descrição apresentada na tabela.

aFields[n, 3] = Determina se a propriedade Action possui um link para o próximo nivel da visão.

aFields[n, 3] = Formato


X
Local aFields 	 := {}
Local aItems     := {}
Local oResponse	 :=	JsonObject():New()
Local oCorePanel := CorePanel():New()

aAdd(aFields, { "A1_COD"	, "Código"		,"Link"	})
aAdd(aFields, { "A1_LOJA"	, "Loja"				})
aAdd(aFields, { "A1_NOME"	, "Nome"				})
aAdd(aFields, { "total"		, "Total Faturado"		})

aItems := oCorePanel:SetPOHeader(aFields)

oResponse["items"]      := aItems

Self:SetResponse( EncodeUtf8(oResponse:ToJson()))



SetPOCombo()

Sintaxe:

CorePanel():SetPOCombo(aOptions)

Descrição:

Método responsável por retornar um Array conforme esperado na propriedade p-options do componente Combo da biblioteca de componentes PO-UI.

Parâmetros:

NomeTipoDescriçãoDefaultObrigatórioReferência
aOptionsArray

Array de duas dimensões com as seguintes informações:

aOptions[n, 1] = Valor (Value)

aOptions[n, 2] = Rotulo (Label)


X
Local oCorePanel := CorePanel():New() 
Local aOptions	 := {}

aAdd(aOptions, {"phone"		,"Telefono"	})
aAdd(aOptions, {"cellPhone"	,"Celular"	})

oCorePanel:SetPOCombo(aOptions)



SetPOForm()

Sintaxe:

CorePanel():SetPOForm(cDivider, cProperty, cGridColumns, cLabel, lRequired, cType, aOptions, loptionsMulti)

Descrição:

Método responsável por construir um Formulário utilizando como base o componente DynamicForm do da biblioteca da PO-UI.

Parâmetros:

NomeTipoDescriçãoDefaultObrigatórioReferência
cDividerCaractere

Cria uma divisória entre os campos, utilizando o nome definido na propriedade cDivider.




cPropertyCaractereNome da Propriedade.


cGridColumnsCaractere

Número de Colunas Ocupado pelo Campo.




cLabelCaractereRotulo/Label do Campo.


lRequiredLógicoDefine se o campo é obrigatório.


cTypeCaractereTipo do Campo.


aOptionsArrayLista de opções do campo.


loptionsMultiCaractereDefine se o campo é MultSelect.


sim

Local oResponse := JsonObject():New()
Local oCorePanel  := CorePanel():New()

oCorePanel:SetPOForm("Tipo de Gráfico", "graphictype"     , 6  , "Tipo de Gráfico"    , .T., "string", oCorePanel:SetPOCombo({{"pie","Pizza"},{"polarArea","Radar"}}))
oCorePanel:SetPOForm("Filtros"        , "typesearchcombo" , 12 , "Tipo de Pesquisa"   , .T., "string", oCorePanel:SetPOCombo({{"mensal","Mensal"},{"anual","Anual"}}))
oCorePanel:SetPOForm(""               , "datadereferencia", 6  , "Data de Referência" , .T., "date")

oResponse  := oCorePanel:GetPOForm()

Self:SetResponse( EncodeUtf8(oResponse:ToJson()))



GetPOForm()

Sintaxe:

CorePanel():GetPOForm()

Descrição:

Método responsável por retornar o Formulário, construído através do método SetPOForm.

Local oResponse := JsonObject():New()
Local oCorePanel  := CorePanel():New()

oCorePanel:SetPOForm("Tipo de Gráfico", "graphictype"     , 6  , "Tipo de Gráfico"    , .T., "string", oCorePanel:SetPOCombo({{"pie","Pizza"},{"polarArea","Radar"}}))
oCorePanel:SetPOForm("Filtros"        , "typesearchcombo" , 12 , "Tipo de Pesquisa"   , .T., "string", oCorePanel:SetPOCombo({{"mensal","Mensal"},{"anual","Anual"}}))
oCorePanel:SetPOForm(""               , "datadereferencia", 6  , "Data de Referência" , .T., "date")

oResponse  := oCorePanel:GetPOForm()

Self:SetResponse( EncodeUtf8(oResponse:ToJson()))




SetGraphInfo()

Sintaxe:

CorePanel():SetGraphInfo(aDados, cLegenda, cTipo, cBgColor, lBackGround, lDrillDown)

Descrição:

Método responsável por adicionar linhas e/ou colunas em um Gráfico de Barra ou Linha.

Parâmetros:

NomeTipoDescriçãoDefaultObrigatórioReferência
aDadosCaractere

Cria uma divisória entre os campos, utilizando o nome definido na propriedade cDivider.


X
cLegendaCaractereNome da Propriedade.
X
cTipoCaractere

Número de Colunas Ocupado pelo Campo.




cBgColorCaractereRotulo/Label do Campo.


lBackGroundLógicoDefine se o campo é obrigatório..F.

lDrillDownCaractereTipo do Campo..T.

Local oCorePanel  := CorePanel():New()
Local aHeader	  := {"2019","2020","2021"}
Local aData1	  := { Randomize(1,99), Randomize(1,99), Randomize(1,99) }
Local aData2	  := { Randomize(1,99), Randomize(1,99), Randomize(1,99) }
Local aSaldo	  := {}
Local nSaldo	  := 0

oCorePanel:SetGraphInfo( aData1, 'Vendedor 01' )
oCorePanel:SetGraphInfo( aData2, 'Vendedor 02' )

nSaldo := aData1[1] + aData2[1]
aAdd(aSaldo, nSaldo)
nSaldo := aData1[2] + aData2[2]
aAdd(aSaldo, nSaldo)
nSaldo := aData1[3] + aData2[3]
aAdd(aSaldo, nSaldo)

oCorePanel:SetGraphInfo( aSaldo, "Média", "line", "rgba(255,240,210,0.0)", .F., .F.)



GetGraphInfo()

Sintaxe:

CorePanel():GetGraphInfo()

Descrição:

Método responsável por retornar todos os gráficos adicionados através do método SetGraphInfo.

Local aGraphic 	  := {}
Local oCorePanel  := CorePanel():New()

oCorePanel:SetGraphInfo( aSaldo, "Média", "line", "rgba(23,132,175,0.59)", .F., .F.)
aGraphic := oCorePanel:GetGraphInfo()




SetGraphInfo()

Sintaxe:

CorePanel():SetGraphic( aLegenda, aDados, lCurrency, cType, cTitle ) Class CorePanel

Descrição:

Método responsável por adicionar linhas e/ou colunas em um Gráfico de Barra ou Linha.

Parâmetros:

NomeTipoDescriçãoDefaultObrigatórioReferência
aLegendaArrayLegendas apresentadas no Gráfico
X
aDadosArray

Dados impressos no Gráfico.

Observação: Para gráficos do tipo barra/linha, pode se usar o próprio GetGraphInfo




lCurrencyLógicoInforma se a máscara retornada será ou não do tipo moeda.F.

cTypeCaractereTipo de Gráfico que será retornado.


cTitleCaractereTítulo apresentado no Gráfico.


Local oCorePanel  := CorePanel():New()
Local aLegenda    := {"Minha Legenda"}
Local aDados	  := {}
Local nValor	  := 0

For nLoop := 1 To 10
	nValor += Randomize(1,99)
Next nLoop

aDados := { nValor }

oCorePanel:SetGraphic(aLegenda, aDados , .T.,,"Titulo do Grafico")