Länderliste 

Funktionsweise

Anhand der Seite 'Länderliste' der Website ASAMPLE lässt sich das von XTEND angewandte Konzept des Datenzugriffs illustrieren.

In unserem Beispiel setzt sich die Seite aus folgenden Elementen zusammen:

  • Listenblock ABLKCOUNTRIES, der über die Schnittstelle ACOUNTRY eine Abfrage auf den Inhalt der Tabelle TABCOUNTRY ausführt und diesen anzeigt Blockinhalt:
      • Auswahl einer Zeile per Mausklick auf den Ländercode und Anzeige der Währungsauskunft und der Sprache unter der Tabelle
      • Anzeige eines Bildes zu jedem Listenelement (Flagge) mit einem <field>-Token vom Typ 'Bildzugriff'
      • Seitenumbruch
      • aufsteigende und absteigende Sortierung nach dem Ländercode
  • die beiden einfachen, mit dem Block ABLKCOUNTRIES verbundenen Blöcke ABLKCURRENCY und ABLKLANG für die Anzeige der Währungsauskunft und der Sprache des ausgewählten Landes
      • Die Anzeige der Auskunft gemäß Zeilenauswahl wird mit einem ADISPMAINSELECT-Token für bedingte Links verwaltet
  • Block für die Anzeige des dynamischen HTML-Inhalts der Seite (Beschreibung)

Wenn Ihre XTEND-Wert seit auf Basis einer Kopie von ASAMPLE erstellt wurde, sind die Parameterdaten bereits angelegt.

Sonst können sie entweder angelegt oder mit dem X3-Aktionsbutton 'Kopieren' einzeln von der Website ASAMPLE kopiert werden.

X3-Parameter

1. Schritt – Schnittstellenanlage

Die drei Schnittstellen ACOUNTRY, ALANGUAGES, ACURRENCIES für den Zugriff auf die Tabellen TABCOUNTRY, TABLAN, TABCUR sind vom Typ 'Datenzugriff'.

Die Anlageprozesse sind identisch.

Es unterscheiden sich lediglich der Tabellenname und die Liste der selektierten Felder.

1. Anlage der Schnittstellendaten

2. Tabellenauswahl

3. Speichern

4. Generierung des Zugriffs nach der Erfassung der verwendeten Felder

5. Speichern und Freigabe

6. Generierung der Felder mithilfe des Menüs Tools\<field>-Token anlegen

Typ
Tabellenzugriff

Tabellencode
    TABCOUNTRY, TABLAN, TABCUR

Veröffentlichungsname
Per Default TABCOUNTRY, TABLAN, TABCURRENCY , aber änderbar

Meldungsanzeige
Alle

Zugriff geschützt
Nein

Zugriff generieren
    Auswahl der Felder und Generierung des Webservice per Klick auf OK

Der Button 'Zugriff generieren' führt folgende Bearbeitungsschritte durch:

  • Vorschlag, die maximale Anzahl der bei jedem Webservice-Aufruf gelesenen Datensätze zu erfassen ('max. Anzahl Zeilen')
  • Anforderung, die nützlichen Felder auszuwählen
  • Generierung der 4GL-Verarbeitung, die vom Webservice aufgerufen wird. Der Name dieser Verarbeitung setzt sich aus 'W + Veröffentlichungsname' zusammen.
  • Anlage der Daten des Unterprogramms für die Parameterbeschreibung
  • Veröffentlichung des Webservice unter dem zuvor erfassten Veröffentlichungsnamen

2. Schritt – Entitäten anlegen

Die Entitäten ACOUNTRY, ALANG, ACURRENCY werden analog zu den Schnittstellen angelegt.

Es unterscheiden sich lediglich der Schnittstellenname und die Liste der selektierten Felder.

1. Anlage der Entität vom Typ 'Datenzugriff' auf Basis der Schnittstelle.
    Die Entität wird zum Speichern der Abfragedaten in der Tabelle verwendet.

2. Feldzuordnung
    Hilfe: Menü Tools\Eingabehilfe

3. Erfassung des Schlüsselfeldes der Entität in der Tabelle 'Felder (Auswahl)'.

