First draft

pull/1/head
ninabreznik 8 years ago committed by yann300
parent d069c1a94e
commit 68d6f236eb
  1. 127
      src/app/execution/txLogger.js

@ -1,12 +1,59 @@
'use strict'
var yo = require('yo-yo')
// -------------- styling ----------------------
var csjs = require('csjs-inject')
var remix = require('ethereum-remix')
var styleGuide = remix.ui.styleGuide
var styles = styleGuide()
var EventManager = remix.lib.EventManager
var helper = require('../../lib/helper')
var ethJSUtil = require('ethereumjs-util')
var BN = ethJSUtil.BN
var executionContext = require('../../execution-context')
var css = csjs`
.log {
display: flex;
align-items: baseline;
}
.txTable, .tr, .td {
border: 1px solid black;
border-collapse: collapse;
font-size: 10px;
color: grey;
}
.txTable {
width: 35%;
}
#txTable {
width: 200px;
margin-left: 20px;
align-self: center;
}
.tr, .td {
padding: 3px;
}
.buttons {
display: flex;
}
.debug, .details {
${styles.button}
min-height: 18px;
max-height: 18px;
width: 45px;
min-width: 45px;
font-size: 10px;
margin-left: 5px;
}
.debug {
background-color: ${styles.colors.lightOrange};
}
.details {
background-color: ${styles.colors.lightGrey};
}
`
/**
* This just export a function that register to `newTransaction` and forward them to the logger.
* Emit debugRequested
@ -64,10 +111,44 @@ function renderKnownTransaction (self, data) {
function debug () {
self.event.trigger('debugRequested', [data.tx.hash])
}
function detail () {
// @TODO here should open a modal containing some info (e.g input params, logs, ...)
var tx = yo`
<span class=${css.log} id="tx${data.tx.hash}">
${context(self, data.tx)}, ${data.resolvedData.contractName}.${data.resolvedData.fn}, ${data.logs.length} logs
<div class=${css.buttons}>
<button class=${css.details} onclick=${e => detail(e, tx)}>Details</button>
<button class=${css.debug} onclick=${debug}>Debug</button>
</div>
</span>
`
function detail (e, container) {
var el = container
var table = yo`
<table class="${css.txTable}" id="txTable">
<tr class="${css.tr}">
<td class="${css.td}">from</td>
<td class="${css.td}">${helper.shortenAddress(data.tx.from)}</td>
</tr class="${css.tr}">
<tr class="${css.tr}">
<td class="${css.td}">to:</td>
<td class="${css.td}">${to}</td>
</tr class="${css.tr}">
<tr class="${css.tr}">
<td class="${css.td}">value:</td>
<td class="${css.td}">${value(data.tx.value)} wei</td>
</tr class="${css.tr}">
<tr class="${css.tr}">
<td class="${css.td}">data:</td>
<td class="${css.td}">${helper.shortenHexData(data.tx.input)}</td>
</tr class="${css.tr}">
<tr class="${css.tr}">
<td class="${css.td}">hash:</td>
<td class="${css.td}">${helper.shortenHexData((data.tx.hash))}</td>
</tr class="${css.tr}">
</table>
`
el.appendChild(table)
}
return yo`<span id="tx${data.tx.hash}">${context(self, data.tx)}: from:${helper.shortenAddress(data.tx.from)}, to:${to}, ${data.resolvedData.contractName}.${data.resolvedData.fn}, value:${value(data.tx.value)} wei, data:${helper.shortenHexData(data.tx.input)}, ${data.logs.length} logs, hash:${helper.shortenHexData((data.tx.hash))},<button onclick=${detail}>Details</button> <button onclick=${debug}>Debug</button></span>`
return tx
}
function renderUnknownTransaction (self, data) {
@ -76,10 +157,44 @@ function renderUnknownTransaction (self, data) {
function debug () {
self.event.trigger('debugRequested', [data.tx.hash])
}
function detail () {
// @TODO here should open a modal containing some info (e.g input params, logs, ...)
var tx = yo`
<span class=${css.log} id="tx${data.tx.hash}">
${context(self, data.tx)}
<div class=${css.buttons}>
<button class=${css.details} onclick=${e => detail(e, tx)}>Details</button>
<button class=${css.debug} onclick=${debug}>Debug</button>
</div>
</span>
`
function detail (e, container) {
var el = container
var table = yo`
<table class="${css.txTable}" id="txTable">
<tr class="${css.tr}">
<td class="${css.td}">from</td>
<td class="${css.td}">${helper.shortenAddress(data.tx.from)}</td>
</tr class="${css.tr}">
<tr class="${css.tr}">
<td class="${css.td}">to:</td>
<td class="${css.td}">${to}</td>
</tr class="${css.tr}">
<tr class="${css.tr}">
<td class="${css.td}">value:</td>
<td class="${css.td}">${value(data.tx.value)} wei</td>
</tr class="${css.tr}">
<tr class="${css.tr}">
<td class="${css.td}">data:</td>
<td class="${css.td}">${helper.shortenHexData(data.tx.input)}</td>
</tr class="${css.tr}">
<tr class="${css.tr}">
<td class="${css.td}">hash:</td>
<td class="${css.td}">${helper.shortenHexData((data.tx.hash))}</td>
</tr class="${css.tr}">
</table>
`
el.appendChild(table)
}
return yo`<span id="tx${data.tx.hash}">${context(self, data.tx)}: from:${helper.shortenAddress(data.tx.from)}, to:${to}, value:${value(data.tx.value)} wei, data:${helper.shortenHexData((data.tx.input))}, hash:${helper.shortenHexData((data.tx.hash))}, <button onclick=${detail}>Details</button> <button onclick=${debug}>Debug</button></span>`
return tx
}
function renderEmptyBlock (self, data) {

Loading…
Cancel
Save