import PropTypes from '../../_util/vue-types' import { generateData, calcTotal } from './util' const Gen = { props: { x: PropTypes.number.def(20), y: PropTypes.number.def(18), z: PropTypes.number.def(1), }, data () { return { nums: '', } }, mounted () { this.$refs.x.value = this.x this.$refs.y.value = this.y this.$refs.z.value = this.z const vals = this.getVals() this.$emit('gen', generateData(vals.x, vals.y, vals.z)) }, methods: { onGen (e) { e.preventDefault() const vals = this.getVals() this.$emit('gen', generateData(vals.x, vals.y, vals.z)) this.nums = calcTotal(vals.x, vals.y, vals.z) }, getVals () { return { x: parseInt(this.$refs.x.value, 10), y: parseInt(this.$refs.y.value, 10), z: parseInt(this.$refs.z.value, 10), } }, }, render () { const { x, y, z } = this return (<div style={{ padding: '0 20px' }}> <h2>big data generator</h2> <form onSubmit={this.onGen}> <span style={{ marginRight: '10px' }}> x: <input ref='x' type='number' min='1' required style={{ width: '50px' }} /> </span> <span style={{ marginRight: '10px' }}> y: <input ref='y' type='number' min='1' required style={{ width: '50px' }} /> </span> <span style={{ marginRight: '10px' }}> z: <input ref='z' type='number' min='1' required style={{ width: '50px' }} /> </span> <button type='submit'>Generate</button> <p>total nodes: {this.nums || calcTotal(x, y, z)}</p> </form> <p style={{ fontSize: '12px' }}> x:每一级下的节点总数。y:每级节点里有y个节点、存在子节点。z:树的level层级数(0表示一级) </p> </div>) }, } export default Gen