4. Speichern und Freigabe

Hinzufügen des Anzeigefeldes für die Flagge

Für die Anzeige der Flagge muss ein <field>-Token COUNTRYFLAG vom Typ 'Bildzugriff' angelegt werden. Weiterhin ist ein Paramter für die Generierung einer URL für den Zugriff auf die entsprechende Bilddatei (.gif) notwendig.

Das Feld COUNTRYFLAG wird in ein <img>-Tag eingefügt.

Parametrierung des Tokens:

  • Spezifizierung des Wurzelverzeichnisses (root) der Datei
      • in unserem Fall HTML-Design
  • Vervollständigung durch das Unterverzeichnis
      • in unserem Fall FLAGS
  • Spezifizierung, ob es sich bei der Erweiterung um die auf Ebene der Website definierte oder um eine feldspezifische Erweiterung handeln soll
      • in unserem Fall gif, da Websitestandard jpg ist

in unserem Fall werden die Flaggendateien im FLAGS-Ordner des HTML-Verzeichnisses gespeichert und sind mit CODEPAYS.gif benannt

Freigabe des Feldes nach der Anlage

Mapping des Flaggenanzeigefeldes

Das Feld COUNTRYFLAG gehört nicht zur Schnittstelle und muss bei Anlage der Entität berechnet werden.

Es reicht aus, das Feld COUNTRYFLAG zu Entität ACOUNTRY hinzuzufügen und mit dem Ländercodefeld CRY zu 'mappen'.

Beim Mapping fügt der XTEND-Server der Entität das Feld COUNTRYFLAG hinzu und belegt dieses mit dem Ländercode.

Bei der Anzeige wird das Feld im Attribut src des <img>-Tags in eine URL umgewandelt, die auf die Datei CODEPAY.gif zeigt.

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

In diesem Beispiel zeigt die URL direkt auf die Datei des X3-Servers.

  • /xtend/data/remote/ zeigt auf ein XTEND-Servlet, das die Daten in X3 liest
  • SOLSUPV6 zeigt auf das Verzeichnis X3_PUB der Lösung SOLSUPV6 auf dem X3-Server
  • SUPERV/X_TEND/X_HTML/ zeigt auf die Wurzel der HTML-Projekte der X3-SUPERV-Verzeichnisse
  • ASAMPLE/FRA/ zeigt auf die Wurzel der HTML-Projekte (Sprache FRA) der Website ASAMPLE
  • FLAGS/ATF.gif zeigt auf die Flaggendatei im HTML-Projekt

3. Schritt – Anlage der <block>-Token

Die <block>-Token werden in die HTML-Seite eingefügt. Die <block>-Token stoßen die Abfrage an X3, das Datenlesen und die Datenanzeige an.

1. Block anlegen

    • Typ und Entität auswählen
    • Anzahl Zeilen pro Block für Blocke mit mehreren Datensätzen auswählen

2. Auswahl- und Sortierkriterien hinzufügen

3. Speichern und Freigabe

Länderblock

In unserem Beispiel haben wir den Block ABLKCOUNTRIES mit mehreren Datensätzen angelegt, der auf die Entität ACOUNTRY zeigt und die Datenblätter auswählt, die mindestens einen CRY-Code aufweisen (CRY >= AA).

In unserer Testdatenbank gibt es mehrere Codes mit weniger als zwei Zeichen.

Um die Sortierung nach Ländercodes zu ermöglichen, haben wir eine aufsteigende Sortierung nach dem Standardländercode CRY parametriert und die Änderung der Sortierung durch einen dynamischen Link zugelassen.

Die Tabellensortierung ist mit den Token für dynamische Links ADLKCOUNTRYSORTDW und ADLKCOUNTRYSORTUP möglich.

Sortierungstyp
    Feld

Sortierung änderbar
    Ja

Sortierungsfeld
    CRY

Der Block ABLKCOUNTRIES ist als Hauptblock der Website ACOUNTRIES definiert. Daher kann für die Adressierung dieses Blocks der Alias AMAIN anstatt des Blocknamens verwendet werden:

  • Bei der Auswahl des Währungs- und des Sprachblocks wird AMAIN verwendet und nicht ABLKCOUNTRIES
  • Auch das HTML für den Seitenumbruch verwendet AMAIN (AMAIN.aDlkNextPage...) und kann in anderen Seiten wiederverwendet werden
