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 2021/02/04 08:41:17 UTC
[apisix-dashboard] 01/01: style: format codes
This is an automated email from the ASF dual-hosted git repository.
juzhiyuan pushed a commit to branch feat-improve
in repository https://gitbox.apache.org/repos/asf/apisix-dashboard.git
commit bab7e1d6fc3c3069efd7bf9049d1f4fb0b99dfaf
Author: juzhiyuan <ju...@apache.org>
AuthorDate: Thu Feb 4 16:40:57 2021 +0800
style: format codes
---
web/cypress/fixtures/export-route-dataset.json | 305 +++++++++++----------
web/cypress/fixtures/plugin-list.json | 5 +-
.../plugin/create-edit-delete-plugin.spec.js | 20 +-
.../integration/plugin/schema-smocktest.spec.js | 2 +-
...an-skip-upstream-when-select-service-id.spec.js | 4 +-
.../route/create-route-with-upstream.spec.js | 5 +-
.../integration/route/import_export_route.spec.js | 29 +-
web/cypress/integration/route/online-debug.spec.js | 4 +-
.../service/create-edit-delete-service.spec.js | 4 +-
.../settings/settings-smoketest.spec.js | 2 +-
web/cypress/support/commands.js | 10 +-
web/scripts/verifyCommit.js | 10 +-
web/src/components/Upstream/UpstreamForm.tsx | 224 +++++++--------
web/src/helpers.tsx | 3 +-
web/src/pages/Route/Create.tsx | 13 +-
.../Route/components/CreateStep4/CreateStep4.tsx | 7 +-
web/src/pages/Route/components/Step1/MetaView.tsx | 3 +-
.../Route/components/Step2/RequestRewriteView.tsx | 2 +-
web/src/pages/Service/Create.tsx | 22 +-
19 files changed, 355 insertions(+), 319 deletions(-)
diff --git a/web/cypress/fixtures/export-route-dataset.json b/web/cypress/fixtures/export-route-dataset.json
index 3e3cb23..46d53c0 100644
--- a/web/cypress/fixtures/export-route-dataset.json
+++ b/web/cypress/fixtures/export-route-dataset.json
@@ -1,147 +1,160 @@
{
- "jsonFile": {
- "components": {},
- "info": {
- "title": "RoutesExport",
- "version": "3.0.0"
- },
- "openapi": "3.0.0",
- "paths": {
- "/{params}": {
- "get": {
- "operationId": "route_name_0GET",
- "parameters": [{
- "description": "params in path",
- "in": "path",
- "name": "params",
- "required": true,
- "schema": {
- "type": "string"
- }
- }],
- "requestBody": {},
- "responses": {
- "default": {
- "description": ""
- }
- },
- "x-apisix-enable_websocket": false,
- "x-apisix-plugins": {},
- "x-apisix-priority": 0,
- "x-apisix-status": 1,
- "x-apisix-upstream": {
- "nodes": [{
- "host": "1.1.1.1",
- "port": 80,
- "weight": 1
- }],
- "timeout": {
- "connect": 6000,
- "read": 6000,
- "send": 6000
- },
- "type": "roundrobin",
- "pass_host": "pass"
- },
- "x-apisix-vars": []
- }
- }
- }
- },
- "yamlFile": {
- "components": {},
- "info": {
- "title": "RoutesExport",
- "version": "3.0.0"
- },
- "openapi": "3.0.0",
- "paths": {
- "/{params}": {
- "get": {
- "operationId": "route_name_0GET",
- "parameters": [{
- "description": "params in path",
- "in": "path",
- "name": "params",
- "required": true,
- "schema": {
- "type": "string"
- }
- }],
- "requestBody": {},
- "responses": {
- "default": {
- "description": ""
- }
- },
- "x-apisix-enable_websocket": false,
- "x-apisix-plugins": {},
- "x-apisix-priority": 0,
- "x-apisix-status": 1,
- "x-apisix-upstream": {
- "nodes": [{
- "host": "1.1.1.1",
- "port": 80,
- "weight": 1
- }],
- "timeout": {
- "connect": 6000,
- "read": 6000,
- "send": 6000
- },
- "type": "roundrobin",
- "pass_host": "pass"
- },
- "x-apisix-vars": []
- }
- },
- "/{params}-APISIX-REPEAT-URI-2": {
- "get": {
- "operationId": "route_name_1GET",
- "parameters": [{
- "description": "params in path",
- "in": "path",
- "name": "params",
- "required": true,
- "schema": {
- "type": "string"
- }
- }, {
- "description": "params in path",
- "in": "path",
- "name": "params",
- "required": true,
- "schema": {
- "type": "string"
- }
- }],
- "requestBody": {},
- "responses": {
- "default": {
- "description": ""
- }
- },
- "x-apisix-enable_websocket": false,
- "x-apisix-plugins": {},
- "x-apisix-priority": 0,
- "x-apisix-status": 1,
- "x-apisix-upstream": {
- "nodes": [{
- "host": "2.2.2.2",
- "port": 80,
- "weight": 1
- }],
- "timeout": {
- "connect": 6000,
- "read": 6000,
- "send": 6000
- },
- "type": "roundrobin",
- "pass_host": "pass"
- },
- "x-apisix-vars": []
- }
- }
- }
- }
-}
\ No newline at end of file
+ "jsonFile": {
+ "components": {},
+ "info": {
+ "title": "RoutesExport",
+ "version": "3.0.0"
+ },
+ "openapi": "3.0.0",
+ "paths": {
+ "/{params}": {
+ "get": {
+ "operationId": "route_name_0GET",
+ "parameters": [
+ {
+ "description": "params in path",
+ "in": "path",
+ "name": "params",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {},
+ "responses": {
+ "default": {
+ "description": ""
+ }
+ },
+ "x-apisix-enable_websocket": false,
+ "x-apisix-plugins": {},
+ "x-apisix-priority": 0,
+ "x-apisix-status": 1,
+ "x-apisix-upstream": {
+ "nodes": [
+ {
+ "host": "1.1.1.1",
+ "port": 80,
+ "weight": 1
+ }
+ ],
+ "timeout": {
+ "connect": 6000,
+ "read": 6000,
+ "send": 6000
+ },
+ "type": "roundrobin",
+ "pass_host": "pass"
+ },
+ "x-apisix-vars": []
+ }
+ }
+ }
+ },
+ "yamlFile": {
+ "components": {},
+ "info": {
+ "title": "RoutesExport",
+ "version": "3.0.0"
+ },
+ "openapi": "3.0.0",
+ "paths": {
+ "/{params}": {
+ "get": {
+ "operationId": "route_name_0GET",
+ "parameters": [
+ {
+ "description": "params in path",
+ "in": "path",
+ "name": "params",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {},
+ "responses": {
+ "default": {
+ "description": ""
+ }
+ },
+ "x-apisix-enable_websocket": false,
+ "x-apisix-plugins": {},
+ "x-apisix-priority": 0,
+ "x-apisix-status": 1,
+ "x-apisix-upstream": {
+ "nodes": [
+ {
+ "host": "1.1.1.1",
+ "port": 80,
+ "weight": 1
+ }
+ ],
+ "timeout": {
+ "connect": 6000,
+ "read": 6000,
+ "send": 6000
+ },
+ "type": "roundrobin",
+ "pass_host": "pass"
+ },
+ "x-apisix-vars": []
+ }
+ },
+ "/{params}-APISIX-REPEAT-URI-2": {
+ "get": {
+ "operationId": "route_name_1GET",
+ "parameters": [
+ {
+ "description": "params in path",
+ "in": "path",
+ "name": "params",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "description": "params in path",
+ "in": "path",
+ "name": "params",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {},
+ "responses": {
+ "default": {
+ "description": ""
+ }
+ },
+ "x-apisix-enable_websocket": false,
+ "x-apisix-plugins": {},
+ "x-apisix-priority": 0,
+ "x-apisix-status": 1,
+ "x-apisix-upstream": {
+ "nodes": [
+ {
+ "host": "2.2.2.2",
+ "port": 80,
+ "weight": 1
+ }
+ ],
+ "timeout": {
+ "connect": 6000,
+ "read": 6000,
+ "send": 6000
+ },
+ "type": "roundrobin",
+ "pass_host": "pass"
+ },
+ "x-apisix-vars": []
+ }
+ }
+ }
+ }
+}
diff --git a/web/cypress/fixtures/plugin-list.json b/web/cypress/fixtures/plugin-list.json
index 278a750..587b28e 100644
--- a/web/cypress/fixtures/plugin-list.json
+++ b/web/cypress/fixtures/plugin-list.json
@@ -10,10 +10,7 @@
"max_breaker_sec": 10,
"unhealthy": {
"failures": 1,
- "http_statuses": [
- 500,
- 503
- ]
+ "http_statuses": [500, 503]
}
}
}
diff --git a/web/cypress/integration/plugin/create-edit-delete-plugin.spec.js b/web/cypress/integration/plugin/create-edit-delete-plugin.spec.js
index 8ee3949..65e642c 100644
--- a/web/cypress/integration/plugin/create-edit-delete-plugin.spec.js
+++ b/web/cypress/integration/plugin/create-edit-delete-plugin.spec.js
@@ -43,7 +43,7 @@ context('Create and Delete Plugin List', () => {
// add test plugins
cy.get('@cases').then((cases) => {
cy.configurePlugins(cases);
- })
+ });
});
it('should edit the plugin', () => {
@@ -64,17 +64,19 @@ context('Create and Delete Plugin List', () => {
it('should delete plugin list', () => {
cy.visit('/plugin/list');
cy.get(domSelector.refresh).click();
- cy.get(domSelector.tableCell, { timeout }).should('exist').then(function (rows) {
- [...rows].forEach((row) => {
- const name = row.innerText;
- const cases = this.cases[name] || [];
+ cy.get(domSelector.tableCell, { timeout })
+ .should('exist')
+ .then(function (rows) {
+ [...rows].forEach((row) => {
+ const name = row.innerText;
+ const cases = this.cases[name] || [];
- cases.forEach(() => {
- cy.contains(name).siblings().contains('Delete').click({ timeout });
- cy.contains('button', 'Confirm').click();
+ cases.forEach(() => {
+ cy.contains(name).siblings().contains('Delete').click({ timeout });
+ cy.contains('button', 'Confirm').click();
+ });
});
});
- });
// check if plugin list is empty
cy.get(domSelector.empty).should('be.visible');
diff --git a/web/cypress/integration/plugin/schema-smocktest.spec.js b/web/cypress/integration/plugin/schema-smocktest.spec.js
index 27e3293..6551052 100644
--- a/web/cypress/integration/plugin/schema-smocktest.spec.js
+++ b/web/cypress/integration/plugin/schema-smocktest.spec.js
@@ -31,6 +31,6 @@ context('smoke test for plugin schema', () => {
cy.get('@cases').then((cases) => {
cy.configurePlugins(cases);
- })
+ });
});
});
diff --git a/web/cypress/integration/route/can-skip-upstream-when-select-service-id.spec.js b/web/cypress/integration/route/can-skip-upstream-when-select-service-id.spec.js
index a467e11..c51a516 100644
--- a/web/cypress/integration/route/can-skip-upstream-when-select-service-id.spec.js
+++ b/web/cypress/integration/route/can-skip-upstream-when-select-service-id.spec.js
@@ -28,7 +28,7 @@ context('Can select service_id skip upstream in route', () => {
delete_route_success: 'Delete Route Successfully',
submit_success: 'Submit Successfully',
delete_success: 'Delete Upstream Successfully',
- }
+ };
const domSelector = {
name: '#name',
nodes_0_host: '#nodes_0_host',
@@ -137,5 +137,3 @@ context('Can select service_id skip upstream in route', () => {
cy.get(domSelector.notification).should('contain', data.delete_route_success);
});
});
-
-
diff --git a/web/cypress/integration/route/create-route-with-upstream.spec.js b/web/cypress/integration/route/create-route-with-upstream.spec.js
index 9a0f6df..e3a05c6 100644
--- a/web/cypress/integration/route/create-route-with-upstream.spec.js
+++ b/web/cypress/integration/route/create-route-with-upstream.spec.js
@@ -134,9 +134,6 @@ context('Create Route with Upstream', () => {
cy.contains('Upstream').click();
cy.contains(data.upstream_name).siblings().contains('Delete').click();
cy.contains('button', 'Confirm').click();
- cy.get(domSelector.notification).should(
- 'contain',
- data.delete_upstream_success,
- );
+ cy.get(domSelector.notification).should('contain', data.delete_upstream_success);
});
});
diff --git a/web/cypress/integration/route/import_export_route.spec.js b/web/cypress/integration/route/import_export_route.spec.js
index 327be77..72f56c0 100644
--- a/web/cypress/integration/route/import_export_route.spec.js
+++ b/web/cypress/integration/route/import_export_route.spec.js
@@ -40,7 +40,7 @@ context('import and export routes', () => {
'import-error.txt',
],
// Note: export file's name will be end of a timestamp
- jsonMask: 'cypress/downloads/*.json',
+ jsonMask: 'cypress/downloads/*.json',
yamlMask: 'cypress/downloads/*.yaml',
};
@@ -81,7 +81,7 @@ context('import and export routes', () => {
).should('exist');
}
});
- it('should export route: route_name_0, route_name_1', function (){
+ it('should export route: route_name_0, route_name_1', function () {
cy.visit('/');
cy.contains('Route').click();
@@ -120,7 +120,9 @@ context('import and export routes', () => {
cy.log(`found file ${yamlFile}`);
cy.log('**confirm downloaded yaml file**');
cy.readFile(yamlFile).then((fileContent) => {
- expect(JSON.stringify(yaml.load(fileContent), null, null)).to.equal(JSON.stringify(this.exportFile.yamlFile));
+ expect(JSON.stringify(yaml.load(fileContent), null, null)).to.equal(
+ JSON.stringify(this.exportFile.yamlFile),
+ );
});
});
});
@@ -128,7 +130,10 @@ context('import and export routes', () => {
it('should delete the route', function () {
cy.visit('/routes/list');
for (let i = 0; i < 2; i += 1) {
- cy.contains(data[`route_name_${i}`]).siblings().contains(componentLocaleUS['component.global.delete']).click();
+ cy.contains(data[`route_name_${i}`])
+ .siblings()
+ .contains(componentLocaleUS['component.global.delete'])
+ .click();
cy.contains('button', componentLocaleUS['component.global.confirm']).click();
cy.get(this.domSelector.notification).should(
'contain',
@@ -137,10 +142,10 @@ context('import and export routes', () => {
}
});
- it('should import route(s) from be test files', function() {
+ it('should import route(s) from be test files', function () {
cy.visit('/');
cy.contains('Route').click();
-
+
data.uploadRouteFiles.forEach((file) => {
// click import button
cy.contains(routeLocaleUS['page.route.button.importOpenApi']).click();
@@ -155,15 +160,21 @@ context('import and export routes', () => {
// close modal
cy.contains(componentLocaleUS['component.global.cancel']).click();
} else {
- cy.get(this.domSelector.notification).should('contain', `${routeLocaleUS['page.route.button.importOpenApi']} ${componentLocaleUS['component.status.success']}`);
+ cy.get(this.domSelector.notification).should(
+ 'contain',
+ `${routeLocaleUS['page.route.button.importOpenApi']} ${componentLocaleUS['component.status.success']}`,
+ );
cy.get(this.domSelector.notificationCloseIcon).click();
// delete route just imported
cy.contains(componentLocaleUS['component.global.delete']).click();
cy.contains(componentLocaleUS['component.global.confirm']).click();
// show delete successfully notification
- cy.get(this.domSelector.notification).should('contain', `${componentLocaleUS['component.global.delete']} ${menuLocaleUS['menu.routes']} ${componentLocaleUS['component.status.success']}`);
+ cy.get(this.domSelector.notification).should(
+ 'contain',
+ `${componentLocaleUS['component.global.delete']} ${menuLocaleUS['menu.routes']} ${componentLocaleUS['component.status.success']}`,
+ );
cy.get(this.domSelector.notificationCloseIcon).click();
}
- })
+ });
});
});
diff --git a/web/cypress/integration/route/online-debug.spec.js b/web/cypress/integration/route/online-debug.spec.js
index 1664241..4e063b2 100644
--- a/web/cypress/integration/route/online-debug.spec.js
+++ b/web/cypress/integration/route/online-debug.spec.js
@@ -35,8 +35,8 @@ context('Online debug', () => {
'localhost:9000/get?search=v1,sd&number=-1',
'localhost:9000/get?search=1+1',
'localhost:9000/api/commands/submit.html#Requirements?test=apisix.com',
- 'localhost:9000/js6/main.jsp?sid=pARQZYHABxkSVdeMvXAAEtfJKbWQocOA&df=mail126_mailmaster#module=mbox.ListModule%7C%7B"filter"'
- ]
+ 'localhost:9000/js6/main.jsp?sid=pARQZYHABxkSVdeMvXAAEtfJKbWQocOA&df=mail126_mailmaster#module=mbox.ListModule%7C%7B"filter"',
+ ],
};
const domSelector = {
uriInput: '#debugUri',
diff --git a/web/cypress/integration/service/create-edit-delete-service.spec.js b/web/cypress/integration/service/create-edit-delete-service.spec.js
index ac7eee3..62b6877 100644
--- a/web/cypress/integration/service/create-edit-delete-service.spec.js
+++ b/web/cypress/integration/service/create-edit-delete-service.spec.js
@@ -34,7 +34,7 @@ context('create and delete service ', () => {
create_service_success: 'Create Service Successfully',
edit_service_success: 'Edit Service Successfully',
delete_service_success: 'Delete Service Successfully',
- }
+ };
beforeEach(() => {
cy.login();
@@ -66,7 +66,7 @@ context('create and delete service ', () => {
// Confirm whether the created data is saved.
cy.get(domSelector.nodes_0_host).should('value', data.ip1);
- cy.get(domSelector.desc).should('value', data.desc1)
+ cy.get(domSelector.desc).should('value', data.desc1);
cy.get(domSelector.name).clear().type(data.service_name2);
cy.get(domSelector.desc).clear().type(data.desc2);
cy.get(domSelector.nodes_0_host).click();
diff --git a/web/cypress/integration/settings/settings-smoketest.spec.js b/web/cypress/integration/settings/settings-smoketest.spec.js
index e7c4617..88f305b 100644
--- a/web/cypress/integration/settings/settings-smoketest.spec.js
+++ b/web/cypress/integration/settings/settings-smoketest.spec.js
@@ -26,7 +26,7 @@ context('settings page smoke test', () => {
validURL: 'https://apisix.apache.org/',
fetchURL: 'fetchURL',
fetch: '@fetchURL',
- }
+ };
const domSelector = {
pageContainer: '.ant-pro-page-container',
notificationMsg: '.ant-notification-notice-message',
diff --git a/web/cypress/support/commands.js b/web/cypress/support/commands.js
index 1a4bdfe..2fb03a7 100644
--- a/web/cypress/support/commands.js
+++ b/web/cypress/support/commands.js
@@ -91,11 +91,13 @@ Cypress.Commands.add('configurePlugins', (cases) => {
multiple: true,
});
- cy.get(domSelectors.drawer, { timeout }).invoke('show').within(() => {
- cy.contains('Cancel').click({
- force: true,
+ cy.get(domSelectors.drawer, { timeout })
+ .invoke('show')
+ .within(() => {
+ cy.contains('Cancel').click({
+ force: true,
+ });
});
- });
}
});
});
diff --git a/web/scripts/verifyCommit.js b/web/scripts/verifyCommit.js
index b59e3c6..01d2741 100644
--- a/web/scripts/verifyCommit.js
+++ b/web/scripts/verifyCommit.js
@@ -33,11 +33,11 @@ if (!commitRE.test(msg)) {
console.log();
console.error(
` ${chalk.bgRed.white(' ERROR ')} ${chalk.red(`invalid commit message format.`)}\n\n` +
- chalk.red(
- ` Proper commit message format is required for automated changelog generation. Examples:\n\n`,
- ) +
- ` ${chalk.green(`feat(compiler): add 'comments' option`)}\n` +
- ` ${chalk.green(`fix(v-model): handle events on blur (close #28)`)}\n\n`
+ chalk.red(
+ ` Proper commit message format is required for automated changelog generation. Examples:\n\n`,
+ ) +
+ ` ${chalk.green(`feat(compiler): add 'comments' option`)}\n` +
+ ` ${chalk.green(`fix(v-model): handle events on blur (close #28)`)}\n\n`,
);
process.exit(1);
}
diff --git a/web/src/components/Upstream/UpstreamForm.tsx b/web/src/components/Upstream/UpstreamForm.tsx
index 36b8bf4..20c9097 100644
--- a/web/src/components/Upstream/UpstreamForm.tsx
+++ b/web/src/components/Upstream/UpstreamForm.tsx
@@ -22,7 +22,7 @@ import type { FormInstance } from 'antd/es/form';
import { PanelSection } from '@api7-dashboard/ui';
import { transformRequest } from '@/pages/Upstream/transform';
-import { DEFAULT_UPSTREAM } from './constant'
+import { DEFAULT_UPSTREAM } from './constant';
enum Type {
roundrobin = 'roundrobin',
@@ -62,7 +62,7 @@ type Props = {
showSelector?: boolean;
// FIXME: use proper typing
ref?: any;
- required: boolean,
+ required: boolean;
};
const removeBtnStyle = {
@@ -643,7 +643,7 @@ const UpstreamForm: React.FC<Props> = forwardRef(
}
}}
>
- {Boolean(!required) && <Select.Option value={'None'} >None</Select.Option>}
+ {Boolean(!required) && <Select.Option value={'None'}>None</Select.Option>}
{[
{
name: formatMessage({ id: 'page.upstream.step.select.upstream.select.option' }),
@@ -659,118 +659,120 @@ const UpstreamForm: React.FC<Props> = forwardRef(
</Form.Item>
)}
- {!hidenForm && (<>
- <Form.Item
- label={formatMessage({ id: 'page.upstream.step.type' })}
- name="type"
- rules={[{ required: true }]}
- >
- <Select disabled={readonly}>
- {Object.entries(Type).map(([label, value]) => {
- return (
- <Select.Option value={value} key={value}>
- {label}
- </Select.Option>
- );
- })}
- </Select>
- </Form.Item>
- <Form.Item shouldUpdate noStyle>
- {() => {
- if (form.getFieldValue('type') === 'chash') {
- return <CHash />;
- }
- return null;
- }}
- </Form.Item>
- {NodeList()}
- <Form.Item
- label={formatMessage({ id: 'page.upstream.step.pass-host' })}
- name="pass_host"
- extra={formatMessage({ id: 'page.upstream.step.pass-host.tips' })}
- >
- <Select disabled={readonly}>
- <Select.Option value="pass">
- {formatMessage({ id: 'page.upstream.step.pass-host.pass' })}
- </Select.Option>
- <Select.Option value="node">
- {formatMessage({ id: 'page.upstream.step.pass-host.node' })}
- </Select.Option>
- <Select.Option value="rewrite">
- {formatMessage({ id: 'page.upstream.step.pass-host.rewrite' })}
- </Select.Option>
- </Select>
- </Form.Item>
- <Form.Item
- noStyle
- shouldUpdate={(prev, next) => {
- return prev.pass_host !== next.pass_host;
- }}
- >
- {() => {
- if (form.getFieldValue('pass_host') === 'rewrite') {
- return (
- <Form.Item
- label={formatMessage({ id: 'page.upstream.step.pass-host.upstream_host' })}
- name="upstream_host"
- >
- <Input disabled={readonly} />
- </Form.Item>
- );
- }
- return null;
- }}
- </Form.Item>
-
- {timeoutFields.map(({ label, name }) => (
- <Form.Item label={label} required key={label}>
- <Form.Item
- name={name}
- noStyle
- rules={[
- {
- required: true,
- message: formatMessage({ id: `page.upstream.step.input.${name[1]}.timeout` }),
- },
- ]}
- >
- <InputNumber disabled={readonly} />
- </Form.Item>
- <TimeUnit />
+ {!hidenForm && (
+ <>
+ <Form.Item
+ label={formatMessage({ id: 'page.upstream.step.type' })}
+ name="type"
+ rules={[{ required: true }]}
+ >
+ <Select disabled={readonly}>
+ {Object.entries(Type).map(([label, value]) => {
+ return (
+ <Select.Option value={value} key={value}>
+ {label}
+ </Select.Option>
+ );
+ })}
+ </Select>
+ </Form.Item>
+ <Form.Item shouldUpdate noStyle>
+ {() => {
+ if (form.getFieldValue('type') === 'chash') {
+ return <CHash />;
+ }
+ return null;
+ }}
+ </Form.Item>
+ {NodeList()}
+ <Form.Item
+ label={formatMessage({ id: 'page.upstream.step.pass-host' })}
+ name="pass_host"
+ extra={formatMessage({ id: 'page.upstream.step.pass-host.tips' })}
+ >
+ <Select disabled={readonly}>
+ <Select.Option value="pass">
+ {formatMessage({ id: 'page.upstream.step.pass-host.pass' })}
+ </Select.Option>
+ <Select.Option value="node">
+ {formatMessage({ id: 'page.upstream.step.pass-host.node' })}
+ </Select.Option>
+ <Select.Option value="rewrite">
+ {formatMessage({ id: 'page.upstream.step.pass-host.rewrite' })}
+ </Select.Option>
+ </Select>
+ </Form.Item>
+ <Form.Item
+ noStyle
+ shouldUpdate={(prev, next) => {
+ return prev.pass_host !== next.pass_host;
+ }}
+ >
+ {() => {
+ if (form.getFieldValue('pass_host') === 'rewrite') {
+ return (
+ <Form.Item
+ label={formatMessage({ id: 'page.upstream.step.pass-host.upstream_host' })}
+ name="upstream_host"
+ >
+ <Input disabled={readonly} />
+ </Form.Item>
+ );
+ }
+ return null;
+ }}
</Form.Item>
- ))}
- <PanelSection
- title={formatMessage({ id: 'page.upstream.step.healthyCheck.healthy.check' })}
- >
- {[
- {
- label: formatMessage({ id: 'page.upstream.step.healthyCheck.active' }),
- name: ['checks', 'active'],
- component: <ActiveHealthCheck />,
- },
- {
- label: formatMessage({ id: 'page.upstream.step.healthyCheck.passive' }),
- name: ['checks', 'passive'],
- component: <InActiveHealthCheck />,
- },
- ].map(({ label, name, component }) => (
- <div key={label}>
- <Form.Item label={label} name={name} valuePropName="checked" key={label}>
- <Switch disabled={readonly} />
- </Form.Item>
- <Form.Item shouldUpdate noStyle>
- {() => {
- if (form.getFieldValue(name)) {
- return component;
- }
- return null;
- }}
+ {timeoutFields.map(({ label, name }) => (
+ <Form.Item label={label} required key={label}>
+ <Form.Item
+ name={name}
+ noStyle
+ rules={[
+ {
+ required: true,
+ message: formatMessage({ id: `page.upstream.step.input.${name[1]}.timeout` }),
+ },
+ ]}
+ >
+ <InputNumber disabled={readonly} />
</Form.Item>
- </div>
+ <TimeUnit />
+ </Form.Item>
))}
- </PanelSection>
- </>)}
+
+ <PanelSection
+ title={formatMessage({ id: 'page.upstream.step.healthyCheck.healthy.check' })}
+ >
+ {[
+ {
+ label: formatMessage({ id: 'page.upstream.step.healthyCheck.active' }),
+ name: ['checks', 'active'],
+ component: <ActiveHealthCheck />,
+ },
+ {
+ label: formatMessage({ id: 'page.upstream.step.healthyCheck.passive' }),
+ name: ['checks', 'passive'],
+ component: <InActiveHealthCheck />,
+ },
+ ].map(({ label, name, component }) => (
+ <div key={label}>
+ <Form.Item label={label} name={name} valuePropName="checked" key={label}>
+ <Switch disabled={readonly} />
+ </Form.Item>
+ <Form.Item shouldUpdate noStyle>
+ {() => {
+ if (form.getFieldValue(name)) {
+ return component;
+ }
+ return null;
+ }}
+ </Form.Item>
+ </div>
+ ))}
+ </PanelSection>
+ </>
+ )}
</Form>
);
},
diff --git a/web/src/helpers.tsx b/web/src/helpers.tsx
index aee3e76..de5bc4a 100644
--- a/web/src/helpers.tsx
+++ b/web/src/helpers.tsx
@@ -20,7 +20,6 @@ import type { MenuDataItem } from '@ant-design/pro-layout';
import { history } from 'umi';
import moment from 'moment';
-
import { codeMessage } from './constants';
import IconFont from './components/IconFont';
@@ -64,7 +63,7 @@ export const getMenuData = (): MenuDataItem[] => {
{
name: 'serverinfo',
path: '/serverinfo',
- icon: <IconFont name="iconinfocircle"/>,
+ icon: <IconFont name="iconinfocircle" />,
},
];
};
diff --git a/web/src/pages/Route/Create.tsx b/web/src/pages/Route/Create.tsx
index 9155a08..0de1d73 100644
--- a/web/src/pages/Route/Create.tsx
+++ b/web/src/pages/Route/Create.tsx
@@ -135,7 +135,13 @@ const Page: React.FC<Props> = (props) => {
);
}
- return <Step2 form={form2} upstreamRef={upstreamRef} hasServiceId={form1.getFieldValue('service_id') !== ''} />;
+ return (
+ <Step2
+ form={form2}
+ upstreamRef={upstreamRef}
+ hasServiceId={form1.getFieldValue('service_id') !== ''}
+ />
+ );
}
if (step === 3) {
@@ -256,10 +262,11 @@ const Page: React.FC<Props> = (props) => {
return (
<>
<PageHeaderWrapper
- title={`${(props as any).match.params.rid
+ title={`${
+ (props as any).match.params.rid
? formatMessage({ id: 'component.global.edit' })
: formatMessage({ id: 'component.global.create' })
- } ${formatMessage({ id: 'menu.routes' })}`}
+ } ${formatMessage({ id: 'menu.routes' })}`}
>
<Card bordered={false}>
<Steps current={step - 1} className={styles.steps}>
diff --git a/web/src/pages/Route/components/CreateStep4/CreateStep4.tsx b/web/src/pages/Route/components/CreateStep4/CreateStep4.tsx
index 9e6f49f..11a1034 100644
--- a/web/src/pages/Route/components/CreateStep4/CreateStep4.tsx
+++ b/web/src/pages/Route/components/CreateStep4/CreateStep4.tsx
@@ -50,7 +50,12 @@ const CreateStep4: React.FC<Props> = ({ form1, form2, redirect, upstreamRef, ...
<h2 style={style}>
{formatMessage({ id: 'page.route.steps.stepTitle.defineApiBackendServe' })}
</h2>
- <Step2 form={form2} upstreamRef={upstreamRef} disabled hasServiceId={form1.getFieldValue('service_id') !== ''} />
+ <Step2
+ form={form2}
+ upstreamRef={upstreamRef}
+ disabled
+ hasServiceId={form1.getFieldValue('service_id') !== ''}
+ />
<h2 style={style}>
{formatMessage({ id: 'component.global.steps.stepTitle.pluginConfig' })}
</h2>
diff --git a/web/src/pages/Route/components/Step1/MetaView.tsx b/web/src/pages/Route/components/Step1/MetaView.tsx
index ed86282..e0728dc 100644
--- a/web/src/pages/Route/components/Step1/MetaView.tsx
+++ b/web/src/pages/Route/components/Step1/MetaView.tsx
@@ -134,7 +134,8 @@ const MetaView: React.FC<RouteModule.Step1PassProps> = ({ disabled, form, isEdit
<Input.TextArea
placeholder={formatMessage({ id: 'component.global.input.placeholder.description' })}
disabled={disabled}
- showCount maxLength={256}
+ showCount
+ maxLength={256}
/>
</Form.Item>
diff --git a/web/src/pages/Route/components/Step2/RequestRewriteView.tsx b/web/src/pages/Route/components/Step2/RequestRewriteView.tsx
index 023cac8..2e6a458 100644
--- a/web/src/pages/Route/components/Step2/RequestRewriteView.tsx
+++ b/web/src/pages/Route/components/Step2/RequestRewriteView.tsx
@@ -23,7 +23,7 @@ const RequestRewriteView: React.FC<RouteModule.Step2PassProps> = ({
form,
upstreamRef,
disabled,
- hasServiceId = false
+ hasServiceId = false,
}) => {
const [list, setList] = useState<UpstreamModule.RequestBody[]>([]);
useEffect(() => {
diff --git a/web/src/pages/Service/Create.tsx b/web/src/pages/Service/Create.tsx
index c8ed53f..f0cd496 100644
--- a/web/src/pages/Service/Create.tsx
+++ b/web/src/pages/Service/Create.tsx
@@ -81,12 +81,13 @@ const Page: React.FC = (props) => {
(serviceId ? update(serviceId, data) : create(data))
.then(() => {
notification.success({
- message: `${serviceId
- ? formatMessage({ id: 'component.global.edit' })
- : formatMessage({ id: 'component.global.create' })
- } ${formatMessage({ id: 'menu.service' })} ${formatMessage({
- id: 'component.status.success',
- })}`,
+ message: `${
+ serviceId
+ ? formatMessage({ id: 'component.global.edit' })
+ : formatMessage({ id: 'component.global.create' })
+ } ${formatMessage({ id: 'menu.service' })} ${formatMessage({
+ id: 'component.status.success',
+ })}`,
});
history.push('/service/list');
})
@@ -114,10 +115,11 @@ const Page: React.FC = (props) => {
return (
<>
<PageHeaderWrapper
- title={`${(props as any).match.params.rid
- ? formatMessage({ id: 'component.global.edit' })
- : formatMessage({ id: 'component.global.create' })
- } ${formatMessage({ id: 'menu.service' })}`}
+ title={`${
+ (props as any).match.params.rid
+ ? formatMessage({ id: 'component.global.edit' })
+ : formatMessage({ id: 'component.global.create' })
+ } ${formatMessage({ id: 'menu.service' })}`}
>
<Card bordered={false}>
<Steps current={step - 1} style={{ marginBottom: '25px' }}>