| | |
| | | '10:1': '10%', '3:4': '133.33%', '2:3': '150%', '9:16': '177.78%' |
| | | } |
| | | |
| | | class TextCell extends Component { |
| | | componentDidMount() { |
| | | if (this.node && this.node.scrollHeight > this.node.offsetHeight) { |
| | | this.node.style.display = 'block' |
| | | } |
| | | } |
| | | |
| | | componentDidUpdate() { |
| | | if (this.node) { |
| | | if (this.node.scrollHeight > this.node.offsetHeight) { |
| | | this.node.style.display = 'block' |
| | | } else { |
| | | this.node.style.display = 'flex' |
| | | } |
| | | } |
| | | } |
| | | |
| | | render() { |
| | | const { card, className, value } = this.props |
| | | |
| | | let lineStyle = {height: card.innerHeight} |
| | | lineStyle.display = 'flex' |
| | | lineStyle.alignItems = card.alignItems |
| | | lineStyle.justifyContent = card.style.textAlign || 'left' |
| | | |
| | | return ( |
| | | <div ref={ref => this.node = ref} className={className} style={lineStyle}>{value}</div> |
| | | ) |
| | | } |
| | | } |
| | | |
| | | class CardCellComponent extends Component { |
| | | static propTpyes = { |
| | | cards: PropTypes.object, // 菜单配置信息 |
| | |
| | | ) |
| | | } else if (card.eleType === 'text') { |
| | | let val = '' |
| | | let _style = card.style ? {...card.style} : {} |
| | | let _style = {...card.style} |
| | | |
| | | if (card.datatype === 'static') { |
| | | val = card.value || '' |
| | |
| | | if (card.bgImage && data[card.bgImage]) { |
| | | _style.backgroundImage = `url('${data[card.bgImage]}')` |
| | | } |
| | | |
| | | let lineStyle = {height: card.innerHeight || 'auto'} |
| | | if (card.alignItems) { |
| | | lineStyle.display = 'flex' |
| | | lineStyle.alignItems = card.alignItems |
| | | lineStyle.justifyContent = _style.textAlign || 'left' |
| | | } |
| | | |
| | | contents.push( |
| | | <div className={'ant-col ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}> |
| | | <div style={_style} onClick={(e) => {this.openNewView(e, card)}}> |
| | | <div className={'ant-mk-text line' + (card.height || '') + className} style={lineStyle}>{val}</div> |
| | | {card.alignItems ? <TextCell card={card} className={'ant-mk-text line' + (card.height || '') + className} value={val}/> : |
| | | <div className={'ant-mk-text line' + (card.height || '') + className} style={{height: card.innerHeight}}>{val}</div>} |
| | | </div> |
| | | </div> |
| | | ) |
| | | } else if (card.eleType === 'number') { |
| | | let val = '' |
| | | let _style = card.style ? {...card.style} : {} |
| | | let _style = {...card.style} |
| | | |
| | | if (card.datatype === 'static') { |
| | | val = card.value |
| | |
| | | className = mark.signType |
| | | } |
| | | |
| | | let lineStyle = {height: card.innerHeight || 'auto'} |
| | | if (card.alignItems) { |
| | | lineStyle.display = 'flex' |
| | | lineStyle.alignItems = card.alignItems |
| | | lineStyle.justifyContent = _style.textAlign || 'left' |
| | | } |
| | | |
| | | contents.push( |
| | | <div className={'ant-col ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}> |
| | | <div style={_style}> |
| | | <div className={'ant-mk-text line' + (card.height || '') + className} style={lineStyle}>{val}</div> |
| | | {card.alignItems ? <TextCell card={card} className={'ant-mk-text line' + (card.height || '') + className} value={val}/> : |
| | | <div className={'ant-mk-text line' + (card.height || '') + className} style={{height: card.innerHeight}}>{val}</div>} |
| | | </div> |
| | | </div> |
| | | ) |
| | | } else if (card.eleType === 'icon') { |
| | | let val = '' |
| | | let icon = '' |
| | | let height = card.innerHeight |
| | | |
| | | if (card.datatype === 'dynamic') { |
| | | icon = data[card.field] || '' |
| | |
| | | |
| | | if (!icon && card.noValue === 'hide') { // 空值隐藏 |
| | | return null |
| | | } |
| | | |
| | | if (!height) { // 兼容 |
| | | let fontSize = 14 |
| | | let lineHeight = 1.5 |
| | | |
| | | if (card.style.fontSize) { |
| | | fontSize = parseInt(card.style.fontSize) |
| | | } |
| | | if (card.style.lineHeight) { |
| | | lineHeight = parseFloat(card.style.lineHeight) |
| | | } |
| | | |
| | | height = fontSize * lineHeight |
| | | } |
| | | |
| | | if (data.hasOwnProperty(card.tooltip)) { |
| | |
| | | <div className={'ant-col ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}> |
| | | <div style={card.style}> |
| | | {val ? <Tooltip title={val}> |
| | | <MkIcon className="ant-mk-icon" style={{height: height}} type={icon}/> |
| | | </Tooltip> : <MkIcon className="ant-mk-icon" style={{height: height}} type={icon}/>} |
| | | <MkIcon className="ant-mk-icon" style={{height: card.innerHeight}} type={icon}/> |
| | | </Tooltip> : <MkIcon className="ant-mk-icon" style={{height: card.innerHeight}} type={icon}/>} |
| | | </div> |
| | | </div> |
| | | ) |
| | |
| | | ) |
| | | } else if (card.eleType === 'picture') { |
| | | let _imagestyle = {} |
| | | let _style = card.style ? {margin: '0 auto', ...card.style} : {} |
| | | let _style = {margin: '0 auto', ...card.style} |
| | | let url = '' |
| | | if (card.maxWidth) { |
| | | _style.maxWidth = card.maxWidth |
| | |
| | | ) |
| | | } else if (card.eleType === 'formula') { |
| | | let val = 0 |
| | | let _style = card.style ? {...card.style} : {} |
| | | let _style = {...card.style} |
| | | |
| | | if (card.$sync) { |
| | | if (card.eval === 'false') { |
| | |
| | | className = mark.signType |
| | | } |
| | | |
| | | let lineStyle = {height: card.innerHeight || 'auto'} |
| | | if (card.alignItems) { |
| | | lineStyle.display = 'flex' |
| | | lineStyle.alignItems = card.alignItems |
| | | lineStyle.justifyContent = _style.textAlign || 'left' |
| | | } |
| | | |
| | | contents.push( |
| | | <div className={'ant-col ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}> |
| | | <div style={_style}> |
| | | <div className={'ant-mk-text line' + (card.height || '') + className} style={lineStyle}>{val}</div> |
| | | {card.alignItems ? <TextCell card={card} className={'ant-mk-text line' + (card.height || '') + className} value={val}/> : |
| | | <div className={'ant-mk-text line' + (card.height || '') + className} style={{height: card.innerHeight}}>{val}</div>} |
| | | </div> |
| | | </div> |
| | | ) |