Skip to content

Commit 2d98f9b

Browse files
authored
View Variables improvements (ParadiseSS13#28491)
* wow * matrix * remove this * changes to css
1 parent 7fa755a commit 2d98f9b

File tree

4 files changed

+112
-51
lines changed

4 files changed

+112
-51
lines changed

code/datums/datumvars.dm

+59-51
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,8 @@
112112
if(!D)
113113
return
114114

115+
var/datum/asset/asset_cache_datum = get_asset_datum(/datum/asset/simple/vv)
116+
asset_cache_datum.send(usr)
115117

116118
var/islist = islist(D)
117119
var/isclient = isclient(D)
@@ -249,28 +251,10 @@
249251

250252
var/html = {"
251253
<html>
252-
<meta charset="UTF-8">
253254
<head>
255+
<meta charset="UTF-8">
254256
<title>[title]</title>
255-
<style>
256-
body {
257-
font-family: Verdana, sans-serif;
258-
font-size: 9pt;
259-
}
260-
.value {
261-
font-family: "Courier New", monospace;
262-
font-size: 8pt;
263-
}
264-
.var {
265-
display: none;
266-
}
267-
.var.visible {
268-
display: list-item;
269-
}
270-
.var.selected {
271-
background-color: "#ffee88";
272-
}
273-
</style>
257+
<link rel="stylesheet" type="text/css" href="[SSassets.transport.get_asset_url("view_variables.css")]">
274258
</head>
275259
<body onload='selectTextField(); updateSearch()' onkeydown='return checkreload()' onkeyup='updateSearch()'>
276260
<script type="text/javascript">
@@ -472,58 +456,73 @@
472456
usr << browse(html, "window=variables[refid];size=475x650")
473457

474458
#define VV_HTML_ENCODE(thing) ( sanitize ? html_encode(thing) : thing )
475-
/proc/debug_variable(name, value, level, datum/DA = null, sanitize = TRUE)
459+
/proc/debug_variable(name, value, level, datum/owner, sanitize = TRUE)
476460
var/header
477-
if(DA)
478-
if(islist(DA))
479-
var/list/debug_list = DA
461+
if(owner)
462+
if(islist(owner))
463+
var/list/debug_list = owner
480464
var/index = name
481465
if(value)
482466
name = debug_list[name] // name is really the index until this line
483467
else
484468
value = debug_list[name]
485-
header = "<li class='vars visible'>(<a href='byond://?_src_=vars;listedit=\ref[DA];index=[index]'>E</a>) (<a href='byond://?_src_=vars;listchange=\ref[DA];index=[index]'>C</a>) (<a href='byond://?_src_=vars;listremove=\ref[DA];index=[index]'>-</a>) "
469+
header = "<li class='vars visible'>(<a href='byond://?_src_=vars;listedit=\ref[owner];index=[index]'>E</a>) (<a href='byond://?_src_=vars;listchange=\ref[owner];index=[index]'>C</a>) (<a href='byond://?_src_=vars;listremove=\ref[owner];index=[index]'>-</a>) "
486470
else
487-
header = "<li class='vars visible'>(<a href='byond://?_src_=vars;datumedit=[DA.UID()];varnameedit=[name]'>E</a>) (<a href='byond://?_src_=vars;datumchange=[DA.UID()];varnamechange=[name]'>C</a>) (<a href='byond://?_src_=vars;datummass=[DA.UID()];varnamemass=[name]'>M</a>) "
471+
header = "<li class='vars visible'>(<a href='byond://?_src_=vars;datumedit=[owner.UID()];varnameedit=[name]'>E</a>) (<a href='byond://?_src_=vars;datumchange=[owner.UID()];varnamechange=[name]'>C</a>) (<a href='byond://?_src_=vars;datummass=[owner.UID()];varnamemass=[name]'>M</a>) "
488472
else
489473
header = "<li>"
490474

491-
var/item
475+
var/name_part = VV_HTML_ENCODE(name)
476+
if(level > 0 || islist(owner)) //handling keys in assoc lists
477+
if(isdatum(name))
478+
var/datum/datum_key = name
479+
name_part = "<a href='byond://?_src_=vars;Vars=[datum_key.UID()]'>[VV_HTML_ENCODE(name)] \ref[datum_key]</a>"
480+
else if(isclient(name))
481+
var/client/client_key = name
482+
name_part = "<a href='byond://?_src_=vars;Vars=[client_key.UID()]'>[VV_HTML_ENCODE(client_key)] \ref[client_key]</a> ([client_key] [client_key.type])"
483+
else if(islist(name))
484+
var/list/list_value = name
485+
name_part = "<a href='byond://?_src_=vars;VarsList=\ref[list_value]'> /list ([length(list_value)]) \ref[name]</a>"
486+
487+
var/item = _debug_variable_value(name, value, level, owner, sanitize)
488+
489+
return "[header][name_part] = [item]</li>"
490+
491+
/proc/_debug_variable_value(name, value, level, datum/owner, sanitize)
492+
493+
. = "<font color='red'>DISPLAY_ERROR:</font> ([value] \ref[value]s)"
494+
492495
if(isnull(value))
493-
item = "[VV_HTML_ENCODE(name)] = <span class='value'>null</span>"
496+
return "<span class='value'>null</span>"
494497

495498
else if(is_color_text(value))
496-
item = "[VV_HTML_ENCODE(name)] = <span class='value'><span class='colorbox' style='width: 1em; background-color: [value]; border: 1px solid black; display: inline-block'>&nbsp;</span> \"[value]\"</span>"
499+
return "<span class='value'><span class='colorbox' style='width: 1em; background-color: [value]; border: 1px solid black; display: inline-block'>&nbsp;</span> \"[value]\"</span>"
497500

498501
else if(istext(value))
499-
item = "[VV_HTML_ENCODE(name)] = <span class='value'>\"[VV_HTML_ENCODE(value)]\"</span>"
502+
return "<span class='value'>\"[VV_HTML_ENCODE(value)]\"</span>"
500503

501504
else if(isicon(value))
502505
#ifdef VARSICON
503-
item = "[name] = /icon (<span class='value'>[value]</span>) [bicon(value, use_class=0)]"
506+
return "/icon (<span class='value'>[value]</span>) [bicon(value, use_class=0)]"
504507
#else
505-
item = "[name] = /icon (<span class='value'>[value]</span>)"
508+
return "/icon (<span class='value'>[value]</span>)"
506509
#endif
507510

508511
else if(istype(value, /image))
509512
var/image/I = value
510513
#ifdef VARSICON
511-
item = "<a href='byond://?_src_=vars;Vars=[I.UID()]'>[name] \ref[value]</a> = /image (<span class='value'>[value]</span>) [bicon(value, use_class=0)]"
514+
return "<a href='byond://?_src_=vars;Vars=[I.UID()]'>[name] \ref[value]</a> /image (<span class='value'>[value]</span>) [bicon(value, use_class=0)]"
512515
#else
513-
item = "<a href='byond://?_src_=vars;Vars=[I.UID()]'>[name] \ref[value]</a> = /image (<span class='value'>[value]</span>)"
516+
return "<a href='byond://?_src_=vars;Vars=[I.UID()]'>[name] \ref[value]</a> /image (<span class='value'>[value]</span>)"
514517
#endif
515518

516519
else if(isfile(value))
517-
item = "[VV_HTML_ENCODE(name)] = <span class='value'>'[value]'</span>"
520+
return "<span class='value'>'[value]'</span>"
518521

519522
else if(istype(value, /datum))
520523
var/datum/D = value
521-
item = "<a href='byond://?_src_=vars;Vars=[D.UID()]'>[VV_HTML_ENCODE(name)] \ref[value]</a> = [D.type]"
524+
return D.debug_variable_value(sanitize)
522525

523-
else if(isclient(value))
524-
var/client/C = value
525-
item = "<a href='byond://?_src_=vars;Vars=[C.UID()]'>[VV_HTML_ENCODE(name)] \ref[value]</a> = [C] [C.type]"
526-
//
527526
else if(islist(value))
528527
var/list/L = value
529528
var/list/items = list()
@@ -540,22 +539,29 @@
540539

541540
items += debug_variable(key, val, level + 1, sanitize = sanitize)
542541

543-
if(isdatum(name))
544-
item = "<a href='byond://?_src_=vars;VarsList=\ref[name]'>[VV_HTML_ENCODE(name)]</a> = <a href='byond://?_src_=vars;VarsList=\ref[L]'>/list ([length(L)])</a><ul>[items.Join()]</ul>"
545-
else
546-
item = "<a href='byond://?_src_=vars;VarsList=\ref[L]'>[VV_HTML_ENCODE(name)] = /list ([length(L)])</a><ul>[items.Join()]</ul>"
542+
return "<a href='byond://?_src_=vars;VarsList=\ref[L]'>/list ([length(L)])</a><ul>[items.Join()]</ul>"
547543

548544
else
549-
item = "<a href='byond://?_src_=vars;VarsList=\ref[L]'>[VV_HTML_ENCODE(name)] = /list ([length(L)])</a>"
545+
return "<a href='byond://?_src_=vars;VarsList=\ref[L]'>/list ([length(L)])</a>"
550546

551547
else if(name in GLOB.bitfields)
552-
item = "[VV_HTML_ENCODE(name)] = <span class='value'>[VV_HTML_ENCODE(translate_bitfield(VV_BITFIELD, name, value))]</span>"
548+
return "<span class='value'>[VV_HTML_ENCODE(translate_bitfield(VV_BITFIELD, name, value))]</span>"
553549
else
554-
item = "[VV_HTML_ENCODE(name)] = <span class='value'>[VV_HTML_ENCODE(value)]</span>"
555-
556-
return "[header][item]</li>"
557-
558-
#undef VV_HTML_ENCODE
550+
return "<span class='value'>[VV_HTML_ENCODE(value)]</span>"
551+
552+
/datum/proc/debug_variable_value(sanitize)
553+
return "<a href='byond://?_src_=vars;Vars=[UID()]'>[VV_HTML_ENCODE(src)] \ref[src]</a> ([type])"
554+
555+
/matrix/debug_variable_value(sanitize)
556+
return {"<span class='value'>
557+
<table class='matrixbrak'><tbody><tr><td class='lbrak'>&nbsp;</td><td>
558+
<table class='matrix'>
559+
<tbody>
560+
<tr><td>[a]</td><td>[d]</td><td>0</td></tr>
561+
<tr><td>[b]</td><td>[e]</td><td>0</td></tr>
562+
<tr><td>[c]</td><td>[f]</td><td>1</td></tr>
563+
</tbody>
564+
</table></td><td class='rbrak'>&nbsp;</td></tr></tbody></table></span>"} //TODO link to modify_transform wrapper for all matrices
559565

560566
/client/proc/view_var_Topic(href, href_list, hsrc)
561567
//This should all be moved over to datum/admins/Topic() or something ~Carn
@@ -1478,3 +1484,5 @@
14781484
to_chat(src, "<span class='debug'>Now showing GLOB.[var_search].</span>")
14791485
return debug_variables(result)
14801486
to_chat(src, "<span class='debug'>GLOB.[var_search] returned [result].</span>")
1487+
1488+
#undef VV_HTML_ENCODE
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
/datum/asset/simple/vv
2+
assets = list(
3+
"view_variables.css" = 'html/admin/view_variables.css'
4+
)

html/admin/view_variables.css

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
body {
2+
font-family: Verdana, sans-serif;
3+
font-size: 9pt;
4+
}
5+
.value {
6+
font-family: "Courier New", monospace;
7+
font-size: 8pt;
8+
display: inline-block;
9+
}
10+
11+
.var {
12+
display: none;
13+
}
14+
15+
.var.visible {
16+
display: list-item;
17+
}
18+
19+
.var.selected {
20+
background-color: "#ffee88";
21+
}
22+
table.matrix {
23+
border-collapse: collapse; border-spacing: 0;
24+
font-size: 7pt;
25+
}
26+
.matrix td{
27+
text-align: center;
28+
padding: 0 1ex 0ex 1ex;
29+
}
30+
table.matrixbrak {
31+
border-collapse: collapse; border-spacing: 0;
32+
}
33+
table.matrixbrak td.lbrak {
34+
width: 0.8ex;
35+
font-size: 50%;
36+
border-top: solid 0.25ex black;
37+
border-bottom: solid 0.25ex black;
38+
border-left: solid 0.5ex black;
39+
border-right: none;
40+
}
41+
table.matrixbrak td.rbrak {
42+
width: 0.8ex;
43+
font-size: 50%;
44+
border-top: solid 0.25ex black;
45+
border-bottom: solid 0.25ex black;
46+
border-right: solid 0.5ex black;
47+
border-left: none;
48+
}

paradise.dme

+1
Original file line numberDiff line numberDiff line change
@@ -1661,6 +1661,7 @@
16611661
#include "code\modules\asset_cache\assets\asset_safe.dm"
16621662
#include "code\modules\asset_cache\assets\asset_strip.dm"
16631663
#include "code\modules\asset_cache\assets\asset_tgui.dm"
1664+
#include "code\modules\asset_cache\assets\asset_vv.dm"
16641665
#include "code\modules\asset_cache\transports\asset_transport.dm"
16651666
#include "code\modules\asset_cache\transports\webroot_transport.dm"
16661667
#include "code\modules\atmospherics\environmental\LINDA_fire.dm"

0 commit comments

Comments
 (0)