Páginas filhas
  • Gráficos e Visões do Browse

Versões comparadas

Chave

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

Conceito


O conceito de visões parte do

...

princípio que uma visão será sempre a união de

...

um Nome (fornecido para identificar a finalidade da visão), Configuração de campos(quais campos de uma tabela se deseja visualizar)

...

Filtros (quais registros se deseja visualizar).
Em conjunto está disponível o conceito

...

de Gráficos Anexos, que permite criar gráficos associados ao browse baseado no conteúdo exibido (respeitando a visão ativa no momento).

Visões

Este menu é exibido no topo do browse com a descrição da visão ativa. O menu oferece as seguintes possibilidades:

  • Selecionar uma visão para o browse;
  • Criar uma nova visão;
  • Abrir o gerenciador de Visões;

O Gerenciador de Visões exibe todas as visões criadas pelo usuário com as operações:

Alterar  - Permite editar as configurações da visão selecionada;

Excluir - Exclui todas as visões selecionadas;

Ações relacionadas:

Definir como padrão - Define a visão selecionada como padrão (uma visão definida como padrão é carregada automaticamente no momento da abertura da rotina).

Restaurar visão padrão - Restaura a visão padrão original da rotina

Gráficos

A área do gráfico está do lado direito do browse com um separador que permite expandir ou retrair a área.

O menu dos gráficos é exibido no topo da área com a descrição do gráfico ativo. O menu oferece as seguintes possibilidades:

...

O Gerenciador de Gráficos exibe todos os gráficos criados pelo usuário com as operações:

                Alterar  - Permite editar as configurações do gráfico selecionado;

                Excluir - Exclui todos os gráficos selecionadas;

Ações relacionadas:

                                   Definir como padrão - Define o gráfico selecionado como padrão (será carregado automaticamente).

Além do menu, na área do gráfico ativo, ao lado do título do gráfico podemos alterar algumas configurações, tais como tipo do gráfico, picture e máscara. Porém, estas alterações são apenas para efeito de visualização (elas não são salvas). Para realizar uma alteração permanente é necessário utilizar o Gerenciador de Gráficos, selecionar o gráfico e então a opção Alterar.

 

Habilitando visões e anexos

 

Para habilitar as visões em uma rotina utilize o método SetAttach(.T.) da FWMBrowse.

 

Exemplo:

 

oBrowse := FWMBrowse():New()

oBrowse:SetAttach( .T. )

oBrowse:SetOpenChart( .T. ) //Define se o gráfico virá aberto ou oculto no carregamento do browse

            

Criando uma visão via código

 

Deve-se criar um objeto FWDSView para cada visão e passa-los para o browse em um array através do método SetViewsDefault( aViews ).

 

Para criar um objeto FWDSView utilize os seguintes métodos:

       METHOD setId( cId ) //Define o ID da visão

       METHOD setName( cName ) //Define o Nome da Visão

       METHOD setOrder( nOrder ) //Define o índice utilizado na visão

...

Existem duas categorias de gráficos e visões: padrões ou de usuário. Os gráficos e visões padrões são aqueles adicionados via código, que já estão nativos no rpo padrão, e não podem ser alterados via tela. Os de usuário são criados manualmente por interface gráfica da rotina específica. São gráficos e visões que o usuário poderá criar com auxílio de um assistente nas rotina que já possuem habilitado a funcionalidade.

Aviso
titleAtenção

Por questões de performance e visualização dos dados nos gráficos, o widget de gráficos é limitado a exibição de 10 registros no eixo X.


Âncora
_Toc382924272
_Toc382924272
Habilitando Gráficos e Visões no Browse

O processo de habilitar a funcionalidade deve ser feito pela GDP responsável pela rotina.

Para habilitar as visões em uma rotina utilize o método SetAttach(.T.) da FWMBrowse. 
Exemplo: 

oBrowse := FWMBrowse():New()
oBrowse:SetAttach( .T. )
oBrowse:SetOpenChart( .T. ) //Define se o gráfico virá aberto ou oculto no carregamento do browse

Após habilitado, são adicionados dois menus no browse. Um para acesso às visões e um para acesso aos gráficos, conforme abaixo.

