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-23 17:42:29 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
a3c85bd19bc807ab256fc028799efde917bf6a8b
a3c85bd1
1 parent
6eac2dcd
下拉刷新加超时保护
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
41 additions
and
5 deletions
sight_harmony/features/wdComponent/src/main/ets/utils/PullDownRefresh.ets
sight_harmony/features/wdComponent/src/main/ets/utils/PullUpLoadMore.ets
sight_harmony/features/wdComponent/src/main/ets/utils/RefreshConstants.ets
sight_harmony/features/wdComponent/src/main/ets/viewmodel/PageHelper.ets
sight_harmony/features/wdComponent/src/main/ets/viewmodel/PageModel.ets
sight_harmony/features/wdComponent/src/main/ets/utils/PullDownRefresh.ets
View file @
a3c85bd
...
...
@@ -6,6 +6,7 @@ import PageAdModel from '../viewmodel/PageAdvModel';
import { LoadStatus } from '../components/refresh/RefreshLayoutBean';
import { Logger } from 'wdKit/Index';
const TAG = 'PullDownRefresh'
/***********新的下拉、上拉手势 start **********/
export function onActionStart(pageModel: PageModel, pageAdvModel: PageAdModel, event?: GestureEvent) {
if (event === undefined) {
...
...
@@ -157,11 +158,22 @@ export function touchUpPullRefresh(pageModel: PageModel, pageAdvModel: PageAdMod
let advSelf: PageAdModel = pageAdvModel;
PageHelper.refreshUI(self, advSelf)
}, Const.DELAY_TIME);
setRefreshTimeoutTimer(pageModel)
} else {
closeRefresh(pageModel, false);
}
}
export function setRefreshTimeoutTimer(pageModel: PageModel) {
let timeoutId = setTimeout(() => {
closeRefresh(pageModel, false);
Logger.error(TAG, 'closeRefresh by timeout')
}, Const.REFRESH_TIMEOUT__TIME);
// 取消超时关闭定时器
clearTimeout(pageModel.refreshTimeoutTimerId)
pageModel.refreshTimeoutTimerId = timeoutId
}
/**
* 自动刷新接口,如首页底导,双击按钮自动刷新
* @param pageModel 页面数据
...
...
@@ -177,6 +189,7 @@ export function autoRefresh(pageModel: PageModel, pageAdvModel: PageAdModel) {
pullRefreshState(pageModel, RefreshState.Refreshing);
pageModel.currentPage = 1;
PageHelper.refreshUI(pageModel, pageAdvModel)
setRefreshTimeoutTimer(pageModel)
}
export function pullRefreshState(pageModel: PageModel, state: number) {
...
...
@@ -225,6 +238,8 @@ export function pullRefreshState(pageModel: PageModel, state: number) {
export function closeRefresh(pageModel: PageModel, isRefreshSuccess: boolean) {
let self = pageModel;
// 取消超时关闭定时器
clearTimeout(self.refreshTimeoutTimerId)
setTimeout(() => {
let delay = Const.RefreshConstant_DELAY_PULL_DOWN_REFRESH;
if (self.isCanRefresh === true) {
...
...
sight_harmony/features/wdComponent/src/main/ets/utils/PullUpLoadMore.ets
View file @
a3c85bd
import PageModel from '../viewmodel/PageModel';
import { RefreshConstants as Const } from './RefreshConstants';
import PageHelper from '../viewmodel/PageHelper';
import { Logger } from 'wdKit/Index';
const TAG = 'PullUpLoadMore'
export function touchMoveLoadMore(model: PageModel, event: TouchEvent) {
// list size +1
if (model.endIndex >= model.compList.totalCount()
-
3 && model.endIndex <= model.compList.totalCount()) {
if (model.endIndex >= model.compList.totalCount()
-
3 && model.endIndex <= model.compList.totalCount()) {
// model.offsetY = event.touches[0].y - model.downY;
// if (Math.abs(model.offsetY) > vp2px(model.pullUpLoadHeight) / 2) {
// model.isCanLoadMore = true;
...
...
@@ -32,6 +35,7 @@ export function touchUpLoadMore(model: PageModel) {
// closeLoadMore(model);
PageHelper.loadMore(self)
}, Const.DELAY_TIME);
setLoadMoreTimeoutTimer(self)
} else {
closeLoadMore(self);
}
...
...
@@ -41,4 +45,14 @@ export function closeLoadMore(model: PageModel) {
model.isCanLoadMore = false;
model.isLoading = false;
model.isVisiblePullUpLoad = false;
}
export function setLoadMoreTimeoutTimer(pageModel: PageModel) {
let timeoutId = setTimeout(() => {
closeLoadMore(pageModel);
Logger.error(TAG, 'closeLoadMore by timeout')
}, Const.REFRESH_TIMEOUT__TIME);
// 取消超时关闭定时器
clearTimeout(pageModel.loadMoreTimeoutTimerId)
pageModel.loadMoreTimeoutTimerId = timeoutId
}
\ No newline at end of file
...
...
sight_harmony/features/wdComponent/src/main/ets/utils/RefreshConstants.ets
View file @
a3c85bd
...
...
@@ -14,7 +14,7 @@ export class RefreshConstants {
* The delay time.
*/
static readonly DELAY_TIME: number = 50;
static readonly REFRESH_TIMEOUT__TIME: number = 10000;
/**
* The animation duration.
*/
...
...
@@ -25,12 +25,10 @@ export class RefreshConstants {
static readonly RefreshConstant_DELAY_PULL_DOWN_REFRESH: number = 50;
static readonly RefreshConstant_CLOSE_PULL_DOWN_REFRESH_TIME: number = 150;
static readonly RefreshConstant_DELAY_SHRINK_ANIMATION_TIME: number = 1500;
/**
* The page size.
*/
static readonly PAGE_SIZE: number = 20;
/**
* The refresh and load height.
*/
...
...
@@ -59,6 +57,7 @@ export class RefreshConstants {
static readonly RefreshLayout_IMAGE_WIDTH: number = 18;
static readonly RefreshLayout_IMAGE_HEIGHT: number = 18;
}
/**
* The refresh state enum.
*/
...
...
sight_harmony/features/wdComponent/src/main/ets/viewmodel/PageHelper.ets
View file @
a3c85bd
...
...
@@ -49,6 +49,9 @@ export class PageHelper {
}
private refreshUIEnd(pageModel: PageModel, isRefreshSuccess: boolean) {
if (pageModel.loadStrategy != 2) {
return
}
closeRefresh(pageModel, isRefreshSuccess)
}
...
...
@@ -119,6 +122,7 @@ export class PageHelper {
}
}).catch((err: string | Resource) => {
promptAction.showToast({ message: err });
this.refreshUIEnd(pageModel, false)
})
} else {
Logger.debug(TAG, 'getPageInfo')
...
...
@@ -127,6 +131,7 @@ export class PageHelper {
if (pageInfo == null) {
pageModel.viewType = ViewType.EMPTY;
pageModel.emptyType = WDViewDefaultType.WDViewDefaultType_NoContent1;
this.refreshUIEnd(pageModel, false)
return;
}
pageModel.pageInfo = pageInfo;
...
...
@@ -146,6 +151,7 @@ export class PageHelper {
Logger.debug(TAG, 'getPageInfo go on')
this.parseGroup(pageModel, false)
}).catch(() => {
this.refreshUIEnd(pageModel, false)
if (this.isPageLoaded(pageModel)) {
return
}
...
...
@@ -406,7 +412,7 @@ export class PageHelper {
/**
* 竖直方向list,将数据拆出来,组装成comp
*/
private createSpecialComp(compList: CompDTO[]): CompDTO[]{
private createSpecialComp(compList: CompDTO[]): CompDTO[]
{
if (!compList) {
return compList
}
...
...
sight_harmony/features/wdComponent/src/main/ets/viewmodel/PageModel.ets
View file @
a3c85bd
...
...
@@ -50,6 +50,8 @@ export default class PageModel {
isPullRefreshOperation = false;
isLoading: boolean = false;
isCanLoadMore: boolean = false;
refreshTimeoutTimerId: number = 0;
loadMoreTimeoutTimerId: number = 0;
// keyGenerator相关字符串,用于刷新list布局
timestamp: String = '1';
...
...
Please
register
or
login
to post a comment