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;