Währungs- und Sprachblock

Die Blöcke ABLKLANG und ABLKCURRENCY umfassen jeweils einen Datensatz. Abhängig vom Sprachcode (LAN) und vom Währungscode (CUR) der im Hauptblock AMAIN_ (Block ABLKCOUNTRIES) selektierten Zeile wählen ABLKLANG und ABLKCURRENCY die Entitäten ALANG und ACURRENCY aus.

Schritt 3 – Link zu Währung und Sprache

<dynamic link>-Token

Der Link wird mit dem <dynamic link>-Token ADLKSELECT realisiert (Auswahl einer Blockzeile, Webaktion ABLKSELECT und erneute Anzeige der Seite).

Diese Aktion weist den XTEND-Server daraufhin, dass diejenige Zeile ausgewählt wurde, die den Link enthält und auf die der Benutzer geklickt hat.

Wenn in einem Block eine Zeile selektiert wurde, nehmen sämtliche <field>-Token, die den Block MYBLOCK.MYFIELD referenzieren, den Feldwert der selektierten Zeile als Wert an.

Da in unserem Fall im Sprachblock (ABLKLANG) und im Währungsblock (ABLHCURRENCY) AMAIN.LAN und AMAIN.CUR ausgewählt sind (AMAIN ist der Alias des Blocks ABLKCOUNTRIES), werden in diesen Blöcken automatisch die Sprach- und Währungsdaten des selektierten Landes angezeigt.

Auskunftsanzeige

Im Beispiel haben wir uns dafür entschieden, das Ergebnis auf derselben Seite anzuzeigen und diese Anzeige mit einem ADISPMAINSELECT-Token für bedingte Blöcke zu verwalten, welches einen HTML-Bereich entweder anzeigt oder verbirgt, je nachdem, ob im Hauptblock MAIN eine Zeile selektiert ist oder nicht.

Schritt 5 – Token für dynamische Links zum Sortieren

Mit den Token ADLKCOUNTRYSORTUP und ADLKCOUNTRYSORTDW kann die Länderliste auf- oder absteigend nach Ländercodes sortiert werden.

Aktuelle Seite
Ja

Rückmeldung Aktivität
Nein, denn diese Art von Aktion muss nicht protokolliert werden

Auswahl aus der Entität
ACOUNTRY: zu selektierende Entität (= Entität des Länderblocks)

Anwendung Selektion
'Ersetzt die Selektion des Hauptblocks': Die vom dynamischen Link an die Seite (in unserem Fall: dieselbe Seite) gesendete Sortierung / Auswahl ersetzt die Sortierung / Auswahl des Hauptblocks AMAIN (in unserem Fall ABLKCOUNTRIES-Blöcke)

Einstellungen im Register Auswahl

Art der Auswahl
Keine: Die Sortierkriterien des Blocks sollen nicht geändert werden

Sortierungstyp
    Feld: Feld CRY, in unserem Fall aufsteigende Sortierung (ADLKCOUNTRYSORTUP) und absteigende Sortierung (ADLKCOUNTRYSORTDW)

6. Schritt – Seitenanlage

Anlage der Seite ACOUNTRIES (ungesichert) mit HauptblockABLKCOUNTRIES.

HTML-Seite

Link zur Seite

Einfügen des Webseitentokens ACOUNTRIES in die Auswahlliste links zur Seitenanzeige.

    <TD class="button"><A adx="ACOUNTRIES">Länder</A></TD>

Zur Realisierung eines einfachen Links (ohne Aktion und ohne Auswahl) zu einer Website mit einem Anker-Tag muss lediglich ein Token vom Typ 'Website' in das Tag (<a adx="PageWeb"></a>) eingefügt werden, um die Anzahl von <dynamic link>-Token zu begrenzen.

Länderanzeige

