Module:CargoQuery/doc: Difference between revisions

From Tears of Themis Wiki
imported>Elaeagnifolia
(Elaeagnifolia created the page Module:CargoQuery/doc using a non-default content model "wikitext")
 
No edit summary
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
{{doc/start}}
{{Copied
|page=https://lol.fandom.com/wiki/Module:CargoQuery
|site=https://lol.fandom.com
|sitename=League of Legends eSports Wiki
}}
This module lets you get around the <code>|no html</code> bug that Cargo has by avoiding |format=template. This module implicitly assumed you ARE using named args in your template (corresponding to <code>|named_args=yes</code>; you do not need to specify this.)


Unlike <code>|format=template</code>, this wrapper will NOT rename parameters with underscores in them to use spaces instead.
== Parameters ==
* You may specify all parameters the same as if they were parameters in <code>#cargo_query</code>.
== One-To-Many ==
This template allows for one-to-many support, allowing you to specify a field to treat equivalently to a <code>List of ...</code> field. Syntax is as follows:
* <code>|one_to_many=</code>, a list of fields you want concatenated together.
* <code>|one_to_many_group=</code>, the thing you want our one-to-many values grouped by. UNLIKE the <code>|group by=</code> parameter, this should be the FINAL name of a field, so something on the RIGHT SIDE of the equals sign in your <code>|fields=</code> parameter.
* <code>|one_to_many_sep=</code>, defaults to comma. Currently you must pick the same separator for ''all'' of your one-to-many fields.
=== Example ===
<pre>
{{#invoke:CargoQuery|main
|table=Teams,ListplayerCurrent=LPC
|join on=Teams._pageName=LPC._pageName
|where=Teams.Region="North America" AND LPC._pageName IS NOT NULL
|fields=Teams._pageName=Page
|one_to_many=LPC.ID=IDs
|one_to_many_group=Page
|one_to_many_sep=,
|template=<template>
|intro={{(!}} class="wikitable"
|outro={{!)}}
|limit=10
}}
</pre>
Here, the <code>one_to_many</code> is a list of players on the team in question. For each ONE team, there are MANY players, so the field <code>IDs</code> that's sent to the template is a comma-separated list of players, grouped by team page.
== Compound Queries ==
You can also run compound queries using <code>compound</code>. It has the same syntax as <code>#cargo_compound_query</code> but with a few exceptions:
* <code>default</code> for each individual query is disabled; default must be specified outside as an additional argument, which is then applied if no queries return results.
* Each query must be numbered as in <code>|1=(query1)|2=(query2)|3=...</code>, etc.
* Because of how compound query uses <code>;</code> as a separator, strings with this character cannot be used. This can be worked around by specifying <code>metaseparator</code> to be another symbol, and splitting each query's arguments using that delimiter instead.
=== Example ===
<pre>
{{#invoke:CargoQuery|compound
|1=table=Food=F
;fields=F._pageName=Page
;where=F.CookEffect HOLDS 'heat and fire-based' AND F._pageNamespace = '0'
|2=table=Liquids=L
;fields=L._pageName=Page
;where=L.CookEffect HOLDS 'simple heat and fire-based' AND L._pageNamespace = '0'
|default=No Results!
|template=favilink page
|delimiter = <br>
|metaseparator = ;
}}
</pre>
{{doc/end}}
<includeonly>
[[Category:Helper modules]]
</includeonly>

Latest revision as of 08:25, 28 September 2023

Template-info.png Documentation

Template:Copied This module lets you get around the |no html bug that Cargo has by avoiding |format=template. This module implicitly assumed you ARE using named args in your template (corresponding to |named_args=yes; you do not need to specify this.)

Unlike |format=template, this wrapper will NOT rename parameters with underscores in them to use spaces instead.

Parameters[edit source]

  • You may specify all parameters the same as if they were parameters in #cargo_query.

One-To-Many[edit source]

This template allows for one-to-many support, allowing you to specify a field to treat equivalently to a List of ... field. Syntax is as follows:

  • |one_to_many=, a list of fields you want concatenated together.
  • |one_to_many_group=, the thing you want our one-to-many values grouped by. UNLIKE the |group by= parameter, this should be the FINAL name of a field, so something on the RIGHT SIDE of the equals sign in your |fields= parameter.
  • |one_to_many_sep=, defaults to comma. Currently you must pick the same separator for all of your one-to-many fields.

Example[edit source]

{{#invoke:CargoQuery|main
 |table=Teams,ListplayerCurrent=LPC
 |join on=Teams._pageName=LPC._pageName
 |where=Teams.Region="North America" AND LPC._pageName IS NOT NULL
 |fields=Teams._pageName=Page
 |one_to_many=LPC.ID=IDs
 |one_to_many_group=Page
 |one_to_many_sep=,
 |template=<template>
 |intro={{(!}} class="wikitable"
 |outro={{!)}}
 |limit=10
}}

Here, the one_to_many is a list of players on the team in question. For each ONE team, there are MANY players, so the field IDs that's sent to the template is a comma-separated list of players, grouped by team page.

Compound Queries[edit source]

You can also run compound queries using compound. It has the same syntax as #cargo_compound_query but with a few exceptions:

  • default for each individual query is disabled; default must be specified outside as an additional argument, which is then applied if no queries return results.
  • Each query must be numbered as in |1=(query1)|2=(query2)|3=..., etc.
  • Because of how compound query uses ; as a separator, strings with this character cannot be used. This can be worked around by specifying metaseparator to be another symbol, and splitting each query's arguments using that delimiter instead.

Example[edit source]

{{#invoke:CargoQuery|compound
|1=table=Food=F
;fields=F._pageName=Page
;where=F.CookEffect HOLDS 'heat and fire-based' AND F._pageNamespace = '0'
|2=table=Liquids=L
;fields=L._pageName=Page
;where=L.CookEffect HOLDS 'simple heat and fire-based' AND L._pageNamespace = '0'
|default=No Results!
|template=favilink page
|delimiter = <br>
|metaseparator = ;
}}

This is the documentation page, it should be transcluded into the main template page. See Template:Doc for more information.