From 3b7da44cc7a69836c7296803ecc1d8b67d2318f7 Mon Sep 17 00:00:00 2001 From: Simba Date: Sun, 21 Jun 2020 19:34:16 +0800 Subject: [PATCH] preference index engines --- src/assets/css/global/miscellaneous.less | 4 + src/common/model/global/i18n/LangEn.ts | 6 + src/common/model/global/i18n/LangZh.ts | 6 + src/pages/preference/Index.less | 6 + src/pages/preference/Index.tsx | 155 +++++++++++------- src/pages/widget/InfoCell.less | 2 +- src/pages/widget/previewer/PreviewerHelper.ts | 65 +++----- 7 files changed, 144 insertions(+), 100 deletions(-) diff --git a/src/assets/css/global/miscellaneous.less b/src/assets/css/global/miscellaneous.less index 321c311..b4ae19b 100644 --- a/src/assets/css/global/miscellaneous.less +++ b/src/assets/css/global/miscellaneous.less @@ -132,3 +132,7 @@ a { height: 60px; cursor: pointer; } + +.relative { + position: relative; +} diff --git a/src/common/model/global/i18n/LangEn.ts b/src/common/model/global/i18n/LangEn.ts index 34f6a6b..ee152c5 100644 --- a/src/common/model/global/i18n/LangEn.ts +++ b/src/common/model/global/i18n/LangEn.ts @@ -172,6 +172,12 @@ let LangEn = { enterZipMaxNumLimit: "Please enter zip max num!", enterZipMaxSizeLimit: "Please enter zip max size!", enterUserDefaultSizeLimit: "Please enter user's default size!", + engine: "The number {} engine", + engineReg: "Engine format", + engineSuffix: "Engine suffix", + enginePreview: "Engine preview", + previewCurrent: "preview in current page", + previewOpen: "preview in new page" }, share: { shareDetail: "Share Detail", diff --git a/src/common/model/global/i18n/LangZh.ts b/src/common/model/global/i18n/LangZh.ts index 4d95aed..85a2c01 100644 --- a/src/common/model/global/i18n/LangZh.ts +++ b/src/common/model/global/i18n/LangZh.ts @@ -174,6 +174,12 @@ let LangZh = { enterZipMaxNumLimit: "zip最大数量限制必填!", enterZipMaxSizeLimit: "zip大小限制必填!", enterUserDefaultSizeLimit: "默认用户空间大小必填!", + engine: "{}号引擎", + engineReg: "引擎格式", + engineSuffix: "匹配后缀", + enginePreview: "预览方式", + previewCurrent: "本站预览", + previewOpen: "新标签打开" }, share: { shareDetail: "分享详情", diff --git a/src/pages/preference/Index.less b/src/pages/preference/Index.less index 942b262..683d94f 100644 --- a/src/pages/preference/Index.less +++ b/src/pages/preference/Index.less @@ -17,5 +17,11 @@ max-height: 30px; cursor: pointer; } + .preview-tip { + position: absolute; + right: 0; + top: 0; + margin-right: 0; + } } diff --git a/src/pages/preference/Index.tsx b/src/pages/preference/Index.tsx index 5ab7bbb..a326aaa 100644 --- a/src/pages/preference/Index.tsx +++ b/src/pages/preference/Index.tsx @@ -1,35 +1,29 @@ -import React from 'react'; -import {Link, RouteComponentProps} from "react-router-dom"; -import "./Index.less" +import React from "react"; +import { Link, RouteComponentProps } from "react-router-dom"; +import "./Index.less"; import TankComponent from "../../common/component/TankComponent"; import User from "../../common/model/user/User"; import Moon from "../../common/model/global/Moon"; import TankTitle from "../widget/TankTitle"; -import {Button} from "antd"; -import {EditOutlined, ThunderboltOutlined} from '@ant-design/icons'; +import { Button, Divider, Tooltip, Tag } from "antd"; +import { EditOutlined, ThunderboltOutlined } from "@ant-design/icons"; import InfoCell from "../widget/InfoCell"; import Preference from "../../common/model/preference/Preference"; -import TankContentCard from '../widget/TankContentCard'; +import TankContentCard from "../widget/TankContentCard"; import FileUtil from "../../common/util/FileUtil"; import ImagePreviewer from "../widget/previewer/ImagePreviewer"; import Lang from "../../common/model/global/Lang"; import SingleTextModal from "../widget/SingleTextModal"; import MessageBoxUtil from "../../common/util/MessageBoxUtil"; +interface IProps extends RouteComponentProps {} -interface IProps extends RouteComponentProps { - -} - -interface IState { - -} +interface IState {} export default class Index extends TankComponent { + user: User = Moon.getSingleton().user; - user: User = Moon.getSingleton().user - - preference: Preference = Moon.getSingleton().preference + preference: Preference = Moon.getSingleton().preference; constructor(props: IProps) { super(props); @@ -38,52 +32,53 @@ export default class Index extends TankComponent { } componentDidMount() { - - this.refresh() - + this.refresh(); } //refresh preference. refresh() { - let that = this + let that = this; that.preference.httpFetch(function () { - that.updateUI() - - }) + that.updateUI(); + }); } cleanup() { + let that = this; + let preference = this.preference; - - let that = this - let preference = this.preference - - SingleTextModal.open(Lang.t("preference.systemCleanupPrompt"), "", function (text: string) { - - preference.httpSystemCleanup(text, function () { - MessageBoxUtil.success(Lang.t("operationSuccess")) - }) - }) - - + SingleTextModal.open( + Lang.t("preference.systemCleanupPrompt"), + "", + function (text: string) { + preference.httpSystemCleanup(text, function () { + MessageBoxUtil.success(Lang.t("operationSuccess")); + }); + } + ); } render() { - let that = this - return (
- - + + - - + @@ -93,33 +88,46 @@ export default class Index extends TankComponent { {this.preference.logoUrl && ( - logo { - ImagePreviewer.showSinglePhoto(this.preference.logoUrl!) - }}/> + logo { + ImagePreviewer.showSinglePhoto(this.preference.logoUrl!); + }} + /> )} - + {this.preference.faviconUrl && ( - logo { - ImagePreviewer.showSinglePhoto(this.preference.faviconUrl!) - }}/> + logo { + ImagePreviewer.showSinglePhoto(this.preference.faviconUrl!); + }} + /> )} - - + - + - {this.preference.downloadDirMaxNum === -1 ? Lang.t("preference.noLimit") : this.preference.downloadDirMaxNum} + {this.preference.downloadDirMaxNum === -1 + ? Lang.t("preference.noLimit") + : this.preference.downloadDirMaxNum} @@ -135,17 +143,42 @@ export default class Index extends TankComponent { - + https://tank-doc.eyeblue.cn/zh - - +
+ + + {this.preference.previewConfig.previewEngines.map((engines, index) => ( +
+ + + {Lang.t("preference.engine", index + 1)} + + + {engines.previewInSite ? ( + + {Lang.t("preference.previewCurrent")} + + ) : ( + + {Lang.t("preference.previewOpen")} + + )} + + + {engines.url} + + + {engines.extensions} + + +
+ ))}
); } } - - diff --git a/src/pages/widget/InfoCell.less b/src/pages/widget/InfoCell.less index 47ffdfa..680ff89 100644 --- a/src/pages/widget/InfoCell.less +++ b/src/pages/widget/InfoCell.less @@ -1,5 +1,5 @@ .castle-widget-info-cell { - + word-break: break-all; margin-bottom: 10px; .info-cell-name { color: #99a9bf; diff --git a/src/pages/widget/previewer/PreviewerHelper.ts b/src/pages/widget/previewer/PreviewerHelper.ts index a3fa9c6..21210d1 100644 --- a/src/pages/widget/previewer/PreviewerHelper.ts +++ b/src/pages/widget/previewer/PreviewerHelper.ts @@ -1,4 +1,4 @@ -import "./ImagePreviewer.less" +import "./ImagePreviewer.less"; import MimeUtil from "../../../common/util/MimeUtil"; import MessageBoxUtil from "../../../common/util/MessageBoxUtil"; import Moon from "../../../common/model/global/Moon"; @@ -11,54 +11,49 @@ import DownloadToken from "../../../common/model/download/token/DownloadToken"; * 文件预览帮助器 */ export default class PreviewerHelper { - /** * 准备好一个文件url */ - static prepareMatterUrl(matter: Matter, needTokenUrl: boolean, successCallback: (matterUrl: string) => void) { - + static prepareMatterUrl( + matter: Matter, + needTokenUrl: boolean, + successCallback: (matterUrl: string) => void + ) { if (needTokenUrl) { - //获取一个临时的下载token. - let downloadToken = new DownloadToken() + let downloadToken = new DownloadToken(); downloadToken.httpFetchDownloadToken(matter.uuid!, function () { - let matterUrl = matter.getPreviewUrl(downloadToken.uuid!) - - successCallback(matterUrl) - - }) - + let matterUrl = matter.getPreviewUrl(downloadToken.uuid!); + successCallback(matterUrl); + }); } else { - - successCallback(matter.getPreviewUrl()) + successCallback(matter.getPreviewUrl()); } - } - /** * 对一个文件进行预览,自动选择预览引擎 * @param matter 文件 */ static preview(matter: Matter) { - let fileName: string = matter.name - let extension: string = MimeUtil.getExtensionWithoutDot(fileName) + let fileName: string = matter.name; + let extension: string = MimeUtil.getExtensionWithoutDot(fileName); if (!extension) { MessageBoxUtil.warning(fileName + " 没有后缀名,无法预览"); - return + return; } //去选择预览引擎。 - let previewConfig = Moon.getSingleton().preference.previewConfig + let previewConfig = Moon.getSingleton().preference.previewConfig; - let previewEngine: PreviewEngine | null = null + let previewEngine: PreviewEngine | null = null; //寻找用户自定义的预览引擎 for (let engine of previewConfig.previewEngines) { if (engine.canPreview(fileName)) { - previewEngine = engine - break + previewEngine = engine; + break; } } @@ -67,8 +62,8 @@ export default class PreviewerHelper { let defaultEngines = PreviewEngine.defaultPreviewEngines(); for (let engine of defaultEngines) { if (engine.canPreview(fileName)) { - previewEngine = engine - break + previewEngine = engine; + break; } } } @@ -76,28 +71,22 @@ export default class PreviewerHelper { if (previewEngine === null) { MessageBoxUtil.warning(fileName + " 无法预览"); } else { + let targetUrl = previewEngine.url; - let targetUrl = previewEngine.url - - const engine: PreviewEngine = previewEngine - let needToken: boolean = matter.privacy && (targetUrl.indexOf("{publicUrl}") !== -1 || targetUrl.indexOf("{encodePublicUrl}") !== -1) + const engine: PreviewEngine = previewEngine; + const needToken: boolean = + matter.privacy && targetUrl.indexOf("{url}") !== -1; PreviewerHelper.prepareMatterUrl(matter, needToken, function (url) { - targetUrl = targetUrl.replace("{originUrl}", matter.getPreviewUrl()); targetUrl = targetUrl.replace("{url}", encodeURIComponent(url)); if (engine.previewInSite) { - BrowserPreviewer.show(fileName, targetUrl, matter.size) + BrowserPreviewer.show(fileName, targetUrl, matter.size); } else { - window.open(targetUrl) + window.open(targetUrl); } - - }) - + }); } - } - } -