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[];