Inhoud

Standaard Lijst- en Detailschermen

Portal beheerportaal-Nieuw. Tegel Tabellen standaardAPI.

Screenidentifiers (beheertegel Schermkolomdefinitie tabellen standaard-API)

Tabellen:

Omschrijving

Met behulp van de tabel tbSysStandardTable kan een applicatiebeheerder zelf nieuwe schermen op bestaande OpenWave tabellen/views definiëren.

De kaarten in de tabel tbSysStandardTable hebben een unieke codering. Elke kaart is een representatie van hoe een bepaalde view of tabel uit de OpenWave database moet worden getoond met die restrictie dat altijd gerenderd wordt conform de opmaak van een OpenWave-lijstscherm en OpenWave-detailscherm. Naast het definiëren van de tabel/view die getoond moet worden, en met welke parent, worden ook de verwijzing(en) naar de bijbehorende schermkolomdefinitie(s) vastgelegd in de kaart. In de dochtertabel tbSysstandardButton kunnen tenslotte de knoppen linksonder op de te leveren lijst-of detailpagina worden gedefinieerd met bijbehorende action. Eventueel kan ook een filter op het lijstscherm worden getoond. Zie hiervoor onderaan deze pagina Voorbeeld filterdefinitie.

Aanroep

Waarbij:

De kolommen van de tabel tbsysstandardtable

Voorbeeld

Voorbeeld met gebruik fn_rechtenkolom en fn_iscompartimentok
In de kolom dvauthvisiblequerycode wordt naar een query uit tbqueries verwezen bijv. met de code omgeving_milalertmuteren
De query met dvcode = omgeving_milalertmuteren kan dan als volgt gedefinieerd zijn:

select case when (fn_iscompartimentok(:keyaccount, 'W',{id}) = 1) 
	  and (fn_rechtenkolom('tbomgrechten.dlbomgmemoedt',:keyaccount) = 'T' ) 
      then 'true'  
      else 'false' 
      end

De query maakt gebruik van twee OpenWave functies:
fn_iscompartimentok kijkt op grond van de inlogger, de module en de dnkey van de kaart of de compartimentsrechten in de weg zitten. De string :keyaccount wordt onder water altijd vervangen door de dvcode van de inlogger. De string (id) altijd door de dnkey van de kaart waar de gebruiker op staat in de hoofdtabel (dvmaintablename).
fn_rechtenkolom kijkt op grond van de aangegeven rechtenkolom (rechtentabel gevolgd door een punt gevolgd door de kolomnaam) of de inlogger (:keyaccount) wijzigrechten heeft volgens die rechtenkolom .
Zie ook Database functies

Uitgewerkt voorbeeld

Een tegel in het beheerportaal waarmee een lijst van rechtengroepen kan worden opgeroepen, waarbij doorgeklikt kan worden naar een detailscherm van een rechtengroep en waarbij in dat detailscherm weer een lijst is opgenomen van de actieve medewerkers die onder die rechtengroep vallen. Geen muteermogelijkheden.

1. Maak tegel

  1. Maak tegel met opschrift Test_Rechtengroepen onder een kolom van beheerportaal-Nieuw.
  2. Als action: getFlexList(SysStandardList,nil,nil,nil,Test_Rechtengroepen).
  3. Ken de tegel toe aan u zelf.

2. Maak sysstandardtable kaart voor de lijst- en detailgegevens met code //Test_Rechtengroepen//

Maak een nieuwe kaart in tbsysstandardtable (beheertegel Tabellen standaardAPI):

De overige kolommen van deze kaart kunnen leeg blijven.

De API getflexlist zal alle data van de kaart ophalen uit tbrechten. Maar eerst wordt een rechtencheck gedaan door het statement uit tbqueries (beheerportaal) met dvcode = sysstandaard_isbeheerder te evalueren. Die behoort tot de systeemqueries van OpenWave en bestaat dus. Het SQL-statement:

select case when dnbeheerniveau = 99 then 'true' else 'false' end 
         from tbmedewerkers where trim(dvcode) = trim(:keyaccount)

3. Maak lijstschermkolomdefinitie voor MDLC_getTest_RechtengroepenList.xml

Maak een nieuwe kaart in tbscreencolumns via de beheertegel Schermkolomdefinitie tabellen standaard-api:

Na opslaan en edit:

In de kolom Kolominformatie Toggle F11 moet vervolgens de layout van het lijstscherm gedefinieerd worden in xml-formaat met een of meer kolommen uit tbrechten.

