Update NanoUI Javascript libraries, SMES UI

This commit is contained in:
Bjorn Neergaard
2015-11-27 01:13:30 -05:00
parent 6a6262d6b2
commit 83a2d64b25
13 changed files with 21464 additions and 6797 deletions
+10 -7
View File
@@ -93,8 +93,10 @@
* Add the assets required by all NanoUIs.
**/
/datum/nanoui/proc/add_common_assets()
// Libraries: jQuery, doT and timer.js
add_script("libraries.min.js")
// Libraries: jQuery, jQuery-UI, and doT.
add_script("jquery.js")
add_script("jquery-ui.js")
add_script("doT.js")
// Nano Utility: Utility functions and sanity checks.
add_script("nano_utility.js") // The NanoUtility JS, this is used to store utility functions.
// Nano Template: Renders templates using doT.
@@ -336,12 +338,12 @@
add_template("layout", "layout_[layout_key].tmpl")
// Generate <script> and <link> tags.
var/head_content = ""
var/script_html = ""
for (var/script in scripts)
head_content += "<script type='text/javascript' src='[script]'></script>"
head_content += "\n"
script_html += "<script type='text/javascript' src='[script]'></script>"
var/stylesheet_html = ""
for (var/stylesheet in stylesheets)
head_content += "<link rel='stylesheet' type='text/css' href='[stylesheet]' />"
stylesheet_html += "<link rel='stylesheet' type='text/css' href='[stylesheet]' />"
// Generate template JSON.
var/template_data_json = "{}"
@@ -369,7 +371,8 @@
}
}
</script>
[head_content]
[script_html]
[stylesheet_html]
</head>
<body scroll=auto data-template-data='[template_data_json]' data-initial-data='[initial_data_json]' data-url-parameters='[url_parameters_json]'>
<div id="uiLayout"></div>
+1 -1
View File
@@ -325,7 +325,7 @@
/obj/machinery/power/smes/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1)
SSnano.try_update_ui(user, src, ui_key, ui, force_open = force_open)
if (!ui)
ui = new(user, src, ui_key, "smes.tmpl", name, 350, 560)
ui = new(user, src, ui_key, "smes.tmpl", name, 500, 400)
ui.open()
/obj/machinery/power/smes/get_ui_data()
+7 -7
View File
@@ -9,12 +9,9 @@ body {
}
#uiNoScript {
position: fixed;
top: 50%;
left: 50%;
margin: -60px 0 0 -150px;
width: 280px;
height: 120px;
margin: 33% auto;
width: 50%;
height: 33%;
background: #ffffff;
border: 2px solid #ff0000;
color: #000000;
@@ -25,6 +22,10 @@ body {
text-align: center;
}
#uiNoScript h1 {
color: #000000;
}
hr {
background-color: #40628a;
height: 1px;
@@ -447,7 +448,6 @@ div.notice {
}
/* Used in PDA */
.wholeScreen {
position: absolute;
color: #517087;
+16617
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
-1
View File
File diff suppressed because one or more lines are too long
-2523
View File
File diff suppressed because it is too large Load Diff
-4
View File
@@ -1,4 +0,0 @@
jQuery.fn.extend({everyTime:function(c,a,d,b){return this.each(function(){jQuery.timer.add(this,c,a,d,b)})},oneTime:function(c,a,d){return this.each(function(){jQuery.timer.add(this,c,a,d,1)})},stopTime:function(c,a){return this.each(function(){jQuery.timer.remove(this,c,a)})}});
jQuery.extend({timer:{global:[],guid:1,dataKey:"jQuery.timer",regex:/^([0-9]+(?:\.[0-9]*)?)\s*(.*s)?$/,powers:{ms:1,cs:10,ds:100,s:1E3,das:1E4,hs:1E5,ks:1E6},timeParse:function(c){if(c==undefined||c==null)return null;var a=this.regex.exec(jQuery.trim(c.toString()));return a[2]?parseFloat(a[1])*(this.powers[a[2]]||1):c},add:function(c,a,d,b,e){var g=0;if(jQuery.isFunction(d)){e||(e=b);b=d;d=a}a=jQuery.timer.timeParse(a);if(!(typeof a!="number"||isNaN(a)||a<0)){if(typeof e!="number"||isNaN(e)||e<0)e=
0;e=e||0;var f=jQuery.data(c,this.dataKey)||jQuery.data(c,this.dataKey,{});f[d]||(f[d]={});b.timerID=b.timerID||this.guid++;var h=function(){if(++g>e&&e!==0||b.call(c,g)===false)jQuery.timer.remove(c,d,b)};h.timerID=b.timerID;f[d][b.timerID]||(f[d][b.timerID]=window.setInterval(h,a));this.global.push(c)}},remove:function(c,a,d){var b=jQuery.data(c,this.dataKey),e;if(b){if(a){if(b[a]){if(d){if(d.timerID){window.clearInterval(b[a][d.timerID]);delete b[a][d.timerID]}}else for(d in b[a]){window.clearInterval(b[a][d]);
delete b[a][d]}for(e in b[a])break;if(!e){e=null;delete b[a]}}}else for(a in b)this.remove(c,a,d);for(e in b)break;e||jQuery.removeData(c,this.dataKey)}}}});jQuery(window).bind("unload",function(){jQuery.each(jQuery.timer.global,function(c,a){jQuery.timer.remove(a)})});
+1 -8
View File
@@ -41,14 +41,7 @@ var NanoTemplate = function () {
$.when($.ajax({
url: _templateData[key],
cache: false,
dataType: 'text',
xhr: function() {
if ('ActiveXObject' in window) {
return new ActiveXObject("Microsoft.XMLHTTP");
} else {
return new XMLHttpRequest();
}
}
dataType: 'text'
}))
.done(function(templateMarkup) {
+16 -16
View File
@@ -4,8 +4,8 @@
Interface Lock:
</div>
<div class="itemContentFull">
{{:helper.link('Engaged', 'locked', {'toggleaccess' : 1}, data.locked ? 'selected' : null)}}
{{:helper.link('Disengaged', 'unlocked', {'toggleaccess' : 1}, data.locked ? null : 'selected')}}
{{:helper.link('Engaged', 'locked', {'toggleaccess': 1}, data.locked ? 'selected' : null)}}
{{:helper.link('Disengaged', 'unlocked', {'toggleaccess': 1}, data.locked ? null : 'selected')}}
</div>
<div class="clearBoth"></div>
{{else}}
@@ -74,38 +74,38 @@
</div>
{{if (!data.locked || data.siliconUser)}}
{{if data.screen != 1}}
<div class="item">{{:helper.link('Back', 'triangle-1-w', { 'screen' : 1})}}</div>
<div class="item">{{:helper.link('Back', 'triangle-1-w', {'screen': 1})}}</div>
{{/if}}
{{if data.screen == 1}}
<h2>Air Controls</h2>
<div class="statusDisplay">
<div class="item">
{{if !data.atmos_alarm}}
{{:helper.link('Area Atmospheric Alarm', 'power', { 'atmos_alarm' : 1}, null, null)}}
{{:helper.link('Area Atmospheric Alarm', 'power', {'atmos_alarm': 1}, null, null)}}
{{else}}
{{:helper.link('Area Atmospheric Alarm', 'close', { 'atmos_reset' : 1}, null, 'yellowButton')}}
{{:helper.link('Area Atmospheric Alarm', 'close', {'atmos_reset': 1}, null, 'yellowButton')}}
{{/if}}
</div>
<div class="item">
{{if data.mode == 3}}
{{:helper.link('Panic Siphon', 'close', { 'mode': 1}, null, 'redButton')}}
{{:helper.link('Panic Siphon', 'close', {'mode': 1}, null, 'redButton')}}
{{else}}
{{:helper.link('Panic Siphon', 'power', { 'mode': 3}, null, null)}}
{{:helper.link('Panic Siphon', 'power', {'mode': 3}, null, null)}}
{{/if}}
</div>
<br />
<div class="item">
{{:helper.link('Vent Controls', 'wrench', { 'screen' : 2})}}
{{:helper.link('Vent Controls', 'wrench', {'screen': 2})}}
</div>
<div class="item">
{{:helper.link('Scrubber Controls', 'wrench', { 'screen' : 3})}}
{{:helper.link('Scrubber Controls', 'wrench', {'screen': 3})}}
</div>
<br />
<div class="item">
{{:helper.link('Set Environmental Mode', 'pencil', { 'screen' : 4})}}
{{:helper.link('Set Environmental Mode', 'pencil', {'screen': 4})}}
</div>
<div class="item">
{{:helper.link('Set Alarm Threshold', 'pencil', { 'screen' : 5})}}
{{:helper.link('Set Alarm Threshold', 'pencil', {'screen': 5})}}
</div>
</div>
{{else data.screen == 2}}
@@ -142,8 +142,8 @@
Pressure Checks:
</div>
<div class="itemContent">
{{:helper.link('External', 'arrow-1-n', { 'id_tag' : vent.id_tag, 'command' : 'excheck', 'val' : vent.checks}, null, vent.excheck ? 'selected' : null)}}
{{:helper.link('Internal', 'arrow-1-s', { 'id_tag' : vent.id_tag, 'command' : 'incheck', 'val' : vent.checks}, null, vent.incheck ? 'selected' : null)}}
{{:helper.link('External', 'arrow-1-n', {'id_tag': vent.id_tag, 'command': 'excheck', 'val': vent.checks}, null, vent.excheck ? 'selected' : null)}}
{{:helper.link('Internal', 'arrow-1-s', {'id_tag': vent.id_tag, 'command': 'incheck', 'val': vent.checks}, null, vent.incheck ? 'selected' : null)}}
</div>
</div>
<div class="item">
@@ -151,8 +151,8 @@
Set Pressure:
</div>
<div class="itemContent">
{{:helper.link(helper.round(vent.external*100)/100, 'pencil', { 'id_tag' : vent.id_tag, 'command' : 'set_external_pressure'})}}
{{:helper.link('Reset', 'refresh', { 'id_tag' : vent.id_tag, 'command' : 'reset_external_pressure'})}}
{{:helper.link(helper.round(vent.external*100)/100, 'pencil', {'id_tag': vent.id_tag, 'command': 'set_external_pressure'})}}
{{:helper.link('Reset', 'refresh', { 'id_tag': vent.id_tag, 'command': 'reset_external_pressure'})}}
</div>
</div>
</div>
@@ -221,7 +221,7 @@
<div class="statusDisplay">
{{for data.modes :mode:i}}
<div class="item">
{{:helper.link(mode.name, mode.selected? 'check' : 'close', { 'mode': mode.mode }, null, mode.selected ? (mode.danger ? 'redButton' : 'selected') : (mode.danger ? 'yellowButton' : null))}}
{{:helper.link(mode.name, mode.selected? 'check' : 'close', {'mode': mode.mode}, null, mode.selected ? (mode.danger ? 'redButton' : 'selected') : (mode.danger ? 'yellowButton' : null))}}
</div>
{{/for}}
</div>
+79 -128
View File
@@ -1,149 +1,100 @@
<center>
<div class="item">
<div class="itemLabel">
Capacity
</div>
<div class="itemContent" style="text-align:right">
{{:helper.round(data.capacity)}} W
</div>
</div>
<div class="item">
<div class="itemLabel">
Total Charge
</div>
<div class="itemContent" style="text-align:right">
{{:helper.round(data.charge)}} W
</div>
</div>
<div class="item" style="text-align:right">
<div class="itemLabel">
{{:helper.displayBar(data.capacityPercent, 0, 100, data.capacityPercent >= 50 ? 'good' : data.capacityPercent >= 15 ? 'average' : 'bad')}}
</div>
<div class="itemContent">
{{:helper.round(data.capacityPercent*10)/10}}%
</div>
</div>
</center>
<h2>Storage</h2>
<div class="statusDisplay">
<div class = "line"><h3>
<div class="statusLabel">
Input:
{{:helper.link('On', 'power', {'input_attempt' : 1}, data.inputAttempt ? 'selected' : null)}}
{{:helper.link('Off', 'close', {'input_attempt' : 0}, data.inputAttempt == 0 ? 'selected' : null)}}
</div>
<div class = "statusValue">
{{if data.capacityPercent >= 99}}
<span class="good">Fully Charged</span>
{{else data.inputting}}
<span class="good">Charging</span>
{{else}}
<span class="bad">Not Charging</span>
{{/if}}
</div>
</div></h3>
</div>
<div style="text-align:center">
{{:helper.link('0', 'seek-start', {'set_input_level' : '0'}, data.inputLevel == 0 ? 'selected' : null)}}
{{:helper.link('', 'triangle-1-w', {'set_input_level' : 'minus'}, data.inputLevel == 0 ? 'disabled' : null)}}
{{:helper.link('Change', 'gear', {'set_input_level' : 'custom'}, null)}}
{{:helper.link('', 'triangle-1-e', {'set_input_level' : 'plus'}, data.inputLevel == data.inputLevelMax ? 'disabled' : null)}}
{{:helper.link('Maximize', 'seek-end', {'set_input_level' : 'max'}, data.inputLevel == data.inputLevelMax ? 'selected' : null)}}
<div class="item">
<div class="itemLabel">
Available
Stored Energy:
</div>
<div class = "itemContent" style="text-align:right">
{{if data.inputAvailable > data.inputLevel}}
<span class="good">
{{else}}
<span class="bad">
{{/if}}
{{:helper.round(data.inputAvailable)}}</span> W
</div>
</div>
<div class = "item">
<div class = "itemLabel">
Setting
</div>
<div class = "itemContent" style="text-align:right">
{{if data.inputLevel > data.outputLevel}}
<span class="good">
{{else data.inputLevel == data.outputLevel}}
<span class="average">
{{else}}
<span class = "bad">
{{/if}}
{{:helper.round(data.inputLevel)}}</span> W
</div>
</div>
<div class = "item">
<div class = "itemLabel">
Max
</div>
<div class = "itemContent" style="text-align:right">
<span class = "good">{{:helper.round(data.inputLevelMax)}}</span> W
<div class="itemContent">
{{:helper.displayBar(data.capacityPercent, 0, 100, data.capacityPercent >= 50 ? 'good' : data.capacityPercent >= 15 ? 'average' : 'bad')}}
<div class="statusValue">
{{:helper.round(data.capacityPercent)}}%
</div>
</div>
</div>
</div>
<br>
<h2>Input</h2>
<div class="statusDisplay">
<div class = "line"><h3>
<div class="statusLabel">
Output:
{{:helper.link('On', 'power', {'output_attempt' : 1}, data.outputAttempt ? 'selected' : null)}}
{{:helper.link('Off', 'close', {'output_attempt' : 0}, data.outputAttempt == 0 ? 'selected' : null)}}
</div>
<div class = "statusValue" style="text-align:center">
{{if data.outputting}}
<span class="good">Sending Ouput</span>
{{else data.charge > 0}}
<span class="average">Not Sending Output</span>
{{else}}
<span class="bad">No Charge to Output</span>
{{/if}}
</div>
</div></h3>
</div>
<div style="text-align:center">
{{:helper.link('0', 'seek-start', {'set_output_level' : '0'}, data.outputLevel == 0 ? 'selected' : null)}}
{{:helper.link('', 'triangle-1-w', {'set_output_level' : 'minus'}, data.outputLevel == 0 ? 'disabled' : null)}}
{{:helper.link('Change', 'gear', {'set_output_level' : 'custom'}, null)}}
{{:helper.link('', 'triangle-1-e', {'set_output_level' : 'plus'}, data.outputLevel == data.outputLevelMax ? 'disabled' : null)}}
{{:helper.link('Maximize', 'seek-end', {'set_output_level' : 'max'}, data.outputLevel == data.outputLevelMax ? 'selected' : null)}}
<div class = "item">
<div class="item">
<div class="itemLabel">
Used
Charge Mode:
</div>
<div class = "itemContent" style="text-align:right">
{{if data.outputUsed >= data.outputLevel}}
<span class="bad">
<div class="itemContent">
{{:helper.link('Auto', 'refresh', {'input_attempt': 1}, data.inputAttempt ? 'selected' : null)}}
{{:helper.link('Off', 'close', {'input_attempt': 0}, data.inputAttempt ? null : 'selected')}}
&nbsp;
{{if data.capacityPercent >= 99}}
[<span class='good'>Fully Charged</span>]
{{else data.inputting}}
[<span class='average'>Charging</span>]
{{else}}
<span class="good">
[<span class='bad'>Not Charging</span>]
{{/if}}
{{:helper.round(data.outputUsed)}}</span> W
</div>
</div>
<div class = "item">
<div class = "itemLabel">
Setting
<div class="item">
<div class="itemLabel">
Input Setting:
</div>
<div class = "itemContent" style="text-align:right">
{{if data.inputLevel > data.outputLevel}}
<span class="good">
{{else data.inputLevel == data.outputLevel}}
<span class="average">
{{else}}
<span class = "bad">
{{/if}}
{{:helper.round(data.outputLevel)}}</span> W
<div class="itemContent">
{{:helper.displayBar(data.inputLevel, 0, data.inputLevelMax)}}
&nbsp;{{:data.inputLevel}} W
<br class="clearBoth" />
{{:helper.link('', 'seek-start', {'set_input_level': '0'}, data.inputLevel ? null : 'selected')}}
{{:helper.link('', 'triangle-1-w', {'set_input_level': 'minus'}, data.inputLevel ? null : 'disabled')}}
{{:helper.link('Set', 'pencil', {'set_input_level': 'custom'}, null)}}
{{:helper.link('', 'triangle-1-e', {'set_input_level': 'plus'}, data.inputLevel == data.inputLevelMax ? 'disabled' : null)}}
{{:helper.link('', 'seek-end', {'set_input_level': 'max'}, data.inputLevel == data.inputLevelMax ? 'selected' : null)}}
</div>
</div>
<div class = "item">
<div class = "itemLabel">
Max
<div class="item">
<div class="itemLabel">
Charging:
</div>
<div class = "itemContent" style="text-align:right">
<span class = "good">{{:helper.round(data.outputLevelMax)}}</span> W
<div class="itemContent">
{{:data.inputAvailable}} W
</div>
</div>
</div>
<h2>Output</h2>
<div class="statusDisplay">
<div class="item">
<div class="itemLabel">
Charge Mode:
</div>
<div class="itemContent">
{{:helper.link('On', 'power', {'output_attempt': 1}, data.outputAttempt ? 'selected' : null)}}
{{:helper.link('Off', 'close', {'output_attempt': 0}, data.outputAttempt ? null : 'selected')}}
&nbsp;
{{if data.outputting}}
[<span class="good">Sending</span>]
{{else data.charge > 0}}
[<span class="average">Not Sending</span>]
{{else}}
[<span class="bad">No Charge</span>]
{{/if}}
</div>
</div>
<div class="item">
<div class="itemLabel">
Output Setting:
</div>
<div class="itemContent">
{{:helper.displayBar(data.outputLevel, 0, data.outputLevelMax)}}
&nbsp;{{:data.outputLevel}} W
<br class="clearBoth" />
{{:helper.link('', 'seek-start', {'set_output_level': '0'}, data.outputLevel ? null : 'selected')}}
{{:helper.link('', 'triangle-1-w', {'set_output_level': 'minus'}, data.outputLevel ? null : 'disabled')}}
{{:helper.link('Set', 'pencil', {'set_output_level': 'custom'}, null)}}
{{:helper.link('', 'triangle-1-e', {'set_output_level': 'plus'}, data.outputLevel == data.outputLevelMax ? 'disabled' : null)}}
{{:helper.link('', 'seek-end', {'set_output_level': 'max'}, data.outputLevel == data.outputLevelMax ? 'selected' : null)}}
</div>
</div>
<div class="item">
<div class="itemLabel">
Sending:
</div>
<div class="itemContent">
{{:data.outputUsed}} W
</div>
</div>
</div>
-71
View File
@@ -6,77 +6,6 @@
// BEGIN_FILE_DIR
#define FILE_DIR .
#define FILE_DIR "code"
#define FILE_DIR "code/modules"
#define FILE_DIR "code/modules/games"
#define FILE_DIR "code/modules/html_interface"
#define FILE_DIR "code/modules/html_interface/cards"
#define FILE_DIR "code/modules/html_interface/nanotrasen"
#define FILE_DIR "data"
#define FILE_DIR "data/minimaps"
#define FILE_DIR "html"
#define FILE_DIR "icons"
#define FILE_DIR "icons/ass"
#define FILE_DIR "icons/effects"
#define FILE_DIR "icons/mecha"
#define FILE_DIR "icons/misc"
#define FILE_DIR "icons/mob"
#define FILE_DIR "icons/mob/inhands"
#define FILE_DIR "icons/mob/large-worn-icons"
#define FILE_DIR "icons/mob/large-worn-icons/64x64"
#define FILE_DIR "icons/obj"
#define FILE_DIR "icons/obj/assemblies"
#define FILE_DIR "icons/obj/atmospherics"
#define FILE_DIR "icons/obj/atmospherics/components"
#define FILE_DIR "icons/obj/atmospherics/pipes"
#define FILE_DIR "icons/obj/clothing"
#define FILE_DIR "icons/obj/doors"
#define FILE_DIR "icons/obj/doors/airlocks"
#define FILE_DIR "icons/obj/doors/airlocks/centcom"
#define FILE_DIR "icons/obj/doors/airlocks/external"
#define FILE_DIR "icons/obj/doors/airlocks/glass_large"
#define FILE_DIR "icons/obj/doors/airlocks/hatch"
#define FILE_DIR "icons/obj/doors/airlocks/highsec"
#define FILE_DIR "icons/obj/doors/airlocks/shuttle"
#define FILE_DIR "icons/obj/doors/airlocks/station"
#define FILE_DIR "icons/obj/doors/airlocks/station2"
#define FILE_DIR "icons/obj/doors/airlocks/vault"
#define FILE_DIR "icons/obj/flora"
#define FILE_DIR "icons/obj/food"
#define FILE_DIR "icons/obj/guns"
#define FILE_DIR "icons/obj/hydroponics"
#define FILE_DIR "icons/obj/machines"
#define FILE_DIR "icons/obj/power_cond"
#define FILE_DIR "icons/obj/smooth_structures"
#define FILE_DIR "icons/obj/smooth_structures/alien"
#define FILE_DIR "icons/pda_icons"
#define FILE_DIR "icons/stamp_icons"
#define FILE_DIR "icons/Testing"
#define FILE_DIR "icons/turf"
#define FILE_DIR "icons/turf/floors"
#define FILE_DIR "icons/turf/walls"
#define FILE_DIR "icons/vending_icons"
#define FILE_DIR "nano"
#define FILE_DIR "nano/images"
#define FILE_DIR "sound"
#define FILE_DIR "sound/AI"
#define FILE_DIR "sound/ambience"
#define FILE_DIR "sound/arcade"
#define FILE_DIR "sound/effects"
#define FILE_DIR "sound/guitar"
#define FILE_DIR "sound/hallucinations"
#define FILE_DIR "sound/items"
#define FILE_DIR "sound/machines"
#define FILE_DIR "sound/magic"
#define FILE_DIR "sound/mecha"
#define FILE_DIR "sound/misc"
#define FILE_DIR "sound/piano"
#define FILE_DIR "sound/spookoween"
#define FILE_DIR "sound/violin"
#define FILE_DIR "sound/voice"
#define FILE_DIR "sound/voice/complionator"
#define FILE_DIR "sound/vox_fem"
#define FILE_DIR "sound/weapons"
// END_FILE_DIR
// BEGIN_PREFERENCES