diff --git a/src/common/model/global/i18n/LangEn.ts b/src/common/model/global/i18n/LangEn.ts index 56d94d2..8dbfefb 100644 --- a/src/common/model/global/i18n/LangEn.ts +++ b/src/common/model/global/i18n/LangEn.ts @@ -183,6 +183,9 @@ let LangEn = { engineReg: "Engine format", engineSuffix: "Engine suffix", enginePreview: "Engine preview", + defaultPreview: "Default preview engine", + previewEngine: "Number {} preview engine", + defaultPreviewDesc: "Default preview engine, can not be removed", engineRegHelper: "template syntax, {url} represents the file path, the preview will automatically replace with the corresponding file url", engineRegPlaceHolder: "eg:https://xxx.xxx.xxx?url={url}", engineSuffixPlaceHolder: "suffix can not be null, split by comma, look like: doc,ppt,xls", @@ -196,6 +199,11 @@ let LangEn = { cronValidate: "Cron expression can not be null", scanScope: "Scan scope", scanUsers: "Scan users", + scanPerTenSeconds: "Scan every ten seconds", + scanPerThirtySeconds: "Scan every thirty seconds", + scanPerMinute: "Scan every minute", + scanPerHour: "Scan every hour", + scanCustom: "Scan custom", chooseUsers: "Fuzzy search users", chooseUsersValidate: "choose one more user" }, @@ -286,7 +294,8 @@ let LangEn = { editSomebodyPassword: "Edit {}'s Password", transfigurationPromptText: "Transfiguration Prompt", transfigurationPrompt: "You will login as this user.Please visit this link in other browser, if in current browser, you will logout.", - + allUsers: "All users", + partialUsers: "Partial users" }, model: { usernameRule: "only lowercase letter and number and _ is permitted.", diff --git a/src/common/model/global/i18n/LangZh.ts b/src/common/model/global/i18n/LangZh.ts index 63b8231..ded6535 100644 --- a/src/common/model/global/i18n/LangZh.ts +++ b/src/common/model/global/i18n/LangZh.ts @@ -184,6 +184,9 @@ let LangZh = { engineReg: "引擎格式", engineSuffix: "匹配后缀", enginePreview: "预览方式", + defaultPreview: "默认引擎", + previewEngine: "{}号引擎", + defaultPreviewDesc: "默认预览引擎,不可移除", engineRegHelper: "此处填写模板语法,{url}表示文件路径,预览时会自动替换成对应的文件url", engineRegPlaceHolder: "例如:https://xxx.xxx.xxx?url={url}", engineSuffixPlaceHolder: '输入后缀,使用逗号分隔,不用带. 例如:doc,ppt,xls', @@ -197,6 +200,11 @@ let LangZh = { cronValidate: "cron表达式不能为空", scanScope: "扫描范围", scanUsers: "扫描用户", + scanPerTenSeconds: "每十秒", + scanPerThirtySeconds: "每三十秒", + scanPerMinute: "每分钟", + scanPerHour: "每小时", + scanCustom: "自定义", chooseUsers: "模糊搜索用户", chooseUsersValidate: "请选择至少一个用户" }, @@ -287,7 +295,8 @@ let LangZh = { editSomebodyPassword: "修改{}的密码", transfigurationPromptText: "变身提示", transfigurationPrompt: "您将使用该用户的身份登录。请复制以下链接到其他浏览器访问,在当前浏览器访问会导致当前用户登录信息失效。", - + allUsers: "全部用户", + partialUsers: "局部用户" }, model: { usernameRule: "用户名只能包含字母,数字和\"_\"", diff --git a/src/common/model/preference/model/ScanCronType.ts b/src/common/model/preference/model/ScanCronType.ts index b188fce..49ee6a8 100644 --- a/src/common/model/preference/model/ScanCronType.ts +++ b/src/common/model/preference/model/ScanCronType.ts @@ -1,4 +1,5 @@ import SelectionOption from "../../base/option/SelectionOption"; +import Lang from "../../global/Lang"; enum ScanCronType { TEN_SECONDS = "TEN_SECONDS", @@ -14,23 +15,23 @@ const ScanCronTypes: ScanCronType[] = Object.keys(ScanCronType).map( const ScanCronTypeMap: { [key in keyof typeof ScanCronType]: SelectionOption } = { TEN_SECONDS: { - name: "每十秒", + name: Lang.t("preference.scanPerTenSeconds"), value: "@every 10s", }, THIRTY_SECONDS: { - name: "每三十秒", + name: Lang.t("preference.scanPerThirtySeconds"), value: "@every 30s", }, MINUTE: { - name: "每分钟", + name: Lang.t("preference.scanPerMinute"), value: "@every 1m", }, HOUR: { - name: "每小时", + name: Lang.t("preference.scanPerHour"), value: "0 * * * *", }, CUSTOM: { - name: "自定义", + name: Lang.t("preference.scanCustom"), value: "CUSTOM", }, }; diff --git a/src/common/model/preference/model/ScanScopeType.ts b/src/common/model/preference/model/ScanScopeType.ts index 269df9d..307dd52 100644 --- a/src/common/model/preference/model/ScanScopeType.ts +++ b/src/common/model/preference/model/ScanScopeType.ts @@ -1,4 +1,5 @@ import SelectionOption from "../../base/option/SelectionOption"; +import Lang from "../../global/Lang"; enum ScanScopeType { ALL = "ALL", @@ -11,11 +12,11 @@ const ScanScopeTypes: ScanScopeType[] = Object.keys(ScanScopeType).map( const ScanScopeTypeMap: { [key in keyof typeof ScanScopeType]: SelectionOption } = { ALL: { - name: "全部用户", + name: Lang.t("user.allUsers"), value: "ALL", }, CUSTOM: { - name: "局部用户", + name: Lang.t("user.partialUsers"), value: "CUSTOM", }, }; diff --git a/src/pages/preference/Edit.tsx b/src/pages/preference/Edit.tsx index 5cc68c9..2063b00 100644 --- a/src/pages/preference/Edit.tsx +++ b/src/pages/preference/Edit.tsx @@ -163,7 +163,6 @@ export default class Edit extends TankComponent { - {" "} {Lang.t("preference.current")}: {this.formRef && this.formRef.current ? FileUtil.humanFileSize( diff --git a/src/pages/preference/Index.less b/src/pages/preference/Index.less index bbd522e..50f3ded 100644 --- a/src/pages/preference/Index.less +++ b/src/pages/preference/Index.less @@ -17,16 +17,6 @@ max-height: 30px; cursor: pointer; } - .preview-tip { - position: absolute; - right: 0; - top: 0; - margin-right: 0; - } - .engine-box { - border: 1px solid #eee; - padding: 20px 10px 5px; - } .basic-info, .preview-info, diff --git a/src/pages/preference/Index.tsx b/src/pages/preference/Index.tsx index 5a0f167..0d07a2e 100644 --- a/src/pages/preference/Index.tsx +++ b/src/pages/preference/Index.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import React, { Children } from "react"; import { Link, RouteComponentProps } from "react-router-dom"; import "./Index.less"; import TankComponent from "../../common/component/TankComponent"; @@ -19,6 +19,8 @@ import { ScanScopeType, ScanScopeTypeMap, } from "../../common/model/preference/model/ScanScopeType"; +import PreviewEngineCell from "./widget/PreviewEngineCell"; +import PreviewEngine from "../../common/model/preference/model/PreviewEngine"; interface IProps extends RouteComponentProps {} @@ -68,7 +70,8 @@ export default class Index extends TankComponent { previewConfig: { previewEngines }, scanConfig, } = this.preference; - console.log(scanConfig); + + console.log(PreviewEngine.defaultPreviewEngines()); return (
@@ -173,30 +176,17 @@ export default class Index extends TankComponent {
- {previewEngines.length ? ( - previewEngines.map((engines, index) => ( -
- - {engines.previewInSite ? ( - - {Lang.t("preference.previewCurrent")} - - ) : ( - - {Lang.t("preference.previewOpen")} - - )} - - - {engines.url} - - - {engines.extensions} - -
+ {previewEngines.map((engine, index) => ( + + ))} + {Children.toArray( + PreviewEngine.defaultPreviewEngines().map((engine) => ( + )) - ) : ( - )}
diff --git a/src/pages/preference/widget/PreviewConfigPanel.tsx b/src/pages/preference/widget/PreviewConfigPanel.tsx index fb6b56c..f9bc0a2 100644 --- a/src/pages/preference/widget/PreviewConfigPanel.tsx +++ b/src/pages/preference/widget/PreviewConfigPanel.tsx @@ -3,7 +3,7 @@ import "./PreviewConfigPanel.less"; import TankComponent from "../../../common/component/TankComponent"; import PreviewConfig from "../../../common/model/preference/model/PreviewConfig"; import PreviewEngine from "../../../common/model/preference/model/PreviewEngine"; -import PreviewEngineCell from "./PreviewEngineCell"; +import PreviewEngineEditCell from "./PreviewEngineEditCell"; import { Button } from "antd"; import { PlusOutlined } from "@ant-design/icons"; import Lang from "../../../common/model/global/Lang"; @@ -43,7 +43,7 @@ export default class PreviewConfigPanel extends TankComponent { {previewConfig.previewEngines.map( (previewEngine: PreviewEngine, index: number) => { return ( - void; + engine: PreviewEngine; + order?: number; // 从1开始 } -interface IState {} +export default function PreviewEngineCell(props: IProps) { + const { engine, order } = props; -export default class PreviewEngineCell extends TankComponent { - constructor(props: IProps) { - super(props); - } - - render() { - const { previewEngine } = this.props; - - return ( -
-
- {Lang.t("preference.engine", this.props.index + 1)} - - { - this.props.onDelete(); - }} - /> - -
-
- -
- {Lang.t("preference.engineReg")} - -
- - } - rules={[ - { required: true, message: Lang.t("preference.engineRegHelper") }, - ]} - > - { - previewEngine.url = e.target.value; - this.updateUI(); - }} - /> -
- - -
- {Lang.t("preference.engineSuffix")} - -
- - } - rules={[ - { - required: true, - message: Lang.t("preference.engineSuffixPlaceHolder"), - }, - ]} - > - { - previewEngine.extensions = e.target.value; - this.updateUI(); - }} - /> -
- - -
- {Lang.t("preference.previewCurrent")} - -
- - } - > - { - previewEngine.previewInSite = val; - this.updateUI(); - }} - /> -
-
+ return ( +
+
+

+ {order ? Lang.t("preference.previewEngine", order) : Lang.t("preference.defaultPreview")} +

+ {engine.url} + + {engine.extensions} +
- ); - } +
+ { + order ? null: ( + + + {Lang.t("preference.defaultPreview")} + + + ) + } + + {engine.previewInSite ? ( + + {Lang.t("preference.previewCurrent")} + + ) : ( + + {Lang.t("preference.previewOpen")} + + )} + +
+ +
+ ); } diff --git a/src/pages/preference/widget/PreviewEngineEditCell.less b/src/pages/preference/widget/PreviewEngineEditCell.less new file mode 100644 index 0000000..ef4946a --- /dev/null +++ b/src/pages/preference/widget/PreviewEngineEditCell.less @@ -0,0 +1,31 @@ + +.widget-preview-engine-cell { + + margin-bottom: 15px; + border: 1px solid #eee; + border-radius: 4px; + + .engine-title { + border-bottom: 1px solid #eeeeee; + display: flex; + justify-content: space-between; + padding: 10px; + + } + + .engine-content { + padding: 10px; + + .castle-widget-info-cell { + + .info-cell-name { + color: rgba(0, 0, 0, 0.85); + font-size: 14px; + font-weight: normal; + } + } + + } + + +} diff --git a/src/pages/preference/widget/PreviewEngineEditCell.tsx b/src/pages/preference/widget/PreviewEngineEditCell.tsx new file mode 100644 index 0000000..8c9cc56 --- /dev/null +++ b/src/pages/preference/widget/PreviewEngineEditCell.tsx @@ -0,0 +1,115 @@ +import React from "react"; +import "./PreviewEngineEditCell.less"; +import TankComponent from "../../../common/component/TankComponent"; +import PreviewEngine from "../../../common/model/preference/model/PreviewEngine"; +import { DeleteOutlined } from "@ant-design/icons"; +import { Form, Input, Switch, Tooltip } from "antd"; +import Lang from "../../../common/model/global/Lang"; +import { QuestionCircleOutlined } from "@ant-design/icons"; + +interface IProps { + previewEngine: PreviewEngine; + index: number; + onDelete: () => void; +} + +interface IState {} + +export default class PreviewEngineEditCell extends TankComponent { + constructor(props: IProps) { + super(props); + } + + render() { + const { previewEngine } = this.props; + + return ( +
+
+ {Lang.t("preference.engine", this.props.index + 1)} + + { + this.props.onDelete(); + }} + /> + +
+
+ +
+ {Lang.t("preference.engineReg")} + +
+ + } + rules={[ + { required: true, message: Lang.t("preference.engineRegHelper") }, + ]} + > + { + previewEngine.url = e.target.value; + this.updateUI(); + }} + /> +
+ + +
+ {Lang.t("preference.engineSuffix")} + +
+ + } + rules={[ + { + required: true, + message: Lang.t("preference.engineSuffixPlaceHolder"), + }, + ]} + > + { + previewEngine.extensions = e.target.value; + this.updateUI(); + }} + /> +
+ + +
+ {Lang.t("preference.previewCurrent")} + +
+ + } + > + { + previewEngine.previewInSite = val; + this.updateUI(); + }} + /> +
+
+
+ ); + } +}