Vue.component("plan-bandwidth-ranges", { props: ["v-ranges"], data: function () { let ranges = this.vRanges if (ranges == null) { ranges = [] } return { ranges: ranges, isAdding: false, minMB: "", maxMB: "", pricePerMB: "", addingRange: { minMB: 0, maxMB: 0, pricePerMB: 0, totalPrice: 0 } } }, methods: { add: function () { this.isAdding = !this.isAdding let that = this setTimeout(function () { that.$refs.minMB.focus() }) }, cancelAdding: function () { this.isAdding = false }, confirm: function () { this.isAdding = false this.minMB = "" this.maxMB = "" this.pricePerMB = "" this.ranges.push(this.addingRange) this.ranges.$sort(function (v1, v2) { if (v1.minMB < v2.minMB) { return -1 } if (v1.minMB == v2.minMB) { return 0 } return 1 }) this.change() this.addingRange = { minMB: 0, maxMB: 0, pricePerMB: 0, totalPrice: 0 } }, remove: function (index) { this.ranges.$remove(index) this.change() }, change: function () { this.$emit("change", this.ranges) } }, watch: { minMB: function (v) { let minMB = parseInt(v.toString()) if (isNaN(minMB) || minMB < 0) { minMB = 0 } this.addingRange.minMB = minMB }, maxMB: function (v) { let maxMB = parseInt(v.toString()) if (isNaN(maxMB) || maxMB < 0) { maxMB = 0 } this.addingRange.maxMB = maxMB }, pricePerMB: function (v) { let pricePerMB = parseFloat(v.toString()) if (isNaN(pricePerMB) || pricePerMB < 0) { pricePerMB = 0 } this.addingRange.pricePerMB = pricePerMB } }, template: `
` })