Caution
+ {{else}}
+ Optimal
+ {{/if}}
+
+ Area Status: {{if atmos_alarm}}Atmosphere alert in area{{else fire_alarm}}Fire alarm in area{{else}}No alerts{{/if}}
+{{else}}
+ Warning: Cannot obtain air sample for analysis.
+{{/if}}
+{{if dangerous}}
+
NOTICE: Safety measures nonfunctional. Device may exhibit abnormal behavior.
+{{/if}}
+
+{{if (!locked || siliconUser)}}
+ {{if screen != 1}}
+ {{:~link('Main Menu', null, { 'screen' : 1})}}
+ {{/if}}
+ {{if screen == 1}}
+
+ {{if atmos_alarm}}
+ {{:~link('Reset - Area Atmospheric Alarm', null, { 'atmos_reset' : 1})}}
+ {{else}}
+ {{:~link('Activate - Area Atmospheric Alarm', null, { 'atmos_alarm' : 1})}}
+ {{/if}}
+
+
+
+ {{:~link('Scrubbers Control', null, { 'screen' : 3})}}
+
+
+ {{:~link('Vents Control', null, { 'screen' : 2})}}
+
+
+ {{:~link('Set Environmental Mode', null, { 'screen' : 4})}}
+
+
+ {{:~link('Sensor Settings', null, { 'screen' : 5})}}
+
+
+ {{if mode==3}}
+ {{:~link('PANIC SIPHON ACTIVE - Turn siphoning off', null, { 'mode' : 1}, null, 'redButton')}}
+ {{else}}
+ {{:~link('ACTIVATE PANIC SIPHON IN AREA', null, { 'mode' : 3}, null, 'yellowButton')}}
+ {{/if}}
+ {{else screen == 2}}
+ {{for vents}}
+ {{:long_name}}
+
+
+ Operating:
+
+
+ {{:~link(power ? 'On' : 'Off', null, { 'id_tag' : id_tag, 'command' : 'power', 'val' : power ? 0 : 1}, null, power ? null : 'redButton')}}
+
+
+
+
+ Mode:
+
+
+ {{:direction == "siphon" ? 'Siphoning' : 'Pressurizing'}}
+
+
+
+
+ Pressure Checks:
+
+
+ {{:~link('External', null, { 'id_tag' : id_tag, 'command' : 'excheck', 'val' : excheck}, null, excheck ? 'selected' : null)}}
+ {{:~link('Internal', null, { 'id_tag' : id_tag, 'command' : 'incheck', 'val' : incheck}, null, incheck ? 'selected' : null)}}
+
+
+
+
+ External Pressure Bound:
+
+
+ {{:~link(~round(external*100)/100, null, { 'id_tag' : id_tag, 'command' : 'set_external_pressure'})}}
+ {{:~link('Reset', null, { 'id_tag' : id_tag, 'command' : 'reset_external_pressure'})}}
+
+
+
+ {{/for}}
+ {{if !vents.length}}
+ No vents connected.
+ {{/if}}
+ {{else screen == 3}}
+ {{for scrubbers}}
+ {{:long_name}}
+
+
+ Operating:
+
+
+ {{:~link(power ? 'On' : 'Off', null, { 'id_tag' : id_tag, 'command' : 'power', 'val' : power ? 0 : 1}, null, power ? null : 'redButton')}}
+
+
+
+
+ Mode:
+
+
+ {{:~link(scrubbing ? 'Scrubbing' : 'Siphoning', null, { 'id_tag' : id_tag, 'command' : 'scrubbing', 'val' : scrubbing ? 0 : 1}, null, scrubbing ? null : 'redButton')}}
+
+
+
+
+ Filters:
+
+
+ {{:~link("Carbon Dioxide", null, { 'id_tag' : id_tag, 'command' : "co2_scrub", 'val' : filter_co2 ? 0 : 1}, null, filter_co2 ? 'selected' : null)}}
+ {{:~link("Plasma", null, { 'id_tag' : id_tag, 'command' : "tox_scrub", 'val' : filter_toxins ? 0 : 1}, null, filter_toxins ? 'selected' : null)}}
+ {{:~link("Nitrous Oxide", null, { 'id_tag' : id_tag, 'command' : "n2o_scrub", 'val' : filter_n2o ? 0 : 1}, null, filter_n2o ? 'selected' : null)}}
+
+
+
+ {{/for}}
+ {{if !scrubbers.length}}
+ No scrubbers connected.
+ {{/if}}
+ {{else screen == 4}}
+ Environmental Modes
+ {{for modes}}
+
+ {{:~link(name, null, { 'mode' : mode }, null, selected ? (danger ? 'redButton' : 'selected') : null)}}
+
+ {{/for}}
+ {{else screen == 5}}
+ Alarm Threshold
+ Partial pressure for gases.
+
+
+ | min2 | min1 | max1 | max2 |
+
+ {{for thresholds}}
+
+ | {{:name}} |
+ {{for settings.settingsValue.settingsIndex}}
+
+ {{:~link(settingsValue.selected >= 0 ? fixed(settingsValue.selected, 2) : "Off", null, { 'command' : 'set_threshold', 'env' : settingsValue.env, 'var' : settingsValue.val })}}
+ |
+ {{/for}}
+
+ {{/for}}
+
+ {{/if}}
+{{/if}}
\ No newline at end of file
diff --git a/nano/templates/atmos_filter.tmpl b/nano/templates/atmos_filter.tmpl
new file mode 100644
index 00000000000..24ee5c8c75f
--- /dev/null
+++ b/nano/templates/atmos_filter.tmpl
@@ -0,0 +1,51 @@
+
+
+ Power:
+
+
+ {{:~link(on? 'On' : 'Off', null, {'power' : 1})}}
+
+
+
+
+ Output pressure:
+
+
+
+ {{:~link('MAX', null, {'set_press' : 'max'}, null)}}
+ {{:~link('SET', null, {'set_press' : 'set'}, null)}}
+
{{:(pressure_set/100)}} kPa
+
+
+
+Filter Type
+
+
+ {{:~link('Plasma', null, {'filterset' : 0}, (filter_type == 0)? 'selected' : null)}}
+
+
+
+
+ {{:~link('Oxygen', null, {'filterset' : 1}, (filter_type == 1)? 'selected' : null)}}
+
+
+
+
+ {{:~link('Nitrogen', null, {'filterset' : 2}, (filter_type == 2)? 'selected' : null)}}
+
+
+
+
+ {{:~link('Carbon Dioxide', null, {'filterset' : 3}, (filter_type == 3)? 'selected' : null)}}
+
+
+
+
+ {{:~link('Nitrous Oxide', null, {'filterset' : 4}, (filter_type == 4)? 'selected' : null)}}
+
+
+
+
+ {{:~link('Nothing', null, {'filterset' : -1}, (filter_type == -1)? 'selected' : null)}}
+
+
\ No newline at end of file
diff --git a/nano/templates/atmos_gas_pump.tmpl b/nano/templates/atmos_gas_pump.tmpl
new file mode 100644
index 00000000000..833bc7046cb
--- /dev/null
+++ b/nano/templates/atmos_gas_pump.tmpl
@@ -0,0 +1,36 @@
+
+
+ Power:
+
+
+ {{:~link(on? 'On' : 'Off', null, {'power' : 1})}}
+
+
+
+{{if max_rate}}
+
+
+ Transfer rate:
+
+
+
+ {{:~link('MAX', null, {'set_transfer_rate' : 'max'}, null)}}
+ {{:~link('SET', null, {'set_transfer_rate' : 'set'}, null)}}
+
{{:(transfer_rate/100)}} L/s
+
+
+
+{{else}}
+
+
+ Output pressure:
+
+
+
+ {{:~link('MAX', null, {'set_press' : 'max'}, null)}}
+ {{:~link('SET', null, {'set_press' : 'set'}, null)}}
+
{{:(pressure_set/100)}} kPa
+
+
+
+{{/if}}
\ No newline at end of file
diff --git a/nano/templates/atmos_mixer.tmpl b/nano/templates/atmos_mixer.tmpl
new file mode 100644
index 00000000000..efc98565b90
--- /dev/null
+++ b/nano/templates/atmos_mixer.tmpl
@@ -0,0 +1,51 @@
+
+
+ Power:
+
+
+ {{:~link(on? 'On' : 'Off', null, {'power' : 1})}}
+
+
+
+
+
+ Output pressure:
+
+
+
+ {{:~link('MAX', null, {'set_press' : 'max'}, null)}}
+ {{:~link('SET', null, {'set_press' : 'set'}, null)}}
+
{{:(pressure_set/100)}} kPa
+
+
+
+
+
+
+ Node 1 Concentration:
+
+
+
+ {{:~link('-', null, {'node1_c' : '-0.1'}, null)}}
+ {{:~link('-', null, {'node1_c' : '-0.01'}, null)}}
+
{{:node1_concentration}} %
+ {{:~link('+', null, {'node1_c' : '0.01'}, null)}}
+ {{:~link('+', null, {'node1_c' : '0.1'}, null)}}
+
+
+
+
+
+
+ Node 2 Concentration:
+
+
+
+ {{:~link('-', null, {'node2_c' : '-0.1'}, null)}}
+ {{:~link('-', null, {'node2_c' : '-0.01'}, null)}}
+
{{:node2_concentration}} %
+ {{:~link('+', null, {'node2_c' : '0.01'}, null)}}
+ {{:~link('+', null, {'node2_c' : '0.1'}, null)}}
+
+
+
\ No newline at end of file
diff --git a/nano/templates/canister.tmpl b/nano/templates/canister.tmpl
new file mode 100644
index 00000000000..1f67d608e5b
--- /dev/null
+++ b/nano/templates/canister.tmpl
@@ -0,0 +1,83 @@
+Tank Status
+
+
+ Tank Label:
+
+
+
{{:name}}
{{:~link('Relabel', 'pencil', {'relabel' : 1}, canLabel ? null : 'disabled')}}
+
+
+
+
+
+ Tank Pressure:
+
+
+ {{:tankPressure}} kPa
+
+
+
+
+
+ Port Status:
+
+
+ {{:portConnected ? 'Connected' : 'Disconnected'}}
+
+
+
+Holding Tank Status
+{{if hasHoldingTank}}
+
+
+ Tank Label:
+
+
+
{{:holdingTank.name}}
{{:~link('Eject', 'eject', {'remove_tank' : 1})}}
+
+
+
+
+
+ Tank Pressure:
+
+
+ {{:holdingTank.tankPressure}} kPa
+
+
+{{else}}
+ No holding tank inserted.
+
+{{/if}}
+
+
+Release Valve Status
+
+
+ Release Pressure:
+
+
+ {{:~displayBar(releasePressure, minReleasePressure, maxReleasePressure)}}
+
+ {{:~link('-', null, {'pressure_adj' : -1000}, (releasePressure > minReleasePressure) ? null : 'disabled')}}
+ {{:~link('-', null, {'pressure_adj' : -100}, (releasePressure > minReleasePressure) ? null : 'disabled')}}
+ {{:~link('-', null, {'pressure_adj' : -10}, (releasePressure > minReleasePressure) ? null : 'disabled')}}
+ {{:~link('-', null, {'pressure_adj' : -1}, (releasePressure > minReleasePressure) ? null : 'disabled')}}
+
{{:releasePressure}} kPa
+ {{:~link('+', null, {'pressure_adj' : 1}, (releasePressure < maxReleasePressure) ? null : 'disabled')}}
+ {{:~link('+', null, {'pressure_adj' : 10}, (releasePressure < maxReleasePressure) ? null : 'disabled')}}
+ {{:~link('+', null, {'pressure_adj' : 100}, (releasePressure < maxReleasePressure) ? null : 'disabled')}}
+ {{:~link('+', null, {'pressure_adj' : 1000}, (releasePressure < maxReleasePressure) ? null : 'disabled')}}
+
+
+
+
+
+
+ Release Valve:
+
+
+ {{:~link('Open', 'unlocked', {'toggle' : 1}, valveOpen ? 'selected' : null)}}{{:~link('Close', 'locked', {'toggle' : 1}, valveOpen ? null : 'selected')}}
+
+
+
diff --git a/nano/templates/tanks.tmpl b/nano/templates/tanks.tmpl
new file mode 100644
index 00000000000..6aa259fd145
--- /dev/null
+++ b/nano/templates/tanks.tmpl
@@ -0,0 +1,47 @@
+{{if maskConnected}}
+ This tank is connected to a mask.
+{{else}}
+ This tank is NOT connected to a mask.
+{{/if}}
+
+
+
+ Tank Pressure:
+
+
+ {{:~displayBar(tankPressure, 0, 1013, (tankPressure > 200) ? 'good' : ((tankPressure > 100) ? 'average' : 'bad'))}}
+
+ {{:tankPressure}} kPa
+
+
+
+
+
+
+
+
+ Mask Release Pressure:
+
+
+ {{:~displayBar(releasePressure, 0, maxReleasePressure, (releasePressure >= 23) ? null : ((releasePressure >= 17) ? 'average' : 'bad'))}}
+
+ {{:~link('-', null, {'dist_p' : -5}, (releasePressure > 0) ? null : 'disabled')}}
+ {{:~link('-', null, {'dist_p' : -1}, (releasePressure > 0) ? null : 'disabled')}}
+
{{:releasePressure}} kPa
+ {{:~link('+', null, {'dist_p' : 1}, (releasePressure < maxReleasePressure) ? null : 'disabled')}}
+ {{:~link('+', null, {'dist_p' : 5}, (releasePressure < maxReleasePressure) ? null : 'disabled')}}
+ {{:~link('Max', null, {'dist_p' : 'max'}, (releasePressure < maxReleasePressure) ? null : 'disabled')}}
+ {{:~link('Reset', null, {'dist_p' : 'reset'}, (releasePressure != defaultReleasePressure) ? null : 'disabled')}}
+
+
+
+
+
+
+ Mask Release Valve:
+
+
+ {{:~link('Open', 'unlocked', {'stat' : 1}, (!maskConnected) ? 'disabled' : (valveOpen ? 'selected' : null))}}{{:~link('Close', 'locked', {'stat' : 1}, valveOpen ? null : 'selected')}}
+
+
+