From 30210e33c6d2258324f5d086550299d7f8a2762f Mon Sep 17 00:00:00 2001 From: "Jingwei.Zhang" Date: Fri, 10 Sep 2021 14:56:16 +0800 Subject: [PATCH] fix: Fix redirect to pre page after login 1. Fix redirect to pre page after login when visit page first 2. Fix gotoLogin in client request 3. Refactor functions in create instance 4. Refactor functions in instance detail 5. Update module export Change-Id: If7b166afc70e807c753ebf5901434166d4a7b602 --- src/client/client/request.js | 2 +- src/containers/List/index.jsx | 6 +- src/core/index.jsx | 5 +- .../Instance/Detail/BaseDetail/index.jsx | 22 +- .../Instance/Detail/SecurityGroup/index.jsx | 8 +- .../Instance/actions/StepCreate/index.jsx | 53 ++--- .../compute/containers/Instance/index.jsx | 4 +- .../network/containers/FloatingIp/index.jsx | 190 +++++++++--------- .../containers/VirtualAdapter/index.jsx | 6 +- 9 files changed, 161 insertions(+), 135 deletions(-) diff --git a/src/client/client/request.js b/src/client/client/request.js index 62c7da08..b28c056c 100644 --- a/src/client/client/request.js +++ b/src/client/client/request.js @@ -29,7 +29,7 @@ export class HttpRequest { } gotoLoginPage(path) { - const globalRootStore = require('stores/root').defaullt; + const globalRootStore = require('stores/root').default; globalRootStore.gotoLoginPage(path); } diff --git a/src/containers/List/index.jsx b/src/containers/List/index.jsx index da7d8e51..8ce18f24 100644 --- a/src/containers/List/index.jsx +++ b/src/containers/List/index.jsx @@ -619,6 +619,10 @@ export default class BaseList extends React.Component { } } + getColumns() { + return []; + } + fetchListWithTry = async (func) => { try { func && (await func()); @@ -722,8 +726,6 @@ export default class BaseList extends React.Component { getFilteredValue = (dataIndex) => this.list.filters[dataIndex]; - getColumns = () => []; - checkIsProjectFilter = (item) => item.name === this.projectFilterKey; getSearchFilters = () => { diff --git a/src/core/index.jsx b/src/core/index.jsx index f1b90f10..93b3c52a 100644 --- a/src/core/index.jsx +++ b/src/core/index.jsx @@ -44,13 +44,14 @@ const render = (component) => { }; const getUser = async (callback) => { - if (window.location.pathname.indexOf('/login') < 0) { + const currentPath = window.location.pathname; + if (currentPath.indexOf('/login') < 0) { try { await store.getUserProfileAndPolicy(); } catch (e) { // eslint-disable-next-line no-console console.log(e); - store.gotoLoginPage(); + store.gotoLoginPage(currentPath); } finally { callback && callback(); } diff --git a/src/pages/compute/containers/Instance/Detail/BaseDetail/index.jsx b/src/pages/compute/containers/Instance/Detail/BaseDetail/index.jsx index 5cb7e0fb..4b2f0ca9 100644 --- a/src/pages/compute/containers/Instance/Detail/BaseDetail/index.jsx +++ b/src/pages/compute/containers/Instance/Detail/BaseDetail/index.jsx @@ -224,6 +224,10 @@ export class BaseDetail extends Base { return infos; } + get volumeActions() { + return { firstAction: AttachVolume }; + } + fetchVolumes = async () => { const params = { serverId: this.id, @@ -280,6 +284,16 @@ export class BaseDetail extends Base { return {interfaceItem}; } + renderImageType(osDistro) { + return ( + + ); + } + renderVmRow() { const item = toJS(this.detailData.itemInList) || {}; const { status } = this.detailData; @@ -291,11 +305,7 @@ export class BaseDetail extends Base {
- + {this.renderImageType(image_os_distro)} {image_name}
@@ -370,7 +380,7 @@ export class BaseDetail extends Base {
{/* {t('Attach volume')} */} {item.name} - {filterData.length !== 1 && !this.isAdminPage ? ( + {filterData.length !== 1 && this.showActions ? ( - {!this.isAdminPage && port_security_enabled && ( + {this.showActions && port_security_enabled && (
{ const net = { uuid: it.value.network, diff --git a/src/pages/compute/containers/Instance/index.jsx b/src/pages/compute/containers/Instance/index.jsx index eccb26cd..435866c6 100644 --- a/src/pages/compute/containers/Instance/index.jsx +++ b/src/pages/compute/containers/Instance/index.jsx @@ -126,7 +126,7 @@ export class Instance extends Base { }; } - getColumns = () => { + getColumns() { const columns = [ { title: t('ID/Name'), @@ -227,7 +227,7 @@ export class Instance extends Base { return columns.filter((it) => it.dataIndex !== 'host'); } return columns; - }; + } get actionConfigs() { const { batchActions } = this; diff --git a/src/pages/network/containers/FloatingIp/index.jsx b/src/pages/network/containers/FloatingIp/index.jsx index 5cb4ef8b..52f510e3 100644 --- a/src/pages/network/containers/FloatingIp/index.jsx +++ b/src/pages/network/containers/FloatingIp/index.jsx @@ -24,9 +24,7 @@ import { FileTextOutlined } from '@ant-design/icons'; import styles from './styles.less'; import actionConfigs from './actions'; -@inject('rootStore') -@observer -export default class FloatingIps extends Base { +export class FloatingIps extends Base { init() { this.store = new FloatingIpStore(); this.downloadStore = new FloatingIpStore(); @@ -114,100 +112,102 @@ export default class FloatingIps extends Base { return true; } - getColumns = () => [ - { - title: t('ID/Floating IP'), - dataIndex: 'floating_ip_address', - isName: true, - linkPrefix: `/network/${this.getUrl('floatingip')}/detail`, - }, - { - title: t('QoS Policy'), - dataIndex: 'qos_policy_id', - render: (value) => ( - - {value} - - ), - }, - { - title: t('Project ID/Name'), - dataIndex: 'project_name', - hidden: !this.isAdminPage, - sortKey: 'project_id', - }, - { - title: t('Description'), - dataIndex: 'description', - render: (value) => value || '-', - isHideable: true, - sorter: false, - }, - { - title: t('Associated Resource'), - dataIndex: 'resource_name', - render: (resource_name, record) => { - if ( - !resource_name && - record.port_forwardings && - record.port_forwardings.length !== 0 - ) { - return ( - <> - {t('{number} port forwarding rules', { - number: record.port_forwardings.length, - })} -   - - {record.port_forwardings - .sort((a, b) => a.external_port - b.external_port) - .map((i, idx) => ( - - {`${record.floating_ip_address}:${i.external_port} => ${i.internal_ip_address}:${i.internal_port}`} - - ))} - - } - title={t('Port Forwarding')} - destroyTooltipOnHide - > - - - - ); - } - return resource_name || ''; + getColumns() { + return [ + { + title: t('ID/Floating IP'), + dataIndex: 'floating_ip_address', + isName: true, + linkPrefix: `/network/${this.getUrl('floatingip')}/detail`, }, - stringify: (resource_name, record) => { - if (!resource_name && record.port_forwardings.length !== 0) { - const ret = record.port_forwardings - .sort((a, b) => a.external_port - b.external_port) - .map( - (i) => - `${record.floating_ip_address}:${i.external_port} => ${i.internal_ip_address}:${i.internal_port}` + { + title: t('QoS Policy'), + dataIndex: 'qos_policy_id', + render: (value) => ( + + {value} + + ), + }, + { + title: t('Project ID/Name'), + dataIndex: 'project_name', + hidden: !this.isAdminPage, + sortKey: 'project_id', + }, + { + title: t('Description'), + dataIndex: 'description', + render: (value) => value || '-', + isHideable: true, + sorter: false, + }, + { + title: t('Associated Resource'), + dataIndex: 'resource_name', + render: (resource_name, record) => { + if ( + !resource_name && + record.port_forwardings && + record.port_forwardings.length !== 0 + ) { + return ( + <> + {t('{number} port forwarding rules', { + number: record.port_forwardings.length, + })} +   + + {record.port_forwardings + .sort((a, b) => a.external_port - b.external_port) + .map((i, idx) => ( + + {`${record.floating_ip_address}:${i.external_port} => ${i.internal_ip_address}:${i.internal_port}`} + + ))} + + } + title={t('Port Forwarding')} + destroyTooltipOnHide + > + + + ); - return ret.join('\n'); - } - return resource_name; + } + return resource_name || ''; + }, + stringify: (resource_name, record) => { + if (!resource_name && record.port_forwardings.length !== 0) { + const ret = record.port_forwardings + .sort((a, b) => a.external_port - b.external_port) + .map( + (i) => + `${record.floating_ip_address}:${i.external_port} => ${i.internal_ip_address}:${i.internal_port}` + ); + return ret.join('\n'); + } + return resource_name; + }, + isHideable: true, + sorter: false, }, - isHideable: true, - sorter: false, - }, - { - title: t('Status'), - dataIndex: 'status', - render: (value) => floatingIpStatus[value] || '-', - }, - { - title: t('Created At'), - dataIndex: 'created_at', - valueRender: 'toLocalTime', - isHideable: true, - sorter: false, - }, - ]; + { + title: t('Status'), + dataIndex: 'status', + render: (value) => floatingIpStatus[value] || '-', + }, + { + title: t('Created At'), + dataIndex: 'created_at', + valueRender: 'toLocalTime', + isHideable: true, + sorter: false, + }, + ]; + } get searchFilters() { const filters = [ @@ -227,3 +227,5 @@ export default class FloatingIps extends Base { return filters; } } + +export default inject('rootStore')(observer(FloatingIps)); diff --git a/src/pages/network/containers/VirtualAdapter/index.jsx b/src/pages/network/containers/VirtualAdapter/index.jsx index f0ca292b..3408f7cb 100644 --- a/src/pages/network/containers/VirtualAdapter/index.jsx +++ b/src/pages/network/containers/VirtualAdapter/index.jsx @@ -21,9 +21,7 @@ import { portStatus } from 'resources/port'; import { emptyActionConfig } from 'utils/constants'; import actionConfigs from './actions'; -@inject('rootStore') -@observer -export default class VirtualAdapter extends Base { +export class VirtualAdapter extends Base { init() { this.store = new VirtualAdapterStore(); this.downloadStore = new VirtualAdapterStore(); @@ -262,3 +260,5 @@ export default class VirtualAdapter extends Base { return ret; } } + +export default inject('rootStore')(observer(VirtualAdapter));