Toggle navigation
Toggle navigation
This project
Loading...
Sign in
developOne
/
harmonyPool
Go to a project
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
zhangbo1_wd
2024-05-21 16:19:07 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
d9494943375c1f3d310811a8db0610a40a183e14
d9494943
1 parent
9c9400b7
首页,下拉刷新,md5判断拦截
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
83 additions
and
12 deletions
sight_harmony/commons/wdKit/src/main/ets/utils/LazyDataSource.ets
sight_harmony/features/wdComponent/src/main/ets/components/cardViewAdv/CardAdvBottom.ets
sight_harmony/features/wdComponent/src/main/ets/components/cardViewAdv/CardAdvTop.ets
sight_harmony/features/wdComponent/src/main/ets/viewmodel/PageHelper.ets
sight_harmony/features/wdComponent/src/main/ets/viewmodel/PageModel.ets
sight_harmony/commons/wdKit/src/main/ets/utils/LazyDataSource.ets
View file @
d949494
...
...
@@ -171,6 +171,24 @@ export class LazyDataSource<T> extends BasicDataSource<T> {
}
}
// 删除index指定索引位置的元素
public deleteItems(startIndex: number, count?: number): void {
if (startIndex < 0) {
return
}
this.dataArray.splice(startIndex, count || (this.dataArray.length - startIndex));
let to = 0
if (count == undefined) {
to = this.dataArray.length - 1
} else {
to = count + startIndex
if (to >= this.dataArray.length) {
to = this.dataArray.length - 1;
}
}
this.notifyDataMove(startIndex, to);
}
// 删除最后1个元素
public pop(): void {
this.deleteItem()
...
...
sight_harmony/features/wdComponent/src/main/ets/components/cardViewAdv/CardAdvBottom.ets
View file @
d949494
import { CompDTO } from 'wdBean/Index';
import { DateTimeUtils, Logger } from 'wdKit/Index';
import { PageHelper } from '../../viewmodel/PageHelper';
import PageModel from '../../viewmodel/PageModel';
/**
...
...
@@ -61,6 +62,7 @@ export struct CardAdvBottom {
}
if (currentIndex >= 0) {
this.pageModel.compList.deleteItem(currentIndex)
PageHelper.updateFirstPageEndIndex(this.pageModel, true, currentIndex)
}
}
}
...
...
sight_harmony/features/wdComponent/src/main/ets/components/cardViewAdv/CardAdvTop.ets
View file @
d949494
import { CompDTO } from 'wdBean/Index';
import { DateTimeUtils, Logger } from 'wdKit/Index';
import {PageHelper} from '../../viewmodel/PageHelper';
import PageModel from '../../viewmodel/PageModel';
/**
...
...
@@ -73,6 +74,7 @@ export struct CardAdvTop {
}
if (currentIndex >= 0) {
this.pageModel.compList.deleteItem(currentIndex)
PageHelper.updateFirstPageEndIndex(this.pageModel, true, currentIndex)
}
}
}
...
...
sight_harmony/features/wdComponent/src/main/ets/viewmodel/PageHelper.ets
View file @
d949494
...
...
@@ -80,7 +80,7 @@ export class PageHelper {
return;
}
pageModel.pageInfo = pageInfo;
pageModel.
cache
PageInfoMd5 = pageInfo.md5
pageModel.
display
PageInfoMd5 = pageInfo.md5
//解析页面挂角广告资源
pageAdvModel.analysisAdvSource(pageInfo);
this.parseGroup(pageModel, true)
...
...
@@ -129,7 +129,7 @@ export class PageHelper {
return;
}
pageModel.pageInfo = pageInfo;
if (pageInfo.md5 == pageModel.
cache
PageInfoMd5) {
if (pageInfo.md5 == pageModel.
display
PageInfoMd5) {
// 缓存一致,不解析
Logger.debug(TAG, 'getPageInfo 与缓存一致,不解析广告。。。')
} else {
...
...
@@ -138,6 +138,7 @@ export class PageHelper {
// 保存缓存
CacheData.saveCacheData(CacheData.comPageInfoCacheKey + pageModel.pageId, pageInfo, pageInfo.md5)
}
pageModel.displayPageInfoMd5 = pageInfo.md5
//解析页面挂角广告资源
pageAdvModel.analysisAdvSource(pageInfo);
}
...
...
@@ -185,15 +186,25 @@ export class PageHelper {
Logger.debug(TAG, 'parseGroup isCache: ' + isCache)
if (isCache) {
pageDto = await PageViewModel.getPageGroupCacheData(pageModel.bizCopy()) as PageDTO
pageModel.
cache
GroupInfoMd5 = pageDto.md5
pageModel.
display
GroupInfoMd5 = pageDto.md5
} else {
pageDto = await PageViewModel.getPageGroupCompData(pageModel.bizCopy()) as PageDTO
if (pageDto.md5 == pageModel.
cache
GroupInfoMd5) {
if (pageDto.md5 == pageModel.
display
GroupInfoMd5) {
Logger.debug(TAG, 'parseGroup cache load, return: ' + pageDto.md5)
// 缓存数据一致,不再刷新
// 下拉刷新场景,数据没变,拦截刷新UI,重置相关参数
if (pageModel.loadStrategy === 2) {
// 缓存数据一致,不再刷新
this.refreshUIEnd(pageModel, true)
// 第一页不刷新,分页数据清除
pageModel.hasMore = true
this.deleteMorePage(pageModel)
pageModel.pageTotalCompSize = pageModel.compList.size()
}
pageModel.currentPage++
return
}
Logger.debug(TAG, 'parseGroup cache load, save: ')
pageModel.displayGroupInfoMd5 = pageDto.md5
Logger.debug(TAG, 'parseGroup cache load, save: ' + pageDto.md5)
// 保存缓存
CacheData.saveCacheData(CacheData.compGroupInfoDataCacheKey + pageModel.pageId + pageModel.groupId, pageDto,
pageDto.md5)
...
...
@@ -238,9 +249,11 @@ export class PageHelper {
// 批查互动数据
this.allCompBatchRequest(pageInfo.oneRequestPageGroupCompList.convertToArray(), pageModel)
//
pageModel.currentPage++
// 记录第一页数量
this.saveFirstPageEndIndex(pageModel)
if (!isCache) {
pageModel.currentPage++
}
pageModel.viewType = ViewType.LOADED
this.refreshUIEnd(pageModel, true)
...
...
@@ -754,6 +767,40 @@ export class PageHelper {
}
}
saveFirstPageEndIndex(pageModel: PageModel) {
pageModel.firstPageEndIndex = pageModel.compList.size() - 1
}
static updateFirstPageEndIndex(pageModel: PageModel, isDel: boolean, index: number) {
if (index > pageModel.firstPageEndIndex) {
return
}
// 这里默认删除、添加都是一条一条处理
let count = 1
let endIndex = pageModel.firstPageEndIndex
if (isDel) {
// 第一页里删除
let offset = Math.min(endIndex - index, count)
endIndex = endIndex - offset
} else {
// 第一页里添加
endIndex = endIndex + count
}
pageModel.firstPageEndIndex = endIndex
}
/**
* 删除分页数据,保留第一页的数据。(下拉刷新场景用到)
*/
deleteMorePage(pageModel: PageModel) {
Logger.debug(TAG, 'deleteMorePage endindex: ' + pageModel.firstPageEndIndex)
if (pageModel.firstPageEndIndex < 0) {
return
}
// 从第二页开始删
pageModel.compList.deleteItems(pageModel.firstPageEndIndex + 1)
}
}
...
...
sight_harmony/features/wdComponent/src/main/ets/viewmodel/PageModel.ets
View file @
d949494
...
...
@@ -63,9 +63,11 @@ export default class PageModel {
pageType: number = 0;
extra: string = ''
// 缓存数据相关
cachePageInfoMd5: string = ''
cacheGroupInfoMd5: string = ''
// 页面加载,md5数据相关(初始缓存、下拉刷新用到)
displayPageInfoMd5: string = ''
displayGroupInfoMd5: string = ''
// 第一页,最后一个comp下标,用于区分分页加载(下拉刷新,清除分页数据)
firstPageEndIndex = -1
/**
* 简单复制业务数据
...
...
Please
register
or
login
to post a comment