Lista dos países 

Princípio

A página "lista dos países" do estabelecimento ASAMPLE ilustra o conceito de acesso aos dados proposto por XTEND.

No nosso exemplo, a página composta :

  • De um bloco lista ABLKCOUNTRIES que efetua um pedido sobre o conteúdo da tabela TABCOUNTRY via o interface ACOUNTRY e que afixa o conteúdo. O conteúdo do blco coloca em obra :
      • A seleção de uma linha por clique do rato sobre o código do país e afixação do detalhe da divisa e a língua em baixo do quadro.
      • A afixação de uma imagem ligada a cada elemento da lista (bandeira) via a utilização de um token campo de tipo "Acesso imagem".
      • A paginação
      • Ordenação e descendente sobre o código país
  • De dois blocos simples ABLKCURRENCY e ABLKLANG ligados ao bloco ABLKCOUNTRIES que permitem de afixar o detalhe da divisa e a língua do país selecionado
      • A gestão de afixação do detalhe, em função da seleção ou não de uma linha, está gerado pela utilização de um token ligação condicionada ADISPMAINSELECT
  • De um bloco ABLKDOCHTML que afixa o conteúdo HTML dinâmico da página (descrição)

Se vosso estabelecimento XTEND foi criado a partir de uma cópia do estabelecimento ASAMPLE as fichas de parametrização estão já criadas.

Senão você pode seja os criar seja os copiar um a um a partir do estabelecimento ASAMPLE com o botão de ação X3 "Cópia".

Parametrização X3

Etapa 1 - Criação dos interfaces

Os três interfaces ACOUNTRY, ALANGUAGES, ACURRENCIES que permitem de aceder respectivamente às tabelas TABCOUNTRY, TABLAN, TABCUR são de tipo "Acesso dados".

Os preocedimentos de criação são idênticos

Apenas os nomes das tabelas e a lista dos campos selecionados são diferentes.

1. Criar a ficha interface

2. Selecionar a tabela

3. Registar

4. Gerar o acesso após ter registado os campos utilizados

5. Registar e validar

6. Gerar os campos com o menu Utilitários\Criação token campos

Tipo
Acesso tabela

Código tabela
    TABCOUNTRY, TABLAN, TABCUR

Nome de publicação
AXTDHTML por defeito mas pode o modificar

Afixação das mensagens
Todas

Acesso protegido
Não

Gerar o acesso
    Selecionar os campos e gerar os web services em clicando sobre OK

O botão "Gerar o acesso" efetua as operações seguintes:

  • propõe de registar o número máximo de registos lidos a cada chamada do web service ("Nº max. de linhas")
  • pedido de selecionar os campos úteis
  • gera o tratamento L4G que será chamado pelo web service com para nome "W + nome de publicação"
  • cria a ficha sub-programa de descrição dos parâmetros
  • publica o web service com o nome de publicação registada precedentemente

Etapa 2 - Criações das entidades

Como para as interfaces, as entidades ACOUNTRY, ALANG, ACURRENCY são criar da mesma maneira.

Apenas o nome da interface e a lista dos campos são diferentes.

1. Criar a entidade de tipo "Acesso dados" baseados sobre interface.
    A entidade é utilizada para gurdar os dados dos pedidos sobre a tabela.

2. Associar os campos
Se ajudar do menu Utilitários\Ajuda ao preenchimento

3. Registar o campo chave de entidade no quadro "Campos (seleção)"

4. Registar e validar

Acréscimo do campo de afixação da bandeira

Para afixar a bandeira deve-se criar um token campo COUNTRYFLAG de tipo "Acesso imagem" e o parametrizar para que gera um URL de acesso ao ficheiro ".gif" que contem a imagem da bandeira.

O campo COUNTRYFLAG será inserido num tag <img>.

A parametrização do token consiste a :

  • indicar o diretório de base (root) dos ficheiros
      • Design HTML no nosso caso
  • completar pelo sub-diretório
      • FLAGS no nosso caso
  • indicar se a extenção é aquela definida ao nível do estabelecimento ou específico ao campo
      • gif no nosso caso porque a standard do estabelecimento é jpg

No nosso caso os ficheiros bandeira são guardados de um dossier FLAGS do directório HTML e têm como nome o CODEPAYS.gif.

Validar o campo após criação.

Mapping do campo de afixação da bandeira

O campo COUNTRYFLAG não faz parte de interface e deve ser calculado no momento da criação de entidade.

É suficiente acrescentar o campo COUNTRYFLAG na entidade ACOUNTRY e de o "mapear" com o campo CRY que contém o código país.

No momento do mapping, o servidor XTEND acrescentará um campoCOUNTRYFLAG à entidade e o valorizará com o código do país.

No momento da afixação, o campo será transformado em uma URL no atributo src do tag img que o apontará sobre o ficheiro CODEPAY.gif

<img height="25" width="40"
src="/xtend/data/remote/SOLSUPV6/SUPERV/X_TEND/X_HTML/ASAMPLE/FRA/FLAGS/ATF.gif"/>

Neste exemplo url aponta diretamente sobre o ficheiro do servidor X3.

  • /xtend/data/remote/ aponta sobre um "servlet" XTEND de leitura dos dados em X3
  • SOLSUPV6 aponta sobre o diretório X3_PUB da solução SOLSUPV6 sobre o servidor X3
  • SUPERV/X_TEND/X_HTML/ aponta sobre a raíz dos porjetos HTML dos dossiers X3 SUPERV
  • ASAMPLE/FRA/ aponta sobre a raíz do projeto HTML (língua FRA) do estabelecimento ASAMPLE
  • FLAGS/ATF.gif aponta sobre o ficheiro bandeira no interior do projeto HTML

Etapa 3 - Criação do token bloco

Os tokens bloco são inseridos na página HTML É este que desencadeará o pedido versus X3 é a leitura e afixação dos dados

1. Criar um bloco

    • Selecionar o tipo e entidade
    • Selecionar o número de linhas por bloco para os blocos "Multi-registos"

2. Acrescentar os critérios de seleções e de ordenação

3. Registar e validar

Bloco país

Para o nosso exemplo temos de criar um bloco "Multi-registos" ABLKCOUNTRIES que aponta sobre a entidade ACOUNTRY e que seleciona as fichas que têm ao menos um código CRY (CRY >=AA).

Na nossa base de teste certos códigos têm pelo menos de dois caracteres.

Para autorizar a ordenação sobre o código país nós temos parametrização uma ordenação ascendente sobre o código país CRY por defeito e autoriza a modificação da ordenação por uma ligação dinâmica.

São os campos tokens ligação dinâmica ADLKCOUNTRYSORTDW et ADLKCOUNTRYSORTUP que permitem a ordenação do quadro.

Tipo de ordenação
    Champ

Ordenação alterável
    Sim

Campo de ordenação
    CRY

O bloco ABLKCOUNTRIES foi definido como bloco principal da página web ACOUNTRIES o que permite utilizar o alias AMAIN mais cedo que o nome do bloco para endereçar este bloco :

  • a seleção dos blocos divisa e língua utilizam AMAIN ao lugar de ABLKCOUNTRIES
  • o hrml que gera a paginação utiliza também AMAIN (AMAIN.aDlkNextPage...) e pode assim ser reutilizado nas outras páginas.
Blocos língua e divisa

Os blocos ABLKLANG e ABLKCURRENCY são "Mono registo" e selecionam respectivamente as entidades ALANG e ACURRENCY em função do código língua (LAN) e do código divisa (CUR) da linha seleccionada no bloco principal AMAIN_ (bloco ABLKCOUNTRIES).

Etapa 4 - Ligação país versus divisa e língua

Token ligação dinâmica

A ligação está efetuada via o token "ligação dinâmica" ADLKSELECT que seleciona a lingua de um bloco (ação web especial ABLKSELECT) e reafixa a mesma página.

Esta ação indica ao servidor XTEND que a linha que contém a ligação sobre o qual o utilizador clicou torna-se a linha selecionada.