Menu de Visões

Este menu é exibido no topo do browse com a descrição da visão ativa. O menu oferece as seguintes possibilidades:

  • Selecionar uma visão para o browse;
  • Criar uma nova visão;
  • Abrir o gerenciador de Visões;

O Gerenciador de Visões exibe todas as visões criadas pelo usuário com as operações:
Alterar - Permite editar as configurações da visão selecionada;
Excluir - Exclui todas as visões selecionadas;
Ações relacionadas:
Definir como padrão - Define a visão selecionada como padrão (uma visão definida como padrão é carregada automaticamente no momento da abertura da rotina).
Restaurar visão padrão - Restaura a visão padrão original da rotina

Menu de Gráficos

A área do gráfico está do lado direito do browse com um separador que permite expandir ou retrair a área.
O menu dos gráficos é exibido no topo da área com a descrição do gráfico ativo. O menu oferece as seguintes possibilidades:

  • Selecionar gráfico a exibir;
  • Criar um novo gráfico;
  • Abrir o Gerenciador de Gráficos;


O Gerenciador de Gráficos exibe todos os gráficos criados pelo usuário com as operações:
Alterar - Permite editar as configurações do gráfico selecionado;
Excluir - Exclui todos os gráficos selecionadas;
Ações relacionadas:
Definir como padrão - Define o gráfico selecionado como padrão (será carregado automaticamente).
Além do menu, na área do gráfico ativo, ao lado do título do gráfico podemos alterar algumas configurações, tais como tipo do gráfico, picture e máscara. Porém, estas alterações são apenas para efeito de visualização (elas não são salvas). Para realizar uma alteração permanente é necessário utilizar o Gerenciador de Gráficos, selecionar o gráfico e então a opção Alterar.

Âncora
_Toc382924273
_Toc382924273
Criando uma visão via código


Deve-se criar um objeto FWDSView para cada visão e passa-los para o browse em um array através do método SetViewsDefault( aViews ).

Para criar um objeto FWDSView utilize os seguintes métodos:


METHOD setId( cId ) //Define o ID da visão
METHOD setName( cName ) //Define o Nome da Visão
METHOD setOrder( nOrder ) //Define o índice utilizado na visão
METHOD setCollumns( aCollumns ) //Define as colunas que aparecerão na visão

...

METHOD setPublic( lPublic ) // Define se será visível por todos os usuários. Se .F., somente o usuário definido em setUser() poderá utilizar a visão.

...

METHOD setUser( cUser ) // Define o usuário dono da visão. Quando for utilizado o setPublic(.T.) este método não é necessário.

...

METHOD AddFilter( cFilterName,cFilter,cTable ) // Adiciona um filtro à visão. O parâmetro cTable deve ser passado quando for criado um filtro relacionado. Este parâmetro define a tabela relacionada.

...

METHOD AddFilterRelation( cTableRelation , cDomain , cCounterDomain ) // Adiciona uma relação. Para criação de filtros relacionados.

Métodos obrigatórios para uma visão:
setID( cID )
setName( cName )

...

setOrder( nOrder )

...

setCollumns( aCollumns )

...

setPublic( lPublic ) ou setUser( cUser )

...



Exemplo:

...

oDSView := FWDSView():New()
oDSView:SetID("PED001")

...


oDSView:SetName("Pedidos Faturados")

...


...

oDSView:SetPublic(.T.)

...

oDSView:SetCollumns({"C5_NUM","C5_CLIENTE"})

...

oDSView:SetOrder(2)

...

oDSView:AddFilterRelation( 'SA1' , 'A1_COD+A1_LOJA' , 'C5_CLIENTE+C5_LOJACLI' )

...

oDSView:AddFilter( "Pedidos Faturados" , 'C5_NOTA<>""' )

...

oDSView:AddFilter( "Clientes de SP" , 'A1_EST=="SP"' , "SA1" )

...



oBrowse := FWMBrowse():New()
oBrowse:SetViewsDefault({oDSView})

Âncora

 

...

_Toc382924274
_Toc382924274
Criando um gráfico anexo ao browse via código



