Redigerer
Mal:Filtergruppe/dok/teknisk
Hopp til navigering
Hopp til søk
Advarsel:
Du er ikke innlogget. IP-adressen din vil bli vist offentlig om du redigerer. Hvis du
logger inn
eller
oppretter en konto
vil redigeringene dine tilskrives brukernavnet ditt, og du vil få flere andre fordeler.
Antispamsjekk.
Ikke
fyll inn dette feltet!
'''Mal:Filtergruppe''' er et hjelpemiddel for å skaffe bedre oversikt i tabeller. Dette gjøres ved at utvalgte rader kan vises eller skjules etter behov. Visningen styres ved hjelp av markeringsbokser som blir definert foran tabellen ved hjelp av denne malen. == Moduler == Malen består av følgende elementer: * Mal:Filtergruppe - definerer et sett checkbokser som usynlig tabellrad. Malen kan legges inn én eller flere ganger etter hverandre foran tabellen der visningen skal styres. * Skriptet createFilterButtons() - legger inn en tabell over checkboksene, blir utført når siden lastes. * Skriptet checkFilterCheckbox(tableIndex, cClass) - oppdaterer den viste tabellen, blir utført ved klikk i en checkboks. Malen var opprinnelig skrevet som en undermal for Mal:JBS-tabell/medVisSkjul, spesielt for linjekart, for å kunne benytte Mal:Filtergruppe for alle slags tabeller ble derfor hjelpemalen Mal:Filtergrupper innført, dette er en redusert versjon av Mal:JBS-tabell/medVisSkjul, hvor all kode som har med linjekart å gjøre er fjernet. Sammen med tabellradene danner den en fullstendig tabell. Rader som skal vises eller skjules i en tabell markeres med en klasse med prefiks "filterShow", denne er avhengig av hvilke checkbokser som er definert i Mal:Filtergruppe. == Maler == Mal:Filtergruppe definerer et sett checkbokser som en tabellrad. Den kan legges inn én eller flere ganger. Hver rad er markert med class="filterGroup" for identifisering, og kan dessuten markeres med klassene * class="filterAll" - dersom ingen av checkboksene er markert har det samme virkning som om alle er markert * class="filterRadio" - bare én av checkboksene i raden kan være markert En rad inneholder cellene * Starttekst - en fritt valgt tekst og per checkboks et trippel av tre celler * Visningskode - en bokstav i UC * Knappetekst - en tekst som kan velges fritt * Startstatus - markering eller ikke ved første visning av checkboksen Radene er omsluttet av en tabell med class="filterGroups", og kan stamme fra Mal:Filtergrupper eller fra Mal:JBS-tabell/medVisSkjul. Klassens hensikt er også her identifisering av tabellen. === Eksempel === Malen <syntaxhighlight lang=html> {{filtergruppe|tekst0=Vis |vis1=T|tekst1=T-bane,|start1=ja |vis2=O|tekst2=trikk, |vis3=J|tekst3=jernbane }} </syntaxhighlight> genererer følgende tabell <syntaxhighlight lang=html> <tr class="filterGroup"> <td class="hide" title="t0">Vis</td> <td class="hide">T</td> <td class="hide">T-bane,</td> <td class="hide">ja</td> <td class="hide">O</td> <td class="hide">trikk,</td> <td class="hide"></td> <td class="hide">J</td> <td class="hide">jernbane</td> <td class="hide"></td> </tr> </syntaxhighlight> == Initialiseringsskript == Skriptet createFilterButtons() parser tabellen som har blitt lagt inn av Mal:Filtergruppe, og genererer checkboksene med lenker til klikkbehandlingsrutinen, denne får som parametre en referanse til visningstabellen (0 dersom siden bare inneholder én slik tabell) og den visningskoden som har blitt klikket slik den er fastlagt i malen. Checkboksene blir lagt i en ny celle foran den første cellen i raden. Resten av raden er ikke nødvendig lenger, men har blitt stående for lettere debugging. Også klassene class="FGchecks" og class="FGbutton" har kun funksjon som debughjelp. === Eksempel === Tabellen ovenfor blir modifisert slik: <syntaxhighlight lang=html> <tr class="filterGroup"> <td class="FGchecks"> <span class="FGbutton"> Vis [ <a id="filterCheck0T" title="T-bane," href='javascript:checkFilterCheckbox(0, "T" );'>X</a> ] T-bane, </span> <span class="FGbutton"> [ <a id="filterCheck0O" title="trikk," href='javascript:checkFilterCheckbox(0, "O" );'>_</a> ] trikk, </span> <span class="FGbutton"> [<a id="filterCheck0J" title="jernbane" href='javascript:checkFilterCheckbox(0, "J" );'>_</a> ] jernbane </span> </td> <td class="hide" title="t0">Vis</td> <td class="hide">T</td> <td class="hide">T-bane,</td> <td class="hide">ja</td> <td class="hide">O</td> <td class="hide">trikk,</td> <td class="hide"></td> <td class="hide">J</td> <td class="hide">jernbane</td> <td class="hide"></td> </tr> </syntaxhighlight> == Oppdateringsskript == Skriptet checkFilterCheckbox parser den første tabellen på den aktuelle siden som ligger etter malen selv. Dersom en rad blir funnet som har en class med prefiks "filterShow" blir resten av class-stringen interpretert som visningsmerker, disse sammenliknes med chackboksens status. Avhengig av visningsmerker og status blir så class="hide" lagt inn i eller fjernet fra raden. Prefikset "filterShow" har selv ingen betydning, det har hovedsaklig som formål å markere visningsmerkene, og det forhindrer dessuten konflikter med CSS. Visningskodene for en rad blir interpretert etter følgende regler: *Kodene leses en etter en fra venstre mot høyre *En kode i UC er true dersom den tilsvarende checkboksen er markert *En kode i LC er true dersom den tilsvarende checkboksen ikke er markert *Koder som står ved siden av hverandre betraktes som et logisk AND-uttrykk og danner en kodegruppe *Koder eller kodegrupper kan skilles med et minustegn (-) dette betraktes som et logisk OR *Parenteser er ikke implementert. === Kombinasjon av visningsmerker === Dersom kodene A og B er definert foran tabellen er følgende kombinasjoner for <visningsmerke> virksomme: *A - vis raden hvis A er markert *B - vis raden hvis B er markert *AB - vis raden hvis både A og B er markert *A-B - vis raden hvis enten A eller B er markert *Ab - vis raden hvis A er markert, men ikke B *A-b - vis raden hvis enten A er markert, eller B ikke er markert *aB - vis raden hvis A ikke er markert og B er markert *a-B - vis raden hvis enten A ikke er markert, eller B er markert *ab - vis raden hvis verken A eller B er markert *a-b - vis raden hvis enten A eller B ikke er markert En liten bokstav har her betydningen «ikke», dvs «a» betyr «ikke A». Kodenes rekkefølge har ingen betydning. Fordi parenteser er ikke implementert må derfor kodene gjentas hvis nødvendig dersom 3 eller flere forskjellige koder brukes. Fra eksempelet lenger opp: * TJ-OJ - vis raden hvis J er markert, og samtidig T eller O er markert [[Kategori:Maldokumentasjonssider]]
Redigeringsforklaring:
Merk at alle bidrag til Wikisida.no anses som frigitt under Creative Commons Navngivelse-DelPåSammeVilkår (se
Wikisida.no:Opphavsrett
for detaljer). Om du ikke vil at ditt materiale skal kunne redigeres og distribueres fritt må du ikke lagre det her.
Du lover oss også at du har skrevet teksten selv, eller kopiert den fra en kilde i offentlig eie eller en annen fri ressurs.
Ikke lagre opphavsrettsbeskyttet materiale uten tillatelse!
Avbryt
Redigeringshjelp
(åpnes i et nytt vindu)
Forhåndsvis en side som bruker denne malen
Denne siden er medlem av 1 skjult kategori:
Kategori:Sider hvor ekspansjonsdybden er overskredet
Navigasjonsmeny
Personlige verktøy
Ikke logget inn
Brukerdiskusjon
Bidrag
Opprett konto
Logg inn
Navnerom
Mal
Diskusjon
norsk bokmål
Visninger
Les
Rediger kilde
Vis historikk
Mer
Navigasjon
Forside
Siste endringer
Tilfeldig side
Hjelp til MediaWiki
Verktøy
Lenker hit
Relaterte endringer
Spesialsider
Sideinformasjon