Help:Saintapedia Graph 12 SaintapediaGraph 0 wikitext text/x-wiki {{#seo:|title=Help:Saintapedia Graph}} {{DISPLAYTITLE:Help:Saintapedia Graph}} {{Saintapedia Graph examples}} '''Saintapedia Graph''' turns [[mw:Extension:Cargo|Cargo]] tables into interactive [https://mermaid.js.org/ Mermaid] flowcharts. Typical uses on this wiki are '''organization charts''' (who reports to whom) and '''funding networks''' (who funded whom). Any parent/child or source/target relationship stored in Cargo can be drawn the same way. {{note|This page documents '''Saintapedia Graph 0.2.5'''. Parser-function errors and warnings are '''English only'''; other interface languages still show English for those messages.}} __TOC__ == What you need == * This extension (Saintapedia Graph) * [[mw:Extension:Cargo|Extension:Cargo]] — data comes from Cargo tables, not from wikitext lists * MediaWiki 1.39+ / PHP 8.1+ '''You do ''not'' need Extension:Mermaid.''' Saintapedia Graph ships Mermaid 10.9.1 and renders diagrams itself. Editors write a parser function (or a wrapper template). The extension runs one or two Cargo queries, builds a flowchart, and the browser draws it. == Quick start == === 1. Have Cargo tables === Any parent/child or source/target Cargo table works — dioceses, parishes, religious orders, foundations, not only a table named Organizations. The bundled sample (import with <code>--examples</code>) uses '''OrgDemo''' / '''GrantDemo''' so it will not overwrite a wiki's Organization or Grant templates: <pre> {{#cargo_declare:_table=OrgDemo |Name=String |ParentOrg=Page |Type=String |Country=String |Website=URL }} </pre> <pre> {{#cargo_declare:_table=GrantDemo |Funder=Page |Recipient=Page |Amount=Float |Year=Integer |Program=String }} </pre> On a live diocese wiki, declare your own tables (for example <code>Parishes</code> with a Page-type <code>Diocese</code> column) and pass <code>table=Parishes</code> / <code>parent=Diocese</code> to [[Template:Org chart]]. Store rows with <code>#cargo_store</code> (usually from an infobox template). Create or recreate tables at [[Special:CargoTables]] if they are missing. Use '''Page'''-type fields for parents, funders, and recipients so node clicks open the right wiki page. === 2. Org chart === <pre> {{#saintapedia_graph: tables=OrgDemo |fields=_pageName=Name,ParentOrg,Type,Country |parent_field=ParentOrg |node_id=Name |style_by=Type |subgraph_by=Country |direction=TD |clickable=yes }} </pre> Edges are '''parent → child''' (archdiocese → diocese → parish, or any reporting line). Shorter: <code><nowiki>{{Org chart|table=OrgDemo|style=Type|subgraph=Country}}</nowiki></code> Real parishes: <code><nowiki>{{Org chart|table=Parishes|parent=Diocese|id=_pageName}}</nowiki></code> === 3. Funding network === Prefer '''dual-table''' mode when organizations live in one table and grants in another (colors and groups then come from the organization row, not the grant row): <pre> {{#saintapedia_graph: nodes_table=OrgDemo |nodes_fields=_pageName=Name,Type,Country |edges_table=GrantDemo |edges_fields=Funder,Recipient,Amount |edges_where=Year>=2023 |node_id=_pageName |node_label=Name |source_field=Funder |target_field=Recipient |edge_label=Amount |style_by=Type |subgraph_by=Country |direction=LR |theme=forest }} </pre> Shorter: <code><nowiki>{{Funding network|nodes=OrgDemo|edges=GrantDemo|style=Type|subgraph=Country|edges_where=Year>=2023}}</nowiki></code> If you only have one table of links, use '''edge''' mode (one query): <pre> {{#saintapedia_graph: tables=Grants |fields=Funder,Recipient,Amount,Year |source_field=Funder |target_field=Recipient |edge_label=Amount |direction=LR |theme=forest }} </pre> === Live examples === Each example is a '''Help:''' subpage with the wikitext and (when the sample Cargo tables exist) the live graph on the same page. Start at [[Help:Saintapedia Graph/Examples]]. [[Template:Org chart]] does not declare a Cargo table — create tables from the Demo templates ([[Help:Saintapedia Graph/Create tables]]). == How to pick a mode == Each diagram is exactly '''one''' mode. Mixing <code>parent_field</code> with <code>source_field</code>/<code>target_field</code> is an error. Dual mode is chosen when you set <code>nodes_table</code> and <code>edges_table</code>. {| class="wikitable" ! Mode ! When to use ! Required ! Edge direction ! Cargo queries |- | '''Hierarchy''' | Org charts, subsidiaries, “reports to” | <code>tables=</code> + <code>parent_field=</code> | Parent → child | 1 |- | '''Edge''' | Links stored in one table (grant rows, ownership rows) | <code>tables=</code> + <code>source_field=</code> + <code>target_field=</code> | Source → target | 1 |- | '''Dual-table''' | Nodes in one table, edges in another (typical funding network) | <code>nodes_table=</code> + <code>edges_table=</code> + source/target fields | Source → target | '''2''' (counts as two expensive parser functions) |} === Hierarchy details === * Each Cargo row is one child node. * <code>parent_field</code> names the parent. Empty parent = a root. * If the parent is not itself a row, the extension still draws it (label = the parent value). * A synthetic parent can inherit a subgraph box from its first child. === Edge details === * Each row is one arrow from <code>source_field</code> to <code>target_field</code>. * Missing source or target cells are skipped. * If you set <code>style_by</code> / <code>subgraph_by</code> in this mode, those values come from the '''same row as the edge''' and are applied to the source node (the target only inherits the subgraph). === Dual-table details === * First query loads nodes (labels, click targets, colors, groups). * Second query loads edges. Endpoints that are not in the node query are still drawn (plain label, no style). * Styles are '''not''' overwritten by the edge query. * Both queries use the same <code>limit=</code> (see [[#Limits|Limits]]). ==== Matching nodes to edges ==== Grant <code>Funder</code> / <code>Recipient</code> fields are usually '''page titles'''. Set: <pre> |node_id=_pageName |node_label=Name </pre> so “Ford Foundation” on a grant matches the organization page. If you set <code>node_id=Name</code>, the Name cell must be identical to the page title. == Parser functions == Primary: <code><nowiki>{{#saintapedia_graph: … }}</nowiki></code> Alias: <code><nowiki>{{#cargo_mermaid: … }}</nowiki></code> (same parameters) Parameter names are case-insensitive. Spaces and hyphens become underscores (<code>join on</code> = <code>join_on</code>, <code>nodes-table</code> = <code>nodes_table</code>). === Cargo query (hierarchy and edge) === Same idea as <code>#cargo_query</code>. {| class="wikitable" ! Parameter ! Description |- | <code>tables</code> / <code>table</code> | Required. One or more Cargo tables, comma-separated. |- | <code>fields</code> | Columns to select. The extension adds any extra columns it still needs (<code>parent_field</code>, <code>style_by</code>, …). |- | <code>where</code> | Filter (Cargo/SQL-style). |- | <code>join on</code> | Join conditions. Required when <code>tables=</code> lists more than one table. |- | <code>group by</code> / <code>having</code> | Aggregation (Cargo rules). |- | <code>order by</code> | Sort. |- | <code>limit</code> | Max rows '''per Cargo query'''. See [[#Limits|Limits]]. |- | <code>offset</code> | Skip initial rows (single-query modes). Dual-mode edge query always starts at offset 0. |} === Dual-table query === {| class="wikitable" ! Parameter ! Description |- | <code>nodes_table</code> / <code>edges_table</code> | Required together. |- | <code>nodes_fields</code> / <code>edges_fields</code> | Columns for each query. Empty <code>edges_fields</code> defaults to source, target, and optional edge label. |- | <code>nodes_where</code> / <code>edges_where</code> | Per-query filters. |- | <code>nodes_join_on</code> / <code>edges_join_on</code> | Per-query joins. |- | <code>nodes_order_by</code> / <code>edges_order_by</code> | Per-query sort. |} === Diagram === {| class="wikitable" ! Parameter ! Default ! Description |- | <code>direction</code> | site default, usually <code>TD</code> | <code>TD</code> (top-down; <code>TB</code> is accepted as the same), <code>LR</code>, <code>BT</code>, <code>RL</code> |- | <code>node_id</code> | <code>_pageName</code> | Field that uniquely identifies a node |- | <code>node_label</code> | same as <code>node_id</code> (dual mode may pick <code>Name</code> if that column is in <code>nodes_fields</code>) | Text on the node |- | <code>page_field</code> | hierarchy/dual: <code>_pageName</code>; edge: the endpoint value itself | Wiki title used for the click link |- | <code>parent_field</code> | — | Hierarchy only |- | <code>source_field</code> / <code>target_field</code> | — | Edge and dual (both required) |- | <code>edge_label</code> | — | Optional caption on the arrow (truncated around 64 characters) |- | <code>style_by</code> | — | Color nodes by this column (must exist) |- | <code>subgraph_by</code> | — | Group nodes in a box by this column (must exist) |- | <code>link_style</code> | <code>--></code> | <code>--></code>, <code>-.-></code>, <code>==></code>, <code>---</code>, <code><--></code> (anything else becomes <code>--></code>) |- | <code>clickable</code> | site default, usually <code>yes</code> | <code>yes</code>/<code>no</code> (also <code>true</code>/<code>false</code>, <code>1</code>/<code>0</code>, <code>on</code>/<code>off</code>) |- | <code>theme</code> | site default, usually <code>default</code> | <code>default</code>, <code>base</code>, <code>dark</code>, <code>forest</code>, <code>neutral</code>. Unknown values fall back to <code>default</code> and warn. |- | <code>warn_cycles</code> | site default, usually <code>yes</code> | Warn when the directed graph contains a cycle |- | <code>break_cycles</code> | site default, usually <code>no</code> | Drop edges that close cycles (keeps a DAG-like picture) |- | <code>format</code> | <code>mermaid</code> | <code>mermaid</code> = draw; <code>raw</code> / <code>source</code> / <code>text</code> = print Mermaid source |} == Templates == Imported by the [[#Installing the help page|maintenance script]] (or by hand from <code>templates/</code>). === <code><nowiki>{{Org chart}}</nowiki></code> === Hierarchy. Default table is Organizations; pass <code>table=OrgDemo</code> for the sample or <code>table=Parishes</code> for a real diocese wiki. {| class="wikitable" ! Argument ! Default ! Maps to |- | <code>table</code> | Organizations | <code>tables=</code> |- | <code>parent</code> | ParentOrg | <code>parent_field=</code> |- | <code>id</code> | Name | <code>node_id=</code> |- | <code>label</code> | same as <code>id</code> | <code>node_label=</code> |- | <code>style</code> | — | <code>style_by=</code> (real column) |- | <code>subgraph</code> | — | <code>subgraph_by=</code> (real column) |- | <code>where</code> | — | <code>where=</code> |- | <code>order</code> | the id field | <code>order by=</code> |- | <code>direction</code> | TD | <code>direction=</code> |- | <code>limit</code> | 200 | <code>limit=</code> |- | <code>clickable</code> | yes | <code>clickable=</code> |- | <code>theme</code> | default | <code>theme=</code> |- | <code>warn_cycles</code> / <code>break_cycles</code> | yes / no | same |} === <code><nowiki>{{Funding network}}</nowiki></code> === Dual-table nodes + edges. Defaults are Organizations / Grants; pass <code>nodes=OrgDemo</code> and <code>edges=GrantDemo</code> for the sample. {| class="wikitable" ! Argument ! Default ! Maps to |- | <code>nodes</code> / <code>edges</code> | Organizations / Grants | <code>nodes_table=</code> / <code>edges_table=</code> |- | <code>source</code> / <code>target</code> | Funder / Recipient | <code>source_field=</code> / <code>target_field=</code> |- | <code>id</code> | <code>_pageName</code> | <code>node_id=</code> |- | <code>label</code> | Name | <code>node_label=</code> |- | <code>page</code> | <code>_pageName</code> | <code>page_field=</code> |- | <code>edge_label</code> | Amount | <code>edge_label=</code> |- | <code>style</code> / <code>subgraph</code> | — | node-table columns |- | <code>edges_where</code> or <code>where</code> | — | <code>edges_where=</code> |- | <code>nodes_where</code> | — | <code>nodes_where=</code> |- | <code>direction</code> | LR | <code>direction=</code> |- | <code>theme</code> | forest | <code>theme=</code> |- | <code>limit</code> | 300 | <code>limit=</code> (both queries) |- | <code>clickable</code>, <code>warn_cycles</code>, <code>break_cycles</code> | yes / yes / no | same |} == Colors, groups, and themes == * <code>style_by</code> assigns a fill from the site palette (ten colors by default) to each distinct value. * <code>subgraph_by</code> draws a labeled box around nodes that share a value (country, program, …). * <code>theme=</code> is a Mermaid built-in: <code>default</code>, <code>base</code>, <code>dark</code>, <code>forest</code>, <code>neutral</code>. Typos such as <code>forset</code> still render (theme <code>default</code>) and show a warning. == Clicks == With <code>clickable=yes</code>, a node opens the wiki page from <code>page_field</code> (or the node id). Links are '''same-origin paths only''' (<code>/wiki/…</code> or <code>index.php?…</code>). Absolute and protocol-relative URLs are dropped. JavaScript is required for the interactive SVG. Without JS you get a <code>&lt;noscript&gt;</code> copy of the Mermaid source. == Limits == <code>limit=</code> is '''per Cargo query''': * Default when omitted: <code>$wgSaintapediaGraphDefaultLimit</code> (usually 500). * Hard cap: <code>$wgSaintapediaGraphMaxLimit</code> (usually 1000). * Values below 1 (including negatives) become 1. * If the requested number is rewritten, a warning appears: <code>limit $1 reduced to $2; the graph may be missing rows.</code> * Dual mode runs '''two''' queries at that same cap, so a page can fetch up to 2× the max (nodes + edges). Dual mode also prints a second warning line that each query is capped. Each diagram counts as one '''expensive''' parser function; dual mode counts as two. Too many on one page hits <code>$wgExpensiveParserFunctionLimit</code>. == Cycles == Directed loops (A→B→A, or longer) are detected after the graph is built. * <code>warn_cycles=yes</code> (default) prints how many cycles were found. * <code>break_cycles=yes</code> drops the back-edges that close those cycles, then optionally reports how many edges were removed. The cycle count can overlap on dense graphs; treat it as a signal, not a precise census. Path labels still use internal node ids, not display names. == One query with several tables vs dual mode == These are different: # <code>tables=Grants,Organizations</code> + <code>join on=…</code> — '''one''' result set. In edge mode each row is an edge; node names come from source/target. A join can enrich filters or labels but does not give each node its own Type/Country unless those columns are on the row. # <code>nodes_table</code> + <code>edges_table</code> — '''two''' queries. Use this when styles/groups live on the organization table. Single-query join example: <pre> {{#saintapedia_graph: tables=Grants,Organizations |join on=Grants.Funder=Organizations._pageName |fields=Grants.Funder,Grants.Recipient,Grants.Amount,Organizations.Type |source_field=Funder |target_field=Recipient |edge_label=Amount |direction=LR |limit=300 }} </pre> Not in this version: expand “everyone within N steps of X”, Sankey, hover field tooltips, or SVG/PNG export. == Debugging == * <code>format=raw</code> — print the generated Mermaid instead of drawing. * After an extension update, hard-refresh (Ctrl+Shift+R) so the browser is not holding an old ResourceLoader module. * Warnings render in a yellow box above the diagram; errors in a red box. Both are English. == Troubleshooting == {| class="wikitable" ! Symptom ! What to try |- | “tables parameter is required” | Set <code>tables=</code>, or both <code>nodes_table</code> and <code>edges_table</code> |- | Missing mode / mixed modes | Hierarchy '''or''' edge '''or''' dual — not parent plus source/target |- | Dual mode missing a table | Both node and edge tables are required |- | No results | [[Special:CargoTables]]; re-save pages that <code>#cargo_store</code> |- | Nodes and edges do not match | Dual mode: <code>node_id=_pageName</code> so endpoints equal page titles |- | Unknown theme warning | Use <code>default</code>, <code>base</code>, <code>dark</code>, <code>forest</code>, or <code>neutral</code> |- | Limit reduced warning | Requested <code>limit=</code> was rewritten (over the site max, or below 1) |- | Cycle warning | The directed graph loops. <code>break_cycles=yes</code> drops back-edges |- | “Diagram failed to render” | Hard-refresh; <code>format=raw</code>; browser console |- | Too many expensive parser functions | Fewer graphs per page (dual = two), or raise <code>$wgExpensiveParserFunctionLimit</code> |- | Cargo join error | Every table in <code>tables=</code> must appear in <code>join on=</code> |- | Clicks do nothing | Need JS; <code>clickable=yes</code>; page title must exist; only local paths are emitted |- | Diagram unstyled | Site CSP may block Mermaid’s inline SVG styles — ask an admin (see README) |} == Installing the help page == === Special:Import (no shell) === Download an XML dump from GitHub and import it at [[Special:Import]] (sysop / import right): * [https://raw.githubusercontent.com/Saintapedia/SaintapediaGraph/main/docs/import/SaintapediaGraph-help.xml SaintapediaGraph-help.xml] — this Help page, [[Template:Org chart]], [[Template:Funding network]], [[Template:Saintapedia Graph examples]] * [https://raw.githubusercontent.com/Saintapedia/SaintapediaGraph/main/docs/import/SaintapediaGraph-examples.xml SaintapediaGraph-examples.xml] — help '''plus''' OrgDemo / GrantDemo, the Demo … pages, and the [[Help:Saintapedia Graph/Examples|example series]] Use the '''raw.githubusercontent.com''' link (the file must start with <code>&lt;?xml version="1.0"</code>). Do '''not''' save the GitHub file ''page'' — that is HTML and Special:Import fails with <code>crossorigin</code>. Right-click the raw link → Save as → <code>.xml</code>, then Special:Import → upload. Assign the edits to your account. After the examples dump, recreate Cargo: <pre> php extensions/Cargo/maintenance/cargoRecreateData.php --table OrgDemo php extensions/Cargo/maintenance/cargoRecreateData.php --table GrantDemo </pre> === Maintenance script === Admins (from the wiki root): <pre> php maintenance/run.php SaintapediaGraph:importPages </pre> MediaWiki 1.39: <pre> php extensions/SaintapediaGraph/maintenance/importPages.php </pre> <code>--dry-run</code> lists create/update/skip. <code>--overwrite</code> replaces existing Help and templates. <code>--examples</code> also imports OrgDemo / GrantDemo and the [[Help:Saintapedia Graph/Examples|Help: example series]] (does '''not''' create Organization or Grant templates). That writes: * [[Help:Saintapedia Graph]] (this page) * [[Template:Org chart]] * [[Template:Funding network]] * [[Template:Saintapedia Graph examples]] (right-hand series table) With <code>--examples</code>, also [[Template:OrgDemo]], [[Template:GrantDemo]], the Demo … diocese/parish pages, <code>GrantDemo:</code> rows, and the demo page. Then recreate Cargo if needed: <pre> php extensions/Cargo/maintenance/cargoRecreateData.php --table OrgDemo php extensions/Cargo/maintenance/cargoRecreateData.php --table GrantDemo </pre> The public mediawiki.org listing is a separate paste file in the repo (<code>docs/mediawiki.org-Extension-SaintapediaGraph.wikitext</code>); it is not imported here. == Configuration (admins) == <code>LocalSettings.php</code> / Canasta (after Cargo): <pre> wfLoadExtension( 'Cargo' ); wfLoadExtension( 'SaintapediaGraph' ); $wgSaintapediaGraphDefaultDirection = 'TD'; $wgSaintapediaGraphDefaultLimit = 500; $wgSaintapediaGraphMaxLimit = 1000; $wgSaintapediaGraphClickable = true; $wgSaintapediaGraphDefaultTheme = 'default'; $wgSaintapediaGraphUseStandaloneRenderer = true; $wgSaintapediaGraphWarnCycles = true; $wgSaintapediaGraphBreakCycles = false; </pre> {| class="wikitable" ! Variable ! Default ! Meaning |- | <code>$wgSaintapediaGraphDefaultDirection</code> | <code>TD</code> | Layout when <code>direction=</code> is omitted |- | <code>$wgSaintapediaGraphDefaultLimit</code> | <code>500</code> | Default rows per Cargo query |- | <code>$wgSaintapediaGraphMaxLimit</code> | <code>1000</code> | Hard cap '''per query''' (dual mode can fetch 2×) |- | <code>$wgSaintapediaGraphClickable</code> | <code>true</code> | Default for <code>clickable=</code> |- | <code>$wgSaintapediaGraphDefaultTheme</code> | <code>default</code> | Default Mermaid theme |- | <code>$wgSaintapediaGraphUseStandaloneRenderer</code> | <code>true</code> | <code>false</code> prints source only (no JS) |- | <code>$wgSaintapediaGraphWarnCycles</code> | <code>true</code> | Default for <code>warn_cycles=</code> |- | <code>$wgSaintapediaGraphBreakCycles</code> | <code>false</code> | Default for <code>break_cycles=</code> |- | <code>$wgSaintapediaGraphStylePalette</code> | 10 hex colors | Fills for <code>style_by</code> |} The folder name on disk must be <code>extensions/SaintapediaGraph</code> (ResourceLoader path). No <code>update.php</code> run is required. Scripts are same-origin ResourceLoader (bundled Mermaid). No CDN. UI strings are English-only. CSP notes are in the extension README on GitHub. == Related pages == * [[Help:Saintapedia Graph/Examples]] — one Help page per use (code + live graph) * [[Saintapedia Graph smoke]] — warning cases (local QA) * [[Special:CargoTables]] — declare / recreate Cargo tables * [[mw:Extension:Cargo|Cargo documentation]] * [[mw:Extension:SaintapediaGraph|Extension:SaintapediaGraph]] on mediawiki.org * [https://github.com/Saintapedia/SaintapediaGraph SaintapediaGraph on GitHub] [[Category:Help]] [[Category:Cargo]] [[Category:Saintapedia Graph]] Template:Org chart 10 SaintapediaGraph 0 wikitext text/x-wiki <noinclude> '''Template:Org chart''' — wrapper for [[Help:Saintapedia Graph]] hierarchy diagrams. <code>style</code> / <code>subgraph</code> must be real Cargo columns (e.g. Type, Country). Pass <code>table=</code> for Parishes, OrgDemo, or any parent/child table. <pre> {{Org chart |table=OrgDemo |parent=ParentOrg |id=Name |label=Name |style=Type |subgraph=Country |where= |direction=TD |limit=200 }} </pre> [[Category:Saintapedia Graph templates]] </noinclude><includeonly>{{#saintapedia_graph: tables={{{table|Organizations}}} |fields=_pageName={{{id|Name}}},{{{parent|ParentOrg}}}{{#if:{{{style|}}}|,{{{style}}}}}{{#if:{{{subgraph|}}}|,{{{subgraph}}}}} |where={{{where|}}} |order by={{{order|{{{id|Name}}}}}} |limit={{{limit|200}}} |direction={{{direction|TD}}} |node_id={{{id|Name}}} |node_label={{{label|{{{id|Name}}}}}} |parent_field={{{parent|ParentOrg}}} |style_by={{{style|}}} |subgraph_by={{{subgraph|}}} |clickable={{{clickable|yes}}} |theme={{{theme|default}}} |warn_cycles={{{warn_cycles|yes}}} |break_cycles={{{break_cycles|no}}} }}</includeonly> Template:Funding network 10 SaintapediaGraph 0 wikitext text/x-wiki <noinclude> '''Template:Funding network''' — dual-table funding diagram for [[Help:Saintapedia Graph]] (nodes from one table, edges from another). Defaults are Organizations / Grants; the bundled sample uses OrgDemo / GrantDemo. Uses <code>node_id=_pageName</code> by default so Funder/Recipient page titles match. <code>style</code> / <code>subgraph</code> must be real Cargo columns on the nodes table. <pre> {{Funding network |nodes=OrgDemo |edges=GrantDemo |style=Type |subgraph=Country |source=Funder |target=Recipient |edge_label=Amount |edges_where=Year>=2023 |direction=LR |theme=forest |limit=300 }} </pre> [[Category:Saintapedia Graph templates]] </noinclude><includeonly>{{#saintapedia_graph: nodes_table={{{nodes|Organizations}}} |nodes_fields=_pageName,Name{{#if:{{{style|}}}|,{{{style}}}}}{{#if:{{{subgraph|}}}|,{{{subgraph}}}}} |nodes_where={{{nodes_where|}}} |edges_table={{{edges|Grants}}} |edges_fields={{{source|Funder}}},{{{target|Recipient}}}{{#if:{{{edge_label|Amount}}}|,{{{edge_label|Amount}}}}} |edges_where={{{edges_where|{{{where|}}}}}} |node_id={{{id|_pageName}}} |node_label={{{label|Name}}} |page_field={{{page|_pageName}}} |source_field={{{source|Funder}}} |target_field={{{target|Recipient}}} |edge_label={{{edge_label|Amount}}} |style_by={{{style|}}} |subgraph_by={{{subgraph|}}} |direction={{{direction|LR}}} |limit={{{limit|300}}} |clickable={{{clickable|yes}}} |theme={{{theme|forest}}} |warn_cycles={{{warn_cycles|yes}}} |break_cycles={{{break_cycles|no}}} }}</includeonly> Template:Saintapedia Graph examples 10 SaintapediaGraph 0 wikitext text/x-wiki <noinclude> Right-hand nav for [[Help:Saintapedia Graph]] and the example series. Transclude with <code><nowiki>{{Saintapedia Graph examples}}</nowiki></code>. </noinclude>{| class="wikitable" style="float:right; clear:right; margin:0 0 1em 1.5em; width:16em; font-size:90%;" ! [[Help:Saintapedia Graph|Saintapedia Graph]] |- | [[Help:Saintapedia Graph|Help (reference)]] |- | [[Help:Saintapedia Graph/Examples|Examples index]] |- | [[Help:Saintapedia Graph/Create tables|Create Cargo tables]] |- ! Live on OrgDemo |- | [[Help:Saintapedia Graph/Province|Province]] |- | [[Help:Saintapedia Graph/One diocese|One diocese]] |- | [[Help:Saintapedia Graph/By country|By country]] |- | [[Help:Saintapedia Graph/Funding|Funding]] |- | [[Help:Saintapedia Graph/One funder|One funder]] |- | [[Help:Saintapedia Graph/Templates|Templates]] |- | [[Help:Saintapedia Graph/Raw source|Raw source]] |- ! Your own tables |- | [[Help:Saintapedia Graph/Deaneries|Deaneries]] |- | [[Help:Saintapedia Graph/Religious houses|Religious houses]] |- | [[Help:Saintapedia Graph/Schools|Schools]] |- | [[Help:Saintapedia Graph/Episcopal lineage|Episcopal lineage]] |- | [[Help:Saintapedia Graph/Twin parishes|Twin parishes]] |- | [[Help:Saintapedia Graph/Patron saints|Patron saints]] |- | [[Help:Saintapedia Graph/Successors|Successors]] |} <includeonly>{{#if:{{{break|}}}|<br style="clear:both;" />}}</includeonly>