From 5a89d1419c65c49268d3094c6aa75fa29e474a62 Mon Sep 17 00:00:00 2001
From: quanyawei <401863037@qq.com>
Date: Fri, 22 Dec 2023 14:12:25 +0800
Subject: [PATCH] fix:热力图播放
---
src/views/hotMap/components/timeLinePlay.vue | 97 +++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 82 insertions(+), 15 deletions(-)
diff --git a/src/views/hotMap/components/timeLinePlay.vue b/src/views/hotMap/components/timeLinePlay.vue
index d9c0622..e92c531 100644
--- a/src/views/hotMap/components/timeLinePlay.vue
+++ b/src/views/hotMap/components/timeLinePlay.vue
@@ -7,7 +7,10 @@
@click="togglePlay"
/>
</div>
- <div class="dayDataList">
+ <div
+ ref="dayDataList"
+ class="dayDataList"
+ >
<div class="oneDayData">
<div
v-for="item in dataFormList"
@@ -97,8 +100,9 @@
return {
intervalTimer: null, // ���������
playing: false,
- activeIndex: 0,
+ activeIndex: 1,
activeItem: {},
+ activeFarterItem: {},
timeLineData: [ // ������������
{
id: 0,
@@ -121,6 +125,7 @@
dataFormList () {
let dataList = _.cloneDeep(this.dateTimes)
let hourListTime = dataList[dataList.length - 1].hourListTime
+ let hourListTimeStar = dataList[0].hourListTime
if (hourListTime.length < 24 && this.dateType === 'hour') {
const newArr = hourListTime.concat(Array(24 - hourListTime.length).fill({
id: 9999,
@@ -130,6 +135,16 @@
console.log('newArr', newArr)
dataList[dataList.length - 1].hourListTime = newArr
}
+ if (hourListTimeStar.length < 24 && this.dateType === 'hour') {
+ const newArr = (Array(24 - hourListTimeStar.length).fill({
+ id: 9999,
+ name: '9999',
+ isShow: true
+ })).concat(hourListTimeStar)
+ console.log('newArr', newArr)
+ dataList[0].hourListTime = newArr
+ }
+ console.log('dataList', dataList)
return dataList
}
},
@@ -137,7 +152,7 @@
watch: {
dateTimes: {
handler (newVal, oldVal) {
- this.activeIndex = 0
+ this.activeIndex = 1
this.playing = false
console.log('newVal', newVal)
},
@@ -151,8 +166,10 @@
clearInterval(this.intervalTimer)
if (this.dateType === 'hour' && this.activeIndex === this.dataFormList[0].idLength) {
this.activeIndex = 1
+ this.chanScroll(0)
} else if (this.dateType !== 'hour' && this.activeIndex === this.dataFormList.length) {
this.activeIndex = 1
+ this.chanScroll(0)
} else {
this.activeIndex = (this.activeIndex + 1)
}
@@ -194,25 +211,47 @@
id: item.id,
name: `${element.name} ${item.name}`,
}
+ this.activeFarterItem = element
}
})
})
} else {
activeItem = this.dataFormList[this.activeIndex - 1]
+ this.activeFarterItem = activeItem
}
console.log('activeItem', activeItem, this.activeIndex)
+ this.chanScroll()
this.$emit('getDateFun', activeItem)
}
},
// ������������ - ��������������������������������� this ���������
created () {
+ console.log('this.dataFormList', this.dataFormList)
+ if (this.dateType === 'hour') {
+ let data = this.dataFormList[this.dataFormList.length - 1].hourListTime
+ this.activeIndex = data[0].id + 1
+ }
},
methods: {
+ chanScroll () {
+ const scrollableDiv = this.$refs.dayDataList
+ let farterElementChild = scrollableDiv.firstElementChild
+ let sunElementChild = farterElementChild.firstElementChild.clientWidth
+ let activElementWidth = sunElementChild * (this.activeFarterItem.id + 1)
+ // let childrenlist = farterElementChild.children.length
+ console.log('scrollableDiv.index', this.activeFarterItem.id + 1)
+ console.log('scrollableDiv.index', activElementWidth)
+ // console.log('scrollableDiv.childrenlist', childrenlist)
+ // console.log('scrollableDiv.scrollWidth', scrollableDiv.scrollWidth)
+ console.log('scrollableDiv.clientWidth', scrollableDiv.clientWidth)
+ if (scrollableDiv.scrollWidth > scrollableDiv.clientWidth) {
+ scrollableDiv.scrollTo(((this.activeFarterItem.id) * sunElementChild), 0)
+ }
+ },
changeActiveIndex (data, item) {
if (item.isShow && this.dateType === 'hour') {
return
}
- this.activeItem = item
this.activeIndex = data + 1
console.log('changeActiveIndex', data, item)
if (this.playing) {
@@ -230,9 +269,10 @@
</script>
<style scoped lang="scss">
.timeLineBox{
- background: hsla(0,0%,80%,.8);
+ background: rgba(51,51,51,.8);
width:100%;
- box-shadow: 1px 1px 5px #666;
+ color: #fff;
+ // box-shadow: 1px 1px 5px #666;
cursor: pointer;
padding: 10px;
padding-bottom: 5px;
@@ -241,7 +281,7 @@
align-items: center;
.dayDataList{
width: calc(100% - 60px);
- overflow: auto;
+ overflow-x: auto;
.oneDayData{
display: flex;
// justify-content: space-around;
@@ -250,7 +290,7 @@
flex: 1;
text-align: center;
min-width: 100px;
- border-left: 1px solid #fff;
+ border-left: 1px solid rgba(255, 255, 255, 0.7);;
.lineBox{
width: 100%;
height: 10px;
@@ -267,7 +307,7 @@
width: 100%;
height: 10px;
// border-left: 1px solid #fff;
- border-right: 1px solid #fff;
+ border-right: 1px solid rgba(255, 255, 255, 0.7);;
}
}
}
@@ -275,11 +315,38 @@
.dataFont{
margin-top: 5px;
padding-top: 5px;
- border-top: 1px solid #fff;
+ border-top: 1px solid rgba(255, 255, 255, 0.7);;
// border-top: 1px solid #fff;
}
}
}
+
+ }
+ .dayDataList::-webkit-scrollbar-track
+ {
+ -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
+ background-color: #F5F5F5;
+ border-radius: 10px;
+ }
+
+ .dayDataList::-webkit-scrollbar
+ {
+ width: 5px;
+ background-color: #F5F5F5;
+ }
+
+ .dayDataList::-webkit-scrollbar-thumb
+ {
+ background-color: #AAA;
+ border-radius: 10px;
+ background-image: -webkit-linear-gradient(90deg,
+ rgba(0, 0, 0, .2) 25%,
+ transparent 25%,
+ transparent 50%,
+ rgba(0, 0, 0, .2) 50%,
+ rgba(0, 0, 0, .2) 75%,
+ transparent 75%,
+ transparent)
}
}
@@ -314,7 +381,7 @@
text-align: center;
}
.activeBg{
- background: green !important;
+ background: #009845 !important;
}
.activeIhShow{
border: none!important;
@@ -333,15 +400,15 @@
</style>
<style>
.tooltip-style.el-tooltip__popper {
- background: green;
+ background: #009845;
}
.tooltip-style.el-tooltip__popper.is-dark {
- background: green;
+ background: #009845;
}
.tooltip-style.el-tooltip__popper[x-placement^='top'] .popper__arrow:after{
- border-top-color:green;
+ border-top-color:#009845;
}
.el-tooltip__popper[x-placement^='top'] .popper__arrow{
- border-top-color:green;
+ border-top-color:#009845;
}
</style>
--
Gitblit v1.8.0