Quando um bloco a uma linha selecionada, todos os tokens campos que fazem referência a este bloco MYBLOCK.MYFIELD tomam por valor do campo da linha selecionada.

No nosso caso, como os blocos língua (ABLKLANG) e divisa (ABLHCURRENCY) têm por seleção AMAIN.LAN e AMAIN.CUR (AMAIN está alias do bloco ABLKCOUNTRIES), estes blocos vão automaticamente afixar as informações sobre a língua e a divisa do país selecionada.

Afixação do detalhe

Para nosso exemplo nós temos escolhido afixar o resultado na mesma página e de gerir a afixação via um token "bloco condicionado"ADISPMAINSELECT que afixa ou esconde uma zona HTML segundo o bloco principal MAIN a uma linha seleccionada ou não.

Etapa 5 - Tokens ligação dinâmicas de ordenação

Os tokens ADLKCOUNTRYSORTUP et ADLKCOUNTRYSORTDW permitem ordenar a lista dos países por código ascendente e descendente.

Página corrente
sim

Seguimento de atividade
Não porque não é necessário de rastrar este tipo de ação

Seleção sobre a entidade
ACOUNTRY : Entidade a selecionar (aquela do bloco dos países)

Aplicação seleção
"Substitui a seleção do bloco principal" : A ordenação/seleção colocadas pela ligação dinâmica com destino da página (mesma página no nosso caso) substituirão a ordenação/seleção do bloco principal AMAIN (Blocs ABLKCOUNTRIES no nosso caso)

Parametrização de separador seleção

Tipo de seleção
Nenhuma : porque não se deseja modificar os critérios de ordenação do bloco

Tipo de ordenação
    Champ Campo CRY no nosso caso com ordem ascendente (ADLKCOUNTRYSORTUP) e descendente (ADLKCOUNTRYSORTDW )

Etapa 6 - Criação da página

Criar a página ACOUNTRIES (não protegida) que tem por bloco principal o bloco ABLKCOUNTRIES.

Página HTML

Ligação versus a página

Inserção do token página web ACOUNTRIES no menu esquerdo para afixar a página.

    <TD class="button"><A adx="ACOUNTRIES">Pays</A></TD>

Pour effectuer un lien simple (sans action ni sélection) vers une page web via un tag ancre il suffit d'insérer un token de type 'page web' dans le tag (<a adx="PageWeb"></a>) afin de limiter le nombre de tokens 'lien dynamiques'.

Afixação dos países

A afixação da lista dos países consiste a posicionar o bloco ABLKCOUNTRIES que efectua uma iteração sobre a lista dos países e permite de criar tantas linhas no quadro que de país na lista.

Para cada linha se cria tantas cálulas com um tag adx = "" que de dados a afixar.

<table width="100%" border="1">
    <tr class="tabTitle">
        <th width="15%">
           <a adx="ADLKCOUNTRYSORTUP">+</a>&nbsp;&nbsp;
           <b>Code</b>
           <a adx="ADLKCOUNTRYSORTDW">-</a>&nbsp;&nbsp;
        </th>
        <th width="20%"><b>Pays</b></th>
        <th width="15%"><b>Continent</b></th>
        <th width="15%"><b>Devise</b></th>
        <th width="15%"><b>Langue</b></th>
        <th width="20%"><b>Drapeau</b></th>
    </tr>    
<!adx="ABLKCOUNTRIES:xselect=false">  
    <tr adx="aLineStyle:xattr=Class">
        <td><a adx="ADLKSELECT"><span adx="CRY"></span></a></td>
        <td adx="CRYDES"></td>
        <td adx="CONTINENT"></td>
        <td adx="CUR"></td>
        <td adx="LAN"></td>
        <td><img adx="COUNTRYFLAG" height="25" width="40"></td>                       
    </tr> 
<!adx="ABLKCOUNTRIES">         
</table>
 

O parâmetro xselect=falso do bloco ABLKCOUNTRIES indica de não selecionar a primeira linha por defeito afim de mascarar o detalhe tanto que o utilizador não foi selecionado uma linha.

