UI, API changes

This commit is contained in:
Dustin Brickwood 2018-05-24 14:18:51 -04:00
parent 3a9affe2a0
commit abdeb11c3c
10 changed files with 44 additions and 35 deletions

View file

@ -161,6 +161,11 @@ func WriteShyftGen(sqldb *sql.DB, gen *Genesis, block *types.Block) {
number := block.Header().Number.String()
gasUsed := block.Header().GasUsed
gasLimit := block.Header().GasLimit
gasPrice := 0
txFee := 0
txStatus := ""
isContract := false
data:= ""
addr := k.String()
txCountAccount := v.Nonce +1
i, err := strconv.ParseInt(block.Time().String(), 10, 64)
@ -179,8 +184,8 @@ func WriteShyftGen(sqldb *sql.DB, gen *Genesis, block *types.Block) {
}
var retNonce string
sqlGenTxStatement := `INSERT INTO txs(txhash, from_addr, to_addr, blockhash, blockNumber, amount, gas, gasLimit, nonce,age) VALUES(($1), ($2), ($3), ($4), ($5), ($6), ($7), ($8), ($9), ($10)) RETURNING nonce`
insertError := sqldb.QueryRow(sqlGenTxStatement, txHash, GENESIS, addr, block.Header().Hash().Hex(), number, v.Balance.String(), gasUsed, gasLimit, txCountAccount, age).Scan(&retNonce)
sqlGenTxStatement := `INSERT INTO txs(txhash, from_addr, to_addr, blockhash, blockNumber, amount,gasPrice, gas, gasLimit,txFee,nonce,txstatus, iscontract,age, data) VALUES(($1), ($2), ($3), ($4), ($5), ($6), ($7), ($8), ($9), ($10), ($11), ($12), ($13), ($14), ($15)) RETURNING nonce`
insertError := sqldb.QueryRow(sqlGenTxStatement, txHash, GENESIS, addr, block.Header().Hash().Hex(), number, v.Balance.String(), gasPrice, gasUsed, gasLimit, txFee,txCountAccount,txStatus, isContract, age, data).Scan(&retNonce)
if insertError != nil {
panic(insertError)
}

View file

@ -2,11 +2,15 @@ import React from 'react';
import classes from '../nav.css';
const accountsDetailHeader = (props) => {
const total = props.data
.map(num => Number(num.Amount) / 10000000000000000000)
.reduce((acc, cur) => acc + cur ,0);
return (
<div className={classes.Secondary}>
<span className={classes.Transactions}>Account# {props.addr}</span>
<span className={classes.Transactions}>Total Value: {total}</span>
</div>
)
}
};
export default accountsDetailHeader;

View file

@ -4,7 +4,7 @@ import classes from '../nav.css';
const blocksCoinbaseHeader = (props) => {
return (
<div className={classes.Secondary}>
<span className={classes.Transactions}>Coinbase: {props.data.Coinbase}</span>
<span className={classes.Transactions}>Coinbase: {props.coinbase}</span>
</div>
)
};

View file

@ -24,11 +24,12 @@ class AccountTable extends Component {
let startNum = 1;
const sorted = [...this.state.data];
sorted.sort((a, b) => a.Balance > b.Balance);
sorted.sort((a, b) => Number(a.Balance) > Number(b.Balance));
console.log(sorted);
const table = sorted.reverse().map((data, i) => {
const conversion = data.Balance / 10000000000000000000;
const conversion = Number(data.Balance) / 10000000000000000000;
const total = sorted
.map(num => num.Balance / 10000000000000000000)
.map(num => Number(num.Balance) / 10000000000000000000)
.reduce((acc, cur) => acc + cur ,0);
const percentage = ( (conversion / total) *100);
return <AccountsTable

View file

@ -16,6 +16,6 @@ const AccountsTable = (props) => {
</tr>
</tbody>
)
}
};
export default AccountsTable;

View file

@ -10,11 +10,8 @@ class AccountTransactionTable extends Component {
return <ErrorHandler />
}else {
table = this.props.data.map((data, i) => {
console.log(this.props.data)
// const total = this.props.data
// .map(num => num.Balance / 10000000000000000000)
// .reduce((acc, cur) => acc + cur ,0);
const conversion = data.Cost / 10000000000000000000;
const costConversion = data.Cost / 10000000000000000000;
const amountConversion = data.Amount / 10000000000000000000;
return <DetailAccountsTable
key={`${data.TxHash}${i}`}
age={data.Age}
@ -22,8 +19,8 @@ class AccountTransactionTable extends Component {
blockNumber={data.BlockNumber}
to={data.To}
from={data.From}
value={data.Amount}
cost={conversion}
value={amountConversion}
cost={costConversion}
addr={this.props.addr}
detailTransactionHandler={this.props.transactionDetailHandler}
/>

View file

@ -32,6 +32,6 @@ const DetailAccountsTable = (props) => {
</tr>
</tbody>
)
}
};
export default DetailAccountsTable;

View file

@ -13,7 +13,7 @@ const MinedBlockTable = (props) => {
<td>{props.Age}</td>
<td>{props.TxCount}</td>
<td>{props.UncleCount}</td>
<td className={classes.addressTag}><Link to="/blocks/mined" onClick={() => props.getBlocksMined(props.Coinbase)}>{props.Coinbase}</Link></td>
<td className={classes.addressTag}>{props.Coinbase}</td>
<td>{props.GasUsed}</td>
<td>{props.GasLimit}</td>
<td>TBD</td>
@ -21,6 +21,6 @@ const MinedBlockTable = (props) => {
</tr>
</tbody>
)
}
};
export default MinedBlockTable;

View file

@ -73,7 +73,7 @@ class App extends Component {
getBlockTransactions = async(blockNumber) => {
try {
const response = await axios.get(`http://localhost:8080/api/get_all_transactions_from_block/${blockNumber}`)
await this.setState({ blockTransactions: response.data })
await this.setState({ blockTransactions: response.data, reqBlockNum: blockNumber })
}
catch(error) {
console.log(error)
@ -81,11 +81,9 @@ class App extends Component {
};
getBlocksMined = async(coinbase) => {
console.log("THIS RAN")
try {
const response = await axios.get(`http://localhost:8080/api/get_blocks_mined/${coinbase}`)
console.log(response.data);
await this.setState({ blocksMined: response.data })
await this.setState({ blocksMined: response.data, reqCoinbase: coinbase })
}
catch(error) {
console.log(error)
@ -151,7 +149,7 @@ class App extends Component {
<Route path="/block/transactions" exact render={({match}) =>
<div>
<BlockDetailHeader
blockNumber={this.state.blockTransactions.BlockNumber}/>
blockNumber={this.state.reqBlockNum}/>
<BlockTxs
data={this.state.blockTransactions}
getBlockTransactions={this.getBlockTransactions}
@ -164,7 +162,7 @@ class App extends Component {
<Route path="/mined/blocks" exact render={({match}) =>
<div>
<BlockCoinbaseHeader
data={this.state.blocksMined}/>
coinbase={this.state.reqCoinbase}/>
<BlocksMinedTable
getBlockTransactions={this.getBlockTransactions}
getBlocksMined={this.getBlocksMined}
@ -175,7 +173,8 @@ class App extends Component {
<Route path="/account/detail" exact render={({match}) =>
<div>
<AccountDetailHeader
addr={this.state.reqAccount}/>
addr={this.state.reqAccount}
data={this.state.accountDetailData}/>
<DetailAccountsTable
transactionDetailHandler={this.detailTransactionHandler}
addr={this.state.reqAccount}

View file

@ -13,6 +13,7 @@ import (
_ "github.com/lib/pq"
Rewards "github.com/ethereum/go-ethereum/consensus/ethash"
"reflect"
)
//SBlock type
@ -77,10 +78,10 @@ type ShyftTxEntryPretty struct {
From string
BlockHash string
BlockNumber string
Amount uint64
Amount string
GasPrice uint64
Gas uint64
GasLimit uint64
GasLimit string
Cost uint64
Nonce uint64
Status string
@ -686,10 +687,10 @@ func GetAllTransactionsFromBlock(sqldb *sql.DB, blockNumber string) string {
var from_addr string
var blockhash string
var blocknumber string
var amount uint64
var amount string
var gasprice uint64
var gas uint64
var gasLimit uint64
var gasLimit string
var txfee uint64
var nonce uint64
var status string
@ -821,10 +822,10 @@ func GetAllTransactions(sqldb *sql.DB) string {
var from_addr string
var blockhash string
var blocknumber string
var amount uint64
var amount string
var gasprice uint64
var gas uint64
var gasLimit uint64
var gasLimit string
var txfee uint64
var nonce uint64
var status string
@ -883,10 +884,10 @@ func GetTransaction(sqldb *sql.DB, txHash string) string {
var from_addr string
var blockhash string
var blocknumber string
var amount uint64
var amount string
var gasprice uint64
var gas uint64
var gasLimit uint64
var gasLimit string
var txfee uint64
var nonce uint64
var status string
@ -994,6 +995,7 @@ func GetAllAccounts(sqldb *sql.DB) string {
//GetAccount returns account balances
func GetAccountTxs(sqldb *sql.DB, address string) string {
fmt.Println(address)
var arr txRes
var txx string
sqlStatement := `SELECT * FROM txs WHERE to_addr=$1 OR from_addr=$1;`
@ -1008,10 +1010,10 @@ func GetAccountTxs(sqldb *sql.DB, address string) string {
var from_addr string
var blockhash string
var blocknumber string
var amount uint64
var amount string
var gasprice uint64
var gas uint64
var gasLimit uint64
var gasLimit string
var txfee uint64
var nonce uint64
var status string
@ -1035,6 +1037,7 @@ func GetAccountTxs(sqldb *sql.DB, address string) string {
&age,
&data,
)
fmt.Println(reflect.TypeOf(amount))
arr.TxEntry = append(arr.TxEntry, ShyftTxEntryPretty{
TxHash: txhash,