PageModel.ets 3.47 KB
import { CompDTO, GroupDTO } from 'wdBean';
import { LazyDataSource } from 'wdKit';
import { ViewType } from 'wdConstant/src/main/ets/enum/ViewType';
import { RefreshConstants as Const } from '../utils/RefreshConstants';
import { PageUIReqBean } from '../components/page/bean/PageUIReqBean';
import { GroupInfoDTO, PageInfoDTO } from 'wdBean/src/main/ets/bean/navigation/PageInfoDTO';
import { AdvRuleBean, CompAdvBean } from 'wdBean/src/main/ets/bean/adv/AdvsRuleBean';
import { WDViewDefaultType } from '../components/view/EmptyComponent';
import { LoadStatus } from '../components/refresh/RefreshLayoutBean';
import { BaseDTO } from 'wdBean/src/main/ets/bean/component/BaseDTO';

/**
 * 页面下拉刷新、上拉加载数据bean。
 * TODO 将业务数据拆出去
 */
export default class PageModel {
  // 页面数据
  pageId: string = "";
  groupId: string = "";
  channelId: string = "";
  isRecGroup: boolean = false;
  pageInfo: PageInfoDTO = {} as PageInfoDTO
  groupList: GroupInfoDTO[] = [];
  // 当前请求数据的group
  groupData: GroupInfoDTO = {} as GroupInfoDTO;
  compList: LazyDataSource<BaseDTO> = new LazyDataSource();
  // 页面状态,刷新、加载更多等,1-首次、2-下拉、3上拉
  loadStrategy: number = 1;
  currentPage: number = 1;
  pageSize: number = Const.PAGE_SIZE;
  /**
   * @deprecated
   */
  pullDownRefreshText: Resource = $r('app.string.pull_down_refresh_text');
  /**
   * @deprecated
   */
  pullDownRefreshImage: Resource = $r('app.media.ic_pull_down_refresh');
  pullDownRefreshHeight: number = Const.CUSTOM_LAYOUT_HEIGHT;
  isVisiblePullDown: boolean = false;
  load: LoadStatus = LoadStatus.IDLE;
  /**
   * @deprecated
   */
  pullUpLoadText: Resource = $r('app.string.pull_up_load_text');
  /**
   * @deprecated
   */
  pullUpLoadImage: Resource = $r('app.media.ic_pull_up_load');
  /**
   * @deprecated
   */
  pullUpLoadHeight: number = Const.CUSTOM_LAYOUT_HEIGHT;
  isVisiblePullUpLoad: boolean = false;
  offsetY: number = 0;
  viewType: number = ViewType.LOADING;
  emptyType: WDViewDefaultType = WDViewDefaultType.WDViewDefaultType_Default
  NoNetwork: WDViewDefaultType = WDViewDefaultType.WDViewDefaultType_NoNetwork
  hasMore: boolean = true;
  startIndex = 0;
  endIndex = 0;
  downY = 0;
  lastMoveY = 0;
  isHandRefreshing:boolean = false //是否手动刷新
  isRefreshing: boolean = false;
  isCanRefresh = false;
  isPullRefreshOperation = false;
  isLoading: boolean = false;
  isCanLoadMore: boolean = false;
  refreshTimeoutTimerId: number = 0;
  loadMoreTimeoutTimerId: number = 0;
  // keyGenerator相关字符串,用于刷新list布局
  timestamp: String = '1';


  // 记录已经展示的稿件和组件数量
  pageTotalCompSize: number = 0;
  //0默认信息流,1聚合页
  pageType: number = 0;

  extra: string = ''
  // 页面加载,md5数据相关(初始缓存、下拉刷新用到)
  displayPageInfoMd5: string = ''
  displayGroupInfoMd5: string = ''
  // 第一页,最后一个comp下标,用于区分分页加载(下拉刷新,清除分页数据)
  firstPageEndIndex = -1

  loadImg: boolean = true;

  /**
   * 简单复制业务数据
   */
  bizCopy(): PageUIReqBean {
    let page = new PageUIReqBean()
    page.pageId = this.pageId
    page.groupId = this.groupId
    page.channelId = this.channelId
    page.isRecGroup = this.isRecGroup
    page.currentPage = this.currentPage
    page.pageSize = this.pageSize
    page.groupStrategy = this.groupData.groupStrategy
    page.loadStrategy = this.loadStrategy
    return page
  }
}