Die Länderanzeige besteht darin, den Block ABLKCOUNTRIES zu positionieren. Dieser iteriert über die Länderliste und ermöglicht es, dieselbe Anzahl von Zeilen in der Tabelle anzulegen wie Länder in der Liste vorhanden sind.

Für jede Zeile wird die entsprechende Anzahl von anzuzeigenden Zellen mit einem <adx = "">-Tag angelegt.

<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>Land</b></th>
        <th width="15%"><b>Kontinent</b></th>
        <th width="15%"><b>Währung</b></th>
        <th width="15%"><b>Sprache</b></th>
        <th width="20%"><b>Flagge</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>
 

Der Parameter xselect=false im Block ABLKCOUNTRIES gibt an, dass nicht die erste Standardzeile ausgewählt werden soll. Dies dient dazu, die Auskunft zu verbergen, so lange der Benutzer noch keine Zeile ausgewählt hat.

Die Links für die Sortierung werden im Titel der Spalte Code platziert.

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

Die Flaggenanzeige wird mit einem <field>-Token vom Typ 'Bildzugriff' in ein <img>-Tag eingefügt.

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

Der Link zur Währungs- / Sprachauskunft wird in die Zelle mit dem Ländercode eingefügt.

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

Die Zeilen werden farblich hervorgehoben.

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

Zur Anzeige der Zeilen einer Tabelle in verschiedenen Farben wird ein <adx>-Token in ein <tr>-Tag eingefügt.
<tr adx="aLineStyle:xattr=Class">
aLineStyle enthält den Klassennamen, und xAttr = Class gibt an, dass das Klassenattribut mit dem Feldwert von aLineStyle zu belegen ist.
Die auf die Tabellenzeilen angewendeten CSS-Klassen (aLineStyle) sind in den Parameterdaten des Blocks definiert.

Anzeige des gewählten Landes

Die Auskunft wird angezeigt, sobald eine Zeile per Klick auf den Ländercode ausgewählt wird.

Die Anzeige wird mit dem <dynamic link>-Token ADISPMAINSELECT gesteuert.

Mit den Blöcken ABLKCURRENCY und ABLKLANG werden die Währungs- und Sprachentitäten des gewählten Landes gelesen. Damit kann die Auskunft angezeigt werden.

<!adx="ADISPMAINSELECT">
    <table>
    <!adx="ABLKCURRENCY">
        <tr>
            <td><b>Währung</b></td>
            <td adx="CUR" width="50"></td>
            <td><b>Bezeichnung</b></td>
            <td adx="INTDES"  width="150"></td>
            <td><b>Symbol</b></td>
            <td adx="CURSYM" width="50"></td>
            </td>
         </tr>
    <!adx="ABLKCURRENCY">
    <!adx="ABLKLANG">
        <tr>
            <td><b>Sprache</b></td>
            <td adx="LAN"></td>
            <td><b>Bezeichnung</b></td>
            <td adx="INTDES"></td>
            <td></td>
        </tr>
    <!adx="ABLKLANG">
    </table>
<!adx="ADISPMAINSELECT">

Anzeige Seitenbeschreibung

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

Seitenumbruch

Für die Verwaltung des Seitenumbruchs wird die Bibliothek pagination.lbi verwendet. Diese enthält einen generischen HTML-Code, der im Hauptblock (AMAIN) sämtlicher HTML-Seiten verwendet werden kann.

<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">Erste</a>
                <a href="" adx="AMAIN.aDlkPrevPage">Zurück</a>
            <!adx="aHideMainFirstPage">
        </td>
        <!--Displays page information-->
        <td align="center" width="60%">
            Page  : <span adx="AMAIN.aPagePos"></span> -
            Anzahl Elemente: <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">Weiter</a>
                <a href="" adx="AMAIN.aDlkLastPage">Ende</a>
            <!adx="aHideMainLastPage">
        </td>
    </tr>
</table>

Um eine Methode (oder ein Feld) in einem XTEND-Block aufzurufen, wird folgende Syntax verwendet: MeinBlock.MeineMethode bzw. MeinBlock.MeinFeld.

    <a href="" adx="AMAIN.aDlkFirstPage">Anfang</a>
    <a href="" adx="AMAIN.aDlkPrevPage">Zurück</a>