<document>
    <!--tagnaam slaat op een kolom uit tbrechten-->
    <column tagnaam="dvgroep">
        <label>Groep</label>
        <index>1</index>
        <length>200</length>
        <wavetype>string</wavetype>
        <icoon/>
        <showhint>false</showhint>
    </column>
    <column tagnaam="dvgroepoms">
        <label>Omschrijving</label>
        <index>2</index>
        <length>400</length>
        <wavetype>string</wavetype>
        <icoon/>
        <showhint>false</showhint>
      </column>
      <column tagnaam="ddvervaldatum">
        <label>Niet meer geldig sinds</label>
        <index>5</index>
        <length>100</length>
        <wavetype>datum</wavetype>
        <icoon/>
        <showhint>false</showhint>
    </column>
   </document>

4. Maak detailschermkolomdefinitie voor MDDC_getTest_RechtengroepenDetail.xml

Maak een nieuwe kaart in tbscreencolumns via de beheertegel Schermkolomdefinitie tabellen standaard-api:

Na Opslaan:

In de kolom Kolominformatie Toggle F11 moet vervolgens de layout van het detailscherm gedefinieerd worden in xml-formaat met een of meer kolommen uit tbrechten.

<?xml version="1.0" encoding="UTF-8"?>
  <document>
    <!--schermdata voor sysstandardapi met code Test_Rechtengroepen-->
    <!--element tagnaam verwijst naar de kolomnamen van tbrechten -->
    <screenwidth>900</screenwidth>
    <columns>
          <blok>
            <label>Rechtengroep</label>
            <width>100</width>
            <height>130</height>
            <type>doorlopend</type>
            <column>
                <regel>1</regel>
                <tagnaam>dvgroep</tagnaam>
                <label>Groepsnaam</label>
                <divwidth>200</divwidth>
                <divheight>30</divheight>
                <edit>false</edit>
                <showhint>false</showhint>
                <wavetype>string</wavetype>
                <source/>
                <filter/>
                <refresh>false</refresh>
                <backcolor/>
                <fontcolor/>
                <nullable>false</nullable>
                <icoon/>
            </column>
            <column>
                <regel>1</regel>
                <tagnaam>ddvervaldatum</tagnaam>
                <label>Niet meer geldig sinds</label>
                <divwidth>100</divwidth>
                <divheight>30</divheight>
                <edit>false</edit>
                <showhint>false</showhint>
                <wavetype>datum</wavetype>
                <source/>
                <filter/>
                <refresh>true</refresh>
                <backcolor/>
                <fontcolor/>
                <nullable>true</nullable>
                <icoon/>
            </column>
            <column>
                <regel>2</regel>
                <tagnaam>dvgroepoms</tagnaam>
                <label>Omschrijving</label>
                <divwidth>500</divwidth>
                <divheight>30</divheight>
                <edit>false</edit>
                <showhint>false</showhint>
                <wavetype>string</wavetype>
                <source/>
                <filter/>
                <refresh>false</refresh>
                <backcolor/>
                <fontcolor/>
                <nullable>true</nullable>
                <icoon/>
            </column>
          </blok>
          <blok>
            <label>Medewerkers</label>
            <width>100</width>
            <height>150</height>
            <type>getFlexList(SysStandardList,,%keypointer%,,Test_MWPerRechtengroep)</type>
        </blok>
      </columns>
  </document>

In het blok met label Medewerkers wordt met de action getFlexList(SysStandardList,,%keypointer%,,Test_MWPerRechtengroeplabel) verwezen naar een lijst (die alhier dus als een lijst in een detail zal worden getoond) waarvan de gegevens staan in een andere kaart van tbsysstandardtable namelijk die met dvcode = 'Test_MWPerRechtengroeplabel'.

De phrase %keypointer% in de schermlayout van een detailscherm zal daarbij door OpenWave automatisch vervangen worden door de waarde van de primary key van de detailkaart. In dit voorbeeld de dnkey van de rechtenkaart. Deze wordt dus doorgegeven als derde parameter aan getFlexList() zodat OpenWave weet dat alleen die medewerkers getoond moeten worden met een dnkeyrechtengroep gelijk aan die dnkey.

5. Maak sysstandardtable kaart voor de lijst- en detailgegevens met code Test_MWPerRechtengroep

Maak een nieuwe kaart in tbsysstandardtable (beheertegel Tabellen standaardAPI):

De overige kolommen van deze kaart kunnen leeg blijven (dus geen detailscherm voor de medewerkers).

6. Maak lijstschermkolomdefinitie voor MDLC_getTest_MWPerRechtengroepList.xml

Maak een nieuwe kaart in tbscreencolumns via de beheertegel Schermkolomdefinitie tabellen standaard-api:

Na Opslaan en edit: In de kolom Kolominformatie Toggle F11 moet vervolgens de layout van het lijstscherm gedefinieerd worden in xml-formaat met een of meer kolommen uit vwfrmmedewerkers.

