import React, { Component } from 'react'; import { observable, computed, toJS } from 'mobx'; import { observer, inject } from 'mobx-react'; import nj from 'nornj'; import styles from './eventInfo.m.scss'; import { Badge, Col, Drawer, Message, Row, Table, Icon } from 'antd'; function arrayIndexOf(arr, val) { for (var i = 0, len = arr.length; i < len; i++) { if (arr[i] == val) { return i; } } return -1; } function arrayRemove(arr, val) { var index = arrayIndexOf(arr, val); if (index > -1) { arr.splice(index, 1); } return arr; } //页面容器组件 @inject('store') @observer export default class EventInfo extends Component { constructor(props) { super(props); } @observable pageSize = 10; @observable pageEvent = 10; @observable visible = false; @observable visibleLast = false; // @observable expandedRowKeys = []; @observable expandedRowKeysName = []; onPageChange = (page, pageSize) => { const { data, store: { common, event } } = this.props; const closeLoading = Message.loading('正在获取数据...', 0); let leaders = common.getDefaultLedger(); event.setEvent(page); // this.expandedRowKeys = []; let param = { fromIndex: (event.eventCurrent - 1) * this.pageSize, count: this.pageSize, }; let address = data.address && data.address.value && data.address.value || ''; // 查询事件列表 Promise.all([ event.getEventCount(common.getDefaultLedger(), address) ]).then(() => { if (event.eventTotal > 0) { Promise.all([ event.getEventData(common.getDefaultLedger(), address, param) ]).then(() => { closeLoading(); }); } else { closeLoading(); } }) } onPageChangeName = (page, pageSize, record) => { const { data, store: { common, event } } = this.props; event.setName(page); this.expandedRowKeysName = []; let address = data.address && data.address.value && data.address.value || ''; let param = { fromSequence: (event.nameCurrent - 1) * this.pageEvent, count: this.pageEvent, } Promise.all([ event.getNameCount(common.getDefaultLedger(), address, event.nameRecord) ]).then(() => { if (event.nameTotal) { Promise.all([ event.getEventName(common.getDefaultLedger(), address, event.nameRecord, param) ]).then(() => { }) } }) } onShow = (record, index) => { const { data, store: { common, event } } = this.props; let address = data.address && data.address.value && data.address.value || ''; let param = { fromSequence: (event.nameCurrent - 1) * this.pageEvent, count: this.pageEvent, } event.setNameRecord(record) Promise.all([ event.getNameCount(common.getDefaultLedger(), address, record) ]).then(() => { if (event.nameTotal) { Promise.all([ event.getEventName(common.getDefaultLedger(), address, record, param) ]).then(() => { this.visible = true; }) } }) } onClose = () => { const { data, store: { common, event } } = this.props; this.visible = false; event.setName(1) } onCloseLast = () => { const { data, store: { common, event } } = this.props; this.visibleLast = false; // event.setName(1) } onShowLatest = (e, record) => { const { data, store: { common, event } } = this.props; let address = data.address && data.address.value && data.address.value || ''; Promise.all([ event.getEventLatest(common.getDefaultLedger(), address, record) ]).then(() => { this.visibleLast = true }) } expandedRowRender = () => { const { store: { event } } = this.props; let data = event.dataLatest && { ...event.dataLatest } || {} return (

最新事件

