Lista krajów 

Zasada

Strona „Lista krajów” witryny ASAMPLE obrazuje koncepcję dostępu do danych realizowaną przez XTEND

W przedstawionym przez nas przykładzie, w skład strony wchodzą:

  • Sekcja listy ABLKCOUNTRIES wykonująca zapytania dotyczące zawartości tabeli TABCOUNTRY poprzez interfejs ACOUNTRY i wyświetlająca zawartość tej tabeli. Zawartość sekcji umożliwia:
      • Wybór wiersza poprzez kliknięcie kodu państwa i wyświetlenie pod tabelą szczegółowych informacji na temat waluty i języka.
      • Wyświetlenie obrazu połączonego z każdym elementem listy (flagą) za pośrednictwem pola tokenu typu „Dostęp do obrazu”.
      • Numerowanie stron
      • Sortowanie kodów państw w kolejności rosnącej i malejącej
  • Dwie sekcje, ABLKCURRENCY i ABLKLANG, powiązane z sekcją ABLKCOUNTRIES, umożliwiające wyświetlenie szczegółowych informacji na temat waluty i języku wybranego kraju.
      • Wyświetlanie informacji szczegółowych w zależności od zaznaczenia wiersza jest kontrolowane przez warunkowy token łącza ADISPMAINSELECT
  • Sekcja ABLKDOCHTML wyświetlająca dynamiczną zawartość HTML strony (opis)

Jeżeli witryna XTEND utworzona została z kopii witryny ASAMPLE, to rekordy ustawień już istnieją.

W przeciwnym wypadku istnieje możliwość utworzenia ich lub skopiowania kolejno z witryny ASAMPLE przez użycie przycisku czynności X3 „Kopiuj”.

Ustawienia X3

Krok nr 1 - Tworzenie interfejsów

Trzy interfejsy : ACOUNTRY, ALANGUAGES, ACURRENCIES wykorzystywane są do dostępu do odpowiadających im tabel TABCOUNTRY, TABLAN, TABCUR; są to interfejsy typu „Data access” (Dostęp do danych).

Procedury ich tworzenia są identyczne.

Różnią się między sobą wyłącznie nazwami tabel i listami wybranych pól.

1. Utwórz rekord interfejsu

2. Wybierz tabelę

3. Zapisz

4. Generuj dostęp po wprowadzeniu wykorzystywanych pól

5. Zapisz i zatwierdź

6. Wygeneruj pola poprzez menu Narzędzia/Tworzenie pola tokenu

Typ
Dostęp do tabeli

Kod tabeli
TABCOUNTRY, TABLAN, TABCUR

Nazwa publikacji
Domyślnie TABCOUNTRY, TABLAN, TABCURRENCY, istnieje jednak możliwość modyfikacji.

Wyświetlanie komunikatów
Wszystkie

Dostęp chroniony
nie

Generuj dostęp
Wybierz pola i generuj usługę sieciową poprzez kliknięcie OK.

Przycisk „Generuj dostęp” uruchamia następujące operacje:

  • możliwość wprowadzenia maksymalnej liczby rekordów czytanych po wywołaniu usługi sieciowej ('Maks. liczba wierszy')
  • zapytania o wybór przydatnych pól
  • generuje przetwarzanie 4GL wywołane przez usługę sieciową o nazwie „W + Publication name”
  • tworzy rekord podprogramu dla opisu ustawień
  • pobiera usługę sieciową z poprzednio wprowadzoną nazwą publikacji

Krok nr 2 - Tworzenie jednostek

Jednostki ACOUNTRY, ALANG, ACURRENCY tworzy się w taki sam sposób jak interfejsy.

Różnią się między sobą wyłącznie nazwami interfejsów i listami pól.

1. Stwórz jednostkę typu „Dostęp do danych” opartą na interfejsie.
Jednostka ta służy do przechowywania danych z zapytań tabeli

2. Powiąż pola
przy pomocy menu Narzędzia/Wprowadzanie

3. Wprowadź klucz jednostki w tabeli „Pola (wybór)”.

4. Zapisz i zatwierdź

Dodawanie pola wyświetlania flagi

Aby wyświetlić flagę, konieczne jest utworzenie pola tokenu COUNTRYFLAG typu „Picture access” (Dostęp do obrazów) i skonfigurowanie go tak, aby generował adres url dostępu do pliku .gif zawierającego obraz flagi.

