mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-12 11:13:16 +00:00
@@ -112,14 +112,14 @@
|
|||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/machinery/atmospherics/omni/filter/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/machinery/atmospherics/omni/filter/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
usr.set_machine(src)
|
usr.set_machine(src)
|
||||||
|
|
||||||
var/list/data = new()
|
var/list/data = new()
|
||||||
|
|
||||||
data = build_uidata()
|
data = build_uidata()
|
||||||
|
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
|
|
||||||
if (!ui)
|
if (!ui)
|
||||||
ui = new(user, src, ui_key, "omni_filter.tmpl", "Omni Filter Control", 330, 330)
|
ui = new(user, src, ui_key, "omni_filter.tmpl", "Omni Filter Control", 330, 330)
|
||||||
|
|||||||
@@ -137,14 +137,14 @@
|
|||||||
|
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
/obj/machinery/atmospherics/omni/mixer/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/machinery/atmospherics/omni/mixer/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
usr.set_machine(src)
|
usr.set_machine(src)
|
||||||
|
|
||||||
var/list/data = new()
|
var/list/data = new()
|
||||||
|
|
||||||
data = build_uidata()
|
data = build_uidata()
|
||||||
|
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
|
|
||||||
if (!ui)
|
if (!ui)
|
||||||
ui = new(user, src, ui_key, "omni_mixer.tmpl", "Omni Mixer Control", 360, 330)
|
ui = new(user, src, ui_key, "omni_mixer.tmpl", "Omni Mixer Control", 360, 330)
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
ui_interact(user)
|
ui_interact(user)
|
||||||
|
|
||||||
/obj/machinery/computer/engines/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/machinery/computer/engines/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
if(!linked)
|
if(!linked)
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -50,7 +50,7 @@
|
|||||||
|
|
||||||
data["engines_info"] = enginfo
|
data["engines_info"] = enginfo
|
||||||
|
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
if (!ui)
|
if (!ui)
|
||||||
ui = new(user, src, ui_key, "engines_control.tmpl", "[linked.name] Engines Control", 380, 530)
|
ui = new(user, src, ui_key, "engines_control.tmpl", "[linked.name] Engines Control", 380, 530)
|
||||||
ui.set_initial_data(data)
|
ui.set_initial_data(data)
|
||||||
|
|||||||
@@ -70,7 +70,7 @@
|
|||||||
|
|
||||||
ui_interact(user)
|
ui_interact(user)
|
||||||
|
|
||||||
/obj/machinery/computer/helm/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/machinery/computer/helm/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
if(!linked)
|
if(!linked)
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -101,7 +101,7 @@
|
|||||||
|
|
||||||
data["locations"] = locations
|
data["locations"] = locations
|
||||||
|
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
if (!ui)
|
if (!ui)
|
||||||
ui = new(user, src, ui_key, "helm.tmpl", "[linked.name] Helm Control", 380, 530)
|
ui = new(user, src, ui_key, "helm.tmpl", "[linked.name] Helm Control", 380, 530)
|
||||||
ui.set_initial_data(data)
|
ui.set_initial_data(data)
|
||||||
|
|||||||
@@ -44,7 +44,7 @@
|
|||||||
var/datum/shuttle/ferry/shuttle = shuttle_controller.shuttles[shuttle_tag]
|
var/datum/shuttle/ferry/shuttle = shuttle_controller.shuttles[shuttle_tag]
|
||||||
return shuttle && destination && get_dist(home, destination) <= shuttle.range
|
return shuttle && destination && get_dist(home, destination) <= shuttle.range
|
||||||
|
|
||||||
/obj/machinery/computer/shuttle_control/explore/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/machinery/computer/shuttle_control/explore/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
var/data[0]
|
var/data[0]
|
||||||
var/datum/shuttle/ferry/shuttle = shuttle_controller.shuttles[shuttle_tag]
|
var/datum/shuttle/ferry/shuttle = shuttle_controller.shuttles[shuttle_tag]
|
||||||
if (!istype(shuttle))
|
if (!istype(shuttle))
|
||||||
@@ -103,7 +103,7 @@
|
|||||||
"can_force" = can_go && shuttle.can_force(),
|
"can_force" = can_go && shuttle.can_force(),
|
||||||
)
|
)
|
||||||
|
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
|
|
||||||
if (!ui)
|
if (!ui)
|
||||||
ui = new(user, src, ui_key, "shuttle_control_console_exploration.tmpl", "[shuttle_tag] Shuttle Control", 470, 310)
|
ui = new(user, src, ui_key, "shuttle_control_console_exploration.tmpl", "[shuttle_tag] Shuttle Control", 470, 310)
|
||||||
|
|||||||
@@ -345,7 +345,7 @@
|
|||||||
*
|
*
|
||||||
* @return nothing
|
* @return nothing
|
||||||
*/
|
*/
|
||||||
/obj/machinery/computer/scan_consolenew/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/machinery/computer/scan_consolenew/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
|
|
||||||
if(user == connected.occupant || user.stat)
|
if(user == connected.occupant || user.stat)
|
||||||
return
|
return
|
||||||
@@ -425,7 +425,7 @@
|
|||||||
data["beakerVolume"] += R.volume
|
data["beakerVolume"] += R.volume
|
||||||
|
|
||||||
// update the ui if it exists, returns null if no ui is passed/found
|
// update the ui if it exists, returns null if no ui is passed/found
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
if (!ui)
|
if (!ui)
|
||||||
// the ui does not exist, so we'll create a new() one
|
// the ui does not exist, so we'll create a new() one
|
||||||
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
||||||
|
|||||||
@@ -44,7 +44,7 @@
|
|||||||
/obj/machinery/atmospherics/unary/cold_sink/freezer/attack_hand(mob/user as mob)
|
/obj/machinery/atmospherics/unary/cold_sink/freezer/attack_hand(mob/user as mob)
|
||||||
src.ui_interact(user)
|
src.ui_interact(user)
|
||||||
|
|
||||||
/obj/machinery/atmospherics/unary/cold_sink/freezer/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/machinery/atmospherics/unary/cold_sink/freezer/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
// this is the data which will be sent to the ui
|
// this is the data which will be sent to the ui
|
||||||
var/data[0]
|
var/data[0]
|
||||||
data["on"] = on ? 1 : 0
|
data["on"] = on ? 1 : 0
|
||||||
@@ -62,7 +62,7 @@
|
|||||||
data["gasTemperatureClass"] = temp_class
|
data["gasTemperatureClass"] = temp_class
|
||||||
|
|
||||||
// update the ui if it exists, returns null if no ui is passed/found
|
// update the ui if it exists, returns null if no ui is passed/found
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
if (!ui)
|
if (!ui)
|
||||||
// the ui does not exist, so we'll create a new() one
|
// the ui does not exist, so we'll create a new() one
|
||||||
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
||||||
@@ -137,7 +137,7 @@
|
|||||||
/obj/machinery/atmospherics/unary/heat_reservoir/heater/attack_hand(mob/user as mob)
|
/obj/machinery/atmospherics/unary/heat_reservoir/heater/attack_hand(mob/user as mob)
|
||||||
src.ui_interact(user)
|
src.ui_interact(user)
|
||||||
|
|
||||||
/obj/machinery/atmospherics/unary/heat_reservoir/heater/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/machinery/atmospherics/unary/heat_reservoir/heater/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
// this is the data which will be sent to the ui
|
// this is the data which will be sent to the ui
|
||||||
var/data[0]
|
var/data[0]
|
||||||
data["on"] = on ? 1 : 0
|
data["on"] = on ? 1 : 0
|
||||||
@@ -153,7 +153,7 @@
|
|||||||
data["gasTemperatureClass"] = temp_class
|
data["gasTemperatureClass"] = temp_class
|
||||||
|
|
||||||
// update the ui if it exists, returns null if no ui is passed/found
|
// update the ui if it exists, returns null if no ui is passed/found
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
if (!ui)
|
if (!ui)
|
||||||
// the ui does not exist, so we'll create a new() one
|
// the ui does not exist, so we'll create a new() one
|
||||||
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
||||||
|
|||||||
@@ -241,7 +241,7 @@ update_flag
|
|||||||
/obj/machinery/portable_atmospherics/canister/attack_hand(var/mob/user as mob)
|
/obj/machinery/portable_atmospherics/canister/attack_hand(var/mob/user as mob)
|
||||||
return src.ui_interact(user)
|
return src.ui_interact(user)
|
||||||
|
|
||||||
/obj/machinery/portable_atmospherics/canister/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/machinery/portable_atmospherics/canister/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
if (src.destroyed)
|
if (src.destroyed)
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -261,7 +261,7 @@ update_flag
|
|||||||
data["holdingTank"] = list("name" = holding.name, "tankPressure" = round(holding.air_contents.return_pressure()))
|
data["holdingTank"] = list("name" = holding.name, "tankPressure" = round(holding.air_contents.return_pressure()))
|
||||||
|
|
||||||
// update the ui if it exists, returns null if no ui is passed/found
|
// update the ui if it exists, returns null if no ui is passed/found
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
if (!ui)
|
if (!ui)
|
||||||
// the ui does not exist, so we'll create a new() one
|
// the ui does not exist, so we'll create a new() one
|
||||||
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
||||||
|
|||||||
@@ -80,7 +80,7 @@
|
|||||||
if(stat & (NOPOWER|BROKEN)) return
|
if(stat & (NOPOWER|BROKEN)) return
|
||||||
ui_interact(user)
|
ui_interact(user)
|
||||||
|
|
||||||
/obj/machinery/computer/card/ui_interact(mob/user, ui_key="main", datum/nanoui/ui=null)
|
/obj/machinery/computer/card/ui_interact(mob/user, ui_key="main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
user.set_machine(src)
|
user.set_machine(src)
|
||||||
|
|
||||||
var/data[0]
|
var/data[0]
|
||||||
@@ -133,7 +133,7 @@
|
|||||||
|
|
||||||
data["regions"] = regions
|
data["regions"] = regions
|
||||||
|
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
if (!ui)
|
if (!ui)
|
||||||
ui = new(user, src, ui_key, "identification_computer.tmpl", src.name, 600, 700)
|
ui = new(user, src, ui_key, "identification_computer.tmpl", src.name, 600, 700)
|
||||||
ui.set_initial_data(data)
|
ui.set_initial_data(data)
|
||||||
|
|||||||
@@ -57,7 +57,7 @@
|
|||||||
/obj/machinery/computer/crew/interact(mob/user)
|
/obj/machinery/computer/crew/interact(mob/user)
|
||||||
ui_interact(user)
|
ui_interact(user)
|
||||||
|
|
||||||
/obj/machinery/computer/crew/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/machinery/computer/crew/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
if(stat & (BROKEN|NOPOWER))
|
if(stat & (BROKEN|NOPOWER))
|
||||||
return
|
return
|
||||||
user.set_machine(src)
|
user.set_machine(src)
|
||||||
@@ -97,7 +97,7 @@
|
|||||||
|
|
||||||
data["crewmembers"] = crewmembers
|
data["crewmembers"] = crewmembers
|
||||||
|
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
if(!ui)
|
if(!ui)
|
||||||
ui = new(user, src, ui_key, "crew_monitor.tmpl", "Crew Monitoring Computer", 900, 600)
|
ui = new(user, src, ui_key, "crew_monitor.tmpl", "Crew Monitoring Computer", 900, 600)
|
||||||
ui.set_initial_data(data)
|
ui.set_initial_data(data)
|
||||||
|
|||||||
@@ -73,7 +73,7 @@
|
|||||||
*
|
*
|
||||||
* @return nothing
|
* @return nothing
|
||||||
*/
|
*/
|
||||||
/obj/machinery/atmospherics/unary/cryo_cell/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/machinery/atmospherics/unary/cryo_cell/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
|
|
||||||
if(user == occupant || user.stat)
|
if(user == occupant || user.stat)
|
||||||
return
|
return
|
||||||
@@ -121,7 +121,7 @@
|
|||||||
data["beakerVolume"] += R.volume
|
data["beakerVolume"] += R.volume
|
||||||
|
|
||||||
// update the ui if it exists, returns null if no ui is passed/found
|
// update the ui if it exists, returns null if no ui is passed/found
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
if (!ui)
|
if (!ui)
|
||||||
// the ui does not exist, so we'll create a new() one
|
// the ui does not exist, so we'll create a new() one
|
||||||
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller
|
/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller
|
||||||
name = "Advanced Airlock Controller"
|
name = "Advanced Airlock Controller"
|
||||||
|
|
||||||
/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
var/data[0]
|
var/data[0]
|
||||||
|
|
||||||
data = list(
|
data = list(
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
"secure" = program.memory["secure"]
|
"secure" = program.memory["secure"]
|
||||||
)
|
)
|
||||||
|
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
|
|
||||||
if (!ui)
|
if (!ui)
|
||||||
ui = new(user, src, ui_key, "advanced_airlock_console.tmpl", name, 470, 290)
|
ui = new(user, src, ui_key, "advanced_airlock_console.tmpl", name, 470, 290)
|
||||||
@@ -75,7 +75,7 @@
|
|||||||
name = "Airlock Controller"
|
name = "Airlock Controller"
|
||||||
tag_secure = 1
|
tag_secure = 1
|
||||||
|
|
||||||
/obj/machinery/embedded_controller/radio/airlock/airlock_controller/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/machinery/embedded_controller/radio/airlock/airlock_controller/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
var/data[0]
|
var/data[0]
|
||||||
|
|
||||||
data = list(
|
data = list(
|
||||||
@@ -85,7 +85,7 @@
|
|||||||
"processing" = program.memory["processing"],
|
"processing" = program.memory["processing"],
|
||||||
)
|
)
|
||||||
|
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
|
|
||||||
if (!ui)
|
if (!ui)
|
||||||
ui = new(user, src, ui_key, "simple_airlock_console.tmpl", name, 470, 290)
|
ui = new(user, src, ui_key, "simple_airlock_console.tmpl", name, 470, 290)
|
||||||
@@ -140,7 +140,7 @@
|
|||||||
else
|
else
|
||||||
icon_state = "access_control_off"
|
icon_state = "access_control_off"
|
||||||
|
|
||||||
/obj/machinery/embedded_controller/radio/airlock/access_controller/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/machinery/embedded_controller/radio/airlock/access_controller/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
var/data[0]
|
var/data[0]
|
||||||
|
|
||||||
data = list(
|
data = list(
|
||||||
@@ -149,7 +149,7 @@
|
|||||||
"processing" = program.memory["processing"]
|
"processing" = program.memory["processing"]
|
||||||
)
|
)
|
||||||
|
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
|
|
||||||
if (!ui)
|
if (!ui)
|
||||||
ui = new(user, src, ui_key, "door_access_console.tmpl", name, 330, 220)
|
ui = new(user, src, ui_key, "door_access_console.tmpl", name, 330, 220)
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
docking_program = new/datum/computer/file/embedded_program/docking/airlock(src, airlock_program)
|
docking_program = new/datum/computer/file/embedded_program/docking/airlock(src, airlock_program)
|
||||||
program = docking_program
|
program = docking_program
|
||||||
|
|
||||||
/obj/machinery/embedded_controller/radio/airlock/docking_port/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/machinery/embedded_controller/radio/airlock/docking_port/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
var/data[0]
|
var/data[0]
|
||||||
|
|
||||||
data = list(
|
data = list(
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
"override_enabled" = docking_program.override_enabled,
|
"override_enabled" = docking_program.override_enabled,
|
||||||
)
|
)
|
||||||
|
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
|
|
||||||
if (!ui)
|
if (!ui)
|
||||||
ui = new(user, src, ui_key, "docking_airlock_console.tmpl", name, 470, 290)
|
ui = new(user, src, ui_key, "docking_airlock_console.tmpl", name, 470, 290)
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
child_names[tags[i]] = names[i]
|
child_names[tags[i]] = names[i]
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/embedded_controller/radio/docking_port_multi/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/machinery/embedded_controller/radio/docking_port_multi/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
var/data[0]
|
var/data[0]
|
||||||
|
|
||||||
var/list/airlocks[child_names.len]
|
var/list/airlocks[child_names.len]
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
"airlocks" = airlocks,
|
"airlocks" = airlocks,
|
||||||
)
|
)
|
||||||
|
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
|
|
||||||
if (!ui)
|
if (!ui)
|
||||||
ui = new(user, src, ui_key, "multi_docking_console.tmpl", name, 470, 290)
|
ui = new(user, src, ui_key, "multi_docking_console.tmpl", name, 470, 290)
|
||||||
@@ -60,7 +60,7 @@
|
|||||||
airlock_program = new/datum/computer/file/embedded_program/airlock/multi_docking(src)
|
airlock_program = new/datum/computer/file/embedded_program/airlock/multi_docking(src)
|
||||||
program = airlock_program
|
program = airlock_program
|
||||||
|
|
||||||
/obj/machinery/embedded_controller/radio/airlock/docking_port_multi/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/machinery/embedded_controller/radio/airlock/docking_port_multi/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
var/data[0]
|
var/data[0]
|
||||||
|
|
||||||
data = list(
|
data = list(
|
||||||
@@ -73,7 +73,7 @@
|
|||||||
"override_enabled" = airlock_program.override_enabled,
|
"override_enabled" = airlock_program.override_enabled,
|
||||||
)
|
)
|
||||||
|
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
|
|
||||||
if (!ui)
|
if (!ui)
|
||||||
ui = new(user, src, ui_key, "docking_airlock_console.tmpl", name, 470, 290)
|
ui = new(user, src, ui_key, "docking_airlock_console.tmpl", name, 470, 290)
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod
|
/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod
|
||||||
var/datum/shuttle/ferry/escape_pod/pod
|
var/datum/shuttle/ferry/escape_pod/pod
|
||||||
|
|
||||||
/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
var/data[0]
|
var/data[0]
|
||||||
|
|
||||||
data = list(
|
data = list(
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
"is_armed" = pod.arming_controller.armed,
|
"is_armed" = pod.arming_controller.armed,
|
||||||
)
|
)
|
||||||
|
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
|
|
||||||
if (!ui)
|
if (!ui)
|
||||||
ui = new(user, src, ui_key, "escape_pod_console.tmpl", name, 470, 290)
|
ui = new(user, src, ui_key, "escape_pod_console.tmpl", name, 470, 290)
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
docking_program = new/datum/computer/file/embedded_program/docking/simple/escape_pod(src)
|
docking_program = new/datum/computer/file/embedded_program/docking/simple/escape_pod(src)
|
||||||
program = docking_program
|
program = docking_program
|
||||||
|
|
||||||
/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod_berth/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod_berth/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
var/data[0]
|
var/data[0]
|
||||||
|
|
||||||
var/armed = null
|
var/armed = null
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
"armed" = armed,
|
"armed" = armed,
|
||||||
)
|
)
|
||||||
|
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
|
|
||||||
if (!ui)
|
if (!ui)
|
||||||
ui = new(user, src, ui_key, "escape_pod_berth_console.tmpl", name, 470, 290)
|
ui = new(user, src, ui_key, "escape_pod_berth_console.tmpl", name, 470, 290)
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
docking_program = new/datum/computer/file/embedded_program/docking/simple(src)
|
docking_program = new/datum/computer/file/embedded_program/docking/simple(src)
|
||||||
program = docking_program
|
program = docking_program
|
||||||
|
|
||||||
/obj/machinery/embedded_controller/radio/simple_docking_controller/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/machinery/embedded_controller/radio/simple_docking_controller/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
var/data[0]
|
var/data[0]
|
||||||
|
|
||||||
data = list(
|
data = list(
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
"door_lock" = docking_program.memory["door_status"]["lock"],
|
"door_lock" = docking_program.memory["door_status"]["lock"],
|
||||||
)
|
)
|
||||||
|
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
|
|
||||||
if (!ui)
|
if (!ui)
|
||||||
ui = new(user, src, ui_key, "simple_docking_console.tmpl", name, 470, 290)
|
ui = new(user, src, ui_key, "simple_docking_console.tmpl", name, 470, 290)
|
||||||
|
|||||||
@@ -225,7 +225,7 @@
|
|||||||
* SmartFridge Menu
|
* SmartFridge Menu
|
||||||
********************/
|
********************/
|
||||||
|
|
||||||
/obj/machinery/smartfridge/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/machinery/smartfridge/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
user.set_machine(src)
|
user.set_machine(src)
|
||||||
|
|
||||||
var/is_secure = istype(src,/obj/machinery/smartfridge/secure)
|
var/is_secure = istype(src,/obj/machinery/smartfridge/secure)
|
||||||
@@ -269,7 +269,7 @@
|
|||||||
if (vendor_wires.len > 0)
|
if (vendor_wires.len > 0)
|
||||||
data["wires"] = vendor_wires
|
data["wires"] = vendor_wires
|
||||||
|
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
if (!ui)
|
if (!ui)
|
||||||
ui = new(user, src, ui_key, "smartfridge.tmpl", src.name, 400, 500)
|
ui = new(user, src, ui_key, "smartfridge.tmpl", src.name, 400, 500)
|
||||||
ui.set_initial_data(data)
|
ui.set_initial_data(data)
|
||||||
|
|||||||
@@ -328,7 +328,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
/obj/item/device/pda/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/item/device/pda/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
ui_tick++
|
ui_tick++
|
||||||
var/datum/nanoui/old_ui = nanomanager.get_open_ui(user, src, "main")
|
var/datum/nanoui/old_ui = nanomanager.get_open_ui(user, src, "main")
|
||||||
var/auto_update = 1
|
var/auto_update = 1
|
||||||
@@ -462,7 +462,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
data["aircontents"] = list("reading" = 0)
|
data["aircontents"] = list("reading" = 0)
|
||||||
|
|
||||||
// update the ui if it exists, returns null if no ui is passed/found
|
// update the ui if it exists, returns null if no ui is passed/found
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
if (!ui)
|
if (!ui)
|
||||||
// the ui does not exist, so we'll create a new() one
|
// the ui does not exist, so we'll create a new() one
|
||||||
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
||||||
|
|||||||
@@ -67,7 +67,7 @@
|
|||||||
/obj/item/device/transfer_valve/attack_self(mob/user as mob)
|
/obj/item/device/transfer_valve/attack_self(mob/user as mob)
|
||||||
ui_interact(user)
|
ui_interact(user)
|
||||||
|
|
||||||
/obj/item/device/transfer_valve/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/item/device/transfer_valve/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
|
|
||||||
// this is the data which will be sent to the ui
|
// this is the data which will be sent to the ui
|
||||||
var/data[0]
|
var/data[0]
|
||||||
@@ -77,7 +77,7 @@
|
|||||||
data["valveOpen"] = valve_open ? 1 : 0
|
data["valveOpen"] = valve_open ? 1 : 0
|
||||||
|
|
||||||
// update the ui if it exists, returns null if no ui is passed/found
|
// update the ui if it exists, returns null if no ui is passed/found
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
if (!ui)
|
if (!ui)
|
||||||
// the ui does not exist, so we'll create a new() one
|
// the ui does not exist, so we'll create a new() one
|
||||||
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
||||||
|
|||||||
@@ -340,7 +340,7 @@ A list of items and costs is stored under the datum of every game mode, alongsid
|
|||||||
/*
|
/*
|
||||||
NANO UI FOR UPLINK WOOP WOOP
|
NANO UI FOR UPLINK WOOP WOOP
|
||||||
*/
|
*/
|
||||||
/obj/item/device/uplink/hidden/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/item/device/uplink/hidden/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
var/title = "Syndicate Uplink"
|
var/title = "Syndicate Uplink"
|
||||||
var/data[0]
|
var/data[0]
|
||||||
|
|
||||||
@@ -349,7 +349,7 @@ A list of items and costs is stored under the datum of every game mode, alongsid
|
|||||||
data["welcome"] = welcome
|
data["welcome"] = welcome
|
||||||
|
|
||||||
// update the ui if it exists, returns null if no ui is passed/found
|
// update the ui if it exists, returns null if no ui is passed/found
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
if (!ui)
|
if (!ui)
|
||||||
// the ui does not exist, so we'll create a new() one
|
// the ui does not exist, so we'll create a new() one
|
||||||
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
||||||
|
|||||||
@@ -127,7 +127,7 @@
|
|||||||
|
|
||||||
ui_interact(user)
|
ui_interact(user)
|
||||||
|
|
||||||
/obj/item/weapon/tank/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/item/weapon/tank/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
|
|
||||||
var/using_internal
|
var/using_internal
|
||||||
if(istype(loc,/mob/living/carbon))
|
if(istype(loc,/mob/living/carbon))
|
||||||
@@ -150,7 +150,7 @@
|
|||||||
data["maskConnected"] = 1
|
data["maskConnected"] = 1
|
||||||
|
|
||||||
// update the ui if it exists, returns null if no ui is passed/found
|
// update the ui if it exists, returns null if no ui is passed/found
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
if (!ui)
|
if (!ui)
|
||||||
// the ui does not exist, so we'll create a new() one
|
// the ui does not exist, so we'll create a new() one
|
||||||
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
||||||
|
|||||||
@@ -59,7 +59,7 @@
|
|||||||
if(stat & (NOPOWER|BROKEN)) return
|
if(stat & (NOPOWER|BROKEN)) return
|
||||||
ui_interact(user)
|
ui_interact(user)
|
||||||
|
|
||||||
/obj/machinery/account_database/ui_interact(mob/user, ui_key="main", datum/nanoui/ui=null)
|
/obj/machinery/account_database/ui_interact(mob/user, ui_key="main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
user.set_machine(src)
|
user.set_machine(src)
|
||||||
|
|
||||||
var/data[0]
|
var/data[0]
|
||||||
@@ -105,7 +105,7 @@
|
|||||||
if (accounts.len > 0)
|
if (accounts.len > 0)
|
||||||
data["accounts"] = accounts
|
data["accounts"] = accounts
|
||||||
|
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
if (!ui)
|
if (!ui)
|
||||||
ui = new(user, src, ui_key, "accounts_terminal.tmpl", src.name, 400, 640)
|
ui = new(user, src, ui_key, "accounts_terminal.tmpl", src.name, 400, 640)
|
||||||
ui.set_initial_data(data)
|
ui.set_initial_data(data)
|
||||||
|
|||||||
@@ -32,11 +32,12 @@
|
|||||||
*
|
*
|
||||||
* @param user /mob The mob who is interacting with this ui
|
* @param user /mob The mob who is interacting with this ui
|
||||||
* @param ui_key string A string key to use for this ui. Allows for multiple unique uis on one obj/mob (defaut value "main")
|
* @param ui_key string A string key to use for this ui. Allows for multiple unique uis on one obj/mob (defaut value "main")
|
||||||
* @param ui /datum/nanoui This parameter is passed by the nanoui process() proc when updating an open ui
|
* @param ui /datum/nanoui This parameter is passed by the nanoui process() proc when updating an open ui
|
||||||
|
* @param force_open boolean Force the UI to (re)open, even if it's already open
|
||||||
*
|
*
|
||||||
* @return nothing
|
* @return nothing
|
||||||
*/
|
*/
|
||||||
/atom/movable/proc/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/atom/movable/proc/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
return
|
return
|
||||||
|
|
||||||
// Used by the Nano UI Manager (/datum/nanomanager) to track UIs opened by this mob
|
// Used by the Nano UI Manager (/datum/nanomanager) to track UIs opened by this mob
|
||||||
|
|||||||
@@ -39,19 +39,23 @@
|
|||||||
* @param ui_key string A string key used for the ui
|
* @param ui_key string A string key used for the ui
|
||||||
* @param ui /datum/nanoui An existing instance of the ui (can be null)
|
* @param ui /datum/nanoui An existing instance of the ui (can be null)
|
||||||
* @param data list The data to be passed to the ui, if it exists
|
* @param data list The data to be passed to the ui, if it exists
|
||||||
|
* @param force_open boolean The ui is being forced to (re)open, so close ui if it exists (instead of updating)
|
||||||
*
|
*
|
||||||
* @return /nanoui Returns the found ui, for null if none exists
|
* @return /nanoui Returns the found ui, for null if none exists
|
||||||
*/
|
*/
|
||||||
/datum/nanomanager/proc/try_update_ui(var/mob/user, src_object, ui_key, var/datum/nanoui/ui, data)
|
/datum/nanomanager/proc/try_update_ui(var/mob/user, src_object, ui_key, var/datum/nanoui/ui, data, var/force_open = 0)
|
||||||
if (isnull(ui)) // no ui has been passed, so we'll search for one
|
if (isnull(ui)) // no ui has been passed, so we'll search for one
|
||||||
{
|
{
|
||||||
ui = get_open_ui(user, src_object, ui_key)
|
ui = get_open_ui(user, src_object, ui_key)
|
||||||
}
|
}
|
||||||
if (!isnull(ui))
|
if (!isnull(ui))
|
||||||
// The UI is already open so push the data to it
|
// The UI is already open
|
||||||
ui.push_data(data)
|
if (!force_open)
|
||||||
return ui
|
ui.push_data(data)
|
||||||
|
return ui
|
||||||
|
else
|
||||||
|
//testing("nanomanager/try_update_ui mob [user.name] [src_object:name] [ui_key] [force_open] - forcing opening of ui")
|
||||||
|
ui.close()
|
||||||
return null
|
return null
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -66,14 +70,17 @@
|
|||||||
/datum/nanomanager/proc/get_open_ui(var/mob/user, src_object, ui_key)
|
/datum/nanomanager/proc/get_open_ui(var/mob/user, src_object, ui_key)
|
||||||
var/src_object_key = "\ref[src_object]"
|
var/src_object_key = "\ref[src_object]"
|
||||||
if (isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list))
|
if (isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list))
|
||||||
|
//testing("nanomanager/get_open_ui mob [user.name] [src_object:name] [ui_key] - there are no uis open")
|
||||||
return null
|
return null
|
||||||
else if (isnull(open_uis[src_object_key][ui_key]) || !istype(open_uis[src_object_key][ui_key], /list))
|
else if (isnull(open_uis[src_object_key][ui_key]) || !istype(open_uis[src_object_key][ui_key], /list))
|
||||||
|
//testing("nanomanager/get_open_ui mob [user.name] [src_object:name] [ui_key] - there are no uis open for this object")
|
||||||
return null
|
return null
|
||||||
|
|
||||||
for (var/datum/nanoui/ui in open_uis[src_object_key][ui_key])
|
for (var/datum/nanoui/ui in open_uis[src_object_key][ui_key])
|
||||||
if (ui.user == user)
|
if (ui.user == user)
|
||||||
return ui
|
return ui
|
||||||
|
|
||||||
|
//testing("nanomanager/get_open_ui mob [user.name] [src_object:name] [ui_key] - ui not found")
|
||||||
return null
|
return null
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -83,7 +90,7 @@
|
|||||||
*
|
*
|
||||||
* @return int The number of uis updated
|
* @return int The number of uis updated
|
||||||
*/
|
*/
|
||||||
/datum/nanomanager/proc/update_uis(src_object)
|
/datum/nanomanager/proc/update_uis(src_object)
|
||||||
var/src_object_key = "\ref[src_object]"
|
var/src_object_key = "\ref[src_object]"
|
||||||
if (isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list))
|
if (isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list))
|
||||||
return 0
|
return 0
|
||||||
@@ -128,7 +135,8 @@
|
|||||||
*/
|
*/
|
||||||
/datum/nanomanager/proc/close_user_uis(var/mob/user, src_object = null, ui_key = null)
|
/datum/nanomanager/proc/close_user_uis(var/mob/user, src_object = null, ui_key = null)
|
||||||
if (isnull(user.open_uis) || !istype(user.open_uis, /list) || open_uis.len == 0)
|
if (isnull(user.open_uis) || !istype(user.open_uis, /list) || open_uis.len == 0)
|
||||||
return 0 // has no open uis
|
//testing("nanomanager/close_user_uis mob [user.name] has no open uis")
|
||||||
|
return 0 // has no open uis
|
||||||
|
|
||||||
var/close_count = 0
|
var/close_count = 0
|
||||||
for (var/datum/nanoui/ui in user.open_uis)
|
for (var/datum/nanoui/ui in user.open_uis)
|
||||||
@@ -136,6 +144,8 @@
|
|||||||
ui.close()
|
ui.close()
|
||||||
close_count++
|
close_count++
|
||||||
|
|
||||||
|
//testing("nanomanager/close_user_uis mob [user.name] closed [open_uis.len] of [close_count] uis")
|
||||||
|
|
||||||
return close_count
|
return close_count
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -157,6 +167,7 @@
|
|||||||
var/list/uis = open_uis[src_object_key][ui.ui_key]
|
var/list/uis = open_uis[src_object_key][ui.ui_key]
|
||||||
uis.Add(ui)
|
uis.Add(ui)
|
||||||
processing_uis.Add(ui)
|
processing_uis.Add(ui)
|
||||||
|
//testing("nanomanager/ui_opened mob [ui.user.name] [ui.src_object:name] [ui.ui_key] - user.open_uis [ui.user.open_uis.len] | uis [uis.len] | processing_uis [processing_uis.len]")
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove a /nanoui ui from the list of open uis
|
* Remove a /nanoui ui from the list of open uis
|
||||||
@@ -176,7 +187,11 @@
|
|||||||
processing_uis.Remove(ui)
|
processing_uis.Remove(ui)
|
||||||
ui.user.open_uis.Remove(ui)
|
ui.user.open_uis.Remove(ui)
|
||||||
var/list/uis = open_uis[src_object_key][ui.ui_key]
|
var/list/uis = open_uis[src_object_key][ui.ui_key]
|
||||||
return uis.Remove(ui)
|
uis.Remove(ui)
|
||||||
|
|
||||||
|
//testing("nanomanager/ui_closed mob [ui.user.name] [ui.src_object:name] [ui.ui_key] - user.open_uis [ui.user.open_uis.len] | uis [uis.len] | processing_uis [processing_uis.len]")
|
||||||
|
|
||||||
|
return 1
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is called on user logout
|
* This is called on user logout
|
||||||
@@ -189,6 +204,7 @@
|
|||||||
|
|
||||||
//
|
//
|
||||||
/datum/nanomanager/proc/user_logout(var/mob/user)
|
/datum/nanomanager/proc/user_logout(var/mob/user)
|
||||||
|
//testing("nanomanager/user_logout user [user.name]")
|
||||||
return close_user_uis(user)
|
return close_user_uis(user)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -201,7 +217,9 @@
|
|||||||
* @return nothing
|
* @return nothing
|
||||||
*/
|
*/
|
||||||
/datum/nanomanager/proc/user_transferred(var/mob/oldMob, var/mob/newMob)
|
/datum/nanomanager/proc/user_transferred(var/mob/oldMob, var/mob/newMob)
|
||||||
|
//testing("nanomanager/user_transferred from mob [oldMob.name] to mob [newMob.name]")
|
||||||
if (isnull(oldMob.open_uis) || !istype(oldMob.open_uis, /list) || open_uis.len == 0)
|
if (isnull(oldMob.open_uis) || !istype(oldMob.open_uis, /list) || open_uis.len == 0)
|
||||||
|
//testing("nanomanager/user_transferred mob [oldMob.name] has no open uis")
|
||||||
return 0 // has no open uis
|
return 0 // has no open uis
|
||||||
|
|
||||||
if (isnull(newMob.open_uis) || !istype(newMob.open_uis, /list))
|
if (isnull(newMob.open_uis) || !istype(newMob.open_uis, /list))
|
||||||
|
|||||||
@@ -41,6 +41,8 @@ nanoui is used to open and update nano browser uis
|
|||||||
// the body content for this ui, do not change unless you know what you're doing
|
// the body content for this ui, do not change unless you know what you're doing
|
||||||
// the #mainTemplate div will contain the compiled "main" template html
|
// the #mainTemplate div will contain the compiled "main" template html
|
||||||
var/content = "<div id='mainTemplate'></div>"
|
var/content = "<div id='mainTemplate'></div>"
|
||||||
|
// the title of this ui
|
||||||
|
var/state_key = "default"
|
||||||
// initial data, containing the full data structure, must be sent to the ui (the data structure cannot be extended later on)
|
// initial data, containing the full data structure, must be sent to the ui (the data structure cannot be extended later on)
|
||||||
var/list/initial_data[0]
|
var/list/initial_data[0]
|
||||||
// set to 1 to update the ui automatically every master_controller tick
|
// set to 1 to update the ui automatically every master_controller tick
|
||||||
@@ -86,14 +88,18 @@ nanoui is used to open and update nano browser uis
|
|||||||
add_common_assets()
|
add_common_assets()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this proc to add assets which are common to all nano uis
|
* Use this proc to add assets which are common to (and required by) all nano uis
|
||||||
*
|
*
|
||||||
* @return nothing
|
* @return nothing
|
||||||
*/
|
*/
|
||||||
/datum/nanoui/proc/add_common_assets()
|
/datum/nanoui/proc/add_common_assets()
|
||||||
add_script("libraries.min.js") // The jQuery library
|
add_script("libraries.min.js") // A JS file comprising of jQuery, doT.js and jQuery Timer libraries (compressed together)
|
||||||
add_script("nano_config.js") // The NanoConfig JS, this is used to store configuration values.
|
add_script("nano_utility.js") // The NanoUtility JS, this is used to store utility functions.
|
||||||
add_script("nano_update.js") // The NanoUpdate JS, this is used to receive updates and apply them.
|
add_script("nano_template.js") // The NanoTemplate JS, this is used to render templates.
|
||||||
|
add_script("nano_state_manager.js") // The NanoStateManager JS, it handles updates from the server and passes data to the current state
|
||||||
|
add_script("nano_state.js") // The NanoState JS, this is the base state which all states must inherit from
|
||||||
|
add_script("nano_state_default.js") // The NanoStateDefault JS, this is the "default" state (used by all UIs by default), which inherits from NanoState
|
||||||
|
add_script("nano_base_callbacks.js") // The NanoBaseCallbacks JS, this is used to set up (before and after update) callbacks which are common to all templates
|
||||||
add_script("nano_base_helpers.js") // The NanoBaseHelpers JS, this is used to set up template helpers which are common to all templates
|
add_script("nano_base_helpers.js") // The NanoBaseHelpers JS, this is used to set up template helpers which are common to all templates
|
||||||
add_stylesheet("shared.css") // this CSS sheet is common to all UIs
|
add_stylesheet("shared.css") // this CSS sheet is common to all UIs
|
||||||
add_stylesheet("icons.css") // this CSS sheet is common to all UIs
|
add_stylesheet("icons.css") // this CSS sheet is common to all UIs
|
||||||
@@ -107,12 +113,15 @@ nanoui is used to open and update nano browser uis
|
|||||||
* @return nothing
|
* @return nothing
|
||||||
*/
|
*/
|
||||||
/datum/nanoui/proc/set_status(state, push_update)
|
/datum/nanoui/proc/set_status(state, push_update)
|
||||||
if (state != status)
|
if (state != status) // Only update if it is different
|
||||||
status = state
|
if (status == STATUS_DISABLED)
|
||||||
if (push_update || !status)
|
status = state
|
||||||
push_data(list(), 1) // Update the UI, force the update in case the status is 0
|
if (push_update)
|
||||||
else
|
update()
|
||||||
status = state
|
else
|
||||||
|
status = state
|
||||||
|
if (push_update || status == 0)
|
||||||
|
push_data(null, 1) // Update the UI, force the update in case the status is 0, data is null so that previous data is used
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update the status (visibility) of this ui based on the user's status
|
* Update the status (visibility) of this ui based on the user's status
|
||||||
@@ -121,7 +130,7 @@ nanoui is used to open and update nano browser uis
|
|||||||
*
|
*
|
||||||
* @return nothing
|
* @return nothing
|
||||||
*/
|
*/
|
||||||
/datum/nanoui/proc/update_status(push_update = 0)
|
/datum/nanoui/proc/update_status(var/push_update = 0)
|
||||||
if (istype(user, /mob/living/silicon/ai))
|
if (istype(user, /mob/living/silicon/ai))
|
||||||
set_status(STATUS_INTERACTIVE, push_update) // interactive (green visibility)
|
set_status(STATUS_INTERACTIVE, push_update) // interactive (green visibility)
|
||||||
else if (istype(user, /mob/living/silicon/robot))
|
else if (istype(user, /mob/living/silicon/robot))
|
||||||
@@ -169,21 +178,39 @@ nanoui is used to open and update nano browser uis
|
|||||||
* @return nothing
|
* @return nothing
|
||||||
*/
|
*/
|
||||||
/datum/nanoui/proc/set_initial_data(list/data)
|
/datum/nanoui/proc/set_initial_data(list/data)
|
||||||
initial_data = add_default_data(data)
|
initial_data = data
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add default data to the data being sent to the ui.
|
* Get config data to sent to the ui.
|
||||||
*
|
*
|
||||||
* @param data /list The list of data to be modified
|
* @return /list config data
|
||||||
*
|
|
||||||
* @return /list modified data
|
|
||||||
*/
|
*/
|
||||||
/datum/nanoui/proc/add_default_data(list/data)
|
/datum/nanoui/proc/get_config_data()
|
||||||
data["ui"] = list(
|
var/list/config_data = list(
|
||||||
|
"title" = title,
|
||||||
|
"srcObject" = list("name" = src_object.name),
|
||||||
|
"stateKey" = state_key,
|
||||||
"status" = status,
|
"status" = status,
|
||||||
"user" = list("name" = user.name)
|
"user" = list("name" = user.name)
|
||||||
)
|
)
|
||||||
return data
|
return config_data
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get data to sent to the ui.
|
||||||
|
*
|
||||||
|
* @param data /list The list of general data for this ui (can be null to use previous data sent)
|
||||||
|
*
|
||||||
|
* @return /list data to send to the ui
|
||||||
|
*/
|
||||||
|
/datum/nanoui/proc/get_send_data(var/list/data)
|
||||||
|
var/list/config_data = get_config_data()
|
||||||
|
|
||||||
|
var/list/send_data = list("config" = config_data)
|
||||||
|
|
||||||
|
if (!isnull(data))
|
||||||
|
send_data["data"] = data
|
||||||
|
|
||||||
|
return send_data
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the browser window options for this ui
|
* Set the browser window options for this ui
|
||||||
@@ -239,7 +266,17 @@ nanoui is used to open and update nano browser uis
|
|||||||
* @return nothing
|
* @return nothing
|
||||||
*/
|
*/
|
||||||
/datum/nanoui/proc/set_content(ncontent)
|
/datum/nanoui/proc/set_content(ncontent)
|
||||||
content = ncontent
|
content = ncontent
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the state key for use in the frontend Javascript
|
||||||
|
*
|
||||||
|
* @param nstate_key string The new HTML content for this UI
|
||||||
|
*
|
||||||
|
* @return nothing
|
||||||
|
*/
|
||||||
|
/datum/nanoui/proc/set_state_key(nstate_key)
|
||||||
|
state_key = nstate_key
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set whether or not to use the "old" on close logic (mainly unset_machine())
|
* Set whether or not to use the "old" on close logic (mainly unset_machine())
|
||||||
@@ -273,9 +310,8 @@ nanoui is used to open and update nano browser uis
|
|||||||
if (templatel_data.len > 0)
|
if (templatel_data.len > 0)
|
||||||
template_data_json = list2json(templatel_data)
|
template_data_json = list2json(templatel_data)
|
||||||
|
|
||||||
var/initial_data_json = "{}" // An empty JSON object
|
var/list/send_data = get_send_data(initial_data)
|
||||||
if (initial_data.len > 0)
|
var/initial_data_json = list2json(send_data)
|
||||||
initial_data_json = list2json(initial_data)
|
|
||||||
|
|
||||||
var/url_parameters_json = list2json(list("src" = "\ref[src]"))
|
var/url_parameters_json = list2json(list("src" = "\ref[src]"))
|
||||||
|
|
||||||
@@ -286,11 +322,11 @@ nanoui is used to open and update nano browser uis
|
|||||||
<script type='text/javascript'>
|
<script type='text/javascript'>
|
||||||
function receiveUpdateData(jsonString)
|
function receiveUpdateData(jsonString)
|
||||||
{
|
{
|
||||||
// We need both jQuery and NanoUpdate to be able to recieve data
|
// We need both jQuery and NanoStateManager to be able to recieve data
|
||||||
// At the moment any data received before those libraries are loaded will be lost
|
// At the moment any data received before those libraries are loaded will be lost
|
||||||
if (typeof NanoUpdate != 'undefined' && typeof jQuery != 'undefined')
|
if (typeof NanoStateManager != 'undefined' && typeof jQuery != 'undefined')
|
||||||
{
|
{
|
||||||
NanoUpdate.receiveUpdateData(jsonString);
|
NanoStateManager.receiveUpdateData(jsonString);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
@@ -300,7 +336,14 @@ nanoui is used to open and update nano browser uis
|
|||||||
<div id='uiWrapper'>
|
<div id='uiWrapper'>
|
||||||
[title ? "<div id='uiTitleWrapper'><div id='uiStatusIcon' class='icon24 uiStatusGood'></div><div id='uiTitle'>[title]</div><div id='uiTitleFluff'></div></div>" : ""]
|
[title ? "<div id='uiTitleWrapper'><div id='uiStatusIcon' class='icon24 uiStatusGood'></div><div id='uiTitle'>[title]</div><div id='uiTitleFluff'></div></div>" : ""]
|
||||||
<div id='uiContent'>
|
<div id='uiContent'>
|
||||||
<div id='uiNoJavaScript'>Initiating...</div>
|
<div id='uiLoadingNotice'>Initiating...</div>
|
||||||
|
<noscript>
|
||||||
|
<div id='uiNoScript'>
|
||||||
|
<h2>JAVASCRIPT REQUIRED</h2>
|
||||||
|
<p>Your Internet Explorer's Javascript is disabled (or broken).<br/>
|
||||||
|
Enable Javascript and then open this UI again.</p>
|
||||||
|
</div>
|
||||||
|
</noscript>
|
||||||
"}
|
"}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -377,9 +420,10 @@ nanoui is used to open and update nano browser uis
|
|||||||
if (status == STATUS_DISABLED && !force_push)
|
if (status == STATUS_DISABLED && !force_push)
|
||||||
return // Cannot update UI, no visibility
|
return // Cannot update UI, no visibility
|
||||||
|
|
||||||
data = add_default_data(data)
|
var/list/send_data = get_send_data(data)
|
||||||
|
|
||||||
//user << list2json(data) // used for debugging
|
//user << list2json(data) // used for debugging
|
||||||
user << output(list2params(list(list2json(data))),"[window_id].browser:receiveUpdateData")
|
user << output(list2params(list(list2json(send_data))),"[window_id].browser:receiveUpdateData")
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This Topic() proc is called whenever a user clicks on a link within a Nano UI
|
* This Topic() proc is called whenever a user clicks on a link within a Nano UI
|
||||||
@@ -410,7 +454,15 @@ nanoui is used to open and update nano browser uis
|
|||||||
return
|
return
|
||||||
|
|
||||||
if (status && (update || is_auto_updating))
|
if (status && (update || is_auto_updating))
|
||||||
src_object.ui_interact(user, ui_key, src) // Update the UI (update_status() is called whenever a UI is updated)
|
update() // Update the UI (update_status() is called whenever a UI is updated)
|
||||||
else
|
else
|
||||||
update_status(1) // Not updating UI, so lets check here if status has changed
|
update_status(1) // Not updating UI, so lets check here if status has changed
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the UI
|
||||||
|
*
|
||||||
|
* @return nothing
|
||||||
|
*/
|
||||||
|
/datum/nanoui/proc/update(var/force_open = 0)
|
||||||
|
src_object.ui_interact(user, ui_key, src, force_open)
|
||||||
|
|
||||||
|
|||||||
@@ -673,7 +673,7 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
// do APC interaction
|
// do APC interaction
|
||||||
user.set_machine(src)
|
//user.set_machine(src)
|
||||||
src.interact(user)
|
src.interact(user)
|
||||||
|
|
||||||
/obj/machinery/power/apc/attack_alien(mob/living/carbon/alien/humanoid/user)
|
/obj/machinery/power/apc/attack_alien(mob/living/carbon/alien/humanoid/user)
|
||||||
@@ -741,7 +741,7 @@
|
|||||||
else
|
else
|
||||||
return 0 // 0 = User is not a Malf AI
|
return 0 // 0 = User is not a Malf AI
|
||||||
|
|
||||||
/obj/machinery/power/apc/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/machinery/power/apc/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
if(!user)
|
if(!user)
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -752,7 +752,7 @@
|
|||||||
"powerCellStatus" = cell ? cell.percent() : null,
|
"powerCellStatus" = cell ? cell.percent() : null,
|
||||||
"chargeMode" = chargemode,
|
"chargeMode" = chargemode,
|
||||||
"chargingStatus" = charging,
|
"chargingStatus" = charging,
|
||||||
"totalLoad" = lastused_equip + lastused_light + lastused_environ,
|
"totalLoad" = round(lastused_equip + lastused_light + lastused_environ),
|
||||||
"coverLocked" = coverlocked,
|
"coverLocked" = coverlocked,
|
||||||
"siliconUser" = istype(user, /mob/living/silicon),
|
"siliconUser" = istype(user, /mob/living/silicon),
|
||||||
"malfStatus" = get_malf_status(user),
|
"malfStatus" = get_malf_status(user),
|
||||||
@@ -760,7 +760,7 @@
|
|||||||
"powerChannels" = list(
|
"powerChannels" = list(
|
||||||
list(
|
list(
|
||||||
"title" = "Equipment",
|
"title" = "Equipment",
|
||||||
"powerLoad" = lastused_equip,
|
"powerLoad" = round(lastused_equip),
|
||||||
"status" = equipment,
|
"status" = equipment,
|
||||||
"topicParams" = list(
|
"topicParams" = list(
|
||||||
"auto" = list("eqp" = 3),
|
"auto" = list("eqp" = 3),
|
||||||
@@ -770,7 +770,7 @@
|
|||||||
),
|
),
|
||||||
list(
|
list(
|
||||||
"title" = "Lighting",
|
"title" = "Lighting",
|
||||||
"powerLoad" = lastused_light,
|
"powerLoad" = round(lastused_light),
|
||||||
"status" = lighting,
|
"status" = lighting,
|
||||||
"topicParams" = list(
|
"topicParams" = list(
|
||||||
"auto" = list("lgt" = 3),
|
"auto" = list("lgt" = 3),
|
||||||
@@ -780,7 +780,7 @@
|
|||||||
),
|
),
|
||||||
list(
|
list(
|
||||||
"title" = "Environment",
|
"title" = "Environment",
|
||||||
"powerLoad" = lastused_environ,
|
"powerLoad" = round(lastused_environ),
|
||||||
"status" = environ,
|
"status" = environ,
|
||||||
"topicParams" = list(
|
"topicParams" = list(
|
||||||
"auto" = list("env" = 3),
|
"auto" = list("env" = 3),
|
||||||
@@ -792,7 +792,7 @@
|
|||||||
)
|
)
|
||||||
|
|
||||||
// update the ui if it exists, returns null if no ui is passed/found
|
// update the ui if it exists, returns null if no ui is passed/found
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
if (!ui)
|
if (!ui)
|
||||||
// the ui does not exist, so we'll create a new() one
|
// the ui does not exist, so we'll create a new() one
|
||||||
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
||||||
@@ -961,14 +961,14 @@
|
|||||||
/obj/machinery/power/apc/Topic(href, href_list, var/usingUI = 1)
|
/obj/machinery/power/apc/Topic(href, href_list, var/usingUI = 1)
|
||||||
if(!(isrobot(usr) && (href_list["apcwires"] || href_list["pulse"])))
|
if(!(isrobot(usr) && (href_list["apcwires"] || href_list["pulse"])))
|
||||||
if(!can_use(usr, 1))
|
if(!can_use(usr, 1))
|
||||||
return
|
return 0
|
||||||
src.add_fingerprint(usr)
|
src.add_fingerprint(usr)
|
||||||
|
|
||||||
if (href_list["apcwires"])
|
if (href_list["apcwires"])
|
||||||
var/t1 = text2num(href_list["apcwires"])
|
var/t1 = text2num(href_list["apcwires"])
|
||||||
if (!( istype(usr.get_active_hand(), /obj/item/weapon/wirecutters) ))
|
if (!( istype(usr.get_active_hand(), /obj/item/weapon/wirecutters) ))
|
||||||
usr << "You need wirecutters!"
|
usr << "You need wirecutters!"
|
||||||
return
|
return 0
|
||||||
if (src.isWireColorCut(t1))
|
if (src.isWireColorCut(t1))
|
||||||
src.mend(t1)
|
src.mend(t1)
|
||||||
else
|
else
|
||||||
@@ -977,10 +977,10 @@
|
|||||||
var/t1 = text2num(href_list["pulse"])
|
var/t1 = text2num(href_list["pulse"])
|
||||||
if (!istype(usr.get_active_hand(), /obj/item/device/multitool))
|
if (!istype(usr.get_active_hand(), /obj/item/device/multitool))
|
||||||
usr << "You need a multitool!"
|
usr << "You need a multitool!"
|
||||||
return
|
return 0
|
||||||
if (src.isWireColorCut(t1))
|
if (src.isWireColorCut(t1))
|
||||||
usr << "You can't pulse a cut wire."
|
usr << "You can't pulse a cut wire."
|
||||||
return
|
return 0
|
||||||
else
|
else
|
||||||
src.pulse(t1)
|
src.pulse(t1)
|
||||||
else if (href_list["lock"])
|
else if (href_list["lock"])
|
||||||
@@ -1027,11 +1027,11 @@
|
|||||||
else if( href_list["close"] )
|
else if( href_list["close"] )
|
||||||
nanomanager.close_user_uis(usr, src)
|
nanomanager.close_user_uis(usr, src)
|
||||||
|
|
||||||
return
|
return 0
|
||||||
else if (href_list["close2"])
|
else if (href_list["close2"])
|
||||||
usr << browse(null, "window=apcwires")
|
usr << browse(null, "window=apcwires")
|
||||||
|
|
||||||
return
|
return 0
|
||||||
|
|
||||||
else if (href_list["overload"])
|
else if (href_list["overload"])
|
||||||
if( istype(usr, /mob/living/silicon) && !src.aidisabled )
|
if( istype(usr, /mob/living/silicon) && !src.aidisabled )
|
||||||
@@ -1042,7 +1042,7 @@
|
|||||||
if( istype(malfai, /mob/living/silicon/ai) && !src.aidisabled )
|
if( istype(malfai, /mob/living/silicon/ai) && !src.aidisabled )
|
||||||
if (malfai.malfhacking)
|
if (malfai.malfhacking)
|
||||||
malfai << "You are already hacking an APC."
|
malfai << "You are already hacking an APC."
|
||||||
return
|
return 0
|
||||||
malfai << "Beginning override of APC systems. This takes some time, and you cannot perform other actions during the process."
|
malfai << "Beginning override of APC systems. This takes some time, and you cannot perform other actions during the process."
|
||||||
malfai.malfhack = src
|
malfai.malfhack = src
|
||||||
malfai.malfhacking = 1
|
malfai.malfhacking = 1
|
||||||
@@ -1071,7 +1071,7 @@
|
|||||||
if(usingUI)
|
if(usingUI)
|
||||||
src.updateDialog()
|
src.updateDialog()
|
||||||
|
|
||||||
return
|
return 1
|
||||||
|
|
||||||
/*/obj/machinery/power/apc/proc/malfoccupy(var/mob/living/silicon/ai/malf)
|
/*/obj/machinery/power/apc/proc/malfoccupy(var/mob/living/silicon/ai/malf)
|
||||||
if(!istype(malf))
|
if(!istype(malf))
|
||||||
|
|||||||
@@ -250,7 +250,7 @@
|
|||||||
building_terminal = 0
|
building_terminal = 0
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/power/smes/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/machinery/power/smes/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
|
|
||||||
if(stat & BROKEN)
|
if(stat & BROKEN)
|
||||||
return
|
return
|
||||||
@@ -269,7 +269,7 @@
|
|||||||
data["outputLoad"] = round(loaddemand)
|
data["outputLoad"] = round(loaddemand)
|
||||||
|
|
||||||
// update the ui if it exists, returns null if no ui is passed/found
|
// update the ui if it exists, returns null if no ui is passed/found
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
if (!ui)
|
if (!ui)
|
||||||
// the ui does not exist, so we'll create a new() one
|
// the ui does not exist, so we'll create a new() one
|
||||||
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
||||||
|
|||||||
@@ -104,7 +104,7 @@
|
|||||||
*
|
*
|
||||||
* @return nothing
|
* @return nothing
|
||||||
*/
|
*/
|
||||||
/obj/machinery/chem_dispenser/ui_interact(mob/user, ui_key = "main",var/datum/nanoui/ui = null)
|
/obj/machinery/chem_dispenser/ui_interact(mob/user, ui_key = "main",var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
if(broken_requirements.len)
|
if(broken_requirements.len)
|
||||||
user << "<span class='warning'>[src] is broken. [broken_requirements[broken_requirements[1]]]</span>"
|
user << "<span class='warning'>[src] is broken. [broken_requirements[broken_requirements[1]]]</span>"
|
||||||
return
|
return
|
||||||
@@ -114,8 +114,8 @@
|
|||||||
// this is the data which will be sent to the ui
|
// this is the data which will be sent to the ui
|
||||||
var/data[0]
|
var/data[0]
|
||||||
data["amount"] = amount
|
data["amount"] = amount
|
||||||
data["energy"] = energy
|
data["energy"] = round(energy)
|
||||||
data["maxEnergy"] = max_energy
|
data["maxEnergy"] = round(max_energy)
|
||||||
data["isBeakerLoaded"] = beaker ? 1 : 0
|
data["isBeakerLoaded"] = beaker ? 1 : 0
|
||||||
data["glass"] = accept_glass
|
data["glass"] = accept_glass
|
||||||
var beakerContents[0]
|
var beakerContents[0]
|
||||||
@@ -141,7 +141,7 @@
|
|||||||
data["chemicals"] = chemicals
|
data["chemicals"] = chemicals
|
||||||
|
|
||||||
// update the ui if it exists, returns null if no ui is passed/found
|
// update the ui if it exists, returns null if no ui is passed/found
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
if (!ui)
|
if (!ui)
|
||||||
// the ui does not exist, so we'll create a new() one
|
// the ui does not exist, so we'll create a new() one
|
||||||
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
||||||
|
|||||||
@@ -114,7 +114,7 @@
|
|||||||
if(total_purity && fresh_coolant)
|
if(total_purity && fresh_coolant)
|
||||||
coolant_purity = total_purity / fresh_coolant
|
coolant_purity = total_purity / fresh_coolant
|
||||||
|
|
||||||
/obj/machinery/radiocarbon_spectrometer/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/machinery/radiocarbon_spectrometer/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
|
|
||||||
if(user.stat)
|
if(user.stat)
|
||||||
return
|
return
|
||||||
@@ -146,7 +146,7 @@
|
|||||||
data["rad_shield_on"] = rad_shield
|
data["rad_shield_on"] = rad_shield
|
||||||
|
|
||||||
// update the ui if it exists, returns null if no ui is passed/found
|
// update the ui if it exists, returns null if no ui is passed/found
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
if (!ui)
|
if (!ui)
|
||||||
// the ui does not exist, so we'll create a new() one
|
// the ui does not exist, so we'll create a new() one
|
||||||
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
ui_interact(user)
|
ui_interact(user)
|
||||||
|
|
||||||
/obj/machinery/computer/shuttle_control/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/machinery/computer/shuttle_control/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
var/data[0]
|
var/data[0]
|
||||||
var/datum/shuttle/ferry/shuttle = shuttle_controller.shuttles[shuttle_tag]
|
var/datum/shuttle/ferry/shuttle = shuttle_controller.shuttles[shuttle_tag]
|
||||||
if (!istype(shuttle))
|
if (!istype(shuttle))
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
"can_force" = shuttle.can_force(),
|
"can_force" = shuttle.can_force(),
|
||||||
)
|
)
|
||||||
|
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
|
|
||||||
if (!ui)
|
if (!ui)
|
||||||
ui = new(user, src, ui_key, "shuttle_control_console.tmpl", "[shuttle_tag] Shuttle Control", 470, 310)
|
ui = new(user, src, ui_key, "shuttle_control_console.tmpl", "[shuttle_tag] Shuttle Control", 470, 310)
|
||||||
|
|||||||
@@ -153,7 +153,7 @@
|
|||||||
read_authorization(W)
|
read_authorization(W)
|
||||||
..()
|
..()
|
||||||
|
|
||||||
/obj/machinery/computer/shuttle_control/emergency/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/machinery/computer/shuttle_control/emergency/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
var/data[0]
|
var/data[0]
|
||||||
var/datum/shuttle/ferry/emergency/shuttle = shuttle_controller.shuttles[shuttle_tag]
|
var/datum/shuttle/ferry/emergency/shuttle = shuttle_controller.shuttles[shuttle_tag]
|
||||||
if (!istype(shuttle))
|
if (!istype(shuttle))
|
||||||
@@ -211,7 +211,7 @@
|
|||||||
"user" = debug? user : null,
|
"user" = debug? user : null,
|
||||||
)
|
)
|
||||||
|
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
|
|
||||||
if (!ui)
|
if (!ui)
|
||||||
ui = new(user, src, ui_key, "escape_shuttle_control_console.tmpl", "Shuttle Control", 470, 420)
|
ui = new(user, src, ui_key, "escape_shuttle_control_console.tmpl", "Shuttle Control", 470, 420)
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
if(..()) return
|
if(..()) return
|
||||||
ui_interact(user)
|
ui_interact(user)
|
||||||
|
|
||||||
/obj/machinery/computer/centrifuge/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/machinery/computer/centrifuge/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
user.set_machine(src)
|
user.set_machine(src)
|
||||||
|
|
||||||
var/data[0]
|
var/data[0]
|
||||||
@@ -70,7 +70,7 @@
|
|||||||
data["antibodies"] = A && A.data["antibodies"] ? antigens2string(A.data["antibodies"]) : null
|
data["antibodies"] = A && A.data["antibodies"] ? antigens2string(A.data["antibodies"]) : null
|
||||||
data["is_antibody_sample"] = 1
|
data["is_antibody_sample"] = 1
|
||||||
|
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
if (!ui)
|
if (!ui)
|
||||||
ui = new(user, src, ui_key, "isolation_centrifuge.tmpl", src.name, 400, 500)
|
ui = new(user, src, ui_key, "isolation_centrifuge.tmpl", src.name, 400, 500)
|
||||||
ui.set_initial_data(data)
|
ui.set_initial_data(data)
|
||||||
|
|||||||
@@ -43,7 +43,7 @@
|
|||||||
if(..()) return
|
if(..()) return
|
||||||
ui_interact(user)
|
ui_interact(user)
|
||||||
|
|
||||||
/obj/machinery/computer/diseasesplicer/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/machinery/computer/diseasesplicer/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
user.set_machine(src)
|
user.set_machine(src)
|
||||||
|
|
||||||
var/data[0]
|
var/data[0]
|
||||||
@@ -81,7 +81,7 @@
|
|||||||
else
|
else
|
||||||
data["info"] = "No dish loaded."
|
data["info"] = "No dish loaded."
|
||||||
|
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
if (!ui)
|
if (!ui)
|
||||||
ui = new(user, src, ui_key, "disease_splicer.tmpl", src.name, 400, 600)
|
ui = new(user, src, ui_key, "disease_splicer.tmpl", src.name, 400, 600)
|
||||||
ui.set_initial_data(data)
|
ui.set_initial_data(data)
|
||||||
|
|||||||
@@ -50,7 +50,7 @@
|
|||||||
if(stat & (NOPOWER|BROKEN)) return
|
if(stat & (NOPOWER|BROKEN)) return
|
||||||
ui_interact(user)
|
ui_interact(user)
|
||||||
|
|
||||||
/obj/machinery/disease2/incubator/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/machinery/disease2/incubator/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
user.set_machine(src)
|
user.set_machine(src)
|
||||||
|
|
||||||
var/data[0]
|
var/data[0]
|
||||||
@@ -82,7 +82,7 @@
|
|||||||
for (var/ID in virus)
|
for (var/ID in virus)
|
||||||
data["blood_already_infected"] = virus[ID]
|
data["blood_already_infected"] = virus[ID]
|
||||||
|
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
if (!ui)
|
if (!ui)
|
||||||
ui = new(user, src, ui_key, "dish_incubator.tmpl", src.name, 400, 600)
|
ui = new(user, src, ui_key, "dish_incubator.tmpl", src.name, 400, 600)
|
||||||
ui.set_initial_data(data)
|
ui.set_initial_data(data)
|
||||||
|
|||||||
@@ -49,7 +49,7 @@
|
|||||||
if(stat & (NOPOWER|BROKEN)) return
|
if(stat & (NOPOWER|BROKEN)) return
|
||||||
ui_interact(user)
|
ui_interact(user)
|
||||||
|
|
||||||
/obj/machinery/disease2/isolator/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
/obj/machinery/disease2/isolator/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
user.set_machine(src)
|
user.set_machine(src)
|
||||||
|
|
||||||
var/data[0]
|
var/data[0]
|
||||||
@@ -100,7 +100,7 @@
|
|||||||
"name" = entry.fields["name"], \
|
"name" = entry.fields["name"], \
|
||||||
"description" = replacetext(desc, "\n", ""))
|
"description" = replacetext(desc, "\n", ""))
|
||||||
|
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
if (!ui)
|
if (!ui)
|
||||||
ui = new(user, src, ui_key, "pathogenic_isolator.tmpl", src.name, 400, 500)
|
ui = new(user, src, ui_key, "pathogenic_isolator.tmpl", src.name, 400, 500)
|
||||||
ui.set_initial_data(data)
|
ui.set_initial_data(data)
|
||||||
|
|||||||
4
nano/To BYOND Cache.bat
Normal file
4
nano/To BYOND Cache.bat
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
copy css\* "%USERPROFILE%\Documents\BYOND\cache" /y
|
||||||
|
copy images\* "%USERPROFILE%\Documents\BYOND\cache" /y
|
||||||
|
copy js\* "%USERPROFILE%\Documents\BYOND\cache" /y
|
||||||
|
copy templates\* "%USERPROFILE%\Documents\BYOND\cache" /y
|
||||||
@@ -149,7 +149,7 @@ h4 {
|
|||||||
clear: both;
|
clear: both;
|
||||||
padding: 8px;
|
padding: 8px;
|
||||||
}
|
}
|
||||||
#uiNoJavaScript {
|
#uiLoadingNotice {
|
||||||
position: relative;
|
position: relative;
|
||||||
background: url(uiNoticeBackground.jpg) 50% 50%;
|
background: url(uiNoticeBackground.jpg) 50% 50%;
|
||||||
color: #000000;
|
color: #000000;
|
||||||
@@ -159,6 +159,22 @@ h4 {
|
|||||||
padding: 3px 4px 3px 4px;
|
padding: 3px 4px 3px 4px;
|
||||||
margin: 4px 0 4px 0;
|
margin: 4px 0 4px 0;
|
||||||
}
|
}
|
||||||
|
#uiNoScript {
|
||||||
|
position: fixed;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
margin: -60px 0 0 -150px;
|
||||||
|
width: 280px;
|
||||||
|
height: 120px;
|
||||||
|
background: #ffffff;
|
||||||
|
border: 2px solid #ff0000;
|
||||||
|
color: #000000;
|
||||||
|
font-size: 10px;
|
||||||
|
font-weight: bold;
|
||||||
|
z-index: 9999;
|
||||||
|
padding: 0px 10px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
.white {
|
.white {
|
||||||
color: white;
|
color: white;
|
||||||
@@ -261,7 +277,6 @@ div.notice {
|
|||||||
color: #e9c183;
|
color: #e9c183;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.itemContentWide {
|
.itemContentWide {
|
||||||
float: left;
|
float: left;
|
||||||
width: 79%;
|
width: 79%;
|
||||||
|
|||||||
2
nano/js/libraries.min.js
vendored
2
nano/js/libraries.min.js
vendored
File diff suppressed because one or more lines are too long
157
nano/js/libraries/2-doT.js
Normal file
157
nano/js/libraries/2-doT.js
Normal file
@@ -0,0 +1,157 @@
|
|||||||
|
(function () {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var doT = {
|
||||||
|
version: '1.0.1-nanoui',
|
||||||
|
templateSettings: {
|
||||||
|
evaluate: /\{\{([\s\S]+?)\}\}/g,
|
||||||
|
interpolate: /\{\{:([\s\S]+?)\}\}/g,
|
||||||
|
encode: /\{\{>([\s\S]+?)\}\}/g,
|
||||||
|
use: /\{\{#([\s\S]+?)\}\}/g,
|
||||||
|
define: /\{\{##\s*([\w\.$]+)\s*(\:|=)([\s\S]+?)#\}\}/g,
|
||||||
|
conditional: /\{\{\/?if\s*([\s\S]*?)\s*\}\}/g,
|
||||||
|
conditionalElse: /\{\{else\s*([\s\S]*?)\s*\}\}/g,
|
||||||
|
iterate: /\{\{\/?for\s*(?:\}\}|([\s\S]+?)\s*(?:\:\s*([\w$]+))?\s*(?:\:\s*([\w$]+))?\s*\}\})/g,
|
||||||
|
props: /\{\{\/?props\s*(?:\}\}|([\s\S]+?)\s*(?:\:\s*([\w$]+))?\s*(?:\:\s*([\w$]+))?\s*\}\})/g,
|
||||||
|
empty: /\{\{empty\}\}/g,
|
||||||
|
varname: 'data, config, helper',
|
||||||
|
strip: true,
|
||||||
|
append: true,
|
||||||
|
selfcontained: false
|
||||||
|
},
|
||||||
|
template: undefined, //fn, compile template
|
||||||
|
compile: undefined //fn, for express
|
||||||
|
}, global;
|
||||||
|
|
||||||
|
if (typeof module !== 'undefined' && module.exports) {
|
||||||
|
module.exports = doT;
|
||||||
|
} else if (typeof define === 'function' && define.amd) {
|
||||||
|
define(function () {
|
||||||
|
return doT;
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
global = (function () {
|
||||||
|
return this || (0, eval)('this');
|
||||||
|
}());
|
||||||
|
global.doT = doT;
|
||||||
|
}
|
||||||
|
|
||||||
|
function encodeHTMLSource() {
|
||||||
|
var encodeHTMLRules = { "&": "&", "<": "<", ">": ">", '"': '"', "'": ''', "/": '/' },
|
||||||
|
matchHTML = /&(?!#?\w+;)|<|>|"|'|\//g;
|
||||||
|
return function () {
|
||||||
|
return this ? this.replace(matchHTML, function (m) {
|
||||||
|
return encodeHTMLRules[m] || m;
|
||||||
|
}) : this;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
String.prototype.encodeHTML = encodeHTMLSource();
|
||||||
|
|
||||||
|
var startend = {
|
||||||
|
append: { start: "'+(", end: ")+'", endencode: "||'').toString().encodeHTML()+'" },
|
||||||
|
split: { start: "';out+=(", end: ");out+='", endencode: "||'').toString().encodeHTML();out+='"}
|
||||||
|
}, skip = /$^/;
|
||||||
|
|
||||||
|
function resolveDefs(c, block, def) {
|
||||||
|
return ((typeof block === 'string') ? block : block.toString())
|
||||||
|
.replace(c.define || skip, function (m, code, assign, value) {
|
||||||
|
if (code.indexOf('def.') === 0) {
|
||||||
|
code = code.substring(4);
|
||||||
|
}
|
||||||
|
if (!(code in def)) {
|
||||||
|
if (assign === ':') {
|
||||||
|
if (c.defineParams) value.replace(c.defineParams, function (m, param, v) {
|
||||||
|
def[code] = {arg: param, text: v};
|
||||||
|
});
|
||||||
|
if (!(code in def)) def[code] = value;
|
||||||
|
} else {
|
||||||
|
new Function("def", "def['" + code + "']=" + value)(def);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
})
|
||||||
|
.replace(c.use || skip, function (m, code) {
|
||||||
|
if (c.useParams) code = code.replace(c.useParams, function (m, s, d, param) {
|
||||||
|
if (def[d] && def[d].arg && param) {
|
||||||
|
var rw = (d + ":" + param).replace(/'|\\/g, '_');
|
||||||
|
def.__exp = def.__exp || {};
|
||||||
|
def.__exp[rw] = def[d].text.replace(new RegExp("(^|[^\\w$])" + def[d].arg + "([^\\w$])", "g"), "$1" + param + "$2");
|
||||||
|
return s + "def.__exp['" + rw + "']";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
var v = new Function("def", "return " + code)(def);
|
||||||
|
return v ? resolveDefs(c, v, def) : v;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function unescape(code) {
|
||||||
|
return code.replace(/\\('|\\)/g, "$1").replace(/[\r\t\n]/g, ' ');
|
||||||
|
}
|
||||||
|
|
||||||
|
doT.template = function (tmpl, c, def) {
|
||||||
|
c = c || doT.templateSettings;
|
||||||
|
var cse = c.append ? startend.append : startend.split, needhtmlencode, sid = 0,
|
||||||
|
str = (c.use || c.define) ? resolveDefs(c, tmpl, def || {}) : tmpl;
|
||||||
|
|
||||||
|
str = ("var out='" + (c.strip ? str.replace(/(^|\r|\n)\t* +| +\t*(\r|\n|$)/g, ' ')
|
||||||
|
.replace(/\r|\n|\t|\/\*[\s\S]*?\*\//g, '') : str)
|
||||||
|
.replace(/'|\\/g, '\\$&')
|
||||||
|
.replace(c.interpolate || skip, function (m, code) {
|
||||||
|
return cse.start + unescape(code) + cse.end;
|
||||||
|
})
|
||||||
|
.replace(c.encode || skip, function (m, code) {
|
||||||
|
needhtmlencode = true;
|
||||||
|
return cse.start + unescape(code) + cse.endencode;
|
||||||
|
})
|
||||||
|
.replace(c.conditional || skip, function (m, code) {
|
||||||
|
return (code ? "';if(" + unescape(code) + "){out+='" : "';}out+='");
|
||||||
|
})
|
||||||
|
.replace(c.conditionalElse || skip, function (m, code) {
|
||||||
|
return (code ? "';}else if(" + unescape(code) + "){out+='" : "';}else{out+='");
|
||||||
|
})
|
||||||
|
.replace(c.iterate || skip, function (m, iterate, vname, iname) {
|
||||||
|
if (!iterate) return "';} } out+='";
|
||||||
|
sid += 1;
|
||||||
|
vname = vname || "value";
|
||||||
|
iname = iname || "index";
|
||||||
|
iterate = unescape(iterate);
|
||||||
|
var arrayName = "arr" + sid;
|
||||||
|
return "';var " + arrayName + "=" + iterate + ";if(" + arrayName + " && " + arrayName + ".length > 0){var " + vname + "," + iname + "=-1,l" + sid + "=" + arrayName + ".length-1;while(" + iname + "<l" + sid + "){"
|
||||||
|
+ vname + "=" + arrayName + "[" + iname + "+=1];out+='";
|
||||||
|
})
|
||||||
|
.replace(c.props || skip, function (m, iterate, vname, iname) {
|
||||||
|
if (!iterate) return "';} } out+='";
|
||||||
|
sid += 1;
|
||||||
|
vname = vname || "value";
|
||||||
|
iname = iname || "key";
|
||||||
|
iterate = unescape(iterate);
|
||||||
|
var objectName = "arr" + sid;
|
||||||
|
return "';var " + objectName + "=" + iterate + ";if(" + objectName + " && Object.size(" + objectName + ") > 0){var " + vname + ";for( var " + iname + " in " + objectName + "){ if (!" + objectName + ".hasOwnProperty(" + iname + ")) continue; " + vname + "=" + objectName + "[" + iname + "];out+='";
|
||||||
|
})
|
||||||
|
.replace(c.empty || skip, function (m) {
|
||||||
|
return "';}}else{if(true){out+='"; // The "if(true)" condition is required to account for the for tag closing with two brackets
|
||||||
|
})
|
||||||
|
.replace(c.evaluate || skip, function (m, code) {
|
||||||
|
return "';" + unescape(code) + "out+='";
|
||||||
|
})
|
||||||
|
+ "';return out;")
|
||||||
|
.replace(/\n/g, '\\n').replace(/\t/g, '\\t').replace(/\r/g, '\\r')
|
||||||
|
.replace(/(\s|;|\}|^|\{)out\+='';/g, '$1').replace(/\+''/g, '')
|
||||||
|
.replace(/(\s|;|\}|^|\{)out\+=''\+/g, '$1out+=');
|
||||||
|
|
||||||
|
if (needhtmlencode && c.selfcontained) {
|
||||||
|
str = "String.prototype.encodeHTML=(" + encodeHTMLSource.toString() + "());" + str;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
return new Function(c.varname, str);
|
||||||
|
} catch (e) {
|
||||||
|
if (typeof console !== 'undefined') console.log("Could not create a template function: " + str);
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
doT.compile = function (tmpl, def) {
|
||||||
|
return doT.template(tmpl, null, def);
|
||||||
|
};
|
||||||
|
}());
|
||||||
File diff suppressed because it is too large
Load Diff
85
nano/js/nano_base_callbacks.js
Normal file
85
nano/js/nano_base_callbacks.js
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
// NanoBaseCallbacks is where the base callbacks (common to all templates) are stored
|
||||||
|
NanoBaseCallbacks = function ()
|
||||||
|
{
|
||||||
|
// _canClick is used to disable clicks for a short period after each click (to avoid mis-clicks)
|
||||||
|
var _canClick = true;
|
||||||
|
|
||||||
|
var _baseBeforeUpdateCallbacks = {}
|
||||||
|
|
||||||
|
var _baseAfterUpdateCallbacks = {
|
||||||
|
// this callback is triggered after new data is processed
|
||||||
|
// it updates the status/visibility icon and adds click event handling to buttons/links
|
||||||
|
status: function (updateData) {
|
||||||
|
var uiStatusClass;
|
||||||
|
if (updateData['config']['status'] == 2)
|
||||||
|
{
|
||||||
|
uiStatusClass = 'icon24 uiStatusGood';
|
||||||
|
$('.linkActive').removeClass('inactive');
|
||||||
|
}
|
||||||
|
else if (updateData['config']['status'] == 1)
|
||||||
|
{
|
||||||
|
uiStatusClass = 'icon24 uiStatusAverage';
|
||||||
|
$('.linkActive').addClass('inactive');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
uiStatusClass = 'icon24 uiStatusBad'
|
||||||
|
$('.linkActive').addClass('inactive');
|
||||||
|
}
|
||||||
|
$('#uiStatusIcon').attr('class', uiStatusClass);
|
||||||
|
|
||||||
|
$('.linkActive').stopTime('linkPending');
|
||||||
|
$('.linkActive').removeClass('linkPending');
|
||||||
|
|
||||||
|
$('.linkActive').off('click');
|
||||||
|
$('.linkActive').on('click', function (event) {
|
||||||
|
event.preventDefault();
|
||||||
|
var href = $(this).data('href');
|
||||||
|
if (href != null && _canClick)
|
||||||
|
{
|
||||||
|
_canClick = false;
|
||||||
|
$('body').oneTime(300, 'enableClick', function () {
|
||||||
|
_canClick = true;
|
||||||
|
});
|
||||||
|
if (updateData['config']['status'] == 2)
|
||||||
|
{
|
||||||
|
$(this).oneTime(300, 'linkPending', function () {
|
||||||
|
$(this).addClass('linkPending');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
window.location.href = href;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return {
|
||||||
|
addCallbacks: function () {
|
||||||
|
NanoStateManager.addBeforeUpdateCallbacks(_baseBeforeUpdateCallbacks);
|
||||||
|
NanoStateManager.addAfterUpdateCallbacks(_baseAfterUpdateCallbacks);
|
||||||
|
},
|
||||||
|
removeCallbacks: function () {
|
||||||
|
for (var callbackKey in _baseBeforeUpdateCallbacks)
|
||||||
|
{
|
||||||
|
if (_baseBeforeUpdateCallbacks.hasOwnProperty(callbackKey))
|
||||||
|
{
|
||||||
|
NanoStateManager.removeBeforeUpdateCallback(callbackKey);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (var callbackKey in _baseAfterUpdateCallbacks)
|
||||||
|
{
|
||||||
|
if (_baseAfterUpdateCallbacks.hasOwnProperty(callbackKey))
|
||||||
|
{
|
||||||
|
NanoStateManager.removeAfterUpdateCallback(callbackKey);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
} ();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,21 +1,8 @@
|
|||||||
// NanoBaseHelpers is where the base template helpers (common to all templates) are stored
|
// NanoBaseHelpers is where the base template helpers (common to all templates) are stored
|
||||||
NanoBaseHelpers = function ()
|
NanoBaseHelpers = function ()
|
||||||
{
|
{
|
||||||
var _urlParameters = {}; // This is populated with the base url parameters (used by all links), which is probaby just the "src" parameter
|
var _baseHelpers = {
|
||||||
|
// change ui styling to "syndicate mode"
|
||||||
var init = function ()
|
|
||||||
{
|
|
||||||
var body = $('body'); // We store data in the body tag, it's as good a place as any
|
|
||||||
|
|
||||||
_urlParameters = body.data('urlParameters');
|
|
||||||
|
|
||||||
initHelpers();
|
|
||||||
};
|
|
||||||
|
|
||||||
var initHelpers = function ()
|
|
||||||
{
|
|
||||||
$.views.helpers({
|
|
||||||
|
|
||||||
syndicateMode: function() {
|
syndicateMode: function() {
|
||||||
$('body').css("background-color","#8f1414");
|
$('body').css("background-color","#8f1414");
|
||||||
$('body').css("background-image","url('uiBackground-Syndicate.png')");
|
$('body').css("background-image","url('uiBackground-Syndicate.png')");
|
||||||
@@ -26,9 +13,8 @@ NanoBaseHelpers = function ()
|
|||||||
$('#uiTitleFluff').css("background-position","50% 50%");
|
$('#uiTitleFluff').css("background-position","50% 50%");
|
||||||
$('#uiTitleFluff').css("background-repeat", "no-repeat");
|
$('#uiTitleFluff').css("background-repeat", "no-repeat");
|
||||||
|
|
||||||
return '';
|
return '';
|
||||||
},
|
},
|
||||||
|
|
||||||
// Generate a Byond link
|
// Generate a Byond link
|
||||||
link: function( text, icon, parameters, status, elementClass, elementId) {
|
link: function( text, icon, parameters, status, elementClass, elementId) {
|
||||||
|
|
||||||
@@ -56,7 +42,7 @@ NanoBaseHelpers = function ()
|
|||||||
return '<div unselectable="on" class="link ' + iconClass + ' ' + elementClass + ' ' + status + '" ' + elementIdHtml + '>' + iconHtml + text + '</div>';
|
return '<div unselectable="on" class="link ' + iconClass + ' ' + elementClass + ' ' + status + '" ' + elementIdHtml + '>' + iconHtml + text + '</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
return '<div unselectable="on" class="link linkActive ' + iconClass + ' ' + elementClass + '" data-href="' + generateHref(parameters) + '" ' + elementIdHtml + '>' + iconHtml + text + '</div>';
|
return '<div unselectable="on" class="link linkActive ' + iconClass + ' ' + elementClass + '" data-href="' + NanoUtility.generateHref(parameters) + '" ' + elementIdHtml + '>' + iconHtml + text + '</div>';
|
||||||
},
|
},
|
||||||
// Round a number to the nearest integer
|
// Round a number to the nearest integer
|
||||||
round: function(number) {
|
round: function(number) {
|
||||||
@@ -91,12 +77,12 @@ NanoBaseHelpers = function ()
|
|||||||
}
|
}
|
||||||
return '';
|
return '';
|
||||||
},
|
},
|
||||||
formatNumber: function(x) {
|
formatNumber: function(x) {
|
||||||
// From http://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript
|
// From http://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript
|
||||||
var parts = x.toString().split(".");
|
var parts = x.toString().split(".");
|
||||||
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
||||||
return parts.join(".");
|
return parts.join(".");
|
||||||
},
|
},
|
||||||
// Display a bar. Used to show health, capacity, etc.
|
// Display a bar. Used to show health, capacity, etc.
|
||||||
displayBar: function(value, rangeMin, rangeMax, styleClass, showText) {
|
displayBar: function(value, rangeMin, rangeMax, styleClass, showText) {
|
||||||
|
|
||||||
@@ -172,7 +158,7 @@ NanoBaseHelpers = function ()
|
|||||||
status = 'selected';
|
status = 'selected';
|
||||||
}
|
}
|
||||||
|
|
||||||
html += '<div class="link ' + status + ' dnaSubBlock" data-href="' + generateHref(parameters) + '" id="dnaBlock' + index + '">' + characters[index] + '</div>'
|
html += '<div class="link ' + status + ' dnaSubBlock" data-href="' + NanoUtility.generateHref(parameters) + '" id="dnaBlock' + index + '">' + characters[index] + '</div>'
|
||||||
|
|
||||||
index++;
|
index++;
|
||||||
if (index % blockSize == 0 && index < characters.length)
|
if (index % blockSize == 0 && index < characters.length)
|
||||||
@@ -191,52 +177,26 @@ NanoBaseHelpers = function ()
|
|||||||
|
|
||||||
return html;
|
return html;
|
||||||
}
|
}
|
||||||
});
|
};
|
||||||
};
|
|
||||||
|
|
||||||
// generate a Byond href, combines _urlParameters with parameters
|
|
||||||
var generateHref = function (parameters)
|
|
||||||
{
|
|
||||||
var queryString = '?';
|
|
||||||
|
|
||||||
for (var key in _urlParameters)
|
|
||||||
{
|
|
||||||
if (_urlParameters.hasOwnProperty(key))
|
|
||||||
{
|
|
||||||
if (queryString !== '?')
|
|
||||||
{
|
|
||||||
queryString += ';';
|
|
||||||
}
|
|
||||||
queryString += key + '=' + _urlParameters[key];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (var key in parameters)
|
|
||||||
{
|
|
||||||
if (parameters.hasOwnProperty(key))
|
|
||||||
{
|
|
||||||
if (queryString !== '?')
|
|
||||||
{
|
|
||||||
queryString += ';';
|
|
||||||
}
|
|
||||||
queryString += key + '=' + parameters[key];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return queryString;
|
|
||||||
};
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
init: function ()
|
addHelpers: function ()
|
||||||
{
|
{
|
||||||
init();
|
NanoTemplate.addHelpers(_baseHelpers);
|
||||||
|
},
|
||||||
|
removeHelpers: function ()
|
||||||
|
{
|
||||||
|
for (var helperKey in _baseHelpers)
|
||||||
|
{
|
||||||
|
if (_baseHelpers.hasOwnProperty(helperKey))
|
||||||
|
{
|
||||||
|
NanoTemplate.removeHelper(helperKey);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
} ();
|
} ();
|
||||||
|
|
||||||
$(document).ready(function()
|
|
||||||
{
|
|
||||||
NanoBaseHelpers.init();
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
69
nano/js/nano_state.js
Normal file
69
nano/js/nano_state.js
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
// This is the base state class, it is not to be used directly
|
||||||
|
|
||||||
|
function NanoStateClass() {
|
||||||
|
/*if (typeof this.key != 'string' || !this.key.length)
|
||||||
|
{
|
||||||
|
alert('ERROR: Tried to create a state with an invalid state key: ' + this.key);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.key = this.key.toLowerCase();
|
||||||
|
|
||||||
|
NanoStateManager.addState(this);*/
|
||||||
|
}
|
||||||
|
|
||||||
|
NanoStateClass.prototype.key = null;
|
||||||
|
|
||||||
|
NanoStateClass.prototype.isCurrent = function () {
|
||||||
|
return NanoStateManager.getCurrentState() == this;
|
||||||
|
};
|
||||||
|
|
||||||
|
NanoStateClass.prototype.onAdd = function (previousState) {
|
||||||
|
// Do not add code here, add it to the 'default' state (nano_state_defaut.js) or create a new state and override this function
|
||||||
|
|
||||||
|
NanoBaseCallbacks.addCallbacks();
|
||||||
|
NanoBaseHelpers.addHelpers();
|
||||||
|
};
|
||||||
|
|
||||||
|
NanoStateClass.prototype.onRemove = function (nextState) {
|
||||||
|
// Do not add code here, add it to the 'default' state (nano_state_defaut.js) or create a new state and override this function
|
||||||
|
|
||||||
|
NanoBaseCallbacks.removeCallbacks();
|
||||||
|
NanoBaseHelpers.removeHelpers();
|
||||||
|
};
|
||||||
|
|
||||||
|
NanoStateClass.prototype.onBeforeUpdate = function (data) {
|
||||||
|
// Do not add code here, add it to the 'default' state (nano_state_defaut.js) or create a new state and override this function
|
||||||
|
|
||||||
|
data = NanoStateManager.executeBeforeUpdateCallbacks(data);
|
||||||
|
|
||||||
|
return data; // Return data to continue, return false to prevent onUpdate and onAfterUpdate
|
||||||
|
};
|
||||||
|
|
||||||
|
NanoStateClass.prototype.onUpdate = function (data) {
|
||||||
|
// Do not add code here, add it to the 'default' state (nano_state_defaut.js) or create a new state and override this function
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
$("#mainTemplate").html(NanoTemplate.parse('main', data)); // render the 'mail' template to the #mainTemplate div
|
||||||
|
}
|
||||||
|
catch(error)
|
||||||
|
{
|
||||||
|
alert('ERROR: An error occurred while rendering the UI: ' + error.message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
NanoStateClass.prototype.onAfterUpdate = function (data) {
|
||||||
|
// Do not add code here, add it to the 'default' state (nano_state_defaut.js) or create a new state and override this function
|
||||||
|
|
||||||
|
NanoStateManager.executeAfterUpdateCallbacks(data);
|
||||||
|
};
|
||||||
|
|
||||||
|
NanoStateClass.prototype.alertText = function (text) {
|
||||||
|
// Do not add code here, add it to the 'default' state (nano_state_defaut.js) or create a new state and override this function
|
||||||
|
|
||||||
|
alert(text);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
14
nano/js/nano_state_default.js
Normal file
14
nano/js/nano_state_default.js
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
NanoStateDefaultClass.inheritsFrom(NanoStateClass);
|
||||||
|
var NanoStateDefault = new NanoStateDefaultClass();
|
||||||
|
|
||||||
|
function NanoStateDefaultClass() {
|
||||||
|
|
||||||
|
this.key = 'default';
|
||||||
|
|
||||||
|
//this.parent.constructor.call(this);
|
||||||
|
|
||||||
|
this.key = this.key.toLowerCase();
|
||||||
|
|
||||||
|
NanoStateManager.addState(this);
|
||||||
|
}
|
||||||
227
nano/js/nano_state_manager.js
Normal file
227
nano/js/nano_state_manager.js
Normal file
@@ -0,0 +1,227 @@
|
|||||||
|
// NanoStateManager handles data from the server and uses it to render templates
|
||||||
|
NanoStateManager = function ()
|
||||||
|
{
|
||||||
|
// _isInitialised is set to true when all of this ui's templates have been processed/rendered
|
||||||
|
var _isInitialised = false;
|
||||||
|
|
||||||
|
// the array of template names to use for this ui
|
||||||
|
var _templates = null;
|
||||||
|
// the data for this ui
|
||||||
|
var _data = null;
|
||||||
|
// new data which arrives before _isInitialised is true is stored here for processing later
|
||||||
|
var _earlyUpdateData = null;
|
||||||
|
|
||||||
|
// this is an array of callbacks which are called when new data arrives, before it is processed
|
||||||
|
var _beforeUpdateCallbacks = {};
|
||||||
|
// this is an array of callbacks which are called when new data arrives, before it is processed
|
||||||
|
var _afterUpdateCallbacks = {};
|
||||||
|
|
||||||
|
// this is an array of state objects, these can be used to provide custom javascript logic
|
||||||
|
var _states = {};
|
||||||
|
|
||||||
|
var _currentState = null;
|
||||||
|
|
||||||
|
// the init function is called when the ui has loaded
|
||||||
|
// this function sets up the templates and base functionality
|
||||||
|
var init = function ()
|
||||||
|
{
|
||||||
|
$('#uiLoadingNotice').html('Loading...');
|
||||||
|
|
||||||
|
// We store initialData and templateData in the body tag, it's as good a place as any
|
||||||
|
_data = $('body').data('initialData');
|
||||||
|
|
||||||
|
if (_data == null || !_data.hasOwnProperty('config') || !_data.hasOwnProperty('data'))
|
||||||
|
{
|
||||||
|
alert('Error: Initial data did not load correctly.');
|
||||||
|
}
|
||||||
|
|
||||||
|
var stateKey = 'default';
|
||||||
|
if (_data['config'].hasOwnProperty('stateKey') && _data['config']['stateKey'])
|
||||||
|
{
|
||||||
|
stateKey = _data['config']['stateKey'].toLowerCase();
|
||||||
|
}
|
||||||
|
|
||||||
|
NanoStateManager.setCurrentState(stateKey);
|
||||||
|
|
||||||
|
$(document).on('templatesLoaded', function () {
|
||||||
|
doUpdate(_data);
|
||||||
|
|
||||||
|
_isInitialised = true;
|
||||||
|
$('#uiLoadingNotice').hide();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// Receive update data from the server
|
||||||
|
var receiveUpdateData = function (jsonString)
|
||||||
|
{
|
||||||
|
var updateData;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// parse the JSON string from the server into a JSON object
|
||||||
|
updateData = jQuery.parseJSON(jsonString);
|
||||||
|
}
|
||||||
|
catch (error)
|
||||||
|
{
|
||||||
|
alert(error.Message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!updateData.hasOwnProperty('data'))
|
||||||
|
{
|
||||||
|
if (_data && _data.hasOwnProperty('data'))
|
||||||
|
{
|
||||||
|
updateData['data'] = _data['data'];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
updateData['data'] = {};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_isInitialised) // all templates have been registered, so render them
|
||||||
|
{
|
||||||
|
doUpdate(updateData);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_data = updateData; // all templates have not been registered. We set _data directly here which will be applied after the template is loaded with the initial data
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// This function does the update by calling the methods on the current state
|
||||||
|
var doUpdate = function (data)
|
||||||
|
{
|
||||||
|
if (_currentState == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
data = _currentState.onBeforeUpdate(data);
|
||||||
|
|
||||||
|
if (data === false)
|
||||||
|
{
|
||||||
|
alert('data is false, return');
|
||||||
|
return; // A beforeUpdateCallback returned a false value, this prevents the render from occuring
|
||||||
|
}
|
||||||
|
|
||||||
|
_data = data;
|
||||||
|
|
||||||
|
_currentState.onUpdate(_data);
|
||||||
|
|
||||||
|
_currentState.onAfterUpdate(_data);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Execute all callbacks in the callbacks array/object provided, updateData is passed to them for processing and potential modification
|
||||||
|
var executeCallbacks = function (callbacks, data)
|
||||||
|
{
|
||||||
|
for (var key in callbacks)
|
||||||
|
{
|
||||||
|
if (callbacks.hasOwnProperty(key) && jQuery.isFunction(callbacks[key]))
|
||||||
|
{
|
||||||
|
data = callbacks[key].call(this, data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return data;
|
||||||
|
};
|
||||||
|
|
||||||
|
return {
|
||||||
|
init: function ()
|
||||||
|
{
|
||||||
|
init();
|
||||||
|
},
|
||||||
|
receiveUpdateData: function (jsonString)
|
||||||
|
{
|
||||||
|
receiveUpdateData(jsonString);
|
||||||
|
},
|
||||||
|
addBeforeUpdateCallback: function (key, callbackFunction)
|
||||||
|
{
|
||||||
|
_beforeUpdateCallbacks[key] = callbackFunction;
|
||||||
|
},
|
||||||
|
addBeforeUpdateCallbacks: function (callbacks) {
|
||||||
|
for (var callbackKey in callbacks) {
|
||||||
|
if (!callbacks.hasOwnProperty(callbackKey))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
NanoStateManager.addBeforeUpdateCallback(callbackKey, callbacks[callbackKey]);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
removeBeforeUpdateCallback: function (key)
|
||||||
|
{
|
||||||
|
if (_beforeUpdateCallbacks.hasOwnProperty(key))
|
||||||
|
{
|
||||||
|
delete _beforeUpdateCallbacks[key];
|
||||||
|
}
|
||||||
|
},
|
||||||
|
executeBeforeUpdateCallbacks: function (data) {
|
||||||
|
return executeCallbacks(_beforeUpdateCallbacks, data);
|
||||||
|
},
|
||||||
|
addAfterUpdateCallback: function (key, callbackFunction)
|
||||||
|
{
|
||||||
|
_afterUpdateCallbacks[key] = callbackFunction;
|
||||||
|
},
|
||||||
|
addAfterUpdateCallbacks: function (callbacks) {
|
||||||
|
for (var callbackKey in callbacks) {
|
||||||
|
if (!callbacks.hasOwnProperty(callbackKey))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
NanoStateManager.addAfterUpdateCallback(callbackKey, callbacks[callbackKey]);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
removeAfterUpdateCallback: function (key)
|
||||||
|
{
|
||||||
|
if (_afterUpdateCallbacks.hasOwnProperty(key))
|
||||||
|
{
|
||||||
|
delete _afterUpdateCallbacks[key];
|
||||||
|
}
|
||||||
|
},
|
||||||
|
executeAfterUpdateCallbacks: function (data) {
|
||||||
|
return executeCallbacks(_afterUpdateCallbacks, data);
|
||||||
|
},
|
||||||
|
addState: function (state)
|
||||||
|
{
|
||||||
|
if (!(state instanceof NanoStateClass))
|
||||||
|
{
|
||||||
|
alert('ERROR: Attempted to add a state which is not instanceof NanoStateClass');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!state.key)
|
||||||
|
{
|
||||||
|
alert('ERROR: Attempted to add a state with an invalid stateKey');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_states[state.key] = state;
|
||||||
|
},
|
||||||
|
setCurrentState: function (stateKey)
|
||||||
|
{
|
||||||
|
if (typeof stateKey == 'undefined' || !stateKey) {
|
||||||
|
alert('ERROR: No state key was passed!');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!_states.hasOwnProperty(stateKey))
|
||||||
|
{
|
||||||
|
alert('ERROR: Attempted to set a current state which does not exist: ' + stateKey);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
var previousState = _currentState;
|
||||||
|
|
||||||
|
_currentState = _states[stateKey];
|
||||||
|
|
||||||
|
if (previousState != null) {
|
||||||
|
previousState.onRemove(_currentState);
|
||||||
|
}
|
||||||
|
|
||||||
|
_currentState.onAdd(previousState);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
getCurrentState: function ()
|
||||||
|
{
|
||||||
|
return _currentState;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
} ();
|
||||||
|
|
||||||
130
nano/js/nano_template.js
Normal file
130
nano/js/nano_template.js
Normal file
@@ -0,0 +1,130 @@
|
|||||||
|
|
||||||
|
var NanoTemplate = function () {
|
||||||
|
|
||||||
|
var _templates = {};
|
||||||
|
var _compiledTemplates = {};
|
||||||
|
|
||||||
|
var _helpers = {};
|
||||||
|
|
||||||
|
var init = function () {
|
||||||
|
// We store initialData and templateData in the body tag, it's as good a place as any
|
||||||
|
var templateData = $('body').data('templateData');
|
||||||
|
|
||||||
|
if (templateData == null)
|
||||||
|
{
|
||||||
|
alert('Error: Template data did not load correctly.');
|
||||||
|
}
|
||||||
|
|
||||||
|
// we count the number of templates for this ui so that we know when they've all been rendered
|
||||||
|
var templateCount = 0;
|
||||||
|
for (var key in templateData)
|
||||||
|
{
|
||||||
|
if (templateData.hasOwnProperty(key))
|
||||||
|
{
|
||||||
|
templateCount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!templateCount)
|
||||||
|
{
|
||||||
|
alert('ERROR: No templates listed!');
|
||||||
|
}
|
||||||
|
|
||||||
|
// load markup for each template and register it
|
||||||
|
for (var key in templateData)
|
||||||
|
{
|
||||||
|
if (!templateData.hasOwnProperty(key))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$.when($.ajax({
|
||||||
|
url: templateData[key],
|
||||||
|
cache: false,
|
||||||
|
dataType: 'text'
|
||||||
|
}))
|
||||||
|
.done(function(templateMarkup) {
|
||||||
|
|
||||||
|
//templateMarkup = templateMarkup.replace(/ +\) *\}\}/g, ')}}');
|
||||||
|
|
||||||
|
templateMarkup += '<div class="clearBoth"></div>';
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
NanoTemplate.addTemplate(key, templateMarkup)
|
||||||
|
|
||||||
|
templateCount--;
|
||||||
|
|
||||||
|
if (templateCount <= 0)
|
||||||
|
{
|
||||||
|
$(document).trigger('templatesLoaded');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(error)
|
||||||
|
{
|
||||||
|
alert('ERROR: An error occurred while loading the UI: ' + error.message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.fail(function () {
|
||||||
|
alert('ERROR: Loading template ' + key + '(' + templateData[key] + ') failed!');
|
||||||
|
});;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var compileTemplates = function () {
|
||||||
|
|
||||||
|
for (var key in _templates) {
|
||||||
|
try {
|
||||||
|
_compiledTemplates[key] = doT.template(_templates[key], null, _templates)
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
alert(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return {
|
||||||
|
init: function () {
|
||||||
|
init();
|
||||||
|
},
|
||||||
|
addTemplate: function (key, templateString) {
|
||||||
|
_templates[key] = templateString;
|
||||||
|
},
|
||||||
|
parse: function (templateKey, data) {
|
||||||
|
if (!_compiledTemplates.hasOwnProperty(templateKey)) {
|
||||||
|
if (!_templates.hasOwnProperty(templateKey)) {
|
||||||
|
alert('ERROR: Template "' + templateKey + '" does not exist in _compiledTemplates!');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
compileTemplates();
|
||||||
|
}
|
||||||
|
return _compiledTemplates[templateKey].call(this, data['data'], data['config'], _helpers);
|
||||||
|
},
|
||||||
|
addHelper: function (helperName, helperFunction) {
|
||||||
|
if (!jQuery.isFunction(helperFunction)) {
|
||||||
|
alert('NanoTemplate.addHelper failed to add ' + helperName + ' as it is not a function.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_helpers[helperName] = helperFunction;
|
||||||
|
},
|
||||||
|
addHelpers: function (helpers) {
|
||||||
|
for (var helperName in helpers) {
|
||||||
|
if (!helpers.hasOwnProperty(helperName))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
NanoTemplate.addHelper(helperName, helpers[helperName]);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
removeHelper: function (helperName) {
|
||||||
|
if (helpers.hasOwnProperty(helperName))
|
||||||
|
{
|
||||||
|
delete _helpers[helperName];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}();
|
||||||
|
|
||||||
|
|
||||||
@@ -1,236 +0,0 @@
|
|||||||
// NanoUpdate handles data from the server and uses it to render templates
|
|
||||||
NanoUpdate = function ()
|
|
||||||
{
|
|
||||||
// _isInitialised is set to true when all of this ui's templates have been processed/rendered
|
|
||||||
var _isInitialised = false;
|
|
||||||
|
|
||||||
// the array of template names to use for this ui
|
|
||||||
var _templates = null;
|
|
||||||
// the data for this ui
|
|
||||||
var _data = null;
|
|
||||||
// new data which arrives before _isInitialised is true is stored here for processing later
|
|
||||||
var _earlyUpdateData = null;
|
|
||||||
|
|
||||||
// this is an array of callbacks which are called when new data arrives, before it is processed
|
|
||||||
var _beforeUpdateCallbacks = [];
|
|
||||||
// this is an array of callbacks which are called when new data arrives, before it is processed
|
|
||||||
var _afterUpdateCallbacks = [];
|
|
||||||
|
|
||||||
// _canClick is used to disable clicks for a short period after each click (to avoid mis-clicks)
|
|
||||||
var _canClick = true;
|
|
||||||
|
|
||||||
// the init function is called when the ui has loaded
|
|
||||||
// this function sets up the templates and base functionality
|
|
||||||
var init = function ()
|
|
||||||
{
|
|
||||||
$('#uiNoJavaScript').html('Loading...');
|
|
||||||
|
|
||||||
// this callback is triggered after new data is processed
|
|
||||||
// it updates the status/visibility icon and adds click event handling to buttons/links
|
|
||||||
NanoUpdate.addAfterUpdateCallback(function (updateData) {
|
|
||||||
var uiStatusClass;
|
|
||||||
if (updateData['ui']['status'] == 2)
|
|
||||||
{
|
|
||||||
uiStatusClass = 'icon24 uiStatusGood';
|
|
||||||
$('.linkActive').removeClass('inactive');
|
|
||||||
}
|
|
||||||
else if (updateData['ui']['status'] == 1)
|
|
||||||
{
|
|
||||||
uiStatusClass = 'icon24 uiStatusAverage';
|
|
||||||
$('.linkActive').addClass('inactive');
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
uiStatusClass = 'icon24 uiStatusBad'
|
|
||||||
$('.linkActive').addClass('inactive');
|
|
||||||
}
|
|
||||||
$('#uiStatusIcon').attr('class', uiStatusClass);
|
|
||||||
|
|
||||||
$('.linkActive').stopTime('linkPending');
|
|
||||||
$('.linkActive').removeClass('linkPending');
|
|
||||||
|
|
||||||
$('.linkActive').off('click');
|
|
||||||
$('.linkActive').on('click', function (event) {
|
|
||||||
event.preventDefault();
|
|
||||||
var href = $(this).data('href');
|
|
||||||
if (href != null && _canClick)
|
|
||||||
{
|
|
||||||
_canClick = false;
|
|
||||||
$('body').oneTime(300, 'enableClick', function () {
|
|
||||||
_canClick = true;
|
|
||||||
});
|
|
||||||
if (updateData['ui']['status'] == 2)
|
|
||||||
{
|
|
||||||
$(this).oneTime(300, 'linkPending', function () {
|
|
||||||
$(this).addClass('linkPending');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
window.location.href = href;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// We store initialData and templateData in the body tag, it's as good a place as any
|
|
||||||
var body = $('body');
|
|
||||||
var templateData = body.data('templateData');
|
|
||||||
var initialData = body.data('initialData');
|
|
||||||
|
|
||||||
if (templateData == null || !initialData == null)
|
|
||||||
{
|
|
||||||
alert('Error: Initial data did not load correctly.');
|
|
||||||
}
|
|
||||||
|
|
||||||
// we count the number of templates for this ui so that we know when they've all been rendered
|
|
||||||
var templateCount = 0;
|
|
||||||
for (var key in templateData)
|
|
||||||
{
|
|
||||||
if (templateData.hasOwnProperty(key))
|
|
||||||
{
|
|
||||||
templateCount++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!templateCount)
|
|
||||||
{
|
|
||||||
alert('ERROR: No templates listed!');
|
|
||||||
}
|
|
||||||
|
|
||||||
// load markup for each template and register it
|
|
||||||
for (var key in templateData)
|
|
||||||
{
|
|
||||||
if (templateData.hasOwnProperty(key))
|
|
||||||
{
|
|
||||||
$.when($.get(templateData[key]))
|
|
||||||
.done(function(templateMarkup) {
|
|
||||||
if (_templates == null)
|
|
||||||
{
|
|
||||||
_templates = {};
|
|
||||||
}
|
|
||||||
|
|
||||||
templateMarkup = templateMarkup.replace(/ +\) *\}\}/g, ')}}');
|
|
||||||
|
|
||||||
templateMarkup += '<div class="clearBoth"></div>'
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
_templates[key] = $.templates(key, templateMarkup);
|
|
||||||
|
|
||||||
templateCount--;
|
|
||||||
|
|
||||||
if (templateCount <= 0)
|
|
||||||
{
|
|
||||||
if (_earlyUpdateData !== null) // Newer data has already arrived, so update
|
|
||||||
{
|
|
||||||
renderTemplates(_earlyUpdateData);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
renderTemplates(initialData);
|
|
||||||
}
|
|
||||||
_isInitialised = true;
|
|
||||||
$('#uiNoJavaScript').hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
executeCallbacks(_afterUpdateCallbacks, _data);
|
|
||||||
}
|
|
||||||
catch(error)
|
|
||||||
{
|
|
||||||
alert('ERROR: An error occurred while loading the UI: ' + error.message);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Receive update data from the server
|
|
||||||
var receiveUpdateData = function (jsonString)
|
|
||||||
{
|
|
||||||
var updateData;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// parse the JSON string from the server into a JSON object
|
|
||||||
updateData = jQuery.parseJSON(jsonString);
|
|
||||||
}
|
|
||||||
catch (error)
|
|
||||||
{
|
|
||||||
alert(error.Message);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (_isInitialised) // all templates have been registered, so render them
|
|
||||||
{
|
|
||||||
executeCallbacks(_beforeUpdateCallbacks, updateData);
|
|
||||||
|
|
||||||
renderTemplates(updateData);
|
|
||||||
|
|
||||||
executeCallbacks(_afterUpdateCallbacks, updateData);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_earlyUpdateData = updateData; // all templates have not been registered. We set _earlyUpdateData which will be applied after the template is loaded with the initial data
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// This function renders the template with the latest data
|
|
||||||
// It has to be done recursively as each piece of data is observed individually and needs to be updated individually
|
|
||||||
var renderTemplates = function (data)
|
|
||||||
{
|
|
||||||
if (!_templates.hasOwnProperty("main"))
|
|
||||||
{
|
|
||||||
alert('Error: Main template not found.');
|
|
||||||
}
|
|
||||||
|
|
||||||
_data = data;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
$("#mainTemplate").html(_templates["main"].render(_data));
|
|
||||||
}
|
|
||||||
catch(error)
|
|
||||||
{
|
|
||||||
alert('ERROR: An error occurred while rendering the UI: ' + error.message);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Execute all callbacks in the callbacks array/object provided, updateData is passed to them for processing
|
|
||||||
var executeCallbacks = function (callbacks, updateData)
|
|
||||||
{
|
|
||||||
for (var index in callbacks)
|
|
||||||
{
|
|
||||||
callbacks[index].call(this, updateData);
|
|
||||||
}
|
|
||||||
|
|
||||||
return updateData;
|
|
||||||
};
|
|
||||||
|
|
||||||
return {
|
|
||||||
init: function ()
|
|
||||||
{
|
|
||||||
init();
|
|
||||||
},
|
|
||||||
isInitialised: function ()
|
|
||||||
{
|
|
||||||
return _isInitialised;
|
|
||||||
},
|
|
||||||
receiveUpdateData: function (jsonString)
|
|
||||||
{
|
|
||||||
receiveUpdateData(jsonString);
|
|
||||||
},
|
|
||||||
addBeforeUpdateCallback: function (callbackFunction)
|
|
||||||
{
|
|
||||||
_beforeUpdateCallbacks.push(callbackFunction);
|
|
||||||
},
|
|
||||||
addAfterUpdateCallback: function (callbackFunction)
|
|
||||||
{
|
|
||||||
_afterUpdateCallbacks.push(callbackFunction);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
} ();
|
|
||||||
|
|
||||||
$(document).ready(function()
|
|
||||||
{
|
|
||||||
NanoUpdate.init();
|
|
||||||
});
|
|
||||||
@@ -1,20 +1,61 @@
|
|||||||
// NanoConfig is the place to store utility functions
|
// NanoUtility is the place to store utility functions
|
||||||
var NanoConfig = function ()
|
var NanoUtility = function ()
|
||||||
{
|
{
|
||||||
return {
|
var _urlParameters = {}; // This is populated with the base url parameters (used by all links), which is probaby just the "src" parameter
|
||||||
|
|
||||||
|
return {
|
||||||
init: function ()
|
init: function ()
|
||||||
{
|
{
|
||||||
if (typeof jQuery == 'undefined') {
|
var body = $('body'); // We store data in the body tag, it's as good a place as any
|
||||||
alert('ERROR: jQuery failed to load!');
|
|
||||||
}
|
|
||||||
if (typeof $.views == 'undefined') {
|
|
||||||
alert('ERROR: JSRender failed to load!');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} ();
|
|
||||||
|
|
||||||
NanoConfig.init();
|
_urlParameters = body.data('urlParameters');
|
||||||
|
},
|
||||||
|
// generate a Byond href, combines _urlParameters with parameters
|
||||||
|
generateHref: function (parameters)
|
||||||
|
{
|
||||||
|
var queryString = '?';
|
||||||
|
|
||||||
|
for (var key in _urlParameters)
|
||||||
|
{
|
||||||
|
if (_urlParameters.hasOwnProperty(key))
|
||||||
|
{
|
||||||
|
if (queryString !== '?')
|
||||||
|
{
|
||||||
|
queryString += ';';
|
||||||
|
}
|
||||||
|
queryString += key + '=' + _urlParameters[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var key in parameters)
|
||||||
|
{
|
||||||
|
if (parameters.hasOwnProperty(key))
|
||||||
|
{
|
||||||
|
if (queryString !== '?')
|
||||||
|
{
|
||||||
|
queryString += ';';
|
||||||
|
}
|
||||||
|
queryString += key + '=' + parameters[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return queryString;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} ();
|
||||||
|
|
||||||
|
if (typeof jQuery == 'undefined') {
|
||||||
|
alert('ERROR: Javascript library failed to load!');
|
||||||
|
}
|
||||||
|
if (typeof doT == 'undefined') {
|
||||||
|
alert('ERROR: Template engine failed to load!');
|
||||||
|
}
|
||||||
|
|
||||||
|
// All scripts are initialised here, this allows control of init order
|
||||||
|
$(document).ready(function () {
|
||||||
|
NanoUtility.init();
|
||||||
|
NanoStateManager.init();
|
||||||
|
NanoTemplate.init();
|
||||||
|
});
|
||||||
|
|
||||||
if (!Array.prototype.indexOf)
|
if (!Array.prototype.indexOf)
|
||||||
{
|
{
|
||||||
@@ -97,4 +138,11 @@ String.prototype.toTitleCase = function () {
|
|||||||
|
|
||||||
$.ajaxSetup({
|
$.ajaxSetup({
|
||||||
cache: false
|
cache: false
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Function.prototype.inheritsFrom = function (parentClassOrObject) {
|
||||||
|
this.prototype = new parentClassOrObject;
|
||||||
|
this.prototype.constructor = this;
|
||||||
|
this.prototype.parent = parentClassOrObject.prototype;
|
||||||
|
return this;
|
||||||
|
};
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
<b>Machine</b>:
|
<b>Machine</b>:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
<span class="average">{{:machine_id}}</span>
|
<span class="average">{{:data.machine_id}}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
@@ -11,25 +11,25 @@
|
|||||||
<b>ID</b>:
|
<b>ID</b>:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~link(id_card, 'eject', {'choice' : "insert_card"}, null, id_inserted ? 'fixedLeftWidest' : 'fixedLeft')}}
|
{{:helper.link(data.id_card, 'eject', {'choice' : "insert_card"}, null, data.id_inserted ? 'fixedLeftWidest' : 'fixedLeft')}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{if access_level > 0}}
|
{{if data.access_level > 0}}
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<h2>Menu</h2>
|
<h2>Menu</h2>
|
||||||
</div>
|
</div>
|
||||||
{{:~link('Home', 'home', {'choice' : 'view_accounts_list'}, !creating_new_account && !detailed_account_view ? 'disabled' : null, 'fixedLeft')}}
|
{{:helper.link('Home', 'home', {'choice' : 'view_accounts_list'}, !data.creating_new_account && !data.detailed_account_view ? 'disabled' : null, 'fixedLeft')}}
|
||||||
{{:~link('New Account', 'gear', {'choice' : 'create_account'}, creating_new_account ? 'disabled' : null, 'fixedLeft')}}
|
{{:helper.link('New Account', 'gear', {'choice' : 'create_account'}, data.creating_new_account ? 'disabled' : null, 'fixedLeft')}}
|
||||||
{{:~link('Print', 'print', {'choice' : 'print'}, creating_new_account ? 'disabled' : null, 'fixedLeft')}}
|
{{:helper.link('Print', 'print', {'choice' : 'print'}, data.creating_new_account ? 'disabled' : null, 'fixedLeft')}}
|
||||||
|
|
||||||
{{if creating_new_account}}
|
{{if data.creating_new_account}}
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<h2>Create Account</h2>
|
<h2>Create Account</h2>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<form name='create_account' action='?src={{:src}}' method='get'>
|
<form name='create_account' action='?src={{:data.src}}' method='get'>
|
||||||
<input type='hidden' name='src' value='{{:src}}'>
|
<input type='hidden' name='src' value='{{:data.src}}'>
|
||||||
<input type='hidden' name='choice' value='finalise_create_account'>
|
<input type='hidden' name='choice' value='finalise_create_account'>
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<div class='itemLabel'>
|
<div class='itemLabel'>
|
||||||
@@ -52,7 +52,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
{{else}}
|
{{else}}
|
||||||
{{if detailed_account_view}}
|
{{if data.detailed_account_view}}
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<h2>Account Details</h2>
|
<h2>Account Details</h2>
|
||||||
</div>
|
</div>
|
||||||
@@ -62,7 +62,7 @@
|
|||||||
<span class='average'><b>Account Number</b>:</span>
|
<span class='average'><b>Account Number</b>:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
#{{:account_number}}
|
#{{:data.account_number}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -71,7 +71,7 @@
|
|||||||
<span class='average'><b>Holder</b>:</span>
|
<span class='average'><b>Holder</b>:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:owner_name}}
|
{{:data.owner_name}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -80,7 +80,7 @@
|
|||||||
<span class='average'><b>Balance</b>:</span>
|
<span class='average'><b>Balance</b>:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
${{:~formatNumber(money)}}
|
${{:helper.formatNumber(money)}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -89,17 +89,17 @@
|
|||||||
<span class='average'><b>Status</b>:</span>
|
<span class='average'><b>Status</b>:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
<span class='{{: suspended ? "bad" : "good"}}'>
|
<span class='{{:data.suspended ? "bad" : "good"}}'>
|
||||||
{{: suspended ? "Suspended" : "Active"}}
|
{{:data.suspended ? "Suspended" : "Active"}}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
{{:~link(suspended ? "Unsuspend" : "Suspend", 'gear', {'choice' : 'toggle_suspension'})}}
|
{{:helper.link(data.suspended ? "Unsuspend" : "Suspend", 'gear', {'choice' : 'toggle_suspension'})}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="statusDisplay" style="overflow: auto;">
|
<div class="statusDisplay" style="overflow: auto;">
|
||||||
{{if transactions}}
|
{{if data.transactions}}
|
||||||
<table style='width: 100%'>
|
<table style='width: 100%'>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -111,13 +111,13 @@
|
|||||||
</th>
|
</th>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{{for transactions}}
|
{{for data.transactions}}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{:date}} {{:time}}</td>
|
<td>{{:value.date}} {{:value.time}}</td>
|
||||||
<td>{{:target_name}}</td>
|
<td>{{:value.target_name}}</td>
|
||||||
<td>{{:purpose}}</td>
|
<td>{{:value.purpose}}</td>
|
||||||
<td>{{:amount}}</td>
|
<td>{{:value.amount}}</td>
|
||||||
<td>{{:source_terminal}}</td>
|
<td>{{:value.source_terminal}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</tbody>
|
</tbody>
|
||||||
@@ -126,7 +126,6 @@
|
|||||||
<span class='alert'>This account has no financial transactions on record for today.</span>
|
<span class='alert'>This account has no financial transactions on record for today.</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<h2>CentCom Administrator</h2>
|
<h2>CentCom Administrator</h2>
|
||||||
</div>
|
</div>
|
||||||
@@ -134,15 +133,15 @@
|
|||||||
<div class='fixedLeft'>
|
<div class='fixedLeft'>
|
||||||
Payroll:
|
Payroll:
|
||||||
</div>
|
</div>
|
||||||
{{:~link('Revoke', 'transferthick-e-w', {'choice' : 'revoke_payroll'}, account_number == station_account_number ? 'disabled' : null, 'linkDanger')}}
|
{{:helper.link('Revoke', 'transferthick-e-w', {'choice' : 'revoke_payroll'}, data.account_number == data.station_account_number ? 'disabled' : null, 'linkDanger')}}
|
||||||
</div>
|
</div>
|
||||||
{{if access_level >= 2}}
|
{{if data.access_level >= 2}}
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<div class='fixedLeft'>
|
<div class='fixedLeft'>
|
||||||
Silent Fund Adjustment:
|
Silent Fund Adjustment:
|
||||||
</div>
|
</div>
|
||||||
{{:~link('Add', 'plus', {'choice' : 'add_funds'})}}
|
{{:helper.link('Add', 'plus', {'choice' : 'add_funds'})}}
|
||||||
{{:~link('Remove', 'minus', {'choice' : 'remove_funds'})}}
|
{{:helper.link('Remove', 'minus', {'choice' : 'remove_funds'})}}
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{else}}
|
{{else}}
|
||||||
@@ -150,13 +149,13 @@
|
|||||||
<div class='item'>
|
<div class='item'>
|
||||||
<h2>NanoTrasen Accounts</h2>
|
<h2>NanoTrasen Accounts</h2>
|
||||||
</div>
|
</div>
|
||||||
{{if accounts}}
|
{{if data.accounts}}
|
||||||
<table style="width: 100%">
|
<table style="width: 100%">
|
||||||
{{for accounts}}
|
{{for data.accounts}}
|
||||||
<tr class='{{: suspended ? "bad" : ""}}'>
|
<tr class='{{:value.suspended ? "bad" : ""}}'>
|
||||||
<td><b>{{:~link('#' + account_number, '', {'choice' : 'view_account_detail', 'account_index' : account_index})}}</b></td>
|
<td><b>{{:helper.link('#' + value.account_number, '', {'choice' : 'view_account_detail', 'account_index' : value.account_index})}}</b></td>
|
||||||
<td>{{:owner_name}}</td>
|
<td>{{:value.owner_name}}</td>
|
||||||
<td>{{:suspended}}</td>
|
<td>{{:value.suspended}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
External Pressure:
|
External Pressure:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~displayBar(external_pressure, 0, 200, external_pressure < 80 || external_pressure > 120 ? 'bad' : external_pressure < 95 || external_pressure > 110 ? 'average' : 'good')}}
|
{{:helper.displayBar(data.external_pressure, 0, 200, (data.external_pressure < 80 || data.external_pressure > 120) ? 'bad' : (data.external_pressure < 95 || data.external_pressure > 110) ? 'average' : 'good')}}
|
||||||
<div class="statusValue">
|
<div class="statusValue">
|
||||||
{{:external_pressure}} kPa
|
{{:data.external_pressure}} kPa
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -15,9 +15,9 @@
|
|||||||
Chamber Pressure:
|
Chamber Pressure:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~displayBar(chamber_pressure, 0, 200, chamber_pressure < 80 || chamber_pressure > 120 ? 'bad' : chamber_pressure < 95 || chamber_pressure > 110 ? 'average' : 'good')}}
|
{{:helper.displayBar(data.chamber_pressure, 0, 200, (data.chamber_pressure < 80 || data.chamber_pressure > 120) ? 'bad' : (data.chamber_pressure < 95 || data.chamber_pressure > 110) ? 'average' : 'good')}}
|
||||||
<div class="statusValue">
|
<div class="statusValue">
|
||||||
{{:chamber_pressure}} kPa
|
{{:data.chamber_pressure}} kPa
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -26,9 +26,9 @@
|
|||||||
Internal Pressure:
|
Internal Pressure:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~displayBar(internal_pressure, 0, 200, internal_pressure < 80 || internal_pressure > 120 ? 'bad' : internal_pressure < 95 || internal_pressure > 110 ? 'average' : 'good')}}
|
{{:helper.displayBar(data.internal_pressure, 0, 200, (data.internal_pressure < 80 || data.internal_pressure > 120) ? 'bad' : (data.internal_pressure < 95 || data.internal_pressure > 110) ? 'average' : 'good')}}
|
||||||
<div class="statusValue">
|
<div class="statusValue">
|
||||||
{{:internal_pressure}} kPa
|
{{:data.internal_pressure}} kPa
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -36,25 +36,25 @@
|
|||||||
<div class="item" style="padding-top: 10px">
|
<div class="item" style="padding-top: 10px">
|
||||||
<div class="item" style="width: auto; float: left">
|
<div class="item" style="width: auto; float: left">
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~link('Cycle to Exterior', 'arrowthickstop-1-w', {'command' : 'cycle_ext'}, processing ? 'disabled' : null)}}
|
{{:helper.link('Cycle to Exterior', 'arrowthickstop-1-w', {'command' : 'cycle_ext'}, data.processing ? 'disabled' : null)}}
|
||||||
{{:~link('Cycle to Interior', 'arrowthickstop-1-e', {'command' : 'cycle_int'}, processing ? 'disabled' : null)}}
|
{{:helper.link('Cycle to Interior', 'arrowthickstop-1-e', {'command' : 'cycle_int'}, data.processing ? 'disabled' : null)}}
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent" style="padding-top: 2px">
|
<div class="itemContent" style="padding-top: 2px">
|
||||||
{{:~link('Force exterior door', 'alert', {'command' : 'force_ext'}, null, processing ? 'yellowBackground' : null)}}
|
{{:helper.link('Force exterior door', 'alert', {'command' : 'force_ext'}, null, data.processing ? 'yellowBackground' : null)}}
|
||||||
{{:~link('Force interior door', 'alert', {'command' : 'force_int'}, null, processing ? 'yellowBackground' : null)}}
|
{{:helper.link('Force interior door', 'alert', {'command' : 'force_int'}, null, data.processing ? 'yellowBackground' : null)}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="padding-left: 10px; width: 80px; float: left">
|
<div style="padding-left: 10px; width: 80px; float: left">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemContent" style="padding-bottom: 2px; width: auto">
|
<div class="itemContent" style="padding-bottom: 2px; width: auto">
|
||||||
{{:~link('Purge', 'refresh', {'command' : 'purge'}, processing ? 'disabled' : null, purge ? 'linkOn' : null)}}
|
{{:helper.link('Purge', 'refresh', {'command' : 'purge'}, data.processing ? 'disabled' : null, data.purge ? 'linkOn' : null)}}
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent" style="width: auto">
|
<div class="itemContent" style="width: auto">
|
||||||
{{:~link('Secure', secure ? 'locked' : 'unlocked', {'command' : 'secure'}, processing ? 'disabled' : null, secure ? 'linkOn' : null)}}
|
{{:helper.link('Secure', data.secure ? 'locked' : 'unlocked', {'command' : 'secure'}, data.processing ? 'disabled' : null, data.secure ? 'linkOn' : null)}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item" style="padding-top: 10px">
|
<div class="item" style="padding-top: 10px">
|
||||||
{{:~link('Abort', 'cancel', {'command' : 'abort'}, processing ? null : 'disabled', processing ? 'redBackground' : null)}}
|
{{:helper.link('Abort', 'cancel', {'command' : 'abort'}, data.processing ? null : 'disabled', data.processing ? 'redBackground' : null)}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -1,17 +1,17 @@
|
|||||||
<div class='notice'>
|
<div class='notice'>
|
||||||
{{if siliconUser}}
|
{{if data.siliconUser}}
|
||||||
<div class="itemContentSmall">
|
<div class="itemContentSmall">
|
||||||
Interface Lock:
|
Interface Lock:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContentFull">
|
<div class="itemContentFull">
|
||||||
{{:~link('Engaged', 'locked', {'toggleaccess' : 1}, locked ? 'selected' : null)}}{{:~link('Disengaged', 'unlocked', {'toggleaccess' : 1}, malfStatus >= 2 ? 'linkOff' : (locked ? null : 'selected'))}}
|
{{:helper.link('Engaged', 'locked', {'toggleaccess' : 1}, data.locked ? 'selected' : null)}}{{:helper.link('Disengaged', 'unlocked', {'toggleaccess' : 1}, data.malfStatus >= 2 ? 'linkOff' : (data.locked ? null : 'selected'))}}
|
||||||
</div>
|
</div>
|
||||||
<div class="clearBoth"></div>
|
<div class="clearBoth"></div>
|
||||||
{{else}}
|
{{else}}
|
||||||
{{if locked}}
|
{{if data.locked}}
|
||||||
Swipe an ID card to unlock this interface.
|
Swipe an ID card to unlock this interface
|
||||||
{{else}}
|
{{else}}
|
||||||
Swipe an ID card to lock this interface.
|
Swipe an ID card to lock this interface
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
@@ -25,14 +25,14 @@
|
|||||||
Main Breaker:
|
Main Breaker:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{if locked && !siliconUser}}
|
{{if data.locked && !data.siliconUser}}
|
||||||
{{if isOperating}}
|
{{if data.isOperating}}
|
||||||
<span class='good'>On</span>
|
<span class='good'>On</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class='bad'>Off</span>
|
<span class='bad'>Off</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{:~link('On', 'power', {'breaker' : 1}, isOperating ? 'selected' : null)}}{{:~link('Off', 'close', {'breaker' : 1}, isOperating ? null : 'selected')}}
|
{{:helper.link('On', 'power', {'breaker' : 1}, data.isOperating ? 'selected' : null)}}{{:helper.link('Off', 'close', {'breaker' : 1}, data.isOperating ? null : 'selected')}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -42,9 +42,9 @@
|
|||||||
External Power:
|
External Power:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{if externalPower == 2}}
|
{{if data.externalPower == 2}}
|
||||||
<span class='good'>Good</span>
|
<span class='good'>Good</span>
|
||||||
{{else externalPower == 1}}
|
{{else data.externalPower == 1}}
|
||||||
<span class='average'>Low</span>
|
<span class='average'>Low</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class='bad'>None</span>
|
<span class='bad'>None</span>
|
||||||
@@ -56,38 +56,38 @@
|
|||||||
<div class="itemLabel">
|
<div class="itemLabel">
|
||||||
Power Cell:
|
Power Cell:
|
||||||
</div>
|
</div>
|
||||||
{{if powerCellStatus == null}}
|
{{if data.powerCellStatus == null}}
|
||||||
<div class="itemContent bad">
|
<div class="itemContent bad">
|
||||||
Power cell removed.
|
Power cell removed.
|
||||||
</div>
|
</div>
|
||||||
{{else}}
|
{{else}}
|
||||||
|
|
||||||
{{:~displayBar(powerCellStatus, 0, 100, powerCellStatus >= 50 ? 'good' : powerCellStatus >= 25 ? 'average' : 'bad')}}
|
{{:helper.displayBar(data.powerCellStatus, 0, 100, (data.powerCellStatus >= 50) ? 'good' : (data.powerCellStatus >= 25) ? 'average' : 'bad')}}
|
||||||
<div class="itemContent" style="width: 60px">
|
<div class="itemContent" style="width: 60px">
|
||||||
{{:~round(powerCellStatus*10)/10}}%
|
{{:helper.round(data.powerCellStatus*10)/10}}%
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{if powerCellStatus != null}}
|
{{if data.powerCellStatus != null}}
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemLabel">
|
<div class="itemLabel">
|
||||||
Charge Mode:
|
Charge Mode:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{if locked && !siliconUser}}
|
{{if data.locked && !data.siliconUser}}
|
||||||
{{if chargeMode}}
|
{{if data.chargeMode}}
|
||||||
<span class='good'>Auto</span>
|
<span class='good'>Auto</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class='bad'>Off</span>
|
<span class='bad'>Off</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{:~link('Auto', 'refresh', {'cmode' : 1}, chargeMode ? 'selected' : null)}}{{:~link('Off', 'close', {'cmode' : 1}, chargeMode ? null : 'selected')}}
|
{{:helper.link('Auto', 'refresh', {'cmode' : 1}, data.chargeMode ? 'selected' : null)}}{{:helper.link('Off', 'close', {'cmode' : 1}, data.chargeMode ? null : 'selected')}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{if chargingStatus > 1}}
|
{{if data.chargingStatus > 1}}
|
||||||
[<span class='good'>Fully Charged</span>]
|
[<span class='good'>Fully Charged</span>]
|
||||||
{{else chargingStatus == 1}}
|
{{else data.chargingStatus == 1}}
|
||||||
[<span class='average'>Charging</span>]
|
[<span class='average'>Charging</span>]
|
||||||
{{else}}
|
{{else}}
|
||||||
[<span class='bad'>Not Charging</span>]
|
[<span class='bad'>Not Charging</span>]
|
||||||
@@ -99,32 +99,34 @@
|
|||||||
|
|
||||||
<h3>Power Channels</h3>
|
<h3>Power Channels</h3>
|
||||||
|
|
||||||
{{for powerChannels}}
|
{{for data.powerChannels}}
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemLabel">
|
<div class="itemLabel">
|
||||||
{{:title}}:
|
{{:value.title}}:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent" style="width: 70px; text-align: right">
|
<div class="itemContent" style="width: 70px; text-align: right">
|
||||||
{{:powerLoad}} W
|
{{:value.powerLoad}} W
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent" style="width: 105px">
|
<div class="itemContent" style="width: 105px">
|
||||||
|
|
||||||
{{if status <= 1}}
|
{{if value.status <= 1}}
|
||||||
<span class='bad'>Off</span>
|
<span class='bad'>Off</span>
|
||||||
{{else status >= 2}}
|
{{else value.status >= 2}}
|
||||||
<span class='good'>On</span>
|
<span class='good'>On</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{if status == 1 || status == 3}}
|
{{if data.locked}}
|
||||||
[Auto]
|
{{if value.status == 1 || value.status == 3}}
|
||||||
{{else}}
|
Auto
|
||||||
[Manual]
|
{{else}}
|
||||||
{{/if}}
|
Manual
|
||||||
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
{{if !~root.locked || ~root.siliconUser}}
|
{{if !data.locked || data.siliconUser}}
|
||||||
<div class="itemContentFull">
|
<div class="itemContentFull">
|
||||||
{{:~link('Auto', 'refresh', topicParams.auto, (status == 1 || status == 3) ? 'selected' : null)}}
|
{{:helper.link('Auto', 'refresh', value.topicParams.auto, (value.status == 1 || value.status == 3) ? 'selected' : null)}}
|
||||||
{{:~link('On', 'power', topicParams.on, (status == 2) ? 'selected' : null)}}
|
{{:helper.link('On', 'power', value.topicParams.on, (value.status == 2) ? 'selected' : null)}}
|
||||||
{{:~link('Off', 'close', topicParams.off, (status == 0) ? 'selected' : null)}}
|
{{:helper.link('Off', 'close', value.topicParams.off, (value.status == 0) ? 'selected' : null)}}
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
@@ -135,7 +137,7 @@
|
|||||||
Total Load:
|
Total Load:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent" style="width: 70px; text-align: right">
|
<div class="itemContent" style="width: 70px; text-align: right">
|
||||||
{{:totalLoad}} W
|
{{:data.totalLoad}} W
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -146,26 +148,26 @@
|
|||||||
Cover Lock:
|
Cover Lock:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{if locked && !siliconUser}}
|
{{if data.locked && !data.siliconUser}}
|
||||||
{{if coverLocked}}
|
{{if data.coverLocked}}
|
||||||
<span class='good'>Engaged</span>
|
<span class='good'>Engaged</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class='bad'>Disengaged</span>
|
<span class='bad'>Disengaged</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{:~link('Engaged', 'locked', {'lock' : 1}, coverLocked ? 'selected' : null)}}{{:~link('Disengaged', 'unlocked', {'lock' : 1}, coverLocked ? null : 'selected')}}
|
{{:helper.link('Engaged', 'locked', {'lock' : 1}, data.coverLocked ? 'selected' : null)}}{{:helper.link('Disengaged', 'unlocked', {'lock' : 1}, data.coverLocked ? null : 'selected')}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{if siliconUser}}
|
{{if data.siliconUser}}
|
||||||
<h3>System Overrides</h3>
|
<h3>System Overrides</h3>
|
||||||
|
|
||||||
<div class="item">
|
<div class="item">
|
||||||
{{:~link('Overload Lighting Circuit', 'lightbulb', {'overload' : 1})}}
|
{{:helper.link('Overload Lighting Circuit', 'lightbulb', {'overload' : 1})}}
|
||||||
{{if malfStatus == 1}}
|
{{if data.malfStatus == 1}}
|
||||||
{{:~link('Override Programming', 'script', {'malfhack' : 1})}}
|
{{:helper.link('Override Programming', 'script', {'malfhack' : 1})}}
|
||||||
{{else malfStatus > 1}}
|
{{else data.malfStatus > 1}}
|
||||||
<div class='notice'>APC Hacked</div>
|
<div class='notice'>APC Hacked</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
Tank Label:
|
Tank Label:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
<div style="float: left; width: 180px;">{{:name}}</div> {{:~link('Relabel', 'pencil', {'relabel' : 1}, (canLabel) ? null : 'disabled')}}
|
<div style="float: left; width: 180px;">{{:data.name}}</div> {{:helper.link('Relabel', 'pencil', {'relabel' : 1}, (data.canLabel) ? null : 'disabled')}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
Tank Pressure:
|
Tank Pressure:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:tankPressure}} kPa
|
{{:data.tankPressure}} kPa
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -22,18 +22,18 @@
|
|||||||
Port Status:
|
Port Status:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:portConnected ? '<span class="good">Connected</span>' : '<span class="average">Disconnected</span>'}}
|
{{:data.portConnected ? '<span class="good">Connected</span>' : '<span class="average">Disconnected</span>'}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h3>Holding Tank Status</h3>
|
<h3>Holding Tank Status</h3>
|
||||||
{{if hasHoldingTank}}
|
{{if data.hasHoldingTank}}
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemLabel">
|
<div class="itemLabel">
|
||||||
Tank Label:
|
Tank Label:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
<div style="float: left; width: 180px;">{{:holdingTank.name}}</div> {{:~link('Eject', 'eject', {'remove_tank' : 1})}}
|
<div style="float: left; width: 180px;">{{:data.holdingTank.name}}</div> {{:helper.link('Eject', 'eject', {'remove_tank' : 1})}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@
|
|||||||
Tank Pressure:
|
Tank Pressure:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:holdingTank.tankPressure}} kPa
|
{{:data.holdingTank.tankPressure}} kPa
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{else}}
|
{{else}}
|
||||||
@@ -57,17 +57,17 @@
|
|||||||
Release Pressure:
|
Release Pressure:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~displayBar(releasePressure, minReleasePressure, maxReleasePressure)}}
|
{{:helper.displayBar(data.releasePressure, data.minReleasePressure, data.maxReleasePressure)}}
|
||||||
<div style="clear: both; padding-top: 4px;">
|
<div style="clear: both; padding-top: 4px;">
|
||||||
{{:~link('-', null, {'pressure_adj' : -1000}, (releasePressure > minReleasePressure) ? null : 'disabled')}}
|
{{:helper.link('-', null, {'pressure_adj' : -1000}, (data.releasePressure > data.minReleasePressure) ? null : 'disabled')}}
|
||||||
{{:~link('-', null, {'pressure_adj' : -100}, (releasePressure > minReleasePressure) ? null : 'disabled')}}
|
{{:helper.link('-', null, {'pressure_adj' : -100}, (data.releasePressure > data.minReleasePressure) ? null : 'disabled')}}
|
||||||
{{:~link('-', null, {'pressure_adj' : -10}, (releasePressure > minReleasePressure) ? null : 'disabled')}}
|
{{:helper.link('-', null, {'pressure_adj' : -10}, (data.releasePressure > data.minReleasePressure) ? null : 'disabled')}}
|
||||||
{{:~link('-', null, {'pressure_adj' : -1}, (releasePressure > minReleasePressure) ? null : 'disabled')}}
|
{{:helper.link('-', null, {'pressure_adj' : -1}, (data.releasePressure > data.minReleasePressure) ? null : 'disabled')}}
|
||||||
<div style="float: left; width: 80px; text-align: center;"> {{:releasePressure}} kPa </div>
|
<div style="float: left; width: 80px; text-align: center;"> {{:data.releasePressure}} kPa </div>
|
||||||
{{:~link('+', null, {'pressure_adj' : 1}, (releasePressure < maxReleasePressure) ? null : 'disabled')}}
|
{{:helper.link('+', null, {'pressure_adj' : 1}, (data.releasePressure < data.maxReleasePressure) ? null : 'disabled')}}
|
||||||
{{:~link('+', null, {'pressure_adj' : 10}, (releasePressure < maxReleasePressure) ? null : 'disabled')}}
|
{{:helper.link('+', null, {'pressure_adj' : 10}, (data.releasePressure < data.maxReleasePressure) ? null : 'disabled')}}
|
||||||
{{:~link('+', null, {'pressure_adj' : 100}, (releasePressure < maxReleasePressure) ? null : 'disabled')}}
|
{{:helper.link('+', null, {'pressure_adj' : 100}, (data.releasePressure < data.maxReleasePressure) ? null : 'disabled')}}
|
||||||
{{:~link('+', null, {'pressure_adj' : 1000}, (releasePressure < maxReleasePressure) ? null : 'disabled')}}
|
{{:helper.link('+', null, {'pressure_adj' : 1000}, (data.releasePressure < data.maxReleasePressure) ? null : 'disabled')}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -77,7 +77,7 @@
|
|||||||
Release Valve:
|
Release Valve:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~link('Open', 'unlocked', {'toggle' : 1}, valveOpen ? 'selected' : null)}}{{:~link('Close', 'locked', {'toggle' : 1}, valveOpen ? null : 'selected')}}
|
{{:helper.link('Open', 'unlocked', {'toggle' : 1}, data.valveOpen ? 'selected' : null)}}{{:helper.link('Close', 'locked', {'toggle' : 1}, data.valveOpen ? null : 'selected')}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ Used In File(s): \code\modules\reagents\Chemistry-Machinery.dm
|
|||||||
Energy:
|
Energy:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~displayBar(energy, 0, maxEnergy, 'good', energy + ' Units')}}
|
{{:helper.displayBar(data.energy, 0, data.maxEnergy, 'good', data.energy + ' Units')}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -16,17 +16,17 @@ Used In File(s): \code\modules\reagents\Chemistry-Machinery.dm
|
|||||||
Dispense:
|
Dispense:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~link('5', 'gear', {'amount' : 5}, (amount == 5) ? 'selected' : null)}}
|
{{:helper.link('5', 'gear', {'amount' : 5}, (data.amount == 5) ? 'selected' : null)}}
|
||||||
{{:~link('10', 'gear', {'amount' : 10}, (amount == 10) ? 'selected' : null)}}
|
{{:helper.link('10', 'gear', {'amount' : 10}, (data.amount == 10) ? 'selected' : null)}}
|
||||||
{{:~link('20', 'gear', {'amount' : 20}, (amount == 20) ? 'selected' : null)}}
|
{{:helper.link('20', 'gear', {'amount' : 20}, (data.amount == 20) ? 'selected' : null)}}
|
||||||
{{:~link('30', 'gear', {'amount' : 30}, (amount == 30) ? 'selected' : null)}}
|
{{:helper.link('30', 'gear', {'amount' : 30}, (data.amount == 30) ? 'selected' : null)}}
|
||||||
{{:~link('50', 'gear', {'amount' : 50}, (amount == 50) ? 'selected' : null)}}
|
{{:helper.link('50', 'gear', {'amount' : 50}, (data.amount == 50) ? 'selected' : null)}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item"> </div>
|
<div class="item"> </div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemLabel" style="width: 100%;">
|
<div class="itemLabel" style="width: 100%;">
|
||||||
{{if glass}}
|
{{if data.glass}}
|
||||||
Drink Dispenser
|
Drink Dispenser
|
||||||
{{else}}
|
{{else}}
|
||||||
Chemical Dispenser
|
Chemical Dispenser
|
||||||
@@ -35,8 +35,8 @@ Used In File(s): \code\modules\reagents\Chemistry-Machinery.dm
|
|||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemContentWide" style="width: 100%;">
|
<div class="itemContentWide" style="width: 100%;">
|
||||||
{{for chemicals}}
|
{{for data.chemicals}}
|
||||||
{{:~link(title, 'circle-arrow-s', commands, null, ~root.glass ? 'fixedLeftWide' : 'fixedLeft')}}
|
{{:helper.link(value.title, 'circle-arrow-s', value.commands, null, data.glass ? 'fixedLeftWide' : 'fixedLeft')}}
|
||||||
{{/for}}
|
{{/for}}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@@ -44,39 +44,43 @@ Used In File(s): \code\modules\reagents\Chemistry-Machinery.dm
|
|||||||
<div class="item"> </div>
|
<div class="item"> </div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemLabel">
|
<div class="itemLabel">
|
||||||
{{if glass}}
|
{{if data.glass}}
|
||||||
Glass
|
Glass
|
||||||
{{else}}
|
{{else}}
|
||||||
Beaker
|
Beaker
|
||||||
{{/if}} Contents
|
{{/if}} Contents
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~link(glass ? 'Eject Glass' : 'Eject Beaker', 'eject', {'ejectBeaker' : 1}, isBeakerLoaded ? null : 'disabled', 'floatRight')}}
|
{{:helper.link(data.glass ? 'Eject Glass' : 'Eject Beaker', 'eject', {'ejectBeaker' : 1}, data.isBeakerLoaded ? null : 'disabled', 'floatRight')}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="statusDisplay" style="height: 225px; overflow: auto;">
|
<div class="statusDisplay" style="min-height: 180px;">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemContent" style="width: 100%;">
|
<div class="itemContent" style="width: 100%;">
|
||||||
{{if isBeakerLoaded}}
|
{{if data.isBeakerLoaded}}
|
||||||
<b>Volume: {{:beakerCurrentVolume}} / {{:beakerMaxVolume}}</b><br>
|
<b>Volume: {{:data.beakerCurrentVolume}} / {{:data.beakerMaxVolume}}</b><br>
|
||||||
{{for beakerContents}}
|
{{for data.beakerContents}}
|
||||||
<span class="highlight">{{:volume}} units of {{:name}}</span><br>
|
<span class="highlight">{{:value.volume}} units of {{:value.name}}</span><br>
|
||||||
{{else}}
|
{{empty}}
|
||||||
<span class="bad">
|
<span class="bad">
|
||||||
{{if glass}}
|
{{if data.glass}}
|
||||||
Glass
|
Glass
|
||||||
{{else}}
|
{{else}}
|
||||||
Beaker
|
Beaker
|
||||||
{{/if}}
|
{{/if}}
|
||||||
is empty</span>
|
is empty
|
||||||
|
</span>
|
||||||
{{/for}}
|
{{/for}}
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="average"><i>No
|
<span class="average"><i>
|
||||||
{{if glass}}
|
No
|
||||||
Glass
|
{{if data.glass}}
|
||||||
{{else}}
|
Glass
|
||||||
Beaker
|
{{else}}
|
||||||
{{/if}} loaded</i></span>
|
Beaker
|
||||||
|
{{/if}}
|
||||||
|
loaded
|
||||||
|
</i></span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -2,13 +2,13 @@
|
|||||||
Crew Monitoring Computer interface
|
Crew Monitoring Computer interface
|
||||||
-->
|
-->
|
||||||
<table width="100%"><tbody>
|
<table width="100%"><tbody>
|
||||||
{{for crewmembers}}
|
{{for data.crewmembers}}
|
||||||
{{if sensor_type == 1}}
|
{{if value.sensor_type == 1}}
|
||||||
<tr><td>{{:name}}</td><td>{{:dead ? "<span class='bad'>Deceased</span>" : "<span class='good'>Living</span>"}}</td><td><span class="neutral">Not Available</span></td></tr>
|
<tr><td>{{:value.name}}</td><td>{{:value.dead ? "<span class='bad'>Deceased</span>" : "<span class='good'>Living</span>"}}</td><td><span class="neutral">Not Available</span></td></tr>
|
||||||
{{else sensor_type == 2}}
|
{{else value.sensor_type == 2}}
|
||||||
<tr><td>{{:name}}</td><td>{{:dead ? "<span class='bad'>Deceased</span>" : "<span class='good'>Living</span>"}} (<span class="oxyloss">{{:oxy}}</span>/<span class="toxin">{{:tox}}</span>/<span class="burn">{{:fire}}</span>/<span class="brute">{{:brute}}</span>)</td><td><span class="neutral">Not Available</td></td></tr>
|
<tr><td>{{:value.name}}</td><td>{{:value.dead ? "<span class='bad'>Deceased</span>" : "<span class='good'>Living</span>"}} (<span class="oxyloss">{{:value.oxy}}</span>/<span class="toxin">{{:value.tox}}</span>/<span class="burn">{{:value.fire}}</span>/<span class="brute">{{:value.brute}}</span>)</td><td><span class="neutral">Not Available</td></td></tr>
|
||||||
{{else sensor_type == 3}}
|
{{else value.sensor_type == 3}}
|
||||||
<tr><td>{{:name}}</td><td>{{:dead ? "<span class='bad'>Deceased</span>" : "<span class='good'>Living</span>"}} (<span class="oxyloss">{{:oxy}}</span>/<span class="toxin">{{:tox}}</span>/<span class="burn">{{:fire}}</span>/<span class="brute">{{:brute}}</span>)</td><td>{{:area}}({{:x}}, {{:y}})</td></tr>
|
<tr><td>{{:value.name}}</td><td>{{:value.dead ? "<span class='bad'>Deceased</span>" : "<span class='good'>Living</span>"}} (<span class="oxyloss">{{:value.oxy}}</span>/<span class="toxin">{{:value.tox}}</span>/<span class="burn">{{:value.fire}}</span>/<span class="brute">{{:value.brute}}</span>)</td><td>{{:value.area}}({{:value.x}}, {{:value.y}})</td></tr>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</tbody></table>
|
</tbody></table>
|
||||||
@@ -5,60 +5,62 @@ Used In File(s): \code\game\machinery\cryo.dm
|
|||||||
<h3>Cryo Cell Status</h3>
|
<h3>Cryo Cell Status</h3>
|
||||||
|
|
||||||
<div class="statusDisplay">
|
<div class="statusDisplay">
|
||||||
{{if !hasOccupant}}
|
{{if !data.hasOccupant}}
|
||||||
<div class="line">Cell Unoccupied</div>
|
<div class="line">Cell Unoccupied</div>
|
||||||
{{else}}
|
{{else}}
|
||||||
<div class="line">
|
<div class="line">
|
||||||
{{:occupant.name}} =>
|
{{:data.occupant.name}} =>
|
||||||
{{if occupant.stat == 0}}
|
{{if data.occupant.stat == 0}}
|
||||||
<span class="good">Conscious</span>
|
<span class="good">Conscious</span>
|
||||||
{{else occupant.stat == 1}}
|
{{else data.occupant.stat == 1}}
|
||||||
<span class="average">Unconscious</span>
|
<span class="average">Unconscious</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="bad">DEAD</span>
|
<span class="bad">DEAD</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{if occupant.stat < 2}}
|
{{if data.occupant.stat < 2}}
|
||||||
<div class="line">
|
<div class="line">
|
||||||
<div class="statusLabel">Health:</div>
|
<div class="statusLabel">Health:</div>
|
||||||
{{if occupant.health >= 0}}
|
{{if data.occupant.health >= 0}}
|
||||||
{{:~displayBar(occupant.health, 0, occupant.maxHealth, 'good')}}
|
{{:helper.displayBar(data.occupant.health, 0, data.occupant.maxHealth, 'good')}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{:~displayBar(occupant.health, 0, occupant.minHealth, 'average alignRight')}}
|
{{:helper.displayBar(data.occupant.health, 0, data.occupant.minHealth, 'average alignRight')}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<div class="statusValue">{{:~round(occupant.health)}}</div>
|
<div class="statusValue">{{:helper.round(data.occupant.health)}}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="line">
|
<div class="line">
|
||||||
<div class="statusLabel">=> Brute Damage:</div>
|
<div class="statusLabel">=> Brute Damage:</div>
|
||||||
{{:~displayBar(occupant.bruteLoss, 0, occupant.maxHealth, 'bad')}}
|
{{:helper.displayBar(data.occupant.bruteLoss, 0, data.occupant.maxHealth, 'bad')}}
|
||||||
<div class="statusValue">{{:~round(occupant.bruteLoss)}}</div>
|
<div class="statusValue">{{:helper.round(data.occupant.bruteLoss)}}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="line">
|
<div class="line">
|
||||||
<div class="statusLabel">=> Resp. Damage:</div>
|
<div class="statusLabel">=> Resp. Damage:</div>
|
||||||
{{:~displayBar(occupant.oxyLoss, 0, occupant.maxHealth, 'bad')}}
|
{{:helper.displayBar(data.occupant.oxyLoss, 0, data.occupant.maxHealth, 'bad')}}
|
||||||
<div class="statusValue">{{:~round(occupant.oxyLoss)}}</div>
|
<div class="statusValue">{{:helper.round(data.occupant.oxyLoss)}}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="line">
|
<div class="line">
|
||||||
<div class="statusLabel">=> Toxin Damage:</div>
|
<div class="statusLabel">=> Toxin Damage:</div>
|
||||||
{{:~displayBar(occupant.toxLoss, 0, occupant.maxHealth, 'bad')}}
|
{{:helper.displayBar(data.occupant.toxLoss, 0, data.occupant.maxHealth, 'bad')}}
|
||||||
<div class="statusValue">{{:~round(occupant.toxLoss)}}</div>
|
<div class="statusValue">{{:helper.round(data.occupant.toxLoss)}}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="line">
|
<div class="line">
|
||||||
<div class="statusLabel">=> Burn Severity:</div>
|
<div class="statusLabel">=> Burn Severity:</div>
|
||||||
{{:~displayBar(occupant.fireLoss, 0, occupant.maxHealth, 'bad')}}
|
{{:helper.displayBar(data.occupant.fireLoss, 0, data.occupant.maxHealth, 'bad')}}
|
||||||
<div class="statusValue">{{:~round(occupant.fireLoss)}}</div>
|
<div class="statusValue">{{:helper.round(data.occupant.fireLoss)}}</div>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<hr>
|
<hr>
|
||||||
<div class="line"><div class="statusLabel">Cell Temperature:</div><div class="statusValue">
|
<div class="line">
|
||||||
{{:~string('<span class="{0}">{1} K</span>', cellTemperatureStatus, cellTemperature)}}
|
<div class="statusLabel">Cell Temperature:</div><div class="statusValue">
|
||||||
</div></div>
|
<span class="{{:data.cellTemperatureStatus}}">{{:data.cellTemperature}} K</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h3>Cryo Cell Operation</h3>
|
<h3>Cryo Cell Operation</h3>
|
||||||
@@ -67,10 +69,10 @@ Used In File(s): \code\game\machinery\cryo.dm
|
|||||||
Cryo Cell Status:
|
Cryo Cell Status:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent" style="width: 40%;">
|
<div class="itemContent" style="width: 40%;">
|
||||||
{{:~link('On', 'power', {'switchOn' : 1}, isOperating ? 'selected' : null)}}{{:~link('Off', 'close', {'switchOff' : 1}, isOperating ? null : 'selected')}}
|
{{:helper.link('On', 'power', {'switchOn' : 1}, data.isOperating ? 'selected' : null)}}{{:helper.link('Off', 'close', {'switchOff' : 1}, data.isOperating ? null : 'selected')}}
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent" style="width: 26%;">
|
<div class="itemContent" style="width: 26%;">
|
||||||
{{:~link('Eject Occupant', 'arrowreturnthick-1-s', {'ejectOccupant' : 1}, hasOccupant ? null : 'disabled')}}
|
{{:helper.link('Eject Occupant', 'arrowreturnthick-1-s', {'ejectOccupant' : 1}, data.hasOccupant ? null : 'disabled')}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item"> </div>
|
<div class="item"> </div>
|
||||||
@@ -79,10 +81,10 @@ Used In File(s): \code\game\machinery\cryo.dm
|
|||||||
Beaker:
|
Beaker:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent" style="width: 40%;">
|
<div class="itemContent" style="width: 40%;">
|
||||||
{{if isBeakerLoaded}}
|
{{if data.isBeakerLoaded}}
|
||||||
{{:beakerLabel ? beakerLabel : '<span class="average">No label</span>'}}<br>
|
{{:data.beakerLabel ? data.beakerLabel : '<span class="average">No label</span>'}}<br>
|
||||||
{{if beakerVolume}}
|
{{if data.beakerVolume}}
|
||||||
<span class="highlight">{{:beakerVolume}} units remaining</span><br>
|
<span class="highlight">{{:data.beakerVolume}} units remaining</span><br>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="bad">Beaker is empty</span>
|
<span class="bad">Beaker is empty</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
@@ -91,6 +93,6 @@ Used In File(s): \code\game\machinery\cryo.dm
|
|||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent" style="width: 26%;">
|
<div class="itemContent" style="width: 26%;">
|
||||||
{{:~link('Eject Beaker', 'eject', {'ejectBeaker' : 1}, isBeakerLoaded ? null : 'disabled')}}
|
{{:helper.link('Eject Beaker', 'eject', {'ejectBeaker' : 1}, data.isBeakerLoaded ? null : 'disabled')}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~link('Close', 'gear', {'close' : 1}, null, 'fixedLeft')}}
|
{{:helper.link('Close', 'gear', {'close' : 1}, null, 'fixedLeft')}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{if busy}}
|
{{if data.busy}}
|
||||||
<h5 class='average'>The Splicer is currently busy.</h5>
|
<h5 class='average'>The Splicer is currently busy.</h5>
|
||||||
<div class='notice'>
|
<div class='notice'>
|
||||||
<center><span class='bad'>{{:busy}}</span></center>
|
<center><span class='bad'>{{:data.busy}}</span></center>
|
||||||
</div>
|
</div>
|
||||||
<p>
|
<p>
|
||||||
Thank you for your patience!
|
Thank you for your patience!
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
<h2>Virus Dish</h2>
|
<h2>Virus Dish</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
{{:~link('Eject Dish', 'eject', { 'eject' : 1 }, dish_inserted ? null : 'disabled')}}
|
{{:helper.link('Eject Dish', 'eject', { 'eject' : 1 }, data.dish_inserted ? null : 'disabled')}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="item">
|
<div class="item">
|
||||||
@@ -25,26 +25,26 @@
|
|||||||
<b>Growth Density:</b>
|
<b>Growth Density:</b>
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~displayBar(growth, 0, 100, growth >= 50 ? 'good' : growth >= 25 ? 'average' : 'bad', growth + '%' )}}
|
{{:helper.displayBar(data.growth, 0, 100, (data.growth >= 50) ? 'good' : data.growth >= 25 ? 'average' : 'bad', data.growth + '%' )}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="statusDisplay" style="height: 145px; overflow: auto;">
|
<div class="statusDisplay" style="height: 145px; overflow: auto;">
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
{{if !info}}
|
{{if !data.info}}
|
||||||
<div class='itemLabel'>
|
<div class='itemLabel'>
|
||||||
<span class='good'>Symptoms:</span>
|
<span class='good'>Symptoms:</span>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<div class='itemContent' style="width: 100%;">
|
<div class='itemContent' style="width: 100%;">
|
||||||
{{if info}}
|
{{if data.info}}
|
||||||
<span class='average'>{{:info}}</span>
|
<span class='average'>{{:data.info}}</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
{{for effects}}
|
{{for data.effects}}
|
||||||
<div>
|
<div>
|
||||||
<div class="highlight">
|
<div class="highlight">
|
||||||
({{:stage}}) {{:name}}
|
({{:data.stage}}) {{:data.name}}
|
||||||
{{if badness > 1}}
|
{{if data.badness > 1}}
|
||||||
<span class='bad'><b>Dangerous</b></span>
|
<span class='bad'><b>Dangerous</b></span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
@@ -53,18 +53,18 @@
|
|||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{if affected_species && !info}}
|
{{if data.affected_species && !data.info}}
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<div class='itemLabelWide'>
|
<div class='itemLabelWide'>
|
||||||
<span class='good'>Affected Species:</span>
|
<span class='good'>Affected Species:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class='itemContent'>
|
<div class='itemContent'>
|
||||||
<span class='highlight'>{{:affected_species}}</span>
|
<span class='highlight'>{{:data.affected_species}}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
{{if effects}}
|
{{if data.effects}}
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<span class="bad"><i>CAUTION: Reverse engineering will destroy the viral sample.</i></span>
|
<span class="bad"><i>CAUTION: Reverse engineering will destroy the viral sample.</i></span>
|
||||||
</div>
|
</div>
|
||||||
@@ -73,12 +73,12 @@
|
|||||||
Reverse Engineering:
|
Reverse Engineering:
|
||||||
</div>
|
</div>
|
||||||
<div class='itemContent'>
|
<div class='itemContent'>
|
||||||
{{for effects}}
|
{{for data.effects}}
|
||||||
{{:~link(stage, 'transferthick-e-w', { 'grab' : reference })}}
|
{{:helper.link(data.stage, 'transferthick-e-w', { 'grab' : data.reference })}}
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</div>
|
</div>
|
||||||
<div class='itemContent'>
|
<div class='itemContent'>
|
||||||
{{:~link('Species', 'transferthick-e-w', { 'affected_species' : 1 })}}
|
{{:helper.link('Species', 'transferthick-e-w', { 'affected_species' : 1 })}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
@@ -92,17 +92,17 @@
|
|||||||
<b>Memory Buffer:</b>
|
<b>Memory Buffer:</b>
|
||||||
</div>
|
</div>
|
||||||
<div class='itemContent'>
|
<div class='itemContent'>
|
||||||
{{if buffer}}
|
{{if data.buffer}}
|
||||||
{{:buffer.name}} ({{:buffer.stage}})
|
{{:data.buffer.name}} ({{:data.buffer.stage}})
|
||||||
{{else}}
|
{{else}}
|
||||||
{{if species_buffer}}
|
{{if data.species_buffer}}
|
||||||
{{:species_buffer}}
|
{{:data.species_buffer}}
|
||||||
{{else}}
|
{{else}}
|
||||||
Empty
|
Empty
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{:~link('Save To Disk', 'disk', { 'disk' : 1 }, (buffer || species_buffer) ? null : 'disabled')}}
|
{{:helper.link('Save To Disk', 'disk', { 'disk' : 1 }, (data.buffer || data.species_buffer) ? null : 'disabled')}}
|
||||||
{{:~link('Splice Onto Dish', 'pencil', { 'splice' : 1 }, (buffer || species_buffer) && !info ? null : 'disabled')}}
|
{{:helper.link('Splice Onto Dish', 'pencil', { 'splice' : 1 }, ((data.buffer || data.species_buffer) && !data.info) ? null : 'disabled')}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~link('Close', 'gear', {'close' : '1'}, null, 'fixedLeft')}}
|
{{:helper.link('Close', 'gear', {'close' : '1'}, null, 'fixedLeft')}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -12,12 +12,12 @@
|
|||||||
Power:
|
Power:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~link('On', 'power', { 'power' : 1 }, !dish_inserted ? 'disabled' : on ? 'selected' : null)}}{{:~link('Off', 'close', { 'power' : 1 }, on ? null : 'selected')}}
|
{{:helper.link('On', 'power', { 'power' : 1 }, !data.dish_inserted ? 'disabled' : data.on ? 'selected' : null)}}{{:helper.link('Off', 'close', { 'power' : 1 }, data.on ? null : 'selected')}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
{{:~link('Add Radiation', 'radiation', {'rad' : 1})}}
|
{{:helper.link('Add Radiation', 'radiation', {'rad' : 1})}}
|
||||||
{{:~link('Flush System', 'trash', {'flush' : 1}, system_in_use ? null : 'disabled')}}
|
{{:helper.link('Flush System', 'trash', {'flush' : 1}, data.system_in_use ? null : 'disabled')}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="statusDisplay" style="height: 100px; overflow: auto;">
|
<div class="statusDisplay" style="height: 100px; overflow: auto;">
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
<span class='good'>Virus Food:</span>
|
<span class='good'>Virus Food:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~displayBar(food_supply, 0, 100, 'good', food_supply)}}
|
{{:helper.displayBar(data.food_supply, 0, 100, 'good', data.food_supply)}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
@@ -34,9 +34,9 @@
|
|||||||
<span class='good'>Radiation Level:</span>
|
<span class='good'>Radiation Level:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~displayBar(radiation, 0, 100, radiation >= 50 ? 'bad' : growth >= 25 ? 'average' : 'good')}}
|
{{:helper.displayBar(data.radiation, 0, 100, (data.radiation >= 50) ? 'bad' : (data.growth >= 25) ? 'average' : 'good')}}
|
||||||
<br/>
|
<br/>
|
||||||
{{:~formatNumber(radiation * 10000)}} <acronym title='In microSieverts'>µSv</acronym>
|
{{:helper.formatNumber(data.radiation * 10000)}} <acronym title='In microSieverts'>µSv</acronym>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
<span class='good'>Toxicity:</span>
|
<span class='good'>Toxicity:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~displayBar(toxins, 0, 100, toxins >= 50 ? 'bad' : toxins >= 25 ? 'average' : 'good', toxins + '%')}}
|
{{:helper.displayBar(data.toxins, 0, 100, (data.toxins >= 50) ? 'bad' : (data.toxins >= 25) ? 'average' : 'good', data.toxins + '%')}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -53,17 +53,17 @@
|
|||||||
<h2>Chemicals</h2>
|
<h2>Chemicals</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
{{:~link('Eject Chemicals', 'eject', { 'ejectchem' : 1 }, chemicals_inserted ? null : 'disabled')}}
|
{{:helper.link('Eject Chemicals', 'eject', { 'ejectchem' : 1 }, data.chemicals_inserted ? null : 'disabled')}}
|
||||||
{{:~link('Breed Virus', 'circle-arrow-s', { 'virus' : 1 }, can_breed_virus ? null : 'disabled')}}
|
{{:helper.link('Breed Virus', 'circle-arrow-s', { 'virus' : 1 }, data.can_breed_virus ? null : 'disabled')}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{if chemicals_inserted}}
|
{{if data.chemicals_inserted}}
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<div class='itemLabel'>
|
<div class='itemLabel'>
|
||||||
Volume:
|
Volume:
|
||||||
</div>
|
</div>
|
||||||
<div class='itemContent'>
|
<div class='itemContent'>
|
||||||
{{:~displayBar(chemical_volume, 0, max_chemical_volume, 'good', chemical_volume + ' / ' + max_chemical_volume)}}
|
{{:helper.displayBar(data.chemical_volume, 0, data.max_chemical_volume, 'good', data.chemical_volume + ' / ' + data.max_chemical_volume)}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
@@ -71,10 +71,10 @@
|
|||||||
Breeding Environment:
|
Breeding Environment:
|
||||||
</div>
|
</div>
|
||||||
<div class='itemContent'>
|
<div class='itemContent'>
|
||||||
<span class='{{:can_breed_virus ? "good" : "average"}}'>
|
<span class='{{:data.can_breed_virus ? "good" : "average"}}'>
|
||||||
{{:!dish_inserted ? 'N/A' : can_breed_virus ? 'Suitable' : 'No hemolytic samples detected'}}
|
{{:!data.dish_inserted ? 'N/A' : data.can_breed_virus ? 'Suitable' : 'No hemolytic samples detected'}}
|
||||||
</span>
|
</span>
|
||||||
{{if blood_already_infected}}
|
{{if data.blood_already_infected}}
|
||||||
<br/>
|
<br/>
|
||||||
<span class='bad'><i>CAUTION: Viral infection detected in blood sample.</i></span>
|
<span class='bad'><i>CAUTION: Viral infection detected in blood sample.</i></span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
@@ -90,17 +90,17 @@
|
|||||||
<h2>Virus Dish</h2>
|
<h2>Virus Dish</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
{{:~link('Eject Dish', 'eject', {'ejectdish' : 1}, dish_inserted ? null : 'disabled')}}
|
{{:helper.link('Eject Dish', 'eject', {'ejectdish' : 1}, data.dish_inserted ? null : 'disabled')}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{if dish_inserted}}
|
{{if data.dish_inserted}}
|
||||||
{{if virus}}
|
{{if data.virus}}
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemLabel">
|
<div class="itemLabel">
|
||||||
<b>Growth Density:</b>
|
<b>Growth Density:</b>
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~displayBar(growth, 0, 100, growth >= 50 ? 'good' : growth >= 25 ? 'average' : 'bad', growth + '%' )}}
|
{{:helper.displayBar(data.growth, 0, 100, (data.growth >= 50) ? 'good' : (data.growth >= 25) ? 'average' : 'bad', data.growth + '%' )}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
@@ -108,7 +108,7 @@
|
|||||||
<b>Infection Rate:</b>
|
<b>Infection Rate:</b>
|
||||||
</div>
|
</div>
|
||||||
<div class='itemContent'>
|
<div class='itemContent'>
|
||||||
{{:analysed ? infection_rate : "Unknown"}}
|
{{:data.analysed ? data.infection_rate : "Unknown"}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{else}}
|
{{else}}
|
||||||
|
|||||||
@@ -5,54 +5,54 @@ Used In File(s): D:\Development\SS13-BS12\code\game\dna\dna_modifier.dm
|
|||||||
<h3>Status</h3>
|
<h3>Status</h3>
|
||||||
|
|
||||||
<div class="statusDisplay">
|
<div class="statusDisplay">
|
||||||
{{if !hasOccupant}}
|
{{if !data.hasOccupant}}
|
||||||
<div class="line">Cell Unoccupied</div>
|
<div class="line">Cell Unoccupied</div>
|
||||||
{{else}}
|
{{else}}
|
||||||
<div class="line">
|
<div class="line">
|
||||||
{{:occupant.name}} =>
|
{{:data.occupant.name}} =>
|
||||||
{{if occupant.stat == 0}}
|
{{if data.occupant.stat == 0}}
|
||||||
<span class="good">Conscious</span>
|
<span class="good">Conscious</span>
|
||||||
{{else occupant.stat == 1}}
|
{{else data.occupant.stat == 1}}
|
||||||
<span class="average">Unconscious</span>
|
<span class="average">Unconscious</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="bad">DEAD</span>
|
<span class="bad">DEAD</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{if !occupant.isViableSubject || !occupant.uniqueIdentity || !occupant.structuralEnzymes}}
|
{{if !data.occupant.isViableSubject || !data.occupant.uniqueIdentity || !data.occupant.structuralEnzymes}}
|
||||||
<div class="notice">
|
<div class="notice">
|
||||||
The occupant's DNA structure is ruined beyond recognition, please insert a subject with an intact DNA structure.
|
The occupant's DNA structure is ruined beyond recognition, please insert a subject with an intact DNA structure.
|
||||||
</div>
|
</div>
|
||||||
{{else occupant.stat < 2}}
|
{{else data.occupant.stat < 2}}
|
||||||
<div class="line">
|
<div class="line">
|
||||||
<div class="statusLabel">Health:</div>
|
<div class="statusLabel">Health:</div>
|
||||||
{{if occupant.health >= 0}}
|
{{if data.occupant.health >= 0}}
|
||||||
{{:~displayBar(occupant.health, 0, occupant.maxHealth, 'good')}}
|
{{:helper.displayBar(data.occupant.health, 0, data.occupant.maxHealth, 'good')}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{:~displayBar(occupant.health, 0, occupant.minHealth, 'average alignRight')}}
|
{{:helper.displayBar(data.occupant.health, 0, data.occupant.minHealth, 'average alignRight')}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<div class="statusValue">{{:~round(occupant.health)}}</div>
|
<div class="statusValue">{{:helper.round(data.occupant.health)}}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="line">
|
<div class="line">
|
||||||
<div class="statusLabel">Radiation:</div>
|
<div class="statusLabel">Radiation:</div>
|
||||||
{{:~displayBar(occupant.radiationLevel, 0, 100, 'average')}}
|
{{:helper.displayBar(data.occupant.radiationLevel, 0, 100, 'average')}}
|
||||||
<div class="statusValue">{{:~round(occupant.radiationLevel)}}</div>
|
<div class="statusValue">{{:helper.round(data.occupant.radiationLevel)}}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="line">
|
<div class="line">
|
||||||
<div class="statusLabel">Unique Enzymes:</div>
|
<div class="statusLabel">Unique Enzymes:</div>
|
||||||
<div class="statusValue">{{:occupant.uniqueEnzymes ? occupant.uniqueEnzymes : '<span class="bad">Unknown</span>'}}</div>
|
<div class="statusValue">{{:data.occupant.uniqueEnzymes ? data.occupant.uniqueEnzymes : '<span class="bad">Unknown</span>'}}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--<div class="line">
|
<!--<div class="line">
|
||||||
<div class="statusLabel"><small>Unique Identifier:</small></div>
|
<div class="statusLabel"><small>Unique Identifier:</small></div>
|
||||||
<div class="statusValue"><small>{{:occupant.uniqueIdentity}}</small></div>
|
<div class="statusValue"><small>{{:data.occupant.uniqueIdentity}}</small></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="line">
|
<div class="line">
|
||||||
<div class="statusLabel"><small>Structural Enzymes:</small></div>
|
<div class="statusLabel"><small>Structural Enzymes:</small></div>
|
||||||
<div class="statusValue"><small>{{:occupant.structuralEnzymes}}</small></div>
|
<div class="statusValue"><small>{{:data.occupant.structuralEnzymes}}</small></div>
|
||||||
</div>-->
|
</div>-->
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
@@ -61,65 +61,65 @@ Used In File(s): D:\Development\SS13-BS12\code\game\dna\dna_modifier.dm
|
|||||||
|
|
||||||
<h3>Operations</h3>
|
<h3>Operations</h3>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
{{:~link('Modify U.I.', 'link', {'selectMenuKey' : 'ui'}, selectedMenuKey == 'ui' ? 'selected' : null)}}
|
{{:helper.link('Modify U.I.', 'link', {'selectMenuKey' : 'ui'}, data.selectedMenuKey == 'ui' ? 'selected' : null)}}
|
||||||
{{:~link('Modify S.E.', 'link', {'selectMenuKey' : 'se'}, selectedMenuKey == 'se' ? 'selected' : null)}}
|
{{:helper.link('Modify S.E.', 'link', {'selectMenuKey' : 'se'}, data.selectedMenuKey == 'se' ? 'selected' : null)}}
|
||||||
{{:~link('Transfer Buffers', 'disk', {'selectMenuKey' : 'buffer'}, selectedMenuKey == 'buffer' ? 'selected' : null)}}
|
{{:helper.link('Transfer Buffers', 'disk', {'selectMenuKey' : 'buffer'}, data.selectedMenuKey == 'buffer' ? 'selected' : null)}}
|
||||||
{{:~link('Rejuvenators', 'plusthick', {'selectMenuKey' : 'rejuvenators'}, selectedMenuKey == 'rejuvenators' ? 'selected' : null)}}
|
{{:helper.link('Rejuvenators', 'plusthick', {'selectMenuKey' : 'rejuvenators'}, data.selectedMenuKey == 'rejuvenators' ? 'selected' : null)}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="item"> </div>
|
<div class="item"> </div>
|
||||||
|
|
||||||
{{if !selectedMenuKey || selectedMenuKey == 'ui'}}
|
{{if !data.selectedMenuKey || data.selectedMenuKey == 'ui'}}
|
||||||
<h3>Modify Unique Identifier</h3>
|
<h3>Modify Unique Identifier</h3>
|
||||||
{{:~displayDNABlocks(occupant.uniqueIdentity, selectedUIBlock, selectedUISubBlock, dnaBlockSize, 'UI')}}
|
{{:helper.displayDNABlocks(data.occupant.uniqueIdentity, data.selectedUIBlock, data.selectedUISubBlock, data.dnaBlockSize, 'UI')}}
|
||||||
<div class="clearBoth"></div>
|
<div class="clearBoth"></div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemLabelNarrow">
|
<div class="itemLabelNarrow">
|
||||||
Target:
|
Target:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContentWide">
|
<div class="itemContentWide">
|
||||||
{{:~link('-', null, {'changeUITarget' : 0}, selectedUITarget > 0 ? null : 'disabled')}}
|
{{:helper.link('-', null, {'changeUITarget' : 0}, (data.selectedUITarget > 0) ? null : 'disabled')}}
|
||||||
<div class="statusValue"> {{:selectedUITargetHex}} </div>
|
<div class="statusValue"> {{:data.selectedUITargetHex}} </div>
|
||||||
{{:~link('+', null, {'changeUITarget' : 1}, selectedUITarget < 15 ? null : 'disabled')}}
|
{{:helper.link('+', null, {'changeUITarget' : 1}, (data.selectedUITarget < 15) ? null : 'disabled')}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemContentWide">
|
<div class="itemContentWide">
|
||||||
{{:~link('Irradiate Block', 'radiation', {'pulseUIRadiation' : 1}, !occupant.isViableSubject ? 'disabled' : null)}}
|
{{:helper.link('Irradiate Block', 'radiation', {'pulseUIRadiation' : 1}, !data.occupant.isViableSubject ? 'disabled' : null)}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{else selectedMenuKey == 'se'}}
|
{{else data.selectedMenuKey == 'se'}}
|
||||||
<h3>Modify Structural Enzymes</h3>
|
<h3>Modify Structural Enzymes</h3>
|
||||||
{{:~displayDNABlocks(occupant.structuralEnzymes, selectedSEBlock, selectedSESubBlock, dnaBlockSize, 'SE')}}
|
{{:helper.displayDNABlocks(data.occupant.structuralEnzymes, data.selectedSEBlock, data.selectedSESubBlock, data.dnaBlockSize, 'SE')}}
|
||||||
<div class="clearBoth"></div>
|
<div class="clearBoth"></div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemContentWide">
|
<div class="itemContentWide">
|
||||||
{{:~link('Irradiate Block', 'radiation', {'pulseSERadiation' : 1}, !occupant.isViableSubject ? 'disabled' : null)}}
|
{{:helper.link('Irradiate Block', 'radiation', {'pulseSERadiation' : 1}, !data.occupant.isViableSubject ? 'disabled' : null)}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{else selectedMenuKey == 'buffer'}}
|
{{else data.selectedMenuKey == 'buffer'}}
|
||||||
<h3>Transfer Buffers</h3>
|
<h3>Transfer Buffers</h3>
|
||||||
{{for buffers}}
|
{{for data.buffers}}
|
||||||
<h4>Buffer {{:#index + 1}}</h4>
|
<h4>Buffer {{:(index + 1)}}</h4>
|
||||||
<div class="itemGroup">
|
<div class="itemGroup">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemLabelNarrow">
|
<div class="itemLabelNarrow">
|
||||||
Load Data:
|
Load Data:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContentWide">
|
<div class="itemContentWide">
|
||||||
{{:~link('Subject U.I.', 'link', {'bufferOption' : 'saveUI', 'bufferId' : (#index + 1)}, !~root.hasOccupant ? 'disabled' : null)}}
|
{{:helper.link('Subject U.I.', 'link', {'bufferOption' : 'saveUI', 'bufferId' : (index + 1)}, !data.hasOccupant ? 'disabled' : null)}}
|
||||||
{{:~link('Subject U.I. + U.E.', 'link', {'bufferOption' : 'saveUIAndUE', 'bufferId' : (#index + 1)}, !~root.hasOccupant ? 'disabled' : null)}}
|
{{:helper.link('Subject U.I. + U.E.', 'link', {'bufferOption' : 'saveUIAndUE', 'bufferId' : (index + 1)}, !data.hasOccupant ? 'disabled' : null)}}
|
||||||
{{:~link('Subject S.E.', 'link', {'bufferOption' : 'saveSE', 'bufferId' : (#index + 1)}, !~root.hasOccupant ? 'disabled' : null)}}
|
{{:helper.link('Subject S.E.', 'link', {'bufferOption' : 'saveSE', 'bufferId' : (index + 1)}, !data.hasOccupant ? 'disabled' : null)}}
|
||||||
{{:~link('From Disk', 'disk', {'bufferOption' : 'loadDisk', 'bufferId' : (#index + 1)}, !~root.hasDisk || !~root.disk.data ? 'disabled' : null)}}
|
{{:helper.link('From Disk', 'disk', {'bufferOption' : 'loadDisk', 'bufferId' : (index + 1)}, (!data.hasDisk || !data.disk.data) ? 'disabled' : null)}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{if data}}
|
{{if value.data}}
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemLabelNarrow">
|
<div class="itemLabelNarrow">
|
||||||
Label:
|
Label:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContentWide">
|
<div class="itemContentWide">
|
||||||
{{:~link(label, 'document-b', {'bufferOption' : 'changeLabel', 'bufferId' : (#parent.index + 1)})}}
|
{{:helper.link(value.label, 'document-b', {'bufferOption' : 'changeLabel', 'bufferId' : (index + 1)})}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
@@ -127,7 +127,7 @@ Used In File(s): D:\Development\SS13-BS12\code\game\dna\dna_modifier.dm
|
|||||||
Subject:
|
Subject:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContentWide">
|
<div class="itemContentWide">
|
||||||
{{:owner ? owner : '<span class="average">Unknown</span>'}}
|
{{:value.owner ? value.owner : '<span class="average">Unknown</span>'}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
@@ -135,8 +135,8 @@ Used In File(s): D:\Development\SS13-BS12\code\game\dna\dna_modifier.dm
|
|||||||
Stored Data:
|
Stored Data:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContentWide">
|
<div class="itemContentWide">
|
||||||
{{:data == 'ui' ? 'Unique Identifiers' : 'Structural Enzymes'}}
|
{{:value.data == 'ui' ? 'Unique Identifiers' : 'Structural Enzymes'}}
|
||||||
{{:ue ? ' + Unique Enzymes' : ''}}
|
{{:value.ue ? ' + Unique Enzymes' : ''}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{else}}
|
{{else}}
|
||||||
@@ -151,11 +151,11 @@ Used In File(s): D:\Development\SS13-BS12\code\game\dna\dna_modifier.dm
|
|||||||
Options:
|
Options:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContentWide">
|
<div class="itemContentWide">
|
||||||
{{:~link('Clear', 'trash', {'bufferOption' : 'clear', 'bufferId' : (#index + 1)}, !data ? 'disabled' : null)}}
|
{{:helper.link('Clear', 'trash', {'bufferOption' : 'clear', 'bufferId' : (index + 1)}, !value.data ? 'disabled' : null)}}
|
||||||
{{:~link('Injector', ~root.isInjectorReady ? 'pencil' : 'clock', {'bufferOption' : 'createInjector', 'bufferId' : (#index + 1)}, !~root.isInjectorReady || !data ? 'disabled' : null)}}
|
{{:helper.link('Injector', data.isInjectorReady ? 'pencil' : 'clock', {'bufferOption' : 'createInjector', 'bufferId' : (index + 1)}, (!data.isInjectorReady || !value.data) ? 'disabled' : null)}}
|
||||||
{{:~link('Block Injector', ~root.isInjectorReady ? 'pencil' : 'clock', {'bufferOption' : 'createInjector', 'bufferId' : (#index + 1), 'createBlockInjector' : 1}, !~root.isInjectorReady || !data ? 'disabled' : null)}}
|
{{:helper.link('Block Injector', data.isInjectorReady ? 'pencil' : 'clock', {'bufferOption' : 'createInjector', 'bufferId' : (index + 1), 'createBlockInjector' : 1}, (!data.isInjectorReady || !value.data) ? 'disabled' : null)}}
|
||||||
{{:~link('Transfer', 'radiation', {'bufferOption' : 'transfer', 'bufferId' : (#index + 1)}, !~root.hasOccupant || !data ? 'disabled' : null)}}
|
{{:helper.link('Transfer', 'radiation', {'bufferOption' : 'transfer', 'bufferId' : (index + 1)}, (!data.hasOccupant || !value.data) ? 'disabled' : null)}}
|
||||||
{{:~link('Save To Disk', 'disk', {'bufferOption' : 'saveDisk', 'bufferId' : (#index + 1)}, !data || !~root.hasDisk ? 'disabled' : null)}}
|
{{:helper.link('Save To Disk', 'disk', {'bufferOption' : 'saveDisk', 'bufferId' : (index + 1)}, (!value.data || !data.hasDisk) ? 'disabled' : null)}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -163,14 +163,14 @@ Used In File(s): D:\Development\SS13-BS12\code\game\dna\dna_modifier.dm
|
|||||||
|
|
||||||
<h4>Data Disk</h4>
|
<h4>Data Disk</h4>
|
||||||
<div class="itemGroup">
|
<div class="itemGroup">
|
||||||
{{if hasDisk}}
|
{{if data.hasDisk}}
|
||||||
{{if disk.data}}
|
{{if data.disk.data}}
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemLabelNarrow">
|
<div class="itemLabelNarrow">
|
||||||
Label:
|
Label:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContentWide">
|
<div class="itemContentWide">
|
||||||
{{:disk.label ? disk.label : 'No Label'}}
|
{{:data.disk.label ? data.disk.label : 'No Label'}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
@@ -178,7 +178,7 @@ Used In File(s): D:\Development\SS13-BS12\code\game\dna\dna_modifier.dm
|
|||||||
Subject:
|
Subject:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContentWide">
|
<div class="itemContentWide">
|
||||||
{{:disk.owner ? disk.owner : '<span class="average">Unknown</span>'}}
|
{{:data.disk.owner ? data.disk.owner : '<span class="average">Unknown</span>'}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
@@ -186,8 +186,8 @@ Used In File(s): D:\Development\SS13-BS12\code\game\dna\dna_modifier.dm
|
|||||||
Stored Data:
|
Stored Data:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContentWide">
|
<div class="itemContentWide">
|
||||||
{{:disk.data == 'ui' ? 'Unique Identifiers' : 'Structural Enzymes'}}
|
{{:data.disk.data == 'ui' ? 'Unique Identifiers' : 'Structural Enzymes'}}
|
||||||
{{:disk.ue ? ' + Unique Enzymes' : ''}}
|
{{:data.disk.ue ? ' + Unique Enzymes' : ''}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{else}}
|
{{else}}
|
||||||
@@ -206,26 +206,26 @@ Used In File(s): D:\Development\SS13-BS12\code\game\dna\dna_modifier.dm
|
|||||||
{{/if}}
|
{{/if}}
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemLabelNarrow">
|
<div class="itemLabelNarrow">
|
||||||
Options:
|
Options:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContentWide">
|
<div class="itemContentWide">
|
||||||
{{:~link('Wipe Disk', 'trash', {'bufferOption' : 'wipeDisk'}, !hasDisk || !disk.data ? 'disabled' : null)}}
|
{{:helper.link('Wipe Disk', 'trash', {'bufferOption' : 'wipeDisk'}, (!data.hasDisk || !data.disk.data) ? 'disabled' : null)}}
|
||||||
{{:~link('Eject Disk', 'eject', {'bufferOption' : 'ejectDisk'}, !hasDisk ? 'disabled' : null)}}
|
{{:helper.link('Eject Disk', 'eject', {'bufferOption' : 'ejectDisk'}, !data.hasDisk ? 'disabled' : null)}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{else selectedMenuKey == 'rejuvenators'}}
|
{{else data.selectedMenuKey == 'rejuvenators'}}
|
||||||
<h3>Rejuvenators</h3>
|
<h3>Rejuvenators</h3>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemLabelNarrow">
|
<div class="itemLabelNarrow">
|
||||||
Inject:
|
Inject:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContentWide">
|
<div class="itemContentWide">
|
||||||
{{:~link('5', 'pencil', {'injectRejuvenators' : 5}, !hasOccupant || !beakerVolume ? 'disabled' : null)}}
|
{{:helper.link('5', 'pencil', {'injectRejuvenators' : 5}, (!data.hasOccupant || !data.beakerVolume) ? 'disabled' : null)}}
|
||||||
{{:~link('10', 'pencil', {'injectRejuvenators' : 10}, !hasOccupant || !beakerVolume ? 'disabled' : null)}}
|
{{:helper.link('10', 'pencil', {'injectRejuvenators' : 10}, (!data.hasOccupant || !data.beakerVolume) ? 'disabled' : null)}}
|
||||||
{{:~link('20', 'pencil', {'injectRejuvenators' : 20}, !hasOccupant || !beakerVolume ? 'disabled' : null)}}
|
{{:helper.link('20', 'pencil', {'injectRejuvenators' : 20}, (!data.hasOccupant || !data.beakerVolume) ? 'disabled' : null)}}
|
||||||
{{:~link('30', 'pencil', {'injectRejuvenators' : 30}, !hasOccupant || !beakerVolume ? 'disabled' : null)}}
|
{{:helper.link('30', 'pencil', {'injectRejuvenators' : 30}, (!data.hasOccupant || !data.beakerVolume) ? 'disabled' : null)}}
|
||||||
{{:~link('50', 'pencil', {'injectRejuvenators' : 50}, !hasOccupant || !beakerVolume ? 'disabled' : null)}}
|
{{:helper.link('50', 'pencil', {'injectRejuvenators' : 50}, (!data.hasOccupant || !data.beakerVolume) ? 'disabled' : null)}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item"> </div>
|
<div class="item"> </div>
|
||||||
@@ -234,10 +234,10 @@ Used In File(s): D:\Development\SS13-BS12\code\game\dna\dna_modifier.dm
|
|||||||
Beaker:
|
Beaker:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContentWide" style="width: 40%;">
|
<div class="itemContentWide" style="width: 40%;">
|
||||||
{{if isBeakerLoaded}}
|
{{if data.isBeakerLoaded}}
|
||||||
{{:beakerLabel ? beakerLabel : '<span class="average">No label</span>'}}<br>
|
{{:data.beakerLabel ? data.beakerLabel : '<span class="average">No label</span>'}}<br>
|
||||||
{{if beakerVolume}}
|
{{if data.beakerVolume}}
|
||||||
<span class="highlight">{{:beakerVolume}} units remaining</span><br>
|
<span class="highlight">{{:data.beakerVolume}} units remaining</span><br>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="bad">Beaker is empty</span>
|
<span class="bad">Beaker is empty</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
@@ -246,23 +246,23 @@ Used In File(s): D:\Development\SS13-BS12\code\game\dna\dna_modifier.dm
|
|||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContentWide" style="width: 26%;">
|
<div class="itemContentWide" style="width: 26%;">
|
||||||
{{:~link('Eject Beaker', 'eject', {'ejectBeaker' : 1}, isBeakerLoaded ? null : 'disabled')}}
|
{{:helper.link('Eject Beaker', 'eject', {'ejectBeaker' : 1}, data.isBeakerLoaded ? null : 'disabled')}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
<div class="item"> </div>
|
<div class="item"> </div>
|
||||||
|
|
||||||
{{if !selectedMenuKey || selectedMenuKey == 'ui' || selectedMenuKey == 'se'}}
|
{{if !data.selectedMenuKey || data.selectedMenuKey == 'ui' || data.selectedMenuKey == 'se'}}
|
||||||
<h3>Radiation Emitter Settings</h3>
|
<h3>Radiation Emitter Settings</h3>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemLabelNarrow">
|
<div class="itemLabelNarrow">
|
||||||
Intensity:
|
Intensity:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContentWide">
|
<div class="itemContentWide">
|
||||||
{{:~link('-', null, {'radiationIntensity' : 0}, radiationIntensity > 1 ? null : 'disabled')}}
|
{{:helper.link('-', null, {'radiationIntensity' : 0}, (data.radiationIntensity > 1) ? null : 'disabled')}}
|
||||||
<div class="statusValue"> {{:radiationIntensity}} </div>
|
<div class="statusValue"> {{:data.radiationIntensity}} </div>
|
||||||
{{:~link('+', null, {'radiationIntensity' : 1}, radiationIntensity < 10 ? null : 'disabled')}}
|
{{:helper.link('+', null, {'radiationIntensity' : 1}, (data.radiationIntensity < 10) ? null : 'disabled')}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
@@ -270,9 +270,9 @@ Used In File(s): D:\Development\SS13-BS12\code\game\dna\dna_modifier.dm
|
|||||||
Duration:
|
Duration:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContentWide">
|
<div class="itemContentWide">
|
||||||
{{:~link('-', null, {'radiationDuration' : 0}, radiationDuration > 2 ? null : 'disabled')}}
|
{{:helper.link('-', null, {'radiationDuration' : 0}, (data.radiationDuration > 2) ? null : 'disabled')}}
|
||||||
<div class="statusValue"> {{:radiationDuration}} </div>
|
<div class="statusValue"> {{:data.radiationDuration}} </div>
|
||||||
{{:~link('+', null, {'radiationDuration' : 1}, radiationDuration < 20 ? null : 'disabled')}}
|
{{:helper.link('+', null, {'radiationDuration' : 1}, (data.radiationDuration < 20) ? null : 'disabled')}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
@@ -280,7 +280,7 @@ Used In File(s): D:\Development\SS13-BS12\code\game\dna\dna_modifier.dm
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContentWide">
|
<div class="itemContentWide">
|
||||||
{{:~link('Pulse Radiation', 'radiation', {'pulseRadiation' : 1}, !hasOccupant ? 'disabled' : null)}}
|
{{:helper.link('Pulse Radiation', 'radiation', {'pulseRadiation' : 1}, !data.hasOccupant ? 'disabled' : null)}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
@@ -294,7 +294,7 @@ Used In File(s): D:\Development\SS13-BS12\code\game\dna\dna_modifier.dm
|
|||||||
Occupant:
|
Occupant:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContentWide">
|
<div class="itemContentWide">
|
||||||
{{:~link('Eject Occupant', 'eject', {'ejectOccupant' : 1}, locked || !hasOccupant || irradiating ? 'disabled' : null)}}
|
{{:helper.link('Eject Occupant', 'eject', {'ejectOccupant' : 1}, data.locked || !data.hasOccupant || data.irradiating ? 'disabled' : null)}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
@@ -302,16 +302,16 @@ Used In File(s): D:\Development\SS13-BS12\code\game\dna\dna_modifier.dm
|
|||||||
Door Lock:
|
Door Lock:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContentWide">
|
<div class="itemContentWide">
|
||||||
{{:~link('Engaged', 'locked', {'toggleLock' : 1}, locked ? 'selected' : !hasOccupant ? 'disabled' : null)}}
|
{{:helper.link('Engaged', 'locked', {'toggleLock' : 1}, data.locked ? 'selected' : !data.hasOccupant ? 'disabled' : null)}}
|
||||||
{{:~link('Disengaged', 'unlocked', {'toggleLock' : 1}, !locked ? 'selected' : irradiating ? 'disabled' : null)}}
|
{{:helper.link('Disengaged', 'unlocked', {'toggleLock' : 1}, !data.locked ? 'selected' : data.irradiating ? 'disabled' : null)}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{if irradiating}}
|
{{if data.irradiating}}
|
||||||
<div class="mask">
|
<div class="mask">
|
||||||
<div class="maskContent">
|
<div class="maskContent">
|
||||||
<h1>Irradiating Subject</h1>
|
<h1>Irradiating Subject</h1>
|
||||||
<h3>For {{:irradiating}} seconds.</h3>
|
<h3>For {{:data.irradiating}} seconds.</h3>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|||||||
@@ -3,53 +3,53 @@
|
|||||||
<div class="itemLabel">
|
<div class="itemLabel">
|
||||||
Docking Port Status:
|
Docking Port Status:
|
||||||
</div>
|
</div>
|
||||||
{{if docking_status == "docked"}}
|
{{if data.docking_status == "docked"}}
|
||||||
<div class="itemContent" style="float:left">
|
<div class="itemContent" style="float:left">
|
||||||
{{if !override_enabled}}
|
{{if !data.override_enabled}}
|
||||||
<span class="good" style="float:left">DOCKED</span>
|
<span class="good" style="float:left">DOCKED</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="bad" style="float:left">DOCKED-OVERRIDE ENABLED</span>
|
<span class="bad" style="float:left">DOCKED-OVERRIDE ENABLED</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<span style="float:right">
|
<span style="float:right">
|
||||||
{{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : null)}}
|
{{:helper.link('Override', 'alert', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redBackground' : null)}}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
{{else docking_status == "docking"}}
|
{{else data.docking_status == "docking"}}
|
||||||
<div class="itemContent" style="float:left">
|
<div class="itemContent" style="float:left">
|
||||||
{{if !override_enabled}}
|
{{if !data.override_enabled}}
|
||||||
<span class="average" style="float:left">DOCKING</span>
|
<span class="average" style="float:left">DOCKING</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="bad" style="float:left">DOCKING-OVERRIDE ENABLED</span>
|
<span class="bad" style="float:left">DOCKING-OVERRIDE ENABLED</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<span style="float:right">
|
<span style="float:right">
|
||||||
{{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : null)}}
|
{{:helper.link('Override', 'alert', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redBackground' : null)}}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
{{else docking_status == "undocking"}}
|
{{else data.docking_status == "undocking"}}
|
||||||
<div class="itemContent" style="float:left">
|
<div class="itemContent" style="float:left">
|
||||||
{{if !override_enabled}}
|
{{if !data.override_enabled}}
|
||||||
<span class="average" style="float:left">UNDOCKING</span>
|
<span class="average" style="float:left">UNDOCKING</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="bad" style="float:left">UNDOCKING-OVERRIDE ENABLED</span>
|
<span class="bad" style="float:left">UNDOCKING-OVERRIDE ENABLED</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<span style="float:right">
|
<span style="float:right">
|
||||||
{{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : null)}}
|
{{:helper.link('Override', 'alert', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redBackground' : null)}}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
{{else docking_status == "undocked"}}
|
{{else data.docking_status == "undocked"}}
|
||||||
<div class="itemContent" style="float:left">
|
<div class="itemContent" style="float:left">
|
||||||
{{if !override_enabled}}
|
{{if !data.override_enabled}}
|
||||||
<span class="idle" style="float:left">NOT IN USE</span>
|
<span class="idle" style="float:left">NOT IN USE</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="bad" style="float:left">OVERRIDE ENABLED</span>
|
<span class="bad" style="float:left">OVERRIDE ENABLED</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<span style="float:right">
|
<span style="float:right">
|
||||||
{{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : null)}}
|
{{:helper.link('Override', 'alert', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redBackground' : null)}}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="bad">ERROR</span>
|
<span class="bad">ERROR</span>
|
||||||
{{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : null)}}
|
{{:helper.link('Override', 'alert', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redBackground' : null)}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -59,9 +59,9 @@
|
|||||||
Chamber Pressure:
|
Chamber Pressure:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~displayBar(chamber_pressure, 0, 200, chamber_pressure < 80 || chamber_pressure > 120 ? 'bad' : chamber_pressure < 95 || chamber_pressure > 110 ? 'average' : 'good')}}
|
{{:helper.displayBar(data.chamber_pressure, 0, 200, (data.chamber_pressure < 80 || data.chamber_pressure > 120) ? 'bad' : (data.chamber_pressure < 95 || data.chamber_pressure > 110) ? 'average' : 'good')}}
|
||||||
<div class="statusValue">
|
<div class="statusValue">
|
||||||
{{:chamber_pressure}} kPa
|
{{:data.chamber_pressure}} kPa
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -69,28 +69,28 @@
|
|||||||
<div class="item" style="padding-top: 10px">
|
<div class="item" style="padding-top: 10px">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemContent" style="width: 100%">
|
<div class="itemContent" style="width: 100%">
|
||||||
{{:~link('Cycle to Exterior', 'arrowthickstop-1-w', {'command' : 'cycle_ext'}, (processing || airlock_disabled) ? 'disabled' : null)}}
|
{{:helper.link('Cycle to Exterior', 'arrowthickstop-1-w', {'command' : 'cycle_ext'}, (data.processing || data.airlock_disabled) ? 'disabled' : null)}}
|
||||||
{{:~link('Cycle to Interior', 'arrowthickstop-1-e', {'command' : 'cycle_int'}, (processing || airlock_disabled) ? 'disabled' : null)}}
|
{{:helper.link('Cycle to Interior', 'arrowthickstop-1-e', {'command' : 'cycle_int'}, (data.processing || data.airlock_disabled) ? 'disabled' : null)}}
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent" style="padding-top: 2px; width: 100%">
|
<div class="itemContent" style="padding-top: 2px; width: 100%">
|
||||||
{{if airlock_disabled}}
|
{{if data.airlock_disabled}}
|
||||||
{{:~link('Force exterior door', 'alert', {'command' : 'force_ext'}, 'disabled', null)}}
|
{{:helper.link('Force exterior door', 'alert', {'command' : 'force_ext'}, 'disabled', null)}}
|
||||||
{{:~link('Force interior door', 'alert', {'command' : 'force_int'}, 'disabled', null)}}
|
{{:helper.link('Force interior door', 'alert', {'command' : 'force_int'}, 'disabled', null)}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{if interior_status.state == "open"}}
|
{{if data.interior_status.state == "open"}}
|
||||||
{{:~link('Force exterior door', 'alert', {'command' : 'force_ext'}, null, 'redBackground')}}
|
{{:helper.link('Force exterior door', 'alert', {'command' : 'force_ext'}, null, 'redBackground')}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{:~link('Force exterior door', 'alert', {'command' : 'force_ext'}, null, processing ? 'yellowBackground' : null)}}
|
{{:helper.link('Force exterior door', 'alert', {'command' : 'force_ext'}, null, data.processing ? 'yellowBackground' : null)}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{if exterior_status.state == "open"}}
|
{{if data.exterior_status.state == "open"}}
|
||||||
{{:~link('Force interior door', 'alert', {'command' : 'force_int'}, null, 'redBackground')}}
|
{{:helper.link('Force interior door', 'alert', {'command' : 'force_int'}, null, 'redBackground')}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{:~link('Force interior door', 'alert', {'command' : 'force_int'}, null, processing ? 'yellowBackground' : null)}}
|
{{:helper.link('Force interior door', 'alert', {'command' : 'force_int'}, null, data.processing ? 'yellowBackground' : null)}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item" style="padding-top: 10px; width: 100%">
|
<div class="item" style="padding-top: 10px; width: 100%">
|
||||||
{{:~link('Abort', 'cancel', {'command' : 'abort'}, (processing && !airlock_disabled) ? null : 'disabled', (processing && !airlock_disabled) ? 'redBackground' : null)}}
|
{{:helper.link('Abort', 'cancel', {'command' : 'abort'}, (data.processing && !airlock_disabled) ? null : 'disabled', (data.processing && !data.airlock_disabled) ? 'redBackground' : null)}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
Exterior Door Status:
|
Exterior Door Status:
|
||||||
</div>
|
</div>
|
||||||
<div class="statusValue">
|
<div class="statusValue">
|
||||||
{{if exterior_status.state == "closed"}}
|
{{if data.exterior_status.state == "closed"}}
|
||||||
Locked
|
Locked
|
||||||
{{else}}
|
{{else}}
|
||||||
Open
|
Open
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
Interior Door Status:
|
Interior Door Status:
|
||||||
</div>
|
</div>
|
||||||
<div class="statusValue">
|
<div class="statusValue">
|
||||||
{{if interior_status.state == "closed"}}
|
{{if data.interior_status.state == "closed"}}
|
||||||
Locked
|
Locked
|
||||||
{{else}}
|
{{else}}
|
||||||
Open
|
Open
|
||||||
@@ -27,15 +27,15 @@
|
|||||||
<div class="item" style="padding-top: 10px">
|
<div class="item" style="padding-top: 10px">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemContent" style="width: 100%">
|
<div class="itemContent" style="width: 100%">
|
||||||
{{if exterior_status.state == "open"}}
|
{{if data.exterior_status.state == "open"}}
|
||||||
{{:~link('Lock Exterior Door', 'alert', {'command' : 'force_ext'}, processing ? 'disabled' : null)}}
|
{{:helper.link('Lock Exterior Door', 'alert', {'command' : 'force_ext'}, data.processing ? 'disabled' : null)}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{:~link('Cycle to Exterior', 'arrowthickstop-1-w', {'command' : 'cycle_ext_door'}, processing ? 'disabled' : null)}}
|
{{:helper.link('Cycle to Exterior', 'arrowthickstop-1-w', {'command' : 'cycle_ext_door'}, data.processing ? 'disabled' : null)}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{if interior_status.state == "open"}}
|
{{if data.interior_status.state == "open"}}
|
||||||
{{:~link('Lock Interior Door', 'alert', {'command' : 'force_int'}, processing ? 'disabled' : null)}}
|
{{:helper.link('Lock Interior Door', 'alert', {'command' : 'force_int'}, data.processing ? 'disabled' : null)}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{:~link('Cycle to Interior', 'arrowthickstop-1-e', {'command' : 'cycle_int_door'}, processing ? 'disabled' : null)}}
|
{{:helper.link('Cycle to Interior', 'arrowthickstop-1-e', {'command' : 'cycle_int_door'}, data.processing ? 'disabled' : null)}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
<div class="item">
|
<div class="item">
|
||||||
{{:~link('Overall status', 'note', {'state' :'status'}, null, state == 'status' ? 'selected' : null)}}
|
{{:helper.link('Overall status', 'note', {'state' :'status'}, null, state == 'status' ? 'selected' : null)}}
|
||||||
{{:~link('Details', 'note', {'state' : 'engines'}, null, state == 'engines' ? 'selected' : null)}}
|
{{:helper.link('Details', 'note', {'state' : 'engines'}, null, state == 'engines' ? 'selected' : null)}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{if state == "engines"}}
|
{{if data.state == "engines"}}
|
||||||
{{if engines_info}}
|
{{if data.engines_info}}
|
||||||
{{for engines_info}}
|
{{for data.engines_info}}
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<div class="itemLabel">
|
<div class="itemLabel">
|
||||||
<span class='white'>Engine #{{:#index + 1}}:</span>
|
<span class='white'>Engine #{{:(index + 1)}}:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~link(eng_on ? 'Shutdown' : 'Power up', 'power', { 'toggle' : 1, 'engine' : eng_reference }, null, eng_on ? 'selected' : null)}}
|
{{:helper.link(value.eng_on ? 'Shutdown' : 'Power up', 'power', { 'toggle' : 1, 'engine' : value.eng_reference }, null, value.eng_on ? 'selected' : null)}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class='statusDisplay'>
|
<div class='statusDisplay'>
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
<span class='average'>Type:</span>
|
<span class='average'>Type:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
<span class='white'>{{:eng_type}}</span>
|
<span class='white'>{{:value.eng_type}}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
@@ -28,8 +28,8 @@
|
|||||||
<span class='average'>Status:</span>
|
<span class='average'>Status:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
<span class='{{:eng_on ? 'good' : 'bad'}}'>{{:eng_on ? 'Online' : 'Offline'}}</span><br>
|
<span class='{{:value.eng_on ? 'good' : 'bad'}}'>{{:value.eng_on ? 'Online' : 'Offline'}}</span><br>
|
||||||
<span class='white'>{{:eng_status}}</span>
|
<span class='white'>{{:value.eng_status}}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
<span class='average'>Current thrust:</span>
|
<span class='average'>Current thrust:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
<span class='white'>{{:eng_thrust}}</span>
|
<span class='white'>{{:value.eng_thrust}}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
@@ -45,25 +45,25 @@
|
|||||||
<span class='average'>Thrust limit:</span>
|
<span class='average'>Thrust limit:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~link('', 'circle-plus', { 'limit' : 0.1, 'engine' : eng_reference }, null, null)}}
|
{{:helper.link('', 'circle-plus', { 'limit' : 0.1, 'engine' : value.eng_reference }, null, null)}}
|
||||||
{{:~link(eng_thrust_limiter+'%', null, { 'set_limit' : 1, 'engine' : eng_reference }, null, null)}}
|
{{:helper.link(value.eng_thrust_limiter+'%', null, { 'set_limit' : 1, 'engine' : value.eng_reference }, null, null)}}
|
||||||
{{:~link('', 'circle-minus', { 'limit' : -0.1, 'engine' : eng_reference }, null, null)}}
|
{{:helper.link('', 'circle-minus', { 'limit' : -0.1, 'engine' : value.eng_reference }, null, null)}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/for}}
|
{{/for}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{if state == "status"}}
|
{{if data.state == "status"}}
|
||||||
{{if engines_info}}
|
{{if data.engines_info}}
|
||||||
{{for engines_info}}
|
{{for data.engines_info}}
|
||||||
<div class='block'>
|
<div class='block'>
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<div class="itemLabel">
|
<div class="itemLabel">
|
||||||
<span class='white'>Engine #{{:#index + 1}}:</span>
|
<span class='white'>Engine #{{:(index + 1)}}:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~link(eng_on ? 'Shutdown' : 'Power up', 'power', { 'toggle' : 1, 'engine' : eng_reference }, null, eng_on ? 'selected' : null)}}
|
{{:helper.link(value.eng_on ? 'Shutdown' : 'Power up', 'power', { 'toggle' : 1, 'engine' : value.eng_reference }, null, value.eng_on ? 'selected' : null)}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
@@ -73,9 +73,9 @@
|
|||||||
<span class='average'>Thrust limit:</span>
|
<span class='average'>Thrust limit:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
<span class='white'>{{:eng_thrust}}</span>
|
<span class='white'>{{:value.eng_thrust}}</span>
|
||||||
<br>
|
<br>
|
||||||
<span class='white'>{{:eng_thrust_limiter}}%</span>
|
<span class='white'>{{:value.eng_thrust_limiter}}%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -4,17 +4,17 @@
|
|||||||
Escape Pod Status:
|
Escape Pod Status:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{if docking_status == "docked"}}
|
{{if data.docking_status == "docked"}}
|
||||||
{{if armed}}
|
{{if data.armed}}
|
||||||
<span class="average">ARMED</span>
|
<span class="average">ARMED</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="good">SYSTEMS OK</span>
|
<span class="good">SYSTEMS OK</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{else docking_status == "undocking"}}
|
{{else data.docking_status == "undocking"}}
|
||||||
<span class="average">EJECTING-STAND CLEAR!</span>
|
<span class="average">EJECTING-STAND CLEAR!</span>
|
||||||
{{else docking_status == "undocked"}}
|
{{else data.docking_status == "undocked"}}
|
||||||
<span class="idle">POD EJECTED</span>
|
<span class="idle">POD EJECTED</span>
|
||||||
{{else docking_status == "docking"}}
|
{{else data.docking_status == "docking"}}
|
||||||
<span class="good">INITIALIZING...</span>
|
<span class="good">INITIALIZING...</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="bad">ERROR</span>
|
<span class="bad">ERROR</span>
|
||||||
@@ -25,17 +25,17 @@
|
|||||||
<div class="item" style="padding-top: 10px">
|
<div class="item" style="padding-top: 10px">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemContent" style="padding-top: 2px; width: 100%">
|
<div class="itemContent" style="padding-top: 2px; width: 100%">
|
||||||
{{if armed}}
|
{{if data.armed}}
|
||||||
{{if docking_status == "docked"}}
|
{{if data.docking_status == "docked"}}
|
||||||
{{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, override_enabled ? null : 'disabled', null)}}
|
{{:helper.link('Force exterior door', 'alert', {'command' : 'force_door'}, data.override_enabled ? null : 'disabled', null)}}
|
||||||
{{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : null)}}
|
{{:helper.link('Override', 'alert', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redBackground' : null)}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, override_enabled ? null : 'disabled', override_enabled? 'redBackground' : null)}}
|
{{:helper.link('Force exterior door', 'alert', {'command' : 'force_door'}, data.override_enabled ? null : 'disabled', data.override_enabled? 'redBackground' : null)}}
|
||||||
{{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : 'yellowBackground')}}
|
{{:helper.link('Override', 'alert', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redBackground' : 'yellowBackground')}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, 'disabled', null)}}
|
{{:helper.link('Force exterior door', 'alert', {'command' : 'force_door'}, 'disabled', null)}}
|
||||||
{{:~link('Override', 'alert', {'command' : 'toggle_override'}, 'disabled', null)}}
|
{{:helper.link('Override', 'alert', {'command' : 'toggle_override'}, 'disabled', null)}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -4,17 +4,17 @@
|
|||||||
Escape Pod Status:
|
Escape Pod Status:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{if docking_status == "docked"}}
|
{{if data.docking_status == "docked"}}
|
||||||
{{if is_armed}}
|
{{if data.is_armed}}
|
||||||
<span class="average">ARMED</span>
|
<span class="average">ARMED</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="good">SYSTEMS OK</span>
|
<span class="good">SYSTEMS OK</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{else docking_status == "undocking"}}
|
{{else data.docking_status == "undocking"}}
|
||||||
<span class="average">EJECTING</span>
|
<span class="average">EJECTING</span>
|
||||||
{{else docking_status == "undocked"}}
|
{{else data.docking_status == "undocked"}}
|
||||||
<span class="idle">POD EJECTED</span>
|
<span class="idle">POD EJECTED</span>
|
||||||
{{else docking_status == "docking"}}
|
{{else data.docking_status == "docking"}}
|
||||||
<span class="average">DOCKING</span>
|
<span class="average">DOCKING</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="bad">ERROR</span>
|
<span class="bad">ERROR</span>
|
||||||
@@ -28,40 +28,40 @@
|
|||||||
Docking Hatch:
|
Docking Hatch:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{if docking_status == "docked"}}
|
{{if data.docking_status == "docked"}}
|
||||||
{{if door_state == "open"}}
|
{{if data.door_state == "open"}}
|
||||||
<span class="good">OPEN</span>
|
<span class="good">OPEN</span>
|
||||||
{{else door_state == "closed"}}
|
{{else data.door_state == "closed"}}
|
||||||
<span class="good">CLOSED</span>
|
<span class="good">CLOSED</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="bad">ERROR</span>
|
<span class="bad">ERROR</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{else docking_status == "docking"}}
|
{{else data.docking_status == "docking"}}
|
||||||
{{if door_state == "open"}}
|
{{if data.door_state == "open"}}
|
||||||
<span class="good">OPEN</span>
|
<span class="good">OPEN</span>
|
||||||
{{else door_state == "closed" && door_lock == "locked"}}
|
{{else data.door_state == "closed" && data.door_lock == "locked"}}
|
||||||
<span class="good">SECURED</span>
|
<span class="good">SECURED</span>
|
||||||
{{else door_state == "closed" && door_lock == "unlocked"}}
|
{{else data.door_state == "closed" && data.door_lock == "unlocked"}}
|
||||||
<span class="good">UNSECURED</span>
|
<span class="good">UNSECURED</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="bad">ERROR</span>
|
<span class="bad">ERROR</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{else docking_status == "undocking"}}
|
{{else data.docking_status == "undocking"}}
|
||||||
{{if door_state == "open"}}
|
{{if data.door_state == "open"}}
|
||||||
<span class="average">OPEN</span>
|
<span class="average">OPEN</span>
|
||||||
{{else door_state == "closed" && door_lock == "locked"}}
|
{{else data.door_state == "closed" && data.door_lock == "locked"}}
|
||||||
<span class="good">SECURED</span>
|
<span class="good">SECURED</span>
|
||||||
{{else door_state == "closed" && door_lock == "unlocked"}}
|
{{else data.door_state == "closed" && data.door_lock == "unlocked"}}
|
||||||
<span class="average">UNSECURED</span>
|
<span class="average">UNSECURED</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="bad">ERROR</span>
|
<span class="bad">ERROR</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{else docking_status == "undocked"}}
|
{{else data.docking_status == "undocked"}}
|
||||||
{{if door_state == "open"}}
|
{{if data.door_state == "open"}}
|
||||||
<span class="bad">OPEN</span>
|
<span class="bad">OPEN</span>
|
||||||
{{else door_state == "closed" && door_lock == "locked"}}
|
{{else data.door_state == "closed" && data.door_lock == "locked"}}
|
||||||
<span class="good">SECURED</span>
|
<span class="good">SECURED</span>
|
||||||
{{else door_state == "closed" && door_lock == "unlocked"}}
|
{{else data.door_state == "closed" && data.door_lock == "unlocked"}}
|
||||||
<span class="bad">UNSECURED</span>
|
<span class="bad">UNSECURED</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="bad">ERROR</span>
|
<span class="bad">ERROR</span>
|
||||||
@@ -75,12 +75,12 @@
|
|||||||
<div class="item" style="padding-top: 10px">
|
<div class="item" style="padding-top: 10px">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemContent" style="padding-top: 2px; width: 100%">
|
<div class="itemContent" style="padding-top: 2px; width: 100%">
|
||||||
{{if docking_status == "docked"}}
|
{{if data.docking_status == "docked"}}
|
||||||
{{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, override_enabled ? null : 'disabled', null)}}
|
{{:helper.link('Force exterior door', 'alert', {'command' : 'force_door'}, data.override_enabled ? null : 'disabled', null)}}
|
||||||
{{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : null)}}
|
{{:helper.link('Override', 'alert', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redBackground' : null)}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, override_enabled ? null : 'disabled', override_enabled? 'redBackground' : null)}}
|
{{:helper.link('Force exterior door', 'alert', {'command' : 'force_door'}, data.override_enabled ? null : 'disabled', data.override_enabled? 'redBackground' : null)}}
|
||||||
{{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : 'yellowBackground')}}
|
{{:helper.link('Override', 'alert', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redBackground' : 'yellowBackground')}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -88,8 +88,8 @@
|
|||||||
<div class="item" style="padding-top: 10px">
|
<div class="item" style="padding-top: 10px">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemContent" style="padding-top: 2px; width: 100%">
|
<div class="itemContent" style="padding-top: 2px; width: 100%">
|
||||||
{{:~link('ARM', 'alert', {'command' : 'manual_arm'}, is_armed ? 'disabled' : null, is_armed ? 'redBackground' : 'yellowBackground')}}
|
{{:helper.link('ARM', 'alert', {'command' : 'manual_arm'}, data.is_armed ? 'disabled' : null, data.is_armed ? 'redBackground' : 'yellowBackground')}}
|
||||||
{{:~link('MANUAL EJECT', 'alert', {'command' : 'force_launch'}, can_force ? null : 'disabled', can_force ? 'yellowBackground' : null)}}
|
{{:helper.link('MANUAL EJECT', 'alert', {'command' : 'force_launch'}, data.can_force ? null : 'disabled', data.can_force ? 'yellowBackground' : null)}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<h3>Shuttle Status</h3>
|
<h3>Shuttle Status</h3>
|
||||||
<div class="item" style="padding-top: 10px">
|
<div class="item" style="padding-top: 10px">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
{{:shuttle_status}}
|
{{:data.shuttle_status}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item" style="padding-top: 10px">
|
<div class="item" style="padding-top: 10px">
|
||||||
@@ -10,11 +10,11 @@
|
|||||||
Bluespace Drive:
|
Bluespace Drive:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{if shuttle_state == "idle"}}
|
{{if data.shuttle_state == "idle"}}
|
||||||
<span class="idle">IDLE</span>
|
<span class="idle">IDLE</span>
|
||||||
{{else shuttle_state == "warmup"}}
|
{{else data.shuttle_state == "warmup"}}
|
||||||
<span style="font-weight: bold;color: #336699">SPINNING UP</span>
|
<span style="font-weight: bold;color: #336699">SPINNING UP</span>
|
||||||
{{else shuttle_state == "in_transit"}}
|
{{else data.shuttle_state == "in_transit"}}
|
||||||
<span style="font-weight: bold;color: #336699">ENGAGED</span>
|
<span style="font-weight: bold;color: #336699">ENGAGED</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="bad">ERROR</span>
|
<span class="bad">ERROR</span>
|
||||||
@@ -22,28 +22,28 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{if has_docking}}
|
{{if data.has_docking}}
|
||||||
<div class="item" style="padding-top: 10px">
|
<div class="item" style="padding-top: 10px">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemLabel">
|
<div class="itemLabel">
|
||||||
Docking Status:
|
Docking Status:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{if docking_status == "docked"}}
|
{{if data.docking_status == "docked"}}
|
||||||
<span class="good">DOCKED</span>
|
<span class="good">DOCKED</span>
|
||||||
{{else docking_status == "docking"}}
|
{{else data.docking_status == "docking"}}
|
||||||
{{if !docking_override}}
|
{{if !data.docking_override}}
|
||||||
<span class="average">DOCKING</span>
|
<span class="average">DOCKING</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="average">DOCKING-MANUAL</span>
|
<span class="average">DOCKING-MANUAL</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{else docking_status == "undocking"}}
|
{{else data.docking_status == "undocking"}}
|
||||||
{{if !docking_override}}
|
{{if !data.docking_override}}
|
||||||
<span class="average">UNDOCKING</span>
|
<span class="average">UNDOCKING</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="average">UNDOCKING-MANUAL</span>
|
<span class="average">UNDOCKING-MANUAL</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{else docking_status == "undocked"}}
|
{{else data.docking_status == "undocked"}}
|
||||||
<span class="idle">UNDOCKED</span>
|
<span class="idle">UNDOCKED</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="bad">ERROR</span>
|
<span class="bad">ERROR</span>
|
||||||
@@ -55,7 +55,7 @@
|
|||||||
<h3>Shuttle Authorization</h3>
|
<h3>Shuttle Authorization</h3>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
{{if has_auth}}
|
{{if data.has_auth}}
|
||||||
Access Granted. Shuttle controls unlocked.
|
Access Granted. Shuttle controls unlocked.
|
||||||
{{else}}
|
{{else}}
|
||||||
Additional authorization required.
|
Additional authorization required.
|
||||||
@@ -63,8 +63,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item" style="padding-top: 10px">
|
<div class="item" style="padding-top: 10px">
|
||||||
{{for auth_list}}
|
{{for data.auth_list}}
|
||||||
{{:~link(auth_name, 'eject', {'auth' : auth_hash}, null, 'itemContentWide')}}
|
{{:helper.link(value.auth_name, 'eject', {'auth' : value.auth_hash}, null, 'itemContentWide')}}
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -72,9 +72,9 @@
|
|||||||
<div class="item" style="padding-top: 10px">
|
<div class="item" style="padding-top: 10px">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemContent" style="padding-top: 2px; width: 100%">
|
<div class="itemContent" style="padding-top: 2px; width: 100%">
|
||||||
{{:~link('Launch Shuttle', 'arrowthickstop-1-e', {'move' : '1'}, can_launch? null : 'disabled' , null)}}
|
{{:helper.link('Launch Shuttle', 'arrowthickstop-1-e', {'move' : '1'}, data.can_launch? null : 'disabled' , null)}}
|
||||||
{{:~link('Cancel Launch', 'cancel', {'cancel' : '1'}, can_cancel? null : 'disabled' , null)}}
|
{{:helper.link('Cancel Launch', 'cancel', {'cancel' : '1'}, data.can_cancel? null : 'disabled' , null)}}
|
||||||
{{:~link('Force Launch', 'alert', {'force' : '1'}, can_force? null : 'disabled' , can_force? 'redBackground' : null)}}
|
{{:helper.link('Force Launch', 'alert', {'force' : '1'}, data.can_force? null : 'disabled' , data.can_force? 'redBackground' : null)}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
Status:
|
Status:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~link('On', 'power', {'toggleStatus' : 1}, on ? 'selected' : null)}}{{:~link('Off', 'close', {'toggleStatus' : 1}, on ? null : 'selected')}}
|
{{:helper.link('On', 'power', {'toggleStatus' : 1}, data.on ? 'selected' : null)}}{{:helper.link('Off', 'close', {'toggleStatus' : 1}, data.on ? null : 'selected')}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
Gas Pressure:
|
Gas Pressure:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:gasPressure}} kPa
|
{{:data.gasPressure}} kPa
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -22,9 +22,9 @@
|
|||||||
Current:
|
Current:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~displayBar(gasTemperature, minGasTemperature, maxGasTemperature, gasTemperatureClass)}}
|
{{:helper.displayBar(data.gasTemperature, data.minGasTemperature, data.maxGasTemperature, data.gasTemperatureClass)}}
|
||||||
<div class="statusValue">
|
<div class="statusValue">
|
||||||
<span class="{{:gasTemperatureClass}}">{{:gasTemperature}} K</span>
|
<span class="{{:data.gasTemperatureClass}}">{{:data.gasTemperature}} K</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -34,15 +34,15 @@
|
|||||||
Target:
|
Target:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~displayBar(targetGasTemperature, minGasTemperature, maxGasTemperature)}}
|
{{:helper.displayBar(data.targetGasTemperature, data.minGasTemperature, data.maxGasTemperature)}}
|
||||||
<div style="clear: both; padding-top: 4px;">
|
<div style="clear: both; padding-top: 4px;">
|
||||||
{{:~link('-', null, {'temp' : -100}, (targetGasTemperature > minGasTemperature) ? null : 'disabled')}}
|
{{:helper.link('-', null, {'temp' : -100}, (data.targetGasTemperature > data.minGasTemperature) ? null : 'disabled')}}
|
||||||
{{:~link('-', null, {'temp' : -10}, (targetGasTemperature > minGasTemperature) ? null : 'disabled')}}
|
{{:helper.link('-', null, {'temp' : -10}, (data.targetGasTemperature > data.minGasTemperature) ? null : 'disabled')}}
|
||||||
{{:~link('-', null, {'temp' : -1}, (targetGasTemperature > minGasTemperature) ? null : 'disabled')}}
|
{{:helper.link('-', null, {'temp' : -1}, (data.targetGasTemperature > data.minGasTemperature) ? null : 'disabled')}}
|
||||||
<div style="float: left; width: 80px; text-align: center;"> {{:targetGasTemperature}} K </div>
|
<div style="float: left; width: 80px; text-align: center;"> {{:data.targetGasTemperature}} K </div>
|
||||||
{{:~link('+', null, {'temp' : 1}, (targetGasTemperature < maxGasTemperature) ? null : 'disabled')}}
|
{{:helper.link('+', null, {'temp' : 1}, (data.targetGasTemperature < data.maxGasTemperature) ? null : 'disabled')}}
|
||||||
{{:~link('+', null, {'temp' : 10}, (targetGasTemperature < maxGasTemperature) ? null : 'disabled')}}
|
{{:helper.link('+', null, {'temp' : 10}, (data.targetGasTemperature < data.maxGasTemperature) ? null : 'disabled')}}
|
||||||
{{:~link('+', null, {'temp' : 100}, (targetGasTemperature < maxGasTemperature) ? null : 'disabled')}}
|
{{:helper.link('+', null, {'temp' : 100}, (data.targetGasTemperature < data.maxGasTemperature) ? null : 'disabled')}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ Used In File(s): \code\modules\research\xenoarchaeology\machinery\geosample_scan
|
|||||||
<h3>Machine Status</h3>
|
<h3>Machine Status</h3>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemContent" style="width: 20%;">
|
<div class="itemContent" style="width: 20%;">
|
||||||
{{:~link(scanning ? 'Halt Scan' : 'Begin Scan', 'signal-diag', {'scanItem' : 1}, null)}}
|
{{:helper.link(data.scanning ? 'Halt Scan' : 'Begin Scan', 'signal-diag', {'scanItem' : 1}, null)}}
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent" style="width: 20%;">
|
<div class="itemContent" style="width: 20%;">
|
||||||
{{:~link('Eject item', 'eject', {'ejectItem' : 1}, (scanned_item && !scanning) ? null : 'disabled')}}
|
{{:helper.link('Eject item', 'eject', {'ejectItem' : 1}, (data.scanned_item && !data.scanning) ? null : 'disabled')}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -17,8 +17,8 @@ Used In File(s): \code\modules\research\xenoarchaeology\machinery\geosample_scan
|
|||||||
<div class="line">
|
<div class="line">
|
||||||
<div class="statusLabel">Item:</div>
|
<div class="statusLabel">Item:</div>
|
||||||
<div class="statusValue">
|
<div class="statusValue">
|
||||||
{{if scanned_item}}
|
{{if data.scanned_item}}
|
||||||
<span class="good">{{:scanned_item}}</span>
|
<span class="good">{{:data.scanned_item}}</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="bad">No item inserted</span>
|
<span class="bad">No item inserted</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
@@ -27,8 +27,8 @@ Used In File(s): \code\modules\research\xenoarchaeology\machinery\geosample_scan
|
|||||||
<div class="line">
|
<div class="line">
|
||||||
<div class="statusLabel">Heuristic analysis:</div>
|
<div class="statusLabel">Heuristic analysis:</div>
|
||||||
<div class="statusValue">
|
<div class="statusValue">
|
||||||
{{if scanned_item_desc}}
|
{{if data.scanned_item_desc}}
|
||||||
<span class="average">{{:scanned_item_desc}}</span>
|
<span class="average">{{:data.scanned_item_desc}}</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -38,11 +38,11 @@ Used In File(s): \code\modules\research\xenoarchaeology\machinery\geosample_scan
|
|||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemLabel" style="width: 21%;">Scan progress:</div>
|
<div class="itemLabel" style="width: 21%;">Scan progress:</div>
|
||||||
<div class="itemContent" style="width: 35%;">
|
<div class="itemContent" style="width: 35%;">
|
||||||
{{:~displayBar(scan_progress, 0, 100, 'good')}}
|
{{:helper.displayBar(data.scan_progress, 0, 100, 'good')}}
|
||||||
{{:scan_progress}} %
|
{{:data.scan_progress}} %
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent" style="width: 44%;">
|
<div class="itemContent" style="width: 44%;">
|
||||||
{{if scan_progress >= 100}}
|
{{if data.scan_progress >= 100}}
|
||||||
<span class="notice" style="width: 100%;">Scan completed successfully.</span>
|
<span class="notice" style="width: 100%;">Scan completed successfully.</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
@@ -50,11 +50,11 @@ Used In File(s): \code\modules\research\xenoarchaeology\machinery\geosample_scan
|
|||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemLabel" style="width: 21%;">Vacuum seal integrity:</div>
|
<div class="itemLabel" style="width: 21%;">Vacuum seal integrity:</div>
|
||||||
<div class="itemContent" style="width: 35%;">
|
<div class="itemContent" style="width: 35%;">
|
||||||
{{:~displayBar(scanner_seal_integrity, 0, 100, (scanner_seal_integrity < 66 ? (scanner_seal_integrity < 33 ? 'bad' : 'average') : 'good'))}}
|
{{:helper.displayBar(data.scanner_seal_integrity, 0, 100, ((data.scanner_seal_integrity < 66) ? ((data.scanner_seal_integrity < 33) ? 'bad' : 'average') : 'good'))}}
|
||||||
{{:scanner_seal_integrity}} %
|
{{:data.scanner_seal_integrity}} %
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent" style="width: 44%;">
|
<div class="itemContent" style="width: 44%;">
|
||||||
{{if scanner_seal_integrity < 25}}
|
{{if data.scanner_seal_integrity < 25}}
|
||||||
<span class="notice">Warning! Vacuum seal breach will result in scan failure!</span>
|
<span class="notice">Warning! Vacuum seal breach will result in scan failure!</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
@@ -64,11 +64,11 @@ Used In File(s): \code\modules\research\xenoarchaeology\machinery\geosample_scan
|
|||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemLabel" style="width: 21%;">MASER Efficiency:</div>
|
<div class="itemLabel" style="width: 21%;">MASER Efficiency:</div>
|
||||||
<div class="itemContent" style="width: 35%;">
|
<div class="itemContent" style="width: 35%;">
|
||||||
{{:~displayBar(maser_efficiency, 1, 100, (maser_efficiency < 66 ? (maser_efficiency < 33 ? 'bad' : 'average') : 'good'))}}
|
{{:helper.displayBar(data.maser_efficiency, 1, 100, ((data.maser_efficiency < 66) ? ((data.maser_efficiency) < 33 ? 'bad' : 'average') : 'good'))}}
|
||||||
{{:maser_efficiency}} %
|
{{:data.maser_efficiency}} %
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent" style="width: 44%;">
|
<div class="itemContent" style="width: 44%;">
|
||||||
{{if maser_efficiency < 50}}
|
{{if data.maser_efficiency < 50}}
|
||||||
<span class="notice">Match wavelengths to progress the scan.</span>
|
<span class="notice">Match wavelengths to progress the scan.</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
@@ -76,25 +76,25 @@ Used In File(s): \code\modules\research\xenoarchaeology\machinery\geosample_scan
|
|||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemLabel" style="width: 21%;">Optimal Wavelength:</div>
|
<div class="itemLabel" style="width: 21%;">Optimal Wavelength:</div>
|
||||||
<div class="itemContent" style="width: 35%;">
|
<div class="itemContent" style="width: 35%;">
|
||||||
{{:~displayBar(optimal_wavelength, 1, 10000, 'good')}}
|
{{:helper.displayBar(data.optimal_wavelength, 1, 10000, 'good')}}
|
||||||
{{:optimal_wavelength}} MHz
|
{{:data.optimal_wavelength}} MHz
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemLabel" style="width: 21%;">Current Wavelength:</div>
|
<div class="itemLabel" style="width: 21%;">Current Wavelength:</div>
|
||||||
<div class="itemContent" style="width: 35%;">
|
<div class="itemContent" style="width: 35%;">
|
||||||
{{:~displayBar(maser_wavelength, 1, 10000, 'good')}}
|
{{:helper.displayBar(data.maser_wavelength, 1, 10000, 'good')}}
|
||||||
{{:maser_wavelength}} MHz
|
{{:data.maser_wavelength}} MHz
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent" style="text-align:left; width: 22%;">
|
<div class="itemContent" style="text-align:left; width: 22%;">
|
||||||
{{:~link('-2 KHz', null, {'maserWavelength' : -2}, null)}}
|
{{:helper.link('-2 KHz', null, {'maserWavelength' : -2}, null)}}
|
||||||
{{:~link('-1 KHz', null, {'maserWavelength' : -1}, null)}}
|
{{:helper.link('-1 KHz', null, {'maserWavelength' : -1}, null)}}
|
||||||
{{:~link('-0.5 KHz', null, {'maserWavelength' : -0.5}, null)}}
|
{{:helper.link('-0.5 KHz', null, {'maserWavelength' : -0.5}, null)}}
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent" style="text-align:right; width: 22%;">
|
<div class="itemContent" style="text-align:right; width: 22%;">
|
||||||
{{:~link('+0.5 KHz', null, {'maserWavelength' : 0.5}, null)}}
|
{{:helper.link('+0.5 KHz', null, {'maserWavelength' : 0.5}, null)}}
|
||||||
{{:~link('+1 KHz', null, {'maserWavelength' : 1}, null)}}
|
{{:helper.link('+1 KHz', null, {'maserWavelength' : 1}, null)}}
|
||||||
{{:~link('+2 KHz', null, {'maserWavelength' : 2}, null)}}
|
{{:helper.link('+2 KHz', null, {'maserWavelength' : 2}, null)}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -102,18 +102,18 @@ Used In File(s): \code\modules\research\xenoarchaeology\machinery\geosample_scan
|
|||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemLabel" style="width: 21%;">Centrifuge speed:</div>
|
<div class="itemLabel" style="width: 21%;">Centrifuge speed:</div>
|
||||||
<div class="itemContent" style="width: 35%;">
|
<div class="itemContent" style="width: 35%;">
|
||||||
{{:~displayBar(scanner_rpm, 0, 1000, 'good')}}
|
{{:helper.displayBar(data.scanner_rpm, 0, 1000, 'good')}}
|
||||||
{{:scanner_rpm}} RPM
|
{{:data.scanner_rpm}} RPM
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemLabel" style="width: 21%;">Internal temperature:</div>
|
<div class="itemLabel" style="width: 21%;">Internal temperature:</div>
|
||||||
<div class="itemContent" style="width: 35%;">
|
<div class="itemContent" style="width: 35%;">
|
||||||
{{:~displayBar(scanner_temperature, 0, 1273, (scanner_temperature > 250 ? (scanner_temperature > 1000 ? 'bad' : 'average') : 'good')))}}
|
{{:helper.displayBar(data.scanner_temperature, 0, 1273, (data.scanner_temperature > 250 ? (data.scanner_temperature > 1000 ? 'bad' : 'average') : 'good')))}}
|
||||||
{{:scanner_temperature}} K
|
{{:data.scanner_temperature}} K
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent" style="width: 44%;">
|
<div class="itemContent" style="width: 44%;">
|
||||||
{{if scanner_temperature > 1000}}
|
{{if data.scanner_temperature > 1000}}
|
||||||
<span class="notice" style="width: 100%;">Warning! Exceeding 1200K will result in scan failure!</span>
|
<span class="notice" style="width: 100%;">Warning! Exceeding 1200K will result in scan failure!</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
@@ -123,12 +123,12 @@ Used In File(s): \code\modules\research\xenoarchaeology\machinery\geosample_scan
|
|||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemLabel" style="width: 21%;">Ambient radiation:</div>
|
<div class="itemLabel" style="width: 21%;">Ambient radiation:</div>
|
||||||
<div class="itemContent" style="width: 35%;">
|
<div class="itemContent" style="width: 35%;">
|
||||||
{{:~displayBar(radiation, 0, 100, (radiation > 15 ? (radiation > 65 ? 'bad' : 'average') : 'good'))}}
|
{{:helper.displayBar(data.radiation, 0, 100, ((data.radiation > 15) ? ((data.radiation > 65) ? 'bad' : 'average') : 'good'))}}
|
||||||
{{:radiation}} mSv
|
{{:data.radiation}} mSv
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent" style="width: 44%;">
|
<div class="itemContent" style="width: 44%;">
|
||||||
{{:~link(rad_shield_on ? 'Disable Radiation Shielding' : 'Enable Radiation Shielding', 'radiation', {'toggle_rad_shield' : 1}, null)}}
|
{{:helper.link(data.rad_shield_on ? 'Disable Radiation Shielding' : 'Enable Radiation Shielding', 'radiation', {'toggle_rad_shield' : 1}, null)}}
|
||||||
{{if rad_shield_on}}
|
{{if data.rad_shield_on}}
|
||||||
<span class="notice" style="width: 100%;">Shield blocking scanner.</span>
|
<span class="notice" style="width: 100%;">Shield blocking scanner.</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
@@ -138,11 +138,11 @@ Used In File(s): \code\modules\research\xenoarchaeology\machinery\geosample_scan
|
|||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemLabel" style="width: 21%;">Coolant remaining:</div>
|
<div class="itemLabel" style="width: 21%;">Coolant remaining:</div>
|
||||||
<div class="itemContent" style="width: 35%;">
|
<div class="itemContent" style="width: 35%;">
|
||||||
{{:~displayBar(unused_coolant_per, 0, 100, (unused_coolant_per < 66 ? (unused_coolant_per < 33 ? 'bad' : 'average') : 'good'))}}
|
{{:helper.displayBar(data.unused_coolant_per, 0, 100, ((data.unused_coolant_per < 66) ? ((data.unused_coolant_per < 33) ? 'bad' : 'average') : 'good'))}}
|
||||||
{{:unused_coolant_abs}} u
|
{{:data.unused_coolant_abs}} u
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent" style="width: 44%;">
|
<div class="itemContent" style="width: 44%;">
|
||||||
{{if unused_coolant_per < 20}}
|
{{if data.unused_coolant_per < 20}}
|
||||||
<span class="notice" style="width: 100%;">Warning! Coolant stocks low!</span>
|
<span class="notice" style="width: 100%;">Warning! Coolant stocks low!</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
@@ -150,28 +150,28 @@ Used In File(s): \code\modules\research\xenoarchaeology\machinery\geosample_scan
|
|||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemLabel" style="width: 21%;">Coolant flow rate:</div>
|
<div class="itemLabel" style="width: 21%;">Coolant flow rate:</div>
|
||||||
<div class="itemContent" style="width: 35%;">
|
<div class="itemContent" style="width: 35%;">
|
||||||
{{:~displayBar(coolant_usage_rate, 0, 10, 'good')}}
|
{{:helper.displayBar(data.coolant_usage_rate, 0, 10, 'good')}}
|
||||||
{{:coolant_usage_rate}} u/s
|
{{:data.coolant_usage_rate}} u/s
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent" style="text-align:left; width: 22%;">
|
<div class="itemContent" style="text-align:left; width: 22%;">
|
||||||
{{:~link('Min u/s', null, {'coolantRate' : -10}, null)}}
|
{{:helper.link('Min u/s', null, {'coolantRate' : -10}, null)}}
|
||||||
{{:~link('-3 u/s', null, {'coolantRate' : -3}, null)}}
|
{{:helper.link('-3 u/s', null, {'coolantRate' : -3}, null)}}
|
||||||
{{:~link('-1 u/s', null, {'coolantRate' : -1}, null)}}
|
{{:helper.link('-1 u/s', null, {'coolantRate' : -1}, null)}}
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent" style="text-align:right; width: 22%;">
|
<div class="itemContent" style="text-align:right; width: 22%;">
|
||||||
{{:~link('+1 u/s', null, {'coolantRate' : 1}, null)}}
|
{{:helper.link('+1 u/s', null, {'coolantRate' : 1}, null)}}
|
||||||
{{:~link('+3 u/s', null, {'coolantRate' : 3}, null)}}
|
{{:helper.link('+3 u/s', null, {'coolantRate' : 3}, null)}}
|
||||||
{{:~link('Max u/s', null, {'coolantRate' : 10}, null)}}
|
{{:helper.link('Max u/s', null, {'coolantRate' : 10}, null)}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemLabel" style="width: 21%;">Coolant purity:</div>
|
<div class="itemLabel" style="width: 21%;">Coolant purity:</div>
|
||||||
<div class="itemContent" style="width: 35%;">
|
<div class="itemContent" style="width: 35%;">
|
||||||
{{:~displayBar(coolant_purity, 0, 100, (coolant_purity < 66 ? (coolant_purity < 33 ? 'bad' : 'average') : 'good'))}}
|
{{:helper.displayBar(data.coolant_purity, 0, 100, ((data.coolant_purity < 66) ? ((data.coolant_purity < 33) ? 'bad' : 'average') : 'good'))}}
|
||||||
{{:coolant_purity}} %
|
{{:data.coolant_purity}} %
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent" style="width: 44%;">
|
<div class="itemContent" style="width: 44%;">
|
||||||
{{if coolant_purity < 0.5}}
|
{{if data.coolant_purity < 0.5}}
|
||||||
<span class="notice" style="width: 100%;">Warning! Check coolant for contaminants!</span>
|
<span class="notice" style="width: 100%;">Warning! Check coolant for contaminants!</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
@@ -180,6 +180,6 @@ Used In File(s): \code\modules\research\xenoarchaeology\machinery\geosample_scan
|
|||||||
<h3>Latest Results</h3>
|
<h3>Latest Results</h3>
|
||||||
<div class="statusDisplay">
|
<div class="statusDisplay">
|
||||||
<div class="line">
|
<div class="line">
|
||||||
<span class="highlight">{{:last_scan_data}}</span>
|
<span class="highlight">{{:data.last_scan_data}}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,17 +1,13 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div style="float:left;width:50%">
|
<div style="float:left;width:50%">
|
||||||
<h3>Sector information</h3>
|
<h3>Sector information</h3>
|
||||||
<div class='block'>
|
<div class='block'>
|
||||||
{{:sector}}
|
{{:data.sector}}
|
||||||
<br>
|
<br>
|
||||||
<span class='average'>Coordinates:</span> {{:s_x}} : {{:s_y}}
|
<span class='average'>Coordinates:</span> {{:data.s_x}} : {{:data.s_y}}
|
||||||
<br>
|
<br>
|
||||||
<span class='average'>Additional information:</span> {{:s_x}} : {{:s_y}}
|
<span class='average'>Additional information:</span> {{:data.s_x}} : {{:data.s_y}}
|
||||||
{{:sector_info}}
|
{{:data.sector_info}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -23,7 +19,7 @@
|
|||||||
<span class='average'>Speed:</span>
|
<span class='average'>Speed:</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="float:right">
|
<div style="float:right">
|
||||||
{{:speed}}
|
{{:data.speed}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
@@ -31,7 +27,7 @@
|
|||||||
<span class='average'>Acceleration:</span>
|
<span class='average'>Acceleration:</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="float:right">
|
<div style="float:right">
|
||||||
{{:accel}}
|
{{:data.accel}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
@@ -39,7 +35,7 @@
|
|||||||
<span class='average'>Heading:</span>
|
<span class='average'>Heading:</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="float:right">
|
<div style="float:right">
|
||||||
{{:heading}}
|
{{:data.heading}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -51,26 +47,26 @@
|
|||||||
<div class='item'>
|
<div class='item'>
|
||||||
<div class="itemLabel">
|
<div class="itemLabel">
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
{{:~link('', 'triangle-1-nw', { 'move' : 9 }, null, null)}}
|
{{:helper.link('', 'triangle-1-nw', { 'move' : 9 }, null, null)}}
|
||||||
{{:~link('', 'triangle-1-n', { 'move' : 1 }, null, null)}}
|
{{:helper.link('', 'triangle-1-n', { 'move' : 1 }, null, null)}}
|
||||||
{{:~link('', 'triangle-1-ne', { 'move' : 5 }, null, null)}}
|
{{:helper.link('', 'triangle-1-ne', { 'move' : 5 }, null, null)}}
|
||||||
</div>
|
</div>
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
{{:~link('', 'triangle-1-w', { 'move' : 8 }, null, null)}}
|
{{:helper.link('', 'triangle-1-w', { 'move' : 8 }, null, null)}}
|
||||||
{{:~link('', 'circle-close', { 'brake' : 1 }, null, null)}}
|
{{:helper.link('', 'circle-close', { 'brake' : 1 }, null, null)}}
|
||||||
{{:~link('', 'triangle-1-e', { 'move' : 4 }, null, null)}}
|
{{:helper.link('', 'triangle-1-e', { 'move' : 4 }, null, null)}}
|
||||||
</div>
|
</div>
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
{{:~link('', 'triangle-1-sw', { 'move' : 10 }, null, null)}}
|
{{:helper.link('', 'triangle-1-sw', { 'move' : 10 }, null, null)}}
|
||||||
{{:~link('', 'triangle-1-s', { 'move' : 2 }, null, null)}}
|
{{:helper.link('', 'triangle-1-s', { 'move' : 2 }, null, null)}}
|
||||||
{{:~link('', 'triangle-1-se', { 'move' : 6 }, null, null)}}
|
{{:helper.link('', 'triangle-1-se', { 'move' : 6 }, null, null)}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<span class='white'>Direct control</span>
|
<span class='white'>Direct control</span>
|
||||||
{{:~link(manual_control ? 'Engaged' : 'Disengaged', 'shuffle', { 'manual' : 1 }, manual_control ? 'selected' : null, null)}}
|
{{:helper.link(data.manual_control ? 'Engaged' : 'Disengaged', 'shuffle', { 'manual' : 1 }, data.manual_control ? 'selected' : null, null)}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -81,7 +77,7 @@
|
|||||||
<h3>Autopilot</h3>
|
<h3>Autopilot</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent" style="padding-top: 10px;">
|
<div class="itemContent" style="padding-top: 10px;">
|
||||||
{{:~link(autopilot? 'Engaged' : 'Disengaged', 'gear', { 'apilot' : 1 }, dest ? null : 'disabled' , autopilot ? 'selected' : null)}}
|
{{:helper.link(data.autopilot ? 'Engaged' : 'Disengaged', 'gear', { 'apilot' : 1 }, data.dest ? null : 'disabled', data.autopilot ? 'selected' : null)}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
@@ -89,30 +85,30 @@
|
|||||||
<span class='white'>Target coordinates</span>
|
<span class='white'>Target coordinates</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="float:left;width:20%">
|
<div style="float:left;width:20%">
|
||||||
{{if dest}}
|
{{if data.dest}}
|
||||||
{{:~link(d_x, null, { 'setx' : 1 }, null, null)}} {{:~link(d_y, null, { 'sety' : 1 }, null, null)}}
|
{{:helper.link(data.d_x, null, { 'setx' : 1 }, null, null)}} {{:helper.link(data.d_y, null, { 'sety' : 1 }, null, null)}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{:~link('None', null, { 'sety' : 1, 'setx' : 1 }, null, null)}}
|
{{:helper.link('None', null, { 'sety' : 1, 'setx' : 1 }, null, null)}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h3>Navigation data</h3>
|
<h3>Navigation data</h3>
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
{{:~link('Save current position', 'disk', { 'add' : 'current' }, null)}}
|
{{:helper.link('Save current position', 'disk', { 'add' : 'current' }, null)}}
|
||||||
{{:~link('Add new entry', 'document', { 'add' : 'new' }, null)}}
|
{{:helper.link('Add new entry', 'document', { 'add' : 'new' }, null)}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class='statusDisplay'>
|
<div class='statusDisplay'>
|
||||||
{{if locations}}
|
{{if data.locations}}
|
||||||
{{for locations}}
|
{{for data.locations}}
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<span class='average'>{{:name}}:</span>
|
<span class='average'>{{:value.name}}:</span>
|
||||||
<span class='white'>{{:x}} : {{:y}}</span>
|
<span class='white'>{{:value.x}} : {{:value.y}}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
{{:~link('Plot course', 'arrowreturnthick-1-e', { 'x' : x, 'y' : y }, null, null)}}
|
{{:helper.link('Plot course', 'arrowreturnthick-1-e', { 'x' : value.x, 'y' : value.y }, null, null)}}
|
||||||
{{:~link('Remove entry', 'close', { 'remove' : reference }, null, null)}}
|
{{:helper.link('Remove entry', 'close', { 'remove' : value.reference }, null, null)}}
|
||||||
</div>
|
</div>
|
||||||
{{/for}}
|
{{/for}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{{if printing}}
|
{{if data.printing}}
|
||||||
<h5 class='average'>The computer is currently busy.</h5>
|
<h5 class='average'>The computer is currently busy.</h5>
|
||||||
<div class='notice'>
|
<div class='notice'>
|
||||||
<center><span class='bad'>Printing...</span></center>
|
<center><span class='bad'>Printing...</span></center>
|
||||||
@@ -7,23 +7,23 @@
|
|||||||
Thank you for your patience!
|
Thank you for your patience!
|
||||||
</p>
|
</p>
|
||||||
{{else}}
|
{{else}}
|
||||||
{{:~link('Access Modification', 'home', {'choice' : 'mode', 'mode_target' : 0}, !mode ? 'disabled' : null)}}
|
{{:helper.link('Access Modification', 'home', {'choice' : 'mode', 'mode_target' : 0}, !data.mode ? 'disabled' : null)}}
|
||||||
{{:~link('Crew Manifest', 'folder-open', {'choice' : 'mode', 'mode_target' : 1}, mode ? 'disabled' : null)}}
|
{{:helper.link('Crew Manifest', 'folder-open', {'choice' : 'mode', 'mode_target' : 1}, data.mode ? 'disabled' : null)}}
|
||||||
{{:~link('Print', 'print', {'choice' : 'print'}, (mode || has_modify) ? null : 'disabled')}}
|
{{:helper.link('Print', 'print', {'choice' : 'print'}, (data.mode || data.has_modify) ? null : 'disabled')}}
|
||||||
|
|
||||||
{{if mode}}
|
{{if data.mode}}
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<h2>Crew Manifest</h2>
|
<h2>Crew Manifest</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
{{:manifest}}
|
{{:data.manifest}}
|
||||||
</div>
|
</div>
|
||||||
{{else}}
|
{{else}}
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<h2>Access Modification</h2>
|
<h2>Access Modification</h2>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{if !authenticated}}
|
{{if !data.authenticated}}
|
||||||
<span class='alert'><i>Please insert the IDs into the terminal to proceed.</i></span><br>
|
<span class='alert'><i>Please insert the IDs into the terminal to proceed.</i></span><br>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
Target Identity:
|
Target Identity:
|
||||||
</div>
|
</div>
|
||||||
<div class='itemContent'>
|
<div class='itemContent'>
|
||||||
{{:~link(target_name, 'eject', {'choice' : 'modify'})}}
|
{{:helper.link(data.target_name, 'eject', {'choice' : 'modify'})}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
@@ -40,12 +40,12 @@
|
|||||||
Authorized Identity:
|
Authorized Identity:
|
||||||
</div>
|
</div>
|
||||||
<div class='itemContent'>
|
<div class='itemContent'>
|
||||||
{{:~link(scan_name, 'eject', {'choice' : 'scan'})}}
|
{{:helper.link(data.scan_name, 'eject', {'choice' : 'scan'})}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
{{if authenticated}}
|
{{if data.authenticated}}
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
function markRed(){
|
function markRed(){
|
||||||
var nameField = document.getElementById('namefield');
|
var nameField = document.getElementById('namefield');
|
||||||
@@ -64,47 +64,47 @@
|
|||||||
nameField.style.backgroundColor = "#FFDDDD";
|
nameField.style.backgroundColor = "#FFDDDD";
|
||||||
}
|
}
|
||||||
function showAll(){
|
function showAll(){
|
||||||
var allJobsSlot = document.getElementById('alljobsslot');
|
var allJobsSlot = document.getElementById('allvalue.jobsslot');
|
||||||
allJobsSlot.innerHTML = "<a href='#' onclick='hideAll()'>Hide</a><br>";
|
allJobsSlot.innerHTML = "<a href='#' onclick='hideAll()'>Hide</a><br>";
|
||||||
var allJobs = document.getElementById('all-jobs');
|
var allJobs = document.getElementById('all-value.jobs');
|
||||||
allJobs.style.display = 'block';
|
allJobs.style.display = 'block';
|
||||||
}
|
}
|
||||||
function hideAll(){
|
function hideAll(){
|
||||||
var allJobsSlot = document.getElementById('alljobsslot');
|
var allJobsSlot = document.getElementById('allvalue.jobsslot');
|
||||||
allJobsSlot.innerHTML = "<a href='#' onclick='showAll()'>{{:target_rank}}</a>";
|
allJobsSlot.innerHTML = "<a href='#' onclick='showAll()'>{{:data.target_rank}}</a>";
|
||||||
var allJobs = document.getElementById('all-jobs');
|
var allJobs = document.getElementById('all-value.jobs');
|
||||||
allJobs.style.display = 'none';
|
allJobs.style.display = 'none';
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{{if has_modify}}
|
{{if data.has_modify}}
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<h2>Details</h2>
|
<h2>Details</h2>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<form name='cardcomp' action='?src={{:src}}' method='get'>
|
<form name='cardcomp' action='?src={{:data.src}}' method='get'>
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<div class='itemLabel'>
|
<div class='itemLabel'>
|
||||||
<input type='hidden' name='src' value='{{:src}}'>
|
<input type='hidden' name='src' value='{{:data.src}}'>
|
||||||
<input type='hidden' name='choice' value='reg'>
|
<input type='hidden' name='choice' value='reg'>
|
||||||
Registered Name:
|
Registered Name:
|
||||||
</div>
|
</div>
|
||||||
<div class='itemContent'>
|
<div class='itemContent'>
|
||||||
<input type='text' id='namefield' name='reg' value='{{:target_owner}}' onchange='markRed()'>
|
<input type='text' id='namefield' name='reg' value='{{:data.target_owner}}' onchange='markRed()'>
|
||||||
<input type='submit' value='Rename' onclick='markGreen()'>
|
<input type='submit' value='Rename' onclick='markGreen()'>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<form name='accountnum' action='?src={{:src}}' method='get'>
|
<form name='accountnum' action='?src={{:data.src}}' method='get'>
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<div class='itemLabel'>
|
<div class='itemLabel'>
|
||||||
<input type='hidden' name='src' value='{{:src}}'>
|
<input type='hidden' name='src' value='{{:data.src}}'>
|
||||||
<input type='hidden' name='choice' value='account'>
|
<input type='hidden' name='choice' value='account'>
|
||||||
Account Number:
|
Account Number:
|
||||||
</div>
|
</div>
|
||||||
<div class='itemContent'>
|
<div class='itemContent'>
|
||||||
<input type='text' id='accountfield' name='account' value='{{:account_number}}' onchange='markAccountRed()'>
|
<input type='text' id='accountfield' name='account' value='{{:data.account_number}}' onchange='markAccountRed()'>
|
||||||
<input type='submit' value='Modify' onclick='markAccountGreen()'>
|
<input type='submit' value='Modify' onclick='markAccountGreen()'>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -115,7 +115,7 @@
|
|||||||
Terminations:
|
Terminations:
|
||||||
</div>
|
</div>
|
||||||
<div class='itemContent'>
|
<div class='itemContent'>
|
||||||
{{:~link('Terminate ' + target_owner, 'gear', {'choice' : 'terminate'}, target_rank == "Terminated" ? 'disabled' : null, target_rank == "Terminated" ? 'disabled' : 'linkDanger')}}
|
{{:helper.link('Terminate ' + data.target_owner, 'gear', {'choice' : 'terminate'}, data.target_rank == "Terminated" ? 'disabled' : null, data.target_rank == "Terminated" ? 'disabled' : 'linkDanger')}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -124,12 +124,12 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<span id='alljobsslot'>
|
<span id='allvalue.jobsslot'>
|
||||||
<a href='#' onclick='showAll()'>{{:target_rank}}</a>
|
<a href='#' onclick='showAll()'>{{:data.target_rank}}</a>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<div id="all-jobs" style='display: none;'>
|
<div id="all-value.jobs" style='display: none;'>
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<th></th><th>Command</th>
|
<th></th><th>Command</th>
|
||||||
@@ -137,63 +137,63 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<th>Special</th>
|
<th>Special</th>
|
||||||
<td>
|
<td>
|
||||||
{{:~link("Captain", '', {'choice' : 'assign', 'assign_target' : 'Captain'}, target_rank == 'Captain' ? 'disabled' : null)}}
|
{{:helper.link("Captain", '', {'choice' : 'assign', 'assign_target' : 'Captain'}, data.target_rank == 'Captain' ? 'disabled' : null)}}
|
||||||
{{:~link("Custom", '', {'choice' : 'assign', 'assign_target' : 'Custom'})}}
|
{{:helper.link("Custom", '', {'choice' : 'assign', 'assign_target' : 'Custom'})}}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th style="color: '#FFA500';">Engineering</th>
|
<th style="color: '#FFA500';">Engineering</th>
|
||||||
<td>
|
<td>
|
||||||
{{for engineering_jobs}}
|
{{for data.engineering_jobs}}
|
||||||
{{:~link(display_name, '', {'choice' : 'assign', 'assign_target' : job}, target_rank == job ? 'disabled' : null)}}
|
{{:helper.link(value.display_name, '', {'choice' : 'assign', 'assign_target' : value.job}, data.target_rank == value.job ? 'disabled' : null)}}
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th style="color: '#008000';">Medical</th>
|
<th style="color: '#008000';">Medical</th>
|
||||||
<td>
|
<td>
|
||||||
{{for medical_jobs}}
|
{{for data.medical_jobs}}
|
||||||
{{:~link(display_name, '', {'choice' : 'assign', 'assign_target' : job}, target_rank == job ? 'disabled' : null)}}
|
{{:helper.link(value.display_name, '', {'choice' : 'assign', 'assign_target' : value.job}, data.target_rank == value.job ? 'disabled' : null)}}
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th style="color: '#800080';">Science</th>
|
<th style="color: '#800080';">Science</th>
|
||||||
<td>
|
<td>
|
||||||
{{for science_jobs}}
|
{{for data.science_jobs}}
|
||||||
{{:~link(display_name, '', {'choice' : 'assign', 'assign_target' : job}, target_rank == job ? 'disabled' : null)}}
|
{{:helper.link(value.display_name, '', {'choice' : 'assign', 'assign_target' : value.job}, data.target_rank == value.job ? 'disabled' : null)}}
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th style="color: '#DD0000';">Security</th>
|
<th style="color: '#DD0000';">Security</th>
|
||||||
<td>
|
<td>
|
||||||
{{for security_jobs}}
|
{{for data.security_jobs}}
|
||||||
{{:~link(display_name, '', {'choice' : 'assign', 'assign_target' : job}, target_rank == job ? 'disabled' : null)}}
|
{{:helper.link(value.display_name, '', {'choice' : 'assign', 'assign_target' : value.job}, data.target_rank == value.job ? 'disabled' : null)}}
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th style="color: '#808080';">Civilian</th>
|
<th style="color: '#808080';">Civilian</th>
|
||||||
<td>
|
<td>
|
||||||
{{for civilian_jobs}}
|
{{for data.civilian_jobs}}
|
||||||
{{if #index && #index % 6 === 0}}
|
{{if index && index % 6 === 0}}
|
||||||
</td></tr><tr><th></th><td>
|
</td></tr><tr><th></th><td>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{:~link(display_name, '', {'choice' : 'assign', 'assign_target' : job}, target_rank == job ? 'disabled' : null)}}
|
{{:helper.link(value.display_name, '', {'choice' : 'assign', 'assign_target' : value.job}, data.target_rank == value.job ? 'disabled' : null)}}
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{{if centcom_access}}
|
{{if data.centcom_access}}
|
||||||
<tr>
|
<tr>
|
||||||
<th style="color: '#A52A2A';">CentCom</th>
|
<th style="color: '#A52A2A';">CentCom</th>
|
||||||
<td>
|
<td>
|
||||||
{{for centcom_jobs}}
|
{{for data.centcom_jobs}}
|
||||||
{{if #index % 6 === 0}}
|
{{if index % 6 === 0}}
|
||||||
</td></tr><tr><th></th><td>
|
</td></tr><tr><th></th><td>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{:~link(display_name, '', {'choice' : 'assign', 'assign_target' : job}, target_rank == job ? 'disabled' : null)}}
|
{{:helper.link(value.display_name, '', {'choice' : 'assign', 'assign_target' : value.job}, data.target_rank == value.job ? 'disabled' : null)}}
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -202,28 +202,28 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{if centcom_access}}
|
{{if data.centcom_access}}
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<h2>Central Command</h2>
|
<h2>Central Command</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class='item' style='width: 100%'>
|
<div class='item' style='width: 100%'>
|
||||||
{{for all_centcom_access}}
|
{{for data.all_centcom_access}}
|
||||||
<div class='itemContentWide'>
|
<div class='itemContentWide'>
|
||||||
{{:~link(desc, '', {'choice' : 'access', 'access_target' : ref, 'allowed' : allowed}, null, allowed ? 'selected' : null)}}
|
{{:helper.link(value.desc, '', {'choice' : 'access', 'access_target' : value.ref, 'allowed' : allowed}, null, value.allowed ? 'selected' : null)}}
|
||||||
</div>
|
</div>
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</div>
|
</div>
|
||||||
{{else}}
|
{{else}}
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<h2>{{:station_name}}</h2>
|
<h2>{{:data.station_name}}</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class='item' style='width: 100%'>
|
<div class='item' style='width: 100%'>
|
||||||
{{for regions}}
|
{{for data.regions}}
|
||||||
<div style='float: left; width: 175px; min-height: 250px'>
|
<div style='float: left; width: 175px; min-height: 250px'>
|
||||||
<div class='average'><b>{{:name}}</b></div>
|
<div class='average'><b>{{:value.name}}</b></div>
|
||||||
{{for accesses}}
|
{{for value.accesses :accessValue:accessKey}}
|
||||||
<div class='itemContentWide'>
|
<div class='itemContentWide'>
|
||||||
{{:~link(desc, '', {'choice' : 'access', 'access_target' : ref, 'allowed' : allowed}, null, allowed ? 'selected' : null)}}
|
{{:helper.link(accessValue.desc, '', {'choice' : 'access', 'access_target' : accessValue.ref, 'allowed' : accessValue.allowed}, null, accessValue.allowed ? 'selected' : null)}}
|
||||||
</div>
|
</div>
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,45 +1,45 @@
|
|||||||
<div class="item">
|
<div class="item">
|
||||||
{{:~link('Close', 'gear', {'close' : 1}, null, 'fixedLeft')}}
|
{{:helper.link('Close', 'gear', {'close' : 1}, null, 'fixedLeft')}}
|
||||||
{{:~link('Print', 'print', { 'print' : 1 }, antibodies || pathogens ? null : 'disabled', 'fixedLeft')}}
|
{{:helper.link('Print', 'print', { 'print' : 1 }, data.antibodies || data.pathogens ? null : 'disabled', 'fixedLeft')}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{if busy}}
|
{{if data.busy}}
|
||||||
<h5 class='average'>The Centrifuge is currently busy.</h5>
|
<h5 class='average'>The Centrifuge is currently busy.</h5>
|
||||||
<div class='notice'>
|
<div class='notice'>
|
||||||
<center><span class='bad'>{{:busy}}</span></center>
|
<center><span class='bad'>{{:data.busy}}</span></center>
|
||||||
</div>
|
</div>
|
||||||
<p>
|
<p>
|
||||||
Thank you for your patience!
|
Thank you for your patience!
|
||||||
</p>
|
</p>
|
||||||
{{else}}
|
{{else}}
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<h2>{{:is_antibody_sample ? 'Antibody Sample' : 'Blood Sample'}}</h2>
|
<h2>{{:data.is_antibody_sample ? 'Antibody Sample' : 'Blood Sample'}}</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
{{:~link('Eject Vial', 'eject', { 'action' : 'sample' }, sample_inserted ? null : 'disabled')}}
|
{{:helper.link('Eject Vial', 'eject', { 'action' : 'sample' }, data.sample_inserted ? null : 'disabled')}}
|
||||||
</div>
|
</div>
|
||||||
{{if sample_inserted}}
|
{{if data.sample_inserted}}
|
||||||
{{if antibodies || pathogens}}
|
{{if data.antibodies || data.pathogens}}
|
||||||
<div class="statusDisplay">
|
<div class="statusDisplay">
|
||||||
{{if antibodies}}
|
{{if data.antibodies}}
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<div class='itemLabel'>
|
<div class='itemLabel'>
|
||||||
<span class='good'>Antibodies:</span>
|
<span class='good'>Antibodies:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class='itemContent'>
|
<div class='itemContent'>
|
||||||
{{:antibodies}}
|
{{:data.antibodies}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{if pathogens}}
|
{{if data.pathogens}}
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<div class='itemLabel'>
|
<div class='itemLabel'>
|
||||||
<span class='good'>Pathogens:</span>
|
<span class='good'>Pathogens:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class='itemContent'>
|
<div class='itemContent'>
|
||||||
{{for pathogens}}
|
{{for data.pathogens}}
|
||||||
<div class='highlight'>
|
<div class='highlight'>
|
||||||
{{:name}} ({{:spread_type}})
|
{{:value.name}} ({{:value.spread_type}})
|
||||||
</div>
|
</div>
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</div>
|
</div>
|
||||||
@@ -56,24 +56,24 @@
|
|||||||
<span class='average'>No vial detected.</span>
|
<span class='average'>No vial detected.</span>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{if antibodies && !is_antibody_sample}}
|
{{if data.antibodies && !data.is_antibody_sample}}
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<div class='itemLabelWide'>
|
<div class='itemLabelWide'>
|
||||||
Isolate Antibodies:
|
Isolate Antibodies:
|
||||||
</div>
|
</div>
|
||||||
<div class='itemContent'>
|
<div class='itemContent'>
|
||||||
{{:~link(antibodies, 'pencil', { 'action' : 'antibody' })}}
|
{{:helper.link(data.antibodies, 'pencil', { 'action' : 'antibody' })}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{if pathogens}}
|
{{if data.pathogens}}
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<div class='itemLabelWide'>
|
<div class='itemLabelWide'>
|
||||||
Isolate Strain:
|
Isolate Strain:
|
||||||
</div>
|
</div>
|
||||||
<div class='itemContent'>
|
<div class='itemContent'>
|
||||||
{{for pathogens}}
|
{{for data.pathogens}}
|
||||||
{{:~link(name, 'pencil', { 'isolate' : reference })}}
|
{{:helper.link(value.name, 'pencil', { 'isolate' : value.reference })}}
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -4,13 +4,13 @@
|
|||||||
Docking Port Status:
|
Docking Port Status:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{if docking_status == "docked"}}
|
{{if data.docking_status == "docked"}}
|
||||||
<span class="good">DOCKED</span>
|
<span class="good">DOCKED</span>
|
||||||
{{else docking_status == "docking"}}
|
{{else data.docking_status == "docking"}}
|
||||||
<span class="average">DOCKING</span>
|
<span class="average">DOCKING</span>
|
||||||
{{else docking_status == "undocking"}}
|
{{else data.docking_status == "undocking"}}
|
||||||
<span class="average">UNDOCKING</span>
|
<span class="average">UNDOCKING</span>
|
||||||
{{else docking_status == "undocked"}}
|
{{else data.docking_status == "undocked"}}
|
||||||
<span class="idle">NOT IN USE</span>
|
<span class="idle">NOT IN USE</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="bad">ERROR</span>
|
<span class="bad">ERROR</span>
|
||||||
@@ -19,14 +19,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{for airlocks}}
|
{{for data.airlocks}}
|
||||||
<div class="item" style="padding-top: 10px">
|
<div class="item" style="padding-top: 10px">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemLabel">
|
<div class="itemLabel">
|
||||||
{{:name}}
|
{{:value.name}}
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{if override_enabled}}
|
{{if value.override_enabled}}
|
||||||
<span class="bad">OVERRIDE ENABLED</span>
|
<span class="bad">OVERRIDE ENABLED</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="good">STATUS OK</span>
|
<span class="good">STATUS OK</span>
|
||||||
|
|||||||
@@ -1,82 +1,82 @@
|
|||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemContent" style="padding: 5px">
|
<div class="itemContent" style="padding: 5px">
|
||||||
{{:~link(power ? 'On' : 'Off', null, {'command' : 'power'}, null, power ? 'selected' : 'redBackground')}}
|
{{:helper.link(data.power ? 'On' : 'Off', null, {'command' : 'power'}, null, data.power ? 'selected' : 'redBackground')}}
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent" style="padding: 5px">
|
<div class="itemContent" style="padding: 5px">
|
||||||
{{:~link('Configure', null, {'command' : 'configure'}, null, config ? 'selected' : null)}}
|
{{:helper.link('Configure', null, {'command' : 'configure'}, null, data.config ? 'selected' : null)}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{if config}}
|
{{if data.config}}
|
||||||
|
|
||||||
<div style="width: 315px; text-align: center">
|
<div style="width: 315px; text-align: center">
|
||||||
<div style="float: left">
|
<div style="float: left">
|
||||||
<div class="white" style="height: 26">Port</div>
|
<div class="white" style="height: 26">Port</div>
|
||||||
{{for ports}}
|
{{for data.ports}}
|
||||||
<div class="average" style="height: 26">{{:dir}} Port</div>
|
<div class="average" style="height: 26">{{:value.dir}} Port</div>
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</div>
|
</div>
|
||||||
<div style="float: left; margin-left: 10">
|
<div style="float: left; margin-left: 10">
|
||||||
<div class="white" style="height: 26">Input</div>
|
<div class="white" style="height: 26">Input</div>
|
||||||
{{for ports}}
|
{{for data.ports}}
|
||||||
<div style="height: 26">
|
<div style="height: 26">
|
||||||
{{:~link(' ', null, {'command' : 'switch_mode', 'mode' : 'in', 'dir' : dir}, null, input ? 'selected' : null)}}
|
{{:helper.link(' ', null, {'command' : 'switch_mode', 'mode' : 'in', 'dir' : value.dir}, null, value.input ? 'selected' : null)}}
|
||||||
</div>
|
</div>
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</div>
|
</div>
|
||||||
<div style="float: left; margin-left: 10">
|
<div style="float: left; margin-left: 10">
|
||||||
<div class="white" style="height: 26">Output</div>
|
<div class="white" style="height: 26">Output</div>
|
||||||
{{for ports}}
|
{{for data.ports}}
|
||||||
<div style="height: 26">
|
<div style="height: 26">
|
||||||
{{:~link(' ', null, {'command' : 'switch_mode', 'mode' : 'out', 'dir' : dir}, null, output ? 'selected' : null)}}
|
{{:helper.link(' ', null, {'command' : 'switch_mode', 'mode' : 'out', 'dir' : value.dir}, null, value.output ? 'selected' : null)}}
|
||||||
</div>
|
</div>
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</div>
|
</div>
|
||||||
<div style="float: left; margin-left: 10">
|
<div style="float: left; margin-left: 10">
|
||||||
<div class="white" style="height: 26">Filter</div>
|
<div class="white" style="height: 26">Filter</div>
|
||||||
{{for ports}}
|
{{for data.ports}}
|
||||||
<div style="height: 26">
|
<div style="height: 26">
|
||||||
{{:~link(f_type ? f_type : 'None', null, {'command' : 'switch_filter', 'mode' : f_type, 'dir' : dir}, filter ? null : 'disabled', f_type ? 'selected' : null)}}
|
{{:helper.link(value.f_type ? value.f_type : 'None', null, {'command' : 'switch_filter', 'mode' : value.f_type, 'dir' : value.dir}, value.filter ? null : 'disabled', value.f_type ? 'selected' : null)}}
|
||||||
</div>
|
</div>
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="itemContent" style="padding: 5px">
|
<div class="itemContent" style="padding: 5px">
|
||||||
Target Output Pressure: {{:~round(pressure)}} kPa
|
Target Output Pressure: {{:helper.round(data.pressure)}} kPa
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent" style="padding: 5px">
|
<div class="itemContent" style="padding: 5px">
|
||||||
{{:~link('Set Target Pressure', null, {'command' : 'set_pressure'})}}
|
{{:helper.link('Set Target Pressure', null, {'command' : 'set_pressure'})}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{else}}
|
{{else}}
|
||||||
|
|
||||||
<div style="width: 315px; text-align: center">
|
<div style="width: 315px; text-align: center">
|
||||||
<div style="float: left">
|
<div style="float: left">
|
||||||
<div class="white" style="height: 26">Port</div>
|
<div class="white" style="height: 26">Port</div>
|
||||||
{{for ports}}
|
{{for data.ports}}
|
||||||
<div class="average" style="height: 26">{{:dir}} Port</div>
|
<div class="average" style="height: 26">{{:value.dir}} Port</div>
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</div>
|
</div>
|
||||||
<div style="float: left; margin-left: 10">
|
<div style="float: left; margin-left: 10">
|
||||||
<div class="white" style="height: 26">Mode</div>
|
<div class="white" style="height: 26">Mode</div>
|
||||||
{{for ports}}
|
{{for data.ports}}
|
||||||
<div style="height: 26">
|
<div style="height: 26">
|
||||||
{{if input}}
|
{{if value.input}}
|
||||||
Input
|
Input
|
||||||
{{else output}}
|
{{else value.output}}
|
||||||
Output
|
Output
|
||||||
{{else f_type}}
|
{{else value.f_type}}
|
||||||
{{:f_type}}
|
{{:value.f_type}}
|
||||||
{{else}}
|
{{else}}
|
||||||
Disabled
|
Disabled
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="itemContent" style="padding: 5px">
|
<div class="itemContent" style="padding: 5px">
|
||||||
Target Output Pressure: {{:~round(pressure)}} kPa
|
Target Output Pressure: {{:helper.round(data.pressure)}} kPa
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
@@ -1,100 +1,101 @@
|
|||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemContent" style="padding: 5px">
|
<div class="itemContent" style="padding: 5px">
|
||||||
{{:~link(power ? 'On' : 'Off', null, {'command' : 'power'}, null, power ? 'selected' : 'redBackground')}}
|
{{:helper.link(data.power ? 'On' : 'Off', null, {'command' : 'power'}, null, data.power ? 'selected' : 'redBackground')}}
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent" style="padding: 5px">
|
<div class="itemContent" style="padding: 5px">
|
||||||
{{:~link('Configure', null, {'command' : 'configure'}, null, config ? 'selected' : null)}}
|
{{:helper.link('Configure', null, {'command' : 'configure'}, null, data.config ? 'selected' : null)}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{if config}}
|
{{if data.config}}
|
||||||
|
|
||||||
<div style="width: 315px; text-align: center">
|
<div style="width: 315px; text-align: center">
|
||||||
<div style="float: left">
|
<div style="float: left">
|
||||||
<div class="white" style="height: 26">Port</div>
|
<div class="white" style="height: 26">Port</div>
|
||||||
{{for ports}}
|
{{for data.ports}}
|
||||||
<div class="average" style="height: 26">{{:dir}} Port</div>
|
<div class="average" style="height: 26">{{:value.dir}} Port</div>
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</div>
|
</div>
|
||||||
<div style="float: left; margin-left: 10">
|
<div style="float: left; margin-left: 10">
|
||||||
<div class="white" style="height: 26">Input</div>
|
<div class="white" style="height: 26">Input</div>
|
||||||
{{for ports}}
|
{{for data.ports}}
|
||||||
<div style="height: 26">
|
<div style="height: 26">
|
||||||
{{:~link(' ', null, input ? {'command' : 'switch_mode', 'mode' : 'none', 'dir' : dir} : {'command' : 'switch_mode', 'mode' : 'in', 'dir' : dir}, output ? 'disabled' : null, input ? 'selected' : null)}}
|
{{:helper.link(' ', null, value.input ? {'command' : 'switch_mode', 'mode' : 'none', 'dir' : value.dir} : {'command' : 'switch_mode', 'mode' : 'in', 'dir' : value.dir}, value.output ? 'disabled' : null, value.input ? 'selected' : null)}}
|
||||||
</div>
|
</div>
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</div>
|
</div>
|
||||||
<div style="float: left; margin-left: 10">
|
<div style="float: left; margin-left: 10">
|
||||||
<div class="white" style="height: 26">Output</div>
|
<div class="white" style="height: 26">Output</div>
|
||||||
{{for ports}}
|
{{for data.ports}}
|
||||||
<div style="height: 26">
|
<div style="height: 26">
|
||||||
{{:~link(' ', null, output ? null : {'command' : 'switch_mode', 'mode' : 'out', 'dir' : dir}, null, output ? 'selected' : null)}}
|
{{:helper.link(' ', null, value.output ? null : {'command' : 'switch_mode', 'mode' : 'out', 'dir' : value.dir}, null, value.output ? 'selected' : null)}}
|
||||||
</div>
|
</div>
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</div>
|
</div>
|
||||||
<div style="float: left; margin-left: 10">
|
<div style="float: left; margin-left: 10">
|
||||||
<div class="white" style="height: 26">Concentration</div>
|
<div class="white" style="height: 26">Concentration</div>
|
||||||
{{for ports}}
|
{{for data.ports}}
|
||||||
<div style="height: 26">
|
<div style="height: 26">
|
||||||
{{:~link( input ? ~round(concentration*100)+' %' : '-', null, {'command' : 'switch_con', 'dir' : dir}, input ? null : 'disabled')}}
|
{{:helper.link( value.input ? helper.round(value.concentration*100)+' %' : '-', null, {'command' : 'switch_con', 'dir' : value.dir}, value.input ? null : 'disabled')}}
|
||||||
</div>
|
</div>
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</div>
|
</div>
|
||||||
<div style="float: left; margin-left: 10">
|
<div style="float: left; margin-left: 10">
|
||||||
<div class="white" style="height: 26">Lock</div>
|
<div class="white" style="height: 26">Lock</div>
|
||||||
{{for ports}}
|
{{for data.ports}}
|
||||||
<div style="height: 26">
|
<div style="height: 26">
|
||||||
{{:~link(' ', con_lock ? 'locked' : 'unlocked', {'command' : 'switch_conlock', 'dir' : dir}, input ? null : 'disabled', con_lock ? 'selected' : null)}}
|
{{:helper.link(' ', value.con_lock ? 'locked' : 'unlocked', {'command' : 'switch_conlock', 'dir' : value.dir}, value.input ? null : 'disabled', value.con_lock ? 'selected' : null)}}
|
||||||
</div>
|
</div>
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="itemContent" style="padding: 5px">
|
<div class="itemContent" style="padding: 5px">
|
||||||
Target Output Pressure: {{:~round(pressure)}} kPa
|
Target Output Pressure: {{:helper.round(data.pressure)}} kPa
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent" style="padding: 5px">
|
<div class="itemContent" style="padding: 5px">
|
||||||
{{:~link('Set Target Pressure', null, {'command' : 'set_pressure'})}}
|
{{:helper.link('Set Target Pressure', null, {'command' : 'set_pressure'})}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{else}}
|
{{else}}
|
||||||
|
|
||||||
<div style="width: 315px; text-align: center">
|
<div style="width: 315px; text-align: center">
|
||||||
<div style="float: left">
|
<div style="float: left">
|
||||||
<div class="white" style="height: 26">Port</div>
|
<div class="white" style="height: 26">Port</div>
|
||||||
{{for ports}}
|
{{for data.ports}}
|
||||||
<div class="average" style="height: 26">{{:dir}} Port</div>
|
<div class="average" style="height: 26">{{:value.dir}} Port</div>
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</div>
|
</div>
|
||||||
<div style="float: left; margin-left: 10">
|
<div style="float: left; margin-left: 10">
|
||||||
<div class="white" style="height: 26">Mode</div>
|
<div class="white" style="height: 26">Mode</div>
|
||||||
{{for ports}}
|
{{for data.ports}}
|
||||||
<div style="height: 26">
|
<div style="height: 26">
|
||||||
{{if input}}
|
{{if value.input}}
|
||||||
Input
|
Input
|
||||||
{{else output}}
|
{{else value.output}}
|
||||||
Output
|
Output
|
||||||
{{else}}
|
{{else}}
|
||||||
Disabled
|
Disabled
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</div>
|
</div>
|
||||||
<div style="float: left; margin-left: 10">
|
<div style="float: left; margin-left: 10">
|
||||||
<div class="white" style="height: 26">Concentration</div>
|
<div class="white" style="height: 26">Concentration</div>
|
||||||
{{for ports}}
|
{{for data.ports}}
|
||||||
<div style="height: 26">
|
<div style="height: 26">
|
||||||
{{if input}}
|
{{if value.input}}
|
||||||
{{:~round(concentration*100)}} %
|
{{:helper.round(value.concentration*100)}} %
|
||||||
{{else}}
|
{{else}}
|
||||||
-
|
-
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="itemContent" style="padding: 5px">
|
||||||
|
Target Output Pressure: {{:helper.round(data.pressure)}} kPa
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="itemContent" style="padding: 5px">
|
|
||||||
Target Output Pressure: {{:~round(pressure)}} kPa
|
|
||||||
</div>
|
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
@@ -2,17 +2,17 @@
|
|||||||
<h2>Menu</h2>
|
<h2>Menu</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
{{if !isolating}}
|
{{if !data.isolating}}
|
||||||
{{:~link('Home', 'home', {'home' : 1}, state == 'home' ? 'disabled' : null, 'fixedLeft')}}
|
{{:helper.link('Home', 'home', {'home' : 1}, data.state == 'home' ? 'disabled' : null, 'fixedLeft')}}
|
||||||
{{:~link('List', 'note', {'list' : 1}, state == 'list' ? 'disabled' : null, 'fixedLeft')}}
|
{{:helper.link('List', 'note', {'list' : 1}, data.state == 'list' ? 'disabled' : null, 'fixedLeft')}}
|
||||||
{{:~link('Pathogen', 'folder-open', {'entry' : 1}, state == 'entry' ? 'disabled' : null, 'fixedLeft')}}
|
{{:helper.link('Pathogen', 'folder-open', {'entry' : 1}, data.state == 'entry' ? 'disabled' : null, 'fixedLeft')}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<br>
|
<br>
|
||||||
{{:~link('Close', 'gear', {'close' : 1}, null, 'fixedLeft')}}
|
{{:helper.link('Close', 'gear', {'close' : 1}, null, 'fixedLeft')}}
|
||||||
{{:~link('Print', 'print', { 'print' : 1 }, can_print ? null : 'disabled', 'fixedLeft')}}
|
{{:helper.link('Print', 'print', { 'print' : 1 }, data.can_print ? null : 'disabled', 'fixedLeft')}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{if isolating}}
|
{{if data.isolating}}
|
||||||
<h5 class='average'>The Isolator is currently busy.</h5>
|
<h5 class='average'>The Isolator is currently busy.</h5>
|
||||||
<div class='notice'>
|
<div class='notice'>
|
||||||
<center><span class='bad'>Isolating pathogens...</span></center>
|
<center><span class='bad'>Isolating pathogens...</span></center>
|
||||||
@@ -21,22 +21,22 @@
|
|||||||
Thank you for your patience!
|
Thank you for your patience!
|
||||||
</p>
|
</p>
|
||||||
{{else}}
|
{{else}}
|
||||||
{{if state =="home"}}
|
{{if data.state =="home"}}
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<h2>Blood Sample</h2>
|
<h2>Blood Sample</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
{{:~link('Eject Syringe', 'eject', { 'eject' : 1 }, syringe_inserted ? null : 'disabled')}}
|
{{:helper.link('Eject Syringe', 'eject', { 'eject' : 1 }, data.syringe_inserted ? null : 'disabled')}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{if syringe_inserted}}
|
{{if data.syringe_inserted}}
|
||||||
<div class='statusDisplay'>
|
<div class='statusDisplay'>
|
||||||
<span class='good'><b>Pathogens:</b></span>
|
<span class='good'><b>Pathogens:</b></span>
|
||||||
{{if pathogen_pool}}
|
{{if data.pathogen_pool}}
|
||||||
{{for pathogen_pool}}
|
{{for data.pathogen_pool}}
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<span class='highlight'><b><u>{{:#index + 1}}. #{{:unique_id}}</u> {{:is_in_database ? "(Analysed)" : ""}}</b></span><br>
|
<span class='highlight'><b><u>{{:index + 1}}. #{{:value.unique_id}}</u> {{:value.is_in_database ? "(Analysed)" : ""}}</b></span><br>
|
||||||
<span class='average'>{{:name}}:</span> {{:dna}}
|
<span class='average'>{{:value.name}}:</span> {{:value.dna}}
|
||||||
</div>
|
</div>
|
||||||
{{/for}}
|
{{/for}}
|
||||||
{{else}}
|
{{else}}
|
||||||
@@ -48,14 +48,14 @@
|
|||||||
<span class='average'>No syringe loaded.</span>
|
<span class='average'>No syringe loaded.</span>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{if pathogen_pool}}
|
{{if data.pathogen_pool}}
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<div class='itemLabelWide'>
|
<div class='itemLabelWide'>
|
||||||
Isolate Pathogens:
|
Isolate Pathogens:
|
||||||
</div>
|
</div>
|
||||||
<div class='itemContent'>
|
<div class='itemContent'>
|
||||||
{{for pathogen_pool}}
|
{{for data.pathogen_pool}}
|
||||||
{{:~link('#' + unique_id, 'pencil', { 'isolate' : reference }, null, 'fixedLeft')}}
|
{{:helper.link('#' + value.unique_id, 'pencil', { 'isolate' : value.reference }, null, 'fixedLeft')}}
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -64,25 +64,25 @@
|
|||||||
Database Lookup:
|
Database Lookup:
|
||||||
</div>
|
</div>
|
||||||
<div class='itemContent'>
|
<div class='itemContent'>
|
||||||
{{for pathogen_pool}}
|
{{for data.pathogen_pool}}
|
||||||
{{if is_in_database}}
|
{{if value.is_in_database}}
|
||||||
{{:~link('#' + unique_id, 'info', { 'entry' : 1, 'view' : record }, null, 'fixedLeft')}}
|
{{:helper.link('#' + value.unique_id, 'info', { 'entry' : 1, 'view' : value.record }, null, 'fixedLeft')}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{if state == "list"}}
|
{{if data.state == "list"}}
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<h2>View Database</h2>
|
<h2>View Database</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
{{if database}}
|
{{if data.database}}
|
||||||
{{for database}}
|
{{for data.database}}
|
||||||
<div class='itemContent'>
|
<div class='itemContent'>
|
||||||
<div class='highlight fixedLeft'>{{:name}}</div>
|
<div class='highlight fixedLeft'>{{:data.name}}</div>
|
||||||
{{:~link('Details', 'circle-arrow-s', { 'entry' : 1, 'view' : record }, null, 'fixedLeft')}}
|
{{:helper.link('Details', 'circle-arrow-s', { 'entry' : 1, 'view' : value.record }, null, 'fixedLeft')}}
|
||||||
</div>
|
</div>
|
||||||
{{/for}}
|
{{/for}}
|
||||||
{{else}}
|
{{else}}
|
||||||
@@ -90,13 +90,13 @@
|
|||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
{{else}}
|
{{else}}
|
||||||
{{if state == "entry"}}
|
{{if data.state == "entry"}}
|
||||||
{{if entry}}
|
{{if data.entry}}
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<h2>{{:entry.name}}</h2>
|
<h2>{{:data.entry.name}}</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class='statusDisplay'>
|
<div class='statusDisplay'>
|
||||||
{{:entry.description}}
|
{{:data.entry.description}}
|
||||||
</div>
|
</div>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class='average'>No virus selected.</span>
|
<span class='average'>No virus selected.</span>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,7 +1,7 @@
|
|||||||
<h3>Shuttle Status</h3>
|
<h3>Shuttle Status</h3>
|
||||||
<div class="item" style="padding-top: 10px">
|
<div class="item" style="padding-top: 10px">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
{{:shuttle_status}}
|
{{:data.shuttle_status}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item" style="padding-top: 10px">
|
<div class="item" style="padding-top: 10px">
|
||||||
@@ -10,11 +10,11 @@
|
|||||||
Bluespace Drive:
|
Bluespace Drive:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{if shuttle_state == "idle"}}
|
{{if data.shuttle_state == "idle"}}
|
||||||
<span class="idle">IDLE</span>
|
<span class="idle">IDLE</span>
|
||||||
{{else shuttle_state == "warmup"}}
|
{{else data.shuttle_state == "warmup"}}
|
||||||
<span style="font-weight: bold;color: #336699">SPINNING UP</span>
|
<span style="font-weight: bold;color: #336699">SPINNING UP</span>
|
||||||
{{else shuttle_state == "in_transit"}}
|
{{else data.shuttle_state == "in_transit"}}
|
||||||
<span style="font-weight: bold;color: #336699">ENGAGED</span>
|
<span style="font-weight: bold;color: #336699">ENGAGED</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="bad">ERROR</span>
|
<span class="bad">ERROR</span>
|
||||||
@@ -22,28 +22,28 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{if has_docking}}
|
{{if data.has_docking}}
|
||||||
<div class="item" style="padding-top: 10px">
|
<div class="item" style="padding-top: 10px">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemLabel">
|
<div class="itemLabel">
|
||||||
Docking Status:
|
Docking Status:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{if docking_status == "docked"}}
|
{{if data.docking_status == "docked"}}
|
||||||
<span class="good">DOCKED</span>
|
<span class="good">DOCKED</span>
|
||||||
{{else docking_status == "docking"}}
|
{{else data.docking_status == "docking"}}
|
||||||
{{if !docking_override}}
|
{{if !data.docking_override}}
|
||||||
<span class="average">DOCKING</span>
|
<span class="average">DOCKING</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="average">DOCKING-MANUAL</span>
|
<span class="average">DOCKING-MANUAL</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{else docking_status == "undocking"}}
|
{{else data.docking_status == "undocking"}}
|
||||||
{{if !docking_override}}
|
{{if !data.docking_override}}
|
||||||
<span class="average">UNDOCKING</span>
|
<span class="average">UNDOCKING</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="average">UNDOCKING-MANUAL</span>
|
<span class="average">UNDOCKING-MANUAL</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{else docking_status == "undocked"}}
|
{{else data.docking_status == "undocked"}}
|
||||||
<span class="idle">UNDOCKED</span>
|
<span class="idle">UNDOCKED</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="bad">ERROR</span>
|
<span class="bad">ERROR</span>
|
||||||
@@ -58,9 +58,9 @@
|
|||||||
<div class="item" style="padding-top: 10px">
|
<div class="item" style="padding-top: 10px">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemContent" style="padding-top: 2px; width: 100%">
|
<div class="itemContent" style="padding-top: 2px; width: 100%">
|
||||||
{{:~link('Launch Shuttle', 'arrowthickstop-1-e', {'move' : '1'}, can_launch? null : 'disabled' , null)}}
|
{{:helper.link('Launch Shuttle', 'arrowthickstop-1-e', {'move' : '1'}, data.can_launch? null : 'disabled' , null)}}
|
||||||
{{:~link('Cancel Launch', 'cancel', {'cancel' : '1'}, can_cancel? null : 'disabled' , null)}}
|
{{:helper.link('Cancel Launch', 'cancel', {'cancel' : '1'}, data.can_cancel ? null : 'disabled' , null)}}
|
||||||
{{:~link('Force Launch', 'alert', {'force' : '1'}, can_force? null : 'disabled' , can_force? 'redBackground' : null)}}
|
{{:helper.link('Force Launch', 'alert', {'force' : '1'}, data.can_force? null : 'disabled' , can_force? 'redBackground' : null)}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
<h3>Shuttle Status</h3>
|
<h3>Shuttle Status</h3>
|
||||||
<div class="item" style="padding-top: 10px">
|
<div class="item" style="padding-top: 10px">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
{{:shuttle_status}}
|
{{:data.shuttle_status}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item" style="padding-top: 10px">
|
<div class="item" style="padding-top: 10px">
|
||||||
@@ -10,11 +10,11 @@
|
|||||||
Drive:
|
Drive:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{if shuttle_state == "idle"}}
|
{{if data.shuttle_state == "idle"}}
|
||||||
<span class="idle">IDLE</span>
|
<span class="idle">IDLE</span>
|
||||||
{{else shuttle_state == "warmup"}}
|
{{else data.shuttle_state == "warmup"}}
|
||||||
<span style="font-weight: bold;color: #336699">SPINNING UP</span>
|
<span style="font-weight: bold;color: #336699">SPINNING UP</span>
|
||||||
{{else shuttle_state == "in_transit"}}
|
{{else data.shuttle_state == "in_transit"}}
|
||||||
<span style="font-weight: bold;color: #336699">ENGAGED</span>
|
<span style="font-weight: bold;color: #336699">ENGAGED</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="bad">ERROR</span>
|
<span class="bad">ERROR</span>
|
||||||
@@ -22,53 +22,52 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{if has_docking}}
|
{{if data.has_docking}}
|
||||||
<div class="item" style="padding-top: 10px">
|
<div class="item" style="padding-top: 10px">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemLabel">
|
<div class="itemLabel">
|
||||||
Docking Status:
|
Docking Status:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{if docking_status == "docked"}}
|
{{if data.docking_status == "docked"}}
|
||||||
<span class="good">DOCKED</span>
|
<span class="good">DOCKED</span>
|
||||||
{{else docking_status == "docking"}}
|
{{else data.docking_status == "docking"}}
|
||||||
{{if !docking_override}}
|
{{if !data.docking_override}}
|
||||||
<span class="average">DOCKING</span>
|
<span class="average">DOCKING</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="average">DOCKING-MANUAL</span>
|
<span class="average">DOCKING-MANUAL</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{else docking_status == "undocking"}}
|
{{else data.docking_status == "undocking"}}
|
||||||
{{if !docking_override}}
|
{{if !data.docking_override}}
|
||||||
<span class="average">UNDOCKING</span>
|
<span class="average">UNDOCKING</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="average">UNDOCKING-MANUAL</span>
|
<span class="average">UNDOCKING-MANUAL</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{else docking_status == "undocked"}}
|
{{else data.docking_status == "undocked"}}
|
||||||
<span class="idle">UNDOCKED</span>
|
<span class="idle">UNDOCKED</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="bad">ERROR</span>
|
<span class="bad">ERROR</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<div class="item" style="padding-top: 10px">
|
<div class="item" style="padding-top: 10px">
|
||||||
<div class="itemLabel">
|
<div class="itemLabel">
|
||||||
Current Destination:
|
Current Destination:
|
||||||
</div>
|
</div>
|
||||||
<span class="average">{{:destination_name}}</span>
|
<span class="average">{{:data.destination_name}}</span>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
{{:~link('Choose Destination', 'arrowreturn-1-s', {'pick' : '1'}, can_pick? null : 'disabled' , null)}}
|
{{:data.~link('Choose Destination', 'arrowreturn-1-s', {'pick' : '1'}, data.can_pick ? null : 'disabled' , null)}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<h3>Shuttle Control</h3>
|
<h3>Shuttle Control</h3>
|
||||||
<div class="item" style="padding-top: 10px">
|
<div class="item" style="padding-top: 10px">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemContent" style="padding-top: 2px; width: 100%">
|
<div class="itemContent" style="padding-top: 2px; width: 100%">
|
||||||
{{:~link('Launch Shuttle', 'arrowthickstop-1-e', {'move' : '1'}, can_launch? null : 'disabled' , null)}}
|
{{:data.~link('Launch Shuttle', 'arrowthickstop-1-e', {'move' : '1'}, data.can_launch ? null : 'disabled' , null)}}
|
||||||
{{:~link('Cancel Launch', 'cancel', {'cancel' : '1'}, can_cancel? null : 'disabled' , null)}}
|
{{:data.~link('Cancel Launch', 'cancel', {'cancel' : '1'}, data.can_cancel ? null : 'disabled' , null)}}
|
||||||
{{:~link('Force Launch', 'alert', {'force' : '1'}, can_force? null : 'disabled' , can_force? 'redBackground' : null)}}
|
{{:data.~link('Force Launch', 'alert', {'force' : '1'}, data.can_force ? null : 'disabled' , can_force? 'redBackground' : null)}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -4,9 +4,9 @@
|
|||||||
Chamber Pressure:
|
Chamber Pressure:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~displayBar(chamber_pressure, 0, 200, chamber_pressure < 80 || chamber_pressure > 120 ? 'bad' : chamber_pressure < 95 || chamber_pressure > 110 ? 'average' : 'good')}}
|
{{:helper.displayBar(chamber_pressure, 0, 200, (chamber_pressure < 80) || (chamber_pressure > 120) ? 'bad' : (chamber_pressure < 95) || (chamber_pressure > 110) ? 'average' : 'good')}}
|
||||||
<div class="statusValue">
|
<div class="statusValue">
|
||||||
{{:chamber_pressure}} kPa
|
{{:data.chamber_pressure}} kPa
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -14,23 +14,23 @@
|
|||||||
<div class="item" style="padding-top: 10px">
|
<div class="item" style="padding-top: 10px">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemContent" style="width: 100%">
|
<div class="itemContent" style="width: 100%">
|
||||||
{{:~link('Cycle to Exterior', 'arrowthickstop-1-w', {'command' : 'cycle_ext'}, processing ? 'disabled' : null)}}
|
{{:helper.link('Cycle to Exterior', 'arrowthickstop-1-w', {'command' : 'cycle_ext'}, data.processing ? 'disabled' : null)}}
|
||||||
{{:~link('Cycle to Interior', 'arrowthickstop-1-e', {'command' : 'cycle_int'}, processing ? 'disabled' : null)}}
|
{{:helper.link('Cycle to Interior', 'arrowthickstop-1-e', {'command' : 'cycle_int'}, data.processing ? 'disabled' : null)}}
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent" style="padding-top: 2px; width: 100%">
|
<div class="itemContent" style="padding-top: 2px; width: 100%">
|
||||||
{{if interior_status.state == "open"}}
|
{{if data.interior_status.state == "open"}}
|
||||||
{{:~link('Force exterior door', 'alert', {'command' : 'force_ext'}, null, 'redBackground')}}
|
{{:helper.link('Force exterior door', 'alert', {'command' : 'force_ext'}, null, 'redBackground')}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{:~link('Force exterior door', 'alert', {'command' : 'force_ext'}, null, processing ? 'yellowBackground' : null)}}
|
{{:helper.link('Force exterior door', 'alert', {'command' : 'force_ext'}, null, data.processing ? 'yellowBackground' : null)}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{if exterior_status.state == "open"}}
|
{{if data.exterior_status.state == "open"}}
|
||||||
{{:~link('Force interior door', 'alert', {'command' : 'force_int'}, null, 'redBackground')}}
|
{{:helper.link('Force interior door', 'alert', {'command' : 'force_int'}, null, 'redBackground')}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{:~link('Force interior door', 'alert', {'command' : 'force_int'}, null, processing ? 'yellowBackground' : null)}}
|
{{:helper.link('Force interior door', 'alert', {'command' : 'force_int'}, null, data.processing ? 'yellowBackground' : null)}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item" style="padding-top: 10px; width: 100%">
|
<div class="item" style="padding-top: 10px; width: 100%">
|
||||||
{{:~link('Abort', 'cancel', {'command' : 'abort'}, processing ? null : 'disabled', processing ? 'redBackground' : null)}}
|
{{:helper.link('Abort', 'cancel', {'command' : 'abort'}, data.processing ? null : 'disabled', data.processing ? 'redBackground' : null)}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -4,26 +4,26 @@
|
|||||||
Docking Port Status:
|
Docking Port Status:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{if docking_status == "docked"}}
|
{{if data.docking_status == "docked"}}
|
||||||
{{if !override_enabled}}
|
{{if !data.override_enabled}}
|
||||||
<span class="good">DOCKED</span>
|
<span class="good">DOCKED</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="bad">DOCKED-OVERRIDE ENABLED</span>
|
<span class="bad">DOCKED-OVERRIDE ENABLED</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{else docking_status == "docking"}}
|
{{else data.docking_status == "docking"}}
|
||||||
{{if !override_enabled}}
|
{{if !data.override_enabled}}
|
||||||
<span class="average">DOCKING</span>
|
<span class="average">DOCKING</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="bad">DOCKING-OVERRIDE ENABLED</span>
|
<span class="bad">DOCKING-OVERRIDE ENABLED</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{else docking_status == "undocking"}}
|
{{else data.docking_status == "undocking"}}
|
||||||
{{if !override_enabled}}
|
{{if !data.override_enabled}}
|
||||||
<span class="average">UNDOCKING</span>
|
<span class="average">UNDOCKING</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="bad">UNDOCKING-OVERRIDE ENABLED</span>
|
<span class="bad">UNDOCKING-OVERRIDE ENABLED</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{else docking_status == "undocked"}}
|
{{else data.docking_status == "undocked"}}
|
||||||
{{if !override_enabled}}
|
{{if !data.override_enabled}}
|
||||||
<span class="idle">NOT IN USE</span>
|
<span class="idle">NOT IN USE</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="bad" style="float:left">OVERRIDE ENABLED</span>
|
<span class="bad" style="float:left">OVERRIDE ENABLED</span>
|
||||||
@@ -40,40 +40,40 @@
|
|||||||
Docking Hatch:
|
Docking Hatch:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{if docking_status == "docked"}}
|
{{if data.docking_status == "docked"}}
|
||||||
{{if door_state == "open"}}
|
{{if data.door_state == "open"}}
|
||||||
<span class="good">OPEN</span>
|
<span class="good">OPEN</span>
|
||||||
{{else door_state == "closed"}}
|
{{else data.door_state == "closed"}}
|
||||||
<span class="good">CLOSED</span>
|
<span class="good">CLOSED</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="bad">ERROR</span>
|
<span class="bad">ERROR</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{else docking_status == "docking"}}
|
{{else data.docking_status == "docking"}}
|
||||||
{{if door_state == "open"}}
|
{{if data.door_state == "open"}}
|
||||||
<span class="good">OPEN</span>
|
<span class="good">OPEN</span>
|
||||||
{{else door_state == "closed" && door_lock == "locked"}}
|
{{else data.door_state == "closed" && data.door_lock == "locked"}}
|
||||||
<span class="good">SECURED</span>
|
<span class="good">SECURED</span>
|
||||||
{{else door_state == "closed" && door_lock == "unlocked"}}
|
{{else data.door_state == "closed" && data.door_lock == "unlocked"}}
|
||||||
<span class="good">UNSECURED</span>
|
<span class="good">UNSECURED</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="bad">ERROR</span>
|
<span class="bad">ERROR</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{else docking_status == "undocking"}}
|
{{else data.docking_status == "undocking"}}
|
||||||
{{if door_state == "open"}}
|
{{if data.door_state == "open"}}
|
||||||
<span class="average">OPEN</span>
|
<span class="average">OPEN</span>
|
||||||
{{else door_state == "closed" && door_lock == "locked"}}
|
{{else data.door_state == "closed" && data.door_lock == "locked"}}
|
||||||
<span class="good">SECURED</span>
|
<span class="good">SECURED</span>
|
||||||
{{else door_state == "closed" && door_lock == "unlocked"}}
|
{{else data.door_state == "closed" && data.door_lock == "unlocked"}}
|
||||||
<span class="average">UNSECURED</span>
|
<span class="average">UNSECURED</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="bad">ERROR</span>
|
<span class="bad">ERROR</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{else docking_status == "undocked"}}
|
{{else data.docking_status == "undocked"}}
|
||||||
{{if door_state == "open"}}
|
{{if data.door_state == "open"}}
|
||||||
<span class="bad">OPEN</span>
|
<span class="bad">OPEN</span>
|
||||||
{{else door_state == "closed" && door_lock == "locked"}}
|
{{else data.door_state == "closed" && data.door_lock == "locked"}}
|
||||||
<span class="good">SECURED</span>
|
<span class="good">SECURED</span>
|
||||||
{{else door_state == "closed" && door_lock == "unlocked"}}
|
{{else data.door_state == "closed" && data.door_lock == "unlocked"}}
|
||||||
<span class="bad">UNSECURED</span>
|
<span class="bad">UNSECURED</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="bad">ERROR</span>
|
<span class="bad">ERROR</span>
|
||||||
@@ -87,12 +87,12 @@
|
|||||||
<div class="item" style="padding-top: 10px">
|
<div class="item" style="padding-top: 10px">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemContent" style="padding-top: 2px; width: 100%">
|
<div class="itemContent" style="padding-top: 2px; width: 100%">
|
||||||
{{if docking_status == "docked"}}
|
{{if data.docking_status == "docked"}}
|
||||||
{{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, override_enabled ? null : 'disabled', null)}}
|
{{:helper.link('Force exterior door', 'alert', {'command' : 'force_door'}, data.override_enabled ? null : 'disabled', null)}}
|
||||||
{{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : null)}}
|
{{:helper.link('Override', 'alert', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redBackground' : null)}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, override_enabled ? null : 'disabled', override_enabled? 'redBackground' : null)}}
|
{{:helper.link('Force exterior door', 'alert', {'command' : 'force_door'}, data.override_enabled ? null : 'disabled', data.override_enabled ? 'redBackground' : null)}}
|
||||||
{{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : 'yellowBackground')}}
|
{{:helper.link('Override', 'alert', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redBackground' : 'yellowBackground')}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
101
nano/templates/simple_docking_console_pod.tmpl
Normal file
101
nano/templates/simple_docking_console_pod.tmpl
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
<div class="item" style="padding-top: 10px">
|
||||||
|
<div class="item">
|
||||||
|
<div class="itemLabel">
|
||||||
|
Docking Port Status:
|
||||||
|
</div>
|
||||||
|
<div class="itemContent">
|
||||||
|
{{if data.docking_status == "docked"}}
|
||||||
|
{{if !data.override_enabled}}
|
||||||
|
<span class="good">DOCKED</span>
|
||||||
|
{{else}}
|
||||||
|
<span class="bad">DOCKED-OVERRIDE ENABLED</span>
|
||||||
|
{{/if}}
|
||||||
|
{{else data.docking_status == "docking"}}
|
||||||
|
{{if !data.override_enabled}}
|
||||||
|
<span class="average">DOCKING</span>
|
||||||
|
{{else}}
|
||||||
|
<span class="bad">DOCKING-OVERRIDE ENABLED</span>
|
||||||
|
{{/if}}
|
||||||
|
{{else data.docking_status == "undocking"}}
|
||||||
|
{{if !data.override_enabled}}
|
||||||
|
<span class="average">UNDOCKING</span>
|
||||||
|
{{else}}
|
||||||
|
<span class="bad">UNDOCKING-OVERRIDE ENABLED</span>
|
||||||
|
{{/if}}
|
||||||
|
{{else data.docking_status == "undocked"}}
|
||||||
|
{{if !data.override_enabled}}
|
||||||
|
<span class="idle">NOT IN USE</span>
|
||||||
|
{{else}}
|
||||||
|
<span class="bad" style="float:left">OVERRIDE ENABLED</span>
|
||||||
|
{{/if}}
|
||||||
|
{{else}}
|
||||||
|
<span class="bad">ERROR</span>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="item" style="padding-top: 10px">
|
||||||
|
<div class="item">
|
||||||
|
<div class="itemLabel">
|
||||||
|
Docking Hatch:
|
||||||
|
</div>
|
||||||
|
<div class="itemContent">
|
||||||
|
{{if data.docking_status == "docked"}}
|
||||||
|
{{if data.door_state == "open"}}
|
||||||
|
<span class="good">OPEN</span>
|
||||||
|
{{else data.door_state == "closed"}}
|
||||||
|
<span class="good">CLOSED</span>
|
||||||
|
{{else}}
|
||||||
|
<span class="bad">ERROR</span>
|
||||||
|
{{/if}}
|
||||||
|
{{else data.docking_status == "docking"}}
|
||||||
|
{{if data.door_state == "open"}}
|
||||||
|
<span class="good">OPEN</span>
|
||||||
|
{{else data.door_state == "closed" && data.door_lock == "locked"}}
|
||||||
|
<span class="good">SECURED</span>
|
||||||
|
{{else data.door_state == "closed" && data.door_lock == "unlocked"}}
|
||||||
|
<span class="good">UNSECURED</span>
|
||||||
|
{{else}}
|
||||||
|
<span class="bad">ERROR</span>
|
||||||
|
{{/if}}
|
||||||
|
{{else data.docking_status == "undocking"}}
|
||||||
|
{{if data.door_state == "open"}}
|
||||||
|
<span class="average">OPEN</span>
|
||||||
|
{{else data.door_state == "closed" && data.door_lock == "locked"}}
|
||||||
|
<span class="good">SECURED</span>
|
||||||
|
{{else data.door_state == "closed" && data.door_lock == "unlocked"}}
|
||||||
|
<span class="average">UNSECURED</span>
|
||||||
|
{{else}}
|
||||||
|
<span class="bad">ERROR</span>
|
||||||
|
{{/if}}
|
||||||
|
{{else data.docking_status == "undocked"}}
|
||||||
|
{{if data.door_state == "open"}}
|
||||||
|
<span class="bad">OPEN</span>
|
||||||
|
{{else data.door_state == "closed" && data.door_lock == "locked"}}
|
||||||
|
<span class="good">SECURED</span>
|
||||||
|
{{else data.door_state == "closed" && data.door_lock == "unlocked"}}
|
||||||
|
<span class="bad">UNSECURED</span>
|
||||||
|
{{else}}
|
||||||
|
<span class="bad">ERROR</span>
|
||||||
|
{{/if}}
|
||||||
|
{{else}}
|
||||||
|
<span class="bad">ERROR</span>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="item" style="padding-top: 10px">
|
||||||
|
<div class="item">
|
||||||
|
<div class="itemContent" style="padding-top: 2px; width: 100%">
|
||||||
|
{{if data.docking_status == "docked"}}
|
||||||
|
{{:helper.link('Force exterior door', 'alert', {'command' : 'force_door'}, data.override_enabled ? null : 'disabled', null)}}
|
||||||
|
{{:helper.link('Override', 'alert', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redBackground' : null)}}
|
||||||
|
{{:helper.link('MANUAL EJECT', 'alert', {'command' : 'toggle_override'}, 'disabled', null)}}
|
||||||
|
{{else}}
|
||||||
|
{{:helper.link('Force exterior door', 'alert', {'command' : 'force_door'}, data.override_enabled ? null : 'disabled', data.override_enabled ? 'redBackground' : null)}}
|
||||||
|
{{:helper.link('Override', 'alert', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redBackground' : 'yellowBackground')}}
|
||||||
|
{{:helper.link('MANUAL EJECT', 'alert', {'command' : 'toggle_override'}, can_force ? null : 'disabled', can_force ? 'redBackground' : null)}}
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -1,37 +1,33 @@
|
|||||||
<div class='item'>
|
<div class='item'>
|
||||||
{{:~link('Close', 'gear', {'close' : 1}, null, 'fixedLeft')}}
|
{{:helper.link('Close', 'gear', {'close' : 1}, null, 'fixedLeft')}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<h2>Storage</h2>
|
<h2>Storage</h2>
|
||||||
{{if secure}}
|
{{if data.secure}}
|
||||||
<span class='notice'>
|
<span class='notice'>
|
||||||
{{:locked == -1 ? "Sec.re ACC_** //):securi_nt.diag=>##'or 1=1'%($..." : "Secure Access: Please have your identification ready."}}
|
{{:data.locked == -1 ? "Sec.re ACC_** //):securi_nt.diag=>##'or 1=1'%($..." : "Secure Access: Please have your identification ready."}}
|
||||||
</span>
|
</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
{{if contents}}
|
{{if data.contents}}
|
||||||
{{for contents}}
|
{{for data.contents}}
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<div class='itemLabel'>
|
<span class='highlight'>{{:value.display_name}} ({{:value.quantity}} available)</span>
|
||||||
<span class='highlight'>{{:display_name}} ({{:quantity}}):</span>
|
<div style="float: left;">Vend: </div> {{:helper.link('x1', 'circle-arrow-s', { "vend" : value.vend, "amount" : 1 }, null, 'statusValue')}}
|
||||||
</div>
|
{{if value.quantity >= 5}}
|
||||||
<div class="itemContent">
|
{{:helper.link('x5', 'circle-arrow-s', { "vend" : value.vend, "amount" : 5 }, null, 'statusValue')}}
|
||||||
{{:~link('Vend', 'circle-arrow-s', { "vend" : vend, "amount" : 1 }, null, 'statusValue')}}
|
{{/if}}
|
||||||
{{if quantity >= 5}}
|
{{if value.quantity >= 10}}
|
||||||
{{:~link('x5', 'circle-arrow-s', { "vend" : vend, "amount" : 5 }, null, 'statusValue')}}
|
{{:helper.link('x10', 'circle-arrow-s', { "vend" : value.vend, "amount" : 10 }, null, 'statusValue')}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{if quantity >= 10}}
|
{{if value.quantity >= 25}}
|
||||||
{{:~link('x10', 'circle-arrow-s', { "vend" : vend, "amount" : 10 }, null, 'statusValue')}}
|
{{:helper.link('x25', 'circle-arrow-s', { "vend" : value.vend, "amount" : 25 }, null, 'statusValue')}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{if quantity >= 25}}
|
{{if value.quantity > 1}}
|
||||||
{{:~link('x25', 'circle-arrow-s', { "vend" : vend, "amount" : 25 }, null, 'statusValue')}}
|
{{:helper.link('All', 'circle-arrow-s', { "vend" : value.vend, "amount" : value.quantity }, null, 'statusValue')}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{if quantity > 1}}
|
|
||||||
{{:~link('All', 'circle-arrow-s', { "vend" : vend, "amount" : quantity }, null, 'statusValue')}}
|
|
||||||
{{/if}}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
{{/for}}
|
{{/for}}
|
||||||
{{else}}
|
{{else}}
|
||||||
@@ -39,7 +35,7 @@
|
|||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{if panel_open}}
|
{{if data.panel_open}}
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<h2>Access Panel</h2>
|
<h2>Access Panel</h2>
|
||||||
</div>
|
</div>
|
||||||
@@ -48,17 +44,17 @@
|
|||||||
<span class='good'>Wires:</span>
|
<span class='good'>Wires:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class='itemContentWide'>
|
<div class='itemContentWide'>
|
||||||
{{for wires}}
|
{{for data.wires}}
|
||||||
<div class='item'>
|
<div class='item'>
|
||||||
<div class='itemLabel' style='color: {{:wire}};'>
|
<div class='itemLabel' style='color: {{:value.wire}};'>
|
||||||
{{:wire}} wire:
|
{{:value.wire}} wire:
|
||||||
</div>
|
</div>
|
||||||
<div class='itemContent'>
|
<div class='itemContent'>
|
||||||
{{if cut}}
|
{{if value.cut}}
|
||||||
{{:~link('Mend', 'plus', {'cutwire' : index})}}
|
{{:helper.link('Mend', 'plus', {'cutwire' : value.index})}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{:~link('Cut', 'minus', {'cutwire' : index})}}
|
{{:helper.link('Cut', 'minus', {'cutwire' : value.index})}}
|
||||||
{{:~link('Pulse', 'signal-diag', {'pulsewire' : index})}}
|
{{:helper.link('Pulse', 'signal-diag', {'pulsewire' : value.index})}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -67,12 +63,12 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class='statusDisplay'>
|
<div class='statusDisplay'>
|
||||||
The orange light is <span class='{{:electrified ? "good" : "bad"}}'><b>{{:electrified ? "on" : "off"}}</b></span>.<br>
|
The orange light is <span class='{{:data.electrified ? "good" : "bad"}}'><b>{{:data.electrified ? "on" : "off"}}</b></span>.<br>
|
||||||
The red light is <span class='{{:shoot_inventory ? "good" : "bad"}}'><b>{{:shoot_inventory ? "on" : "off"}}</b></span>.<br>
|
The red light is <span class='{{:data.shoot_inventory ? "good" : "bad"}}'><b>{{:data.shoot_inventory ? "on" : "off"}}</b></span>.<br>
|
||||||
{{if secure}}
|
{{if data.secure}}
|
||||||
The green light is
|
The green light is
|
||||||
<span class='{{:locked == 1 ? "bad" : locked == -1 ? "average" : "good"}}'>
|
<span class='{{:data.locked == 1 ? "bad" : data.locked == -1 ? "average" : "good"}}'>
|
||||||
{{:locked == 1 ? "off" : locked == -1 ? "blinking" : "on"}}
|
{{:data.locked == 1 ? "off" : data.locked == -1 ? "blinking" : "on"}}
|
||||||
</span>.<br>
|
</span>.<br>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,9 +3,9 @@
|
|||||||
Stored Capacity:
|
Stored Capacity:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~displayBar(storedCapacity, 0, 100, charging ? 'good' : 'average')}}
|
{{:helper.displayBar(data.storedCapacity, 0, 100, data.charging ? 'good' : 'average')}}
|
||||||
<div class="statusValue">
|
<div class="statusValue">
|
||||||
{{:~round(storedCapacity)}}%
|
{{:helper.round(data.storedCapacity)}}%
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -16,9 +16,9 @@
|
|||||||
Charge Mode:
|
Charge Mode:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~link('Auto', 'refresh', {'cmode' : 1}, chargeMode ? 'selected' : null)}}{{:~link('Off', 'close', {'cmode' : 1}, chargeMode ? null : 'selected')}}
|
{{:helper.link('Auto', 'refresh', {'cmode' : 1}, data.chargeMode ? 'selected' : null)}}{{:helper.link('Off', 'close', {'cmode' : 1}, data.chargeMode ? null : 'selected')}}
|
||||||
|
|
||||||
{{if charging}}
|
{{if data.charging}}
|
||||||
[<span class='good'>Charging</span>]
|
[<span class='good'>Charging</span>]
|
||||||
{{else}}
|
{{else}}
|
||||||
[<span class='average'>Not Charging</span>]
|
[<span class='average'>Not Charging</span>]
|
||||||
@@ -31,12 +31,12 @@
|
|||||||
Input Level:
|
Input Level:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~displayBar(chargeLevel, 0, chargeMax)}}
|
{{:helper.displayBar(data.chargeLevel, 0, data.chargeMax)}}
|
||||||
<div style="clear: both; padding-top: 4px;">
|
<div style="clear: both; padding-top: 4px;">
|
||||||
{{:~link('MIN', null, {'input' : 'min'}, (chargeLevel > 0) ? null : 'disabled')}}
|
{{:helper.link('MIN', null, {'input' : 'min'}, (data.chargeLevel > 0) ? null : 'disabled')}}
|
||||||
{{:~link('SET', null, {'input' : 'set'}, null)}}
|
{{:helper.link('SET', null, {'input' : 'set'}, null)}}
|
||||||
{{:~link('MAX', null, {'input' : 'max'}, (chargeLevel < chargeMax) ? null : 'disabled')}}
|
{{:helper.link('MAX', null, {'input' : 'max'}, (data.chargeLevel < data.chargeMax) ? null : 'disabled')}}
|
||||||
<div style="float: left; width: 80px; text-align: center;"> {{:chargeLevel}} W </div>
|
<div style="float: left; width: 80px; text-align: center;"> {{:data.chargeLevel}} W </div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -47,7 +47,7 @@
|
|||||||
Output Status:
|
Output Status:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~link('Online', 'power', {'online' : 1}, outputOnline ? 'selected' : null)}}{{:~link('Offline', 'close', {'online' : 1}, outputOnline ? null : 'selected')}}
|
{{:helper.link('Online', 'power', {'online' : 1}, data.outputOnline ? 'selected' : null)}}{{:helper.link('Offline', 'close', {'online' : 1}, data.outputOnline ? null : 'selected')}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -56,12 +56,12 @@
|
|||||||
Output Level:
|
Output Level:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~displayBar(outputLevel, 0, outputMax)}}
|
{{:helper.displayBar(data.outputLevel, 0, data.outputMax)}}
|
||||||
<div style="clear: both; padding-top: 4px;">
|
<div style="clear: both; padding-top: 4px;">
|
||||||
{{:~link('MIN', null, {'output' : 'min'}, (outputLevel > 0) ? null : 'disabled')}}
|
{{:helper.link('MIN', null, {'output' : 'min'}, (data.outputLevel > 0) ? null : 'disabled')}}
|
||||||
{{:~link('SET', null, {'output' : 'set'}, null)}}
|
{{:helper.link('SET', null, {'output' : 'set'}, null)}}
|
||||||
{{:~link('MAX', null, {'output' : 'max'}, (outputLevel < outputMax) ? null : 'disabled')}}
|
{{:helper.link('MAX', null, {'output' : 'max'}, (data.outputLevel < data.outputMax) ? null : 'disabled')}}
|
||||||
<div style="float: left; width: 80px; text-align: center;"> {{:outputLevel}} W </div>
|
<div style="float: left; width: 80px; text-align: center;"> {{:data.outputLevel}} W </div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -71,9 +71,9 @@
|
|||||||
Output Load:
|
Output Load:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~displayBar(outputLoad, 0, outputMax, (outputLoad < outputLevel) ? 'good' : 'average')}}
|
{{:helper.displayBar(data.outputLoad, 0, data.outputMax, (data.outputLoad < data.outputLevel) ? 'good' : 'average')}}
|
||||||
<div class="statusValue">
|
<div class="statusValue">
|
||||||
{{:outputLoad}} W
|
{{:data.outputLoad}} W
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
{{if maskConnected}}
|
{{if data.maskConnected}}
|
||||||
<div class="noticePlaceholder">This tank is connected to a mask.</div>
|
<div class="noticePlaceholder">This tank is connected to a mask.</div>
|
||||||
{{else}}
|
{{else}}
|
||||||
<div class="notice">This tank is NOT connected to a mask.</div>
|
<div class="notice">This tank is NOT connected to a mask.</div>
|
||||||
@@ -9,9 +9,9 @@
|
|||||||
Tank Pressure:
|
Tank Pressure:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~displayBar(tankPressure, 0, 1013, (tankPressure > 200) ? 'good' : (tankPressure > 100) ? 'average' : 'bad'))}}
|
{{:helper.displayBar(data.tankPressure, 0, 1013, (data.tankPressure > 200) ? 'good' : (data.tankPressure > 100) ? 'average' : 'bad'))}}
|
||||||
<div class="statusValue">
|
<div class="statusValue">
|
||||||
{{:tankPressure}} kPa
|
{{:data.tankPressure}} kPa
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -23,15 +23,15 @@
|
|||||||
Mask Release Pressure:
|
Mask Release Pressure:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~displayBar(releasePressure, 0, maxReleasePressure, (releasePressure >= 23) ? null : ((releasePressure >= 17) ? 'average' : 'bad'))}}
|
{{:helper.displayBar(data.releasePressure, 0, data.maxReleasePressure, (data.releasePressure >= 23) ? null : ((data.releasePressure >= 17) ? 'average' : 'bad'))}}
|
||||||
<div style="clear: both; padding-top: 4px;">
|
<div style="clear: both; padding-top: 4px;">
|
||||||
{{:~link('-', null, {'dist_p' : -10}, (releasePressure > 0) ? null : 'disabled')}}
|
{{:helper.link('-', null, {'dist_p' : -10}, (data.releasePressure > 0) ? null : 'disabled')}}
|
||||||
{{:~link('-', null, {'dist_p' : -1}, (releasePressure > 0) ? null : 'disabled')}}
|
{{:helper.link('-', null, {'dist_p' : -1}, (data.releasePressure > 0) ? null : 'disabled')}}
|
||||||
<div style="float: left; width: 80px; text-align: center;"> {{:releasePressure}} kPa </div>
|
<div style="float: left; width: 80px; text-align: center;"> {{:data.releasePressure}} kPa </div>
|
||||||
{{:~link('+', null, {'dist_p' : 1}, (releasePressure < maxReleasePressure) ? null : 'disabled')}}
|
{{:helper.link('+', null, {'dist_p' : 1}, (data.releasePressure < data.maxReleasePressure) ? null : 'disabled')}}
|
||||||
{{:~link('+', null, {'dist_p' : 10}, (releasePressure < maxReleasePressure) ? null : 'disabled')}}
|
{{:helper.link('+', null, {'dist_p' : 10}, (data.releasePressure < data.maxReleasePressure) ? null : 'disabled')}}
|
||||||
{{:~link('Max', null, {'dist_p' : 'max'}, (releasePressure < maxReleasePressure) ? null : 'disabled')}}
|
{{:helper.link('Max', null, {'dist_p' : 'max'}, (data.releasePressure < data.maxReleasePressure) ? null : 'disabled')}}
|
||||||
{{:~link('Reset', null, {'dist_p' : 'reset'}, (releasePressure != defaultReleasePressure) ? null : 'disabled')}}
|
{{:helper.link('Reset', null, {'dist_p' : 'reset'}, (data.releasePressure != data.defaultReleasePressure) ? null : 'disabled')}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
Mask Release Valve:
|
Mask Release Valve:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~link('Open', 'unlocked', {'stat' : 1}, (!maskConnected) ? 'disabled' : (valveOpen ? 'selected' : null))}}{{:~link('Close', 'locked', {'stat' : 1}, valveOpen ? null : 'selected')}}
|
{{:helper.link('Open', 'unlocked', {'stat' : 1}, (!data.maskConnected) ? 'disabled' : (data.valveOpen ? 'selected' : null))}}{{:helper.link('Close', 'locked', {'stat' : 1}, data.valveOpen ? null : 'selected')}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -5,16 +5,16 @@ Used In File(s): \code\modules\telesci\telesci_computer.dm
|
|||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemLabel">Coordinates:</div>
|
<div class="itemLabel">Coordinates:</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~link('X: ' + coordx, 'gear', {'setx': 1})}}
|
{{:helper.link('X: ' + data.coordx, 'gear', {'setx': 1})}}
|
||||||
{{:~link('Y: ' + coordy, 'gear', {'sety': 1})}}
|
{{:helper.link('Y: ' + data.coordy, 'gear', {'sety': 1})}}
|
||||||
{{:~link('Z: ' + coordz, 'gear', {'setz': 1})}}
|
{{:helper.link('Z: ' + data.coordz, 'gear', {'setz': 1})}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemLabel">Controls:</div>
|
<div class="itemLabel">Controls:</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~link('Send', 'gear', {'send': 1}, null, (coordx != null && coordy != null && coordz != null) ? '' : 'disabled')}}
|
{{:helper.link('Send', 'gear', {'send': 1}, null, (data.coordx != null && data.coordy != null && data.coordz != null) ? '' : 'disabled')}}
|
||||||
{{:~link('Receive', 'gear', {'receive': 1}, null, (coordx != null && coordy != null && coordz != null) ? '' : 'disabled')}}
|
{{:helper.link('Receive', 'gear', {'receive': 1}, null, (data.coordx != null && data.coordy != null && data.coordz != null) ? '' : 'disabled')}}
|
||||||
{{:~link('Recalibrate', 'gear', {'recal': 1})}}
|
{{:helper.link('Recalibrate', 'gear', {'recal': 1})}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,12 +3,12 @@
|
|||||||
Attachment One:
|
Attachment One:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{if attachmentOne}}
|
{{if data.attachmentOne}}
|
||||||
{{:attachmentOne}}
|
{{:data.attachmentOne}}
|
||||||
{{else}}
|
{{else}}
|
||||||
<i>None</i>
|
<i>None</i>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{:~link('Remove', 'eject', {'tankone' : 1}, attachmentOne ? null : 'disabled')}}
|
{{:helper.link('Remove', 'eject', {'tankone' : 1}, data.attachmentOne ? null : 'disabled')}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -17,12 +17,12 @@
|
|||||||
Attachment Two:
|
Attachment Two:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{if attachmentTwo}}
|
{{if data.attachmentTwo}}
|
||||||
{{:attachmentTwo}}
|
{{:data.attachmentTwo}}
|
||||||
{{else}}
|
{{else}}
|
||||||
<i>None</i>
|
<i>None</i>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{:~link('Remove', 'eject', {'tanktwo' : 1}, attachmentTwo ? null : 'disabled')}}
|
{{:helper.link('Remove', 'eject', {'tanktwo' : 1}, data.attachmentTwo ? null : 'disabled')}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -31,14 +31,14 @@
|
|||||||
Valve Attachment:
|
Valve Attachment:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{if valveAttachment}}
|
{{if data.valveAttachment}}
|
||||||
{{:valveAttachment}}
|
{{:data.valveAttachment}}
|
||||||
{{else}}
|
{{else}}
|
||||||
<i>None</i>
|
<i>None</i>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{:~link('Remove', 'eject', {'rem_device' : 1}, valveAttachment ? null : 'disabled')}}
|
{{:helper.link('Remove', 'eject', {'rem_device' : 1}, data.valveAttachment ? null : 'disabled')}}
|
||||||
{{if valveAttachment}}
|
{{if data.valveAttachment}}
|
||||||
{{:~link('View', 'wrench', {'device' : 1})}}
|
{{:helper.link('View', 'wrench', {'device' : 1})}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -50,7 +50,7 @@
|
|||||||
Valve Status:
|
Valve Status:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~link('Open', 'unlocked', {'open' : 1}, (!attachmentOne || !attachmentTwo) ? 'disabled' : (valveOpen ? 'selected' : null))}}{{:~link('Close', 'locked', {'open' : 1}, (!attachmentOne || !attachmentTwo) ? 'disabled' : (valveOpen ? null : 'selected'))}}
|
{{:helper.link('Open', 'unlocked', {'open' : 1}, (!data.attachmentOne || !data.attachmentTwo) ? 'disabled' : (data.valveOpen ? 'selected' : null))}}{{:helper.link('Close', 'locked', {'open' : 1}, (!data.attachmentOne || !data.attachmentTwo) ? 'disabled' : (data.valveOpen ? null : 'selected'))}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -3,44 +3,43 @@
|
|||||||
Title: Syndicate Uplink, uses some javascript to change nanoUI up a bit.
|
Title: Syndicate Uplink, uses some javascript to change nanoUI up a bit.
|
||||||
Used In File(s): \code\game\objects\items\devices\uplinks.dm
|
Used In File(s): \code\game\objects\items\devices\uplinks.dm
|
||||||
-->
|
-->
|
||||||
{{:~syndicateMode()}}
|
{{:helper.syndicateMode()}}
|
||||||
<H2><span class="white">{{:welcome}}</span></H2>
|
<H2><span class="white">{{:data.welcome}}</span></H2>
|
||||||
<br>
|
<br>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemLabelNarrow">
|
<div class="itemLabelNarrow">
|
||||||
<b>Functions</b>:
|
<b>Functions</b>:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:~link('Close', 'gear', {'lock' : "1"}, null, 'fixedLeft')}}
|
{{:helper.link('Close', 'gear', {'lock' : "1"}, null, 'fixedLeft')}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<br>
|
<br>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="itemLabel">
|
<div class="itemLabel">
|
||||||
<b>Tele-Crystals</b>:
|
<b>Tele-Crystals</b>:
|
||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:crystals}}
|
{{:data.crystals}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<H2><span class="white">Request items:</span></H2><br>
|
<H2><span class="white">Request items:</span></H2><br>
|
||||||
<span class="white"><i>Each item costs a number of tele-crystals as indicated by the number following their name.</i></span>
|
<span class="white"><i>Each item costs a number of tele-crystals as indicated by the number following their name.</i></span>
|
||||||
|
|
||||||
<br><br>
|
<br><br>
|
||||||
{{for nano_items}}
|
{{for data.nano_items}}
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<H3><span class="white">{{:Category}}</span></H3>
|
<H3><span class="white">{{:value.Category}}</span></H3>
|
||||||
</div>
|
</div>
|
||||||
{{for items}}
|
{{for data.items :itemValue:itemIndex}}
|
||||||
<div class="item">
|
<div class="item">
|
||||||
{{:~link( Name, 'gear', {'buy_item' : obj_path, 'cost' : Cost}, Cost > ~root.crystals ? 'disabled' : null, null)}} -<span class="white"> {{:Cost}}</span>
|
{{:helper.link( itemValue.Name, 'gear', {'buy_item' : itemValue.obj_path, 'cost' : itemValue.Cost}, itemValue.Cost > data.crystals ? 'disabled' : null, null)}} - <span class="white">{{:itemValue.Cost}}</span>
|
||||||
</div>
|
</div>
|
||||||
{{/for}}
|
{{/for}}
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
{{/for}}
|
{{/for}}
|
||||||
|
|
||||||
<div class="item">
|
<div class="item">
|
||||||
{{:~link('Buy Random (??)' , 'gear', {'buy_item' : 'random'}, null, 'fixedLeftWidest')}}
|
{{:helper.link('Buy Random (??)' , 'gear', {'buy_item' : 'random'}, null, 'fixedLeftWidest')}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user