Dplmatrix

From DynamicPageList3 Manual
Revision as of 06:39, 18 April 2022 by imported>FrozenPlum

Page Template:Purgenote/style.css must have content model "Sanitized CSS" for TemplateStyles (current model is "plain text").

Note: If the examples don't appear embedded within the page, please purge this page.
Manual dplmatrix

Syntax

 {{#dplmatrix: name | yes | no | mode | '''indented_list''' }}

Effect

This function is a side entry into DPL.

You pass an indented list and you get a matrix view back. With copy/paste you can easily transfer such a matrix to Excel and do some polishing there like turning column texts to vertical, highlight interesting cells etc…)

There are five parameters which MUST be given in the order listed here:

  1. The name of the matrix. Appears in the upper left cell. Arbitrary wiki formatting (even images) are possible.
  2. The symbol for cells which symbolize a link. Default is "x".
  3. The symbol for cells which symbolize the absence of a link. Default is 'empty cell'.
  4. The mode ('normal' or 'flip'); default is 'normal'. When 'flip' is specified, rows and columns will be exchanged.
  5. The indented list.
    • source items must start in column 1
    • target items must be indented by at least one space
    • after the item name you can add ~~ and a 'label'. Row and column titles of the matrix will contain hyperlinks to the items. If labels are specified, they will be used instead of the item names.
    • lines which are empty or contain only spaces are silently ignored.
    • if a source line is not followed by one or more target lines an empty table row (or column in flip mode) will be shown.
    • if the same source line appears multiple times, the targets will be joined (added).

The idea is that you can generate the indented list by DPL statements. See the following example:


Test Matrix

Below is an example of a test matrix.

Generating a matrix from an indented list

Input is:

one
 apple
 apricot
two ~~ Two
 banana
three
four
 grape
 mango ~~ MANGO
two ~~ Two
   mango ~~ MANGO

Output is:

normal flipped
{{#dplmatrix:a simple demo matrix||||
one
 apple
 apricot
two ~~ Two
 banana
three
four
 grape
 mango ~~ MANGO
two ~~ Two
   mango ~~ MANGO
}}
{{#dplmatrix:a simple demo matrix|<big>•</big>|.|flip|
one
 apple
 apricot
two ~~ Two
 banana
three
four
 grape
 mango ~~ MANGO
two ~~ Two
   mango ~~ MANGO
}}

{{#dplmatrix:a simple demo matrix|||| one

apple
apricot

two ~~ Two

banana

three four

grape
mango ~~ MANGO

two ~~ Two

  mango ~~ MANGO

}}

{{#dplmatrix:a simple demo matrix||.|flip| one

apple
apricot

two ~~ Two

banana

three four

grape
mango ~~ MANGO

two ~~ Two

  mango ~~ MANGO

}}

  • "from" items ("source") start in col 1
  • "to" items ("target") are indented by at least one space
  • source appears in input sequence
  • target is sorted by alphabet
  • items are treated as pages and shown as a link
  • the label can be defined by adding it after the iterm, separated by "~~"
  • symbols for "yes" and "no" can be defined
  • via the stylesheet in Mediawiki:Common.css you can control the layout (class=dplmatrix)

Links to DPL Manual pages

Now we use two nested DPL queries and what would be a separate page, Test matrix2, to generate the indented list:

{{#dplmatrix:''links from articles to one of the Primary Module pages''|'''x'''|-|flip|
  {{#dpl:
    |debug=1
    |category=All DPL3
    |count=5
    |format=,%PAGE% ~~ %TITLE%\n²{:Test matrix2¦page=%PAGE%¦category=All DPL3¦namespace=}²,
  }}
}}

Result:
{{#dplmatrix:links from articles to the DPL manual|x|-|flip|

 {{#dpl:
   |debug=1
   |category=All DPL3
   |count=5
   |format=,%PAGE% ~~ %TITLE%\n²{:Test matrix2¦page=%PAGE%¦category=All DPL3¦namespace=}²,
 }}

}}


Contents of Test matrix2:

{{#dpl:
 |debug=1
 |{{#if:{{{namespace|}}}|{{#ifeq:{{{namespace}}}|main|namespace=|namespace={{{namespace}}}|}}}}
 |{{#if:{{{category|}}}|category={{{category}}}}}
 |linksfrom={{{page}}}
 |shownamespace=no
 |count=5
 |format=,   %PAGE% ~~ %TITLE%\n,
}}