<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://baystation.xyz//index.php?action=history&amp;feed=atom&amp;title=Guide_to_NanoUI</id>
	<title>Guide to NanoUI - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://baystation.xyz//index.php?action=history&amp;feed=atom&amp;title=Guide_to_NanoUI"/>
	<link rel="alternate" type="text/html" href="https://baystation.xyz//index.php?title=Guide_to_NanoUI&amp;action=history"/>
	<updated>2026-04-25T14:35:23Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://baystation.xyz//index.php?title=Guide_to_NanoUI&amp;diff=2384&amp;oldid=prev</id>
		<title>Rootoo at 15:22, 5 May 2023</title>
		<link rel="alternate" type="text/html" href="https://baystation.xyz//index.php?title=Guide_to_NanoUI&amp;diff=2384&amp;oldid=prev"/>
		<updated>2023-05-05T15:22:18Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:22, 5 May 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l288&quot;&gt;Line 288:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 288:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;----&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;----&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Navbox Guides}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Navbox Guides}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Guides]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Contribution Guides]]&lt;/ins&gt;[[Category:Guides]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Rootoo</name></author>
	</entry>
	<entry>
		<id>https://baystation.xyz//index.php?title=Guide_to_NanoUI&amp;diff=2036&amp;oldid=prev</id>
		<title>Rootoo at 16:29, 26 April 2023</title>
		<link rel="alternate" type="text/html" href="https://baystation.xyz//index.php?title=Guide_to_NanoUI&amp;diff=2036&amp;oldid=prev"/>
		<updated>2023-04-26T16:29:44Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:29, 26 April 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l286&quot;&gt;Line 286:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 286:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;{{:helper.displayBar(data.occupant.health, 0, data.occupant.minHealth, &amp;#039;average alignRight&amp;#039;)}}&amp;lt;/nowiki&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;{{:helper.displayBar(data.occupant.health, 0, data.occupant.minHealth, &amp;#039;average alignRight&amp;#039;)}}&amp;lt;/nowiki&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &amp;lt;nowiki&amp;gt;{{/if}}&amp;lt;/nowiki&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &amp;lt;nowiki&amp;gt;{{/if}}&amp;lt;/nowiki&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;----&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Navbox Guides}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Guides]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Guides]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Rootoo</name></author>
	</entry>
	<entry>
		<id>https://baystation.xyz//index.php?title=Guide_to_NanoUI&amp;diff=164&amp;oldid=prev</id>
		<title>Rootoo at 13:54, 27 March 2023</title>
		<link rel="alternate" type="text/html" href="https://baystation.xyz//index.php?title=Guide_to_NanoUI&amp;diff=164&amp;oldid=prev"/>
		<updated>2023-03-27T13:54:47Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 13:54, 27 March 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l286&quot;&gt;Line 286:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 286:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;{{:helper.displayBar(data.occupant.health, 0, data.occupant.minHealth, &amp;#039;average alignRight&amp;#039;)}}&amp;lt;/nowiki&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;{{:helper.displayBar(data.occupant.health, 0, data.occupant.minHealth, &amp;#039;average alignRight&amp;#039;)}}&amp;lt;/nowiki&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &amp;lt;nowiki&amp;gt;{{/if}}&amp;lt;/nowiki&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &amp;lt;nowiki&amp;gt;{{/if}}&amp;lt;/nowiki&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Guides]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Rootoo</name></author>
	</entry>
	<entry>
		<id>https://baystation.xyz//index.php?title=Guide_to_NanoUI&amp;diff=163&amp;oldid=prev</id>
		<title>Rootoo: Created</title>
		<link rel="alternate" type="text/html" href="https://baystation.xyz//index.php?title=Guide_to_NanoUI&amp;diff=163&amp;oldid=prev"/>
		<updated>2023-03-27T13:54:32Z</updated>

		<summary type="html">&lt;p&gt;Created&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== The DM Code ==&lt;br /&gt;
We&amp;#039;re going to create a basic NanoUI, to give you an understanding of how the library works.&lt;br /&gt;
&lt;br /&gt;
For this example we&amp;#039;re going to create a UI for a fictional object, called a &amp;quot;womdinger&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Here is the basic womdinger.dm file:&lt;br /&gt;
 /obj/item/device/wombdinger&lt;br /&gt;
    name = &amp;quot;womdinger&amp;quot;&lt;br /&gt;
    desc = &amp;quot;It&amp;#039;s some kind of crude alien device.&amp;quot;&lt;br /&gt;
    icon = &amp;#039;icons/obj/wombdinger.dmi&amp;#039;&lt;br /&gt;
    icon_state = &amp;quot;0&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 /obj/item/device/wombdinger/attack_self(mob/user as mob)&lt;br /&gt;
   // attack_self is currently empty&lt;br /&gt;
In order to open our NanoUI we&amp;#039;ll need to use the ui_interact proc.&lt;br /&gt;
&lt;br /&gt;
Failure to use the ui_interact proc for opening NanoUIs will prevent the UI from receiving updates.&lt;br /&gt;
&lt;br /&gt;
NanoUI adds the ui_interact proc to all objs and mobs; we will override this in our womdinger.dm file and call it from the attack_self proc:&lt;br /&gt;
 /obj/item/device/wombdinger&lt;br /&gt;
   name = &amp;quot;womdinger&amp;quot;&lt;br /&gt;
   desc = &amp;quot;It&amp;#039;s some kind of crude alien device.&amp;quot;&lt;br /&gt;
   icon = &amp;#039;icons/obj/wombdinger.dmi&amp;#039;&lt;br /&gt;
   icon_state = &amp;quot;0&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 /obj/item/device/wombdinger/attack_self(mob/user as mob)&lt;br /&gt;
   ui_interact(user)&lt;br /&gt;
 &lt;br /&gt;
 /obj/item/device/wombdinger/ui_interact(mob/user, ui_key = &amp;quot;main&amp;quot;, var/datum/nanoui/ui = null, var/force_open = 1)&lt;br /&gt;
   // NanoUI code goes here&lt;br /&gt;
Note: We won&amp;#039;t go into the parameters of ui_interact here – that has been documented in the code. see [https://github.com/Baystation12/Baystation12/blob/dev/code/modules/nano/nanoui.dm \code\modules\nano\nanoui.dm].&lt;br /&gt;
&lt;br /&gt;
Now we need to put something into ui_interact; the data to be passed to the UI and the UI create/update logic:&lt;br /&gt;
 /obj/item/device/wombdinger/ui_interact(mob/user, ui_key = &amp;quot;main&amp;quot;, var/datum/nanoui/ui = null, var/force_open = 1)&lt;br /&gt;
   // this is the data which will be sent to the ui, it must be a list&lt;br /&gt;
   var/list/data = list()&lt;br /&gt;
   // we&amp;#039;ll add some simple data here as an example&lt;br /&gt;
   data[&amp;quot;myName&amp;quot;] = name&lt;br /&gt;
   data[&amp;quot;myDesc&amp;quot;] = desc&lt;br /&gt;
   data[&amp;quot;someString&amp;quot;] = &amp;quot;I am a string.&amp;quot;&lt;br /&gt;
   data[&amp;quot;aNumber&amp;quot;] = 123&lt;br /&gt;
 &lt;br /&gt;
   data[&amp;quot;assocList&amp;quot;] = list(&amp;quot;key1&amp;quot; = &amp;quot;Value1&amp;quot;, &amp;quot;key2&amp;quot; = &amp;quot;Value2&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
   // the backslash tells the compiler to ignore the carriage return, treating the easy-to-read format as a single line.&lt;br /&gt;
   data[&amp;quot;arrayOfAssocLists&amp;quot;] = list(\&lt;br /&gt;
     list(&amp;quot;key1&amp;quot; = &amp;quot;ValueA1&amp;quot;, &amp;quot;key2&amp;quot; = &amp;quot;ValueA2&amp;quot;),\&lt;br /&gt;
     list(&amp;quot;key1&amp;quot; = &amp;quot;ValueB1&amp;quot;, &amp;quot;key2&amp;quot; = &amp;quot;ValueB2&amp;quot;),\&lt;br /&gt;
     list(&amp;quot;key1&amp;quot; = &amp;quot;ValueC1&amp;quot;, &amp;quot;key2&amp;quot; = &amp;quot;ValueC2&amp;quot;)&lt;br /&gt;
   )&lt;br /&gt;
 &lt;br /&gt;
   data[&amp;quot;emptyArray&amp;quot;] = list()&lt;br /&gt;
 &lt;br /&gt;
   // update the ui with data if it exists, returns null if no ui is passed/found or if force_open is 1/true&lt;br /&gt;
   ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)&lt;br /&gt;
   if (!ui)&lt;br /&gt;
     // the ui does not exist, so we&amp;#039;ll create a new() one&lt;br /&gt;
     // for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm&lt;br /&gt;
     ui = new(user, src, ui_key, &amp;quot;womdinger.tmpl&amp;quot;, &amp;quot;Womdinger UI&amp;quot;, 520, 410)&lt;br /&gt;
     // when the ui is first opened this is the data it will use&lt;br /&gt;
     ui.set_initial_data(data)&lt;br /&gt;
     // open the new ui window&lt;br /&gt;
     ui.open()&lt;br /&gt;
The two important elements to focus on in the code above are the data, which is a simple associative list, and the nanoui creation (&amp;quot;ui = new(user, src, ui_key, &amp;quot;womdinger.tmpl&amp;quot;, &amp;quot;Womdinger UI&amp;quot;, 520, 410)&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
The first three parameters (user, src and ui_key) of the nanoui new proc never change.&lt;br /&gt;
&lt;br /&gt;
The next four parameters are template, title, width and height:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;template&amp;#039;&amp;#039; should be the name of the template file in the \nano\templates\ folder.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;title&amp;#039;&amp;#039; is the title of the ui window.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;width&amp;#039;&amp;#039; is the width, in pixels, of the ui window.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;height&amp;#039;&amp;#039; is the height, in pixels, of the ui window.&lt;br /&gt;
&lt;br /&gt;
That&amp;#039;s all the code we need in the DM file, next we need to create the womdinger template.&lt;br /&gt;
&lt;br /&gt;
== Creating a Template ==&lt;br /&gt;
NanoUI separates the display code from the logic (DM files) and puts it into template (.tmpl) files.&lt;br /&gt;
&lt;br /&gt;
Template files are basically just HTML documents, with markup added to for dynamic elements.&lt;br /&gt;
&lt;br /&gt;
In the previous section we set up our womdinger.dm file. In that file, under the ui_interact proc, a &amp;quot;womdinger.tmpl&amp;quot; file is referenced. We need to create that file in the \nano\templates\ folder.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Note: As of the latest update to the NanoUI library it is no longer necessary to add template files to the client send_resources proc as this is handled automatically.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Now the basic template code for womdinger.tmpl:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;div class=&amp;quot;item&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;itemLabel&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;b&amp;gt;Object Name&amp;lt;/b&amp;gt;&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;div class=&amp;quot;itemContent&amp;quot;&amp;gt;&lt;br /&gt;
     {{:data.myName}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;div class=&amp;quot;item&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;itemLabel&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;b&amp;gt;Object Description&amp;lt;/b&amp;gt;&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;div class=&amp;quot;itemContent&amp;quot;&amp;gt;&lt;br /&gt;
     {{:data.myDesc}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;div class=&amp;quot;item&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;itemLabel&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;b&amp;gt;Some String&amp;lt;/b&amp;gt;&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;div class=&amp;quot;itemContent&amp;quot;&amp;gt;&lt;br /&gt;
     {{:data.someString}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;div class=&amp;quot;item&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;itemLabel&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;b&amp;gt;A Number&amp;lt;/b&amp;gt;&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;div class=&amp;quot;itemContent&amp;quot;&amp;gt;&lt;br /&gt;
     {{:data.aNumber}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;div class=&amp;quot;item&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;itemLabel&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;b&amp;gt;Associated list values&amp;lt;/b&amp;gt;&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;div class=&amp;quot;itemContent&amp;quot;&amp;gt;&lt;br /&gt;
     {{:data.assocList.key1}}&amp;lt;/nowiki&amp;gt; and &amp;lt;nowiki&amp;gt;{{:data.assocList.key2}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
The template is standard HTML4 with markup tags (surrounded by curly braces &amp;lt;nowiki&amp;gt;{{...}}&amp;lt;/nowiki&amp;gt;) for dynamic content (print, conditional statements, loops etc.).&lt;br /&gt;
&lt;br /&gt;
The default styling for the template is provided by the shared.css file in the /nano/css folder.&lt;br /&gt;
&lt;br /&gt;
That&amp;#039;s it, the most basic UI that you can create in NanoUI. In the next section we&amp;#039;ll cover using markup tags for dynamic content.&lt;br /&gt;
&lt;br /&gt;
== Template Markup Tags ==&lt;br /&gt;
Markup tags are used to add dynamic content to the template.&lt;br /&gt;
&lt;br /&gt;
=== Print Tag ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Format:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{:data.variable}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
The print tag outputs variable as text to the UI.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example 1: Top level data&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
In womdinger.dm, under the ui_interact proc, we set some text to the &amp;quot;someString&amp;quot; key:&lt;br /&gt;
 data[&amp;quot;someString&amp;quot;] = &amp;quot;I am a string&amp;quot;&lt;br /&gt;
And in the womdinger.tmpl template we access that data with the following tag:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{:data.someString}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
When the UI is rendered the tag will have been replaced with:&lt;br /&gt;
 I am a string.&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example 2: Going deeper&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
In womdinger.dm, under the ui_interact proc, we set an associative list to the &amp;quot;assocList&amp;quot; key:&lt;br /&gt;
 data[&amp;quot;assocList&amp;quot;] = list(&amp;quot;key1&amp;quot; = &amp;quot;Value1&amp;quot;, &amp;quot;key2&amp;quot; = &amp;quot;Value2&amp;quot;)&lt;br /&gt;
You can access the values of associated lists using the dot (.) notation:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{:data.assocList.key1}}&amp;lt;/nowiki&amp;gt; and &amp;lt;nowiki&amp;gt;{{:data.assocList.key2}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
When the UI is rendered these tag will have been replaced with:&lt;br /&gt;
 Value1 and Value2&lt;br /&gt;
&lt;br /&gt;
=== If Tag ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Format:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{if expression}}&amp;lt;/nowiki&amp;gt; &amp;lt;expression true content&amp;gt; &amp;lt;nowiki&amp;gt;{{/if}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{if expression}}&amp;lt;/nowiki&amp;gt; &amp;lt;expression true content&amp;gt; &amp;lt;nowiki&amp;gt;{{else}}&amp;lt;/nowiki&amp;gt; &amp;lt;expression false content&amp;gt; &amp;lt;nowiki&amp;gt;{{/if}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{if expression1}}&amp;lt;/nowiki&amp;gt; &amp;lt;expression1 true content&amp;gt; &amp;lt;nowiki&amp;gt;{{else expression2}}&amp;lt;/nowiki&amp;gt; &amp;lt;expression2 true content&amp;gt; &amp;lt;nowiki&amp;gt;{{/if}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
The if tag displays content conditionally based on the provided expression being true.&lt;br /&gt;
&lt;br /&gt;
When combined with the else tag the if tag can also show content if the provided expression is false.&lt;br /&gt;
&lt;br /&gt;
The else tag can optionally have an expression provided (e.g. &amp;quot;  &amp;lt;nowiki&amp;gt;{{else expression2}}&amp;lt;/nowiki&amp;gt;&amp;quot;), giving it &amp;quot;elseif&amp;quot; functionality.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example 1: A simple if tag&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Template example:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{if data.aNumber}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; data.aNumber is set (not null) and is positive&lt;br /&gt;
 {{/if}&lt;br /&gt;
When the UI is rendered the tag will have been replaced with:&lt;br /&gt;
 data.aNumber is set (not null) and is positive&lt;br /&gt;
Because data.aNumber is set (not null) and is positive (it&amp;#039;s value is 123).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example 2: If and else tags combined&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Template example:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{if data.someString == &amp;quot;Who goes there?&amp;quot;}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; Some string is &amp;quot;Who goes there?&amp;quot;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{else}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; Some string is not &amp;quot;Who goes there?&amp;quot;&lt;br /&gt;
 {{/if}&lt;br /&gt;
When the UI is rendered the tag will have been replaced with:&lt;br /&gt;
 Some string is not &amp;quot;Who goes there?&amp;quot;&lt;br /&gt;
Because the expression provided (someString == &amp;quot;Who goes there?&amp;quot;) is not true.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example 3: If and multiple else tags combined&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Template example:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{if data.aNumber &amp;lt; 50}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; data.aNumber is less than 50&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{else data.aNumber &amp;lt; 100}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; data.aNumber is less than 100&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{else data.aNumber &amp;lt; 150}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; data.aNumber is less than 150&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{else}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; None of the expressions above are true.&lt;br /&gt;
 {{/if}&lt;br /&gt;
When the UI is rendered the tag will have been replaced with:&lt;br /&gt;
 data.aNumber is less than 150&lt;br /&gt;
Because the expression provided to the second else tag (data.aNumber &amp;lt; 150) is true.&lt;br /&gt;
&lt;br /&gt;
=== For Tag ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Format:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{for array}}&amp;lt;/nowiki&amp;gt; &amp;lt;list entry content&amp;gt; &amp;lt;nowiki&amp;gt;{{/for}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{for array}}&amp;lt;/nowiki&amp;gt; &amp;lt;list entry content&amp;gt; &amp;lt;nowiki&amp;gt;{{empty}}&amp;lt;/nowiki&amp;gt; &amp;lt;empty list content&amp;gt; &amp;lt;nowiki&amp;gt;{{/for}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Loop through entries in an array (an array is a list with a numeric index (it does not use strings as keys).&lt;br /&gt;
&lt;br /&gt;
Each time the for tag iterates though the array it sets a variable (default &amp;quot;value&amp;quot;) to the data of the current entry (another variable, default &amp;quot;index&amp;quot;, contains the index).&lt;br /&gt;
&lt;br /&gt;
And example of this is using the print tag to print the contents (e.g. &amp;lt;nowiki&amp;gt;{{:value.key1}}&amp;lt;/nowiki&amp;gt; and &amp;lt;nowiki&amp;gt;{{:value.key2}}&amp;lt;/nowiki&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
If combined with an empty tag the for tag can display content when the array is empty.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example 1: Basic usage&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Template example:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{for data.arrayOfAssocLists}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;{{:index}}&amp;lt;/nowiki&amp;gt; -&amp;gt; &amp;lt;nowiki&amp;gt;{{:value.key1}}&amp;lt;/nowiki&amp;gt; and &amp;lt;nowiki&amp;gt;{{:value.key2}}&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 {{/for}&lt;br /&gt;
When the UI is rendered the tag will have been replaced with:&lt;br /&gt;
 0 -&amp;gt; ValueA1 and ValueA2   1 -&amp;gt; ValueB1 and ValueB2   2 -&amp;gt; ValueC1 and ValueC2&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example 2: Using the empty tag&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Template example:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{for data.emptyArray}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;{{:value.key}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{empty}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; This list is empty.&lt;br /&gt;
 {{/for}&lt;br /&gt;
When the UI is rendered the tag will have been replaced with:&lt;br /&gt;
 This list is empty.&lt;br /&gt;
&lt;br /&gt;
== Template Helpers ==&lt;br /&gt;
Helpers are functions written in JavaScript which can be called within templates. They are used within the above markup tags, most commonly the print tag.&lt;br /&gt;
&lt;br /&gt;
Helpers are accessed via the &amp;quot;helper&amp;quot; object.&lt;br /&gt;
&lt;br /&gt;
=== Link Helper ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Format:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{:helper.link(text, icon, parameters, status, elementClass, elementId)}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
The link helper generates a link (which by default is styled as a button). When clicked the button will send the supplied parameters to the server.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
&lt;br /&gt;
* text - string - The text which appears on the link.&lt;br /&gt;
* icon - string - An icon to show on the link. Icon names can be found at http://fontawesome.io/icons/. Examples: &amp;#039;refresh&amp;#039;, &amp;#039;shuffle&amp;#039;, &amp;#039;radiation&amp;#039;, &amp;#039;power&amp;#039;.&lt;br /&gt;
* parameters - JSON - Parameters to send to the server when the link is clicked. The &amp;quot;src&amp;quot; parameter is added automatically, do not add it here.&lt;br /&gt;
* status - optional null/string - Optional status of the link. Can be null for active, &amp;#039;disabled&amp;#039; for disabled or &amp;#039;selected&amp;#039; for selected. Defaults to active if nothing is passed.&lt;br /&gt;
* elementClass - optional string - If provided this string will be added to the link as a class (used for custom styling in CSS or as a JavaScript selector).&lt;br /&gt;
* elementId - optional string - If provided this string will be added to the link as an id (used for custom styling in CSS or as a JavaScript selector).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example 1: Basic usage&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{:helper.link(&amp;#039;Toggle Power&amp;#039;, &amp;#039;power&amp;#039;, { &amp;#039;option&amp;#039; : &amp;#039;togglePower&amp;#039; })}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
If clicked the receiving object&amp;#039;s Topic proc&amp;#039;s href_list will have the following entries (src is added automatically and should not be changed):&lt;br /&gt;
 list(&amp;quot;src&amp;quot; = &amp;quot;\ref[src]&amp;quot;, &amp;quot;option&amp;quot; = &amp;quot;togglePower&amp;quot;)&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example 2: Multiple parameters&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{:helper.link(&amp;#039;Cut Red Wire&amp;#039;, &amp;#039;scissors&amp;#039;, { &amp;#039;wireColor&amp;#039; : &amp;#039;red&amp;#039;, &amp;#039;action&amp;#039; : &amp;#039;cut&amp;#039; })}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
If clicked the receiving object&amp;#039;s Topic proc&amp;#039;s href_list will have the following entries (src is added automatically and should not be changed):&lt;br /&gt;
 list(&amp;quot;src&amp;quot; = &amp;quot;\ref[src]&amp;quot;, &amp;quot;wireColor&amp;quot; = &amp;quot;red&amp;quot;, &amp;quot;action&amp;quot; = &amp;quot;cut&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== Bar Helper ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Format:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{:helper.displayBar(value, rangeMin, rangeMax, styleClass, styleClass, showText)}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
This helper creates a bar.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
&lt;br /&gt;
* value - number - Current value of progress bar&lt;br /&gt;
* rangeMin - number - Lower bound of value&lt;br /&gt;
* rangeMax - number - Upper bound of value&lt;br /&gt;
* styleClass - optional string - List of styles to apply, seperated by spaces. Acceptable styles include alignRight, good, notgood, average, bad, and highlight.&lt;br /&gt;
* showText - optional string - The text that is shown. Do not include the number itself.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example 1: Health&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{if data.occupant.health &amp;gt;= 0}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;{{:helper.displayBar(data.occupant.health, 0, data.occupant.maxHealth, &amp;#039;good&amp;#039;)}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{else}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;{{:helper.displayBar(data.occupant.health, 0, data.occupant.minHealth, &amp;#039;average alignRight&amp;#039;)}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{/if}}&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rootoo</name></author>
	</entry>
</feed>