Merge pull request #27065 from Core0verload/ntos_tgui

Refactor of modular PC UIs
This commit is contained in:
Leo
2017-05-09 11:54:43 -03:00
committed by GitHub
34 changed files with 263 additions and 768 deletions

View File

@@ -34,7 +34,7 @@
var/datum/asset/assets = get_asset_datum(/datum/asset/simple/headers)
assets.send(user)
ui = new(user, src, ui_key, "computer_main", "NTOS Main menu", 400, 500, master_ui, state)
ui = new(user, src, ui_key, "ntos_main", "NTOS Main menu", 400, 500, master_ui, state)
ui.open()
ui.set_autoupdate(state = 1)

View File

@@ -16,6 +16,10 @@
var/network_destination = null // Optional string that describes what NTNet server/system this program connects to. Used in default logging.
var/available_on_ntnet = 1 // Whether the program can be downloaded from NTNet. Set to 0 to disable.
var/available_on_syndinet = 0 // Whether the program can be downloaded from SyndiNet (accessible via emagging the computer). Set to 1 to enable.
var/tgui_id // ID of TG UI interface
var/ui_style // ID of custom TG UI style (optional)
var/ui_x = 575 // Default size of TG UI window, in pixels
var/ui_y = 700
var/ui_header = null // Example: "something.gif" - a header image that will be rendered in computer's UI when this program is running at background. Images are taken from /icons/program_icons. Be careful not to use too large images!
/datum/computer_file/program/New(obj/item/device/modular_computer/comp = null)
@@ -142,13 +146,19 @@
generate_network_log("Connection to [network_destination] closed.")
return 1
// This is called every tick when the program is enabled. Ensure you do parent call if you override it. If parent returns 1 continue with UI initialisation.
/datum/computer_file/program/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
if(program_state != PROGRAM_STATE_ACTIVE) // Our program was closed. Close the ui if it exists.
return computer.ui_interact(user)
return 1
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui && tgui_id)
var/datum/asset/assets = get_asset_datum(/datum/asset/simple/headers)
assets.send(user)
ui = new(user, src, ui_key, tgui_id, filedesc, ui_x, ui_y, state = state)
if(ui_style)
ui.set_style(ui_style)
ui.set_autoupdate(state = 1)
ui.open()
// CONVENTIONS, READ THIS WHEN CREATING NEW PROGRAM AND OVERRIDING THIS PROC:
// Topic calls are automagically forwarded from NanoModule this program contains.

View File

@@ -1,8 +1,6 @@
/datum/computer_file/program/aidiag
filename = "aidiag"
filedesc = "AI Maintenance Utility"
filedesc = "AI Integrity Restorer"
program_icon_state = "generic"
extended_desc = "This program is capable of reconstructing damaged AI systems. Requires direct AI connection via intellicard slot."
size = 12
@@ -10,6 +8,10 @@
usage_flags = PROGRAM_CONSOLE
transfer_access = GLOB.access_heads
available_on_ntnet = 1
tgui_id = "ntos_ai_restorer"
ui_x = 600
ui_y = 400
var/restoring = FALSE
/datum/computer_file/program/aidiag/proc/get_ai(cardcheck)
@@ -114,12 +116,6 @@
return data
/datum/computer_file/program/aidiag/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
ui = new(user, src, ui_key, "ai_restorer", "Integrity Restorer", 600, 400, master_ui, state)
ui.open()
/datum/computer_file/program/aidiag/kill_program(forced)
restoring = FALSE
return ..(forced)

View File

@@ -1,15 +1,16 @@
/datum/computer_file/program/alarm_monitor
filename = "alarmmonitor"
filedesc = "Alarm Monitoring"
filedesc = "Alarm Monitor"
ui_header = "alarm_green.gif"
program_icon_state = "alert-green"
extended_desc = "This program provides visual interface for station's alarm system."
requires_ntnet = 1
network_destination = "alarm monitoring network"
size = 5
tgui_id = "ntos_station_alert"
ui_x = 315
ui_y = 500
var/has_alert = 0
var/alarms = list("Fire" = list(), "Atmosphere" = list(), "Power" = list())
var/alarm_z = list(ZLEVEL_STATION,ZLEVEL_LAVALAND)
@@ -28,15 +29,6 @@
update_computer_icon()
return 1
/datum/computer_file/program/alarm_monitor/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
ui = new(user, src, ui_key, "station_alert_prog", "Alarm Monitoring", 300, 500, master_ui, state)
ui.open()
/datum/computer_file/program/alarm_monitor/ui_data(mob/user)
var/list/data = get_header_data()
@@ -49,7 +41,6 @@
return data
/datum/computer_file/program/alarm_monitor/proc/triggerAlarm(class, area/A, O, obj/source)
if(!(source.z in alarm_z))
return
@@ -77,8 +68,6 @@
/datum/computer_file/program/alarm_monitor/proc/cancelAlarm(class, area/A, obj/origin)
var/list/L = alarms[class]
var/cleared = 0
for (var/I in L)

View File

@@ -7,6 +7,11 @@
requires_ntnet = 1
available_on_ntnet = 0
available_on_syndinet = 1
tgui_id = "ntos_net_dos"
ui_style = "syndicate"
ui_x = 400
ui_y = 250
var/obj/machinery/ntnet_relay/target = null
var/dos_speed = 0
var/error = ""
@@ -36,18 +41,6 @@
..()
/datum/computer_file/program/ntnet_dos/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if (!ui)
ui = new(user, src, ui_key, "ntnet_dos", "DoS Traffic Generator", 400, 250, state = state)
ui.set_style("syndicate")
ui.set_autoupdate(state = 1)
ui.open()
/datum/computer_file/program/ntnet_dos/ui_act(action, params)
if(..())
return 1

View File

