Commit 95565bd4 authored by leon's avatar leon

fix: bar and line add datazoom to change data

parent 41767bce
...@@ -19,7 +19,8 @@ ...@@ -19,7 +19,8 @@
lazyLoad: true, lazyLoad: true,
option: {} option: {}
}, },
labelShow: false // 记录当前设置的label.show的值 labelShow: false, // 记录当前设置的label.show的值
index: 0, // 记录dataZoom切换当前的下标
} }
}, },
components: { components: {
...@@ -82,8 +83,10 @@ ...@@ -82,8 +83,10 @@
} }
}) })
chart.on('datazoom', event => { chart.on('datazoom', event => {
// 传递参数给其他组件
that.echartsDataZoom(event) that.echartsDataZoom(event)
that.dealLabelShowStatus(event) // 处理dataZoom的拖动事件
that.handleDataZoomEvent(event)
}) })
return chart return chart
}, },
...@@ -166,16 +169,31 @@ ...@@ -166,16 +169,31 @@
} }
}) })
}, },
/**
* 响应dataZoom的滑动事件
* event: 包含dataZoom的start和end
*/
handleDataZoomEvent(event) {
var count = this.elementData.dataList.categories.length * (event.end - event.start) / 100
// 给小程序里面赋值datas,如果存在且不为空,代表可以左右滑动切换
if(this.elementData.dataList.datas && this.elementData.dataList.datas.length) {
count = this.elementData.dataList.datas[this.index].categories.length * (event.end - event.start) / 100
this.switchData(event, count)
}
// 当前图表初始设置了labelShow=true时,才判断超过最大个数隐藏
if(this.labelShow) {
this.dealLabelShowStatus(event, count)
}
lastCount = count
},
/** /**
* 处理图表的数值是否显示 * 处理图表的数值是否显示
* 超过maxCount个时隐藏点的数值 * 超过maxCount个时隐藏点的数值
* event: 包含dataZoom的start和end * event: 包含dataZoom的start和end
* count: 当前图表显示的数量
*/ */
dealLabelShowStatus(event) { dealLabelShowStatus(event, count) {
// 当前图表初始设置了labelShow=true时,才判断超过10个隐藏
if(this.labelShow) {
var flag = false var flag = false
const count = this.elementData.dataList.categories.length * (event.end - event.start) / 100
const maxCount = this.elementInfo.option.dataset.maxCount const maxCount = this.elementInfo.option.dataset.maxCount
if(lastCount < count && lastCount <= maxCount && count > maxCount ) { if(lastCount < count && lastCount <= maxCount && count > maxCount ) {
// 放大的情况 // 放大的情况
...@@ -185,7 +203,6 @@ ...@@ -185,7 +203,6 @@
// 缩小的情况 // 缩小的情况
flag = true flag = true
} }
lastCount = count
if(flag) { if(flag) {
const series = this.ec.option.series const series = this.ec.option.series
series.map(item => { series.map(item => {
...@@ -195,7 +212,32 @@ ...@@ -195,7 +212,32 @@
this.$set(this.ec.option, 'dataZoom.start', event.start) this.$set(this.ec.option, 'dataZoom.start', event.start)
this.$set(this.ec.option, 'dataZoom.end', event.end) this.$set(this.ec.option, 'dataZoom.end', event.end)
} }
},
/**
* 处理数据的切换
* 滑块滚动到最左边或者最右边去切换上一个或者下一个数据
* event: 包含dataZoom的start和end
* count: 当前图表显示的数量
*/
switchData(event,count) {
const categories = this.elementData.dataList.datas[this.index].categories
// 容错在一个百分点内,认为是滑块滚动
const flag = Math.abs(lastCount - count) <= categories.length / 100 ? true : false
if(flag && event.end === 100 && this.index != this.elementData.dataList.datas.length - 1) {
this.index += 1
this.setChartDatas()
}
if(flag && event.start === 0 && this.index != 0) {
this.index -= 1
this.setChartDatas()
} }
},
setChartDatas() {
const categories = this.elementData.dataList.datas[this.index].categories
const series = this.elementData.dataList.datas[this.index].series
const dealSeries = this.dealSeriesData(series)
this.$set(this.ec.option, 'yAxis.data', categories)
this.$set(this.ec.option, 'series', dealSeries)
} }
} }
} }
......
...@@ -25,7 +25,8 @@ ...@@ -25,7 +25,8 @@
lazyLoad: true, lazyLoad: true,
option: {} option: {}
}, },
labelShow: false // 记录当前设置的label.show的值 labelShow: false, // 记录当前设置的label.show的值
index: 0, // 记录dataZoom切换当前的下标
} }
}, },
components: { components: {
...@@ -90,8 +91,10 @@ ...@@ -90,8 +91,10 @@
that.handleEchartsClick(event) that.handleEchartsClick(event)
}) })
chart.on('datazoom', event => { chart.on('datazoom', event => {
// 传递参数给其他组件
that.echartsDataZoom(event) that.echartsDataZoom(event)
that.dealLabelShowStatus(event) // 处理dataZoom的拖动事件
that.handleDataZoomEvent(event)
}) })
return chart return chart
}, },
...@@ -156,16 +159,31 @@ ...@@ -156,16 +159,31 @@
}) })
return newData return newData
}, },
/**
* 响应dataZoom的滑动事件
* event: 包含dataZoom的start和end
*/
handleDataZoomEvent(event) {
var count = this.elementData.dataList.categories.length * (event.end - event.start) / 100
// 给小程序里面赋值datas,如果存在且不为空,代表可以左右滑动切换
if(this.elementData.dataList.datas && this.elementData.dataList.datas.length) {
count = this.elementData.dataList.datas[this.index].categories.length * (event.end - event.start) / 100
this.switchData(event, count)
}
// 当前图表初始设置了labelShow=true时,才判断超过最大个数隐藏
if(this.labelShow) {
this.dealLabelShowStatus(event, count)
}
lastCount = count
},
/** /**
* 处理图表的数值是否显示 * 处理图表的数值是否显示
* 超过maxCount个时隐藏点的数值 * 超过maxCount个时隐藏点的数值
* event: 包含dataZoom的start和end * event: 包含dataZoom的start和end
* count: 当前图表显示的数量
*/ */
dealLabelShowStatus(event) { dealLabelShowStatus(event, count) {
// 当前图表初始设置了labelShow=true时,才判断超过10个隐藏
if(this.labelShow) {
var flag = false var flag = false
const count = this.elementData.dataList.categories.length * (event.end - event.start) / 100
const maxCount = this.elementInfo.option.dataset.maxCount const maxCount = this.elementInfo.option.dataset.maxCount
if(lastCount < count && lastCount <= maxCount && count > maxCount ) { if(lastCount < count && lastCount <= maxCount && count > maxCount ) {
// 放大的情况 // 放大的情况
...@@ -175,7 +193,6 @@ ...@@ -175,7 +193,6 @@
// 缩小的情况 // 缩小的情况
flag = true flag = true
} }
lastCount = count
if(flag) { if(flag) {
const series = this.ec.option.series const series = this.ec.option.series
series.map(item => { series.map(item => {
...@@ -185,7 +202,32 @@ ...@@ -185,7 +202,32 @@
this.$set(this.ec.option, 'dataZoom.start', event.start) this.$set(this.ec.option, 'dataZoom.start', event.start)
this.$set(this.ec.option, 'dataZoom.end', event.end) this.$set(this.ec.option, 'dataZoom.end', event.end)
} }
},
/**
* 处理数据的切换
* 滑块滚动到最左边或者最右边去切换上一个或者下一个数据
* event: 包含dataZoom的start和end
* count: 当前图表显示的数量
*/
switchData(event,count) {
const categories = this.elementData.dataList.datas[this.index].categories
// 容错在一个百分点内,认为是滑块滚动
const flag = Math.abs(lastCount - count) <= categories.length / 100 ? true : false
if(flag && event.end === 100 && this.index != this.elementData.dataList.datas.length - 1) {
this.index += 1
this.setChartDatas()
}
if(flag && event.start === 0 && this.index != 0) {
this.index -= 1
this.setChartDatas()
} }
},
setChartDatas() {
const categories = this.elementData.dataList.datas[this.index].categories
const series = this.elementData.dataList.datas[this.index].series
const dealSeries = this.dealSeriesData(series)
this.$set(this.ec.option, 'xAxis.data', categories)
this.$set(this.ec.option, 'series', dealSeries)
} }
} }
} }
......
...@@ -20,7 +20,8 @@ ...@@ -20,7 +20,8 @@
lazyLoad: true, lazyLoad: true,
option: {} option: {}
}, },
labelShow: false // 记录当前设置的label.show的值 labelShow: false, // 记录当前设置的label.show的值
index: 0, // 记录dataZoom切换当前的下标
} }
}, },
components: { components: {
...@@ -76,8 +77,10 @@ ...@@ -76,8 +77,10 @@
that.handleEchartsClick(event) that.handleEchartsClick(event)
}) })
chart.on('datazoom', event => { chart.on('datazoom', event => {
// 传递参数给其他组件
that.echartsDataZoom(event) that.echartsDataZoom(event)
that.dealLabelShowStatus(event) // 处理dataZoom的拖动事件
that.handleDataZoomEvent(event)
}) })
return chart return chart
}, },
...@@ -133,16 +136,31 @@ ...@@ -133,16 +136,31 @@
}) })
return newData return newData
}, },
/**
* 响应dataZoom的滑动事件
* event: 包含dataZoom的start和end
*/
handleDataZoomEvent(event) {
var count = this.elementData.dataList.categories.length * (event.end - event.start) / 100
// 给小程序里面赋值datas,如果存在且不为空,代表可以左右滑动切换
if(this.elementData.dataList.datas && this.elementData.dataList.datas.length) {
count = this.elementData.dataList.datas[this.index].categories.length * (event.end - event.start) / 100
this.switchData(event, count)
}
// 当前图表初始设置了labelShow=true时,才判断超过最大个数隐藏
if(this.labelShow) {
this.dealLabelShowStatus(event, count)
}
lastCount = count
},
/** /**
* 处理图表的数值是否显示 * 处理图表的数值是否显示
* 超过maxCount个时隐藏点的数值 * 超过maxCount个时隐藏点的数值
* event: 包含dataZoom的start和end * event: 包含dataZoom的start和end
* count: 当前图表显示的数量
*/ */
dealLabelShowStatus(event) { dealLabelShowStatus(event, count) {
// 当前图表初始设置了labelShow=true时,才判断超过10个隐藏
if(this.labelShow) {
var flag = false var flag = false
const count = this.elementData.dataList.categories.length * (event.end - event.start) / 100
const maxCount = this.elementInfo.option.dataset.maxCount const maxCount = this.elementInfo.option.dataset.maxCount
if(lastCount < count && lastCount <= maxCount && count > maxCount ) { if(lastCount < count && lastCount <= maxCount && count > maxCount ) {
// 放大的情况 // 放大的情况
...@@ -152,7 +170,6 @@ ...@@ -152,7 +170,6 @@
// 缩小的情况 // 缩小的情况
flag = true flag = true
} }
lastCount = count
if(flag) { if(flag) {
const series = this.ec.option.series const series = this.ec.option.series
series.map(item => { series.map(item => {
...@@ -162,7 +179,32 @@ ...@@ -162,7 +179,32 @@
this.$set(this.ec.option, 'dataZoom.start', event.start) this.$set(this.ec.option, 'dataZoom.start', event.start)
this.$set(this.ec.option, 'dataZoom.end', event.end) this.$set(this.ec.option, 'dataZoom.end', event.end)
} }
},
/**
* 处理数据的切换
* 滑块滚动到最左边或者最右边去切换上一个或者下一个数据
* event: 包含dataZoom的start和end
* count: 当前图表显示的数量
*/
switchData(event,count) {
const categories = this.elementData.dataList.datas[this.index].categories
// 容错在一个百分点内,认为是滑块滚动
const flag = Math.abs(lastCount - count) <= categories.length / 100 ? true : false
if(flag && event.end === 100 && this.index != this.elementData.dataList.datas.length - 1) {
this.index += 1
this.setChartDatas()
}
if(flag && event.start === 0 && this.index != 0) {
this.index -= 1
this.setChartDatas()
} }
},
setChartDatas() {
const categories = this.elementData.dataList.datas[this.index].categories
const series = this.elementData.dataList.datas[this.index].series
const dealSeries = this.dealSeriesData(series)
this.$set(this.ec.option, 'xAxis.data', categories)
this.$set(this.ec.option, 'series', dealSeries)
} }
} }
} }
......
...@@ -19,7 +19,8 @@ ...@@ -19,7 +19,8 @@
lazyLoad: true, lazyLoad: true,
option: {} option: {}
}, },
labelShow: false ,// 记录当前设置的label.show的值 labelShow: false, // 记录当前设置的label.show的值
index: 0, // 记录dataZoom切换当前的下标
} }
}, },
components: { components: {
...@@ -78,8 +79,10 @@ ...@@ -78,8 +79,10 @@
that.handleEchartsClick(event) that.handleEchartsClick(event)
}) })
chart.on('datazoom', event => { chart.on('datazoom', event => {
// 传递参数给其他组件
that.echartsDataZoom(event) that.echartsDataZoom(event)
that.dealLabelShowStatus(event) // 处理dataZoom的拖动事件
that.handleDataZoomEvent(event)
}) })
return chart return chart
}, },
...@@ -135,16 +138,31 @@ ...@@ -135,16 +138,31 @@
}) })
return newData return newData
}, },
/**
* 响应dataZoom的滑动事件
* event: 包含dataZoom的start和end
*/
handleDataZoomEvent(event) {
var count = this.elementData.dataList.categories.length * (event.end - event.start) / 100
// 给小程序里面赋值datas,如果存在且不为空,代表可以左右滑动切换
if(this.elementData.dataList.datas && this.elementData.dataList.datas.length) {
count = this.elementData.dataList.datas[this.index].categories.length * (event.end - event.start) / 100
this.switchData(event, count)
}
// 当前图表初始设置了labelShow=true时,才判断超过最大个数隐藏
if(this.labelShow) {
this.dealLabelShowStatus(event, count)
}
lastCount = count
},
/** /**
* 处理图表的数值是否显示 * 处理图表的数值是否显示
* 超过maxCount个时隐藏点的数值 * 超过maxCount个时隐藏点的数值
* event: 包含dataZoom的start和end * event: 包含dataZoom的start和end
* count: 当前图表显示的数量
*/ */
dealLabelShowStatus(event) { dealLabelShowStatus(event, count) {
// 当前图表初始设置了labelShow=true时,才判断超过10个隐藏
if(this.labelShow) {
var flag = false var flag = false
const count = this.elementData.dataList.categories.length * (event.end - event.start) / 100
const maxCount = this.elementInfo.option.dataset.maxCount const maxCount = this.elementInfo.option.dataset.maxCount
if(lastCount < count && lastCount <= maxCount && count > maxCount ) { if(lastCount < count && lastCount <= maxCount && count > maxCount ) {
// 放大的情况 // 放大的情况
...@@ -154,7 +172,6 @@ ...@@ -154,7 +172,6 @@
// 缩小的情况 // 缩小的情况
flag = true flag = true
} }
lastCount = count
if(flag) { if(flag) {
const series = this.ec.option.series const series = this.ec.option.series
series.map(item => { series.map(item => {
...@@ -164,7 +181,32 @@ ...@@ -164,7 +181,32 @@
this.$set(this.ec.option, 'dataZoom.start', event.start) this.$set(this.ec.option, 'dataZoom.start', event.start)
this.$set(this.ec.option, 'dataZoom.end', event.end) this.$set(this.ec.option, 'dataZoom.end', event.end)
} }
},
/**
* 处理数据的切换
* 滑块滚动到最左边或者最右边去切换上一个或者下一个数据
* event: 包含dataZoom的start和end
* count: 当前图表显示的数量
*/
switchData(event,count) {
const categories = this.elementData.dataList.datas[this.index].categories
// 容错在一个百分点内,认为是滑块滚动
const flag = Math.abs(lastCount - count) <= categories.length / 100 ? true : false
if(flag && event.end === 100 && this.index != this.elementData.dataList.datas.length - 1) {
this.index += 1
this.setChartDatas()
}
if(flag && event.start === 0 && this.index != 0) {
this.index -= 1
this.setChartDatas()
} }
},
setChartDatas() {
const categories = this.elementData.dataList.datas[this.index].categories
const series = this.elementData.dataList.datas[this.index].series
const dealSeries = this.dealSeriesData(series)
this.$set(this.ec.option, 'xAxis.data', categories)
this.$set(this.ec.option, 'series', dealSeries)
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment