Árvore de páginas

Adiciona uma nova linha de informação em monitores do tipo texto.

Parâmetros

NomeTipoDescriçãoReferência
aLinhasArrayArray das linhas de informação do monitor de texto passado como referência para receber uma nova linha.X
nIndiceNuméricoIndice para a posição ser adicionada no array.X
cTextoCaracterTexto que será adicionado na corrente do monitor. (Poderão ser usadas tags html para formatação do texto)
cClasseCaracterClasses com os estilos para as linhas.
cEstiloCaracterEstilo para a linha. (Deve ser uma string no formato json)
lAcessaDetLógicoIndica se poderá acessar os detalhes do monitor através do click na linha.
cParamDetCaracterParâmetro que será passado ao carregamento dos detalhes do monitor ao clicar na linha.


Exemplo de Uso

Method BuscaDados(oFiltros, cTipo, cSubTipo) Class StatusLotesAVencer
    Local aSemaforo  := StrTokArr(Replace(oFiltros["03_SEMAFORO"],",","."),";")
    Local cAliasQry  := GetNextAlias()
    Local cCodProd   := oFiltros["02_B8_PRODUTO"]
    Local cJsonDados := ""
    Local cQuery     := ""
    Local cTxtPrc    := ""
    Local cTxtSec    := ""
    Local cUnMedida  := ""
    Local dFilterDat := PCPMonitorUtils():RetornaPeriodoFinal(oFiltros["05_TIPOPERIODO"],ddatabase,cValtoChar(oFiltros["06_PERIODO"]))
    Local nIndLinha  := 0
    Local nQuant     := 0
    Local nValSemaf1 := Val(aSemaforo[1])
    Local nValSemaf2 := Val(aSemaforo[2]) 
    Local nLotes     := 0
    Local nSaldo     := 0
    Local oJsonRet   := JsonObject():New()
    Local oStylePrc  := JsonObject():New()
    Local oStyleSec  := JsonObject():New()

    oJsonRet["corTitulo"]          := "white" 
    oJsonRet["alturaMinimaWidget"] := "350px" 
    oJsonRet["alturaMaximaWidget"] := "500px" 
    oJsonRet["linhas"]             := {}      
    oJsonRet["tags"]               := {}      
  
    oFiltros["01_B8_FILIAL"] := PadR(oFiltros["01_B8_FILIAL"], FWSizeFilial())
    cUnMedida  := Posicione("SB1",1,xFilial("SB1",oFiltros["01_B8_FILIAL"])+cCodProd,"B1_UM")
  
    cQuery += " SELECT "
    cQuery += "     SB8.B8_PRODUTO CODIGO_PRODUTO, "
    cQuery += "     SUM(SB8.B8_SALDO) SALDO, "
    cQuery += "     COUNT(SB8.R_E_C_N_O_) QUANTIDADE_LOTES "
    cQuery += " FROM "+RetSqlName("SB8")+" SB8 "
    cQuery += " WHERE SB8.B8_FILIAL = '" + xFilial("SB8",oFiltros["01_B8_FILIAL"]) + "' "
    cQuery += "   AND SB8.B8_PRODUTO = '" + cCodProd + "' "
    cQuery += "   AND SB8.B8_DTVALID BETWEEN '"+DTOS(ddatabase)+"' AND  '"+DTOS(dFilterDat)+"' "
    cQuery += "   AND SB8.B8_SALDO > 0 "
    cQuery += "   AND SB8.D_E_L_E_T_  = ' ' "
    cQuery += " GROUP BY SB8.B8_FILIAL,SB8.B8_PRODUTO  "
    dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasQry,.F.,.F.)
    If  (cAliasQry)->(!Eof())
        cCodProd   := AllTrim((cAliasQry)->CODIGO_PRODUTO)
        nLotes     := (cAliasQry)->QUANTIDADE_LOTES
        nSaldo     := (cAliasQry)->SALDO
    End
    (cAliasQry)->(dbCloseArea())
  
    If oFiltros["04_TIPOSEMAFORO"] == "L"
        nQuant  := nLotes
        cTxtPrc := cValToChar(nLotes)
        cTxtSec := cValToChar(nSaldo) + " " + cUnMedida
    Else
        nQuant  := nSaldo
        cTxtPrc := cValToChar(nSaldo)
        cTxtSec := cValToChar(nLotes) + IIF(nLotes > 1, " Lotes", " Lote")
    EndIf

    If nLotes > 0
        oStyleSec["color"] := "white"
        oJSonRet["corFundo"] := IIF(nQuant < nValSemaf1,"rgb(38,186,65)",IIF(nQuant < nValSemaf2,"rgb(255,207,1)","rgb(245,0,49)"))
        If oJSonRet["corFundo"] == "rgb(255,207,1)"
            oStyleSec["color"] := "black"
            oJsonRet["corTitulo"] := "black"
        EndIf
        oStylePrc["font-weight"] := "bold"
        oStylePrc["font-size"]   := "120px"
        oStylePrc["line-height"] := "130px"
        oStylePrc["text-align"]  := "center"
        oStylePrc["color"]       := oStyleSec["color"]
        oStylePrc["cursor"]      := "pointer"
        PCPMonitorUtils():AdicionaLinhaInformacao(oJsonRet["linhas"],@nIndLinha,cTxtPrc,"po-sm-12",oStylePrc:ToJson(),.T.)
        PCPMonitorUtils():AdicionaLinhaInformacao(oJsonRet["linhas"],@nIndLinha,cTxtSec,"po-font-title po-text-center po-sm-12 po-pt-1 bold-text",oStyleSec:ToJson())
    Else
        oJsonRet["corFundo"] := "rgb(38,186,65)"
        PCPMonitorUtils():AdicionaLinhaInformacao(oJsonRet["linhas"],@nIndLinha,"Nenhum lote do produto vencerá no período selecionado.","po-font-text-large-bold po-text-center po-sm-12 po-pt-4",oStyleSec:ToJson())
    EndIf
    cJsonDados :=  oJsonRet:toJson()
  
    FwFreeArray(aSemaforo)
    FreeObj(oJsonRet)
    FwFreeObj(oStylePrc)
    FwFreeObj(oStyleSec)
Return cJsonDados
  • Sem rótulos