Merge pull request #12785 from dataease/pr@dev-v2@refactor_table_scroll_suspend

refactor(图表): 表格滚动到底部后停留 1.5 秒再回到顶部 #12677
This commit is contained in:
wisonic-s 2024-10-19 23:00:41 +08:00 committed by GitHub
commit 2c941b7eb9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -233,52 +233,56 @@ const mouseLeave = () => {
initScroll() initScroll()
} }
let scrollTimer
const initScroll = () => { const initScroll = () => {
// *toptop<* scrollTimer && clearTimeout(scrollTimer)
const customAttr = actualChart?.customAttr scrollTimer = setTimeout(() => {
const senior = actualChart?.senior // *toptop<*
if ( const customAttr = actualChart?.customAttr
myChart && const senior = actualChart?.senior
senior?.scrollCfg?.open && if (
chartData.value.tableRow?.length && myChart &&
(view.value.type === 'table-normal' || (view.value.type === 'table-info' && !state.showPage)) senior?.scrollCfg?.open &&
) { chartData.value.tableRow?.length &&
// (view.value.type === 'table-normal' || (view.value.type === 'table-info' && !state.showPage))
myChart.facet.timer?.stop() ) {
// //
let scrolledOffset = myChart.store.get('scrollY') || 0 myChart.facet.timer?.stop()
// //
// 2 2 : = / 2 * 2 let scrolledOffset = myChart.store.get('scrollY') || 0
const offsetHeight = document.getElementById(containerId).offsetHeight //
// // 2 2 : = / 2 * 2
if (!offsetHeight) { const offsetHeight = document.getElementById(containerId).offsetHeight
return //
if (!offsetHeight) {
return
}
const rowHeight = customAttr.tableCell.tableItemHeight
const headerHeight =
customAttr.tableHeader.showTableHeader === false ? 1 : customAttr.tableHeader.tableTitleHeight
const scrollBarSize = myChart.theme.scrollBar.size
const scrollHeight =
rowHeight * chartData.value.tableRow.length + headerHeight - offsetHeight + scrollBarSize
//
if (scrollHeight < scrollBarSize) {
return
}
// ,1
if (scrolledOffset >= scrollHeight - 1) {
myChart.store.set('scrollY', 0)
myChart.render()
scrolledOffset = 0
}
const viewedHeight = offsetHeight - headerHeight - scrollBarSize + scrolledOffset
const scrollViewCount = chartData.value.tableRow.length - viewedHeight / rowHeight
const duration = (scrollViewCount / senior.scrollCfg.row) * senior.scrollCfg.interval
myChart.facet.scrollWithAnimation(
{ offsetY: { value: scrollHeight, animate: false } },
duration,
initScroll
)
} }
const rowHeight = customAttr.tableCell.tableItemHeight }, 1500)
const headerHeight =
customAttr.tableHeader.showTableHeader === false ? 1 : customAttr.tableHeader.tableTitleHeight
const scrollBarSize = myChart.theme.scrollBar.size
const scrollHeight =
rowHeight * chartData.value.tableRow.length + headerHeight - offsetHeight + scrollBarSize
//
if (scrollHeight < scrollBarSize) {
return
}
// ,1
if (scrolledOffset >= scrollHeight - 1) {
myChart.store.set('scrollY', 0)
myChart.render()
scrolledOffset = 0
}
const viewedHeight = offsetHeight - headerHeight - scrollBarSize + scrolledOffset
const scrollViewCount = chartData.value.tableRow.length - viewedHeight / rowHeight
const duration = (scrollViewCount / senior.scrollCfg.row) * senior.scrollCfg.interval
myChart.facet.scrollWithAnimation(
{ offsetY: { value: scrollHeight, animate: false } },
duration,
initScroll
)
}
} }
const showPage = computed(() => { const showPage = computed(() => {