143 lines
2.7 KiB
JavaScript
143 lines
2.7 KiB
JavaScript
|
|
/**
|
|||
|
|
* @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_name、vod_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);
|
|||
|
|
}
|
|||
|
|
}
|