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