Deve-se criar um objeto FWDSChart para cada gráfico e passa-los para o browse em um array através do método SetChartsDefault( aCharts ).

...



Para criar um objeto FWDSChart utilize os seguintes métodos:

...

       METHOD setName( cName ) //Define o Nome da Visão

       METHOD setTitle( cTitle ) //Define o Título da Visão

       METHOD setType( cType ) //Define o Tipo de gráfico "BARCHART", "BARCOMPCHART", "LINECHART" ou "PIECHART".

       METHOD setCategory( aCategory ) //Define as categorias (eixo x) do gráfico

       METHOD setSeries( aSerie ) //Define as séries do gráfico

       METHOD setPeriod( aPeriod ) //Define os períodos (eixo x) do gráfico

       METHOD setPublic( lPublic ) // Define se será visível por todos os usuários. Se .F., somente o usuário definido em setUser() poderá utilizar a visão.

       METHOD setTitleAlign( nTAlign ) // Alinhamento do título CONTROL_ALIGN_NONE, CONTROL_ALIGN_LEFT, CONTROL_ALIGN_TOP, CONTROL_ALIGN_RIGHT, CONTROL_ALIGN_BOTTOM

       METHOD setLegend( nLAlign ) // Alinhamento da legenda CONTROL_ALIGN_CENTER, CONTROL_ALIGN_LEFT, CONTROL_ALIGN_RIGHT

       METHOD setPicture( cPicture ) // Picture

       METHOD setMask( cMask ) // Máscara

       METHOD setUser( cUser ) // Define o usuário dono da visão. Quando for utilizado o setPublic(.T.) este método não é necessário.

 

Métodos obrigatórios para um gráfico:

setID( cID )

setName( cName )

       setTitle( cTitle )

       setCollumns( aCollumns )

       setType( cType )

       setCategory( aCategory ) ou setPeriod( aPeriod )

setPublic( lPublic ) ou setUser( cUser )

 

Exemplo:

...


METHOD setID( cID

...

) //Define o ID da visão
METHOD setName( cName ) //Define o Nome da Visão
METHOD setTitle( cTitle ) //Define o Título da Visão
METHOD setType( cType ) //Define o Tipo de gráfico "BARCHART", "BARCOMPCHART", "LINECHART" ou "PIECHART".
METHOD setCategory( aCategory ) //Define as categorias (eixo x) do gráfico
METHOD setSeries( aSerie ) //Define as séries do gráfico
METHOD setPeriod( aPeriod ) //Define os períodos (eixo x) do gráfico
METHOD setPublic( lPublic ) // Define se será visível por todos os usuários. Se .F., somente o usuário definido em setUser() poderá utilizar a visão.
METHOD setTitleAlign( nTAlign ) // Alinhamento do título CONTROL_ALIGN_NONE, CONTROL_ALIGN_LEFT, CONTROL_ALIGN_TOP, CONTROL_ALIGN_RIGHT, CONTROL_ALIGN_BOTTOM
METHOD setLegend( nLAlign ) // Alinhamento da legenda CONTROL_ALIGN_CENTER, CONTROL_ALIGN_LEFT, CONTROL_ALIGN_RIGHT
METHOD setPicture( cPicture ) // Picture
METHOD setMask( cMask ) // Máscara
METHOD setUser( cUser ) // Define o usuário dono da visão. Quando for utilizado o setPublic(.T.) este método não é necessário.


Métodos obrigatórios para um gráfico:
setID( cID )
setName( cName )
setTitle( cTitle )
setCollumns( aCollumns )
setType( cType )
setCategory( aCategory ) ou setPeriod( aPeriod )
setPublic( lPublic ) ou setUser( cUser )
Exemplo:
oDSChart := FWDSChart():New()
oDSChart:SetID("CHT001")
oDSChart:SetName("Fat x Cliente")
oDSChart:setTitle( "Fat x Cliente" )
oDSChart:SetPublic(.T.)
oDSChart:setSeries({ {"SC6","C6_VALOR","SUM"} })
oDSChart:setCategory({ {"SC5", "C5_CLIENTE"} })
oDSChart:SetType("PIECHART")
oDSChart:SetLegend(CONTROL_ALIGN_LEFT)
oDSChart:SetTitleAlign(CONTROL_ALIGN_CENTER)
oDSChart:SetMask("R$ @")
oDSChart:SetPicture("99999.99")