@@ -7,6 +7,11 @@
requires_ntnet = 0
available_on_ntnet = 0
available_on_syndinet = 1
tgui_id = "ntos_revelation"
ui_style = "syndicate"
ui_x = 400
ui_y = 250
var/armed = 0
/datum/computer_file/program/revelation/run_program(var/mob/living/user)
@@ -58,16 +63,6 @@
temp.armed = armed
return temp
/datum/computer_file/program/revelation/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if (!ui)
ui = new(user, src, ui_key, "revelation", "Revelation Virus", 400, 250, state = state)
ui.set_style("syndicate")
ui.set_autoupdate(state = 1)
ui.open()
/datum/computer_file/program/revelation/ui_data(mob/user)
var/list/data = get_header_data()

View File

@@ -1,11 +1,15 @@
/datum/computer_file/program/card_mod
filename = "cardmod"
filedesc = "ID card modification program"
filedesc = "ID Card Modification"
program_icon_state = "id"
extended_desc = "Program for programming employee ID cards to access parts of the station."
transfer_access = GLOB.access_heads
requires_ntnet = 0
size = 8
tgui_id = "ntos_card"
ui_x = 600
ui_y = 700
var/mod_mode = 1
var/is_centcom = 0
var/show_assignments = 0
@@ -72,20 +76,6 @@
return 0
return 0
/datum/computer_file/program/card_mod/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if (!ui)
var/datum/asset/assets = get_asset_datum(/datum/asset/simple/headers)
assets.send(user)
ui = new(user, src, ui_key, "identification_computer", "ID card modification program", 600, 700, state = state)
ui.open()
ui.set_autoupdate(state = 1)
/datum/computer_file/program/card_mod/proc/format_jobs(list/jobs)
var/obj/item/weapon/computer_hardware/card_slot/card_slot = computer.all_components[MC_CARD]
var/obj/item/weapon/card/id/id_card = card_slot.stored_card

View File

@@ -4,7 +4,7 @@
/datum/computer_file/program/computerconfig
filename = "compconfig"
filedesc = "Computer Configuration Tool"
filedesc = "Hardware Configuration Tool"
extended_desc = "This program allows configuration of computer's hardware"
program_icon_state = "generic"
unsendable = 1
@@ -12,21 +12,11 @@
size = 4
available_on_ntnet = 0
requires_ntnet = 0
tgui_id = "ntos_configuration"
var/obj/item/device/modular_computer/movable = null
/datum/computer_file/program/computerconfig/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if (!ui)
var/datum/asset/assets = get_asset_datum(/datum/asset/simple/headers)
assets.send(user)
ui = new(user, src, ui_key, "laptop_configuration", "NTOS Configuration Utility", 575, 700, state = state)
ui.open()
ui.set_autoupdate(state = 1)
/datum/computer_file/program/computerconfig/ui_data(mob/user)
movable = computer
var/obj/item/weapon/computer_hardware/hard_drive/hard_drive = movable.all_components[MC_HDD]

View File

@@ -1,12 +1,14 @@
/datum/computer_file/program/filemanager
filename = "filemanager"
filedesc = "NTOS File Manager"
filedesc = "File Manager"
extended_desc = "This program allows management of files."
program_icon_state = "generic"
size = 8
requires_ntnet = 0
available_on_ntnet = 0
undeletable = 1
tgui_id = "ntos_file_manager"
var/open_file
var/error
@@ -176,18 +178,6 @@
t = parse_tags(t)
return t
/datum/computer_file/program/filemanager/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if (!ui)
var/datum/asset/assets = get_asset_datum(/datum/asset/simple/headers)
assets.send(user)
ui = new(user, src, ui_key, "file_manager", "NTOS File Manager", 575, 700, state = state)
ui.open()
ui.set_autoupdate(state = 1)
/datum/computer_file/program/filemanager/ui_data(mob/user)
var/list/data = get_header_data()

View File

@@ -1,6 +1,6 @@
/datum/computer_file/program/ntnetdownload
filename = "ntndownloader"
filedesc = "NTNet Software Download Tool"
filedesc = "Software Download Tool"
program_icon_state = "generic"
extended_desc = "This program allows downloads of software from official NT repositories"
unsendable = 1
@@ -10,6 +10,8 @@
requires_ntnet_feature = NTNET_SOFTWAREDOWNLOAD
available_on_ntnet = 0
ui_header = "downloader_finished.gif"
tgui_id = "ntos_net_downloader"
var/datum/computer_file/program/downloaded_file = null
var/hacked_download = 0
var/download_completion = 0 //GQ of downloaded data.
@@ -103,17 +105,6 @@
return 1
return 0
/datum/computer_file/program/ntnetdownload/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if (!ui)
var/datum/asset/assets = get_asset_datum(/datum/asset/simple/headers)
assets.send(user)
ui = new(user, src, ui_key, "ntnet_downloader", "NTNet Download Program", 575, 700, state = state)
ui.open()
ui.set_autoupdate(state = 1)
/datum/computer_file/program/ntnetdownload/ui_data(mob/user)
my_computer = computer

View File

@@ -7,20 +7,7 @@
requires_ntnet = 1
required_access = GLOB.access_network //Network control is a more secure program.
available_on_ntnet = 1
/datum/computer_file/program/ntnetmonitor/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if (!ui)
var/datum/asset/assets = get_asset_datum(/datum/asset/simple/headers)
assets.send(user)
ui = new(user, src, ui_key, "ntnet_monitor", "NTNet Diagnostics and Monitoring Tool", 575, 700, state = state)
ui.open()
ui.set_autoupdate(state = 1)
tgui_id = "ntos_net_monitor"
/datum/computer_file/program/ntnetmonitor/ui_act(action, params)
if(..())

View File

