Commit 23ffb9c3 authored by yann300's avatar yann300

don't use treeview properties

parent 120b95b0
...@@ -4,7 +4,6 @@ var BN = require('ethereumjs-util').BN ...@@ -4,7 +4,6 @@ var BN = require('ethereumjs-util').BN
module.exports = { module.exports = {
formatData: formatData, formatData: formatData,
extractProperties: extractProperties,
extractData: extractData extractData: extractData
} }
...@@ -17,28 +16,29 @@ function formatData (key, data) { ...@@ -17,28 +16,29 @@ function formatData (key, data) {
return yo`<label style=${keyStyle}>${key}: <label style=${style}>${data.self}</label><label style='font-style:italic'> ${data.isProperty ? '' : data.type}</label></label>` return yo`<label style=${keyStyle}>${key}: <label style=${style}>${data.self}</label><label style='font-style:italic'> ${data.isProperty ? '' : data.type}</label></label>`
} }
function extractProperties (data, parent, key) { function extractData (item, parent, key) {
var ret = {} var ret = {}
if (isArray(data.type)) { if (item.isProperty) {
var length = new BN(data.length.replace('0x', ''), 16) return item
ret['length'] = { }
self: length.toString(10), if (item.type.lastIndexOf(']') === item.type.length - 1) {
ret.children = (item.value || []).map(function (item, index) {
return {key: index, value: item}
})
ret.children.unshift({
key: 'length',
value: {
self: (new BN(item.length.replace('0x', ''), 16)).toString(10),
type: 'uint', type: 'uint',
isProperty: true isProperty: true
} }
} })
return ret
}
function extractData (item, parent, key) {
var ret = {}
if (item.type.lastIndexOf(']') === item.type.length - 1) {
ret.children = item.value || []
ret.isArray = true ret.isArray = true
ret.self = parent.isArray ? 'Array' : item.type ret.self = parent.isArray ? 'Array' : item.type
ret.length = item.length
} else if (item.type.indexOf('struct') === 0) { } else if (item.type.indexOf('struct') === 0) {
ret.children = item.value || [] ret.children = Object.keys((item.value || {})).map(function (key) {
return {key: key, value: item.value[key]}
})
ret.self = item.type ret.self = item.type
ret.isStruct = true ret.isStruct = true
} else { } else {
......
...@@ -39,11 +39,10 @@ class TreeView { ...@@ -39,11 +39,10 @@ class TreeView {
renderObject (item, parent, key, expand) { renderObject (item, parent, key, expand) {
var data = this.extractData(item, parent, key) var data = this.extractData(item, parent, key)
var children = Object.keys(data.children).map((innerkey) => { var children = (data.children || []).map((child, index) => {
return this.renderObject(data.children[innerkey], data, innerkey, expand) return this.renderObject(child.value, data, child.key, expand)
}) })
var properties = this.extractProperties(item, parent, key) return this.formatDataInternal(key, data, children, expand)
return this.formatDataInternal(key, data, children, properties, expand)
} }
renderProperties (json, expand) { renderProperties (json, expand) {
...@@ -53,14 +52,11 @@ class TreeView { ...@@ -53,14 +52,11 @@ class TreeView {
return yo`<ul style=${this.cssUl}>${children}</ul>` return yo`<ul style=${this.cssUl}>${children}</ul>`
} }
formatDataInternal (key, data, children, properties, expand) { formatDataInternal (key, data, children, expand) {
var renderedProperties = Object.keys(properties).map((item) => {
return this.formatDataInternal(item, properties[item], [], [], false)
})
var label = yo`<span style=${this.cssLabel}><label style=${ui.formatCss(style.caret)}></label><span style=${ui.formatCss(style.data)}>${this.formatData(key, data)}</span></span>` var label = yo`<span style=${this.cssLabel}><label style=${ui.formatCss(style.caret)}></label><span style=${ui.formatCss(style.data)}>${this.formatData(key, data)}</span></span>`
var renderedChildren = '' var renderedChildren = ''
if (children.length) { if (children.length) {
renderedChildren = yo`<ul style=${this.cssUl}>${renderedProperties}${children}</ul>` renderedChildren = yo`<ul style=${this.cssUl}>${children}</ul>`
renderedChildren.style.display = expand ? 'block' : 'none' renderedChildren.style.display = expand ? 'block' : 'none'
label.firstElementChild.className = expand ? 'fa fa-caret-down' : 'fa fa-caret-right' label.firstElementChild.className = expand ? 'fa fa-caret-down' : 'fa fa-caret-right'
label.onclick = function () { label.onclick = function () {
...@@ -83,10 +79,14 @@ class TreeView { ...@@ -83,10 +79,14 @@ class TreeView {
extractDataDefault (item, parent, key) { extractDataDefault (item, parent, key) {
var ret = {} var ret = {}
if (item instanceof Array) { if (item instanceof Array) {
ret.children = item ret.children = item.map((item, index) => {
return {key: index, value: item}
})
ret.self = 'Array' ret.self = 'Array'
} else if (item instanceof Object) { } else if (item instanceof Object) {
ret.children = item ret.children = Object.keys(item).map((key) => {
return {key: key, value: item[key]}
})
ret.self = 'Object' ret.self = 'Object'
} else { } else {
ret.self = item ret.self = item
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment