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() number := block.Header().Number.String()
gasUsed := block.Header().GasUsed gasUsed := block.Header().GasUsed
gasLimit := block.Header().GasLimit gasLimit := block.Header().GasLimit
gasPrice := 0
txFee := 0
txStatus := ""
isContract := false
data:= ""
addr := k.String() addr := k.String()
txCountAccount := v.Nonce +1 txCountAccount := v.Nonce +1
i, err := strconv.ParseInt(block.Time().String(), 10, 64) 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 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` 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(), gasUsed, gasLimit, txCountAccount, age).Scan(&retNonce) 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 { if insertError != nil {
panic(insertError) panic(insertError)
} }

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -13,7 +13,7 @@ const MinedBlockTable = (props) => {
<td>{props.Age}</td> <td>{props.Age}</td>
<td>{props.TxCount}</td> <td>{props.TxCount}</td>
<td>{props.UncleCount}</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.GasUsed}</td>
<td>{props.GasLimit}</td> <td>{props.GasLimit}</td>
<td>TBD</td> <td>TBD</td>
@ -21,6 +21,6 @@ const MinedBlockTable = (props) => {
</tr> </tr>
</tbody> </tbody>
) )
} };
export default MinedBlockTable; export default MinedBlockTable;

View file

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

View file

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