Skip to content

Commit a73ee3e

Browse files
committed
table enhancements
1 parent 3fc342e commit a73ee3e

2 files changed

Lines changed: 72 additions & 33 deletions

File tree

src/js/LogDumper.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,7 @@ var logDumper = (function($, module) {
410410
$node.closest(".m_group").prev().removeClass("empty");
411411
}
412412
} catch (err) {
413+
console.warn(err);
413414
module.outputLogEntry('error', [
414415
btoa("%cDebugWampClient: %cerror processing %c"+method+"()"),
415416
btoa("font-weight:bold;"),

src/js/MethodTable.js

Lines changed: 71 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
var logDumper = (function($, module){
22

3+
var colClasses = {};
4+
35
module.methodTable = function (rows, caption, columns, classname) {
46
// console.log('methodTable', rows);
57
var classAndInner,
68
haveObj = false,
7-
keyi,
8-
keys = rows['__debug_key_order__'] || Object.keys(rows),
9-
key,
10-
colKeys = columns.length ? columns : getTableKeys(rows),
9+
i, i2,
10+
rowKeys = [],
11+
rowKey,
12+
colKeys = [],
13+
colKey,
1114
rowLength,
1215
colLength,
1316
row,
@@ -16,33 +19,48 @@ var logDumper = (function($, module){
1619
if (classname === undefined) {
1720
classname = "table-bordered";
1821
}
19-
delete rows['__debug_key_order__'];
2022
$table = $('<table><caption>'+caption.escapeHtml()+'</caption><thead><tr><th>&nbsp;</th></tr></thead></table>')
2123
.addClass(classname);
22-
for (keyi = 0, colLength = colKeys.length; keyi < colLength; keyi++) {
23-
var val = colKeys[keyi];
24-
if (val === '') {
25-
val = 'value';
24+
if (isAbstraction(rows)) {
25+
if (atob(rows.type) == "object") {
26+
$table.find('caption').append(' ' + module.markupClassname(atob(rows.className)));
27+
}
28+
if (Object.keys(rows.traverseValues).length) {
29+
rows = rows.traverseValues;
30+
}
31+
}
32+
rowKeys = rows['__debug_key_order__'] || Object.keys(rows);
33+
colKeys = columns.length ? columns : getTableKeys(rows);
34+
35+
colClasses = {};
36+
for (i = 0, colLength = colKeys.length; i < colLength; i++) {
37+
colKey = colKeys[i];
38+
if (colKey === '') {
39+
colKey = 'value';
2640
}
27-
$table.find('thead tr').append('<th scope="col">'+module.dump(val, true, false, false)+'</th>');
41+
colClasses[colKey] = null;
42+
$table.find('thead tr').append(
43+
'<th scope="col">'+module.dump(colKey, true, false, false)+'</th>'
44+
);
2845
}
29-
for (keyi = 0, rowLength = keys.length; keyi < rowLength; keyi++) {
30-
key = keys[keyi];
31-
row = rows[key];
46+
delete rows['__debug_key_order__'];
47+
for (i = 0, rowLength = rowKeys.length; i < rowLength; i++) {
48+
rowKey = rowKeys[i];
49+
row = rows[rowKey];
3250
if (columns.length > 0) {
3351
// getTableKeys not called... need to base64decode
3452
module.base64DecodeObj(row);
3553
}
3654
// using for in, so every key will be a string
3755
// check if actually an integer
38-
if (typeof key == "string" && key.match(/^\d+$/) && Number.isSafeInteger(key)) {
39-
key = parseInt(key, 10);
56+
if (typeof rowKey == "string" && rowKey.match(/^\d+$/) && Number.isSafeInteger(rowKey)) {
57+
rowKey = parseInt(rowKey, 10);
4058
}
4159
// console.log('row', row);
42-
classAndInner = parseAttribString(module.dump(key, true, true, false));
43-
classname = /^\d+$/.test(key) ? 't_int' : classAndInner.lass;
60+
classAndInner = parseAttribString(module.dump(rowKey, true, true, false));
61+
classname = /^\d+$/.test(rowKey) ? 't_int' : classAndInner.class;
4462
$tr = $('<tr><th scope="row" class="t_key '+classname+'">'+classAndInner.innerhtml+'</th></tr>');
45-
if (row.debug == module.ABSTRACTION && row.type == "object") {
63+
if (isAbstraction(row) && row.type == "object") {
4664
var isStringified = row.stringified && row.stringified.length || typeof row.methods.__toString !== "undefined";
4765
if (!isStringified && row.className != 'Closure') {
4866
haveObj = true;
@@ -52,29 +70,47 @@ var logDumper = (function($, module){
5270
}
5371
}
5472
values = getValues(row, colKeys);
55-
for (vali = 0, colLength = values.length; vali < colLength; vali++) {
56-
// key = colKeys[keyi];
57-
classAndInner = parseAttribString(module.dump(values[vali], true));
73+
for (i2 = 0, colLength = values.length; i2 < colLength; i2++) {
74+
classAndInner = parseAttribString(module.dump(values[i2], true));
5875
$tr.append('<td class="'+classAndInner.class+'">'+classAndInner.innerhtml+'</td>');
5976
}
6077
$table.append($tr);
6178
}
79+
for (colKey in colClasses) {
80+
if (!colClasses[colKey]) {
81+
continue;
82+
}
83+
$table.find('thead tr th').each(function(){
84+
if ($(this).text() === colKey) {
85+
var classname = atob(colClasses[colKey]);
86+
$(this).append(' '+module.markupClassname(classname));
87+
return false;
88+
}
89+
});
90+
}
6291
if (haveObj) {
6392
$table.find('thead tr > *').eq(0).after("<th>&nbsp;</th>");
6493
}
6594
return $table;
6695
};
6796

97+
function isAbstraction(val) {
98+
return val
99+
&& typeof val == "object"
100+
&& typeof val.debug == "string"
101+
&& (val.debug === module.ABSTRACTION || atob(val.debug) === module.ABSTRACTION) ;
102+
}
103+
68104
function getTableKeys(obj) {
69105
var i, key,
70-
isAbstraction,
106+
isAbs,
71107
keys = [],
72108
row = {};
73109
delete obj['__debug_key_order__'];
74110
for (i in obj) {
75111
row = obj[i];
76-
isAbstraction = typeof row == "object" && typeof row.debug == "string" && atob(row.debug) == module.ABSTRACTION;
77-
if (isAbstraction) {
112+
isAbs = isAbstraction(row);
113+
if (isAbs) {
78114
// abstraction
79115
module.base64DecodeObj(row);
80116
if (row.type == "object") {
@@ -113,16 +149,10 @@ var logDumper = (function($, module){
113149
}
114150

115151
function getValues(row, keys) {
116-
/*
117-
var isAbstraction = typeof row == "object" &&
118-
(row.debug === module.ABSTRACTION || atob(row.debug) == module.ABSTRACTION);
119-
var rowIsObject = rowIsAbstraction && (row.type == "object" || atob(row.type) == "object");
120-
*/
121-
// var type = module.getType(row);
122-
var isAbstraction = typeof row.debug == "string" && row.debug == module.ABSTRACTION;
123-
var type = isAbstraction ? row.type : "array";
152+
var isAbs = isAbstraction(row);
153+
var type = isAbs ? row.type : "array";
124154
var i, k, length, info, values = [], value;
125-
if (isAbstraction) {
155+
if (isAbs) {
126156
if (type == "object") {
127157
if (typeof row.traverseValues && Object.keys(row.traverseValues).length) {
128158
row = row.traverseValues;
@@ -160,10 +190,18 @@ var logDumper = (function($, module){
160190
: module.UNDEFINED;
161191
if (module.getType(value) == "object") {
162192
if (value.stringified && value.stringified.length) {
193+
colClasses[k] = colClasses[k] === null || colClasses[k] == value.className
194+
? value.className
195+
: false;
163196
value = value.stringified;
164197
} else if (typeof value.methods.__toString !== "undefined") {
198+
colClasses[k] = colClasses[k] === null || colClasses[k] == value.className
199+
? value.className
200+
: false;
165201
value = value.methods.__toString.returnValue;
166202
}
203+
} else if (value !== module.UNDEFINED && value !== null) {
204+
colClasses[k] = false;
167205
}
168206
values.push(value);
169207
}

0 commit comments

Comments
 (0)