Pole COUNTRYFLAG zostanie umieszczone pomiędzy znacznikami <img>.

Konfiguracja tokena polega na:

  • wskazaniu głównego katalogu plików
      • projektu HTML
  • wskazanie podkatalogu
      • FLAGS
  • wskazanie rozszerzenia zdefiniowanego na poziomie witryny lub właściwego dla wybranego pola
      • w tym przypadku rozszerzeniem tym jest gif, ponieważ standardowym rozszerzeniem witryny jest jpg

W naszym przypadku flagi zapisane są w pliku FLAGS w katalogu HTML, nazwanym CODEPAYS.gif

Zatwierdź pole po jego utworzeniu.

Mapowanie pola wyświetlania flagi

Pole COUNTRYFLAG nie należy do interfejsu i musi zostać obliczone podczas tworzenia jednostki.

Wystarczy dodać pole COUNTRYFLAG do jednostki ACOUNTRY i „zmapować” je z polem CRY zawierającym kod kraju.

Podczas mapowania serwer XTEND dodaje pole COUNTRYFLAG do jednostki i nadaje mu wartość kodu kraju.

W momencie wyświetlenia pole to jest przetwarzane na adres URL w atrybucie src znacznika img wskazującym na plik CODEPAYS.gif

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

W tym przykładzie, adres url wskazuje bezpośrednio na pliki umieszczone na serwerze X3.

  • /xtend/data/remote/ wskazuje na „serwlet” XTEND odczytujący dane z X3
  • SOLSUPV6 wskazuje na katalog X3_PUB rozwiązania SOLSUPV6 na serwerze X3
  • SUPERV/X_TEND/X_HTML/ wskazuje na źródło projektu HTML w folderach X3 SUPERV.
  • ASAMPLE/ENG/ wskazuje na źródło projektu HTML (język ENG) na witrynie ASAMPLE
  • FLAGS/ATF.gif wskazuje na plik flagi w projekcie HTML

Krok nr 3 - Tworzenie tokenów sekcji

Tokeny sekcji umieszczane są na stronach HTML. Uruchamiają one zapytania do X3 oraz odczyt i wyświetlanie danych.

1. Tworzenie sekcji

    • Wybierz rodzaj i jednostkę
    • Wybierz numer wiersza dla danej sekcji w przypadku sekcji „wielorekordowych”

2. Dodaj kryteria wyboru i sortowania

3. Zapisz i zatwierdź

Wybór kraju

Dla celów poniższego przykładu utworzona została sekcja „wielorekordowa” ABLKCOUNTRIES, wskazująca na jednostkę ACOUNTRY i wybierająca rekordy posiadające przynajmniej kod CRY (CRY>=AA).

Niektóre kody umieszczone w bazie testowej mają mniej niż dwa znaki.

Aby zatwierdzić sortowanie po kodzie kraju, ustawiona została domyślnie kolejność rosnąca po kodzie kraju CRY a także zatwierdzona została modyfikacja sortowania poprzez łącze dynamiczne.

Tokeny linków dynamicznych ADLKCOUNTRYSORTDW i ADLKCOUNTRYSORTUP umożliwiają sortowanie tabeli.

Rodzaj sortowania
Pole

Sortowanie modyfikowalne
Tak

Pola sortowania
CRY

Sekcja ABLKCOUNTRIES została zdefiniowana jako sekcja główna strony ACOUNTRIES. Dzięki temu, możliwe jest użycie AMAIN zamiast nazwy sekcji, w celu uzyskania dostępu do niej.

  • wybór sekcji waluty i języka jest możliwy z użyciem AMAIN zamiast ABLKCOUNTRIES
  • zarządzanie html i numerowanie stron również wykorzystuje AMAIN (AMAIN.aDlkNextPage...), w związku z czym może wykorzystywać go ponownie w przypadku innych stron
Sekcje języka i waluty

Sekcje ABLKLANG i ABLKCURRENCY są sekcjami „jednorekordowymi” i wybierają odpowiednio jednostki ALANG i ACURRENCY, zależnie od kodu języka (LAN) i waluty (CUR) wybranego wiersza w sekcji głównej AMAIN_ (sekcja ABLKCOUNTRIES).

Krok nr 4 - Powiązanie kraju z walutą i językiem

Token łącza dynamicznego