<document>
    <!--tagnaam slaat op een kolom uit vwfrmmedewerkers-->
    <column tagnaam="dvcode">
        <label>Codering</label>
        <index>1</index>
        <length>100</length>
        <wavetype>string</wavetype>
        <icoon/>
        <showhint>false</showhint>
    </column>
    <column tagnaam="dvmedewvoluit">
        <label>Naam</label>
        <index>2</index>
        <length>400</length>
        <wavetype>string</wavetype>
        <icoon/>
        <showhint>false</showhint>
      </column>
      <column tagnaam="ddvervaldatum">
        <label>Niet meer in dienst sind</label>
        <index>5</index>
        <length>100</length>
        <wavetype>datum</wavetype>
        <icoon/>
        <showhint>false</showhint>
    </column>
   </document>

Controle op valide schermverwijzingen

In het servicecentrumportaal onder de kolom notificaties is een tegel Ontbrekende sysstandardschermen in AAR gedefinieerd. Met deze tegel wordt een lijst gegenereerd van schermaanroepen (lijstschermen of detailschermen of filterschermen of insertstandardrowschermen) in tbsystandardtable en/of tbsysstandardbutton (dus in de tabel achter de tegel tabellen standaardapi van het de nieuwe beheerportaal onder de kolom scherm- en tegelbeheer) die niet zijn opgenomen in de AAR.

Dit zijn schermen die niet met implementatie en updates van OpenWave zijn aangeleverd. Dat kan zijn omdat de schermen door een functioneel beheerder zelf zijn gedefinieerd: in de tabel tbscreencolumns (tegel Schermkolomdefinitie tabellen standaard-api) is de kolom dvscreenxml in dat geval gevuld met de eigen opmaak. In bovengenoemde controlelijst is dat zichtbaar indien de kolom Afwijkend scherm aangevinkt is. Er gaat dus pas iets mis indien een regel in deze lijst is opgenomen zonder dat de kolom Afwijkend scherm is gevuld. Een reden is vaak dat de verwijzing en benaming van de feitelijke opmaakxml-file in de AAR van elkaar verschillen in kamelennotatie.

Filterdefinitie bij lijstscherm

Zie: Scherminformatie voor filterblokken op lijstschermen. Indien er gewenst is dat het lijstscherm gefilterd kan worden zal er een filter xml moeten worden gedefinieerd. De naam van de xml moet beginnen net 'MDFC_' en de rest van de naam moet gelijk zijn als de xml-naam van het lijstscherm (zonder de prefix MDDLC_).

Ga naar gewenste kaart in tbsysstandardtable (beheertegel: Tabellen standaardAPI):

Knoppen op lijst- en detailschermen

Knoppen die binnen een detailscherm dat door tbsysstandardtable wordt gedefinieerd- bijv. achter een specifieke kolom - moeten verschijnen, worden in de xml van dat detailscherm gedefinieerd inclusief de actions die aan die knoppen verbonden moeten zijn: dus - in bovenstaand voorbeeld - in de MDFC_getTest_MWPerRechtengroepList.xml. Zie Scherminformatie voor detailschermen.

De knoppen die linksonder op het gedefinieerde lijst- of detailscherm moeten komen, kunnen binnen de detailkaart van tbSysStandardTable in het blok Knoppen worden gedefinieerd. Deze informatie wordt in de tabel tbSysstandardButton opgeslagen: een dochtertabel van tbsysstandardtable.

Per knop zijn de volgende kolommen beschikbaar:

Voorbeeld knop Standaard insertscherm

Om een knop te maken met als doel een standaard insert op een tabel moet bij de knopdefinitie de action startWizard aangeroepen worden met:

Voor de opmaak van het insertscherm (de xml) zie: Scherminformatie voor standaard insert- en kopieer.

Voorbeeld knop Standaard verwijderen van een kaart

Om een knop te maken met als doel een standaard verwijderactie op een kaart van een tabel moet bij de knopdefinitie de action startWizard aangeroepen worden met:

Deze methode deleteSysStandardRow kijkt naar de voorwaarden gedefinieerd in de kaart uit tbsysstandardtable met dvcode = de vierde parameter.

In deze kaart kan de Kolomnaam blokkering uit parenttabel gevuld zijn, hetgeen betekent dat indien de achterliggende waarde van deze kolom gevuld is - en parenttable is van toepassing- , dat dan de verwijderactie niet door kan gaan. In deze kaart kan de Kolomnaam blokkering uit hoofdtabel/view gevuld zijn, hetgeen betekent dat indien de achterliggende waarde van deze kolom gevuld is, dat dan de verwijderactie niet door kan gaan.

In de dochtertabel tbsysstandardbutton is bij de betreffende deletesysstandardrowkaart gedefinieerd naar welke rechten het programma dient te kijken.

Voor verwijderacties op de hoofdtabellen houdt OpenWave rekening met compartiment.

OpenWave waarschuwt ook met naam en toenaam dat een verwijderactie niet plaats kan vinden indien er een foreign key in de weg zit.

Zie verder over het gebruik en mogelijkheden van actions: Actions.