oBrowse := FWMBrowse():New()
oBrowse:SetChartsDefault( {oDSChart} )

Âncora
_Toc382924275
_Toc382924275
Utilização da Static Function TableAttDef()


Junto com o conceito de gráficos e visões foi criado o conceito de widgets de gráficos e visões, que permitem a criação de um widget com a visualização dos dados na forma de gráfico ou browse.
Para a utilização desses widgets é necessário que exista na rotina principal a static function TableAttDef() que retorne a configuração de gráficos e visões. Dessa forma o widget conseguirá buscar os dados de gráficos e visões da rotina especificada.
Essa static function deverá retornar um objeto do tipo FWTableAtt(), que contém as configurações de gráficos e visões de um determinado alias (os objetos FWDSChart e FWDSView associados à um alias específico).
Sendo assim, a definição dos gráficos e visões do browse ficaria no seguinte formato:
Local oTableAtt := TableAttDef()
Local oMBrowse := FWMBrowse():New()
.
.
oMBrowse:SetAttach( .T. )
oMBrowse:SetViewsDefault( oTableAtt:aViews )
oMBrowse:SetChartsDefault( oTableAtt:aCharts )
.
.
.
.


Static Function TableAttDef()
//Visões
Local oAbertos := Nil // Suspects Abertos
Local oQualif := Nil // Suspects Qualificados
//Gráficos
Local oPorStatus := Nil // Colunas: Suspects por Status
Local oPorVend := Nil // Colunas: Suspects por Vendedor
Local oTableAtt := FWTableAtt():New()
oTableAtt:SetAlias("ACH")
//----------
// Visões
//----------


// Suspects Abertos
oAbertos := FWDSView():New()
oAbertos:SetName(STR0094) //"Suspects Abertos"
oAbertos:SetID("Abertos")
oAbertos:SetOrder(1) // ACH_FILIAL+ACH_CODIGO+ACH_LOJA
oAbertos:SetCollumns({"ACH_CODIGO","ACH_LOJA","ACH_RAZAO","ACH_NFANT","ACH_DDD","ACH_TEL",;
"ACH_EMAIL","ACH_END","ACH_BAIRRO","ACH_CIDADE","ACH_EST","ACH_ORIGEM","ACH_STATUS"})
oAbertos:SetPublic( .T. )
oAbertos:AddFilter(STR0094, "!ACH_STATUS $ '5,6'") //"Suspects Abertos"
oTableAtt:AddView(oAbertos)
// Suspects Qualificados
oQualif := FWDSView():New()
oQualif:SetName(STR0095) //"Suspects Qualificados"
oQualif:SetID("Qualif")
oQualif:SetOrder(1) // ACH_FILIAL+ACH_CODIGO+ACH_LOJA
oQualif:SetCollumns({"ACH_CODIGO","ACH_LOJA","ACH_RAZAO","ACH_NFANT","ACH_DDD","ACH_TEL",;
"ACH_EMAIL","ACH_END","ACH_BAIRRO","ACH_CIDADE","ACH_EST","ACH_ORIGEM","ACH_STATUS"})
oQualif:SetPublic( .T. )
oQualif:AddFilter(STR0095, "ACH_STATUS == '6'") //"Suspects Qualificados"
oTableAtt:AddView(oQualif)

//------------
// Gráficos
//------------
// Colunas: Suspects por Status
oPorStatus := FWDSChart():New()
oPorStatus:SetName(STR0100) //"Suspects por Status"
oPorStatus:SetTitle(STR0100) //"Suspects por Status"
oPorStatus:SetID("PorStatus")
oPorStatus:SetType("BARCOMPCHART")
oPorStatus:SetSeries({ {"ACH", "ACH_CODIGO", "COUNT"} })
oPorStatus:SetCategory( { {"ACH", "ACH_STATUS"} } )
oPorStatus:SetPublic( .T. )
oPorStatus:SetLegend( CONTROL_ALIGN_BOTTOM ) //Inferior
oPorStatus:SetTitleAlign( CONTROL_ALIGN_CENTER )
oTableAtt:AddChart(oPorStatus)
// Colunas: Suspects por Vendedor
oPorVend