Łącze to tworzone jest poprzez token „łącza dynamicznego” ADLKSELECT, wybierającego wiersz sekcji (odpowiednia czynność sieciowa ABLKSELECT) i wyświetlającego ponownie tę samą stronę.

Czynność ta informuje serwer XTEND, że wiersz zawierający łącze kliknięte przez użytkownika stał się wierszem wybranym.

Jeżeli w jakiejś sekcji wybrany jeden z wierszy, wszystkie pola tokenów odpowiadające sekcji MYBLOCK.MYFIELD przyjmują wartość pola wybranego wiersza.

W naszym przypadku, z uwagi na fakt, że zarówno w sekcji języka (ABLKLANG) jak i waluty (ABLHCURRENCY) wybrane zostały AMAIN.LAN i AMAIN.CUR (AMAIN jest aliasem sekcji ABLKCOUNTRIES), sekcje te automatycznie wyświetlają informacje na temat języka i waluty wybranego kraju.

Wyświetlanie szczegółów

Na poniższym przykładzie, wynik wyświetlany jest na tej samej stronie a sposób wyświetlania kontrolowany jest przez token „sekcji warunkowej” ADISPMAINSELECT, wyświetlający lub ukrywający pole HTML, w zależności od tego, czy w sekcji głównej MAIN został zaznaczony wiersz.

Krok nr 5 - Sortowanie tokenów łączy dynamicznych

Tokeny ADLKCOUNTRYSORTUP i ADLKCOUNTRYSORTDW służą do sortowania listy krajów według kodów - w kolejności rosnącej i malejącej.

Bieżąca strona
Tak

Raportowanie aktywności
Nie, ponieważ nie ma konieczności raportowania tego typu aktywności.

Wybór jednostki
ACOUNTRY: Jednostka, jaka ma zostać wybrana (z sekcji kraju)

Wybór aplikacji
„Zastępuje wybór sekcji głównej”: Kolejność/wybór przesłany przez łącze dynamiczne do strony docelowej (w tym przypadku jest to ta sama strona) zastępuje kolejność/wybór sekcji głównej AMAIN (w tym przykładzie sekcji ABLKCOUNTRIES)

Ustawienia zakładu wyboru

Rodzaj wyboru
Brak: możliwe jest modyfikowanie wyłącznie kryteriów sortowania sekcji

Rodzaj sortowania
Pole: W tym wypadku pole CRY w kolejności rosnącej (ADLKCOUNTRYSORTUP) i malejącej (ADLKCOUNTRYSORTDW)

Krok nr 6 - Tworzenie strony

Stwórz stronę ACOUNTRIES (niechroniona) której sekcją główną jest ABLKCOUNTRIES.

Strona HTML

Łącze do strony

Wstawienie tokenu strony internetowej ACOUNTRIES w menu po lewej stronie, w celu wyświetlenia strony.

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

W celu utworzenia prostego łącza (bez czynności lub wyboru) do strony poprzez znacznik kotwicy wystarczy umieścić token typu „Strona webowa” w znaczniku(<a adx='PageWeb'></a>) w celu ograniczenia liczby tokenów „łączy dynamicznych”.

Wyświetlenie kraju

Wyświetlanie listy krajów polega na pozycjonowaniu sekcji ABLKCOUNTRIES, która wykonuje iterację na liście krajów, a tym samym umożliwia utworzenie tylu wierszy w tabeli, ile jest krajów na liście.

Dla każdego wiersza możliwe jest utworzenie tylu komórek, ile jest danych do wyświetlenia dzięki znacznikowi adx=„”.

<table width="'100%'" border="'1'><BR/"> <tr class='tabTitle'>
<th width="'15%'><BR/"> <a adx='ADLKCOUNTRYSORTUP'>+</a>&nbsp;&nbsp;
<b>Kod</b>
<a adx='ADLKCOUNTRYSORTDW'>-</a>&nbsp;&nbsp;
</th>
<th width="'20%'><b>Pays</b></th><BR/"> <th width="'15%'><b>Continent</b></th><BR/"> <th width="'15%'><b>Devise</b></th><BR/"> <th width="'15%'><b>Langue</b></th><BR/"> <th width="'20%'><b>Drapeau</b></th><BR/"> </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>

Ustawienie xselect=false sekcji ABLKCOUNTRIES informuje, że nie należy wybierać domyślnie pierwszego wiersza, w celu ukrycia szczegółów, przy założeniu, że nie został wybrany żaden wiersz.

