64 lines
1.8 KiB
Vue
64 lines
1.8 KiB
Vue
|
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
|