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}
- bytes: {record.content && record.content.bytes && record.content.bytes.value && record.content.bytes.value || false}
- type: {record.content && record.content.type && record.content.type || ''}
- value: {record.content && record.content.value && record.content.value || ''}
*/}
{/* 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)}
/>
)
}
}