Łącza sortowania znajdują się w tytule kolumny Code (Kod).

<td>
<a adx='ADLKCOUNTRYSORTUP'>+</a>&nbsp;&nbsp;
<b>Kod</b>
<a adx='ADLKCOUNTRYSORTDW'>-</a>&nbsp;&nbsp;
</td>

Flaga wyświetlana jest poprzez pole tokenu typu „Dostęp do obrazu” znajdującego się w znaczniku img.

<img adx='COUNTRYFLAG' height="'25'" width="'40'></FONT">

Łącze do szczegółów waluty/języka wstawione jest w komórkę wyświetlającą kod kraju.

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

Kolory wierszy są naprzemienne.

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

W celu wyświetlenia wierszy tabeli w sposób naprzemienny, w znaczniku <tr> został umieszczony token adx.
<tr adx='aLineStyle:xattr=Class'>
aLineStyle zawiera nazwę klasy, a xAttr=Class wskazuje, że konieczne jest określenie wartości atrybutu klasy o wartości pola aLineStyle.
Klasy css (aLineStyle), które stosowane są dla wierszy tabeli są zdefiniowane w rekordzie konfiguracji sekcji.

Wyświetlanie wybranego kraju

Szczegóły zostają wyświetlone w momencie wyboru wiersza poprzez kliknięcie kodu kraju.

Token „łącza warunkowego” ADISPMAINSELECT określa warunki wyświetlania.

Sekcje ABLKCURRENCY i ABLKLANG uruchamiają odczyt jednostek waluty i języka kraju oraz umożliwiają wyświetlenie szczegółów.

<!adx='ADISPMAINSELECT'>
<table>
<!adx='ABLKCURRENCY'>
<tr>
<td><b>Waluta</b></td>
<td adx='CUR' width="'50'></td><BR/"> <td><b>Opis</b></td>
<td adx='INTDES' width="'150'></td><BR/"> <td><b>Symbole</b></td>
<td adx='CURSYM' width="'50'></td><BR/"> </td>
</tr>
<!adx='ABLKCURRENCY'>
<!adx='ABLKLANG'>
<tr>
<td><b>Język</b></td>
<td adx='LAN'></td>
<td><b>Opis</b></td>
<td adx='INTDES'></td>
<td></td>
</tr>
<!adx='ABLKLANG'>
</table>
<!adx='ADISPMAINSELECT'>

Wyświetlanie opisu strony

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

Numerowanie stron

Do kontroli sposoby numerowania stron wykorzystywana jest biblioteka pagination.lbi zawierająca ogólny kod HTML, który może być użyty w sekcji głównej (AMAIN) wszystkich stron HTML.

<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
<!--Biblioteka ta jest używana do wykonywania paginacji na bloku AMAIN-->
<table width="'100%'><BR/"> <tr>
<td align='left' width="'20%'><BR/"> <!--Ukryj PierwsząStronę i Poprzednie działania, jeśli bieżąca strona jest pierwszą stroną-->
<!adx='aHideMainFirstPage'>
<!---->
<a href='' adx=»AMAIN.aDlkFirstPage»>Pierwsza</a>
<a href='' adx=»AMAIN.aDlkPrevPage»>Poprzednia</a>
<!adx='aHideMainFirstPage'>
</td>
<!--Wyświetla informacje o stronie-->
<td align='center' width="'60%'><BR/"> Page : <span adx='AMAIN.aPagePos'></span> -
Liczba elementów: <span adx='AMAIN.aBlkNbElmts'></span>
</td>
<td align='right' width="'20%'>"
<!--Ukryj OstatniąStronę i Następne działania, jeśli bieżąca strona jest ostatnią stroną-->
<!adx='aHideMainLastPage'>
<a href='' adx=»AMAIN.aDlkNextPage»>Następna</a>
<a href='' adx=»AMAIN.aDlkLastPage»>Ostatnia</a>
<!adx='aHideMainLastPage'>
</td>
</tr>
</table>

Do wywołania metody (lub pola) sekcji XTEND wykorzystywana jest składnia mySection.myAction lub mySection.myField.

<a href='' adx=»AMAIN.aDlkFirstPage»>Pierwsza</a>
<a href='' adx=»AMAIN.aDlkPrevPage»>Poprzednia</a>