@@ -1,6 +1,6 @@
/datum/computer_file/program/chatclient
filename = "ntnrc_client"
filedesc = "NTNet Relay Chat Client"
filedesc = "Chat Client"
program_icon_state = "command"
extended_desc = "This program allows communication over NTNRC network"
size = 8
@@ -9,6 +9,8 @@
network_destination = "NTNRC server"
ui_header = "ntnrc_idle.gif"
available_on_ntnet = 1
tgui_id = "ntos_net_chat"
var/last_message = null // Used to generate the toolbar icon
var/username
var/datum/ntnet_conversation/channel = null
@@ -180,21 +182,6 @@
channel = null
..()
/datum/computer_file/program/chatclient/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if (!ui)
var/datum/asset/assets = get_asset_datum(/datum/asset/simple/headers)
assets.send(user)
ui = new(user, src, ui_key, "ntnet_chat", "NTNet Relay Chat Client", 575, 700, state = state)
ui.open()
ui.set_autoupdate(state = 1)
/datum/computer_file/program/chatclient/ui_data(mob/user)
if(!GLOB.ntnet_global || !GLOB.ntnet_global.chat_channels)
return

View File

@@ -1,6 +1,6 @@
/datum/computer_file/program/nttransfer
filename = "nttransfer"
filedesc = "NTNet P2P Transfer Client"
filedesc = "P2P Transfer Client"
extended_desc = "This program allows for simple file transfer via direct peer to peer connection."
program_icon_state = "comm_logs"
size = 7
@@ -8,6 +8,7 @@
requires_ntnet_feature = NTNET_PEERTOPEER
network_destination = "other device via P2P tunnel"
available_on_ntnet = 1
tgui_id = "ntos_net_transfer"
var/error = "" // Error screen
var/server_password = "" // Optional password to download the file.
@@ -82,20 +83,6 @@
remote = null
download_completion = 0
/datum/computer_file/program/nttransfer/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if (!ui)
var/datum/asset/assets = get_asset_datum(/datum/asset/simple/headers)
assets.send(user)
ui = new(user, src, ui_key, "ntnet_transfer", "NTNet P2P Transfer Client", 575, 700, state = state)
ui.open()
ui.set_autoupdate(state = 1)
/datum/computer_file/program/nttransfer/ui_act(action, params)
if(..())
return 1

View File

