66 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
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;
 |