As ligações para a ordenação colocadas no título da coluna Código.

<td>
    <a adx="ADLKCOUNTRYSORTUP">+</a>&nbsp;&nbsp;
    <b>Code</b>
    <a adx="ADLKCOUNTRYSORTDW">-</a>&nbsp;&nbsp;
</td>

A bandeira está afixada via umtoken field de tipo "Acesso imagem" colocada num tag img.

<img adx="COUNTRYFLAG" height="25" width="40">

A ligação versus o detalhe divisa/língua está inserido na célula que afixam o código país.

<td><a adx="ADLKSELECT"><span adx="CRY"></span></a></td>

As cores das linhas são alternadas.

<tr adx="aLineStyle:xattr=Class">

Para afixar as linhas de um quadro com as cores alternadas coloca-se um token adx em o tag <tr>.
<tr adx="aLineStyle:xattr=Class">
aLineStyle contém o nome da classe e xAttr=Class indica que falta valorizar o atributo classe com o valor do campo aLineStyle.
As classes "css (aLineStyle)" que estão aplicados às linhas do quadro são definidos na ficha de parametrização do bloco.

Afixação do país seleccionado

O detalhe está afixado dede que uma linha está selecconada via um clique sobre o código país.

É o token "ligação condicionado" ADISPMAINSELECT que condiciona a afixação.

Os blocos ABLKCURRENCY e ABLKLANG desencadearão a leitura das entidades divisas e língua do país selecionado e permitem a afixação do detalhe.

<!adx="ADISPMAINSELECT">
    <table>
    <!adx="ABLKCURRENCY">
        <tr>
            <td><b>Devise</b></td>
            <td adx="CUR" width="50"></td>
            <td><b>Libellé</b></td>
            <td adx="INTDES"  width="150"></td>
            <td><b>Symbole</b></td>
            <td adx="CURSYM" width="50"></td>
            </td>
         </tr>
    <!adx="ABLKCURRENCY">
    <!adx="ABLKLANG">
        <tr>
            <td><b>Langue</b></td>
            <td adx="LAN"></td>
            <td><b>Libellé</b></td>
            <td adx="INTDES"></td>
            <td></td>
        </tr>
    <!adx="ABLKLANG">
    </table>
<!adx="ADISPMAINSELECT">

Afixação da descrição da página

<!adx="ABLKDOCHTML">
<div adx="TEXTE">
</div>
<!adx="ABLKDOCHTML">

A paginação

Para gerar a paginação nós utilizamos a livraria pagination.lbi que contêm um código HTML genérico que pode estar utilizado para o bloco principal (AMAIN) de todas as páginas HTML.

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!--This library is used to perform pagination on AMAIN bloc-->
<table width="100%">
    <tr>
        <td align="left" width="20%">
        <!--Hide FirstPage and Previous actions if current page is the first page-->           
            <!adx="aHideMainFirstPage">
                <!---->
                <a href="" adx="AMAIN.aDlkFirstPage">Première</a>
                <a href="" adx="AMAIN.aDlkPrevPage">Précedente</a>
            <!adx="aHideMainFirstPage">
        </td>
        <!--Displays page information-->
        <td align="center" width="60%">
            Page  : <span adx="AMAIN.aPagePos"></span> -
            Número de elementos : <span adx="AMAIN.aBlkNbElmts"></span>
        </td>
        <td align="right" width="20%">                         
        <!--Hide LastPage and Next actions if current page is the last page--> 
            <!adx="aHideMainLastPage">
                <a href="" adx="AMAIN.aDlkNextPage">Suivante</a>
                <a href="" adx="AMAIN.aDlkLastPage">Dernière</a>
            <!adx="aHideMainLastPage">
        </td>
    </tr>
</table>

Para chamar um método (ou um campo) de um bloco XTEND utiliza a sintaxe monBloc.monAction ou monBloc.monChamp.

    <a href="" adx="AMAIN.aDlkFirstPage">Première</a>
    <a href="" adx="AMAIN.aDlkPrevPage">Précedente</a>