@@ -1,8 +1,6 @@
/datum/computer_file/program/power_monitor
filename = "powermonitor"
filedesc = "Power Monitoring"
filedesc = "Power Monitor"
program_icon_state = "power_monitor"
extended_desc = "This program connects to sensors around the station to provide information about electrical systems"
ui_header = "power_norm.gif"
@@ -11,6 +9,10 @@
requires_ntnet = 0
network_destination = "power monitoring system"
size = 9
tgui_id = "ntos_power_monitor"
ui_x = 1200
ui_y = 1000
var/has_alert = 0
var/obj/structure/cable/attached
var/list/history = list()
@@ -19,8 +21,6 @@
var/next_record = 0
/datum/computer_file/program/power_monitor/run_program(mob/living/user)
. = ..(user)
search()
@@ -52,18 +52,6 @@
if(demand.len > record_size)
demand.Cut(1, 2)
/datum/computer_file/program/power_monitor/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
var/datum/asset/assets = get_asset_datum(/datum/asset/simple/headers)
assets.send(user)
ui = new(user, src, ui_key, "power_monitor_prog", "Power Monitoring", 1200, 1000, master_ui, state)
ui.open()
/datum/computer_file/program/power_monitor/ui_data()
var/list/data = get_header_data()
data["stored"] = record_size

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,47 +0,0 @@
<div style="float: left">
<div class='item'>
<table><tr>
{{#if data.PC_batteryicon && data.PC_showbatteryicon}}
<td><img src='{{data.PC_batteryicon}}'>
{{/if}}
{{#if data.PC_batterypercent && data.PC_showbatteryicon}}
<td><b>{{data.PC_batterypercent}}</b>
{{/if}}
{{#if data.PC_ntneticon}}
<td><img src='{{data.PC_ntneticon}}'>
{{/if}}
{{#if data.PC_apclinkicon}}
<td><img src='{{data.PC_apclinkicon}}'>
{{/if}}
{{#if data.PC_stationtime}}
<td><b>{{data.PC_stationtime}}<b>
{{/if}}
{{#each data.PC_programheaders}}
<td><img src='{{icon}}'>
{{/each}}
</table>
</div>
</div>
<div style="float: right">
<table><tr>
<td><ui-button action='PC_shutdown'>Shutdown</ui-button>
{{#if data.PC_showexitprogram}}
<td><ui-button action='PC_exit'>EXIT PROGRAM</ui-button>
<td><ui-button action='PC_minimize'>Minimize Program</ui-button>
{{/if}}
</table>
</div>
<div style="clear: both">
<ui-display>
<i>No program loaded. Please select program from list below.</i>
<table>
{{#each data.programs}}
<tr><td><ui-button action='PC_runprogram' params='{"name": "{{name}}"}'>
{{desc}}
</ui-button>
<td><ui-button state='{{running ? null : "disabled"}}' icon='close' action='PC_killprogram' params='{"name": "{{name}}"}'></ui-button>
{{/each}}
</table>
</ui-display>

View File

@@ -1,58 +0,0 @@
<div style="float: left">
<div class='item'>
<table><tr>
{{#if data.PC_batteryicon && data.PC_showbatteryicon}}
<td><img src='{{data.PC_batteryicon}}'>
{{/if}}
{{#if data.PC_batterypercent && data.PC_showbatteryicon}}
<td><b>{{data.PC_batterypercent}}</b>
{{/if}}
{{#if data.PC_ntneticon}}
<td><img src='{{data.PC_ntneticon}}'>
{{/if}}
{{#if data.PC_apclinkicon}}
<td><img src='{{data.PC_apclinkicon}}'>
{{/if}}
{{#if data.PC_stationtime}}
<td><b>{{data.PC_stationtime}}<b>
{{/if}}
{{#each data.PC_programheaders}}
<td><img src='{{icon}}'>
{{/each}}
</table>
</div>
</div>
<div style="float: right">
<table><tr>
<td><ui-button action='PC_shutdown'>Shutdown</ui-button>
{{#if data.PC_showexitprogram}}
<td><ui-button action='PC_exit'>EXIT PROGRAM</ui-button>
<td><ui-button action='PC_minimize'>Minimize Program</ui-button>
{{/if}}
</table>
</div>
<div style="clear: both">
<ui-display>
{{#if data.error}}
##SYSTEM ERROR: {{data.error}}<ui-button action='PRG_reset'>RESET</ui-button>
{{elseif data.target}}
##DoS traffic generator active. Tx: {{data.speed}}GQ/s<br>
{{#each data.dos_strings}}
{{nums}}<br>
{{/each}}
<ui-button action='PRG_reset'>ABORT</ui-button>
{{else}}
##DoS traffic generator ready. Select target device.<br>
{{#if data.focus}}
Targeted device ID: {{data.focus}}
{{else}}
Targeted device ID: None
{{/if}}
<ui-button action='PRG_execute'>EXECUTE</ui-button><div style="clear:both"></div>
Detected devices on network:<br>
{{#each data.relays}}
<ui-button action='PRG_target_relay' params='{"targid": "{{id}}"}'>{{id}}</ui-button>
{{/each}}
{{/if}}
</ui-display>

View File

@@ -1,4 +1,3 @@
<script>
component.exports = {
computed: {
@@ -12,41 +11,8 @@
}
</script>
<div style="float: left">
<div class='item'>
<table><tr>
{{#if data.PC_batteryicon && data.PC_showbatteryicon}}
<td><img src='{{data.PC_batteryicon}}'>
{{/if}}
{{#if data.PC_batterypercent && data.PC_showbatteryicon}}
<td><b>{{data.PC_batterypercent}}</b>
{{/if}}
{{#if data.PC_ntneticon}}
<td><img src='{{data.PC_ntneticon}}'>
{{/if}}
{{#if data.PC_apclinkicon}}
<td><img src='{{data.PC_apclinkicon}}'>
{{/if}}
{{#if data.PC_stationtime}}
<td><b>{{data.PC_stationtime}}<b>
{{/if}}
{{#each data.PC_programheaders}}
<td><img src='{{icon}}'>
{{/each}}
</table>
</div>
</div>
<div style="float: right">
<table><tr>
<td><ui-button action='PC_shutdown'>Shutdown</ui-button>
{{#if data.PC_showexitprogram}}
<td><ui-button action='PC_exit'>EXIT PROGRAM</ui-button>
<td><ui-button action='PC_minimize'>Minimize Program</ui-button>
{{/if}}
</table>
</div>
<div style="clear: both">
<link rel='ractive' href='./ntosheader.ract'>
<ntosheader/>
{{#if data.restoring}}
<ui-notice>

View File

@@ -1,37 +1,5 @@
<div style="float: left">
<div class='item'>
<table><tr>
{{#if data.PC_batteryicon && data.PC_showbatteryicon}}
<td><img src='{{data.PC_batteryicon}}'>
{{/if}}
{{#if data.PC_batterypercent && data.PC_showbatteryicon}}
<td><b>{{data.PC_batterypercent}}</b>
{{/if}}
{{#if data.PC_ntneticon}}
<td><img src='{{data.PC_ntneticon}}'>
{{/if}}
{{#if data.PC_apclinkicon}}
<td><img src='{{data.PC_apclinkicon}}'>
{{/if}}
{{#if data.PC_stationtime}}
<td><b>{{data.PC_stationtime}}<b>
{{/if}}
{{#each data.PC_programheaders}}
<td><img src='{{icon}}'>
{{/each}}
</table>
</div>
</div>
<div style="float: right">
<table><tr>
<td><ui-button action='PC_shutdown'>Shutdown</ui-button>
{{#if data.PC_showexitprogram}}
<td><ui-button action='PC_exit'>EXIT PROGRAM</ui-button>
<td><ui-button action='PC_minimize'>Minimize Program</ui-button>
{{/if}}
</table>
</div>
<div style="clear: both">
<link rel='ractive' href='./ntosheader.ract'>
<ntosheader/>
{{#if data.have_id_slot}}
<ui-button action='PRG_switchm' icon='home' params='{"target" : "mod"}' state='{{data.mmode == 1 ? "disabled" : null}}'>Access Modification</ui-button>
@@ -151,12 +119,14 @@
<div id="all-value.jobs">
<table>
<tr>
<th></th><th>Command</th>
<th>Command</th>
<td>
<ui-button action='PRG_assign' params='{"assign_target" : "Captain"}' state='{{data.id_rank == "Captain" ? "selected" : null}}'>Captain</ui-button>
</td>
</tr>
<tr>
<th>Special</th>
<td>
<ui-button action='PRG_assign' params='{"assign_target" : "Captain"}' state='{{data.id_rank == "Captain" ? "selected" : null}}'>Captain</ui-button>
<ui-button action='PRG_assign' params='{"assign_target" : "Custom"}'>Custom</ui-button>
</td>
</tr>
@@ -210,10 +180,9 @@
</tr>
{{#if data.centcom_access}}
<tr>
<th style="color: '#A52A2A';">CentCom</th>
<th style="color: '#A52A2A';">Centcom</th>
<td>
{{#each data.centcom_jobs}}
<ui-button action='PRG_assign' params='{"assign_target" : "{{job}}"}' state='{{data.id_rank == job ? "selected" : null}}'>{{display_name}}</ui-button>
{{/each}}
</td>

View File

@@ -1,4 +1,3 @@
<script>
component.exports = {
data: {
@@ -12,43 +11,16 @@
}
</script>
<div style="float: left">
<div class='item'>
<table><tr>
{{#if data.PC_batteryicon && data.PC_showbatteryicon}}
<td><img src='{{data.PC_batteryicon}}'>
{{/if}}
{{#if data.PC_batterypercent && data.PC_showbatteryicon}}
<td><b>{{data.PC_batterypercent}}</b>
{{/if}}
{{#if data.PC_ntneticon}}
<td><img src='{{data.PC_ntneticon}}'>
{{/if}}
{{#if data.PC_apclinkicon}}
<td><img src='{{data.PC_apclinkicon}}'>
{{/if}}
{{#if data.PC_stationtime}}
<td><b>{{data.PC_stationtime}}<b>
{{/if}}
{{#each data.PC_programheaders}}
<td><img src='{{icon}}'>
{{/each}}
</table>
</div>
</div>
<div style="float: right">
<table><tr>
<td><ui-button action='PC_shutdown'>Shutdown</ui-button>
{{#if data.PC_showexitprogram}}
<td><ui-button action='PC_exit'>EXIT PROGRAM</ui-button>
<td><ui-button action='PC_minimize'>Minimize Program</ui-button>
{{/if}}
</table>
</div>
<div style="clear: both">
<link rel='ractive' href='./ntosheader.ract'>
<ntosheader/>
<ui-display>
<i>Welcome to computer configuration utility. Please consult your system administrator if you have any questions about your device.</i><hr>
<ui-display title='Power Supply'>
<ui-section label='Power Usage'>
{{data.power_usage}}W
</ui-section>
{{#if data.battery}}
<ui-section label='Battery Status'>
Active
@@ -64,41 +36,32 @@
Not Available
</ui-section>
{{/if}}
<ui-section label='Power Usage'>
{{data.power_usage}}W
</ui-section>
</ui-display>
<ui-display title='File System'>
<ui-section label='Used Capacity'>
<ui-bar min='0' max='{{adata.disk_size}}' value='{{adata.disk_used}}' state='good'>{{Math.round(adata.disk_used)}}GQ/{{adata.disk_size}}GQ</ui-bar>
<ui-bar min='0' max='{{adata.disk_size}}' value='{{adata.disk_used}}' state='good'>{{Math.round(adata.disk_used)}}GQ / {{adata.disk_size}}GQ</ui-bar>
</ui-section>
</ui-display>
<ui-display title='Computer Components'>
{{#each data.hardware}}
<ui-subdisplay title='{{name}}'>
<div style='display: table-caption; margin-left: 3px'>{{desc}}</div>
<i>{{desc}}</i><br>
<ui-section label='State'>
<ui-button state='{{critical ? "disabled" : null}}' action='PC_toggle_component' params='{"name": "{{name}}"}'>
{{enabled ? "Enabled" : "Disabled"}}
</ui-button>
</ui-section>
{{enabled ? "Enabled" : "Disabled"}}
</ui-section>
<ui-section Label='Power Usage'>
{{powerusage}}W
</ui-section>
{{#if !critical}}
<ui-section label='Toggle Component'>
<ui-button icon='{{enabled ? "power-off" : "close"}}' action='PC_toggle_component' params='{"name": "{{name}}"}'>
{{enabled ? "On" : "Off"}}
</ui-button>
{{#if powerusage}}
<ui-section label='Power Usage'>
{{powerusage}}W
</ui-section>
{{/if}}
<br><br>
</ui-subdisplay>
<br>
{{/each}}
</ui-display>
</ui-display>

View File

@@ -1,41 +1,8 @@
<link rel='ractive' href='./ntosheader.ract'>
<ntosheader/>
<ui-display>
<div style="float: left">
<div class='item'>
<table><tr>
{{#if data.PC_batteryicon && data.PC_showbatteryicon}}
<td><img src='{{data.PC_batteryicon}}'>
{{/if}}
{{#if data.PC_batterypercent && data.PC_showbatteryicon}}
<td><b>{{data.PC_batterypercent}}</b>
{{/if}}
{{#if data.PC_ntneticon}}
<td><img src='{{data.PC_ntneticon}}'>
{{/if}}
{{#if data.PC_apclinkicon}}
<td><img src='{{data.PC_apclinkicon}}'>
{{/if}}
{{#if data.PC_stationtime}}
<td><b>{{data.PC_stationtime}}<b>
{{/if}}
{{#each data.PC_programheaders}}
<td><img src='{{icon}}'>
{{/each}}
</table>
</div>
</div>
<div style="float: right">
<table><tr>
<td><ui-button action='PC_shutdown'>Shutdown</ui-button>
{{#if data.PC_showexitprogram}}
<td><ui-button action='PC_exit'>EXIT PROGRAM</ui-button>
<td><ui-button action='PC_minimize'>Minimize Program</ui-button>
{{/if}}
</table>
</div>
<div style="clear: both">
{{#if data.error}}
<h2>An error has occurred and this program can not continue.</h2>
Additional information: {{data.error}}<br>

View File

@@ -0,0 +1,14 @@
<link rel='ractive' href='./ntosheader.ract'>
<ntosheader/>
<ui-display>
<i>No program loaded. Please select program from list below.</i>
<table>
{{#each data.programs}}
<tr><td><ui-button action='PC_runprogram' params='{"name": "{{name}}"}'>
{{desc}}
</ui-button>
<td><ui-button state='{{running ? null : "disabled"}}' icon='close' action='PC_killprogram' params='{"name": "{{name}}"}'></ui-button>
{{/each}}
</table>
</ui-display>

View File

@@ -1,38 +1,6 @@
<link rel='ractive' href='./ntosheader.ract'>
<ntosheader/>
<div style="float: left">
<div class='item'>
<table><tr>
{{#if data.PC_batteryicon && data.PC_showbatteryicon}}
<td><img src='{{data.PC_batteryicon}}'>
{{/if}}
{{#if data.PC_batterypercent && data.PC_showbatteryicon}}
<td><b>{{data.PC_batterypercent}}</b>
{{/if}}
{{#if data.PC_ntneticon}}
<td><img src='{{data.PC_ntneticon}}'>
{{/if}}
{{#if data.PC_apclinkicon}}
<td><img src='{{data.PC_apclinkicon}}'>
{{/if}}
{{#if data.PC_stationtime}}
<td><b>{{data.PC_stationtime}}<b>
{{/if}}
{{#each data.PC_programheaders}}
<td><img src='{{icon}}'>
{{/each}}
</table>
</div>
</div>
<div style="float: right">
<table><tr>
<td><ui-button action='PC_shutdown'>Shutdown</ui-button>
{{#if data.PC_showexitprogram}}
<td><ui-button action='PC_exit'>EXIT PROGRAM</ui-button>
<td><ui-button action='PC_minimize'>Minimize Program</ui-button>
{{/if}}
</table>
</div>
<div style="clear: both">
<ui-display>
{{#if data.adminmode}}
<h1>ADMINISTRATIVE MODE</h1>

View File

@@ -0,0 +1,26 @@
<link rel='ractive' href='./ntosheader.ract'>
<ntosheader/>
<ui-display>
{{#if data.error}}
##SYSTEM ERROR: {{data.error}}<ui-button action='PRG_reset'>RESET</ui-button>
{{elseif data.target}}
##DoS traffic generator active. Tx: {{data.speed}}GQ/s<br>
{{#each data.dos_strings}}
{{nums}}<br>
{{/each}}
<ui-button action='PRG_reset'>ABORT</ui-button>
{{else}}
##DoS traffic generator ready. Select target device.<br>
{{#if data.focus}}
Targeted device ID: {{data.focus}}
{{else}}
Targeted device ID: None
{{/if}}
<ui-button action='PRG_execute'>EXECUTE</ui-button><div style="clear:both"></div>
Detected devices on network:<br>
{{#each data.relays}}
<ui-button action='PRG_target_relay' params='{"targid": "{{id}}"}'>{{id}}</ui-button>
{{/each}}
{{/if}}
</ui-display>

View File

@@ -1,38 +1,5 @@
<div style="float: left">
<div class='item'>
<table><tr>
{{#if data.PC_batteryicon && data.PC_showbatteryicon}}
<td><img src='{{data.PC_batteryicon}}'>
{{/if}}
{{#if data.PC_batterypercent && data.PC_showbatteryicon}}
<td><b>{{data.PC_batterypercent}}</b>
{{/if}}
{{#if data.PC_ntneticon}}
<td><img src='{{data.PC_ntneticon}}'>
{{/if}}
{{#if data.PC_apclinkicon}}
<td><img src='{{data.PC_apclinkicon}}'>
{{/if}}
{{#if data.PC_stationtime}}
<td><b>{{data.PC_stationtime}}<b>
{{/if}}
{{#each data.PC_programheaders}}
<td><img src='{{icon}}'>
{{/each}}
</table>
</div>
</div>
<div style="float: right">
<table><tr>
<td><ui-button action='PC_shutdown'>Shutdown</ui-button>
{{#if data.PC_showexitprogram}}
<td><ui-button action='PC_exit'>EXIT PROGRAM</ui-button>
<td><ui-button action='PC_minimize'>Minimize Program</ui-button>
{{/if}}
</table>
</div>
<div style="clear: both">
<link rel='ractive' href='./ntosheader.ract'>
<ntosheader/>
<ui-display>
<i>Welcome to software download utility. Please select which software you wish to download.</i><hr>
@@ -58,61 +25,62 @@
{{data.downloaddesc}}
</ui-section>
<ui-section label='File size'>
{{data.downloadcompletion}}GQ / {{data.downloadsize}}GQ
{{data.downloadsize}}GQ
</ui-section>
<ui-section label='Transfer Rate'>
{{data.downloadspeed}} GQ/s
</ui-section>
<ui-section label='Download progress'>
<ui-bar min='0' max='{{adata.downloadsize}}' value='{{adata.downloadcompletion}}' state='good'>{{Math.round(adata.downloadcompletion)}}/{{adata.downloadsize}}</ui-bar>
<ui-bar min='0' max='{{adata.downloadsize}}' value='{{adata.downloadcompletion}}' state='good'>{{Math.round(adata.downloadcompletion)}}GQ / {{adata.downloadsize}}GQ</ui-bar>
</ui-section>
</ui-display>
{{/if}}
{{/if}}
{{#if !data.downloadname}}
{{#if !data.error}}
<ui-display title='Primary software repository'>
<ui-section label='Hard drive'>
<ui-bar min='0' max='{{adata.disk_size}}' value='{{adata.disk_used}}' state='good'>{{Math.round(adata.disk_used)}}GQ/{{adata.disk_size}}GQ</ui-bar>
<ui-display title='File System'>
<ui-section label='Used Capacity'>
<ui-bar min='0' max='{{adata.disk_size}}' value='{{adata.disk_used}}' state='good'>{{Math.round(adata.disk_used)}}GQ / {{adata.disk_size}}GQ</ui-bar>
</ui-section>
{{#each data.downloadable_programs}}
<ui-section label='File name'>
{{filename}} ({{size}} GQ)
</ui-section>
<ui-section label='Program name'>
{{filedesc}}
</ui-section>
<ui-section label='Description'>
{{fileinfo}}
</ui-section>
<ui-section label='Compatibility'>
{{compatibility}}
</ui-section>
<ui-section label='File controls'>
<ui-button icon='signal' action='PRG_downloadfile' params='{"filename": "{{filename}}"}'>
DOWNLOAD
</ui-button>
</ui-section>
{{/each}}
</ui-display>
{{#if data.hackedavailable}}
<ui-display title='UNKNOWN software repository'>
<i>Please note that NanoTrasen does not recommend download of software from non-official servers.</i>
{{#each data.hacked_programs}}
<ui-display title='Primary Software Repository'>
{{#each data.downloadable_programs}}
<ui-subdisplay title='{{filedesc}}'>
<div style='display: table-caption; margin-left: 3px'>{{fileinfo}}</div>
<ui-section label='File name'>
{{filename}} ({{size}} GQ)
</ui-section>
<ui-section label='Program name'>
{{filedesc}}
</ui-section>
<ui-section label='Description'>
{{fileinfo}}
<ui-section label='Compatibility'>
{{compatibility}}
</ui-section>
<ui-section label='File controls'>
<ui-button icon='signal' action='PRG_downloadfile' params='{"filename": "{{filename}}"}'>
DOWNLOAD
</ui-button>
</ui-subdisplay>
<br>
{{/each}}
</ui-display>
{{#if data.hackedavailable}}
<ui-display title='UNKNOWN Software Repository'>
<i>Please note that NanoTrasen does not recommend download of software from non-official servers.</i>
{{#each data.hacked_programs}}
<ui-subdisplay title='{{filedesc}}'>
<div style='display: table-caption; margin-left: 3px'>{{fileinfo}}</div>
<ui-section label='File name'>
{{filename}} ({{size}} GQ)
</ui-section>
<ui-section label='Compatibility'>
{{compatibility}}
</ui-section>
<ui-button icon='signal' action='PRG_downloadfile' params='{"filename": "{{filename}}"}'>
DOWNLOAD
</ui-button>
</ui-section>
</ui-subdisplay>
<br>
{{/each}}
</ui-display>
{{/if}}

View File

@@ -1,40 +1,7 @@
<link rel='ractive' href='./ntosheader.ract'>
<ntosheader/>
<ui-display>
<div style="float: left">
<div class='item'>
<table><tr>
{{#if data.PC_batteryicon && data.PC_showbatteryicon}}
<td><img src='{{data.PC_batteryicon}}'>
{{/if}}
{{#if data.PC_batterypercent && data.PC_showbatteryicon}}
<td><b>{{data.PC_batterypercent}}</b>
{{/if}}
{{#if data.PC_ntneticon}}
<td><img src='{{data.PC_ntneticon}}'>
{{/if}}
{{#if data.PC_apclinkicon}}
<td><img src='{{data.PC_apclinkicon}}'>
{{/if}}
{{#if data.PC_stationtime}}
<td><b>{{data.PC_stationtime}}<b>
{{/if}}
{{#each data.PC_programheaders}}
<td><img src='{{icon}}'>
{{/each}}
</table>
</div>
</div>
<div style="float: right">
<table><tr>
<td><ui-button action='PC_shutdown'>Shutdown</ui-button>
{{#if data.PC_showexitprogram}}
<td><ui-button action='PC_exit'>EXIT PROGRAM</ui-button>
<td><ui-button action='PC_minimize'>Minimize Program</ui-button>
{{/if}}
</table>
</div>
<div style="clear: both">
<ui-display title='WIRELESS CONNECTIVITY'>

View File

@@ -1,41 +1,8 @@
<link rel='ractive' href='./ntosheader.ract'>
<ntosheader/>
<ui-display>
<div style="float: left">
<div class='item'>
<table><tr>
{{#if data.PC_batteryicon && data.PC_showbatteryicon}}
<td><img src='{{data.PC_batteryicon}}'>
{{/if}}
{{#if data.PC_batterypercent && data.PC_showbatteryicon}}
<td><b>{{data.PC_batterypercent}}</b>
{{/if}}
{{#if data.PC_ntneticon}}
<td><img src='{{data.PC_ntneticon}}'>
{{/if}}
{{#if data.PC_apclinkicon}}
<td><img src='{{data.PC_apclinkicon}}'>
{{/if}}
{{#if data.PC_stationtime}}
<td><b>{{data.PC_stationtime}}<b>
{{/if}}
{{#each data.PC_programheaders}}
<td><img src='{{icon}}'>
{{/each}}
</table>
</div>
</div>
<div style="float: right">
<table><tr>
<td><ui-button action='PC_shutdown'>Shutdown</ui-button>
{{#if data.PC_showexitprogram}}
<td><ui-button action='PC_exit'>EXIT PROGRAM</ui-button>
<td><ui-button action='PC_minimize'>Minimize Program</ui-button>
{{/if}}
</table>
</div>
<div style="clear: both">
{{#if data.error}}
<div class='item'>
<h2>An error has occurred during operation...</h2>

View File

@@ -39,40 +39,8 @@
}
</script>
<div style="float: left">
<div class='item'>
<table><tr>
{{#if data.PC_batteryicon && data.PC_showbatteryicon}}
<td><img src='{{data.PC_batteryicon}}'>
{{/if}}
{{#if data.PC_batterypercent && data.PC_showbatteryicon}}
<td><b>{{data.PC_batterypercent}}</b>
{{/if}}
{{#if data.PC_ntneticon}}
<td><img src='{{data.PC_ntneticon}}'>
{{/if}}
{{#if data.PC_apclinkicon}}
<td><img src='{{data.PC_apclinkicon}}'>
{{/if}}
{{#if data.PC_stationtime}}
<td><b>{{data.PC_stationtime}}<b>
{{/if}}
{{#each data.PC_programheaders}}
<td><img src='{{icon}}'>
{{/each}}
</table>
</div>
</div>
<div style="float: right">
<table><tr>
<td><ui-button action='PC_shutdown'>Shutdown</ui-button>
{{#if data.PC_showexitprogram}}
<td><ui-button action='PC_exit'>EXIT PROGRAM</ui-button>
<td><ui-button action='PC_minimize'>Minimize Program</ui-button>
{{/if}}
</table>
</div>
<div style="clear: both">
<link rel='ractive' href='./ntosheader.ract'>
<ntosheader/>
<ui-display title='Network'>
{{#if config.fancy}}

View File

@@ -0,0 +1,27 @@
<link rel='ractive' href='./ntosheader.ract'>
<ntosheader/>
<ui-display>
<div class='item'>
<div class='itemLabel'>
Payload status:
</div>
<div class='itemContent'>
{{#if data.armed}}
ARMED
{{else}}
DISARMED
{{/if}}
</div>
<div class='itemLabel'>
Controls:
</div>
<div class='itemContent'>
<table>
<tr><td><ui-button action='PRG_obfuscate'>OBFUSCATE PROGRAM NAME</ui-button>
<tr><td><ui-button action='PRG_arm' state='{{data.armed ? "danger" : null}}'>{{data.armed ? "DISARM" : "ARM"}}</ui-button>
<ui-button icon='radiation' state='{{data.armed ? null : "disabled"}}' action='PRG_activate'>ACTIVATE</ui-button>
</table>
</div>
</div>
</ui-display>

View File

@@ -0,0 +1,14 @@
<link rel='ractive' href='./ntosheader.ract'>
<ntosheader/>
{{#each data.alarms:class}}
<ui-display title='{{class}} Alarms'>
<ul>
{{#each .}}
<li>{{.}}</li>
{{else}}
<li>System Nominal</li>
{{/each}}
</ul>
</ui-display>
{{/each}}

View File

@@ -0,0 +1,30 @@
<div class='item' style="float: left">
<table><tr>
{{#if data.PC_batteryicon && data.PC_showbatteryicon}}
<td><img src='{{data.PC_batteryicon}}'>
{{/if}}
{{#if data.PC_batterypercent && data.PC_showbatteryicon}}
<td><b>{{data.PC_batterypercent}}</b>
{{/if}}
{{#if data.PC_ntneticon}}
<td><img src='{{data.PC_ntneticon}}'>
{{/if}}
{{#if data.PC_apclinkicon}}
<td><img src='{{data.PC_apclinkicon}}'>
{{/if}}
{{#if data.PC_stationtime}}
<td><b>{{data.PC_stationtime}}</b>
{{/if}}
{{#each data.PC_programheaders}}
<td><img src='{{icon}}'>
{{/each}}
</table>
</div>
<div style="float: right; margin-top: 5px">
<ui-button action='PC_shutdown'>Shutdown</ui-button>
{{#if data.PC_showexitprogram}}
<ui-button action='PC_exit'>EXIT PROGRAM</ui-button>
<ui-button action='PC_minimize'>Minimize Program</ui-button>
{{/if}}
</div>
<div style="clear: both">

View File

@@ -1,60 +0,0 @@
<div style="float: left">
<div class='item'>
<table><tr>
{{#if data.PC_batteryicon && data.PC_showbatteryicon}}
<td><img src='{{data.PC_batteryicon}}'>
{{/if}}
{{#if data.PC_batterypercent && data.PC_showbatteryicon}}
<td><b>{{data.PC_batterypercent}}</b>
{{/if}}
{{#if data.PC_ntneticon}}
<td><img src='{{data.PC_ntneticon}}'>
{{/if}}
{{#if data.PC_apclinkicon}}
<td><img src='{{data.PC_apclinkicon}}'>
{{/if}}
{{#if data.PC_stationtime}}
<td><b>{{data.PC_stationtime}}<b>
{{/if}}
{{#each data.PC_programheaders}}
<td><img src='{{icon}}'>
{{/each}}
</table>
</div>
</div>
<div style="float: right">
<table><tr>
<td><ui-button action='PC_shutdown'>Shutdown</ui-button>
{{#if data.PC_showexitprogram}}
<td><ui-button action='PC_exit'>EXIT PROGRAM</ui-button>
<td><ui-button action='PC_minimize'>Minimize Program</ui-button>
{{/if}}
</table>
</div>
<div style="clear: both">
<ui-display>
<div class='item'>
<div class='itemLabel'>
Payload status:
</div>
<div class='itemContent'>
{{#if data.armed}}
ARMED
{{else}}
DISARMED
{{/if}}
</div>
<div class='itemLabel'>
Controls:
</div>
<div class='itemContent'>
<table>
<tr><td><ui-button action='PRG_obfuscate'>OBFUSCATE PROGRAM NAME</ui-button>
<tr><td><ui-button action='PRG_arm' state='{{data.armed ? "danger" : null}}'>{{data.armed ? "DISARM" : "ARM"}}</ui-button>
<ui-button icon='radiation' state='{{data.armed ? null : "disabled"}}' action='PRG_activate'>ACTIVATE</ui-button>
</table>
</div>
</div>
</ui-display>

View File

@@ -1,47 +0,0 @@
<div style="float: left">
<div class='item'>
<table><tr>
{{#if data.PC_batteryicon && data.PC_showbatteryicon}}
<td><img src='{{data.PC_batteryicon}}'>
{{/if}}
{{#if data.PC_batterypercent && data.PC_showbatteryicon}}
<td><b>{{data.PC_batterypercent}}</b>
{{/if}}
{{#if data.PC_ntneticon}}
<td><img src='{{data.PC_ntneticon}}'>
{{/if}}
{{#if data.PC_apclinkicon}}
<td><img src='{{data.PC_apclinkicon}}'>
{{/if}}
{{#if data.PC_stationtime}}
<td><b>{{data.PC_stationtime}}<b>
{{/if}}
{{#each data.PC_programheaders}}
<td><img src='{{icon}}'>
{{/each}}
</table>
</div>
</div>
<div style="float: right">
<table><tr>
<td><ui-button action='PC_shutdown'>Shutdown</ui-button>
{{#if data.PC_showexitprogram}}
<td><ui-button action='PC_exit'>EXIT PROGRAM</ui-button>
<td><ui-button action='PC_minimize'>Minimize Program</ui-button>
{{/if}}
</table>
</div>
<div style="clear: both">
{{#each data.alarms:class}}
<ui-display title='{{class}} Alarms'>
<ul>
{{#each .}}
<li>{{.}}</li>
{{else}}
<li>System Nominal</li>
{{/each}}
</ul>
</ui-display>
{{/each}}