You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by ju...@apache.org on 2020/06/16 09:19:35 UTC
[incubator-apisix-dashboard] branch next updated: Fix routes (#262)
This is an automated email from the ASF dual-hosted git repository.
juzhiyuan pushed a commit to branch next
in repository https://gitbox.apache.org/repos/asf/incubator-apisix-dashboard.git
The following commit(s) were added to refs/heads/next by this push:
new 67a2807 Fix routes (#262)
67a2807 is described below
commit 67a280784e55dd8379bbc4078a4a5524aac27a60
Author: litesun <31...@users.noreply.github.com>
AuthorDate: Tue Jun 16 17:19:29 2020 +0800
Fix routes (#262)
* add: grafanaURL startsWith
* feat: drop startsWith
* add : creat new routes button
* feat: new redirect logic
* fix bug
* feat: remove redirectOptions when submit
* add: h2 in step4
* update: redirectOptions to redirectOption
---
src/pages/Routes/Create.tsx | 12 ++----------
src/pages/Routes/components/CreateStep4/CreateStep4.tsx | 7 +++++++
src/pages/Routes/components/ResultView/ResultView.tsx | 3 +++
src/pages/Routes/components/Step1/RequestConfigView.tsx | 10 +++++++---
src/pages/Routes/components/Step1/index.tsx | 2 +-
src/pages/Routes/constants.ts | 2 +-
src/pages/Routes/transform.ts | 15 ++++++++++-----
src/pages/Routes/typing.d.ts | 2 +-
8 files changed, 32 insertions(+), 21 deletions(-)
diff --git a/src/pages/Routes/Create.tsx b/src/pages/Routes/Create.tsx
index 4dd8d78..1015358 100644
--- a/src/pages/Routes/Create.tsx
+++ b/src/pages/Routes/Create.tsx
@@ -84,7 +84,6 @@ const Create: React.FC<Props> = (props) => {
});
useEffect(() => {
- console.log(props);
if (props.route.name === 'edit') {
setupRoute(props.match.params.rid).then(() => setupPlugin());
} else {
@@ -93,20 +92,13 @@ const Create: React.FC<Props> = (props) => {
}, []);
useEffect(() => {
- const { redirectURI, forceHttps } = step1Data;
- if (redirectURI === '') {
- setRedirect(false);
- setStepHeader(STEP_HEADER_4);
- return;
- }
+ const { redirectOption } = step1Data;
- if (!forceHttps) {
+ if (redirectOption === 'customRedirect') {
setRedirect(true);
setStepHeader(STEP_HEADER_2);
return;
}
-
- setStep1Data({ ...step1Data, redirectURI: '' });
setRedirect(false);
setStepHeader(STEP_HEADER_4);
}, [step1Data]);
diff --git a/src/pages/Routes/components/CreateStep4/CreateStep4.tsx b/src/pages/Routes/components/CreateStep4/CreateStep4.tsx
index 332dab5..a539b9f 100644
--- a/src/pages/Routes/components/CreateStep4/CreateStep4.tsx
+++ b/src/pages/Routes/components/CreateStep4/CreateStep4.tsx
@@ -11,13 +11,20 @@ interface Props extends RouteModule.Data {
redirect?: boolean;
}
+const style = {
+ marginTop: '40px',
+};
+
const CreateStep4: React.FC<Props> = ({ form1, form2, redirect, ...rest }) => {
return (
<>
+ <h2>定义 API 请求</h2>
<Step1 {...rest} form={form1} disabled />
{!redirect && (
<>
+ <h2 style={style}>定义 API 后端服务</h2>
<Step2 {...rest} form={form2} disabled />
+ <h2 style={style}>插件配置</h2>
<CreateStep3 {...rest} disabled />
</>
)}
diff --git a/src/pages/Routes/components/ResultView/ResultView.tsx b/src/pages/Routes/components/ResultView/ResultView.tsx
index 9b81812..f4505b2 100644
--- a/src/pages/Routes/components/ResultView/ResultView.tsx
+++ b/src/pages/Routes/components/ResultView/ResultView.tsx
@@ -14,6 +14,9 @@ const ResultView: React.FC<Props> = () => (
<Button type="primary" key="goto-list" onClick={() => history.replace('/routes')}>
返回路由列表
</Button>,
+ <Button key="create-new" onClick={() => history.replace('/routes/create')}>
+ 创建新路由
+ </Button>,
]}
/>
);
diff --git a/src/pages/Routes/components/Step1/RequestConfigView.tsx b/src/pages/Routes/components/Step1/RequestConfigView.tsx
index 57ea740..2424a4a 100644
--- a/src/pages/Routes/components/Step1/RequestConfigView.tsx
+++ b/src/pages/Routes/components/Step1/RequestConfigView.tsx
@@ -168,10 +168,14 @@ const RequestConfigView: React.FC<Props> = ({ data, disabled, onChange }) => {
>
<Checkbox.Group options={HTTP_METHOD_OPTION_LIST} disabled={disabled} />
</Form.Item>
- <Form.Item label="强制 HTTPS" valuePropName="checked" name="forceHttps">
- <Switch disabled={disabled} />
+ <Form.Item label="重定向" name="redirectOption">
+ <Select disabled={disabled}>
+ <Select.Option value="forceHttps">启用 HTTPS</Select.Option>
+ <Select.Option value="customRedirect">自定义</Select.Option>
+ <Select.Option value="disabled">禁用</Select.Option>
+ </Select>
</Form.Item>
- {!step1Data.forceHttps && (
+ {step1Data.redirectOption === 'customRedirect' && (
<Form.Item label="自定义重定向">
<Row gutter={10}>
<Col>
diff --git a/src/pages/Routes/components/Step1/index.tsx b/src/pages/Routes/components/Step1/index.tsx
index 0c284e6..746cba8 100644
--- a/src/pages/Routes/components/Step1/index.tsx
+++ b/src/pages/Routes/components/Step1/index.tsx
@@ -23,7 +23,7 @@ const Step1: React.FC<Props> = (props) => {
layout="horizontal"
className={styles.stepForm}
onValuesChange={(field) => {
- if (field.forceHttps) {
+ if (field.redirectOption === 'forceHttps' || field.redirectOption === 'disabled') {
form.setFieldsValue({ redirectURI: '' });
}
onChange({ ...data.step1Data, ...field });
diff --git a/src/pages/Routes/constants.ts b/src/pages/Routes/constants.ts
index 5bcb489..a91deaa 100644
--- a/src/pages/Routes/constants.ts
+++ b/src/pages/Routes/constants.ts
@@ -31,7 +31,7 @@ export const DEFAULT_STEP_1_DATA: RouteModule.Step1Data = {
websocket: false,
hosts: [''],
paths: ['/*'],
- forceHttps: false,
+ redirectOption: 'disabled',
redirectURI: '',
redirectCode: 302,
methods: HTTP_METHOD_OPTION_LIST,
diff --git a/src/pages/Routes/transform.ts b/src/pages/Routes/transform.ts
index c7a6201..ae3046b 100644
--- a/src/pages/Routes/transform.ts
+++ b/src/pages/Routes/transform.ts
@@ -14,7 +14,7 @@ export const transformStepData = ({
});
let redirect: RouteModule.Redirect = {};
- if (step1Data.forceHttps) {
+ if (step1Data.redirectOption === 'forceHttps') {
redirect = { http_to_https: true };
} else if (step1Data.redirectURI !== '') {
redirect = {
@@ -78,6 +78,7 @@ export const transformStepData = ({
'redirectURI',
'redirectCode',
'forceHttps',
+ 'redirectOption',
Object.keys(redirect).length === 0 ? 'redirect' : '',
]);
}
@@ -125,12 +126,16 @@ export const transformRouteData = (data: RouteModule.Body) => {
paths: uris,
methods,
advancedMatchingRules: transformVarsToRules(vars),
- forceHttps: Boolean(redirect?.http_to_https),
};
- if (redirect?.uri) {
- step1Data.redirectCode = redirect.code;
- step1Data.redirectURI = redirect.uri;
+ if (redirect?.http_to_https) {
+ step1Data.redirectOption = 'forceHttps';
+ } else if (redirect?.uri !== '') {
+ step1Data.redirectOption = 'customRedirect';
+ step1Data.redirectCode = redirect?.code;
+ step1Data.redirectURI = redirect?.uri;
+ } else {
+ step1Data.redirectOption = 'disabled';
}
const { upstream, upstream_path, upstream_header, upstream_protocol = 'keep' } = data;
diff --git a/src/pages/Routes/typing.d.ts b/src/pages/Routes/typing.d.ts
index aad0372..7ecc044 100644
--- a/src/pages/Routes/typing.d.ts
+++ b/src/pages/Routes/typing.d.ts
@@ -28,7 +28,7 @@ declare namespace RouteModule {
hosts: string[];
paths: string[];
methods: HttpMethod[];
- forceHttps: boolean;
+ redirectOption: 'forceHttps' | 'customRedirect' | 'disabled';
redirectURI?: string;
redirectCode?: number;
advancedMatchingRules: MatchingRule[];