为每个页面添加动画
This commit is contained in:
@@ -15,6 +15,7 @@ import * as savedcontent from "./savedcontent"
|
||||
import * as bgimg from "./bgimg"
|
||||
import * as usertracker from "./usertracker"
|
||||
import logger from "./logger/logger"
|
||||
import * as ui from "./ui/ui"
|
||||
export default {
|
||||
dayjs: dayjs,
|
||||
tools: tools,
|
||||
@@ -29,6 +30,10 @@ export default {
|
||||
console.log("create global logger")
|
||||
global.logger = logger
|
||||
|
||||
console.log("create custom ui engine")
|
||||
global.ui = ui
|
||||
global.ui.Init()
|
||||
|
||||
console.log("create global animengine")
|
||||
global.animengine = animengine
|
||||
|
||||
|
||||
@@ -44,6 +44,8 @@ export default {
|
||||
})
|
||||
},
|
||||
onInit() {
|
||||
global.ui.InitPage(this._parentVM)
|
||||
|
||||
const deviceInfo = global.DEVICE_INFO
|
||||
if (deviceInfo.screenShape == "rect") {
|
||||
this.barRowStyle["width"] = `${deviceInfo.screenWidth}px`
|
||||
|
||||
@@ -28,9 +28,15 @@ export default {
|
||||
useRowLayout: false
|
||||
},
|
||||
RouterBack() {
|
||||
router.back()
|
||||
global.ui.OnBackPressTriggered()
|
||||
},
|
||||
onInit() {
|
||||
global.ui.InitPage(this._parentVM)
|
||||
this._parentVM.$options.onBackPress = () => {
|
||||
global.ui.OnBackPressTriggered()
|
||||
return true
|
||||
}
|
||||
|
||||
const deviceInfo = global.DEVICE_INFO;
|
||||
if (deviceInfo.screenShape == "rect"){
|
||||
this.barRowStyle["width"] = `${deviceInfo.screenWidth}px`
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
// 以下任何涉及到负移动的动画(例如openpage-scroll)
|
||||
// 都需要使用animation-direction: reverse进行播放
|
||||
// 这是由于傻逼vela快应用框架不支持keyframes数值自减导致的
|
||||
|
||||
// 需要reverse
|
||||
@keyframes openpage-scroll {
|
||||
0% {
|
||||
transform: translateX(0px) scale(1);
|
||||
}
|
||||
100% {
|
||||
transform: translateX(500px) scale(0.75);
|
||||
}
|
||||
}
|
||||
|
||||
// 需要reverse
|
||||
@keyframes fromback-scroll {
|
||||
0% {
|
||||
transform: translateY(232px) scale(1);
|
||||
}
|
||||
100% {
|
||||
transform: translateY(0px) scale(0.75);
|
||||
}
|
||||
}
|
||||
|
||||
// 无需reverse
|
||||
@keyframes backpage-scroll {
|
||||
0% {
|
||||
transform: translateX(0px) scale(1);
|
||||
}
|
||||
100% {
|
||||
transform: translateX(500px) scale(0.75);
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,5 @@
|
||||
@import './glanims.less';
|
||||
|
||||
@screenWidth: 100%;
|
||||
@screenHeight: 100%;
|
||||
|
||||
@@ -15,6 +17,25 @@
|
||||
align-items: center;
|
||||
width: @screenWidth;
|
||||
height: @screenHeight;
|
||||
|
||||
animation-name: openpage-scroll;
|
||||
animation-timing-function: ease;
|
||||
animation-duration: 500ms;
|
||||
animation-direction: reverse;
|
||||
}
|
||||
|
||||
.scroll-backanim {
|
||||
animation-name: backpage-scroll;
|
||||
animation-timing-function: ease;
|
||||
animation-duration: 500ms;
|
||||
animation-direction: normal;
|
||||
}
|
||||
|
||||
.scroll-frombackanim {
|
||||
animation-name: fromback-scroll;
|
||||
animation-timing-function: ease;
|
||||
animation-duration: 500ms;
|
||||
animation-direction: reverse;
|
||||
}
|
||||
|
||||
text {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
<template>
|
||||
<div class="page">
|
||||
<scroll class="scroll" scroll-y="true" @scrollbottom="DoScrollTip" bounces="true">
|
||||
<scroll class="scroll {{scrclass}}" scroll-y="true" @scrollbottom="DoScrollTip" bounces="true">
|
||||
<title-bar title="arealist.title"></title-bar>
|
||||
<div class="btnline" style="margin-top: 15px;">
|
||||
<div class="btn" onclick="GoPage('app/features/main')">
|
||||
@@ -54,6 +54,7 @@ export default {
|
||||
lastpage: ""
|
||||
},
|
||||
private: {
|
||||
scrclass: "",
|
||||
showChangePageFX: false,
|
||||
colors: {
|
||||
main: "#222222",
|
||||
|
||||
@@ -4,52 +4,54 @@
|
||||
|
||||
<template>
|
||||
<div class="page">
|
||||
<title-bar title="dynamic.detail.title"></title-bar>
|
||||
<div class="user">
|
||||
<image class="userface" onclick="OpenUser(dyn.modules.module_author.mid)" src="{{dyn.modules.module_author.face}}@75w_75h" alt="/common/fullgray.png"></image>
|
||||
<div class="userinfo">
|
||||
<text class="username" style="margin-bottom: 3px">
|
||||
{{ dyn.modules.module_author.name }}
|
||||
</text>
|
||||
<text style="font-size: 18px; color: #5e5e5e" if="{{ dyn.modules.module_author.pub_time }}">
|
||||
{{ dyn.modules.module_author.pub_time }}
|
||||
</text>
|
||||
<text style="font-size: 18px; color: #5e5e5e">
|
||||
{{ pubAction }}
|
||||
</text>
|
||||
</div>
|
||||
</div>
|
||||
<div class="ctx">
|
||||
<!-- 动态文本desc 不为空时渲染 -->
|
||||
<text class="dyn-content-text" if="{{dyn.modules.module_dynamic.desc.text}}">
|
||||
{{ dyn.modules.module_dynamic.desc.text }}
|
||||
</text>
|
||||
|
||||
<!-- 纯文本动态 不展示任何内容 -->
|
||||
<text if="{{dyn.type == 'DYNAMIC_TYPE_WORD'}}"></text>
|
||||
<!-- 图文动态 直接列表图片渲染 -->
|
||||
<online-image elif="{{dyn.type == 'DYNAMIC_TYPE_DRAW'}}" for="{{dyn.modules.module_dynamic.major.draw.items}}"
|
||||
src="{{$item.src}}@350w" loading-anim="true"></online-image>
|
||||
<!-- 视频投稿动态 展示视频跳转 -->
|
||||
<videoshow elif="{{dyn.type == 'DYNAMIC_TYPE_AV'}}" bvid="{{dyn.modules.module_dynamic.major.archive.bvid}}">
|
||||
</videoshow>
|
||||
<!-- 转发动态 显示原动态简略信息 -->
|
||||
<div elif="{{dyn.type == 'DYNAMIC_TYPE_FORWARD'}}" class="ctx-forwarded-box" @click="JumpToOrigDetail">
|
||||
<div style="flex-direction: row">
|
||||
<text class="ctx-forwarded-txt">转发自</text>
|
||||
<text class="ctx-forwarded-txt txt-at">@{{ dyn.orig.modules.module_author.name }}</text>
|
||||
<text class="ctx-forwarded-txt">的动态:</text>
|
||||
<scroll scroll-y="true" class="scroll {{scrclass}}" bounces="true">
|
||||
<title-bar title="dynamic.detail.title"></title-bar>
|
||||
<div class="user">
|
||||
<image class="userface" onclick="OpenUser(dyn.modules.module_author.mid)" src="{{dyn.modules.module_author.face}}@75w_75h" alt="/common/fullgray.png"></image>
|
||||
<div class="userinfo">
|
||||
<text class="username" style="margin-bottom: 3px">
|
||||
{{ dyn.modules.module_author.name }}
|
||||
</text>
|
||||
<text style="font-size: 18px; color: #5e5e5e" if="{{ dyn.modules.module_author.pub_time }}">
|
||||
{{ dyn.modules.module_author.pub_time }}
|
||||
</text>
|
||||
<text style="font-size: 18px; color: #5e5e5e">
|
||||
{{ pubAction }}
|
||||
</text>
|
||||
</div>
|
||||
<text class="ctx-forwarded-txt" if="{{dyn.orig.modules.module_dynamic.desc.text}}">
|
||||
{{ dyn.orig.modules.module_dynamic.desc.text }}
|
||||
</text>
|
||||
<text class="ctx-forwarded-txt" else>[暂无文本内容]</text>
|
||||
<text class="ctx-forwarded-txt" style="color: gray">点击可查看详情</text>
|
||||
</div>
|
||||
<div class="ctx">
|
||||
<!-- 动态文本desc 不为空时渲染 -->
|
||||
<text class="dyn-content-text" if="{{dyn.modules.module_dynamic.desc.text}}">
|
||||
{{ dyn.modules.module_dynamic.desc.text }}
|
||||
</text>
|
||||
|
||||
<text else>该类型动态暂不支持展示</text>
|
||||
</div>
|
||||
<text style="margin-top: 30px"></text>
|
||||
<!-- 纯文本动态 不展示任何内容 -->
|
||||
<text if="{{dyn.type == 'DYNAMIC_TYPE_WORD'}}"></text>
|
||||
<!-- 图文动态 直接列表图片渲染 -->
|
||||
<online-image elif="{{dyn.type == 'DYNAMIC_TYPE_DRAW'}}" for="{{dyn.modules.module_dynamic.major.draw.items}}"
|
||||
src="{{$item.src}}@350w" loading-anim="true"></online-image>
|
||||
<!-- 视频投稿动态 展示视频跳转 -->
|
||||
<videoshow elif="{{dyn.type == 'DYNAMIC_TYPE_AV'}}" bvid="{{dyn.modules.module_dynamic.major.archive.bvid}}">
|
||||
</videoshow>
|
||||
<!-- 转发动态 显示原动态简略信息 -->
|
||||
<div elif="{{dyn.type == 'DYNAMIC_TYPE_FORWARD'}}" class="ctx-forwarded-box" @click="JumpToOrigDetail">
|
||||
<div style="flex-direction: row">
|
||||
<text class="ctx-forwarded-txt">转发自</text>
|
||||
<text class="ctx-forwarded-txt txt-at">@{{ dyn.orig.modules.module_author.name }}</text>
|
||||
<text class="ctx-forwarded-txt">的动态:</text>
|
||||
</div>
|
||||
<text class="ctx-forwarded-txt" if="{{dyn.orig.modules.module_dynamic.desc.text}}">
|
||||
{{ dyn.orig.modules.module_dynamic.desc.text }}
|
||||
</text>
|
||||
<text class="ctx-forwarded-txt" else>[暂无文本内容]</text>
|
||||
<text class="ctx-forwarded-txt" style="color: gray">点击可查看详情</text>
|
||||
</div>
|
||||
|
||||
<text else>该类型动态暂不支持展示</text>
|
||||
</div>
|
||||
<text style="margin-top: 30px"></text>
|
||||
</scroll>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -59,7 +61,8 @@ import router from "@system.router"
|
||||
export default {
|
||||
public: {
|
||||
dyn: null,
|
||||
pubAction: "N/A"
|
||||
pubAction: "N/A",
|
||||
scrclass: ""
|
||||
},
|
||||
JumpToOrigDetail() {
|
||||
router.push({
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<template>
|
||||
<div class="page">
|
||||
<image style="position: absolute; left: 0px" src="{{getBgImg}}"></image>
|
||||
<scroll class="scroll" scroll-y="true" bounces="true">
|
||||
<scroll class="scroll {{scrclass}}" scroll-y="true" bounces="true">
|
||||
<switch-bar title="dynamic.title"></switch-bar>
|
||||
<div class="waterfall" if="show_content">
|
||||
<div class="waterfall-column">
|
||||
@@ -23,6 +23,7 @@
|
||||
<script>
|
||||
export default {
|
||||
private: {
|
||||
scrclass: "",
|
||||
show_content: false,
|
||||
anims: {
|
||||
show_loading: false
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<template>
|
||||
<div class="page">
|
||||
<image style="position: absolute; left: 0px" src="{{getBgImg}}"></image>
|
||||
<scroll scroll-y="true" class="scroll" bounces="true">
|
||||
<scroll scroll-y="true" class="scroll {{scrclass}}" bounces="true">
|
||||
<switch-bar title="main.title"></switch-bar>
|
||||
<text class="tip">{{ funnytip }}</text>
|
||||
<image style="position: absolute; margin-top: 265px" if="{{anims.show_loading}}" src="{{anims.loading_src.value}}">
|
||||
@@ -30,6 +30,7 @@ import prompt from "@system.prompt"
|
||||
|
||||
export default {
|
||||
private: {
|
||||
scrclass: "",
|
||||
recommend_vids: [],
|
||||
show_recommend_div: false,
|
||||
funnytip: "",
|
||||
|
||||
@@ -3,29 +3,31 @@
|
||||
|
||||
<template>
|
||||
<div class="page">
|
||||
<switch-bar title="mypage.title"></switch-bar>
|
||||
<user-info account-info="{{accountInfo}}"></user-info>
|
||||
<div class="btnbase" style="margin-top: 40px" @click="GoMyFavFolders()">
|
||||
<image class="btnimg" src="/common/mypage_star.png"></image>
|
||||
<text class="btntext">{{ $t("mypage.favourite") }}</text>
|
||||
<image src="/common/arrow_right.png"></image>
|
||||
</div>
|
||||
<div class="btnbase" style="margin-top: 10px" @click="GoHistory()">
|
||||
<image class="btnimg" src="/common/mypage_history.png"></image>
|
||||
<text class="btntext">{{ $t("mypage.history") }}</text>
|
||||
<image src="/common/arrow_right.png"></image>
|
||||
</div>
|
||||
<div class="btnbase" style="margin-top: 10px" @click="WIPTips()">
|
||||
<image class="btnimg" src="/common/mypage_watchlater.png"></image>
|
||||
<text class="btntext">{{ $t("mypage.showLater") }}</text>
|
||||
<image src="/common/arrow_right.png"></image>
|
||||
</div>
|
||||
<div class="btnbase" style="margin-top: 10px" @click="GoMessages()">
|
||||
<image class="btnimg" src="/common/mypage_messager.png"></image>
|
||||
<text class="btntext">{{ $t("mypage.messages") }}</text>
|
||||
<image src="/common/arrow_right.png"></image>
|
||||
</div>
|
||||
<text style="margin-top: 25px"></text>
|
||||
<scroll scroll-y="true" class="scroll {{scrclass}}" bounces="true">
|
||||
<switch-bar title="mypage.title"></switch-bar>
|
||||
<user-info account-info="{{accountInfo}}"></user-info>
|
||||
<div class="btnbase" style="margin-top: 40px" @click="GoMyFavFolders()">
|
||||
<image class="btnimg" src="/common/mypage_star.png"></image>
|
||||
<text class="btntext">{{ $t("mypage.favourite") }}</text>
|
||||
<image src="/common/arrow_right.png"></image>
|
||||
</div>
|
||||
<div class="btnbase" style="margin-top: 10px" @click="GoHistory()">
|
||||
<image class="btnimg" src="/common/mypage_history.png"></image>
|
||||
<text class="btntext">{{ $t("mypage.history") }}</text>
|
||||
<image src="/common/arrow_right.png"></image>
|
||||
</div>
|
||||
<div class="btnbase" style="margin-top: 10px" @click="WIPTips()">
|
||||
<image class="btnimg" src="/common/mypage_watchlater.png"></image>
|
||||
<text class="btntext">{{ $t("mypage.showLater") }}</text>
|
||||
<image src="/common/arrow_right.png"></image>
|
||||
</div>
|
||||
<div class="btnbase" style="margin-top: 10px" @click="GoMessages()">
|
||||
<image class="btnimg" src="/common/mypage_messager.png"></image>
|
||||
<text class="btntext">{{ $t("mypage.messages") }}</text>
|
||||
<image src="/common/arrow_right.png"></image>
|
||||
</div>
|
||||
<text style="margin-top: 25px"></text>
|
||||
</scroll>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -34,7 +36,8 @@ import router from "@system.router"
|
||||
import prompt from "@system.prompt"
|
||||
export default {
|
||||
private: {
|
||||
accountInfo: {}
|
||||
accountInfo: {},
|
||||
scrclass: ""
|
||||
},
|
||||
GoHistory(){
|
||||
router.push({
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<template>
|
||||
<div class="page">
|
||||
<image style="position: absolute; left: 0px" src="{{getBgImg}}"></image>
|
||||
<scroll class="scroll" scroll-y="true" bounces="true">
|
||||
<scroll class="scroll {{scrclass}}" scroll-y="true" bounces="true">
|
||||
<switch-bar title="savedcontent.title" static></switch-bar>
|
||||
<div style="flex-direction: column; align-items: center; width: 100%" for="{{content}}">
|
||||
<div if="{{$item.type == 'article' ? true : false}}"
|
||||
@@ -21,6 +21,7 @@
|
||||
import router from "@system.router"
|
||||
export default {
|
||||
private: {
|
||||
scrclass: "",
|
||||
content: []
|
||||
},
|
||||
computed: {
|
||||
|
||||
@@ -2,69 +2,77 @@
|
||||
|
||||
<template>
|
||||
<div class="page">
|
||||
<title-bar title="about.title"></title-bar>
|
||||
<div class="appbar">
|
||||
<image class="logo" src="/common/logo.png"></image>
|
||||
<text class="text" style="margin-left: 20px">HyperBili</text>
|
||||
<text class="text ver">{{ version }}</text>
|
||||
</div>
|
||||
<text class="text" style="margin-top: 22px">{{ $t("about.projectOwnerShip") }}</text>
|
||||
<div class="appbar" style="margin-top: 22px">
|
||||
<image class="logo" src="/common/about_projectownership.png"></image>
|
||||
<div style="margin-left: 20px; flex-direction: column">
|
||||
<text class="text">AstralSight </text>
|
||||
<text class="text">Studios</text>
|
||||
<scroll class="scroll {{scrclass}}" scroll-y="true" bounces="true">
|
||||
<title-bar title="about.title"></title-bar>
|
||||
<div class="appbar">
|
||||
<image class="logo" src="/common/logo.png"></image>
|
||||
<text class="text" style="margin-left: 20px">HyperBili</text>
|
||||
<text class="text ver">{{ version }}</text>
|
||||
</div>
|
||||
</div>
|
||||
<text class="text" style="margin-top: 22px">{{ $t("about.buildInfo") }}</text>
|
||||
<div class="buildinfobar" style="margin-top: 22px">
|
||||
<div class="buildinfo">
|
||||
<text class="text" style="font-size: 24px">{{ $t("about.commitHash") }}:</text>
|
||||
<text class="text" style="font-size: 20px; max-width: 160px">{{ buildinfo.GIT_COMMIT_HASH }}</text>
|
||||
<text class="text" style="margin-top: 22px">{{ $t("about.projectOwnerShip") }}</text>
|
||||
<div class="appbar" style="margin-top: 22px">
|
||||
<image class="logo" src="/common/about_projectownership.png"></image>
|
||||
<div style="margin-left: 20px; flex-direction: column">
|
||||
<text class="text">AstralSight</text>
|
||||
<text class="text">Studios</text>
|
||||
</div>
|
||||
</div>
|
||||
<div class="buildinfo">
|
||||
<text class="text" style="font-size: 24px">{{ $t("about.buildTime") }}:</text>
|
||||
<text class="text" style="font-size: 20px; max-width: 160px">{{ buildinfo.BUILD_TIME }}</text>
|
||||
<text class="text" style="margin-top: 22px">{{ $t("about.buildInfo") }}</text>
|
||||
<div class="buildinfobar" style="margin-top: 22px">
|
||||
<div class="buildinfo">
|
||||
<text class="text" style="font-size: 24px">{{ $t("about.commitHash") }}:</text>
|
||||
<text class="text" style="font-size: 20px; max-width: 160px">
|
||||
{{ buildinfo.GIT_COMMIT_HASH }}
|
||||
</text>
|
||||
</div>
|
||||
<div class="buildinfo">
|
||||
<text class="text" style="font-size: 24px">{{ $t("about.buildTime") }}:</text>
|
||||
<text class="text" style="font-size: 20px; max-width: 160px">
|
||||
{{ buildinfo.BUILD_TIME }}
|
||||
</text>
|
||||
</div>
|
||||
<div class="buildinfo">
|
||||
<text class="text" style="font-size: 24px">{{ $t("about.builder") }}:</text>
|
||||
<text class="text" style="font-size: 20px; max-width: 160px">
|
||||
{{ buildinfo.BUILD_USER }}
|
||||
</text>
|
||||
</div>
|
||||
</div>
|
||||
<div class="buildinfo">
|
||||
<text class="text" style="font-size: 24px">{{ $t("about.builder") }}:</text>
|
||||
<text class="text" style="font-size: 20px; max-width: 160px">{{ buildinfo.BUILD_USER }}</text>
|
||||
<text class="text" style="margin-top: 30px">{{ $t("about.developers") }}</text>
|
||||
<div class="developers" style="margin-top: 15px">
|
||||
<div class="developer">
|
||||
<image src="/common/aboutpage_code.png" class="img"></image>
|
||||
<text class="text devname">@Searchstars</text>
|
||||
</div>
|
||||
<div class="developer">
|
||||
<image src="/common/aboutpage_code.png" class="img"></image>
|
||||
<text class="text devname">@xinghengCN</text>
|
||||
</div>
|
||||
<div class="developer">
|
||||
<image src="/common/aboutpage_brush.png" class="img"></image>
|
||||
<text class="text devname">@RX79XT</text>
|
||||
</div>
|
||||
<div class="developer">
|
||||
<image src="/common/aboutpage_brush.png" class="img"></image>
|
||||
<text class="text devname">@wuhaiqi</text>
|
||||
</div>
|
||||
<div class="developer">
|
||||
<image src="/common/aboutpage_brush.png" class="img"></image>
|
||||
<text class="text devname">@一個小果冻</text>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<text class="text" style="margin-top: 30px">{{ $t("about.developers") }}</text>
|
||||
<div class="developers" style="margin-top: 15px">
|
||||
<div class="developer">
|
||||
<image src="/common/aboutpage_code.png" class="img"></image>
|
||||
<text class="text devname">@Searchstars</text>
|
||||
<text class="text" style="color: #9e9e9e; margin-top: 12px">
|
||||
{{ $t("about.moreResources") }}
|
||||
</text>
|
||||
<text class="text" style="margin-top: 5px">bandbbs.cn</text>
|
||||
<div @click="OpenOpenSoftwareWarning" class="disclaimer-btn" style="margin-top: 20px">
|
||||
<text style="font-size: 28px; font-weight: 600">{{ $t("about.osw") }}</text>
|
||||
</div>
|
||||
<div class="developer">
|
||||
<image src="/common/aboutpage_code.png" class="img"></image>
|
||||
<text class="text devname">@xinghengCN</text>
|
||||
<div @click="OpenDisclaimer" class="disclaimer-btn" style="margin-top: 20px">
|
||||
<text style="font-size: 28px; font-weight: 600">{{ $t("about.disclaimer") }}</text>
|
||||
</div>
|
||||
<div class="developer">
|
||||
<image src="/common/aboutpage_brush.png" class="img"></image>
|
||||
<text class="text devname">@RX79XT</text>
|
||||
</div>
|
||||
<div class="developer">
|
||||
<image src="/common/aboutpage_brush.png" class="img"></image>
|
||||
<text class="text devname">@wuhaiqi</text>
|
||||
</div>
|
||||
<div class="developer">
|
||||
<image src="/common/aboutpage_brush.png" class="img"></image>
|
||||
<text class="text devname">@一個小果冻</text>
|
||||
</div>
|
||||
</div>
|
||||
<text class="text" style="color: #9e9e9e; margin-top: 12px">
|
||||
{{ $t("about.moreResources") }}
|
||||
</text>
|
||||
<text class="text" style="margin-top: 5px">bandbbs.cn</text>
|
||||
<div @click="OpenOpenSoftwareWarning" class="disclaimer-btn" style="margin-top: 20px;">
|
||||
<text style="font-size: 28px; font-weight: 600">{{ $t("about.osw") }}</text>
|
||||
</div>
|
||||
<div @click="OpenDisclaimer" class="disclaimer-btn" style="margin-top: 20px;">
|
||||
<text style="font-size: 28px; font-weight: 600">{{ $t("about.disclaimer") }}</text>
|
||||
</div>
|
||||
<text style="margin-top: 25px"></text>
|
||||
<text style="margin-top: 25px"></text>
|
||||
</scroll>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -74,7 +82,8 @@ import router from "@system.router"
|
||||
export default {
|
||||
private: {
|
||||
version: "NA",
|
||||
buildinfo: buildinfo
|
||||
buildinfo: buildinfo,
|
||||
scrclass: ""
|
||||
},
|
||||
onInit() {
|
||||
this.version = "v" + global.biliclient.version
|
||||
@@ -89,7 +98,7 @@ export default {
|
||||
}
|
||||
})
|
||||
},
|
||||
OpenOpenSoftwareWarning(){
|
||||
OpenOpenSoftwareWarning() {
|
||||
router.push({
|
||||
uri: "pages/app/features/settings/opensoftware"
|
||||
})
|
||||
@@ -98,6 +107,6 @@ export default {
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
@import '@less/global.less';
|
||||
@import './about.less';
|
||||
@import "@less/global.less";
|
||||
@import "./about.less";
|
||||
</style>
|
||||
@@ -3,26 +3,31 @@
|
||||
|
||||
<template>
|
||||
<div class="page">
|
||||
<title-bar title="cleartmp.title"></title-bar>
|
||||
<text class="cleartip" style="margin-top: 10px">请先选择类别</text>
|
||||
<text class="cleartip">随后点击按钮以进行清理</text>
|
||||
<div class="typebox" style="margin-top: 25px">
|
||||
<text if="{{tmps.length < 1}}" style="font-weight: 600; font-size: 24px; color: #9E9E9E">缓存文件扫描中...</text>
|
||||
<div style="padding: 5px; width: 77%" for="{{tmps}}">
|
||||
<div class="tmptype" onclick="SelectHandler($item.alias)" style="background-color: {{typeColors[$item.alias]}}">
|
||||
<text class="typetxt">{{ $item.name }}</text>
|
||||
<text class="typesize">{{ $item.size }}</text>
|
||||
<scroll class="scroll {{scrclass}}" scroll-y="true" bounces="true">
|
||||
<title-bar title="cleartmp.title"></title-bar>
|
||||
<text class="cleartip" style="margin-top: 10px">请先选择类别</text>
|
||||
<text class="cleartip">随后点击按钮以进行清理</text>
|
||||
<div class="typebox" style="margin-top: 25px">
|
||||
<text if="{{tmps.length < 1}}" style="font-weight: 600; font-size: 24px; color: #9e9e9e">
|
||||
缓存文件扫描中...
|
||||
</text>
|
||||
<div style="padding: 5px; width: 77%" for="{{tmps}}">
|
||||
<div class="tmptype" onclick="SelectHandler($item.alias)" style="background-color: {{typeColors[$item.alias]}}">
|
||||
<text class="typetxt">{{ $item.name }}</text>
|
||||
<text class="typesize">{{ $item.size }}</text>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<default-button @click="ClearClick" primary="true" margin-top="25px" text="cleartmp.clear" disabled="{{cantClear}}"></default-button>
|
||||
<text style="margin-top: 30px"></text>
|
||||
<default-button @click="ClearClick" primary="true" margin-top="25px" text="cleartmp.clear"
|
||||
disabled="{{cantClear}}"></default-button>
|
||||
<text style="margin-top: 30px"></text>
|
||||
</scroll>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import prompt from "@system.prompt"
|
||||
import { asyncFile } from "../../../../../asyncapi/file"
|
||||
import {asyncFile} from "../../../../../asyncapi/file"
|
||||
|
||||
export default {
|
||||
private: {
|
||||
@@ -31,21 +36,22 @@ export default {
|
||||
clearControl: {
|
||||
imgs: false,
|
||||
logs: false,
|
||||
sc: false,
|
||||
sc: false
|
||||
},
|
||||
typeColors: {
|
||||
imgs: "#434343",
|
||||
logs: "#434343",
|
||||
sc: "#434343",
|
||||
others: "#222222"
|
||||
}
|
||||
},
|
||||
scrclass: ""
|
||||
},
|
||||
RefreshPage(){
|
||||
RefreshPage() {
|
||||
this.cantClear = true
|
||||
this.clearControl = {
|
||||
imgs: false,
|
||||
logs: false,
|
||||
sc: false,
|
||||
sc: false
|
||||
}
|
||||
this.typeColors = {
|
||||
imgs: "#434343",
|
||||
@@ -58,26 +64,26 @@ export default {
|
||||
const tasks = []
|
||||
|
||||
if (this.clearControl.imgs) {
|
||||
const imgTemp = this.tmps.find(t => t.alias === "imgs")
|
||||
const imgTemp = this.tmps.find((t) => t.alias === "imgs")
|
||||
if (imgTemp) {
|
||||
imgTemp.list.forEach(uri => {
|
||||
tasks.push(asyncFile.delete({ uri }))
|
||||
imgTemp.list.forEach((uri) => {
|
||||
tasks.push(asyncFile.delete({uri}))
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
if (this.clearControl.logs) {
|
||||
const logTemp = this.tmps.find(t => t.alias === "logs")
|
||||
const logTemp = this.tmps.find((t) => t.alias === "logs")
|
||||
if (logTemp) {
|
||||
logTemp.list.forEach(uri => {
|
||||
tasks.push(asyncFile.delete({ uri }))
|
||||
logTemp.list.forEach((uri) => {
|
||||
tasks.push(asyncFile.delete({uri}))
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
if (this.clearControl.sc) {
|
||||
const contents = await global.savedcontent.SavedContentManager.listAllContent()
|
||||
contents.forEach(ct => {
|
||||
contents.forEach((ct) => {
|
||||
tasks.push(global.savedcontent.SavedContentManager.deleteContent(ct.id))
|
||||
})
|
||||
}
|
||||
@@ -102,20 +108,24 @@ export default {
|
||||
this.typeColors.logs = this.clearControl.logs ? "#FF7DA8" : "#434343"
|
||||
break
|
||||
case "sc":
|
||||
if(!this.clearControl.sc){
|
||||
if (!this.clearControl.sc) {
|
||||
prompt.showDialog({
|
||||
message: "清除缓存内容即意味着清除您之前缓存的专栏、音频等内容,且该操作不可逆。确定要继续吗?",
|
||||
message:
|
||||
"清除缓存内容即意味着清除您之前缓存的专栏、音频等内容,且该操作不可逆。确定要继续吗?",
|
||||
success: (data) => {
|
||||
this.clearControl.sc = true
|
||||
this.typeColors.sc = this.clearControl.sc ? "#FF7DA8" : "#434343";
|
||||
this.typeColors.sc = this.clearControl.sc ? "#FF7DA8" : "#434343"
|
||||
// 由于这是异步函数,因此需要重新做cantClear检测
|
||||
this.cantClear = !(this.clearControl.imgs || this.clearControl.logs || this.clearControl.sc)
|
||||
this.cantClear = !(
|
||||
this.clearControl.imgs ||
|
||||
this.clearControl.logs ||
|
||||
this.clearControl.sc
|
||||
)
|
||||
}
|
||||
})
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
this.clearControl.sc = false
|
||||
this.typeColors.sc = this.clearControl.sc ? "#FF7DA8" : "#434343";
|
||||
this.typeColors.sc = this.clearControl.sc ? "#FF7DA8" : "#434343"
|
||||
}
|
||||
break
|
||||
}
|
||||
@@ -130,12 +140,12 @@ export default {
|
||||
try {
|
||||
const contents = await global.savedcontent.SavedContentManager.listAllContent()
|
||||
const ret = await Promise.all(
|
||||
contents.map(async content => {
|
||||
const data = await asyncFile.get({ uri: content.fileUri })
|
||||
contents.map(async (content) => {
|
||||
const data = await asyncFile.get({uri: content.fileUri})
|
||||
return {
|
||||
uri: content.fileUri,
|
||||
length: data.length,
|
||||
_labelIsSavedContent: true,
|
||||
_labelIsSavedContent: true
|
||||
}
|
||||
})
|
||||
)
|
||||
@@ -148,23 +158,23 @@ export default {
|
||||
try {
|
||||
// 准备统计对象
|
||||
const totalStats = {
|
||||
images: { count: 0, size: 0, list: [] },
|
||||
logs: { count: 0, size: 0, list: [] },
|
||||
savedContent: { count: 0, size: 0 },
|
||||
others: { count: 0, size: 0 },
|
||||
images: {count: 0, size: 0, list: []},
|
||||
logs: {count: 0, size: 0, list: []},
|
||||
savedContent: {count: 0, size: 0},
|
||||
others: {count: 0, size: 0}
|
||||
}
|
||||
|
||||
// 并行获取文件列表
|
||||
const [rootFiles, logFiles, savedContentFiles] = await Promise.all([
|
||||
asyncFile.list({ uri: "internal://files/" }),
|
||||
asyncFile.list({ uri: "internal://files/logs" }),
|
||||
this.getSavedContentList(),
|
||||
asyncFile.list({uri: "internal://files/"}),
|
||||
asyncFile.list({uri: "internal://files/logs"}),
|
||||
this.getSavedContentList()
|
||||
])
|
||||
|
||||
const fileList = [...rootFiles.fileList, ...logFiles.fileList, ...savedContentFiles]
|
||||
|
||||
for (const file of fileList) {
|
||||
const { uri, length, _labelIsSavedContent } = file
|
||||
const {uri, length, _labelIsSavedContent} = file
|
||||
|
||||
if (/\.(jpg|png|avif|gif)/i.test(uri)) {
|
||||
totalStats.images.count++
|
||||
@@ -188,18 +198,18 @@ export default {
|
||||
name: "临时图片",
|
||||
alias: "imgs",
|
||||
size: `${this.BytesToMB(totalStats.images.size)} MB`,
|
||||
list: totalStats.images.list,
|
||||
list: totalStats.images.list
|
||||
},
|
||||
{
|
||||
name: "日志文件",
|
||||
alias: "logs",
|
||||
size: `${this.BytesToMB(totalStats.logs.size)} MB`,
|
||||
list: totalStats.logs.list,
|
||||
list: totalStats.logs.list
|
||||
},
|
||||
{
|
||||
name: "缓存内容",
|
||||
alias: "sc",
|
||||
size: `${this.BytesToMB(totalStats.savedContent.size)} MB`,
|
||||
size: `${this.BytesToMB(totalStats.savedContent.size)} MB`
|
||||
},
|
||||
{
|
||||
name: "其它",
|
||||
@@ -213,7 +223,7 @@ export default {
|
||||
},
|
||||
onInit() {
|
||||
this.ScanTemps()
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
@@ -1,28 +1,35 @@
|
||||
<import name="title-bar" src="@components/TitleBar/TitleBar.ux"></import>
|
||||
|
||||
<template>
|
||||
<div class="page">
|
||||
<image src="/common/settings_about.png" style="margin-top: 22px"></image>
|
||||
<text style="font-size: 35px; font-weight: 600" style="margin-top: 10px">捐赠</text>
|
||||
<text class="text" style="margin-top: 20px">
|
||||
自2024年3月以来,Hyperbili的首个版本正式发布。在这段时间中,Hyperbili一直保持开源免费,不向用户收取一分钱。我们投入了大量心血,使其功能丰富且易于使用。
|
||||
</text>
|
||||
<text class="text">
|
||||
Hyperbili由22个以上的页面和超过5214行代码精心打造。虽然付费表盘和付费小程序已成为趋势,但我们仍然坚持完全免费,因为我们希望每个人都能使用它的完整版本。
|
||||
</text>
|
||||
<text class="text">
|
||||
如果您觉得我们的工作值得支持,并且有余力的话,我们欢迎您的捐赠。您的支持将帮助我们继续改进和维护这款产品。同时,我们承诺确保每一位核心开发者都能分享这些捐赠,以激励他们的持续贡献。谢谢!
|
||||
</text>
|
||||
<div class="code-container" style="margin-top: 20px">
|
||||
<qrcode class="code" value="wxp://f2f0xXPY--BFxTceLr-Lfxbx62XHZ6gKtVPm0SHYtpjn8AM"></qrcode>
|
||||
</div>
|
||||
<text style="margin-top: 25px"></text>
|
||||
<scroll class="scroll {{scrclass}}" scroll-y="true" bounces="true">
|
||||
<title-bar title="捐赠"></title-bar>
|
||||
<text class="text" style="margin-top: 20px">
|
||||
自2024年3月以来,Hyperbili的首个版本正式发布。在这段时间中,Hyperbili一直保持开源免费,不向用户收取一分钱。我们投入了大量心血,使其功能丰富且易于使用。
|
||||
</text>
|
||||
<text class="text">
|
||||
Hyperbili由33个以上的页面和超过7860行代码精心打造。虽然付费表盘和付费小程序已成为趋势,但我们仍然坚持完全免费,因为我们希望每个人都能使用它的完整版本。
|
||||
</text>
|
||||
<text class="text">
|
||||
如果您觉得我们的工作值得支持,并且有余力的话,我们欢迎您的捐赠。您的支持将帮助我们继续改进和维护这款产品。同时,我们承诺确保每一位核心开发者都能分享这些捐赠,以激励他们的持续贡献。谢谢!
|
||||
</text>
|
||||
<div class="code-container" style="margin-top: 20px">
|
||||
<qrcode class="code" value="wxp://f2f0xXPY--BFxTceLr-Lfxbx62XHZ6gKtVPm0SHYtpjn8AM"></qrcode>
|
||||
</div>
|
||||
<text style="margin-top: 25px"></text>
|
||||
</scroll>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {}
|
||||
export default {
|
||||
private: {
|
||||
scrclass: ""
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
@import '@less/global.less';
|
||||
@import './donation.less';
|
||||
@import "@less/global.less";
|
||||
@import "./donation.less";
|
||||
</style>
|
||||
File diff suppressed because one or more lines are too long
@@ -2,50 +2,52 @@
|
||||
|
||||
<template>
|
||||
<div class="page">
|
||||
<switch-bar title="settings.title"></switch-bar>
|
||||
<img src="/common/settings_version.png" @click="GoAbout"></img>
|
||||
<div class="setbase" onclick="ClickCountSet(countset_name[0])">
|
||||
<image class="seticon" src="/common/settings_freshtype.png"></image>
|
||||
<text class="setext_small">{{ $t("settings.videoPushRelevance") }}</text>
|
||||
<text class="countset_num">{{ fresh_type }}</text>
|
||||
</div>
|
||||
<div class="setbase" onclick="ClickCountSet(countset_name[1])">
|
||||
<image class="seticon" src="/common/settings_homevidcount.png"></image>
|
||||
<text class="setext_small">{{ $t("settings.videoPushCount") }}</text>
|
||||
<text class="countset_num">{{ home_vid_count }}</text>
|
||||
</div>
|
||||
<div class="setbase" onclick="SwitchSet(switchset_name[0])">
|
||||
<image class="seticon" src="/common/settings_enablefullanim.png"></image>
|
||||
<text class="setext_small">{{ $t("settings.enableFullAnimation") }}</text>
|
||||
<text class="countset_num">{{ enableFullAnimation ? "开" : "关" }}</text>
|
||||
</div>
|
||||
<div class="setbase" @click="ClearTmp()">
|
||||
<image class="seticon" src="/common/settings_removetmp.png"></image>
|
||||
<text class="setext_small">{{ $t("settings.clearTemp") }}</text>
|
||||
<image class="arrow" src="/common/arrow_right.png"></image>
|
||||
</div>
|
||||
<div class="setbase" @click="logout()">
|
||||
<image class="seticon" src="/common/settings_logout.png"></image>
|
||||
<text class="setext_small">{{ $t("settings.logOut") }}</text>
|
||||
<image class="arrow" src="/common/arrow_right.png"></image>
|
||||
</div>
|
||||
<div class="setbase" @click="GoDonation()">
|
||||
<image class="seticon" src="/common/donation.png"></image>
|
||||
<text class="setext_small">{{ $t("settings.donation") }}</text>
|
||||
<image class="arrow" src="/common/arrow_right.png"></image>
|
||||
</div>
|
||||
<div class="setbase" @click="GoAbout()">
|
||||
<image class="seticon" src="/common/settings_about.png"></image>
|
||||
<text class="setext_small">{{ $t("settings.about") }}</text>
|
||||
<image class="arrow" src="/common/arrow_right.png"></image>
|
||||
</div>
|
||||
<div class="setbase" @click="GoDebug()">
|
||||
<div class="seticon"></div>
|
||||
<text class="setext_small">{{ $t("settings.debug") }}</text>
|
||||
<image class="arrow" src="/common/arrow_right.png"></image>
|
||||
</div>
|
||||
<image style="margin-top: 30px" src="/common/opensource_warning.png"></image>
|
||||
<text style="margin-top: 25px"></text>
|
||||
<scroll class="scroll {{scrclass}}" scroll-y="true" bounces="true">
|
||||
<switch-bar title="settings.title"></switch-bar>
|
||||
<img src="/common/settings_version.png" @click="GoAbout"></img>
|
||||
<div class="setbase" onclick="ClickCountSet(countset_name[0])">
|
||||
<image class="seticon" src="/common/settings_freshtype.png"></image>
|
||||
<text class="setext_small">{{ $t("settings.videoPushRelevance") }}</text>
|
||||
<text class="countset_num">{{ fresh_type }}</text>
|
||||
</div>
|
||||
<div class="setbase" onclick="ClickCountSet(countset_name[1])">
|
||||
<image class="seticon" src="/common/settings_homevidcount.png"></image>
|
||||
<text class="setext_small">{{ $t("settings.videoPushCount") }}</text>
|
||||
<text class="countset_num">{{ home_vid_count }}</text>
|
||||
</div>
|
||||
<div class="setbase" onclick="SwitchSet(switchset_name[0])">
|
||||
<image class="seticon" src="/common/settings_enablefullanim.png"></image>
|
||||
<text class="setext_small">{{ $t("settings.enableFullAnimation") }}</text>
|
||||
<text class="countset_num">{{ enableFullAnimation ? "开" : "关" }}</text>
|
||||
</div>
|
||||
<div class="setbase" @click="ClearTmp()">
|
||||
<image class="seticon" src="/common/settings_removetmp.png"></image>
|
||||
<text class="setext_small">{{ $t("settings.clearTemp") }}</text>
|
||||
<image class="arrow" src="/common/arrow_right.png"></image>
|
||||
</div>
|
||||
<div class="setbase" @click="logout()">
|
||||
<image class="seticon" src="/common/settings_logout.png"></image>
|
||||
<text class="setext_small">{{ $t("settings.logOut") }}</text>
|
||||
<image class="arrow" src="/common/arrow_right.png"></image>
|
||||
</div>
|
||||
<div class="setbase" @click="GoDonation()">
|
||||
<image class="seticon" src="/common/donation.png"></image>
|
||||
<text class="setext_small">{{ $t("settings.donation") }}</text>
|
||||
<image class="arrow" src="/common/arrow_right.png"></image>
|
||||
</div>
|
||||
<div class="setbase" @click="GoAbout()">
|
||||
<image class="seticon" src="/common/settings_about.png"></image>
|
||||
<text class="setext_small">{{ $t("settings.about") }}</text>
|
||||
<image class="arrow" src="/common/arrow_right.png"></image>
|
||||
</div>
|
||||
<div class="setbase" @click="GoDebug()">
|
||||
<div class="seticon"></div>
|
||||
<text class="setext_small">{{ $t("settings.debug") }}</text>
|
||||
<image class="arrow" src="/common/arrow_right.png"></image>
|
||||
</div>
|
||||
<image style="margin-top: 30px" src="/common/opensource_warning.png"></image>
|
||||
<text style="margin-top: 25px"></text>
|
||||
</scroll>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -64,7 +66,8 @@ export default {
|
||||
fresh_type_min: 1,
|
||||
home_vid_count_max: 14,
|
||||
home_vid_count_min: 1
|
||||
}
|
||||
},
|
||||
scrclass: ""
|
||||
},
|
||||
GoDonation(){
|
||||
router.push({
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
<template>
|
||||
<div class="page">
|
||||
<scroll scroll-y="true" class="scroll {{scrclass}}" bounces="true">
|
||||
<title-bar title="favfolders.title"></title-bar>
|
||||
<image style="position: absolute; margin-top: 245px" if="{{anims.show_loading}}" src="{{anims.loading_src.value}}">
|
||||
</image>
|
||||
@@ -18,6 +19,7 @@
|
||||
<image src="/common/arrow_right.png" style="margin-left: 30px"></image>
|
||||
</list-item>
|
||||
</list>
|
||||
</scroll>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -29,7 +31,8 @@ export default {
|
||||
folders: [],
|
||||
anims: {
|
||||
show_loading: false
|
||||
}
|
||||
},
|
||||
scrclass: ""
|
||||
},
|
||||
public: {
|
||||
user_mid: null
|
||||
|
||||
@@ -3,28 +3,30 @@
|
||||
|
||||
<template>
|
||||
<div class="page">
|
||||
<title-bar title="foldervideos.title"></title-bar>
|
||||
<div style="flex-direction: row; align-items: center">
|
||||
<div @click="BackPN()" style="width: 40px; height: 40px; align-items: center; justify-content: center">
|
||||
<image src="/common/changepage_left.png"></image>
|
||||
<scroll scroll-y="true" class="scroll {{scrclass}}" bounces="true">
|
||||
<title-bar title="foldervideos.title"></title-bar>
|
||||
<div style="flex-direction: row; align-items: center">
|
||||
<div @click="BackPN()" style="width: 40px; height: 40px; align-items: center; justify-content: center">
|
||||
<image src="/common/changepage_left.png"></image>
|
||||
</div>
|
||||
<text style="margin-left: 17px; font-size: 25px; font-weight: 600; color: #9e9e9e">
|
||||
{{ $t("foldervideos.no") }} {{ current_pn }} {{ $t("foldervideos.page") }}
|
||||
</text>
|
||||
<div style="
|
||||
margin-left: 17px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
" @click="NextPN()">
|
||||
<image src="/common/changepage_right.png"></image>
|
||||
</div>
|
||||
</div>
|
||||
<text style="margin-left: 17px; font-size: 25px; font-weight: 600; color: #9e9e9e">
|
||||
{{ $t("foldervideos.no") }} {{ current_pn }} {{ $t("foldervideos.page") }}
|
||||
</text>
|
||||
<div style="
|
||||
margin-left: 17px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
" @click="NextPN()">
|
||||
<image src="/common/changepage_right.png"></image>
|
||||
<div class="foldervid_div">
|
||||
<videoshow video="{{$item}}" for="{{foldervid_vids}}"></videoshow>
|
||||
</div>
|
||||
</div>
|
||||
<div class="foldervid_div">
|
||||
<videoshow video="{{$item}}" for="{{foldervid_vids}}"></videoshow>
|
||||
</div>
|
||||
<text style="margin-top: 25px"></text>
|
||||
<text style="margin-top: 25px"></text>
|
||||
</scroll>
|
||||
<image style="position: absolute; margin-top: 265px" if="{{anims.show_loading}}" src="{{anims.loading_src.value}}"></image>
|
||||
</div>
|
||||
</template>
|
||||
@@ -39,7 +41,8 @@ export default {
|
||||
maxpn: 0,
|
||||
anims: {
|
||||
show_loading: false
|
||||
}
|
||||
},
|
||||
scrclass: ""
|
||||
},
|
||||
public: {
|
||||
mlid: "",
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
<template>
|
||||
<div class="page">
|
||||
<scroll scroll-y="true" class="scroll {{scrclass}}" bounces="true">
|
||||
<title-bar title="history.title"></title-bar>
|
||||
<image style="position: absolute; margin-top: 245px" if="{{anims.show_loading}}" src="{{anims.loading_src.value}}">
|
||||
</image>
|
||||
@@ -10,6 +11,7 @@
|
||||
<videoshow for="{{history}}" video="{{$item}}"></videoshow>
|
||||
</div>
|
||||
<text style="margin-top: 25px"></text>
|
||||
</scroll>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -20,7 +22,8 @@ export default {
|
||||
history: null,
|
||||
anims: {
|
||||
show_loading: false
|
||||
}
|
||||
},
|
||||
scrclass: ""
|
||||
},
|
||||
async LoadHistory(){
|
||||
this.anims.show_loading = true
|
||||
|
||||
@@ -2,31 +2,33 @@
|
||||
|
||||
<template>
|
||||
<div class="page">
|
||||
<title-bar title="dmlist.title"></title-bar>
|
||||
<image style="position: absolute; margin-top: 245px" if="{{anims.show_loading}}" src="{{anims.loading_src.value}}">
|
||||
</image>
|
||||
<div class="dmlist" for="{{sessions}}" if="{{show_dmlist}}">
|
||||
<div class="user" onclick="GoDMPage($item.talker_id)" onlongpress="LongPressHandle($item.talker_id)">
|
||||
<image class="userface" src="{{session_cards[$item.talker_id].face}}@75w_75h" alt="/common/fullgray.png"></image>
|
||||
<div class="infoarea">
|
||||
<text class="username">{{ session_cards[$item.talker_id].name }}</text>
|
||||
<text class="lastmsg">
|
||||
{{
|
||||
JSON.parse($item.last_msg.content).content ||
|
||||
JSON.parse($item.last_msg.content).reply_content ||
|
||||
JSON.parse($item.last_msg.content).text ||
|
||||
$t("dmlist.currentNoMessage")
|
||||
}}
|
||||
</text>
|
||||
<scroll scroll-y="true" class="scroll {{scrclass}}" bounces="true">
|
||||
<title-bar title="dmlist.title"></title-bar>
|
||||
<image style="position: absolute; margin-top: 245px" if="{{anims.show_loading}}" src="{{anims.loading_src.value}}">
|
||||
</image>
|
||||
<div class="dmlist" for="{{sessions}}" if="{{show_dmlist}}">
|
||||
<div class="user" onclick="GoDMPage($item.talker_id)" onlongpress="LongPressHandle($item.talker_id)">
|
||||
<image class="userface" src="{{session_cards[$item.talker_id].face}}@75w_75h" alt="/common/fullgray.png"></image>
|
||||
<div class="infoarea">
|
||||
<text class="username">{{ session_cards[$item.talker_id].name }}</text>
|
||||
<text class="lastmsg">
|
||||
{{
|
||||
JSON.parse($item.last_msg.content).content ||
|
||||
JSON.parse($item.last_msg.content).reply_content ||
|
||||
JSON.parse($item.last_msg.content).text ||
|
||||
$t("dmlist.currentNoMessage")
|
||||
}}
|
||||
</text>
|
||||
</div>
|
||||
<image if="{{$item.pinned}}" src="/common/dmlist_pinned_mask.png"
|
||||
style="position: absolute; top: 0px; right: 0px"></image>
|
||||
</div>
|
||||
<image if="{{$item.pinned}}" src="/common/dmlist_pinned_mask.png"
|
||||
style="position: absolute; top: 0px; right: 0px"></image>
|
||||
</div>
|
||||
</div>
|
||||
<text style="font-size: 18px; margin-top: 15px; font-weight: 600" show="{{Show20UserLimit}}">
|
||||
{{ $t("dmlist.userCountLimit") }}
|
||||
</text>
|
||||
<text style="margin-top: 25px"></text>
|
||||
<text style="font-size: 18px; margin-top: 15px; font-weight: 600" show="{{Show20UserLimit}}">
|
||||
{{ $t("dmlist.userCountLimit") }}
|
||||
</text>
|
||||
<text style="margin-top: 25px"></text>
|
||||
</scroll>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -37,12 +39,12 @@ export default {
|
||||
private: {
|
||||
sessions: [],
|
||||
session_cards: {},
|
||||
|
||||
show_dmlist: false,
|
||||
Show20UserLimit: false,
|
||||
anims: {
|
||||
show_loading: false
|
||||
}
|
||||
},
|
||||
scrclass: ""
|
||||
},
|
||||
LongPressHandle(id) {
|
||||
if (global.settings.SETTINGS.pinnedDMUsers.includes(id)) {
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<div class="page">
|
||||
<image style="position: absolute; margin-top: 233px" if="{{anims.show_loading}}" src="{{anims.loading_src.value}}">
|
||||
</image>
|
||||
<scroll class="scroll" scroll-y="true" id="mainscroll" bounces="true">
|
||||
<scroll class="scroll {{scrclass}}" scroll-y="true" id="mainscroll" bounces="true">
|
||||
<div for="{{messages}}">
|
||||
<div class="targetmsg-container" if="{{$item.receiver_id == myId}}">
|
||||
<div class="targetmsg"
|
||||
@@ -86,7 +86,8 @@ export default {
|
||||
anims: {
|
||||
show_loading: false
|
||||
},
|
||||
input_text: ""
|
||||
input_text: "",
|
||||
scrclass: ""
|
||||
},
|
||||
async SendMsg() {
|
||||
// 发送消息
|
||||
|
||||
@@ -2,42 +2,44 @@
|
||||
|
||||
<template>
|
||||
<div class="page">
|
||||
<title-bar title="messages.title"></title-bar>
|
||||
<div class="featurebox" @click="ShowOnPhoneTips()">
|
||||
<div class="boxline" style="margin-top: 20px">
|
||||
<div class="feature" style="margin-left: 17px">
|
||||
<image class="featureimg" src="/common/messages_replyme.png"></image>
|
||||
<text class="featuretext">{{ $t("messages.replyMe") }}</text>
|
||||
<div class="bubble" if="{{data.recv_reply}}">
|
||||
<text class="bubble_text">{{data.recv_reply}}</text>
|
||||
<scroll scroll-y="true" class="scroll {{scrclass}}" bounces="true">
|
||||
<title-bar title="messages.title"></title-bar>
|
||||
<div class="featurebox" @click="ShowOnPhoneTips()">
|
||||
<div class="boxline" style="margin-top: 20px">
|
||||
<div class="feature" style="margin-left: 17px">
|
||||
<image class="featureimg" src="/common/messages_replyme.png"></image>
|
||||
<text class="featuretext">{{ $t("messages.replyMe") }}</text>
|
||||
<div class="bubble" if="{{data.recv_reply}}">
|
||||
<text class="bubble_text">{{data.recv_reply}}</text>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature" style="margin-left: 73px">
|
||||
<image class="featureimg" src="/common/messages_like.png"></image>
|
||||
<text class="featuretext">{{ $t("messages.recvLike") }}</text>
|
||||
<div class="bubble" if="{{data.recv_like}}">
|
||||
<text class="bubble_text">{{data.recv_like}}</text>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature" style="margin-left: 73px">
|
||||
<image class="featureimg" src="/common/messages_like.png"></image>
|
||||
<text class="featuretext">{{ $t("messages.recvLike") }}</text>
|
||||
<div class="bubble" if="{{data.recv_like}}">
|
||||
<text class="bubble_text">{{data.recv_like}}</text>
|
||||
<div class="boxline" style="margin-top: 15px">
|
||||
<div class="feature" style="margin-left: 30px">
|
||||
<image class="featureimg" src="/common/messages_atme.png"></image>
|
||||
<text class="featuretext">{{ $t("messages.atMe") }}</text>
|
||||
<div class="bubble" if="{{data.at}}">
|
||||
<text class="bubble_text">{{data.at}}</text>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature" style="margin-left: 88px">
|
||||
<image class="featureimg" src="/common/messages_sound.png"></image>
|
||||
<text class="featuretext">{{ $t("messages.systemNotification") }}</text>
|
||||
<div class="bubble" if="{{data.sys_msg}}">
|
||||
<text class="bubble_text">{{data.sys_msg}}</text>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="boxline" style="margin-top: 15px">
|
||||
<div class="feature" style="margin-left: 30px">
|
||||
<image class="featureimg" src="/common/messages_atme.png"></image>
|
||||
<text class="featuretext">{{ $t("messages.atMe") }}</text>
|
||||
<div class="bubble" if="{{data.at}}">
|
||||
<text class="bubble_text">{{data.at}}</text>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature" style="margin-left: 88px">
|
||||
<image class="featureimg" src="/common/messages_sound.png"></image>
|
||||
<text class="featuretext">{{ $t("messages.systemNotification") }}</text>
|
||||
<div class="bubble" if="{{data.sys_msg}}">
|
||||
<text class="bubble_text">{{data.sys_msg}}</text>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<image src="/common/dm_icon.png" style="position: absolute; bottom: 0px" @click="GoDM()"></image>
|
||||
<image src="/common/dm_icon.png" style="position: absolute; bottom: 0px" @click="GoDM()"></image>
|
||||
</scroll>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -46,7 +48,8 @@ import prompt from "@system.prompt"
|
||||
import router from "@system.router"
|
||||
export default {
|
||||
private: {
|
||||
data: {}
|
||||
data: {},
|
||||
scrclass: ""
|
||||
},
|
||||
async LoadNotify(){
|
||||
this.data = await global.biliclient.getMessageNotifyFeed()
|
||||
|
||||
@@ -8,15 +8,17 @@
|
||||
|
||||
<template>
|
||||
<div class="page">
|
||||
<title-bar title="{{titletext}}"></title-bar>
|
||||
<image style="position: absolute; margin-top: 245px" if="{{anims.show_loading}}" src="{{anims.loading_src.value}}"></image>
|
||||
<list class="replylist">
|
||||
<list-item type="replies"
|
||||
style="width: 100%; justify-content: center; margin-top: 10px; height: {{PlaceHolderShowCheck($item.rpid)}}"
|
||||
for="{{replies}}">
|
||||
<reply secmode={{secmode}} reply="{{$item}}" @show-tools="ShowTools" @reply="Reply"></reply>
|
||||
</list-item>
|
||||
</list>
|
||||
<scroll scroll-y="true" class="scroll {{scrclass}}" bounces="true">
|
||||
<title-bar title="{{titletext}}"></title-bar>
|
||||
<image style="position: absolute; margin-top: 245px" if="{{anims.show_loading}}" src="{{anims.loading_src.value}}"></image>
|
||||
<list class="replylist">
|
||||
<list-item type="replies"
|
||||
style="width: 100%; justify-content: center; margin-top: 10px; height: {{PlaceHolderShowCheck($item.rpid)}}"
|
||||
for="{{replies}}">
|
||||
<reply secmode={{secmode}} reply="{{$item}}" @show-tools="ShowTools" @reply="Reply"></reply>
|
||||
</list-item>
|
||||
</list>
|
||||
</scroll>
|
||||
<floating-page-changer current_pn="{{current_pn}}" @backpn="BackPN" @nextpn="NextPN"></floating-page-changer>
|
||||
<full-screen-input if="{{replymode}}" @send="SendReply" @exit="ExitInput"></full-screen-input>
|
||||
</div>
|
||||
@@ -46,6 +48,7 @@ export default {
|
||||
},
|
||||
replymode: false,
|
||||
reply_target: null,
|
||||
scrclass: ""
|
||||
},
|
||||
async SendReply(evt) {
|
||||
this.replymode = false
|
||||
|
||||
@@ -2,25 +2,27 @@
|
||||
|
||||
<template>
|
||||
<div class="page">
|
||||
<title-bar title="replytools.title"></title-bar>
|
||||
<div class="toolbtn" style="margin-top: 30px" @click="LikeReply()">
|
||||
<div class="dataicon" style="margin-left: 25px">
|
||||
<image class="toolicon" src="/common/replytools_like.png"></image>
|
||||
<scroll scroll-y="true" class="scroll {{scrclass}}" bounces="true">
|
||||
<title-bar title="replytools.title"></title-bar>
|
||||
<div class="toolbtn" style="margin-top: 30px" @click="LikeReply()">
|
||||
<div class="dataicon" style="margin-left: 25px">
|
||||
<image class="toolicon" src="/common/replytools_like.png"></image>
|
||||
</div>
|
||||
<text class="toolname" style="margin-left: 92px; position: absolute">{{ $t("replytools.like") }}</text>
|
||||
</div>
|
||||
<text class="toolname" style="margin-left: 92px; position: absolute">{{ $t("replytools.like") }}</text>
|
||||
</div>
|
||||
<div class="toolbtn" style="margin-top: 10px" @click="ShowSecReplies()">
|
||||
<div class="dataicon" style="margin-left: 25px">
|
||||
<image class="toolicon" src="/common/replytools_showreplies.png"></image>
|
||||
<div class="toolbtn" style="margin-top: 10px" @click="ShowSecReplies()">
|
||||
<div class="dataicon" style="margin-left: 25px">
|
||||
<image class="toolicon" src="/common/replytools_showreplies.png"></image>
|
||||
</div>
|
||||
<text class="toolname" style="margin-left: 92px; position: absolute">{{ $t("replytools.showReply") }}</text>
|
||||
</div>
|
||||
<text class="toolname" style="margin-left: 92px; position: absolute">{{ $t("replytools.showReply") }}</text>
|
||||
</div>
|
||||
<div class="toolbtn" style="margin-top: 10px" @click="ShowDetail()">
|
||||
<div class="dataicon" style="margin-left: 25px">
|
||||
<image class="toolicon" src="/common/replytools_showdetail.png"></image>
|
||||
<div class="toolbtn" style="margin-top: 10px" @click="ShowDetail()">
|
||||
<div class="dataicon" style="margin-left: 25px">
|
||||
<image class="toolicon" src="/common/replytools_showdetail.png"></image>
|
||||
</div>
|
||||
<text class="toolname" style="margin-left: 92px; position: absolute">{{ $t("replytools.showDetail") }}</text>
|
||||
</div>
|
||||
<text class="toolname" style="margin-left: 92px; position: absolute">{{ $t("replytools.showDetail") }}</text>
|
||||
</div>
|
||||
</scroll>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -35,7 +37,8 @@ export default {
|
||||
},
|
||||
private: {
|
||||
replymessage: "",
|
||||
reply_clone: null
|
||||
reply_clone: null,
|
||||
scrclass: ""
|
||||
},
|
||||
async LikeReply() {
|
||||
var result = await global.biliclient.LikeReply(
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<template>
|
||||
<div class="page">
|
||||
<image style="position: absolute; left: 0px" src="{{getBgImg}}"></image>
|
||||
<scroll class="scroll" scroll-y="true">
|
||||
<scroll class="scroll {{scrclass}}" scroll-y="true">
|
||||
<switch-bar title="search.title" static></switch-bar>
|
||||
<div class="searchbtn" @click="OpenInput">
|
||||
<image src="/common/searchpage_search.png" style="margin-left: 25px" static></image>
|
||||
@@ -35,6 +35,7 @@ export default {
|
||||
anims: {
|
||||
show_loading: false
|
||||
},
|
||||
scrclass: ""
|
||||
},
|
||||
computed: {
|
||||
getBgImg(){
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<template>
|
||||
<div class="page">
|
||||
<image style="position: absolute; left: 0px" src="{{getBgImg}}"></image>
|
||||
<scroll scroll-y="true" class="scroll" bounces="true">
|
||||
<scroll scroll-y="true" class="scroll {{scrclass}}" bounces="true">
|
||||
<switch-bar title="searchresult.title" if="{{!overview_mode}}"></switch-bar>
|
||||
<div class="searchbar" if="{{!overview_mode}}" @click="SearchBarClick">
|
||||
<image src="/common/searchpage_search.png" style="margin-left: 16px"></image>
|
||||
@@ -98,7 +98,8 @@ export default {
|
||||
},
|
||||
anims: {
|
||||
show_loading: false
|
||||
}
|
||||
},
|
||||
scrclass: ""
|
||||
},
|
||||
public: {
|
||||
keyword: ""
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<template>
|
||||
<div class="page">
|
||||
<text style="margin-top: 233px" if="ShowBigPictureTips">{{ $t("picturedetail.bigImageTip") }}</text>
|
||||
<scroll class="scroll" scroll-x="true" scroll-y="true" @scroll="onScroll" bounces="true" id="scroll">
|
||||
<scroll class="scroll {{scrclass}}" scroll-x="true" scroll-y="true" @scroll="onScroll" bounces="true" id="scroll">
|
||||
<div style="{{container_style}}">
|
||||
<image style="{{img_style}}" src="{{img_uri}}" id="img"></image>
|
||||
</div>
|
||||
@@ -38,7 +38,8 @@ export default {
|
||||
},
|
||||
show_toolbar: false,
|
||||
initialSliderValue: 100,
|
||||
deviceInfo: null
|
||||
deviceInfo: null,
|
||||
scrclass: ""
|
||||
},
|
||||
calculateImagePosition(imageWidth, imageHeight) {
|
||||
const x = (this.deviceInfo.screenWidth - imageWidth) / 2;
|
||||
|
||||
@@ -2,11 +2,13 @@
|
||||
|
||||
<template>
|
||||
<div class="page">
|
||||
<title-bar title={{titletext}}></title-bar>
|
||||
<div class="textbg">
|
||||
<text class="text">{{text}}</text>
|
||||
</div>
|
||||
<text style="margin-top: 25px"></text>
|
||||
<scroll scroll-y="true" class="scroll {{scrclass}}" bounces="true">
|
||||
<title-bar title={{titletext}}></title-bar>
|
||||
<div class="textbg">
|
||||
<text class="text">{{text}}</text>
|
||||
</div>
|
||||
<text style="margin-top: 25px"></text>
|
||||
</scroll>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -15,6 +17,9 @@ export default {
|
||||
public: {
|
||||
text: "你说的对,确实是这样的。但是《原神》是由米哈游自主研发的一款全新开放世界冒险游戏。游戏发生在一个被称作「提瓦特」的幻想世界,在这里,被神选中的人将被授予「神之眼」,导引元素之力。你将扮演一位名为「旅行者」的神秘角色,在自由的旅行中邂逅性格各异、能力独特的同伴们,和他们一起击败强敌,找回失散的亲人——同时,逐步发掘「原神」的真相。",
|
||||
titletext: "详情"
|
||||
},
|
||||
private: {
|
||||
scrclass: ""
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
+27
-24
@@ -5,33 +5,35 @@
|
||||
|
||||
<template>
|
||||
<div class="page">
|
||||
<title-bar title="user.title"></title-bar>
|
||||
<user-info account-info="{{user}}" if="{{loaded}}"></user-info>
|
||||
<div class="ctxcard" style="margin-top: 25px" if="{{loaded}}" @click="GoUserVideos">
|
||||
<div class="ctxdesc">
|
||||
<div style="width: 290px;">
|
||||
<text class="desctxt">{{ $t("user.videos") }}</text>
|
||||
<text class="desctxt gs" style="margin-left: 15px">{{navnum.video}}</text>
|
||||
<scroll scroll-y="true" class="scroll {{scrclass}}" bounces="true">
|
||||
<title-bar title="user.title"></title-bar>
|
||||
<user-info account-info="{{user}}" if="{{loaded}}"></user-info>
|
||||
<div class="ctxcard" style="margin-top: 25px" if="{{loaded}}" @click="GoUserVideos">
|
||||
<div class="ctxdesc">
|
||||
<div style="width: 290px;">
|
||||
<text class="desctxt">{{ $t("user.videos") }}</text>
|
||||
<text class="desctxt gs" style="margin-left: 15px">{{navnum.video}}</text>
|
||||
</div>
|
||||
<text class="desctxt gs">></text>
|
||||
</div>
|
||||
<text class="desctxt gs">></text>
|
||||
<scroll class="mp-scroll" scroll-x="true">
|
||||
<div if="{{masterpiece.length > 0}}" class="mp">
|
||||
<online-image for="{{masterpiece}}" src="{{$item.pic}}@90h" style="padding-right: 10px"></online-image>
|
||||
</div>
|
||||
</scroll>
|
||||
</div>
|
||||
<scroll class="mp-scroll" scroll-x="true">
|
||||
<div if="{{masterpiece.length > 0}}" class="mp">
|
||||
<online-image for="{{masterpiece}}" src="{{$item.pic}}@90h" style="padding-right: 10px"></online-image>
|
||||
<div class="ctxcard" style="margin-top: 10px" if="{{loaded}}" @click="WIPTips">
|
||||
<div class="ctxdesc">
|
||||
<div style="width: 290px;">
|
||||
<text class="desctxt">{{ $t("user.dynamices") }}</text>
|
||||
<text class="desctxt gs" style="margin-left: 15px">{{dynamiclist.items.length}}+</text>
|
||||
</div>
|
||||
<text class="desctxt gs">></text>
|
||||
</div>
|
||||
</scroll>
|
||||
</div>
|
||||
<div class="ctxcard" style="margin-top: 10px" if="{{loaded}}" @click="WIPTips">
|
||||
<div class="ctxdesc">
|
||||
<div style="width: 290px;">
|
||||
<text class="desctxt">{{ $t("user.dynamices") }}</text>
|
||||
<text class="desctxt gs" style="margin-left: 15px">{{dynamiclist.items.length}}+</text>
|
||||
</div>
|
||||
<text class="desctxt gs">></text>
|
||||
</div>
|
||||
</div>
|
||||
<default-button @click="GoDMPage" if="{{loaded}}" margin-top="25px" primary="true" text="user.senddm"></default-button>
|
||||
<text style="margin-top: 30px"></text>
|
||||
<default-button @click="GoDMPage" if="{{loaded}}" margin-top="25px" primary="true" text="user.senddm"></default-button>
|
||||
<text style="margin-top: 30px"></text>
|
||||
</scroll>
|
||||
<image style="position: absolute; margin-top: 245px" if="{{anims.show_loading}}" src="{{anims.loading_src.value}}"></image>
|
||||
</div>
|
||||
</template>
|
||||
@@ -53,7 +55,8 @@ export default {
|
||||
anims: {
|
||||
show_loading: false
|
||||
},
|
||||
loaded: false
|
||||
loaded: false,
|
||||
scrclass: ""
|
||||
},
|
||||
async LoadUserInfo(){
|
||||
this.anims.loading.start()
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
<template>
|
||||
<div class="page">
|
||||
<scroll class="scroll" scroll-y="true">
|
||||
<scroll class="scroll {{scrclass}}" scroll-y="true">
|
||||
<title-bar title="user.uservideos.title"></title-bar>
|
||||
<div style="flex-direction: column; width: 77%">
|
||||
<videoshow if="{{!anims.show_loading}}" for="{{vids.list.vlist}}" bvid="{{$item.bvid}}"></videoshow>
|
||||
@@ -32,7 +32,8 @@ export default {
|
||||
maxpn: 1,
|
||||
anims: {
|
||||
show_loading: false
|
||||
}
|
||||
},
|
||||
scrclass: ""
|
||||
},
|
||||
BackPN() {
|
||||
if (this.current_pn > 1) {
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
<template>
|
||||
<div class="page">
|
||||
<scroll scroll-y="true" class="scroll" bounces="true">
|
||||
<scroll scroll-y="true" class="scroll {{scrclass}}" bounces="true">
|
||||
<title-bar title="video.title"></title-bar>
|
||||
<online-image if="{{renderingCover}}" src="{{vid.pic}}@319w_150h" margin-top="30px" lock-size="true" width="320px"
|
||||
height="150px" loading-anim="true" @loaded="GenBlur"></online-image>
|
||||
@@ -72,7 +72,8 @@ export default {
|
||||
coinsrc: "/common/vidtool_coin.png",
|
||||
starsrc: "/common/vidtool_star.png",
|
||||
replymode: false,
|
||||
renderingCover: false
|
||||
renderingCover: false,
|
||||
scrclass: ""
|
||||
},
|
||||
computed: {
|
||||
stat_view() {
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
import { router } from "../tsimports"
|
||||
|
||||
class GlobalActions {
|
||||
static AddToVmPool(vm){
|
||||
global.vmPool[vm._name] = vm
|
||||
}
|
||||
|
||||
static ClearCurrentVmSrcClass() {
|
||||
global.vmPool[global.currentPageName].scrclass = ""
|
||||
}
|
||||
}
|
||||
|
||||
function runVmPoolGC(){
|
||||
for(var name in global.vmPool){
|
||||
if(global.vmPool[name]){
|
||||
if(global.vmPool[name].$valid){
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
global.logger.log("[ui.VmPoolGC] page named", name, " has been already destroyed.")
|
||||
delete global.vmPool[name]
|
||||
}
|
||||
}
|
||||
|
||||
export function Init(){
|
||||
global.vmPool = {}
|
||||
global.currentPageName = ""
|
||||
global.logger.log("[ui.InitPage] inited.")
|
||||
|
||||
setInterval(() => {
|
||||
runVmPoolGC()
|
||||
}, 10000)
|
||||
}
|
||||
|
||||
export function InitPage(vm){
|
||||
global.currentPageName = vm._name
|
||||
GlobalActions.AddToVmPool(vm)
|
||||
GlobalActions.ClearCurrentVmSrcClass()
|
||||
global.logger.log("[ui.InitPage] vm set successed. name=", global.currentPageName)
|
||||
}
|
||||
|
||||
export function OnBackPressTriggered(){
|
||||
global.vmPool[global.currentPageName].scrclass = "scroll-backanim"
|
||||
setTimeout(() => {
|
||||
GlobalActions.ClearCurrentVmSrcClass()
|
||||
router.back()
|
||||
|
||||
var pageStack = router.getPages()
|
||||
var lastPageName = pageStack[pageStack.length - 2].name
|
||||
global.logger.log("lastpage=", lastPageName, "currentPage=", global.currentPageName)
|
||||
global.vmPool[lastPageName].scrclass = ""
|
||||
global.vmPool[lastPageName].scrclass = "scroll-frombackanim"
|
||||
}, 300)
|
||||
}
|
||||
Reference in New Issue
Block a user