:= FWDSChart():New()

...

oPorVend:

...

SetName(

...

oDSChart:SetName("Fat x Cliente")

             oDSChart:setTitle( "Fat x Cliente" )

             oDSChart:SetPublic(.T.)

...

STR0101) //"Suspects por Vendedor"
oPorVend:SetTitle(STR0101) //"Suspects por Vendedor"
oPorVend:SetID("PorVend")
oPorVend:SetType("BARCOMPCHART")
oPorVend:SetSeries({ {"ACH", "ACH_CODIGO", "COUNT"} })

...

oPorVend:

...

SetCategory( { {"

...

SA3", "

...

A3_

...

NOME"} } )

...

oPorVend:

...

SetPublic( .T. )

...

oPorVend:SetLegend( CONTROL_ALIGN_

...

BOTTOM ) //Inferior

...

oPorVend:SetTitleAlign( CONTROL_ALIGN_CENTER )

...

oTableAtt:

...

AddChart(oPorVend)
Return (oTableAtt)

Utilizando a função MBrowse()

Com o intuito de facilitar o desenvolvimento, foi criado o parâmetro bBeforeActivate na função MBrowse (24º parâmetro).
Este parâmetro irá receber um bloco de código que será chamado antes da ativação da classe de Browse. Com isto o desenvolvedor conseguirá habilitar o conceito de gráficos e visões mesmo quando utilizar a função MBrowse().
Exemplo:

MBrowse( 6,1,22,75,'SC5',,,,,,aCores,,,,,,,,cFilSQL,,,,, {|oBrowse|AT410BrwAct(oBrowse)} )
Static Function AT410BrwAct(oBrowse)
    Local oTableAtt := TableAttDef()//static function que deve ser criada no fonte
             oBrowse:SetAttach(.T.)
oBrowse:SetViewsDefault( oTableAtt:aViews )
oBrowse:SetChartsDefault( oTableAtt:aCharts )          
Return

Procedimentos de utilização Visões e Gráficos

Âncora
_Toc382924276
_Toc382924276
Visões

Âncora
_Toc382924277
_Toc382924277
Aplicando uma visão


Ao entrar em uma rotina com as Visões habilitadas clique no link que aparece no topo do browse "Exibir Todos"
Image Added
Selecione a visão desejada para aplicar
Image Added

Âncora
_Toc382924278
_Toc382924278
Criando uma visão


Abra o menu de visões localizado no topo do browse e clique em "Criar Visão"
Image Added


Preencha o nome da visão, selecione um índice para a visão
Image Added

Selecione as colunas que deseja exibir no browse
Image Added


Se desejar, configure um filtro (opcional)
Image Added


Confirme a Visão.

Âncora
_Toc382924279
_Toc382924279
Editando uma visão


Selecione a opção "Gerenciar Visões"
Image Added

Nessa tela serão exibidas todas as visões criadas pelo usuário com as operações:
Alterar -> permite editar as configurações da visão selecionada
Excluir -> exclui todas as visões selecionadas
Ações relacionadas
Definir como padrão -> define a visão selecionada como padrão (uma visão definida como padrão é carregada no momento da abertura da rotina).
Restaurar visão padrão -> restaura a visão padrão original da rotina
Image Added

Âncora
_Toc382924280
_Toc382924280
Gráficos

Âncora
_Toc382924281
_Toc382924281
Selecionando um gráfico



Expanda o painel de gráficos clicando no separador do lado direito do browse

Image Added


Clique no menu superior e selecione o gráfico a exibir
Image Added



Image Added


Ao selecionar um gráfico, ele será executado considerando os dados e filtros ativos no browse no momento.

Âncora
_Toc382924282
_Toc382924282
Criando / Editando um gráfico


Ao criar ou editar um gráfico, clique sempre em "Gerar Gráfico" para salvar as alterações

Image Added

 

Observação: em Máscara, nos campos Antes do valor e Depois do valor, pode-se configurar para que sejam apresentadas informações adicionais no gráfico, baseando-se no valor. Por exemplo, se o campo que é exibido no gráfico vem apenas com o número 10, e você quer apresentar esse valor como porcentagem no gráfico, você insere o sinal % no campo Depois do valor, e no gráfico o valor será exibido como 10%.



Âncora
_Toc382833196
_Toc382833196
Âncora
_Toc382833292
_Toc382833292
Âncora
_Toc382891523
_Toc382891523
Âncora
_Toc382894326
_Toc382894326
Âncora
_Toc382924283
_Toc382924283

Âncora
_Toc382833197
_Toc382833197
Âncora
_Toc382833293
_Toc382833293
Âncora
_Toc382891524
_Toc382891524
Âncora
_Toc382894327
_Toc382894327
Âncora
_Toc382924284
_Toc382924284

Âncora
_Toc382833198
_Toc382833198
Âncora
_Toc382833294
_Toc382833294
Âncora
_Toc382891525
_Toc382891525
Âncora
_Toc382894328
_Toc382894328
Âncora
_Toc382924285
_Toc382924285

Âncora
_Toc382833199
_Toc382833199
Âncora
_Toc382833295
_Toc382833295
Âncora
_Toc382891526
_Toc382891526
Âncora
_Toc382894329
_Toc382894329
Âncora
_Toc382924286
_Toc382924286

Âncora
_Toc382833200
_Toc382833200
Âncora
_Toc382833296
_Toc382833296
Âncora
_Toc382891527
_Toc382891527
Âncora
_Toc382894330
_Toc382894330
Âncora
_Toc382924287
_Toc382924287

Âncora
_Toc382924288
_Toc382924288
Configurações do gráfico ativo


Clique no ícone Image Added para exibir opções do gráfico ativo.
Será possível alterar o tipo do gráfico, Picture e definir uma máscara para antes ou depois do valor.
Image Added

 





Âncora
_GoBack
_GoBack

Status do documentoConcluído
Data03/11/2014
Versão1.1
Versão anterior1.0
Autores

Ricardo Augusto Da Costa

Índice resumido
Índice
maxLevel1
indent10px
Índice
Índice
outlinetrue
indent10px

             oDSChart:SetPicture("99999.99")

 

oBrowse := FWMBrowse():New()

oBrowse:SetChartsDefault( {oDSChart} )

                                                               

Utilização da Static Function TableAttDef()

 

Junto com o conceito de gráficos e visões foi criado o conceito de widgets de gráficos e visões, que permitem a criação de um widget com a visualização dos dados na forma de gráfico ou browse.

Para a utilização desses widgets é necessário que exista na rotina principal a static function TableAttDef() que retorne a configuração de gráficos e visões. Dessa forma o widget conseguirá buscar os dados de gráficos e visões da rotina especificada.

 

Essa static function deverá retornar um objeto do tipo FWTableAtt(), que contém as configurações de gráficos e visões de um determinado alias (os objetos FWDSChart e FWDSView associados à um alias específico).

Sendo assim, a definição dos gráficos e visões do browse ficaria no seguinte formato:

 

Local oTableAtt := TableAttDef()

Local oMBrowse := FWMBrowse():New()

...

oMBrowse:SetAttach( .T. )

oMBrowse:SetViewsDefault( oTableAtt:aViews ) 

oMBrowse:SetChartsDefault( oTableAtt:aCharts )

...

 

Static Function TableAttDef()

 

//Visões

Local oAbertos      := Nil // Suspects Abertos

Local oQualif := Nil // Suspects Qualificados

//Gráficos

Local oPorStatus    := Nil // Colunas: Suspects por Status

Local oPorVend      := Nil // Colunas: Suspects por Vendedor

 

Local oTableAtt     := FWTableAtt():New()

 

oTableAtt:SetAlias("ACH")

 

//----------

// Visões

//----------

 

      

// Suspects Abertos       

oAbertos := FWDSView():New()

oAbertos:SetName("Suspects Abertos"

oAbertos:SetID("Abertos")

oAbertos:SetOrder(1) // ACH_FILIAL+ACH_CODIGO+ACH_LOJA

oAbertos:SetCollumns({"ACH_CODIGO","ACH_LOJA","ACH_RAZAO","ACH_NFANT","ACH_DDD","ACH_TEL",;

                                               "ACH_EMAIL","ACH_END","ACH_BAIRRO","ACH_CIDADE","ACH_EST","ACH_ORIGEM","ACH_STATUS"})

oAbertos:SetPublic( .T. )

oAbertos:AddFilter("Suspects Abertos", "!ACH_STATUS $ '5,6'") 

 

oTableAtt:AddView(oAbertos)

 

// Suspects Qualificados         

oQualif := FWDSView():New()

oQualif:SetName("Suspects Qualificados")

oQualif:SetID("Qualif")

oQualif:SetOrder(1) // ACH_FILIAL+ACH_CODIGO+ACH_LOJA

oQualif:SetCollumns({"ACH_CODIGO","ACH_LOJA","ACH_RAZAO","ACH_NFANT","ACH_DDD","ACH_TEL",;

                                               "ACH_EMAIL","ACH_END","ACH_BAIRRO","ACH_CIDADE","ACH_EST","ACH_ORIGEM","ACH_STATUS"})

oQualif:SetPublic( .T. )

oQualif:AddFilter("Suspects Qualificados", "ACH_STATUS == '6'") 

 

oTableAtt:AddView(oQualif)

 

 

//------------

// Gráficos

//------------     

 

// Colunas: Suspects por Status

oPorStatus := FWDSChart():New()

oPorStatus:SetName("Suspects por Status")

oPorStatus:SetTitle("Suspects por Status"

oPorStatus:SetID("PorStatus")

oPorStatus:SetType("BARCOMPCHART")

oPorStatus:SetSeries({ {"ACH", "ACH_CODIGO", "COUNT"} })

oPorStatus:SetCategory( { {"ACH", "ACH_STATUS"} } )

oPorStatus:SetPublic( .T. )

oPorStatus:SetLegend( CONTROL_ALIGN_BOTTOM

oPorStatus:SetTitleAlign( CONTROL_ALIGN_CENTER )     

 

oTableAtt:AddChart(oPorStatus)   

 

// Suspects por Vendedor

oPorVend := FWDSChart():New()

oPorVend:SetName("Suspects por Vendedor")

oPorVend:SetTitle("Suspects por Vendedor")

oPorVend:SetID("PorVend")

oPorVend:SetType("BARCOMPCHART") //abertura inicial com gráfico de barras

oPorVend:SetSeries({ {"ACH", "ACH_CODIGO", "COUNT"} })

oPorVend:SetCategory( { {"SA3", "A3_NOME"} } )

oPorVend:SetPublic( .T. )

oPorVend:SetLegend( CONTROL_ALIGN_BOTTOM

oPorVend:SetTitleAlign( CONTROL_ALIGN_CENTER )

 

oTableAtt:AddChart(oPorVend)     

 

Return (oTableAtt) 

 

 

 

Utilizando a função MBrowse()

Com o intuito de facilitar o desenvolvimento, foi criado o parâmetro bBeforeActivate na função MBrowse (24º parâmetro).

Este parâmetro irá receber um bloco de código que será chamado antes da ativação da classe de Browse. Com isto o desenvolvedor conseguirá habilitar o conceito de gráficos e visões mesmo quando utilizar a função MBrowse().

 

Exemplo:

MBrowse( 6,1,22,75,'SC5',,,,,,aCores,,,,,,,,cFilSQL,,,,, {|oBrowse|AT410BrwAct(oBrowse)} )

 

Static Function AT410BrwAct(oBrowse)

       Local oTableAtt     := TableAttDef()//static function que deve ser criada no fonte

             oBrowse:SetAttach(.T.)

oBrowse:SetViewsDefault( oTableAtt:aViews ) 

oBrowse:SetChartsDefault( oTableAtt:aCharts )          

Return

 

...