事件序列: {data.sequence && data.sequence || 0} 事件账户: {data.eventAccount && data.eventAccount.value && data.eventAccount.value || ''} 事件名称: {data.name && data.name || ''} 交易哈希: {data.transactionSource && data.transactionSource || ''} 区块高度: {data.blockHeight && data.blockHeight || 0} 合约地址: {data.contractSource && data.contractSource || ''} {/* nil: {data.content && data.content.nil && 'true' || 'false'} */} 字节: {data.content && data.content.bytes && data.content.bytes.value || ''} 类型: {data.content && data.content.type || ''} 值: {data.content && data.content.value && (data.content.value + '') || ''}
) } eventColumns = () => { return [{ dataIndex: 'event', title: '事件名称', render: (text, record, index) => (
{record || ''}   this.onShowLatest(e, record)} />
) }, { dataIndex: 'operate', title: '操作', render: (text, record, index) => ( this.onShow(record, index)}>详情 ) }] } // 子表展开收缩函数 // handleExpandShow = (expanded, record) => { // if (expanded) { // let testArr = []; // testArr.push(record); // this.expandedRowKeys = [...testArr]; // } else { // this.expandedRowKeys = [...arrayRemove(this.expandedRowKeys, record)] // } // } handleExpandShowName = (expanded, record) => { if (expanded) { let testArr = []; testArr.push(record.index); this.expandedRowKeysName = [...testArr]; } else { this.expandedRowKeysName = [...arrayRemove(this.expandedRowKeysName, record.index)] } } nameColumns = () => { return [{ dataIndex: 'sequence', title: '事件序列', }, { // dataIndex: 'transactionSource.value', dataIndex: 'transactionSource', title: '交易哈希', }, { title: '合约地址', dataIndex: 'contractSource', }, { title: '区块高度', dataIndex: 'blockHeight', }, // { // title: '事件账户', // dataIndex: 'eventAccount.value' // }, // { // title: '事件名称', // dataIndex: 'name', // } ] } eventContent = record => { return (
事件账户: {record.eventAccount && record.eventAccount.value && record.eventAccount.value || ''} {/* 事件名称: {record.name && record.name || ''} */} {/* 内容: */} {/* nil: {record.content && record.content.nil && record.content.nil || false} */} 事件名称: {record.name && record.name || ''} 字节: {record.content && record.content.bytes && record.content.bytes.value && record.content.bytes.value || false} 类型: {record.content && record.content.type && record.content.type || ''} 值: {record.content && record.content.value != undefined && (record.content.value + '') || ''}
) } render() { const { data, store: { event } } = this.props; let latest = event.dataLatest && { ...event.dataLatest } || {} console.log(latest) return (

账户详情

事件账户地址: {data.address && data.address.value && data.address.value || ''} 事件账户公钥: {data.pubKey && data.pubKey && data.pubKey || ''}

事件列表

record} dataSource={event.dataEvent} columns={this.eventColumns()} // expandedRowKeys={this.expandedRowKeys} // expandedRowRender={this.expandedRowRender} // onExpand={(expanded, record) => this.handleExpandShow(expanded, record)} // onRow={record => ({ // onMouseOver: event => this.onShowLatest(event, record) // })} pagination={{ current: event.eventCurrent, pageSize: this.pageSize, total: event.eventTotal, onChange: this.onPageChange, showQuickJumper: true }} />
{/*

最新事件

*/}
事件序列:{latest.sequence && latest.sequence || 0}事件账户:{latest.eventAccount && latest.eventAccount.value && latest.eventAccount.value || ''}事件名称:{latest.name && latest.name || ''}交易哈希:{latest.transactionSource && latest.transactionSource || ''}区块高度:{latest.blockHeight && latest.blockHeight || 0}合约地址:{latest.contractSource && latest.contractSource || ''}字节:{latest.content && latest.content.bytes && latest.content.bytes.value || ''}类型:{latest.content && latest.content.type || ''}值:{latest.content && latest.content.value && (latest.content.value + '') || ''}
record.index} dataSource={event.dataName} columns={this.nameColumns()} pagination={{ current: event.nameCurrent, pageSize: this.pageEvent, total: event.nameTotal, onChange: (page, pageSize, record) => this.onPageChangeName(page, pageSize, record), showQuickJumper: true }} onExpand={(expanded, record) => this.handleExpandShowName(expanded, record)} expandedRowKeys={this.expandedRowKeysName} expandedRowRender={record => this.eventContent(record)} /> ) } }