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/05 10:21:56 UTC

[incubator-apisix-dashboard] branch next updated: add: placeholder (#246)

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 d9d4776  add: placeholder (#246)
d9d4776 is described below

commit d9d477624f6328c3be85ed364f0cc74e5fbec9b8
Author: litesun <31...@users.noreply.github.com>
AuthorDate: Fri Jun 5 18:21:50 2020 +0800

    add: placeholder (#246)
    
    * feat: limit upload file
    
    * feat: intercept default upload api request
    
    * feat: limit upload file type
    
    * fix: show file when parse SSL file  fail
    
    * feat: add search feature
    
    * feat: format code
    
    * fix: remove list item not work
    
    * feat: remove relatedRouting
    
    * feat: add routes step1 page
    
    * feat: update route
    
    * feat: format code
    
    * feat: update
    
    * feat: update
    
    * feat: add checkbox rule
    
    * feat: handle Modal close event
    
    * feat: format code
    
    * feat: add page skip
    
    * feat: format code
    
    * merge
    
    * feat: clean code
    
    * fix: step4 error
    
    * feat: add edit modal
    
    * feat: add form validation
    
    * fix: step4 lose data
    
    * fix: step4 edit
    
    * add: WebSocket switch
    
    * feat: https methods list Validation
    
    * fix: timeout
    
    * clean code
    
    * add: redirect
    
    * fix: force https
    
    * add: redirect
    
    * fix: wrong redirectURI  typing
    
    * Update RequestConfigView.tsx
    
    * Update RequestConfigView.tsx
    
    * feat: change refirect
    
    * feat: operator to chinese
    
    * feat:change init timeout to 6000ms
    
    * fix: advancedMatchingRules data loss when edit
    
    * fix: advancedMatchingRules data loss when edit
    
    * fix: advancedMatchingRules table
    
    * feat: hide step2 step3 when use redirect
    
    * fix: handle actionBar
    
    * fix: redirect
    
    * feat: show port weight placeholder
    
    * feat: handle actionBar
    
    * feat: redirect
    
    * add: place holder
    
    * Update RequestConfigView.tsx
    
    Co-authored-by: 琚致远 <ju...@apache.org>
---
 src/pages/Routes/Create.tsx                        | 40 +++++++++++++++-------
 .../Routes/components/Step1/MatchingRulesView.tsx  | 14 ++++++--
 src/pages/Routes/components/Step1/MetaView.tsx     |  3 +-
 .../Routes/components/Step1/RequestConfigView.tsx  | 17 +++++----
 .../Routes/components/Step2/RequestRewriteView.tsx |  2 +-
 5 files changed, 52 insertions(+), 24 deletions(-)

diff --git a/src/pages/Routes/Create.tsx b/src/pages/Routes/Create.tsx
index 424ed6e..cde7762 100644
--- a/src/pages/Routes/Create.tsx
+++ b/src/pages/Routes/Create.tsx
@@ -55,7 +55,15 @@ const Create: React.FC = (props) => {
     if ((props as any).route.name === 'edit') {
       initRoute((props as any).match.params.rid);
     }
-  }, []);
+
+    if (step1Data.redirectURI !== '') {
+      setRedirect(true);
+      setStepHeader(STEP_HEADER_2);
+    } else {
+      setRedirect(false);
+      setStepHeader(STEP_HEADER_4);
+    }
+  }, [step1Data]);
 
   useEffect(() => {
     if (step1Data.redirectURI !== '') {
@@ -120,9 +128,22 @@ const Create: React.FC = (props) => {
   };
 
   const onStepChange = (nextStep: number) => {
+    const onUpdateOrCreate = () => {
+      if ((props as any).route.name === 'edit') {
+        updateRoute((props as any).match.params.rid, { data: routeData }).then(() => {
+          setStep(4);
+        });
+      } else {
+        createRoute({ data: routeData }).then(() => {
+          setStep(4);
+        });
+      }
+    };
+
     if (nextStep === 0) {
       setStep(nextStep);
     }
+
     if (nextStep === 1) {
       form1.validateFields().then((value) => {
         setStep1Data({ ...step1Data, ...value });
@@ -130,11 +151,10 @@ const Create: React.FC = (props) => {
       });
       return;
     }
+
     if (nextStep === 2) {
       if (redirect) {
-        createRoute({ data: routeData }).then(() => {
-          setStep(4);
-        });
+        onUpdateOrCreate();
         return;
       }
       form2.validateFields().then((value) => {
@@ -143,19 +163,13 @@ const Create: React.FC = (props) => {
       });
       return;
     }
+
     if (nextStep === 3) {
       setStep(nextStep);
     }
+
     if (nextStep === 4) {
-      if ((props as any).route.name === 'edit') {
-        updateRoute((props as any).match.params.rid, { data: routeData }).then(() => {
-          setStep(nextStep);
-        });
-      } else {
-        createRoute({ data: routeData }).then(() => {
-          setStep(nextStep);
-        });
-      }
+      onUpdateOrCreate();
     }
   };
 
diff --git a/src/pages/Routes/components/Step1/MatchingRulesView.tsx b/src/pages/Routes/components/Step1/MatchingRulesView.tsx
index 6b226b8..994955e 100644
--- a/src/pages/Routes/components/Step1/MatchingRulesView.tsx
+++ b/src/pages/Routes/components/Step1/MatchingRulesView.tsx
@@ -9,8 +9,8 @@ const MatchingRulesView: React.FC<Props> = ({ data, disabled, onChange }) => {
   const { advancedMatchingRules } = data.step1Data;
 
   const [visible, setVisible] = useState(false);
-
   const [mode, setMode] = useState<RouteModule.ModalType>('CREATE');
+  const [namePlaceholder, setNamePlaceholder] = useState('');
   const [modalForm] = Form.useForm();
 
   const { Option } = Select;
@@ -147,7 +147,15 @@ const MatchingRulesView: React.FC<Props> = ({ data, disabled, onChange }) => {
             name="position"
             rules={[{ required: true, message: '请选择参数位置' }]}
           >
-            <Select>
+            <Select
+              onChange={(value) => {
+                if (value === 'http') {
+                  setNamePlaceholder('请求头名字比如:Host');
+                } else {
+                  setNamePlaceholder('比如:name');
+                }
+              }}
+            >
               <Option value="http">HTTP 请求头</Option>
               <Option value="arg">请求参数</Option>
               <Option value="cookie">Cookie</Option>
@@ -158,7 +166,7 @@ const MatchingRulesView: React.FC<Props> = ({ data, disabled, onChange }) => {
             name="name"
             rules={[{ required: true, message: '请输入参数名称' }]}
           >
-            <Input />
+            <Input placeholder={namePlaceholder} />
           </Form.Item>
           <Form.Item
             label="运算符"
diff --git a/src/pages/Routes/components/Step1/MetaView.tsx b/src/pages/Routes/components/Step1/MetaView.tsx
index 69e64c7..baac193 100644
--- a/src/pages/Routes/components/Step1/MetaView.tsx
+++ b/src/pages/Routes/components/Step1/MetaView.tsx
@@ -13,11 +13,12 @@ const MetaView: React.FC<Props> = ({ disabled }) => {
         label="API 名称"
         name="name"
         rules={[{ required: true, message: '请输入 API 名称' }]}
+        extra="支持英文,数字,下划线和减号,且只能以英文开头"
       >
         <Input placeholder="请输入 API 名称" disabled={disabled} />
       </Form.Item>
       <Form.Item label="描述" name="desc">
-        <Input.TextArea placeholder="请输入描述" disabled={disabled} />
+        <Input.TextArea placeholder="不超过 200 个字符" disabled={disabled} />
       </Form.Item>
     </PanelSection>
   );
diff --git a/src/pages/Routes/components/Step1/RequestConfigView.tsx b/src/pages/Routes/components/Step1/RequestConfigView.tsx
index 78b2dc5..09c486c 100644
--- a/src/pages/Routes/components/Step1/RequestConfigView.tsx
+++ b/src/pages/Routes/components/Step1/RequestConfigView.tsx
@@ -32,6 +32,7 @@ const RequestConfigView: React.FC<Props> = ({ data, disabled, onChange }) => {
                 label={index === 0 ? '域名' : ''}
                 required
                 key={field.key}
+                extra='域名或 IP:支持泛域名,如 "\*.test.com"'
               >
                 <Form.Item
                   {...field}
@@ -82,9 +83,13 @@ const RequestConfigView: React.FC<Props> = ({ data, disabled, onChange }) => {
         return (
           <div>
             {fields.map((field) => (
-              <Form.Item required key={field.key}>
+              <Form.Item
+                required
+                key={field.key}
+                extra='请求路径,如 "/foo/index.html",支持请求路径前缀 "/foo/\*"'
+              >
                 <Form.Item {...field} validateTrigger={['onChange', 'onBlur']} noStyle>
-                  <Input placeholder="请输入路径" style={{ width: '60%' }} disabled={disabled} />
+                  <Input placeholder="请输入请求路径" style={{ width: '60%' }} disabled={disabled} />
                 </Form.Item>
                 {!disabled && (
                   <MinusCircleOutlined
@@ -146,14 +151,14 @@ const RequestConfigView: React.FC<Props> = ({ data, disabled, onChange }) => {
           <Row gutter={10}>
             <Col>
               <Form.Item name="redirectURI">
-                <Input placeholder="请输入 URI" disabled={disabled} />
+                <Input placeholder="例如:/foo/index.html" disabled={disabled} />
               </Form.Item>
             </Col>
-            <Col span={6}>
+            <Col span={10}>
               <Form.Item name="redirectCode">
                 <Select disabled={disabled}>
-                  <Select.Option value="301">301</Select.Option>
-                  <Select.Option value="302">302</Select.Option>
+                  <Select.Option value="301">301(临时的重定向)</Select.Option>
+                  <Select.Option value="302">302(永久的重定向)</Select.Option>
                 </Select>
               </Form.Item>
             </Col>
diff --git a/src/pages/Routes/components/Step2/RequestRewriteView.tsx b/src/pages/Routes/components/Step2/RequestRewriteView.tsx
index e9556c3..eea2a43 100644
--- a/src/pages/Routes/components/Step2/RequestRewriteView.tsx
+++ b/src/pages/Routes/components/Step2/RequestRewriteView.tsx
@@ -132,7 +132,7 @@ const RequestRewriteView: React.FC<Props> = ({ data, form, disabled, onChange })
             name="upstreamPath"
             rules={[{ required: true, message: '请输入请求路径' }]}
           >
-            <Input disabled={disabled} />
+            <Input disabled={disabled} placeholder="例如:/foo/bar/index.html" />
           </Form.Item>
         )}
         <Form.Item label="连接超时" required>