import React, { Component, PropTypes } from 'react' import Tcell from './Tcell.js' import Spinner from './spinner.js' import CSSModules from 'react-css-modules' import styles from './index.styl' import 'fe-reset' @CSSModules(styles, { allowMultiple: true, errorWhenNotFound: false }) export class Etable extends Component { changeCell (map, value, e) { let name = this.props.map let m = map m.unshift(name) this.props.onChange(m, value, e) } handleClick (e) { if (this.props.onClick) { if (e.target.dataset.map) { let arg = e.target.dataset.map.split('-') arg.unshift(this.props.map) this.props.onClick(e, ...arg) } else { this.props.onClick(e) } } } renderTitle (title) { return title ? {title} : null } renderHead (head) { return ( head.map( (h, i) => ) ) } renderBody () { let data = this.props.data if (data.error) { return {this.props.data.errorMsg} } if (data.body.length === 0) { return 该条件下暂无数据 } return data.body.map((row, i) => row.isShow !== false ? -1 ? data.activeStyle : null)} key={i}>{this.renderRow(row.data, i)} : null) } renderRow (row, i) { if (this.props.data.error) { return {this.props.data.errorMsg} } if (row.length === 0) { return 该条件下暂无数据 } return ( row.map( (r, j) => ) ) } render () { let data = this.props.data return (
{data.loading ?
: null} {this.renderTitle(data.title)} {this.renderHead(data.head)} {this.renderBody()}
) } } Etable.propTypes = { onClick: PropTypes.func, onChange: PropTypes.func, action: PropTypes.object, data: PropTypes.shape({ loading: PropTypes.bool, editing: PropTypes.bool, error: PropTypes.bool, errorMsg: PropTypes.string, head: PropTypes.arrayOf(PropTypes.object), body: PropTypes.arrayOf( PropTypes.shape({ isShow: PropTypes.bool, data: PropTypes.arrayOf(PropTypes.object) })) }) } export default Etable