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
王士厅
2024-08-21 18:26:42 +0800
Browse Files
Options
Browse Files
Download
Plain Diff
Commit
9010f7af22fc5117265846530537584fb71da33d
9010f7af
2 parents
3cbc4b4c
b9592eef
Merge branch 'main' of
http://192.168.1.42/developOne/harmonyPool
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
614 additions
and
106 deletions
sight_harmony/AppScope/resources/rawfile/home_bottom_data_product.json
sight_harmony/features/wdComponent/src/main/ets/components/DynamicDetailComponent.ets
sight_harmony/features/wdComponent/src/main/ets/components/MorningEveningPaper/MorningEveningPaperComponent.ets
sight_harmony/features/wdComponent/src/main/ets/components/peopleShip/PeopleShipMainComponent.ets
sight_harmony/features/wdComponent/src/main/ets/dialog/ENewspaperListDialog.ets
sight_harmony/features/wdComponent/src/main/ets/utils/NewPullDownRefresh.ets
sight_harmony/features/wdComponent/src/main/ets/utils/NewPullUpLoadMore.ets
sight_harmony/features/wdComponent/src/main/ets/viewmodel/NewPageHelper.ets
sight_harmony/features/wdDetailPlayLive/src/main/ets/widgets/details/video/PlayUIComponent.ets
sight_harmony/features/wdDetailPlayLive/src/main/ets/widgets/vertical/PlayerTitleComponent.ets
sight_harmony/AppScope/resources/rawfile/home_bottom_data_product.json
View file @
9010f7a
...
...
@@ -9,7 +9,7 @@
"nightIconCUrl"
:
""
,
"nightNameColor"
:
""
,
"channelChooseActionUrl"
:
""
,
"icon"
:
"https://cdnjdphoto.aikan.pdnews.cn/sjbj-202
40516/image/display/921fd11c21b0441b91753710d979994
7.png"
,
"icon"
:
"https://cdnjdphoto.aikan.pdnews.cn/sjbj-202
31015/image/display/a59ee3978357490bb58cbc378d70b55
7.png"
,
"immersiveNameCColor"
:
""
,
"type"
:
"1"
,
"morningAndEveningUrl"
:
""
,
...
...
sight_harmony/features/wdComponent/src/main/ets/components/DynamicDetailComponent.ets
View file @
9010f7a
...
...
@@ -173,10 +173,15 @@ export struct DynamicDetailComponent {
Image(this.contentDetailData.rmhInfo?.rmhHeadUrl)
.alt(this.contentDetailData.rmhInfo?.userType == '1' ? $r('app.media.default_head') :
$r('app.media.icon_default_head_mater'))
.width($r('app.float.margin_32'))
.height($r('app.float.margin_32'))
.width($r('app.float.margin_36'))
.height($r('app.float.margin_36'))
.objectFit(ImageFit.Cover)
.borderRadius($r('app.float.margin_16'))
.borderRadius(50)
.border({
width: 0.5,
color: '#0D000000', // 5% 透明度的黑色
style: BorderStyle.Solid
})
Image(this.contentDetailData.rmhInfo?.honoraryIcon)
.width($r('app.float.margin_48'))
.height($r('app.float.margin_48'))
...
...
@@ -185,12 +190,12 @@ export struct DynamicDetailComponent {
if (!StringUtils.isEmpty(this.contentDetailData.rmhInfo?.authIcon)) {
Stack() {
Image(this.contentDetailData.rmhInfo?.authIcon)
.width($r('app.float.vp_12'))
.height($r('app.float.vp_12'))
.width($r('app.float.vp_14'))
.height($r('app.float.vp_14'))
.objectFit(ImageFit.Cover)
}
.width($r('app.float.margin_48'))
.height($r('app.float.margin_48'))
.width($r('app.float.margin_36'))
.height($r('app.float.margin_36'))
.alignContent(Alignment.BottomEnd)
}
}
...
...
@@ -209,24 +214,32 @@ export struct DynamicDetailComponent {
Column() {
//昵称
Text(this.contentDetailData.rmhInfo?.rmhName)
.fontSize(
$r('app.float.font_size_14')
)
.fontSize(
15
)
.fontColor($r('app.color.color_222222'))
.fontWeight(FontWeight.Medium)
.margin({ left: $r('app.float.margin_5') })
.fontWeight(600)
.alignSelf(ItemAlign.Start)
.height(21)
.lineHeight(21)
.margin({bottom: 1})
// .fontSize($r('app.float.font_size_14'))
// .fontColor($r('app.color.color_222222'))
// .fontWeight(FontWeight.Medium)
// .margin({ left: $r('app.float.margin_5') })
// .alignSelf(ItemAlign.Start)
//简介
Text(this.contentDetailData.rmhInfo?.rmhDesc)
.fontSize($r('app.float.font_size_1
4
'))
.fontSize($r('app.float.font_size_1
2
'))
.fontColor($r('app.color.color_B0B0B0'))
.fontWeight(FontWeight.Medium)
.maxLines(1)
.textOverflow({ overflow: TextOverflow.Ellipsis })
.margin({ left: $r('app.float.margin_5') })
.alignSelf(ItemAlign.Start)
.height(14)
.lineHeight(14)
}
.width('
63
%')
.width('
70
%')
.margin({ right: $r('app.float.margin_6') })
Blank()
if (!StringUtils.isEmpty(this.followStatus)) {
if (this.followStatus == '0') {
Row() {
...
...
@@ -272,25 +285,22 @@ export struct DynamicDetailComponent {
})
}
}
}
.width('100%')
.margin({ left: $r('app.float.margin_16') })
//内容
Text(StringUtils.isEmpty(this.contentDetailData.newsContent)
? StringUtils.isEmpty(this.contentDetailData.newsSummary)
? this.contentDetailData.newsTitle
: this.contentDetailData.newsSummary
: this.contentDetailData.newsContent)
}.padding({
left: $r('app.float.vp_16')
, right: $r('app.float.vp_16')
})
//标题
Text(this.titleText())
.fontColor($r('app.color.color_222222'))
.fontSize($r('app.float.font_size_18'))
.lineHeight($r('app.float.margin_25'))
.margin({
.width('100%')
.padding({
top: $r('app.float.margin_6')
, left: $r('app.float.margin_16')
, right: $r('app.float.margin_16')
, left: $r('app.float.vp_16')
, right: $r('app.float.margin_6')
})
.alignSelf(ItemAlign.Start)
//内容
if (this.contentDetailData.newsType + "" == ContentConstants.TYPE_FOURTEEN) {
//附件内容:图片/视频
if (this.contentDetailData.photoList != null && this.contentDetailData.photoList.length > 0) {
...
...
@@ -637,6 +647,16 @@ export struct DynamicDetailComponent {
.height('100%')
}
private titleText() {
if(!StringUtils.isEmpty(this.contentDetailData.newsContent)){
return this.contentDetailData.newsContent
}
if(StringUtils.isEmpty(this.contentDetailData.newsSummary)){
return this.contentDetailData.newsTitle
}
return this.contentDetailData.newsSummary
}
/**
* 请求(动态)详情页数据
* */
...
...
sight_harmony/features/wdComponent/src/main/ets/components/MorningEveningPaper/MorningEveningPaperComponent.ets
View file @
9010f7a
...
...
@@ -379,7 +379,7 @@ export struct MorningEveningPaperComponent {
Image(this.currentStatus === PlayerConstants.STATUS_START ? $r("app.media.icon_audio_pause_svg") : $r("app.media.icon_audio_playing_svg"))
.width(20)
.height(20)
.margin({ left:
10
})// .alignSelf(ItemAlign.Center)
.margin({ left:
this.currentStatus === PlayerConstants.STATUS_START ?6:9
})// .alignSelf(ItemAlign.Center)
.objectFit(ImageFit.Contain)
.onClick(() => {
console.log("TAG", "cj compInfoBean onClick1 = " + this.isAudioPlaying)
...
...
sight_harmony/features/wdComponent/src/main/ets/components/peopleShip/PeopleShipMainComponent.ets
View file @
9010f7a
...
...
@@ -2,6 +2,8 @@ import { PeopleShipRecommendComponent } from './PeopleShipRecommendComponent';
import { PeopleShipMainViewModel } from '../../viewmodel/PeopleShipMainViewModel';
import { HttpUtils } from 'wdNetwork/Index';
import { Logger, DateTimeUtils, EmitterEventId, EmitterUtils } from 'wdKit';
import { autoRefresh, onActionEnd, onActionStart, onActionUpdate,closeRefresh } from '../../utils/NewPullDownRefresh';
import {
RmhRecommendDTO,
ContentDTO,
...
...
@@ -27,6 +29,12 @@ import { PeopleShipNoMoreData } from '../reusable/PeopleShipNoMoreData';
import PageFollowHelper from '../../viewmodel/PageFollowHelper';
import { MineFollowListItem } from '../../viewmodel/MineFollowListItem';
import { GrayManageModel } from '../../viewmodel/GrayManageModel';
import RefreshLayout from '../refresh/RefreshLayout';
import { RefreshLayoutBean } from '../refresh/RefreshLayoutBean';
import { CommonConstants } from 'wdConstant';
import PageNoMoreLayout from '../page/PageNoMoreLayout';
import LoadMoreLayout from '../page/LoadMoreLayout';
import { NoMoreBean } from '../page/NoMoreBean';
const TAG = 'PeopleShipMainComponent';
...
...
@@ -63,76 +71,133 @@ export struct PeopleShipMainComponent {
@State private pageAttentionChange: boolean = false
// 国殇灰度管理
GrayManage: SubscribedAbstractProperty<GrayManageModel> = AppStorage.link<GrayManageModel>('GrayManage')
private panOption: PanGestureOptions = new PanGestureOptions({ direction: PanDirection.Up | PanDirection.Down })
///刷新请求
onRefresh: () => void = () => {
this.currentPage = 1
this.getData()
}
onRefreshMore: () => void = () => {
this.currentPage++;
this.getAttentionContentListData()
}
build() {
if (this.viewType == ViewType.LOADING) {
this.LoadingLayout()
} else if (this.viewType == ViewType.ERROR) {
//缺省页
EmptyComponent({
emptyType: this.pageModel.emptyType,
emptyButton: true,
retry: () => {
this.getData()
}
})
.grayscale(this.GrayManage.get().isRmhMourning(`${this.channelId}`) ? 1 : 0)
} else if (this.viewType == ViewType.EMPTY) {
//缺省页
EmptyComponent({
emptyType: this.pageModel.emptyType,
emptyButton: true,
retry: () => {
this.getData()
}
})
.grayscale(this.GrayManage.get().isRmhMourning(`${this.channelId}`) ? 1 : 0)
} else {
if (this.followList.length == 0) {
CustomPullToRefresh({
alldata: this.rmhList,
scroller: this.listScroller,
hasMore: false,
customList: () => {
this.ListLayout()
},
onRefresh: (resolve) => {
this.currentPage = 1
this.getData(resolve)
},
Column(){
if (this.viewType == ViewType.LOADING) {
this.LoadingLayout()
} else if (this.viewType == ViewType.ERROR) {
//缺省页
EmptyComponent({
emptyType: this.pageModel.emptyType,
emptyButton: true,
retry: () => {
this.getData()
}
})
} else {
CustomPullToRefresh({
alldata: this.attentionList,
scroller: this.listScroller,
hasMore: this.hasMore,
customList: () => {
this.ListAttentionLayout()
},
onRefresh: (resolve) => {
this.currentPage = 1
this.getData(resolve)
},
onLoadMore: (resolve) => {
if (this.hasMore === false) {
if (resolve) {
resolve('')
}
return
}
if (!this.isLoading && this.hasMore) {
//加载分页数据
this.currentPage++;
this.getAttentionContentListData(resolve)
} else {
if (resolve) {
resolve('')
}
}
},
.grayscale(this.GrayManage.get().isRmhMourning(`${this.channelId}`) ? 1 : 0)
} else if (this.viewType == ViewType.EMPTY) {
//缺省页
EmptyComponent({
emptyType: this.pageModel.emptyType,
emptyButton: true,
retry: () => {
this.getData()
}
})
.grayscale(this.GrayManage.get().isRmhMourning(`${this.channelId}`) ? 1 : 0)
}else {
if (this.followList.length == 0) {
this.ListLayout()
} else {
this.ListAttentionLayout()
}
}
}
.parallelGesture(
PanGesture(this.panOption)
.onActionStart((event?: GestureEvent) => {
this.pageModel.isVisiblePullDown = true
onActionStart(this.pageModel, event)
})
.onActionUpdate((event?: GestureEvent) => {
onActionUpdate(this.pageModel, event,this.onRefreshMore)
})
.onActionEnd(() => {
onActionEnd(this.pageModel,this.onRefresh)
})
)
// if (this.viewType == ViewType.LOADING) {
// this.LoadingLayout()
// } else if (this.viewType == ViewType.ERROR) {
// //缺省页
// EmptyComponent({
// emptyType: this.pageModel.emptyType,
// emptyButton: true,
// retry: () => {
// this.getData()
// }
// })
// .grayscale(this.GrayManage.get().isRmhMourning(`${this.channelId}`) ? 1 : 0)
// } else if (this.viewType == ViewType.EMPTY) {
// //缺省页
// EmptyComponent({
// emptyType: this.pageModel.emptyType,
// emptyButton: true,
// retry: () => {
// this.getData()
// }
// })
// .grayscale(this.GrayManage.get().isRmhMourning(`${this.channelId}`) ? 1 : 0)
// } else {
// if (this.followList.length == 0) {
// CustomPullToRefresh({
// alldata: this.rmhList,
// scroller: this.listScroller,
// hasMore: false,
// customList: () => {
// this.ListLayout()
// },
// onRefresh: (resolve) => {
// this.currentPage = 1
// this.getData(resolve)
// },
// })
// } else {
// CustomPullToRefresh({
// alldata: this.attentionList,
// scroller: this.listScroller,
// hasMore: this.hasMore,
// customList: () => {
// this.ListAttentionLayout()
// },
// onRefresh: (resolve) => {
// this.currentPage = 1
// this.getData(resolve)
// },
// onLoadMore: (resolve) => {
// if (this.hasMore === false) {
// if (resolve) {
// resolve('')
// }
// return
// }
// if (!this.isLoading && this.hasMore) {
// //加载分页数据
// this.currentPage++;
// this.getAttentionContentListData(resolve)
// } else {
// if (resolve) {
// resolve('')
// }
// }
// },
// })
// }
// }
}
@Builder
...
...
@@ -145,6 +210,14 @@ export struct PeopleShipMainComponent {
ListLayout() {
List({ scroller: this.listScroller }) {
ListItem() {
RefreshLayout({
refreshBean: new RefreshLayoutBean(this.pageModel.isVisiblePullDown, this.pageModel.load,
this.pageModel.offsetY)
})
}
.grayscale(this.GrayManage.get().isRmhMourning(`${this.channelId}`) ? 1 : 0)
// 头部关注列表
ListItem() {
PeopleShipRecommendComponent({
...
...
@@ -164,7 +237,15 @@ export struct PeopleShipMainComponent {
@Builder
ListAttentionLayout() {
List({ scroller: this.listScroller }) {
// 头部关注列表
ListItem() {
RefreshLayout({
refreshBean: new RefreshLayoutBean(this.pageModel.isVisiblePullDown, this.pageModel.load,
this.pageModel.offsetY)
})
}
.grayscale(this.GrayManage.get().isRmhMourning(`${this.channelId}`) ? 1 : 0)
// // 头部关注列表
ListItem() {
PeopleShipAttentionContentListTopComponent({
followList: this.followList
...
...
@@ -185,10 +266,18 @@ export struct PeopleShipMainComponent {
}, (item: ContentDTO, index: number) => item.objectId + index.toString())
// // 加载更多
// ListItem() {
// if (!this.hasMore && !this.isLoading) {
// PeopleShipNoMoreData()
// }
// }
// 加载更多
ListItem() {
if (!this.hasMore && !this.isLoading) {
PeopleShipNoMoreData()
if (this.pageModel.hasMore) {
LoadMoreLayout({ isVisible: this.pageModel.isVisiblePullUpLoad })
} else {
PageNoMoreLayout({ noMoreBean: new NoMoreBean(this.pageModel.pageInfo.baselineCopywriting) })
}
}
.grayscale(this.GrayManage.get().isRmhMourning(`${this.channelId}`) ? 1 : 0)
...
...
@@ -197,6 +286,12 @@ export struct PeopleShipMainComponent {
.scrollBar(BarState.Off)
.width('100%')
.height('100%')
.onScrollIndex((start: number, end: number) => {
// Listen to the first index of the current list.
this.pageModel.startIndex = start;
// 包含了 头尾item,判断时需要考虑+3
this.pageModel.endIndex = end - 2;
})
}
aboutToAppear() {
...
...
@@ -271,10 +366,12 @@ export struct PeopleShipMainComponent {
if (resolve) {
resolve('已更新至最新')
}
this.closeRefresh(true)
} catch (exception) {
if (resolve) {
resolve('')
}
this.closeRefresh(false)
this.viewType = ViewType.ERROR
this.changeButton = false
this.isLoading = false
...
...
@@ -297,14 +394,17 @@ export struct PeopleShipMainComponent {
if (listData && listData.list && listData.list.length > 0) {
if (listData.list.length === 20) {
this.hasMore = true;
this.pageModel.hasMore = true
} else {
this.hasMore = false;
this.pageModel.hasMore = false
}
//批量查询各类型内容动态数据接口
this.checkContentInteractData(listData.list, resolve,myFollowInfor)
} else {
this.hasMore = false;
this.pageModel.hasMore = false
this.resolveEnd(true, resolve)
}
...
...
@@ -362,8 +462,11 @@ export struct PeopleShipMainComponent {
this.attentionList[i].isMourning = true;
}
}
this.pageModel.compList.clear()
this.pageModel.compList.push(...this.attentionList)
this.closeRefresh(true)
} catch (exception) {
this.closeRefresh(false)
this.resolveEnd(false, resolve)
}
}
...
...
@@ -455,7 +558,11 @@ export struct PeopleShipMainComponent {
// 当前页面,自动刷新数据
Logger.debug(TAG, 'page onAutoRefresh ' + this.autoRefresh)
this.listScroller.scrollToIndex(0)
this.currentPage = 1
this.getData()
autoRefresh(this.pageModel,this.onRefresh)
}
closeRefresh(isRefreshSuccess:boolean){
closeRefresh(this.pageModel,isRefreshSuccess)
}
}
\ No newline at end of file
...
...
sight_harmony/features/wdComponent/src/main/ets/dialog/ENewspaperListDialog.ets
View file @
9010f7a
...
...
@@ -194,8 +194,8 @@ export struct ENewspaperListDialog {
Column() {
if (positionItem.shortTitle) {
Text(positionItem.shortTitle)
.fontSize($r('app.float.font_size_17'))
.lineHeight(25)
.fontSize($r('app.float.font_size_14'))
.lineHeight(21)
.fontColor($r('app.color.color_222222'))
.fontWeight(600)// .maxLines(2)
.margin({
...
...
@@ -205,9 +205,10 @@ export struct ENewspaperListDialog {
if (positionItem.title) {
Text(positionItem.title)
.fontSize($r('app.float.font_size_1
6
'))
.fontSize($r('app.float.font_size_1
7
'))
.fontColor($r('app.color.color_222222'))
.fontWeight(600)
.lineHeight(25)
.margin({
bottom: 8
})
...
...
sight_harmony/features/wdComponent/src/main/ets/utils/NewPullDownRefresh.ets
0 → 100644
View file @
9010f7a
import { RefreshConstants as Const, RefreshState } from './RefreshConstants';
import { touchMoveLoadMore, touchUpLoadMore } from './NewPullUpLoadMore';
import PageModel from '../viewmodel/PageModel';
import newPageHelper from '../viewmodel/NewPageHelper';
import { LoadStatus } from '../components/refresh/RefreshLayoutBean';
import { Logger } from 'wdKit/Index';
const TAG = 'NewPullDownRefresh'
/***********新的下拉、上拉手势 start **********/
export function onActionStart(pageModel: PageModel, event?: GestureEvent) {
if (event === undefined) {
return
}
pageModel.downY = event.offsetY;
pageModel.lastMoveY = event.offsetY;
}
export function onActionUpdate(pageModel: PageModel, event?: GestureEvent,onRefreshMore: () => void = () => {
}) {
if (event === undefined) {
return
}
if ((pageModel.isRefreshing === true) || (pageModel.isLoading === true)) {
return;
}
let isDownPull = event.offsetY - pageModel.lastMoveY > 0;
if (((isDownPull === true) || (pageModel.isPullRefreshOperation === true)) &&
(pageModel.isCanLoadMore === false)) {
actionUpdatePullRefresh(pageModel, event);
} else {
actionUpdateLoadMore(pageModel, event,onRefreshMore);
}
pageModel.lastMoveY = event.offsetY;
}
export function onActionEnd(pageModel: PageModel,onRefresh: () => void = () => {
}) {
if ((pageModel.isRefreshing === true) || (pageModel.isLoading === true)) {
return;
}
if ((pageModel.isPullRefreshOperation === true)) {
touchUpPullRefresh(pageModel,onRefresh);
} else {
// touchUpLoadMore(pageModel);
}
}
export function actionUpdatePullRefresh(pageModel: PageModel, event: GestureEvent) {
if (pageModel.startIndex === 0) {
pageModel.isPullRefreshOperation = true;
let height = vp2px(Const.CUSTOM_REFRESH_DECIDE_HEIGHT);
pageModel.offsetY = event.offsetY - pageModel.downY;
if (pageModel.offsetY >= height) {
pullRefreshState(pageModel, RefreshState.Release);
pageModel.offsetY = height + pageModel.offsetY * Const.Y_OFF_SET_COEFFICIENT;
} else {
pullRefreshState(pageModel, RefreshState.DropDown);
}
if (pageModel.offsetY < 0) {
pageModel.offsetY = 0;
pageModel.isPullRefreshOperation = false;
}
}
}
export function actionUpdateLoadMore(model: PageModel, event: GestureEvent,onRefreshMore: () => void = () => {
}) {
// list size +1
if (model.endIndex >= model.compList.totalCount() - 3 && model.endIndex <= model.compList.totalCount()) {
// 不用分页动画,直接预加载
model.isCanLoadMore = true;
model.isVisiblePullUpLoad = true;
touchUpLoadMore(model,onRefreshMore);
}
}
/***********新的下拉、上拉手势 end **********/
//下拉刷新上拉加载更多组件
/**
* @deprecated
*/
export function listTouchEvent(pageModel: PageModel, event: TouchEvent) {
switch (event.type) {
case TouchType.Down:
pageModel.downY = event.touches[0].y;
pageModel.lastMoveY = event.touches[0].y;
break;
case TouchType.Move:
if ((pageModel.isRefreshing === true) || (pageModel.isLoading === true)) {
return;
}
let isDownPull = event.touches[0].y - pageModel.lastMoveY > 0;
if (((isDownPull === true) || (pageModel.isPullRefreshOperation === true)) &&
(pageModel.isCanLoadMore === false)) {
// Finger movement, processing pull-down refresh.
touchMovePullRefresh(pageModel, event);
} else {
// Finger movement, processing load more.
touchMoveLoadMore(pageModel, event);
}
pageModel.lastMoveY = event.touches[0].y;
break;
case TouchType.Cancel:
break;
case TouchType.Up:
if ((pageModel.isRefreshing === true) || (pageModel.isLoading === true)) {
return;
}
if ((pageModel.isPullRefreshOperation === true)) {
// Lift your finger and pull down to refresh.
touchUpPullRefresh(pageModel);
} else {
// Fingers up, handle loading more.
// touchUpLoadMore(pageModel);
}
break;
default:
break;
}
}
/**
* @deprecated
*/
export function touchMovePullRefresh(pageModel: PageModel, event: TouchEvent) {
if (pageModel.startIndex === 0) {
pageModel.isPullRefreshOperation = true;
let height = vp2px(Const.CUSTOM_REFRESH_DECIDE_HEIGHT);
pageModel.offsetY = event.touches[0].y - pageModel.downY;
// The sliding offset is greater than the pull-down refresh layout height, and the refresh condition is met.
if (pageModel.offsetY >= height) {
pullRefreshState(pageModel, RefreshState.Release);
pageModel.offsetY = height + pageModel.offsetY * Const.Y_OFF_SET_COEFFICIENT;
} else {
pullRefreshState(pageModel, RefreshState.DropDown);
}
if (pageModel.offsetY < 0) {
pageModel.offsetY = 0;
pageModel.isPullRefreshOperation = false;
}
}
}
export function touchUpPullRefresh(pageModel: PageModel,onRefresh: () => void = () => {
}) {
if (pageModel.isCanRefresh === true) {
pageModel.offsetY = vp2px(pageModel.pullDownRefreshHeight);
pullRefreshState(pageModel, RefreshState.Refreshing);
pageModel.currentPage = 1;
setTimeout(() => {
let self: PageModel = pageModel;
newPageHelper.refreshUI(self,onRefresh)
}, 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 页面数据
* @param pageAdvModel 广告数据
*/
export function autoRefresh(pageModel: PageModel,onRefresh: () => void = () => {
}) {
if (pageModel.isRefreshing === true) {
// 拦截多次刷新
return
}
pageModel.isVisiblePullDown = true;
pageModel.offsetY = vp2px(pageModel.pullDownRefreshHeight);
pullRefreshState(pageModel, RefreshState.Refreshing);
pageModel.currentPage = 1;
newPageHelper.refreshUI(pageModel,onRefresh)
setRefreshTimeoutTimer(pageModel)
}
export function pullRefreshState(pageModel: PageModel, state: number) {
switch (state) {
case RefreshState.DropDown:
pageModel.pullDownRefreshText = $r('app.string.pull_down_refresh_text');
pageModel.pullDownRefreshImage = $r('app.media.ic_pull_down_refresh');
pageModel.isCanRefresh = false;
pageModel.isRefreshing = false;
pageModel.isVisiblePullDown = true;
pageModel.load = LoadStatus.PRELOAD
break;
case RefreshState.Release:
pageModel.pullDownRefreshText = $r('app.string.release_refresh_text');
pageModel.pullDownRefreshImage = $r('app.media.ic_pull_up_refresh');
pageModel.isCanRefresh = true;
pageModel.isRefreshing = false;
pageModel.load = LoadStatus.PRELOAD
break;
case RefreshState.Refreshing:
pageModel.offsetY = vp2px(pageModel.pullDownRefreshHeight);
pageModel.pullDownRefreshText = $r('app.string.refreshing_text');
pageModel.pullDownRefreshImage = $r('app.media.ic_pull_up_load');
pageModel.isCanRefresh = true;
pageModel.isRefreshing = true;
pageModel.load = LoadStatus.LOADING
break;
case RefreshState.Success:
pageModel.pullDownRefreshText = $r('app.string.refresh_success_text');
pageModel.pullDownRefreshImage = $r('app.media.ic_succeed_refresh');
pageModel.isCanRefresh = true;
pageModel.isRefreshing = true;
pageModel.load = LoadStatus.LOADED
break;
case RefreshState.Fail:
pageModel.pullDownRefreshText = $r('app.string.refresh_fail_text');
pageModel.pullDownRefreshImage = $r('app.media.ic_fail_refresh');
pageModel.isCanRefresh = true;
pageModel.isRefreshing = true;
pageModel.load = LoadStatus.LOADED
break;
default:
break;
}
}
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) {
pullRefreshState(pageModel, isRefreshSuccess ? RefreshState.Success : RefreshState.Fail);
delay = Const.RefreshConstant_DELAY_SHRINK_ANIMATION_TIME;
}
animateTo({
duration: Const.RefreshConstant_CLOSE_PULL_DOWN_REFRESH_TIME,
delay: delay,
onFinish: () => {
pullRefreshState(pageModel, RefreshState.DropDown);
self.isVisiblePullDown = false;
self.isPullRefreshOperation = false;
}
}, () => {
self.offsetY = 0;
})
}, self.isCanRefresh ? Const.DELAY_ANIMATION_DURATION : 0);
}
\ No newline at end of file
...
...
sight_harmony/features/wdComponent/src/main/ets/utils/NewPullUpLoadMore.ets
0 → 100644
View file @
9010f7a
import PageModel from '../viewmodel/PageModel';
import { RefreshConstants as Const } from './RefreshConstants';
import newPageHelper from '../viewmodel/NewPageHelper';
import { Logger } from 'wdKit/Index';
const TAG = 'NewPullUpLoadMore'
export function touchMoveLoadMore(model: PageModel, event: TouchEvent) {
// list size +1
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;
// model.isVisiblePullUpLoad = true;
// model.offsetY = -vp2px(model.pullUpLoadHeight) + model.offsetY * Const.Y_OFF_SET_COEFFICIENT;
// }
// 不用分页动画,直接预加载
model.isCanLoadMore = true;
model.isVisiblePullUpLoad = true;
touchUpLoadMore(model);
}
}
export function touchUpLoadMore(model: PageModel,onRefreshMore: () => void = () => {
}) {
let self: PageModel = model;
animateTo({
duration: Const.ANIMATION_DURATION,
}, () => {
self.offsetY = 0;
})
if ((self.isCanLoadMore === true) && (self.hasMore === true) && (self.isLoading === false)) {
self.isLoading = true;
setTimeout(() => {
// closeLoadMore(model);
// newPageHelper.loadMore(self)
onRefreshMore()
}, Const.DELAY_TIME);
setLoadMoreTimeoutTimer(self)
} else {
closeLoadMore(self);
}
}
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/viewmodel/NewPageHelper.ets
0 → 100644
View file @
9010f7a
import { CompDTO, ContentDTO, InteractDataDTO, LiveReviewDTO, LiveRoomDataBean, PageDTO, PageInfoDTO } from 'wdBean';
import { CompStyle, ViewType } from 'wdConstant/Index';
import { CollectionUtils, DateTimeUtils, LazyDataSource, Logger, NetworkUtil, StringUtils, ToastUtils } from 'wdKit';
import { closeRefresh } from '../utils/NewPullDownRefresh';
import PageModel from './PageModel';
import PageViewModel from './PageViewModel';
import { promptAction } from '@kit.ArkUI';
import { CompAdvBean } from 'wdBean/src/main/ets/bean/adv/AdvsRuleBean';
// import PageAdModel from './PageAdvModel';
import { ArrayList } from '@kit.ArkTS';
import { WDViewDefaultType } from '../components/view/EmptyComponent';
import { CompAdvMatInfoBean } from 'wdBean/src/main/ets/bean/adv/CompAdvInfoBean';
import { BaseDTO } from 'wdBean/src/main/ets/bean/component/BaseDTO';
import { viewBlogInsightIntentShare, ActionMode } from '../utils/InsightIntentShare'
import { common } from '@kit.AbilityKit';
import { CacheData } from 'wdNetwork/Index';
import { closeLoadMore } from '../utils/PullUpLoadMore';
const TAG = 'PageHelper';
// 本地的一行两图卡 style值
const OneRowDoubleColumnStyle = CompStyle.Card_Comp_Zh_Grid_Layout_02
const Normal_Page_Size = 20 // 常规每页数量
const Rec_Page_Size = 10 // 推荐每页数量
const SpecialComp: string[] = [CompStyle.Zh_Single_Column_03.toString()]
/**
* 处理返回后的数据
*/
export class NewPageHelper {
/**
* 刷新数据
*/
async refreshUI(pageModel: PageModel, onRefresh: () => void = () => {
}) {
let netStatus = NetworkUtil.isNetConnected()
if (!netStatus) {
ToastUtils.showToast('网络出小差了,请检查网络后重试', 1000)
setTimeout(() => {
this.refreshUIEnd(pageModel, false)
}, 500)
return
}
pageModel.loadStrategy = 2
pageModel.pageTotalCompSize = 0;
onRefresh()
}
private refreshUIEnd(pageModel: PageModel, isRefreshSuccess: boolean) {
if (pageModel.loadStrategy != 2) {
return
}
closeRefresh(pageModel, isRefreshSuccess)
}
}
let newPageHelper = new NewPageHelper();
export default newPageHelper as NewPageHelper;
\ No newline at end of file
...
...
sight_harmony/features/wdDetailPlayLive/src/main/ets/widgets/details/video/PlayUIComponent.ets
View file @
9010f7a
...
...
@@ -44,7 +44,7 @@ export struct PlayUIComponent {
return
}
this.isMenuVisible = false
},
4
* 1000)
},
5
* 1000)
} else {
clearTimeout(time)
}
...
...
@@ -168,7 +168,7 @@ export struct PlayUIComponent {
}
//第二行右边直播状态参与人数
this.getLiveStatusView()
}.margin({top:
-7
})
}.margin({top:
this.contentDetailData.liveInfo?.liveState != 'wait' ? 0 : -10
})
}
.width('100%')
// .width(this.displayDirection == DisplayDirection.VIDEO_HORIZONTAL ? 'calc(100% - 80vp)' : 'calc(100% - 32vp)')
...
...
sight_harmony/features/wdDetailPlayLive/src/main/ets/widgets/vertical/PlayerTitleComponent.ets
View file @
9010f7a
...
...
@@ -88,7 +88,7 @@ export struct PlayerTitleComponent {
Row() {
this.getLiveStatusView()
}
.margin({left: this.
contentDetailData.rmhInfo?.rmhName ? 0 : 34
})
.margin({left: this.
isLarge && this.displayDirection == DisplayDirection.VIDEO_HORIZONTAL ? 34 : 0
})
}
.width('100%')
...
...
Please
register
or
login
to post a comment