Showing
5 changed files
with
41 additions
and
5 deletions
| @@ -6,6 +6,7 @@ import PageAdModel from '../viewmodel/PageAdvModel'; | @@ -6,6 +6,7 @@ import PageAdModel from '../viewmodel/PageAdvModel'; | ||
| 6 | import { LoadStatus } from '../components/refresh/RefreshLayoutBean'; | 6 | import { LoadStatus } from '../components/refresh/RefreshLayoutBean'; |
| 7 | import { Logger } from 'wdKit/Index'; | 7 | import { Logger } from 'wdKit/Index'; |
| 8 | 8 | ||
| 9 | +const TAG = 'PullDownRefresh' | ||
| 9 | /***********新的下拉、上拉手势 start **********/ | 10 | /***********新的下拉、上拉手势 start **********/ |
| 10 | export function onActionStart(pageModel: PageModel, pageAdvModel: PageAdModel, event?: GestureEvent) { | 11 | export function onActionStart(pageModel: PageModel, pageAdvModel: PageAdModel, event?: GestureEvent) { |
| 11 | if (event === undefined) { | 12 | if (event === undefined) { |
| @@ -157,11 +158,22 @@ export function touchUpPullRefresh(pageModel: PageModel, pageAdvModel: PageAdMod | @@ -157,11 +158,22 @@ export function touchUpPullRefresh(pageModel: PageModel, pageAdvModel: PageAdMod | ||
| 157 | let advSelf: PageAdModel = pageAdvModel; | 158 | let advSelf: PageAdModel = pageAdvModel; |
| 158 | PageHelper.refreshUI(self, advSelf) | 159 | PageHelper.refreshUI(self, advSelf) |
| 159 | }, Const.DELAY_TIME); | 160 | }, Const.DELAY_TIME); |
| 161 | + setRefreshTimeoutTimer(pageModel) | ||
| 160 | } else { | 162 | } else { |
| 161 | closeRefresh(pageModel, false); | 163 | closeRefresh(pageModel, false); |
| 162 | } | 164 | } |
| 163 | } | 165 | } |
| 164 | 166 | ||
| 167 | +export function setRefreshTimeoutTimer(pageModel: PageModel) { | ||
| 168 | + let timeoutId = setTimeout(() => { | ||
| 169 | + closeRefresh(pageModel, false); | ||
| 170 | + Logger.error(TAG, 'closeRefresh by timeout') | ||
| 171 | + }, Const.REFRESH_TIMEOUT__TIME); | ||
| 172 | + // 取消超时关闭定时器 | ||
| 173 | + clearTimeout(pageModel.refreshTimeoutTimerId) | ||
| 174 | + pageModel.refreshTimeoutTimerId = timeoutId | ||
| 175 | +} | ||
| 176 | + | ||
| 165 | /** | 177 | /** |
| 166 | * 自动刷新接口,如首页底导,双击按钮自动刷新 | 178 | * 自动刷新接口,如首页底导,双击按钮自动刷新 |
| 167 | * @param pageModel 页面数据 | 179 | * @param pageModel 页面数据 |
| @@ -177,6 +189,7 @@ export function autoRefresh(pageModel: PageModel, pageAdvModel: PageAdModel) { | @@ -177,6 +189,7 @@ export function autoRefresh(pageModel: PageModel, pageAdvModel: PageAdModel) { | ||
| 177 | pullRefreshState(pageModel, RefreshState.Refreshing); | 189 | pullRefreshState(pageModel, RefreshState.Refreshing); |
| 178 | pageModel.currentPage = 1; | 190 | pageModel.currentPage = 1; |
| 179 | PageHelper.refreshUI(pageModel, pageAdvModel) | 191 | PageHelper.refreshUI(pageModel, pageAdvModel) |
| 192 | + setRefreshTimeoutTimer(pageModel) | ||
| 180 | } | 193 | } |
| 181 | 194 | ||
| 182 | export function pullRefreshState(pageModel: PageModel, state: number) { | 195 | export function pullRefreshState(pageModel: PageModel, state: number) { |
| @@ -225,6 +238,8 @@ export function pullRefreshState(pageModel: PageModel, state: number) { | @@ -225,6 +238,8 @@ export function pullRefreshState(pageModel: PageModel, state: number) { | ||
| 225 | 238 | ||
| 226 | export function closeRefresh(pageModel: PageModel, isRefreshSuccess: boolean) { | 239 | export function closeRefresh(pageModel: PageModel, isRefreshSuccess: boolean) { |
| 227 | let self = pageModel; | 240 | let self = pageModel; |
| 241 | + // 取消超时关闭定时器 | ||
| 242 | + clearTimeout(self.refreshTimeoutTimerId) | ||
| 228 | setTimeout(() => { | 243 | setTimeout(() => { |
| 229 | let delay = Const.RefreshConstant_DELAY_PULL_DOWN_REFRESH; | 244 | let delay = Const.RefreshConstant_DELAY_PULL_DOWN_REFRESH; |
| 230 | if (self.isCanRefresh === true) { | 245 | if (self.isCanRefresh === true) { |
| 1 | import PageModel from '../viewmodel/PageModel'; | 1 | import PageModel from '../viewmodel/PageModel'; |
| 2 | import { RefreshConstants as Const } from './RefreshConstants'; | 2 | import { RefreshConstants as Const } from './RefreshConstants'; |
| 3 | import PageHelper from '../viewmodel/PageHelper'; | 3 | import PageHelper from '../viewmodel/PageHelper'; |
| 4 | +import { Logger } from 'wdKit/Index'; | ||
| 5 | + | ||
| 6 | +const TAG = 'PullUpLoadMore' | ||
| 4 | 7 | ||
| 5 | export function touchMoveLoadMore(model: PageModel, event: TouchEvent) { | 8 | export function touchMoveLoadMore(model: PageModel, event: TouchEvent) { |
| 6 | // list size +1 | 9 | // list size +1 |
| 7 | - if (model.endIndex >= model.compList.totalCount()-3 && model.endIndex <= model.compList.totalCount()) { | 10 | + if (model.endIndex >= model.compList.totalCount() - 3 && model.endIndex <= model.compList.totalCount()) { |
| 8 | // model.offsetY = event.touches[0].y - model.downY; | 11 | // model.offsetY = event.touches[0].y - model.downY; |
| 9 | // if (Math.abs(model.offsetY) > vp2px(model.pullUpLoadHeight) / 2) { | 12 | // if (Math.abs(model.offsetY) > vp2px(model.pullUpLoadHeight) / 2) { |
| 10 | // model.isCanLoadMore = true; | 13 | // model.isCanLoadMore = true; |
| @@ -32,6 +35,7 @@ export function touchUpLoadMore(model: PageModel) { | @@ -32,6 +35,7 @@ export function touchUpLoadMore(model: PageModel) { | ||
| 32 | // closeLoadMore(model); | 35 | // closeLoadMore(model); |
| 33 | PageHelper.loadMore(self) | 36 | PageHelper.loadMore(self) |
| 34 | }, Const.DELAY_TIME); | 37 | }, Const.DELAY_TIME); |
| 38 | + setLoadMoreTimeoutTimer(self) | ||
| 35 | } else { | 39 | } else { |
| 36 | closeLoadMore(self); | 40 | closeLoadMore(self); |
| 37 | } | 41 | } |
| @@ -41,4 +45,14 @@ export function closeLoadMore(model: PageModel) { | @@ -41,4 +45,14 @@ export function closeLoadMore(model: PageModel) { | ||
| 41 | model.isCanLoadMore = false; | 45 | model.isCanLoadMore = false; |
| 42 | model.isLoading = false; | 46 | model.isLoading = false; |
| 43 | model.isVisiblePullUpLoad = false; | 47 | model.isVisiblePullUpLoad = false; |
| 48 | +} | ||
| 49 | + | ||
| 50 | +export function setLoadMoreTimeoutTimer(pageModel: PageModel) { | ||
| 51 | + let timeoutId = setTimeout(() => { | ||
| 52 | + closeLoadMore(pageModel); | ||
| 53 | + Logger.error(TAG, 'closeLoadMore by timeout') | ||
| 54 | + }, Const.REFRESH_TIMEOUT__TIME); | ||
| 55 | + // 取消超时关闭定时器 | ||
| 56 | + clearTimeout(pageModel.loadMoreTimeoutTimerId) | ||
| 57 | + pageModel.loadMoreTimeoutTimerId = timeoutId | ||
| 44 | } | 58 | } |
| @@ -14,7 +14,7 @@ export class RefreshConstants { | @@ -14,7 +14,7 @@ export class RefreshConstants { | ||
| 14 | * The delay time. | 14 | * The delay time. |
| 15 | */ | 15 | */ |
| 16 | static readonly DELAY_TIME: number = 50; | 16 | static readonly DELAY_TIME: number = 50; |
| 17 | - | 17 | + static readonly REFRESH_TIMEOUT__TIME: number = 10000; |
| 18 | /** | 18 | /** |
| 19 | * The animation duration. | 19 | * The animation duration. |
| 20 | */ | 20 | */ |
| @@ -25,12 +25,10 @@ export class RefreshConstants { | @@ -25,12 +25,10 @@ export class RefreshConstants { | ||
| 25 | static readonly RefreshConstant_DELAY_PULL_DOWN_REFRESH: number = 50; | 25 | static readonly RefreshConstant_DELAY_PULL_DOWN_REFRESH: number = 50; |
| 26 | static readonly RefreshConstant_CLOSE_PULL_DOWN_REFRESH_TIME: number = 150; | 26 | static readonly RefreshConstant_CLOSE_PULL_DOWN_REFRESH_TIME: number = 150; |
| 27 | static readonly RefreshConstant_DELAY_SHRINK_ANIMATION_TIME: number = 1500; | 27 | static readonly RefreshConstant_DELAY_SHRINK_ANIMATION_TIME: number = 1500; |
| 28 | - | ||
| 29 | /** | 28 | /** |
| 30 | * The page size. | 29 | * The page size. |
| 31 | */ | 30 | */ |
| 32 | static readonly PAGE_SIZE: number = 20; | 31 | static readonly PAGE_SIZE: number = 20; |
| 33 | - | ||
| 34 | /** | 32 | /** |
| 35 | * The refresh and load height. | 33 | * The refresh and load height. |
| 36 | */ | 34 | */ |
| @@ -59,6 +57,7 @@ export class RefreshConstants { | @@ -59,6 +57,7 @@ export class RefreshConstants { | ||
| 59 | static readonly RefreshLayout_IMAGE_WIDTH: number = 18; | 57 | static readonly RefreshLayout_IMAGE_WIDTH: number = 18; |
| 60 | static readonly RefreshLayout_IMAGE_HEIGHT: number = 18; | 58 | static readonly RefreshLayout_IMAGE_HEIGHT: number = 18; |
| 61 | } | 59 | } |
| 60 | + | ||
| 62 | /** | 61 | /** |
| 63 | * The refresh state enum. | 62 | * The refresh state enum. |
| 64 | */ | 63 | */ |
| @@ -49,6 +49,9 @@ export class PageHelper { | @@ -49,6 +49,9 @@ export class PageHelper { | ||
| 49 | } | 49 | } |
| 50 | 50 | ||
| 51 | private refreshUIEnd(pageModel: PageModel, isRefreshSuccess: boolean) { | 51 | private refreshUIEnd(pageModel: PageModel, isRefreshSuccess: boolean) { |
| 52 | + if (pageModel.loadStrategy != 2) { | ||
| 53 | + return | ||
| 54 | + } | ||
| 52 | closeRefresh(pageModel, isRefreshSuccess) | 55 | closeRefresh(pageModel, isRefreshSuccess) |
| 53 | } | 56 | } |
| 54 | 57 | ||
| @@ -119,6 +122,7 @@ export class PageHelper { | @@ -119,6 +122,7 @@ export class PageHelper { | ||
| 119 | } | 122 | } |
| 120 | }).catch((err: string | Resource) => { | 123 | }).catch((err: string | Resource) => { |
| 121 | promptAction.showToast({ message: err }); | 124 | promptAction.showToast({ message: err }); |
| 125 | + this.refreshUIEnd(pageModel, false) | ||
| 122 | }) | 126 | }) |
| 123 | } else { | 127 | } else { |
| 124 | Logger.debug(TAG, 'getPageInfo') | 128 | Logger.debug(TAG, 'getPageInfo') |
| @@ -127,6 +131,7 @@ export class PageHelper { | @@ -127,6 +131,7 @@ export class PageHelper { | ||
| 127 | if (pageInfo == null) { | 131 | if (pageInfo == null) { |
| 128 | pageModel.viewType = ViewType.EMPTY; | 132 | pageModel.viewType = ViewType.EMPTY; |
| 129 | pageModel.emptyType = WDViewDefaultType.WDViewDefaultType_NoContent1; | 133 | pageModel.emptyType = WDViewDefaultType.WDViewDefaultType_NoContent1; |
| 134 | + this.refreshUIEnd(pageModel, false) | ||
| 130 | return; | 135 | return; |
| 131 | } | 136 | } |
| 132 | pageModel.pageInfo = pageInfo; | 137 | pageModel.pageInfo = pageInfo; |
| @@ -146,6 +151,7 @@ export class PageHelper { | @@ -146,6 +151,7 @@ export class PageHelper { | ||
| 146 | Logger.debug(TAG, 'getPageInfo go on') | 151 | Logger.debug(TAG, 'getPageInfo go on') |
| 147 | this.parseGroup(pageModel, false) | 152 | this.parseGroup(pageModel, false) |
| 148 | }).catch(() => { | 153 | }).catch(() => { |
| 154 | + this.refreshUIEnd(pageModel, false) | ||
| 149 | if (this.isPageLoaded(pageModel)) { | 155 | if (this.isPageLoaded(pageModel)) { |
| 150 | return | 156 | return |
| 151 | } | 157 | } |
| @@ -406,7 +412,7 @@ export class PageHelper { | @@ -406,7 +412,7 @@ export class PageHelper { | ||
| 406 | /** | 412 | /** |
| 407 | * 竖直方向list,将数据拆出来,组装成comp | 413 | * 竖直方向list,将数据拆出来,组装成comp |
| 408 | */ | 414 | */ |
| 409 | - private createSpecialComp(compList: CompDTO[]): CompDTO[]{ | 415 | + private createSpecialComp(compList: CompDTO[]): CompDTO[] { |
| 410 | if (!compList) { | 416 | if (!compList) { |
| 411 | return compList | 417 | return compList |
| 412 | } | 418 | } |
| @@ -50,6 +50,8 @@ export default class PageModel { | @@ -50,6 +50,8 @@ export default class PageModel { | ||
| 50 | isPullRefreshOperation = false; | 50 | isPullRefreshOperation = false; |
| 51 | isLoading: boolean = false; | 51 | isLoading: boolean = false; |
| 52 | isCanLoadMore: boolean = false; | 52 | isCanLoadMore: boolean = false; |
| 53 | + refreshTimeoutTimerId: number = 0; | ||
| 54 | + loadMoreTimeoutTimerId: number = 0; | ||
| 53 | // keyGenerator相关字符串,用于刷新list布局 | 55 | // keyGenerator相关字符串,用于刷新list布局 |
| 54 | timestamp: String = '1'; | 56 | timestamp: String = '1'; |
| 55 | 57 |
-
Please register or login to post a comment