UNPKG

yapi-vendor

Version:
129 lines (121 loc) 2.9 kB
import React, { Component } from 'react'; import { Table } from 'antd'; import json5 from 'json5'; import PropTypes from 'prop-types'; import { schemaTransformToTable } from '../../../common/schema-transformTo-table.js'; import _ from 'underscore'; import './index.scss'; const messageMap = { desc: '备注', default: '实例', maximum: '最大值', minimum: '最小值', maxItems: '最大数量', minItems: '最小数量', maxLength: '最大长度', minLength: '最小长度', enum: '枚举', enumDesc: '枚举备注', uniqueItems: '元素是否都不同', itemType: 'item 类型', format: 'format', itemFormat: 'format', mock: 'mock' }; const columns = [ { title: '名称', dataIndex: 'name', key: 'name', width: 200 }, { title: '类型', dataIndex: 'type', key: 'type', width: 100, render: (text, item) => { // console.log('text',item.sub); return text === 'array' ? ( <span>{item.sub ? item.sub.itemType || '' : 'array'} []</span> ) : ( <span>{text}</span> ); } }, { title: '是否必须', dataIndex: 'required', key: 'required', width: 80, render: text => { return <div>{text ? '必须' : '非必须'}</div>; } }, { title: '默认值', dataIndex: 'default', key: 'default', width: 80, render: text => { return <div>{_.isBoolean(text) ? text + '' : text}</div>; } }, { title: '备注', dataIndex: 'desc', key: 'desc', render: (text, item) => { return _.isUndefined(item.childrenDesc) ? ( <span className="table-desc">{text}</span> ) : ( <span className="table-desc">{item.childrenDesc}</span> ); } }, { title: '其他信息', dataIndex: 'sub', key: 'sub', width: 180, render: (text, record) => { let result = text || record; return Object.keys(result).map((item, index) => { let name = messageMap[item]; let value = result[item]; let isShow = !_.isUndefined(result[item]) && !_.isUndefined(name); return ( isShow && ( <p key={index}> <span style={{ fontWeight: '700' }}>{name}: </span> <span>{value.toString()}</span> </p> ) ); }); } } ]; class SchemaTable extends Component { static propTypes = { dataSource: PropTypes.string }; constructor(props) { super(props); } render() { let product; try { product = json5.parse(this.props.dataSource); } catch (e) { product = null; } if (!product) { return null; } let data = schemaTransformToTable(product); data = _.isArray(data) ? data : []; return <Table bordered size="small" pagination={false} dataSource={data} columns={columns} />; } } export default SchemaTable;