initial commit - cross reference with 5th port - obviously has compile errors
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
<link rel='ractive' href='./airalarm/scrubbers.ract'>
|
||||
<link rel='ractive' href='./airalarm/status.ract'>
|
||||
<link rel='ractive' href='./airalarm/thresholds.ract'>
|
||||
<link rel='ractive' href='./airalarm/modes.ract'>
|
||||
<link rel='ractive' href='./airalarm/vents.ract'>
|
||||
|
||||
<ui-notice>
|
||||
{{#if data.siliconUser}}
|
||||
<ui-section label='Interface Lock'>
|
||||
<ui-button icon='{{data.locked ? "lock" : "unlock"}}' action='lock'>{{data.locked ? "Engaged" : "Disengaged"}}</ui-button>
|
||||
</ui-section>
|
||||
{{else}}
|
||||
<span>Swipe an ID card to {{data.locked ? "unlock" : "lock"}} this interface.</span>
|
||||
{{/if}}
|
||||
</ui-notice>
|
||||
<status/>
|
||||
{{#if !data.locked || data.siliconUser}}
|
||||
{{#if config.screen == "home"}}
|
||||
<ui-display title='Air Controls'>
|
||||
<ui-section>
|
||||
<ui-button icon='{{data.atmos_alarm ? "exclamation-triangle" : "exclamation"}}' style='{{data.atmos_alarm ? "caution" : null}}'
|
||||
action='{{data.atmos_alarm ? "reset" : "alarm"}}'>Area Atmosphere Alarm</ui-button>
|
||||
</ui-section>
|
||||
<ui-section>
|
||||
<ui-button icon='{{data.mode == 3 ? "exclamation-triangle" : "exclamation"}}' style='{{data.mode == 3 ? "danger" : null}}'
|
||||
action='mode' params='{"mode": {{data.mode == 3 ? 1 : 3}}}'>Panic Siphon</ui-button>
|
||||
</ui-section>
|
||||
<br/>
|
||||
<ui-section>
|
||||
<ui-button icon='sign-out' action='tgui:view' params='{"screen": "vents"}'>Vent Controls</ui-button>
|
||||
</ui-section>
|
||||
<ui-section>
|
||||
<ui-button icon='filter' action='tgui:view' params='{"screen": "scrubbers"}'>Scrubber Controls</ui-button>
|
||||
</ui-section>
|
||||
<ui-section>
|
||||
<ui-button icon='cog' action='tgui:view' params='{"screen": "modes"}'>Operating Mode</ui-button>
|
||||
</ui-section>
|
||||
<ui-section>
|
||||
<ui-button icon='bar-chart' action='tgui:view' params='{"screen": "thresholds"}'>Alarm Thresholds</ui-button>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
{{elseif config.screen == "vents"}}
|
||||
<vents/>
|
||||
{{elseif config.screen == "scrubbers"}}
|
||||
<scrubbers/>
|
||||
{{elseif config.screen == "modes"}}
|
||||
<modes/>
|
||||
{{elseif config.screen == "thresholds"}}
|
||||
<thresholds/>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
@@ -0,0 +1 @@
|
||||
<ui-button icon='arrow-left' action='tgui:view' params='{"screen": "home"}'>Back</ui-button>
|
||||
@@ -0,0 +1,14 @@
|
||||
<link rel='ractive' href='./back.ract'>
|
||||
|
||||
<ui-display title='Operating Modes' button>
|
||||
{{#partial button}}
|
||||
<back/>
|
||||
{{/partial}}
|
||||
{{#each data.modes}}
|
||||
<ui-section>
|
||||
<ui-button icon='{{selected ? "check-square-o" : "square-o"}}'
|
||||
state='{{selected ? danger ? "danger" : "selected" : null}}'
|
||||
action='mode' params='{"mode": {{mode}}}'>{{name}}</ui-button>
|
||||
</ui-section>
|
||||
{{/each}}
|
||||
</ui-display>
|
||||
@@ -0,0 +1,35 @@
|
||||
<link rel='ractive' href='./back.ract'>
|
||||
|
||||
<ui-display title='Scrubber Controls' button>
|
||||
{{#partial button}}
|
||||
<back/>
|
||||
{{/partial}}
|
||||
{{#each data.scrubbers}}
|
||||
<ui-subdisplay title='{{long_name}}'>
|
||||
<ui-section label='Power'>
|
||||
<ui-button icon='{{power ? "power-off" : "close"}}' style='{{power ? "selected" : null}}'
|
||||
action='power' params='{"id_tag": "{{id_tag}}", "val": {{+!power}}}'>{{power ? "On" : "Off"}}</ui-button>
|
||||
</ui-section>
|
||||
<ui-section label='Mode'>
|
||||
<ui-button icon='{{scrubbing ? "filter" : "sign-in"}}' style='{{scrubbing ? null : "danger"}}'
|
||||
action='scrubbing' params='{"id_tag": "{{id_tag}}", "val": {{+!scrubbing}}}'>{{scrubbing ? "Scrubbing" : "Siphoning"}}</ui-button>
|
||||
</ui-section>
|
||||
<ui-section label='Range'>
|
||||
<ui-button icon='{{widenet ? "expand" : "compress"}}' style='{{widenet ? "selected" : null}}'
|
||||
action='widenet' params='{"id_tag": "{{id_tag}}", "val": {{+!widenet}}}'>{{widenet ? "Expanded" : "Normal"}}</ui-button>
|
||||
</ui-section>
|
||||
<ui-section label='Filters'>
|
||||
<ui-button icon='{{filter_co2 ? "check-square-o" : "square-o"}}' style='{{filter_co2 ? "selected" : null}}'
|
||||
action='co2_scrub' params='{"id_tag": "{{id_tag}}", "val": {{+!filter_co2}}}'>CO2</ui-button>
|
||||
<ui-button icon='{{filter_n2o ? "check-square-o" : "square-o"}}' style='{{filter_n2o ? "selected" : null}}'
|
||||
action='n2o_scrub' params='{"id_tag": "{{id_tag}}", "val": {{+!filter_n2o}}}'>N2O</ui-button>
|
||||
<ui-button icon='{{filter_toxins ? "check-square-o" : "square-o"}}' style='{{filter_toxins ? "selected" : null}}'
|
||||
action='tox_scrub' params='{"id_tag": "{{id_tag}}", "val": {{+!filter_toxins}}}'>Plasma</ui-button>
|
||||
<ui-button icon='{{filter_bz ? "check-square-o" : "square-o"}}' style='{{filter_bz ? "selected" : null}}'
|
||||
action='bz_scrub' params='{"id_tag": "{{id_tag}}", "val": {{+!filter_bz}}}'>BZ</ui-button>
|
||||
</ui-section>
|
||||
</ui-subdisplay>
|
||||
{{else}}
|
||||
<span class='bad'>Error: No scrubbers connected.</span>
|
||||
{{/each}}
|
||||
</ui-display>
|
||||
@@ -0,0 +1,30 @@
|
||||
<ui-display title='Air Status'>
|
||||
{{#if data.environment_data}}
|
||||
{{#each adata.environment_data}}
|
||||
<ui-section label='{{name}}'>
|
||||
<span class='{{danger_level == 2 ? "bad" : danger_level == 1 ? "average" : "good"}}'>
|
||||
{{Math.fixed(value, 2)}}{{unit}}
|
||||
</span>
|
||||
</ui-section>
|
||||
{{/each}}
|
||||
<ui-section label='Local Status'>
|
||||
<span class='{{data.danger_level == 2 ? "bad bold" : data.danger_level == 1 ? "average bold" : "good"}}'>
|
||||
{{data.danger_level == 2 ? "Danger (Internals Required)" : data.danger_level == 1 ? "Caution" : "Optimal"}}
|
||||
</span>
|
||||
</ui-section>
|
||||
<ui-section label='Area Status'>
|
||||
<span class='{{data.atmos_alarm || data.fire_alarm ? "bad bold" : "good"}}'>
|
||||
{{data.atmos_alarm ? "Atmosphere Alarm" : fire_alarm ? "Fire Alarm" : "Nominal"}}
|
||||
</span>
|
||||
</ui-section>
|
||||
{{else}}
|
||||
<ui-section label='Warning'>
|
||||
<span class='bad bold'>Cannot obtain air sample for analysis.</span>
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
{{#if data.emagged}}
|
||||
<ui-section label='Warning'>
|
||||
<span class='bad bold'>Safety measures offline. Device may exhibit abnormal behavior.</span>
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
@@ -0,0 +1,31 @@
|
||||
<link rel='ractive' href='./back.ract'>
|
||||
|
||||
<ui-display title='Alarm Thresholds' button>
|
||||
{{#partial button}}
|
||||
<back/>
|
||||
{{/partial}}
|
||||
<table>
|
||||
<thead><tr>
|
||||
<th></th>
|
||||
<th><span class="bad">min2</span></th>
|
||||
<th><span class="average">min1</span></th>
|
||||
<th><span class="average">max1</span></th>
|
||||
<th><span class="bad">max2</span></th>
|
||||
</tr></thead>
|
||||
<tbody>
|
||||
{{#each data.thresholds}}<tr>
|
||||
<th>{{{name}}}</th>
|
||||
{{#each settings}}<td>
|
||||
<ui-button action='threshold' params='{"env": "{{env}}", "var": "{{val}}"}'>{{Math.fixed(selected, 2)}}</ui-button>
|
||||
</td>{{/each}}
|
||||
</tr>{{/each}}
|
||||
</tbody>
|
||||
<table>
|
||||
</ui-display>
|
||||
|
||||
<style>
|
||||
th, td {
|
||||
padding-right: 16px;
|
||||
text-align: left;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,32 @@
|
||||
<link rel='ractive' href='./back.ract'>
|
||||
|
||||
<ui-display title='Vent Controls' button>
|
||||
{{#partial button}}
|
||||
<back/>
|
||||
{{/partial}}
|
||||
{{#each data.vents}}
|
||||
<ui-subdisplay title='{{long_name}}'>
|
||||
<ui-section label='Power'>
|
||||
<ui-button icon='{{power ? "power-off" : "close"}}' style='{{power ? "selected" : null}}'
|
||||
action='power' params='{"id_tag": "{{id_tag}}", "val": {{+!power}}}'>{{power ? "On" : "Off"}}</ui-button>
|
||||
</ui-section>
|
||||
<ui-section label='Mode'>
|
||||
<span>{{direction == "release" ? "Pressurizing" : "Siphoning"}}</span>
|
||||
</ui-section>
|
||||
<ui-section label='Pressure Regulator'>
|
||||
<ui-button icon='sign-in' style='{{incheck ? "selected" : null}}'
|
||||
action='incheck' params='{"id_tag": "{{id_tag}}", "val": {{checks}}}'>Internal</ui-button>
|
||||
<ui-button icon='sign-out' style='{{excheck ? "selected" : null}}'
|
||||
action='excheck' params='{"id_tag": "{{id_tag}}", "val": {{checks}}}'>External</ui-button>
|
||||
</ui-section>
|
||||
<ui-section label='Target Pressure'>
|
||||
<ui-button icon='pencil' action='set_external_pressure'
|
||||
params='{"id_tag": "{{id_tag}}"}'>{{Math.fixed(external)}}</ui-button>
|
||||
<ui-button icon='refresh' state='{{extdefault ? "disabled" : null}}' action='reset_external_pressure'
|
||||
params='{"id_tag": "{{id_tag}}"}'>Reset</ui-button>
|
||||
</ui-section>
|
||||
</ui-subdisplay>
|
||||
{{else}}
|
||||
<span class='bad'>Error: No vents connected.</span>
|
||||
{{/each}}
|
||||
</ui-display>
|
||||
@@ -0,0 +1,39 @@
|
||||
<ui-display>
|
||||
<ui-section>
|
||||
<ui-button icon='{{data.oneAccess ? "unlock" : "lock"}}' action='one_access'>{{data.oneAccess ? "One" : "All"}} Required</ui-button>
|
||||
<ui-button icon='refresh' action='clear'>Clear</ui-button>
|
||||
</ui-section>
|
||||
<hr/>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>{{#each data.regions}}
|
||||
<th><span class='highlight bold'>{{name}}</span></th>
|
||||
{{/each}}</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>{{#each data.regions}}
|
||||
<td>{{#each accesses}}
|
||||
<ui-button icon='{{req ? "check-square-o" : "square-o"}}' style='{{req ? "selected" : null}}'
|
||||
action='set' params='{"access": "{{id}}"}'>{{name}}</ui-button>
|
||||
<br/>
|
||||
{{/each}}</td>
|
||||
{{/each}}</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</ui-display>
|
||||
|
||||
<style>
|
||||
table {
|
||||
width: 100%;
|
||||
border-spacing: 2px;
|
||||
}
|
||||
th {
|
||||
text-align: left;
|
||||
}
|
||||
td {
|
||||
vertical-align: top;
|
||||
}
|
||||
td .button {
|
||||
margin-top: 4px
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,125 @@
|
||||
<script>
|
||||
component.exports = {
|
||||
data: {
|
||||
powerState (status) {
|
||||
switch (status) {
|
||||
case 2: return 'good'
|
||||
case 1: return 'average'
|
||||
default: return 'bad'
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
malfAction () {
|
||||
switch (this.get('data.malfStatus')) {
|
||||
case 1: return 'hack'
|
||||
case 2: return 'occupy'
|
||||
case 3: return 'deoccupy'
|
||||
}
|
||||
},
|
||||
malfButton () {
|
||||
switch (this.get('data.malfStatus')) {
|
||||
case 1: return 'Override Programming'
|
||||
case 2:
|
||||
case 4: return 'Shunt Core Process'
|
||||
case 3: return 'Return to Main Core'
|
||||
}
|
||||
},
|
||||
malfIcon () {
|
||||
switch (this.get('data.malfStatus')) {
|
||||
case 1: return 'terminal'
|
||||
case 2:
|
||||
case 4: return 'caret-square-o-down'
|
||||
case 3: return 'caret-square-o-left'
|
||||
}
|
||||
},
|
||||
powerCellStatusState () {
|
||||
const status = this.get('data.powerCellStatus')
|
||||
if (status > 50) return 'good'
|
||||
else if (status > 25) return 'average'
|
||||
else return 'bad'
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<ui-notice>
|
||||
{{#if data.siliconUser}}
|
||||
<ui-section label='Interface Lock'>
|
||||
<ui-button icon='{{data.locked ? "lock" : "unlock"}}' action='lock'>{{data.locked ? "Engaged" : "Disengaged"}}</ui-button>
|
||||
</ui-section>
|
||||
{{else}}
|
||||
<span>Swipe an ID card to {{data.locked ? "unlock" : "lock"}} this interface.</span>
|
||||
{{/if}}
|
||||
</ui-notice>
|
||||
<ui-display title='Power Status'>
|
||||
<ui-section label='Main Breaker'>
|
||||
{{#if data.locked && !data.siliconUser}}
|
||||
<span class='{{data.isOperating ? "good" : "bad"}}'>{{data.isOperating ? "On" : "Off"}}</span>
|
||||
{{else}}
|
||||
<ui-button icon='{{data.isOperating ? "power-off" : "close"}}' style='{{data.isOperating ? "selected" : null}}'
|
||||
action='breaker'>{{data.isOperating ? "On" : "Off"}}</ui-button>
|
||||
{{/if}}
|
||||
</ui-section>
|
||||
<ui-section label='External Power'>
|
||||
<span class='{{powerState(data.externalPower)}}'>{{data.externalPower == 2 ? "Good" : data.externalPower == 1 ? "Low" : "None"}}</span>
|
||||
</ui-section>
|
||||
<ui-section label='Power Cell'>
|
||||
{{#if data.powerCellStatus != null}}
|
||||
<ui-bar min='0' max='100' value='{{data.powerCellStatus}}' state='{{powerCellStatusState}}'>{{Math.fixed(adata.powerCellStatus)}}%</ui-bar>
|
||||
{{else}}
|
||||
<span class='bad'>Removed</span>
|
||||
{{/if}}
|
||||
</ui-section>
|
||||
{{#if data.powerCellStatus != null}}
|
||||
<ui-section label='Charge Mode'>
|
||||
{{#if data.locked && !data.siliconUser}}
|
||||
<span class='{{data.chargeMode ? "good" : "bad"}}'>{{data.chargeMode ? "Auto" : "Off"}}</span>
|
||||
{{else}}
|
||||
<ui-button icon='{{data.chargeMode ? "refresh" : "close"}}' style='{{data.chargeMode ? "selected" : null}}'
|
||||
action='charge'>{{data.chargeMode ? "Auto" : "Off"}}</ui-button>
|
||||
{{/if}}
|
||||
|
||||
[<span class='{{powerState(data.chargingStatus)}}'>{{data.chargingStatus == 2 ? "Fully Charged" : data.chargingStatus == 1 ? "Charging" : "Not Charging"}}</span>]
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
<ui-display title='Power Channels'>
|
||||
{{#each data.powerChannels}}
|
||||
<ui-section label='{{title}}' nowrap>
|
||||
<div class='content'>{{Math.round(adata.powerChannels[@index].powerLoad)}} W</div>
|
||||
<div class='content'><span class='{{status >= 2 ? "good" : "bad"}}'>{{status >= 2 ? "On" : "Off"}}</span></div>
|
||||
<div class='content'>[<span>{{status == 1 || status == 3 ? "Auto" : "Manual"}}</span>]</div>
|
||||
<div class='content' style='float:right'>
|
||||
{{#if !data.locked || data.siliconUser}}
|
||||
<ui-button icon='refresh' state='{{status == 1 || status == 3 ? "selected" : null}}'
|
||||
action='channel' params='{{topicParams.auto}}'>Auto</ui-button>
|
||||
<ui-button icon='power-off' state='{{status == 2 ? "selected" : null}}' action='channel'
|
||||
params='{{topicParams.on}}'>On</ui-button>
|
||||
<ui-button icon='close' state='{{status == 0 ? "selected" : null}}' action='channel'
|
||||
params='{{topicParams.off}}'>Off</ui-button>
|
||||
{{/if}}
|
||||
</div>
|
||||
</ui-section>
|
||||
{{/each}}
|
||||
<ui-section label='Total Load'>
|
||||
<span class='bold'>{{Math.round(adata.totalLoad)}} W</span>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
{{#if data.siliconUser}}
|
||||
<ui-display title='System Overrides'>
|
||||
<ui-button icon='lightbulb-o' action='overload'>Overload</ui-button>
|
||||
{{#if data.malfStatus}}
|
||||
<ui-button icon='{{malfIcon}}' state='{{data.malfStatus == 4 ? "disabled" : null}}' action='{{malfAction}}'>{{malfButton}}</ui-button>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
{{/if}}
|
||||
<ui-notice>
|
||||
<ui-section label='Cover Lock'>
|
||||
{{#if data.locked && !data.siliconUser}}
|
||||
<span>{{data.coverLocked ? "Engaged" : "Disengaged"}}</span>
|
||||
{{else}}
|
||||
<ui-button icon='{{data.coverLocked ? "lock" : "unlock"}}' action='cover'>{{data.coverLocked ? "Engaged" : "Disengaged"}}</ui-button>
|
||||
{{/if}}
|
||||
</ui-section>
|
||||
</ui-notice>
|
||||
@@ -0,0 +1,14 @@
|
||||
<ui-display title='Alarms'>
|
||||
<ul>
|
||||
{{#each data.priority}}
|
||||
<li><ui-button icon='close' style='danger' action='clear' params='{"zone": "{{.}}"}'>{{.}}</ui-button></li>
|
||||
{{else}}
|
||||
<li><span class='good'>No Priority Alerts</span></li>
|
||||
{{/each}}
|
||||
{{#each data.minor}}
|
||||
<li><ui-button icon='close' style='caution' action='clear' params='{"zone": "{{.}}"}'>{{.}}</ui-button></li>
|
||||
{{else}}
|
||||
<li><span class='good'>No Minor Alerts</span></li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</ui-display>
|
||||
@@ -0,0 +1,40 @@
|
||||
<ui-display title='{{data.tank ? data.sensors[0].long_name : null}}'>
|
||||
{{#each adata.sensors}}
|
||||
<ui-subdisplay title='{{!data.tank ? long_name : null}}'>
|
||||
<ui-section label='Pressure'>
|
||||
<span>{{Math.fixed(pressure, 2)}} kPa</span>
|
||||
</ui-section>
|
||||
{{#if temperature}}
|
||||
<ui-section label='Temperature'>
|
||||
<span>{{Math.fixed(temperature, 2)}} K</span>
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
{{#each gases:id}}
|
||||
<ui-section label='{{id}}'>
|
||||
<span>{{Math.fixed(., 2)}}%</span>
|
||||
</ui-section>
|
||||
{{/each}}
|
||||
</ui-subdisplay>
|
||||
{{/each}}
|
||||
</ui-display>
|
||||
{{#if data.tank}}
|
||||
<ui-display title='Controls' button>
|
||||
{{#partial button}}
|
||||
<ui-button icon='refresh' action='reconnect'>Reconnect</ui-button>
|
||||
{{/partial}}
|
||||
<ui-section label='Input Injector'>
|
||||
<ui-button icon='{{data.inputting ? "power-off" : "close"}}' style='{{data.inputting ? "selected" : null}}' action='input'>
|
||||
{{data.inputting ? "Injecting": "Off"}}</ui-button>
|
||||
</ui-section>
|
||||
<ui-section label='Input Rate'>
|
||||
<span>{{Math.fixed(adata.inputRate)}} L/s</span>
|
||||
</ui-section>
|
||||
<ui-section label='Output Regulator'>
|
||||
<ui-button icon='{{data.outputting ? "power-off" : "close"}}' style='{{data.outputting ? "selected" : null}}' action='output'>
|
||||
{{data.outputting ? "Open": "Closed"}}</ui-button>
|
||||
</ui-section>
|
||||
<ui-section label='Output Pressure'>
|
||||
<ui-button icon='pencil' action='pressure'>{{Math.round(adata.outputPressure)}} kPa</ui-button>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
{{/if}}
|
||||
@@ -0,0 +1,27 @@
|
||||
<ui-display>
|
||||
<ui-section label='Power'>
|
||||
<ui-button icon='{{data.on ? "power-off" : "close"}}' style='{{data.on ? "selected" : null}}'
|
||||
action='power'>{{data.on ? "On" : "Off"}}</ui-button>
|
||||
</ui-section>
|
||||
<ui-section label='Output Pressure'>
|
||||
<ui-button icon='pencil' action='pressure' params='{"pressure": "input"}'>Set</ui-button>
|
||||
<ui-button icon='plus' state='{{data.pressure == data.max_pressure ? "disabled" : null}}' action='pressure' params='{"pressure": "max"}'>Max</ui-button>
|
||||
<span>{{Math.round(adata.pressure)}} kPa</span>
|
||||
</ui-section>
|
||||
<ui-section label='Filter'>
|
||||
<ui-button state='{{data.filter_type == "" ? "selected" : null}}'
|
||||
action='filter' params='{"mode": ""}'>Nothing</ui-button>
|
||||
<ui-button state='{{data.filter_type == "plasma" ? "selected" : null}}'
|
||||
action='filter' params='{"mode": "plasma"}'>Plasma</ui-button>
|
||||
<ui-button state='{{data.filter_type == "o2" ? "selected" : null}}'
|
||||
action='filter' params='{"mode": "o2"}'>O2</ui-button>
|
||||
<ui-button state='{{data.filter_type == "n2" ? "selected" : null}}'
|
||||
action='filter' params='{"mode": "n2"}'>N2</ui-button>
|
||||
<ui-button state='{{data.filter_type == "co2" ? "selected" : null}}'
|
||||
action='filter' params='{"mode": "co2"}'>CO2</ui-button>
|
||||
<ui-button state='{{data.filter_type == "n2o" ? "selected" : null}}'
|
||||
action='filter' params='{"mode": "n2o"}'>N2O</ui-button>
|
||||
<ui-button state='{{data.filter_type == "bz" ? "selected" : null}}'
|
||||
action='filter' params='{"mode": "bz"}'>BZ</ui-button>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
@@ -0,0 +1,33 @@
|
||||
<ui-display>
|
||||
<ui-section label='Power'>
|
||||
<ui-button icon='{{data.on ? "power-off" : "close"}}' style='{{data.on ? "selected" : null}}'
|
||||
action='power'>{{data.on ? "On" : "Off"}}</ui-button>
|
||||
</ui-section>
|
||||
<ui-section label='Output Pressure'>
|
||||
<ui-button icon='pencil' action='pressure' params='{"pressure": "input"}'>Set</ui-button>
|
||||
<ui-button icon='plus' state='{{data.set_pressure == data.max_pressure ? "disabled" : null}}' action='pressure' params='{"pressure": "max"}'>Max</ui-button>
|
||||
<span>{{Math.round(adata.set_pressure)}} kPa</span>
|
||||
</ui-section>
|
||||
<ui-section label='Node 1'>
|
||||
<ui-button icon='fast-backward' state='{{data.node1_concentration == 0 ? "disabled" : null}}'
|
||||
action='node1' params='{"concentration": -0.1}'/>
|
||||
<ui-button icon='backward' state='{{data.node1_concentration == 0 ? "disabled" : null}}'
|
||||
action='node1' params='{"concentration": -0.01}'/>
|
||||
<ui-button icon='forward' state='{{data.node1_concentration == 100 ? "disabled" : null}}'
|
||||
action='node1' params='{"concentration": 0.01}'/>
|
||||
<ui-button icon='fast-forward' state='{{data.node1_concentration == 100 ? "disabled" : null}}'
|
||||
action='node1' params='{"concentration": 0.1}'/>
|
||||
<span>{{Math.round(adata.node1_concentration)}}%</span>
|
||||
</ui-section>
|
||||
<ui-section label='Node 2'>
|
||||
<ui-button icon='fast-backward' state='{{data.node2_concentration == 0 ? "disabled" : null}}'
|
||||
action='node2' params='{"concentration": -0.1}'/>
|
||||
<ui-button icon='backward' state='{{data.node2_concentration == 0 ? "disabled" : null}}'
|
||||
action='node2' params='{"concentration": -0.01}'/>
|
||||
<ui-button icon='forward' state='{{data.node2_concentration == 100 ? "disabled" : null}}'
|
||||
action='node2' params='{"concentration": 0.01}'/>
|
||||
<ui-button icon='fast-forward' state='{{data.node2_concentration == 100 ? "disabled" : null}}'
|
||||
action='node2' params='{"concentration": 0.1}'/>
|
||||
<span>{{Math.round(adata.node2_concentration)}}%</span>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
@@ -0,0 +1,19 @@
|
||||
<ui-display>
|
||||
<ui-section label='Power'>
|
||||
<ui-button icon='{{data.on ? "power-off" : "close"}}' style='{{data.on ? "selected" : null}}'
|
||||
action='power'>{{data.on ? "On" : "Off"}}</ui-button>
|
||||
</ui-section>
|
||||
{{#if data.max_rate}}
|
||||
<ui-section label='Transfer Rate'>
|
||||
<ui-button icon='pencil' action='rate' params='{"rate": "input"}'>Set</ui-button>
|
||||
<ui-button icon='plus' state='{{data.rate == data.max_rate ? "disabled" : null}}' action='transfer' params='{"rate": "max"}'>Max</ui-button>
|
||||
<span>{{Math.round(adata.rate)}} L/s</span>
|
||||
</ui-section>
|
||||
{{else}}
|
||||
<ui-section label='Output Pressure'>
|
||||
<ui-button icon='pencil' action='pressure' params='{"pressure": "input"}'>Set</ui-button>
|
||||
<ui-button icon='plus' state='{{data.pressure == data.max_pressure ? "disabled" : null}}' action='pressure' params='{"pressure": "max"}'>Max</ui-button>
|
||||
<span>{{Math.round(adata.pressure)}} kPa</span>
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
@@ -0,0 +1,18 @@
|
||||
<ui-display title='Cell Timer' button>
|
||||
{{#partial button}}
|
||||
<ui-button icon='clock-o' style='{{data.timing ? "selected" : null}}' action='{{data.timing ? "stop" : "start"}}'>{{data.timing ? "Stop" : "Start"}}</ui-button>
|
||||
<ui-button icon='lightbulb-o' action='flash' style='{{data.flash_charging ? "disabled" : null}}'>{{data.flash_charging ? "Recharging" : "Flash"}}</ui-button>
|
||||
{{/partial}}
|
||||
<ui-section>
|
||||
<ui-button icon='fast-backward' action='time' params='{"adjust": -600}'></ui-button>
|
||||
<ui-button icon='backward' action='time' params='{"adjust": -100}'></ui-button>
|
||||
<span>{{text.zeroPad(data.minutes, 2)}}:{{text.zeroPad(data.seconds, 2)}}</span>
|
||||
<ui-button icon='forward' action='time' params='{"adjust": 100}'></ui-button>
|
||||
<ui-button icon='fast-forward' action='time' params='{"adjust": 600}'></ui-button>
|
||||
</ui-section>
|
||||
<ui-section>
|
||||
<ui-button icon='hourglass-start' action='preset' params='{"preset": "short"}'>Short</ui-button>
|
||||
<ui-button icon='hourglass-start' action='preset' params='{"preset": "medium"}'>Medium</ui-button>
|
||||
<ui-button icon='hourglass-start' action='preset' params='{"preset": "long"}'>Long</ui-button>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
@@ -0,0 +1,53 @@
|
||||
<ui-notice>
|
||||
<span>The regulator {{data.hasHoldingTank ? "is" : "is not"}} connected to a tank.</span>
|
||||
</ui-notice>
|
||||
<ui-display title='Canister' button>
|
||||
{{#partial button}}
|
||||
<ui-button icon='pencil' action='relabel'>Relabel</ui-button>
|
||||
{{/partial}}
|
||||
<ui-section label='Pressure'>
|
||||
<span>{{Math.round(adata.tankPressure)}} kPa</span>
|
||||
</ui-section>
|
||||
<ui-section label='Port'>
|
||||
<span class='{{data.portConnected ? "good" : "average"}}'>{{data.portConnected ? "Connected" : "Not Connected"}}</span>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
<ui-display title='Valve'>
|
||||
<ui-section label='Release Pressure'>
|
||||
<ui-bar min='{{data.minReleasePressure}}' max='{{data.maxReleasePressure}}'
|
||||
value='{{data.releasePressure}}'>{{Math.round(adata.releasePressure)}} kPa</ui-bar>
|
||||
</ui-section>
|
||||
<ui-section label='Pressure Regulator'>
|
||||
<ui-button icon='refresh' state='{{data.releasePressure != data.defaultReleasePressure ? null : "disabled"}}'
|
||||
action='pressure' params='{"pressure": "reset"}'>Reset</ui-button>
|
||||
<ui-button icon='minus' state='{{data.releasePressure > data.minReleasePressure ? null : "disabled"}}'
|
||||
action='pressure' params='{"pressure": "min"}'>Min</ui-button>
|
||||
<ui-button icon='pencil' action='pressure' params='{"pressure": "input"}'>Set</ui-button>
|
||||
<ui-button icon='plus' state='{{data.releasePressure < data.maxReleasePressure ? null : "disabled"}}'
|
||||
action='pressure' params='{"pressure": "max"}'>Max</ui-button>
|
||||
</ui-section>
|
||||
<ui-section label='Valve'>
|
||||
<ui-button icon='{{data.valveOpen ? "unlock" : "lock"}}'
|
||||
style='{{data.valveOpen ? data.hasHoldingTank ? "caution" : "danger" : null}}'
|
||||
action='valve'>{{data.valveOpen ? "Open" : "Closed"}}</ui-button>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
<ui-display title='Holding Tank' button>
|
||||
{{#partial button}}
|
||||
{{#if data.hasHoldingTank}}
|
||||
<ui-button icon='eject' style='{{data.valveOpen ? "danger" : null}}' action='eject'>Eject</ui-button>
|
||||
{{/if}}
|
||||
{{/partial}}
|
||||
{{#if data.hasHoldingTank}}
|
||||
<ui-section label='Label'>
|
||||
{{data.holdingTank.name}}
|
||||
</ui-section>
|
||||
<ui-section label='Pressure'>
|
||||
{{Math.round(adata.holdingTank.tankPressure)}} kPa
|
||||
</ui-section>
|
||||
{{else}}
|
||||
<ui-section>
|
||||
<span class='average'>No Holding Tank</span>
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
@@ -0,0 +1,88 @@
|
||||
<script>
|
||||
component.exports = {
|
||||
computed: {
|
||||
tabs () {
|
||||
return Object.keys(this.get('data.supplies'))
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<ui-display title='Cargo'>
|
||||
<ui-section label='Shuttle'>
|
||||
{{#if data.docked && !data.requestonly}}
|
||||
<ui-button action='send'>{{data.location}}</ui-button>
|
||||
{{else}}
|
||||
<span>{{data.location}}</span>
|
||||
{{/if}}
|
||||
</ui-section>
|
||||
<ui-section label='Credits'>
|
||||
<span>{{Math.floor(adata.points)}}</span>
|
||||
</ui-section>
|
||||
<ui-section label='Centcom Message'>
|
||||
<span>{{data.message}}</span>
|
||||
</ui-section>
|
||||
{{#if data.loan && !data.requestonly}}
|
||||
<ui-section label='Loan'>
|
||||
{{#if !data.loan_dispatched}}
|
||||
<ui-button action='loan'>Loan Shuttle</ui-button>
|
||||
{{else}}
|
||||
<span class='bad'>Loaned to Centcom</span>
|
||||
{{/if}}
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
{{#if !data.requestonly}}
|
||||
<ui-display title='Cart' button>
|
||||
{{#partial button}}
|
||||
<ui-button icon='close' state='{{data.cart.length ? null : "disabled"}}' action='clear'>Clear</ui-button>
|
||||
{{/partial}}
|
||||
{{#each data.cart}}
|
||||
<ui-section candystripe nowrap>
|
||||
<div class='content'>#{{id}}</div>
|
||||
<div class='content'>{{object}}</div>
|
||||
<div class='content'>{{cost}} Credits</div>
|
||||
<div class='content'>
|
||||
<ui-button icon='minus' action='remove' params='{"id": "{{id}}"}'/>
|
||||
</div>
|
||||
</ui-section>
|
||||
{{else}}
|
||||
<span>Nothing in Cart</span>
|
||||
{{/each}}
|
||||
</ui-display>
|
||||
{{/if}}
|
||||
<ui-display title='Requests' button>
|
||||
{{#partial button}}
|
||||
{{#if !data.requestonly}}
|
||||
<ui-button icon='close' state='{{data.requests.length ? null : "disabled"}}' action='denyall'>Clear</ui-button>
|
||||
{{/if}}
|
||||
{{/partial}}
|
||||
{{#each data.requests}}
|
||||
<ui-section candystripe nowrap>
|
||||
<div class='content'>#{{id}}</div>
|
||||
<div class='content'>{{object}}</div>
|
||||
<div class='content'>{{cost}} Credits</div>
|
||||
<div class='content'>By {{orderer}}</div>
|
||||
<div class='content'>Comment: {{reason}}</div>
|
||||
{{#if !data.requestonly}}
|
||||
<div class='content'>
|
||||
<ui-button icon='check' action='approve' params='{"id": "{{id}}"}'/>
|
||||
<ui-button icon='close' action='deny' params='{"id": "{{id}}"}'/>
|
||||
</div>
|
||||
{{/if}}
|
||||
</ui-section>
|
||||
{{else}}
|
||||
<span>No Requests</span>
|
||||
{{/each}}
|
||||
</ui-display>
|
||||
<ui-tabs tabs='{{tabs}}'>
|
||||
{{#each data.supplies}}
|
||||
<tab name='{{name}}'>
|
||||
{{#each packs}}
|
||||
<ui-section label='{{name}}' candystripe right>
|
||||
<ui-button action='add' params='{"id": "{{id}}"}'>{{cost}} Credits</ui-button>
|
||||
</ui-section>
|
||||
{{/each}}
|
||||
</tab>
|
||||
{{/each}}
|
||||
</ui-tabs>
|
||||
@@ -0,0 +1,30 @@
|
||||
<ui-display title="Cellular Emporium" button>
|
||||
<ui-button icon='refresh' state='{{data.can_readapt ? null : "disabled"}}'
|
||||
action='readapt'>Readapt</ui-button>
|
||||
<ui-section label='Genetic Points Remaining' right>
|
||||
{{data.genetic_points_remaining}}
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
<ui-display>
|
||||
{{#each data.abilities}}
|
||||
<ui-section label='{{name}}' candystripe right>
|
||||
<span>{{desc}}</span>
|
||||
<span>{{helptext}}</span>
|
||||
<span>Cost: {{dna_cost}}</span>
|
||||
|
||||
{{#if required_absorbtions}}
|
||||
<span>Required Absorbtions: {{required_absorbtions}}
|
||||
{{/if}}
|
||||
|
||||
<ui-button
|
||||
state='{{owned ? "selected" : can_purchase ? null : "disabled"}}'
|
||||
action='evolve'
|
||||
params='{"name": "{{name}}"}'>
|
||||
{{owned ? "Evolved" : "Evolve"}}
|
||||
</ui-button>
|
||||
</ui-section>
|
||||
{{/each}}
|
||||
{{^data.abilities}}
|
||||
<span class='warning'>No abilities availible.</span>
|
||||
{{/data.abilities}}
|
||||
</ui-display>
|
||||
@@ -0,0 +1,38 @@
|
||||
<ui-display title='Status'>
|
||||
<ui-section label='Energy'>
|
||||
<ui-bar min='0' max='{{data.maxEnergy}}' value='{{data.energy}}'>{{Math.fixed(adata.energy)}} Units</ui-bar>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
<ui-display title='Dispense' button>
|
||||
{{#partial button}}
|
||||
{{#each data.beakerTransferAmounts}}
|
||||
<ui-button icon='plus' state='{{data.amount == . ? "selected" : null}}' action='amount' params='{"target": {{.}}}'>{{.}}</ui-button>
|
||||
{{/each}}
|
||||
{{/partial}}
|
||||
<ui-section>
|
||||
{{#each data.chemicals}}
|
||||
<ui-button grid icon='tint' action='dispense' params='{"reagent": "{{id}}"}'>{{title}}</ui-button>
|
||||
{{/each}}
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
<ui-display title='Beaker' button>
|
||||
{{#partial button}}
|
||||
{{#each data.beakerTransferAmounts}}
|
||||
<ui-button icon='minus' action='remove' params='{"amount": {{.}}}'>{{.}}</ui-button>
|
||||
{{/each}}
|
||||
<ui-button icon='eject' state='{{data.isBeakerLoaded ? null : "disabled"}}' action='eject'>Eject</ui-button>
|
||||
{{/partial}}
|
||||
<ui-section label='Contents'>
|
||||
{{#if data.isBeakerLoaded}}
|
||||
<span>{{Math.round(adata.beakerCurrentVolume)}}/{{data.beakerMaxVolume}} Units</span>
|
||||
<br/>
|
||||
{{#each adata.beakerContents}}
|
||||
<span class='highlight' intro-outro='fade'>{{Math.fixed(volume, 2)}} units of {{name}}</span><br/>
|
||||
{{else}}
|
||||
<span class='bad'>Beaker Empty</span>
|
||||
{{/each}}
|
||||
{{else}}
|
||||
<span class='average'>No Beaker</span>
|
||||
{{/if}}
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
@@ -0,0 +1,29 @@
|
||||
<ui-display title='Thermostat'>
|
||||
<ui-section label='Power'>
|
||||
<ui-button icon='{{data.isActive ? "power-off" : "close"}}'
|
||||
style='{{data.isActive ? "selected" : null}}'
|
||||
state='{{data.isBeakerLoaded ? null : "disabled"}}'
|
||||
action='power'>{{data.isActive ? "On" : "Off"}}</ui-button>
|
||||
</ui-section>
|
||||
<ui-section label='Target'>
|
||||
<ui-button icon='pencil' action='temperature' params='{"target": "input"}'>{{Math.round(adata.targetTemp)}} K</ui-button>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
<ui-display title='Beaker' button>
|
||||
{{#partial button}}
|
||||
<ui-button icon='eject' state='{{data.isBeakerLoaded ? null : "disabled"}}' action='eject'>Eject</ui-button>
|
||||
{{/partial}}
|
||||
<ui-section label='Contents'>
|
||||
{{#if data.isBeakerLoaded}}
|
||||
<span>Temperature: {{Math.round(adata.currentTemp)}} K</span>
|
||||
<br />
|
||||
{{#each adata.beakerContents}}
|
||||
<span class='highlight' intro-outro='fade'>{{Math.fixed(volume, 2)}} units of {{name}}</span><br/>
|
||||
{{else}}
|
||||
<span class='bad'>Beaker Empty</span>
|
||||
{{/each}}
|
||||
{{else}}
|
||||
<span class='average'>No Beaker</span>
|
||||
{{/if}}
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
@@ -0,0 +1,107 @@
|
||||
{{#if data.screen == "home"}}
|
||||
<ui-display title='Beaker' button>
|
||||
<ui-button icon='{{data.isBeakerLoaded ? "Eject" : "close"}}'
|
||||
style='{{data.isBeakerLoaded ? "selected" : null}}'
|
||||
state='{{data.isBeakerLoaded ? null : "disabled"}}'
|
||||
action='eject'
|
||||
>{{data.isBeakerLoaded ? "Eject and Clear Buffer" : "No beaker"}}
|
||||
</ui-button>
|
||||
|
||||
<ui-section>
|
||||
{{#if data.isBeakerLoaded}}
|
||||
{{#each data.beakerContents}}
|
||||
<ui-section label='{{Math.fixed(volume, 2)}} units of {{name}}' nowrap>
|
||||
<div class='content' style='float:right'>
|
||||
<ui-button action='transferToBuffer' params='{"id": "{{id}}", "amount": 1}'>1</ui-button>
|
||||
<ui-button action='transferToBuffer' params='{"id": "{{id}}", "amount": 5}'>5</ui-button>
|
||||
<ui-button action='transferToBuffer' params='{"id": "{{id}}", "amount": 10}'>10</ui-button>
|
||||
<ui-button action='transferToBuffer' params='{"id": "{{id}}", "amount": 1000}'>All</ui-button>
|
||||
<ui-button action='transferToBuffer' params='{"id": "{{id}}", "amount": -1}'>Custom</ui-button>
|
||||
<ui-button action='analyze' params='{"id": "{{id}}"}'>Analyze</ui-button>
|
||||
</div>
|
||||
</ui-section>
|
||||
{{else}}
|
||||
<span class='bad'>Beaker Empty</span>
|
||||
{{/each}}
|
||||
{{else}}
|
||||
<span class='average'>No Beaker</span>
|
||||
{{/if}}
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
|
||||
<ui-display title='Buffer'>
|
||||
<ui-button action='toggleMode' state='{{data.mode ? null : "selected"}}'>Destroy</ui-button>
|
||||
<ui-button action='toggleMode' state='{{data.mode ? "selected" : null}}'>Transfer to Beaker</ui-button>
|
||||
<ui-section>
|
||||
{{#each data.bufferContents}}
|
||||
<ui-section label='{{Math.fixed(volume, 2)}} units of {{name}}' nowrap>
|
||||
<div class='content' style='float:right'>
|
||||
<ui-button action='transferFromBuffer' params='{"id": "{{id}}", "amount": 1}'>1</ui-button>
|
||||
<ui-button action='transferFromBuffer' params='{"id": "{{id}}", "amount": 5}'>5</ui-button>
|
||||
<ui-button action='transferFromBuffer' params='{"id": "{{id}}", "amount": 10}'>10</ui-button>
|
||||
<ui-button action='transferFromBuffer' params='{"id": "{{id}}", "amount": 1000}'>All</ui-button>
|
||||
<ui-button action='transferFromBuffer' params='{"id": "{{id}}", "amount": -1}'>Custom</ui-button>
|
||||
<ui-button action='analyze' params='{"id": "{{id}}"}'>Analyze</ui-button>
|
||||
</div>
|
||||
</ui-section>
|
||||
{{/each}}
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
|
||||
{{#if !data.condi}}
|
||||
<ui-display title='Pills, Bottles and Patches' >
|
||||
{{#if data.isPillBottleLoaded}}
|
||||
<ui-button action='ejectp' state='{{data.isPillBottleLoaded ? null : "disabled"}}'>{{data.isPillBottleLoaded ? "Eject" : "No Pill bottle loaded"}}</ui-button>
|
||||
<span class='content'>{{data.pillBotContent}}/{{data.pillBotMaxContent}}</span>
|
||||
{{else}}
|
||||
<span class='average'>No Pillbottle</span>
|
||||
{{/if}}
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
<ui-button action='createPill' params='{"many": 0}' state='{{data.bufferContents ? null : "disabled"}}' >Create Pill (max 50µ)</ui-button>
|
||||
<br/>
|
||||
<ui-button action='createPill' params='{"many": 1}' state='{{data.bufferContents ? null : "disabled"}}' >Create Multiple Pills</ui-button>
|
||||
<br/>
|
||||
<br/>
|
||||
<ui-button action='createPatch' params='{"many": 0}' state='{{data.bufferContents ? null : "disabled"}}' >Create Patch (max 50µ)</ui-button>
|
||||
<br/>
|
||||
<ui-button action='createPatch' params='{"many": 1}' state='{{data.bufferContents ? null : "disabled"}}' >Create Multiple Patches</ui-button>
|
||||
<br/>
|
||||
<br/>
|
||||
<ui-button action='createBottle' state='{{data.bufferContents ? null : "disabled"}}' >Create Bottle (max 30µ)</ui-button>
|
||||
</ui-display>
|
||||
|
||||
{{else}}
|
||||
<ui-display title='Condiments bottles and packs' >
|
||||
<ui-button action='createPill' params='{"many": 0}' state='{{data.bufferContents ? null : "disabled"}}' >Create Pack (max 10µ)</ui-button>
|
||||
<br/>
|
||||
<br/>
|
||||
<ui-button action='createBottle' state='{{data.bufferContents ? null : "disabled"}}' >Create Bottle (max 50µ)</ui-button>
|
||||
</ui-display>
|
||||
{{/if}}
|
||||
{{elseif data.screen == "analyze"}}
|
||||
<ui-display title={{data.analyzeVars.name}} >
|
||||
<span class='highlight'>Description: </span>
|
||||
<span class='content' style='float:center'>{{data.analyzeVars.description}}</span>
|
||||
<br/>
|
||||
<span class='highlight'>Color: </span>
|
||||
<span style='color: {{data.analyzeVars.color}}; background-color: {{data.analyzeVars.color}}'>{{data.analyzeVars.color}}</span>
|
||||
<br/>
|
||||
<span class='highlight'>State: </span>
|
||||
<span class='content'>{{data.analyzeVars.state}}</span>
|
||||
<br/>
|
||||
<span class='highlight'>Metabolization Rate: </span>
|
||||
<span class='content'>{{data.analyzeVars.metaRate}}µ/minute</span>
|
||||
<br/>
|
||||
<span class='highlight'>Overdose Threshold: </span>
|
||||
<span class='content'>{{data.analyzeVars.overD}}</span>
|
||||
<br/>
|
||||
<span class='highlight'>Addiction Threshold: </span>
|
||||
<span class='content'>{{data.analyzeVars.addicD}}</span>
|
||||
<br/>
|
||||
<br/>
|
||||
<ui-button action='goScreen' params='{"screen": "home"}'>Back</ui-button>
|
||||
</ui-display>
|
||||
{{/if}}
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
{{#if data.has_cap}}
|
||||
<ui-display>
|
||||
<ui-section label='Cap'>
|
||||
<ui-button icon='{{data.is_capped ? "power-off" : "close"}}' style='{{data.is_capped ? null : "selected"}}'
|
||||
action='toggle_cap'>
|
||||
{{data.is_capped ? "On": "Off"}}</ui-button>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
{{/if}}
|
||||
<ui-display>
|
||||
{{!<ui-section label='Current Colour'>{{{current_colour}</span>
|
||||
</ui-section>}}
|
||||
{{#if data.can_change_colour}}
|
||||
<ui-section>
|
||||
<ui-button action='select_colour'>Select New Colour</ui-button>
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
<ui-display title='Stencil'>
|
||||
{{#each data.drawables}}
|
||||
<ui-section label='{{name}}'>
|
||||
{{#each items}}
|
||||
<ui-button action='select_stencil' params='{"item":"{{item}}"}'
|
||||
style='{{item == data.selected_stencil ? "selected" : null}}'>
|
||||
{{item}}
|
||||
</ui-button>
|
||||
{{/each}}
|
||||
</ui-section>
|
||||
{{/each}}
|
||||
</ui-display>
|
||||
<ui-display title="Text Mode">
|
||||
<ui-section label='Current Buffer'>{{text_buffer}}
|
||||
</ui-section>
|
||||
<ui-section><ui-button action='enter_text'>New Text</ui-button></ui-section>
|
||||
</ui-display>
|
||||
@@ -0,0 +1,74 @@
|
||||
<script>
|
||||
component.exports = {
|
||||
data: {
|
||||
temperatureStatus (temp) {
|
||||
if (temp < 225) return 'good'
|
||||
else if (temp < 273.15) return 'average'
|
||||
else return 'bad'
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
occupantStatState () {
|
||||
switch (this.get('data.occupant.stat')) {
|
||||
case 0: return 'good'
|
||||
case 1: return 'average'
|
||||
default: return 'bad'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<ui-display title='Occupant'>
|
||||
<ui-section label='Occupant'>
|
||||
<span>{{data.occupant.name ? data.occupant.name : "No Occupant"}}</span>
|
||||
</ui-section>
|
||||
{{#if data.hasOccupant}}
|
||||
<ui-section label='State'>
|
||||
<span class='{{occupantStatState}}'>{{data.occupant.stat == 0 ? "Conscious" : data.occupant.stat == 1 ? "Unconcious" : "Dead"}}</span>
|
||||
</ui-section>
|
||||
<ui-section label='Temperature'>
|
||||
<span class='{{temperatureStatus(adata.occupant.bodyTemperature)}}'>{{Math.round(adata.occupant.bodyTemperature)}} K</span>
|
||||
</ui-section>
|
||||
<ui-section label='Health'>
|
||||
<ui-bar min='{{data.occupant.minHealth}}' max='{{data.occupant.maxHealth}}' value='{{data.occupant.health}}'
|
||||
state='{{data.occupant.health >= 0 ? "good" : "average"}}'>{{Math.round(adata.occupant.health)}}</ui-bar>
|
||||
</ui-section>
|
||||
{{#each [{label: "Brute", type: "bruteLoss"}, {label: "Respiratory", type: "oxyLoss"}, {label: "Toxin", type: "toxLoss"}, {label: "Burn", type: "fireLoss"}]}}
|
||||
<ui-section label='{{label}}'>
|
||||
<ui-bar min='0' max='{{data.occupant.maxHealth}}' value='{{data.occupant[type]}}' state='bad'>{{Math.round(adata.occupant[type])}}</ui-bar>
|
||||
</ui-section>
|
||||
{{/each}}
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
<ui-display title='Cell'>
|
||||
<ui-section label='Power'>
|
||||
<ui-button icon='{{data.isOperating ? "power-off" : "close"}}'
|
||||
style='{{data.isOperating ? "selected" : null}}'
|
||||
state='{{data.isOpen ? "disabled" : null}}'
|
||||
action='power'>{{data.isOperating ? "On" : "Off"}}</ui-button>
|
||||
</ui-section>
|
||||
<ui-section label='Temperature'>
|
||||
<span class='{{temperatureStatus(adata.cellTemperature)}}'>{{Math.round(adata.cellTemperature)}} K</span>
|
||||
</ui-section>
|
||||
<ui-section label='Door'>
|
||||
<ui-button icon='{{data.isOpen ? "unlock" : "lock"}}' action='door'>{{data.isOpen ? "Open" : "Closed"}}</ui-button>
|
||||
<ui-button icon='{{data.autoEject ? "sign-out" : "sign-in"}}' action='autoeject'>{{data.autoEject ? "Auto" : "Manual"}}</ui-button>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
<ui-display title='Beaker' button>
|
||||
{{#partial button}}
|
||||
<ui-button icon='eject' state='{{data.isBeakerLoaded ? null : "disabled"}}' action='ejectbeaker'>Eject</ui-button>
|
||||
{{/partial}}
|
||||
<ui-section label='Contents'>
|
||||
{{#if data.isBeakerLoaded}}
|
||||
{{#each adata.beakerContents}}
|
||||
<span class='highlight' intro-outro='fade'>{{Math.fixed(volume, 2)}} units of {{name}}</span><br/>
|
||||
{{else}}
|
||||
<span class='bad'>Beaker Empty</span>
|
||||
{{/each}}
|
||||
{{else}}
|
||||
<span class='average'>No Beaker</span>
|
||||
{{/if}}
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
@@ -0,0 +1,30 @@
|
||||
<ui-notice>
|
||||
<span>Time Until Launch: {{data.timer_str}}</span>
|
||||
</ui-notice>
|
||||
<ui-notice>
|
||||
<span>Engines: {{data.engines_started ? 'Online' : 'Idle'}}</span>
|
||||
</ui-notice>
|
||||
<ui-display title='Early Launch'>
|
||||
<span>Authorizations Remaining:
|
||||
{{data.emagged ? "ERROR" : data.authorizations_remaining}}</span>
|
||||
<ui-button icon="exclamation-triangle" action='authorize'
|
||||
style='danger'
|
||||
state='{{data.enabled ? null : 'disabled'}}'>
|
||||
AUTHORIZE
|
||||
</ui-button>
|
||||
<ui-button icon="minus" action='repeal'
|
||||
state='{{data.enabled ? null : 'disabled'}}'>
|
||||
Repeal
|
||||
</ui-button>
|
||||
<ui-button icon="close" action='abort'
|
||||
state='{{data.enabled ? null : 'disabled'}}'>
|
||||
Repeal All
|
||||
</ui-button>
|
||||
</ui-display>
|
||||
<ui-display title='Authorizations'>
|
||||
{{#each data.authorizations}}
|
||||
<ui-section candystripe nowrap>{{name}} ({{job}})</ui-section>
|
||||
{{else}}
|
||||
<ui-section candystripe nowrap>No authorizations.</ui-section>
|
||||
{{/each}}
|
||||
</ui-display>
|
||||
@@ -0,0 +1,3 @@
|
||||
<ui-notice>
|
||||
<span>The requested interface ({{config.interface}}) was not found. Does it exist?</span>
|
||||
</ui-notice>
|
||||
@@ -0,0 +1,29 @@
|
||||
<script>
|
||||
component.exports = {
|
||||
computed: {
|
||||
seclevelState () {
|
||||
switch (this.get('data.seclevel')) {
|
||||
case 'blue': return 'average'
|
||||
case 'red': return 'bad'
|
||||
case 'delta': return 'bad bold'
|
||||
default: return 'good'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<ui-display>
|
||||
<ui-section label='Alert Level'>
|
||||
<span class='{{seclevelState}}'>{{text.titleCase(data.seclevel)}}</span>
|
||||
</ui-section>
|
||||
<ui-section label='Controls'>
|
||||
<ui-button icon='{{data.alarm ? "close" : "bell-o"}}' action='{{data.alarm ? "reset" : "alarm"}}'>
|
||||
{{data.alarm ? "Reset" : "Activate"}}</ui-button>
|
||||
</ui-section>
|
||||
{{#if data.emagged}}
|
||||
<ui-section label='Warning'>
|
||||
<span class='bad bold'>Safety measures offline. Device may exhibit abnormal behavior.</span>
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
@@ -0,0 +1,49 @@
|
||||
<ui-display title='Labor Camp Teleporter'>
|
||||
<ui-section label='Teleporter Status'>
|
||||
<span class='{{data.teleporter ? "good" : "bad"}}'>{{data.teleporter ? "Connected" : "Not connected"}}</span>
|
||||
</ui-section>
|
||||
{{#if data.teleporter}}
|
||||
<ui-section label='Location'>
|
||||
<span>{{data.teleporter_location}}</span>
|
||||
</ui-section>
|
||||
<ui-section label='Locked status'>
|
||||
<ui-button icon='{{data.teleporter_lock ? "lock" : "unlock"}}' action="teleporter_lock">{{data.teleporter_lock ? "Locked" : "Unlocked"}}</ui-button>
|
||||
<ui-button action='toggle_open'>{{data.teleporter_state_open ? "Open" : "Closed"}}</ui-button>
|
||||
</ui-section>
|
||||
{{else}}
|
||||
<span><ui-button action="scan_teleporter">Scan Teleporter</ui-button></span>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
<ui-display title='Labor Camp Beacon'>
|
||||
<ui-section label='Beacon Status'>
|
||||
<span class='{{data.beacon ? "good" : "bad"}}'>{{data.beacon ? "Connected" : "Not connected"}}</span>
|
||||
</ui-section>
|
||||
{{#if data.beacon}}
|
||||
<ui-section label='Location'>
|
||||
<span>{{data.beacon_location}}</span>
|
||||
</ui-section>
|
||||
{{else}}
|
||||
<span><ui-button action="scan_beacon">Scan Beacon</ui-button></span>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
<ui-display title='Prisoner details'>
|
||||
<ui-section label='Prisoner ID'>
|
||||
<ui-button action="handle_id">{{data.id ? data.id_name : "-------------"}}</ui-button>
|
||||
</ui-section>
|
||||
{{#if data.id}}
|
||||
<ui-section label='Set ID goal'>
|
||||
<ui-button action="set_goal">{{data.goal}}</ui-button>
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
<ui-section label='Occupant'>
|
||||
<span>{{data.prisoner.name ? data.prisoner.name : "No Occupant"}}</span>
|
||||
</ui-section>
|
||||
{{#if data.prisoner}}
|
||||
<ui-section label='Criminal Status'>
|
||||
<span>{{data.prisoner.crimstat}}</span>
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
<ui-display>
|
||||
<center><ui-button action="teleport" state={{data.can_teleport ? null : 'disabled'}}>Process Prisoner</ui-button></center>
|
||||
</ui-display>
|
||||
@@ -0,0 +1,10 @@
|
||||
<ui-display>
|
||||
<center><ui-button action="handle_id">{{data.id ? data.id.name : "-------------"}}</ui-button></center>
|
||||
</ui-display>
|
||||
<ui-display title='Stored Items'>
|
||||
{{#each data.mobs}}
|
||||
<ui-section label='{{name}}'>
|
||||
<ui-button action="release_items" params='{"mobref":{{mob}}}' state={{data.can_reclaim ? null : 'disabled'}}>Drop Items</ui-button>
|
||||
</ui-section>
|
||||
{{/each}}
|
||||
</ui-display>
|
||||
@@ -0,0 +1,42 @@
|
||||
<script>
|
||||
component.exports = {
|
||||
computed: {
|
||||
healthState () {
|
||||
const health = this.get('data.health')
|
||||
if (health > 70) return 'good'
|
||||
else if (health > 50) return 'average'
|
||||
else return 'bad'
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
{{#if data.wiping}}
|
||||
<ui-notice>
|
||||
<span>Wipe in progress!</span>
|
||||
</ui-notice>
|
||||
{{/if}}
|
||||
<ui-display title={{data.name || "Empty Card"}} button>
|
||||
{{#partial button}}
|
||||
{{#if data.name}}
|
||||
<ui-button icon='trash' state='{{data.wiping || data.isDead ? "disabled" : null}}' action='wipe'>Wipe AI</ui-button>
|
||||
{{/if}}
|
||||
{{/partial}}
|
||||
{{#if data.name}}
|
||||
<ui-section label='Status'>
|
||||
<span class='{{data.isDead || data.isBraindead ? "bad" : "good"}}'>{{data.isDead || data.isBraindead ? "Offline" : "Operational"}}</span>
|
||||
</ui-section>
|
||||
<ui-section label='Software Integrity'>
|
||||
<ui-bar min='0' max='100' value='{{data.health}}' state='{{healthState}}'>{{Math.round(adata.health)}}%</ui-bar>
|
||||
</ui-section>
|
||||
<ui-section label='Laws'>
|
||||
{{#each data.laws}}
|
||||
<span class='highlight'>{{.}}</span><br/>
|
||||
{{/each}}
|
||||
</ui-section>
|
||||
<ui-section label='Settings'>
|
||||
<ui-button icon='signal' style='{{data.wireless ? "selected" : null}}' action="wireless">Wireless Activity</ui-button>
|
||||
<ui-button icon='microphone' style='{{data.radio ? "selected" : null}}' action="radio">Subspace Radio</ui-button>
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
@@ -0,0 +1,16 @@
|
||||
{{#if data.waiting}}
|
||||
<ui-notice>
|
||||
<span>Waiting for another device to confirm your request...</span>
|
||||
</ui-notice>
|
||||
{{else}}
|
||||
<ui-display>
|
||||
<ui-section>
|
||||
{{#if data.auth_required}}
|
||||
<ui-button icon='check' action='auth_swipe'>Authorize {{data.auth_required}}</ui-button>
|
||||
{{else}}
|
||||
<ui-button icon='warning' state='{{data.red_alert ? 'disabled' : null}}' action='red_alert'>Red Alert</ui-button>
|
||||
<ui-button icon='wrench' state='{{data.emergency_maint ? 'disabled' : null}}' action='emergency_maint'>Emergency Maintenance Access</ui-button>
|
||||
{{/if}}
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
{{/if}}
|
||||
@@ -0,0 +1,29 @@
|
||||
<ui-display title='Ore values'>
|
||||
{{#each data.ores}}
|
||||
<ui-section label='{{ore}}'>
|
||||
<span>{{value}}</span>
|
||||
</ui-section>
|
||||
{{/each}}
|
||||
</ui-display>
|
||||
<ui-display title='Points'>
|
||||
<ui-section label='ID'>
|
||||
<ui-button action="handle_id">{{data.id ? data.id_name : "-------------"}}</ui-button>
|
||||
</ui-section>
|
||||
{{#if data.id}}
|
||||
<ui-section label='Points collected'>
|
||||
<span>{{data.points}}</span>
|
||||
</ui-section>
|
||||
<ui-section label='Goal'>
|
||||
<span>{{data.goal}}</span>
|
||||
</ui-section>
|
||||
<ui-section label='Unclaimed points'>
|
||||
<span>{{data.unclaimed_points}}</span>
|
||||
<ui-button action="claim_points" state={{data.unclaimed_points ? null : 'disabled'}}>Claim points</ui-button>
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
<ui-display>
|
||||
<center>
|
||||
<ui-button action="move_shuttle" state={{data.can_go_home ? null : 'disabled'}}>Move shuttle</ui-button>
|
||||
</center>
|
||||
</ui-display>
|
||||
@@ -0,0 +1,44 @@
|
||||
<script>
|
||||
component.exports = {
|
||||
data: {
|
||||
mechChargeState(charge) {
|
||||
let maxcharge = this.get('data.recharge_port.mech.cell.maxcharge')
|
||||
if(charge >= (maxcharge/1.5)) return 'good'
|
||||
else if(charge >= (maxcharge/3)) return 'average'
|
||||
else return 'bad'
|
||||
},
|
||||
mechHealthState(health) {
|
||||
let maxhealth = this.get('data.recharge_port.mech.maxhealth')
|
||||
if(health > (maxhealth/1.5)) return 'good'
|
||||
else if(health > (maxhealth/3)) return 'average'
|
||||
else return 'bad'
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<ui-display title='Mech Status'>
|
||||
{{#if data.recharge_port}}
|
||||
{{#if data.recharge_port.mech}}
|
||||
<ui-section label='Integrity'>
|
||||
<ui-bar min='0' max='{{adata.recharge_port.mech.maxhealth}}' value='{{adata.recharge_port.mech.health}}'state='{{mechHealthState(adata.recharge_port.mech.health)}}'>{{Math.round(adata.recharge_port.mech.health)}}/{{adata.recharge_port.mech.maxhealth}}</ui-bar>
|
||||
</ui-section>
|
||||
{{#if data.recharge_port.mech.cell}}
|
||||
{{#if data.recharge_port.mech.cell.critfail}}
|
||||
<ui-section label='Power'><span class='bad'>Cell Critical Failure</span></ui-section>
|
||||
{{else}}
|
||||
<ui-section label='Power'>
|
||||
<ui-bar min='0' max='{{adata.recharge_port.mech.cell.maxcharge}}' value='{{adata.recharge_port.mech.cell.charge}}'state='{{mechChargeState(adata.recharge_port.mech.cell.charge)}}'>{{Math.round(adata.recharge_port.mech.cell.charge)}}/{{Math.round(adata.recharge_port.mech.cell.maxcharge)}}</ui-bar>
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
{{else}}
|
||||
<ui-section label='Power'><span class='bad'>Cell Missing</span></ui-section>
|
||||
{{/if}}
|
||||
{{else}}
|
||||
<ui-section>Mech Not Found</ui-section>
|
||||
{{/if}}
|
||||
{{else}}
|
||||
<ui-section>Recharging Port Not Found</ui-section>
|
||||
<ui-button icon='refresh' action='reconnect'>Reconnect</ui-button>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
@@ -0,0 +1,60 @@
|
||||
<ui-notice>
|
||||
{{#if data.siliconUser}}
|
||||
<ui-section label='Interface Lock'>
|
||||
<ui-button icon='{{data.locked ? "lock" : "unlock"}}' action='lock'>{{data.locked ? "Engaged" : "Disengaged"}}</ui-button>
|
||||
</ui-section>
|
||||
{{else}}
|
||||
<span>Swipe an ID card to {{data.locked ? "unlock" : "lock"}} this interface.</span>
|
||||
{{/if}}
|
||||
</ui-notice>
|
||||
<ui-display title='Status'>
|
||||
<ui-section label='Power'>
|
||||
{{#if !data.locked || data.siliconUser }}
|
||||
<ui-button icon='{{data.on ? "power-off" : "close"}}' style='{{data.on ? "selected" : null}}' action="power">{{data.on ? "On" : "Off"}}</ui-button>
|
||||
{{else}}
|
||||
<span class='{{data.on ? "good" : "bad"}}' state='{{data.cell ? null : "disabled"}}'>{{data.on ? "On" : "Off"}}</span>
|
||||
{{/if}}
|
||||
</ui-section>
|
||||
<ui-section label='Cell'>
|
||||
<span class='{{data.cell ? null : "bad"}}'>{{data.cell ? data.cellPercent + "%" : "No Cell"}}</span>
|
||||
</ui-section>
|
||||
<ui-section label='Mode'>
|
||||
<span class='{{data.modeStatus}}'>{{data.mode}}</span>
|
||||
</ui-section>
|
||||
<ui-section label='Load'>
|
||||
<span class='{{data.load ? "good" : "average"}}'>{{data.load ? data.load : "None"}}</span>
|
||||
</ui-section>
|
||||
<ui-section label='Destination'>
|
||||
<span class='{{data.destination ? "good": "average"}}'>{{data.destination ? data.destination : "None"}}</span>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
{{#if !data.locked || data.siliconUser}}
|
||||
<ui-display title='Controls' button>
|
||||
{{#partial button}}
|
||||
{{#if data.load}}
|
||||
<ui-button icon='eject' action='unload'>Unload</ui-button>
|
||||
{{/if}}
|
||||
{{#if data.haspai}}
|
||||
<ui-button icon='eject' action='ejectpai'>Eject PAI</ui-button>
|
||||
{{/if}}
|
||||
<ui-button icon='pencil' action='setid'>Set ID</ui-button>
|
||||
{{/partial}}
|
||||
<ui-section label='Destination'>
|
||||
<ui-button icon='pencil' action='destination'>Set Destination</ui-button>
|
||||
<ui-button icon='stop' action='stop'>Stop</ui-button>
|
||||
<ui-button icon='play' action='go'>Go</ui-button>
|
||||
</ui-section>
|
||||
<ui-section label='Home'>
|
||||
<ui-button icon='home' action='home'>Go Home</ui-button>
|
||||
<ui-button icon='pencil' action='sethome'>Set Home</ui-button>
|
||||
</ui-section>
|
||||
<ui-section label='Settings'>
|
||||
<ui-button icon='{{data.autoReturn ? "check-square-o" : "square-o"}}' style='{{data.autoReturn ? "selected" : null}}' action='autoret'>
|
||||
Auto-Return Home</ui-button>
|
||||
<ui-button icon='{{data.autoPickup ? "check-square-o" : "square-o"}}' style='{{data.autoPickup ? "selected" : null}}' action='autopick'>
|
||||
Auto-Pickup Crate</ui-button>
|
||||
<ui-button icon='{{data.reportDelivery ? "check-square-o" : "square-o"}}' style='{{data.reportDelivery ? "selected" : null}}' action='report'>
|
||||
Report Deliveries</ui-button>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
{{/if}}
|
||||
@@ -0,0 +1,88 @@
|
||||
<script>
|
||||
import { filterMulti } from 'util/filter'
|
||||
component.exports = {
|
||||
data: {
|
||||
filter: ''
|
||||
},
|
||||
oninit () {
|
||||
this.observe('filter', (newkey, oldkey, keypath) => {
|
||||
const categories = this.findAll('.display:not(:first-child)')
|
||||
filterMulti(categories, this.get('filter').toLowerCase())
|
||||
}, { init: false })
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<ui-display title='{{data.category}}'>
|
||||
{{#if data.busy}}
|
||||
<ui-section>
|
||||
Crafting... <i class='fa-spin fa fa-spinner'></i>
|
||||
</ui-section>
|
||||
{{else}}
|
||||
<ui-section>
|
||||
<ui-button icon='arrow-left' action ='backwardCat'>
|
||||
{{data.prev_cat}}
|
||||
</ui-button>
|
||||
<ui-button icon='arrow-right' action='forwardCat'>
|
||||
{{data.next_cat}}
|
||||
</ui-button>
|
||||
{{#if data.display_craftable_only}}
|
||||
<ui-button icon='lock' action='toggle_recipes'>
|
||||
Showing Craftable Recipes
|
||||
</ui-button>
|
||||
{{else}}
|
||||
<ui-button icon='unlock' action='toggle_recipes'>
|
||||
Showing All Recipes
|
||||
</ui-button>
|
||||
{{/if}}
|
||||
{{#if config.fancy}}
|
||||
<ui-input value='{{filter}}' placeholder='Filter..'/>
|
||||
{{/if}}
|
||||
</ui-section>
|
||||
{{#each data.can_craft}}
|
||||
<ui-display title='{{name}}'>
|
||||
{{#if req_text}}
|
||||
<ui-section label='Requirements'>
|
||||
{{req_text}}
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
{{#if catalyst_text}}
|
||||
<ui-section label='Catalysts'>
|
||||
{{catalyst_text}}
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
{{#if tool_text}}
|
||||
<ui-section label='Tools'>
|
||||
{{tool_text}}
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
<ui-section>
|
||||
<ui-button icon='gears' action='make' params='{"recipe": "{{ref}}"}'>
|
||||
Craft
|
||||
</ui-button>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
{{/each}}
|
||||
{{^data.display_craftable_only}}
|
||||
{{#each data.cant_craft}}
|
||||
<ui-display title='{{name}}'>
|
||||
{{#if req_text}}
|
||||
<ui-section label='Requirements'>
|
||||
{{req_text}}
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
{{#if catalyst_text}}
|
||||
<ui-section label='Catalysts'>
|
||||
{{catalyst_text}}
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
{{#if tool_text}}
|
||||
<ui-section label='Tools'>
|
||||
{{tool_text}}
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
{{/each}}
|
||||
{{/data.display_craftable_only}}
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
@@ -0,0 +1,54 @@
|
||||
<ui-notice>
|
||||
<span>The regulator {{data.holding ? "is" : "is not"}} connected to a tank.</span>
|
||||
</ui-notice>
|
||||
<ui-display title='Status' button>
|
||||
<ui-section label='Pressure'>
|
||||
<span>{{Math.round(adata.pressure)}} kPa</span>
|
||||
</ui-section>
|
||||
<ui-section label='Port'>
|
||||
<span class='{{data.connected ? "good" : "average"}}'>{{data.connected ? "Connected" : "Not Connected"}}</span>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
<ui-display title='Pump'>
|
||||
<ui-section label='Power'>
|
||||
<ui-button icon='{{data.on ? "power-off" : "close"}}'
|
||||
style='{{data.on ? "selected" : "null"}}'
|
||||
action='power'>{{data.on ? "On" : "Off"}}</ui-button>
|
||||
</ui-section>
|
||||
<ui-section label='Direction'>
|
||||
<ui-button icon='{{data.direction == "out" ? "sign-out" : "sign-in"}}'
|
||||
action='direction'>{{data.direction == "out" ? "Out" : "In"}}</ui-button>
|
||||
</ui-section>
|
||||
<ui-section label='Target Pressure'>
|
||||
<ui-bar min='{{data.min_pressure}}' max='{{data.max_pressure}}'
|
||||
value='{{data.target_pressure}}'>{{Math.round(adata.target_pressure)}} kPa</ui-bar>
|
||||
</ui-section>
|
||||
<ui-section label='Pressure Regulator'>
|
||||
<ui-button icon='refresh' state='{{data.target_pressure != data.default_pressure ? null : "disabled"}}'
|
||||
action='pressure' params='{"pressure": "reset"}'>Reset</ui-button>
|
||||
<ui-button icon='minus' state='{{data.target_pressure > data.min_pressure ? null : "disabled"}}'
|
||||
action='pressure' params='{"pressure": "min"}'>Min</ui-button>
|
||||
<ui-button icon='pencil' action='pressure' params='{"pressure": "input"}'>Set</ui-button>
|
||||
<ui-button icon='plus' state='{{data.target_pressure < data.max_pressure ? null : "disabled"}}'
|
||||
action='pressure' params='{"pressure": "max"}'>Max</ui-button>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
<ui-display title='Holding Tank' button>
|
||||
{{#partial button}}
|
||||
{{#if data.holding}}
|
||||
<ui-button icon='eject' style='{{data.on ? "danger" : null}}' action='eject'>Eject</ui-button>
|
||||
{{/if}}
|
||||
{{/partial}}
|
||||
{{#if data.holding}}
|
||||
<ui-section label='Label'>
|
||||
{{data.holding.name}}
|
||||
</ui-section>
|
||||
<ui-section label='Pressure'>
|
||||
{{Math.round(adata.holding.pressure)}} kPa
|
||||
</ui-section>
|
||||
{{else}}
|
||||
<ui-section>
|
||||
<span class='average'>No Holding Tank</span>
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
@@ -0,0 +1,37 @@
|
||||
<ui-notice>
|
||||
<span>The regulator {{data.holding ? "is" : "is not"}} connected to a tank.</span>
|
||||
</ui-notice>
|
||||
<ui-display title='Status' button>
|
||||
<ui-section label='Pressure'>
|
||||
<span>{{Math.round(adata.pressure)}} kPa</span>
|
||||
</ui-section>
|
||||
<ui-section label='Port'>
|
||||
<span class='{{data.connected ? "good" : "average"}}'>{{data.connected ? "Connected" : "Not Connected"}}</span>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
<ui-display title='Filter'>
|
||||
<ui-section label='Power'>
|
||||
<ui-button icon='{{data.on ? "power-off" : "close"}}'
|
||||
style='{{data.on ? "selected" : "null"}}'
|
||||
action='power'>{{data.on ? "On" : "Off"}}</ui-button>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
<ui-display title='Holding Tank' button>
|
||||
{{#partial button}}
|
||||
{{#if data.holding}}
|
||||
<ui-button icon='eject' style='{{data.on ? "danger" : null}}' action='eject'>Eject</ui-button>
|
||||
{{/if}}
|
||||
{{/partial}}
|
||||
{{#if data.holding}}
|
||||
<ui-section label='Label'>
|
||||
{{data.holding.name}}
|
||||
</ui-section>
|
||||
<ui-section label='Pressure'>
|
||||
{{Math.round(adata.holding.pressure)}} kPa
|
||||
</ui-section>
|
||||
{{else}}
|
||||
<ui-section>
|
||||
<span class='average'>No Holding Tank</span>
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
@@ -0,0 +1,77 @@
|
||||
<script>
|
||||
component.exports = {
|
||||
data: {
|
||||
chargingState (status) {
|
||||
switch (status) {
|
||||
case 2: return 'good'
|
||||
case 1: return 'average'
|
||||
default: return 'bad'
|
||||
}
|
||||
},
|
||||
chargingMode (status) {
|
||||
if (status == 2) return 'Full'
|
||||
else if (status == 1) return 'Charging'
|
||||
else return 'Draining'
|
||||
},
|
||||
channelState (status) {
|
||||
if (status >= 2) return 'good'
|
||||
else return 'bad'
|
||||
},
|
||||
channelPower (status) {
|
||||
if (status >= 2) return 'On'
|
||||
else return 'Off'
|
||||
},
|
||||
channelMode (status) {
|
||||
if (status == 1 || status == 3) return 'Auto'
|
||||
else return 'Manual'
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
graphData () {
|
||||
const history = this.get('data.history')
|
||||
return Object.keys(history).map(key => {
|
||||
return history[key].map((point, index) => {
|
||||
return { x: index, y: point }
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<ui-display title='Network'>
|
||||
{{#if config.fancy}}
|
||||
<ui-linegraph points='{{graphData}}' height='500'
|
||||
legend='["Available", "Load"]' colors='["rgb(0, 102, 0)", "rgb(153, 0, 0)"]'
|
||||
xunit='seconds ago' xfactor='{{data.interval}}' yunit='W' yfactor='1'
|
||||
xinc='{{data.stored / 10}}' yinc='9'/>
|
||||
{{else}}
|
||||
<ui-section label='Available'>
|
||||
<span>{{data.supply}} W</span>
|
||||
</ui-section>
|
||||
<ui-section label='Load'>
|
||||
<span>{{data.demand}} W</span>
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
<ui-display title='Areas'>
|
||||
<ui-section nowrap>
|
||||
<div class='content'>Area</div>
|
||||
<div class='content'>Charge</div>
|
||||
<div class='content'>Load</div>
|
||||
<div class='content'>Status</div>
|
||||
<div class='content'>Equipment</div>
|
||||
<div class='content'>Lighting</div>
|
||||
<div class='content'>Environment</div>
|
||||
</ui-section>
|
||||
{{#each data.areas}}
|
||||
<ui-section label='{{name}}' nowrap>
|
||||
<div class='content'>{{Math.round(adata.areas[@index].charge)}} %</div>
|
||||
<div class='content'>{{Math.round(adata.areas[@index].load)}} W</div>
|
||||
<div class='content'><span class='{{chargingState(charging)}}'>{{chargingMode(charging)}}</span></div>
|
||||
<div class='content'><span class='{{channelState(eqp)}}'>{{channelPower(eqp)}} [<span>{{channelMode(eqp)}}</span>]</span></div>
|
||||
<div class='content'><span class='{{channelState(lgt)}}'>{{channelPower(lgt)}} [<span>{{channelMode(lgt)}}</span>]</span></div>
|
||||
<div class='content'><span class='{{channelState(env)}}'>{{channelPower(env)}} [<span>{{channelMode(env)}}</span>]</span></div>
|
||||
</ui-section>
|
||||
{{/each}}
|
||||
</ui-display>
|
||||
@@ -0,0 +1,66 @@
|
||||
<script>
|
||||
component.exports = {
|
||||
computed: {
|
||||
readableFrequency () {
|
||||
return Math.round(this.get('adata.frequency')) / 10
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<ui-display title='Settings'>
|
||||
{{#if data.headset}}
|
||||
<ui-section label='Power'>
|
||||
<ui-button icon='{{data.listening ? "power-off" : "close"}}' style='{{data.listening ? "selected" : null}}'
|
||||
action='listen'>
|
||||
{{data.listening ? "On": "Off"}}</ui-button>
|
||||
</ui-section>
|
||||
{{else}}
|
||||
<ui-section label='Microphone'>
|
||||
<ui-button icon='{{data.broadcasting ? "power-off" : "close"}}' style='{{data.broadcasting ? "selected" : null}}'
|
||||
action='broadcast'>
|
||||
{{data.broadcasting ? "Engaged": "Disengaged"}}</ui-button>
|
||||
</ui-section>
|
||||
<ui-section label='Speaker'>
|
||||
<ui-button icon='{{data.listening ? "power-off" : "close"}}' style='{{data.listening ? "selected" : null}}'
|
||||
action='listen'>
|
||||
{{data.listening ? "Engaged": "Disengaged"}}</ui-button>
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
{{#if data.command}}
|
||||
<ui-section label='High Volume'>
|
||||
<ui-button icon='{{data.useCommand ? "power-off" : "close"}}' style='{{data.useCommand ? "selected" : null}}'
|
||||
action='command'>
|
||||
{{data.useCommand ? "On": "Off"}}</ui-button>
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
<ui-display title='Channel'>
|
||||
<ui-section label='Frequency'>
|
||||
{{#if data.freqlock}}
|
||||
<span>{{readableFrequency}}</span>
|
||||
{{else}}
|
||||
<ui-button icon='fast-backward' state='{{data.frequency == data.minFrequency ? "disabled": null}}' action='frequency' params='{"adjust": -1}'/>
|
||||
<ui-button icon='backward' state='{{data.frequency == data.minFrequency ? "disabled": null}}' action='frequency' params='{"adjust": -.2}'/>
|
||||
<ui-button icon='pencil' action='frequency' params='{"tune": "input"}'>{{readableFrequency}}</ui-button>
|
||||
<ui-button icon='forward' state='{{data.frequency == data.maxFrequency ? "disabled": null}}' action='frequency' params='{"adjust": .2}'/>
|
||||
<ui-button icon='fast-forward' state='{{data.frequency == data.maxFrequency ? "disabled": null}}' action='frequency' params='{"adjust": 1}'/>
|
||||
{{/if}}
|
||||
</ui-section>
|
||||
{{#if data.subspaceSwitchable}}
|
||||
<ui-section label='Subspace Transmission'>
|
||||
<ui-button icon='{{data.subspace ? "power-off" : "close"}}' style='{{data.subspace ? "selected" : null}}'
|
||||
action='subspace'>{{data.subspace ? "Active" : "Inactive"}}</ui-button>
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
{{#if data.subspace && data.channels}}
|
||||
<ui-section label='Channels'>
|
||||
{{#each data.channels:channel}}
|
||||
<ui-button icon='{{. ? "check-square-o" : "square-o"}}'
|
||||
style='{{. ? "selected" : null}}'
|
||||
action='channel' params='{"channel": "{{channel}}"}'>
|
||||
{{channel}}</ui-button><br/>
|
||||
{{/each}}
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
@@ -0,0 +1,20 @@
|
||||
<link rel='ractive' href='./shuttle_manipulator/status.ract'>
|
||||
<link rel='ractive' href='./shuttle_manipulator/templates.ract'>
|
||||
<link rel='ractive' href='./shuttle_manipulator/modification.ract'>
|
||||
|
||||
<ui-tabs tabs='{{data.tabs}}'>
|
||||
<tab name='Status'>
|
||||
<status/>
|
||||
</tab>
|
||||
<tab name='Templates'>
|
||||
<templates/>
|
||||
</tab>
|
||||
<tab name='Modification'>
|
||||
{{#if data.selected}}
|
||||
<modification/>
|
||||
{{/if}}
|
||||
{{#if !data.selected}}
|
||||
<span class='bad'>No shuttle selected.</span>
|
||||
{{/if}}
|
||||
</tab>
|
||||
</ui-tabs>
|
||||
@@ -0,0 +1,38 @@
|
||||
<ui-display title='Selected: {{data.selected.name}}'>
|
||||
{{#if data.selected.description}}
|
||||
<ui-section label='Description'>{{data.selected.description}}</ui-section>
|
||||
{{/if}}
|
||||
{{#if data.selected.admin_notes}}
|
||||
<ui-section label='Admin Notes'>{{data.selected.admin_notes}}</ui-section>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
|
||||
{{#if data.existing_shuttle}}
|
||||
<ui-display title='Existing Shuttle: {{data.existing_shuttle.name}}'>
|
||||
Status: {{data.existing_shuttle.status}}
|
||||
{{#if data.existing_shuttle.timer}}
|
||||
({{data.existing_shuttle.timeleft}})
|
||||
{{/if}}
|
||||
<ui-button action='jump_to'
|
||||
params='{"type": "mobile", "id": "{{data.existing_shuttle.id}}"}'>
|
||||
Jump To
|
||||
</ui-button>
|
||||
</ui-display>
|
||||
{{/if}}
|
||||
|
||||
{{#if !data.existing_shuttle}}
|
||||
<ui-display title='Existing Shuttle: None'></ui-display>
|
||||
{{/if}}
|
||||
|
||||
<ui-button action='preview'
|
||||
params='{"shuttle_id": "{{data.selected.shuttle_id}}"}'>
|
||||
Preview
|
||||
</ui-button>
|
||||
<ui-button action='load'
|
||||
params='{"shuttle_id": "{{data.selected.shuttle_id}}"}'
|
||||
style='danger'>
|
||||
Load
|
||||
</ui-button>
|
||||
|
||||
<ui-display title='Status'>
|
||||
</ui-display>
|
||||
@@ -0,0 +1,14 @@
|
||||
{{#each data.shuttles}}
|
||||
<ui-section label='{{name}} ({{id}})'>
|
||||
{{status}}
|
||||
{{#if timer}}
|
||||
({{timeleft}})
|
||||
{{/if}}
|
||||
<ui-button action='jump_to' params='{"type": "mobile", "id": "{{id}}"}'>
|
||||
Jump To
|
||||
</ui-button>
|
||||
<ui-button action='fast_travel' params='{"id": "{{id}}"}' state='{{can_fast_travel ? null : 'disabled'}}'>
|
||||
Fast Travel
|
||||
</ui-button>
|
||||
</ui-section>
|
||||
{{/each}}
|
||||
@@ -0,0 +1,24 @@
|
||||
<ui-tabs tabs='{{data.templates_tabs}}'>
|
||||
{{#each data.templates}}
|
||||
<tab name='{{port_id}}'>
|
||||
{{#each templates}}
|
||||
<ui-display title='{{name}}'>
|
||||
{{#if description}}
|
||||
<ui-section label='Description'>{{description}}</ui-section>
|
||||
{{/if}}
|
||||
{{#if admin_notes}}
|
||||
<ui-section label='Admin Notes'>{{admin_notes}}</ui-section>
|
||||
{{/if}}
|
||||
|
||||
<ui-button action='select_template'
|
||||
params='{"shuttle_id": "{{shuttle_id}}"}'
|
||||
state='{{data.selected.shuttle_id == shuttle_id ?
|
||||
"selected" : null}}'>
|
||||
{{data.selected.shuttle_id == shuttle_id ? "Selected" : "Select"}}
|
||||
</ui-button>
|
||||
|
||||
</ui-display>
|
||||
{{/each}}
|
||||
</tab>
|
||||
{{/each}}
|
||||
</ui-tabs>
|
||||
@@ -0,0 +1,56 @@
|
||||
<script>
|
||||
component.exports = {
|
||||
computed: {
|
||||
occupantStatState () {
|
||||
switch (this.get('data.occupant.stat')) {
|
||||
case 0: return 'good'
|
||||
case 1: return 'average'
|
||||
default: return 'bad'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<ui-display title='Occupant'>
|
||||
<ui-section label='Occupant'>
|
||||
<span>{{data.occupant.name ? data.occupant.name : "No Occupant"}}</span>
|
||||
</ui-section>
|
||||
{{#if data.occupied}}
|
||||
<ui-section label='State'>
|
||||
<span class='{{occupantStatState}}'>{{data.occupant.stat == 0 ? "Conscious" : data.occupant.stat == 1 ? "Unconcious" : "Dead"}}</span>
|
||||
</ui-section>
|
||||
<ui-section label='Health'>
|
||||
<ui-bar min='{{data.occupant.minHealth}}' max='{{data.occupant.maxHealth}}' value='{{data.occupant.health}}'
|
||||
state='{{data.occupant.health >= 0 ? "good" : "average"}}'>{{Math.round(adata.occupant.health)}}</ui-bar>
|
||||
</ui-section>
|
||||
{{#each [{label: "Brute", type: "bruteLoss"}, {label: "Respiratory", type: "oxyLoss"}, {label: "Toxin", type: "toxLoss"}, {label: "Burn", type: "fireLoss"}]}}
|
||||
<ui-section label='{{label}}'>
|
||||
<ui-bar min='0' max='{{data.occupant.maxHealth}}' value='{{data.occupant[type]}}' state='bad'>{{Math.round(adata.occupant[type])}}</ui-bar>
|
||||
</ui-section>
|
||||
{{/each}}
|
||||
<ui-section label='Cells'>
|
||||
<span class='{{data.occupant.cloneLoss ? "bad" : "good"}}'>{{data.occupant.cloneLoss ? "Damaged" : "Healthy"}}</span>
|
||||
</ui-section>
|
||||
<ui-section label='Brain'>
|
||||
<span class='{{data.occupant.brainLoss ? "bad" : "good"}}'>{{data.occupant.brainLoss ? "Abnormal" : "Healthy"}}</span>
|
||||
</ui-section>
|
||||
<ui-section label='Bloodstream'>
|
||||
{{#each adata.occupant.reagents}}
|
||||
<span class='highlight' intro-outro='fade'>{{Math.fixed(volume, 1)}} units of {{name}}</span><br/>
|
||||
{{else}}
|
||||
<span class='good'>Pure</span>
|
||||
{{/each}}
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
<ui-display title='Controls'>
|
||||
<ui-section label='Door'>
|
||||
<ui-button icon='{{data.open ? "unlock" : "lock"}}' action='door'>{{data.open ? "Open" : "Closed"}}</ui-button>
|
||||
</ui-section>
|
||||
<ui-section label='Inject'>
|
||||
{{#each data.chems}}
|
||||
<ui-button icon='flask' state='{{data.occupied && allowed ? null : "disabled"}}' action='inject' params='{"chem": "{{id}}"}'>{{name}}</ui-button><br/>
|
||||
{{/each}}
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
@@ -0,0 +1,14 @@
|
||||
{{#each data.bodies}}
|
||||
<ui-section label='{{name}}' labelcolor='{{htmlcolor}}' candystripe right>
|
||||
<ui-section label='Status'><span class='{{status == "Dead" ? "bad bold" : status == "Unconscious" ? "average bold" : "good"}}'>{{status}}</span></ui-section>
|
||||
<ui-section label='Jelly'>{{exoticblood}}</ui-section>
|
||||
<ui-section label='Location'>{{area}}</ui-section>
|
||||
|
||||
<ui-button
|
||||
state='{{swap_button_state}}'
|
||||
action='swap' params='{"ref": "{{ref}}"}'>
|
||||
{{is_current ? "You Are Here" : "Swap"}}
|
||||
</ui-button>
|
||||
|
||||
</ui-section>
|
||||
{{/each}}
|
||||
@@ -0,0 +1,70 @@
|
||||
<script>
|
||||
component.exports = {
|
||||
computed: {
|
||||
capacityPercentState () {
|
||||
const charge = this.get('data.capacityPercent')
|
||||
if (charge > 50) return 'good'
|
||||
else if (charge > 15) return 'average'
|
||||
else return 'bad'
|
||||
},
|
||||
inputState () {
|
||||
if (this.get('data.capacityPercent') >= 100) return 'good'
|
||||
else if (this.get('data.inputting')) return 'average'
|
||||
else return 'bad'
|
||||
},
|
||||
outputState () {
|
||||
if (this.get('data.outputting')) return 'good'
|
||||
else if (this.get('data.charge') > 0) return 'average'
|
||||
else return 'bad'
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<ui-display title='Storage'>
|
||||
<ui-section label='Stored Energy'>
|
||||
<ui-bar min='0' max='100' value='{{data.capacityPercent}}' state='{{capacityPercentState}}'>{{Math.fixed(adata.capacityPercent)}}%</ui-bar>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
<ui-display title='Input'>
|
||||
<ui-section label='Charge Mode'>
|
||||
<ui-button icon='{{data.inputAttempt ? "refresh" : "close"}}' style='{{data.inputAttempt ? "selected" : null}}'
|
||||
action='tryinput'>{{data.inputAttempt ? "Auto" : "Off"}}</ui-button>
|
||||
|
||||
[<span class='{{inputState}}'>{{data.capacityPercent >= 100 ? "Fully Charged" : data.inputting ? "Charging" : "Not Charging"}}</span>]
|
||||
</ui-section>
|
||||
<ui-section label='Target Input'>
|
||||
<ui-bar min='0' max='{{data.inputLevelMax}}' value='{{data.inputLevel}}'>{{Math.round(adata.inputLevel)}}W</ui-bar>
|
||||
</ui-section>
|
||||
<ui-section label='Adjust Input'>
|
||||
<ui-button icon='fast-backward' state='{{data.inputLevel == 0 ? "disabled" : null}}' action='input' params='{"target": "min"}'/>
|
||||
<ui-button icon='backward' state='{{data.inputLevel == 0 ? "disabled" : null}}' action='input' params='{"adjust": -10000}'/>
|
||||
<ui-button icon='pencil' action='input' params='{"target": "input"}'>Set</ui-button>
|
||||
<ui-button icon='forward' state='{{data.inputLevel == data.inputLevelMax ? "disabled" : null}}' action='input' params='{"adjust": 10000}'/>
|
||||
<ui-button icon='fast-forward' state='{{data.inputLevel == data.inputLevelMax ? "disabled" : null}}' action='input' params='{"target": "max"}'/>
|
||||
</ui-section>
|
||||
<ui-section label='Available'>
|
||||
<span>{{Math.round(adata.inputAvailable)}}W</span>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
<ui-display title='Output'>
|
||||
<ui-section label='Output Mode'>
|
||||
<ui-button icon='{{data.outputAttempt ? "power-off" : "close"}}' style='{{data.outputAttempt ? "selected" : null}}'
|
||||
action='tryoutput'>{{data.outputAttempt ? "On" : "Off"}}</ui-button>
|
||||
|
||||
[<span class='{{outputState}}'>{{data.outputting ? "Sending" : data.charge > 0 ? "Not Sending" : "No Charge"}}</span>]
|
||||
</ui-section>
|
||||
<ui-section label='Target Output'>
|
||||
<ui-bar min='0' max='{{data.outputLevelMax}}' value='{{data.outputLevel}}'>{{Math.round(adata.outputLevel)}}W</ui-bar>
|
||||
</ui-section>
|
||||
<ui-section label='Adjust Output'>
|
||||
<ui-button icon='fast-backward' state='{{data.outputLevel == 0 ? "disabled" : null}}' action='output' params='{"target": "min"}'/>
|
||||
<ui-button icon='backward' state='{{data.outputLevel == 0 ? "disabled" : null}}' action='output' params='{"adjust": -10000}'/>
|
||||
<ui-button icon='pencil' action='output' params='{"target": "input"}'>Set</ui-button>
|
||||
<ui-button icon='forward' state='{{data.outputLevel == data.outputLevelMax ? "disabled" : null}}' action='output' params='{"adjust": 10000}'/>
|
||||
<ui-button icon='fast-forward' state='{{data.outputLevel == data.outputLevelMax ? "disabled" : null}}' action='output' params='{"target": "max"}'/>
|
||||
</ui-section>
|
||||
<ui-section label='Outputting'>
|
||||
<span>{{Math.round(adata.outputUsed)}}W</span>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
@@ -0,0 +1,46 @@
|
||||
<ui-display title='Status'>
|
||||
<ui-section label='Generated Power'>
|
||||
{{Math.round(adata.generated)}}W
|
||||
</ui-section>
|
||||
<ui-section label='Orientation'>
|
||||
<span>{{Math.round(adata.angle)}}° ({{data.direction}})</span>
|
||||
</ui-section>
|
||||
<ui-section label='Adjust Angle'>
|
||||
<ui-button icon='step-backward' action='angle' params='{"adjust": -15}'>15°</ui-button>
|
||||
<ui-button icon='backward' action='angle' params='{"adjust": -5}'>5°</ui-button>
|
||||
<ui-button icon='forward' action='angle' params='{"adjust": 5}'>5°</ui-button>
|
||||
<ui-button icon='step-forward' action='angle' params='{"adjust": 15}'>15°</ui-button>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
<ui-display title='Tracking'>
|
||||
<ui-section label='Tracker Mode'>
|
||||
<ui-button icon='close' state='{{data.tracking_state == 0 ? "selected" : null}}'
|
||||
action='tracking' params='{"mode": 0}'>Off</ui-button>
|
||||
<ui-button icon='clock-o' state='{{data.tracking_state == 1 ? "selected" : null}}'
|
||||
action='tracking' params='{"mode": 1}'>Timed</ui-button>
|
||||
<ui-button icon='refresh' state='{{data.connected_tracker ? data.tracking_state == 2 ? "selected" : null : "disabled"}}'
|
||||
action='tracking' params='{"mode": 2}'>Auto</ui-button>
|
||||
</ui-section>
|
||||
<ui-section label='Tracking Rate'>
|
||||
<span>{{Math.round(adata.tracking_rate)}}°/h ({{data.rotating_way}})</span>
|
||||
</ui-section>
|
||||
<ui-section label='Adjust Rate'>
|
||||
<ui-button icon='fast-backward' action='rate' params='{"adjust": -180}'>180°</ui-button>
|
||||
<ui-button icon='step-backward' action='rate' params='{"adjust": -30}'>30°</ui-button>
|
||||
<ui-button icon='backward' action='rate' params='{"adjust": -5}'>5°</ui-button>
|
||||
<ui-button icon='forward' action='rate' params='{"adjust": 5}'>5°</ui-button>
|
||||
<ui-button icon='step-forward' action='rate' params='{"adjust": 30}'>30°</ui-button>
|
||||
<ui-button icon='fast-forward' action='rate' params='{"adjust": 180}'>180°</ui-button>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
<ui-display title="Devices" button>
|
||||
{{#partial button}}
|
||||
<ui-button icon='refresh' action='refresh'>Refresh</ui-button>
|
||||
{{/partial}}
|
||||
<ui-section label='Solar Tracker'>
|
||||
<span class='{{data.connected_tracker ? "good" : "bad"}}'>{{data.connected_tracker ? "" : "Not "}}Found</span>
|
||||
</ui-section>
|
||||
<ui-section label='Solar Panels'>
|
||||
<span class='{{data.connected_panels ? "good" : "bad"}}'>{{Math.round(adata.connected_panels)}} Panels Connected</span>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
@@ -0,0 +1,45 @@
|
||||
<ui-display title='Power' button>
|
||||
{{#partial button}}
|
||||
{{#if data.open}}
|
||||
<ui-button icon='eject' state='{{data.hasPowercell ? null : "disabled"}}' action='eject'>Eject</ui-button>
|
||||
{{/if}}
|
||||
{{/partial}}
|
||||
<ui-section label='Power'>
|
||||
<ui-button icon='{{data.on ? "power-off" : "close"}}'
|
||||
style='{{data.on ? "selected" : null}}' state='{{data.hasPowercell ? null : "disabled"}}'
|
||||
action='power'>{{data.on ? "On" : "Off"}}</ui-button>
|
||||
</ui-section>
|
||||
<ui-section label='Cell'>
|
||||
{{#if data.hasPowercell}}
|
||||
<ui-bar min='0' max='100' value='{{data.powerLevel}}'>{{Math.fixed(adata.powerLevel)}}%</ui-bar>
|
||||
{{else}}
|
||||
<span class='bad'>No Cell</span>
|
||||
{{/if}}
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
<ui-display title='Thermostat'>
|
||||
<ui-section label='Current Temperature'>
|
||||
<span>{{Math.round(adata.currentTemp)}}°C</span>
|
||||
</ui-section>
|
||||
<ui-section label='Target Temperature'>
|
||||
<span>{{Math.round(adata.targetTemp)}}°C</span>
|
||||
</ui-section>
|
||||
{{#if data.open}}
|
||||
<ui-section label='Adjust Target'>
|
||||
<ui-button icon='fast-backward' state='{{data.targetTemp > data.minTemp ? null : "disabled"}}' action='target' params='{"adjust": -20}'/>
|
||||
<ui-button icon='backward' state='{{data.targetTemp > data.minTemp ? null : "disabled"}}' action='target' params='{"adjust": -5}'/>
|
||||
<ui-button icon='pencil' action='target' params='{"target": "input"}'>Set</ui-button>
|
||||
<ui-button icon='forward' state='{{data.targetTemp < data.maxTemp ? null : "disabled"}}' action='target' params='{"adjust": 5}'/>
|
||||
<ui-button icon='fast-forward' state='{{data.targetTemp < data.maxTemp ? null : "disabled"}}' action='target' params='{"adjust": 20}'/>
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
<ui-section label='Mode'>
|
||||
{{#if data.open}}
|
||||
<ui-button icon='long-arrow-up' state='{{data.mode == "heat" ? "selected" : null}}' action='mode' params='{"mode": "heat"}'>Heat</ui-button>
|
||||
<ui-button icon='long-arrow-down' state='{{data.mode == "cool" ? "selected" : null}}' action='mode' params='{"mode": "cool"}'>Cool</ui-button>
|
||||
<ui-button icon='arrows-v' state='{{data.mode == "auto" ? "selected" : null}}' action='mode' params='{"mode": "auto"}'>Auto</ui-button>
|
||||
{{else}}
|
||||
<span>{{text.titleCase(data.mode)}}</span>
|
||||
{{/if}}
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
@@ -0,0 +1,11 @@
|
||||
{{#each data.alarms:class}}
|
||||
<ui-display title='{{class}} Alarms'>
|
||||
<ul>
|
||||
{{#each .}}
|
||||
<li>{{.}}</li>
|
||||
{{else}}
|
||||
<li>System Nominal</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</ui-display>
|
||||
{{/each}}
|
||||
@@ -0,0 +1,41 @@
|
||||
{{#if data.occupied && data.safeties}}
|
||||
<ui-notice>
|
||||
<span>Biological entity detected in contents. Please remove.</span>
|
||||
</ui-notice>
|
||||
{{/if}}
|
||||
{{#if data.uv_active}}
|
||||
<ui-notice>
|
||||
<span>Contents are being disinfected. Please wait.</span>
|
||||
</ui-notice>
|
||||
{{else}}
|
||||
<ui-display title='Storage' button>
|
||||
{{#partial button}}
|
||||
{{#if !data.open}}<ui-button icon='{{data.locked ? "unlock" : "lock"}}' action='lock'>{{data.locked ? 'Unlock' : 'Lock'}}</ui-button>{{/if}}
|
||||
{{#if !data.locked}}<ui-button icon='{{data.open ? "sign-out" : "sign-in"}}' action='door'>{{data.open ? 'Close' : 'Open'}}</ui-button>{{/if}}
|
||||
{{/partial}}
|
||||
{{#if data.locked}}
|
||||
<ui-notice>
|
||||
<span>Unit Locked</span>
|
||||
</ui-notice>
|
||||
{{elseif data.open}}
|
||||
<ui-section label='Helmet'>
|
||||
<ui-button icon='{{data.helmet ? "square" : "square-o"}}'state='{{data.helmet ? null : "disabled"}}'
|
||||
action='dispense' params='{"item": "helmet"}'>{{data.helmet || "Empty"}}</ui-button>
|
||||
</ui-section>
|
||||
<ui-section label='Suit'>
|
||||
<ui-button icon='{{data.suit ? "square" : "square-o"}}' state='{{data.suit ? null : "disabled"}}'
|
||||
action='dispense' params='{"item": "suit"}'>{{data.suit || "Empty"}}</ui-button>
|
||||
</ui-section>
|
||||
<ui-section label='Mask'>
|
||||
<ui-button icon='{{data.mask ? "square" : "square-o"}}' state='{{data.mask ? null : "disabled"}}'
|
||||
action='dispense' params='{"item": "mask"}'>{{data.mask || "Empty"}}</ui-button>
|
||||
</ui-section>
|
||||
<ui-section label='Storage'>
|
||||
<ui-button icon='{{data.storage ? "square" : "square-o"}}' state='{{data.storage ? null : "disabled"}}'
|
||||
action='dispense' params='{"item": "storage"}'>{{data.storage || "Empty"}}</ui-button>
|
||||
</ui-section>
|
||||
{{else}}
|
||||
<ui-button icon='recycle' state='{{data.occupied && data.safeties ? "disabled" : null}}' action='uv'>Disinfect</ui-button>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
{{/if}}
|
||||
@@ -0,0 +1,8 @@
|
||||
<ui-display>
|
||||
<ui-section label='Dispense'>
|
||||
<ui-button icon='{{data.plasma ? "square" : "square-o"}}' state='{{data.plasma ? null : "disabled"}}'
|
||||
action='plasma'>Plasma ({{Math.round(adata.plasma)}})</ui-button>
|
||||
<ui-button icon='{{data.oxygen ? "square" : "square-o"}}' state='{{data.oxygen ? null : "disabled"}}'
|
||||
action='oxygen'>Oxygen ({{Math.round(adata.oxygen)}})</ui-button>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
@@ -0,0 +1,35 @@
|
||||
<script>
|
||||
component.exports = {
|
||||
computed: {
|
||||
tankPressureState () {
|
||||
const pressure = this.get('data.tankPressure')
|
||||
if (pressure >= 200) return 'good'
|
||||
else if (pressure >= 100) return 'average'
|
||||
else return 'bad'
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<ui-notice>
|
||||
<span>The regulator {{data.connected? "is" : "is not"}} connected to a mask.</span>
|
||||
</ui-notice>
|
||||
<ui-display>
|
||||
<ui-section label='Tank Pressure'>
|
||||
<ui-bar min='0' max='1013' value='{{data.tankPressure}}'
|
||||
state='{{tankPressureState}}'>{{Math.round(adata.tankPressure)}} kPa</ui-bar>
|
||||
</ui-section>
|
||||
<ui-section label='Release Pressure'>
|
||||
<ui-bar min='{{data.minReleasePressure}}' max='{{data.maxReleasePressure}}'
|
||||
value='{{data.releasePressure}}'>{{Math.round(adata.releasePressure)}} kPa</ui-bar>
|
||||
</ui-section>
|
||||
<ui-section label='Pressure Regulator'>
|
||||
<ui-button icon='refresh' state='{{data.releasePressure != data.defaultReleasePressure ? null : "disabled"}}'
|
||||
action='pressure' params='{"pressure": "reset"}'>Reset</ui-button>
|
||||
<ui-button icon='minus' state='{{data.releasePressure > data.minReleasePressure ? null : "disabled"}}'
|
||||
action='pressure' params='{"pressure": "min"}'>Min</ui-button>
|
||||
<ui-button icon='pencil' action='pressure' params='{"pressure": "input"}'>Set</ui-button>
|
||||
<ui-button icon='plus' state='{{data.releasePressure < data.maxReleasePressure ? null : "disabled"}}'
|
||||
action='pressure' params='{"pressure": "max"}'>Max</ui-button>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
@@ -0,0 +1,25 @@
|
||||
<ui-display title='Status'>
|
||||
<ui-section label='Temperature'>
|
||||
<span>{{Math.fixed(adata.temperature, 2)}} K</span>
|
||||
</ui-section>
|
||||
<ui-section label='Pressure'>
|
||||
<span>{{Math.fixed(adata.pressure, 2)}} kPa</span>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
<ui-display title='Controls'>
|
||||
<ui-section label='Power'>
|
||||
<ui-button icon='{{data.on ? "power-off" : "close"}}' style="{{data.on ? "selected" : null}}"
|
||||
action='power'>{{data.on ? "On": "Off"}}</ui-button>
|
||||
</ui-section>
|
||||
<ui-section label='Target Temperature'>
|
||||
<ui-button icon='fast-backward' style='{{data.target == data.min ? "disabled" : null}}'
|
||||
action='target' params='{"adjust": -20}'/>
|
||||
<ui-button icon='backward' style='{{data.target == data.min ? "disabled" : null}}'
|
||||
action='target' params='{"adjust": -5}'/>
|
||||
<ui-button icon='pencil' action='target' params='{"target": "input"}'>{{Math.fixed(adata.target, 2)}}</ui-button>
|
||||
<ui-button icon='forward' style='{{data.target == data.max ? "disabled" : null}}'
|
||||
action='target' params='{"adjust": 5}'/>
|
||||
<ui-button icon='fast-forward' style='{{data.target == data.max ? "disabled" : null}}'
|
||||
action='target' params='{"adjust": 20}'/>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
@@ -0,0 +1,50 @@
|
||||
<script>
|
||||
import { filterMulti } from 'util/filter'
|
||||
component.exports = {
|
||||
data: {
|
||||
filter: ''
|
||||
},
|
||||
oninit () {
|
||||
this.on({
|
||||
hover (event) {
|
||||
const uses = this.get('data.telecrystals')
|
||||
if (uses >= event.context.params.cost)
|
||||
this.set('hovered', event.context.params)
|
||||
},
|
||||
unhover (event) {
|
||||
this.set('hovered')
|
||||
}
|
||||
})
|
||||
this.observe('filter', (newkey, oldkey, keypath) => {
|
||||
const categories = this.findAll('.display:not(:first-child)')
|
||||
filterMulti(categories, this.get('filter').toLowerCase())
|
||||
}, { init: false })
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<ui-display title='Uplink' button>
|
||||
{{#partial button}}
|
||||
{{#if config.fancy}}
|
||||
<ui-input value='{{filter}}' placeholder='Filter...'/>
|
||||
{{/if}}
|
||||
{{#if data.lockable}}
|
||||
<ui-button icon='lock' action='lock'>Lock</ui-button>
|
||||
{{/if}}
|
||||
{{/partial}}
|
||||
<ui-section label='Telecrystals' right>
|
||||
<span class='{{data.telecrystals > 0 ? "good" : "bad"}}'>{{data.telecrystals}} TC</span>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
{{#each data.categories}}
|
||||
<ui-display title='{{name}}'>
|
||||
{{#each items}}
|
||||
<ui-section label='{{name}}' candystripe right>
|
||||
<ui-button tooltip='{{name}}: {{desc}}' tooltip-side='left'
|
||||
state='{{data.telecrystals < cost || (data.telecrystals - hovered.cost < cost && hovered.item != name) ? "disabled" : null}}'
|
||||
action='buy' params='{"category": "{{category}}", "item": {{name}}, "cost": {{cost}}}'
|
||||
on-hover='hover' on-unhover='unhover'>{{cost}} TC</ui-button>
|
||||
</ui-section>
|
||||
{{/each}}
|
||||
</ui-display>
|
||||
{{/each}}
|
||||
@@ -0,0 +1,16 @@
|
||||
<ui-display>
|
||||
{{#each data.wires}}
|
||||
<ui-section label='{{color}}{{wire ? " (" + wire + ")" : ""}}' labelcolor='{{color}}' candystripe right>
|
||||
<ui-button action='cut' params='{"wire":"{{color}}"}'>{{cut ? "Mend" : "Cut"}}</ui-button>
|
||||
<ui-button action='pulse' params='{"wire":"{{color}}"}'>Pulse</ui-button>
|
||||
<ui-button action='attach' params='{"wire":"{{color}}"}'>{{attached ? "Detach" : "Attach"}}</ui-button>
|
||||
</ui-section>
|
||||
{{/each}}
|
||||
</ui-display>
|
||||
{{#if data.status}}
|
||||
<ui-display>
|
||||
{{#each data.status}}
|
||||
<ui-section>{{.}}</ui-section>
|
||||
{{/each}}
|
||||
</ui-display>
|
||||
{{/if}}
|
||||
Reference in New Issue
Block a user