Files
uzVideo/js/core/uzHome.js

143 lines
2.7 KiB
JavaScript
Raw Normal View History

2024-09-20 13:07:32 +08:00
/**
* @file 首页推荐扩展
*/
//MARK: - 列表展示 UI类型 如需添加更多 UI 类型请联系 https://t.me/uzVideoAppbot
const UIType = {
/**
* 轮播海报
*/
banner: "banner",
/**
* 横滑小海报
*/
smallCard: "smallCard",
/**
* 横滑大海报
*/
largeCard: "largeCard",
};
//MARK: - 单个广告位展示数据
/**
* UI 展示数据
*/
class RepAd {
constructor() {
/**
* UI 类型
* @type {UIType}
*/
this.uiType = UIType.smallCard;
/**
* 海报宽高比
*/
this.ratio = 10.0 / 16.0;
/**
* 标题 为空不展示标题
* @type {string}
*/
this.title = "";
/**
* 展示数据
* @type {VideoDetail} 必要字段 vod_namevod_pic,
* 次要 vod_remarks(海报上的小标签)
* 后续用于提高匹配度的字段 vod_year vod_director type_name
*/
this.data = [];
}
}
//MARK: - tab 列表数据
/**
* tab列表数据data filter 二选一
* 当有 filter 时展示为筛选列表样式
* 当有 data 时展示为普通列表样式
*/
class RepTabList {
constructor() {
/**
* tab 列表数据
* @type {Array <RepAd>}
*/
this.data = [];
/**
* 筛选列表
* @type {FilterTitle[]}
*/
this.filter = [];
this.error = "";
}
}
class HomeTabModel {
constructor() {
// 当前分类的链接
this.id = "";
// 分类名称
this.name = "";
/**
* 是否是筛选列表
*/
this.isFilter = false;
}
}
//MARK: - 首页数据
/**
* 首页数据
*/
class RepHome {
constructor() {
/**
* tab 页面名称用于 getTab() 入参
* @type {Array <HomeTabModel>}
*/
this.data = [];
this.error = "";
}
}
//MARK:- 首页扩展类
/**
* 首页扩展固定实例名称为 uzHomeJs,例如 const uzHomeJs = new UZHomeJS();
*/
class UZHome {
/**
* 获取首页
* @returns {Promise<RepHome>}
*/
async getHome() {
let repData = new RepHome();
return JSON.stringify(repData);
}
/**
* 获取 tab
* @param {UZArgs} args 主要参数 args.url args.page
* @returns {Promise<RepTabList>}
*/
async getTab(args) {
let repData = new RepTabList();
return JSON.stringify(repData);
}
/**
* 获取筛选列表数据
* getTab() 返回 RepTabList.filter 时调用
* @param {UZSubclassVideoListArgs} args 主要参数 args.mainClassId VideoClass.id args.filter( getTab() 返回的 filter 顺序传入)
* @returns {Promise<RepVideoList>}返回筛选列表
*/
async getFilterList(args) {
let repData = new RepVideoList();
return JSON.stringify(repData);
}
}