Skip to content

Commit

Permalink
change display component of the region in the service template detail…
Browse files Browse the repository at this point in the history
…s. (#1128)
  • Loading branch information
Alice1319 committed Sep 5, 2024
1 parent baa352a commit b1beed1
Show file tree
Hide file tree
Showing 6 changed files with 144 additions and 52 deletions.
25 changes: 7 additions & 18 deletions src/components/content/catalog/services/details/ServiceDetail.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,19 @@
* SPDX-FileCopyrightText: Huawei Inc.
*/

import { CloudUploadOutlined, InfoCircleOutlined } from '@ant-design/icons';
import { Descriptions, Space, Tag } from 'antd';
import { GlobalOutlined, InfoCircleOutlined } from '@ant-design/icons';
import { Descriptions, Tag } from 'antd';
import React from 'react';
import { createSearchParams, useNavigate } from 'react-router-dom';
import appStyles from '../../../../../styles/app.module.css';
import catalogStyles from '../../../../../styles/catalog.module.css';
import oclDisplayStyles from '../../../../../styles/ocl-display.module.css';
import {
DeployedService,
ServiceTemplateDetailVo,
category,
csp,
DeployedService,
serviceDeploymentState,
serviceRegistrationState,
ServiceTemplateDetailVo,
} from '../../../../../xpanse-api/generated';
import { useCurrentUserRoleStore } from '../../../../layouts/header/useCurrentRoleStore';
import { reportsRoute } from '../../../../utils/constants';
Expand All @@ -28,8 +27,8 @@ import { ContactDetailsShowType } from '../../../common/ocl/ContactDetailsShowTy
import { ContactDetailsText } from '../../../common/ocl/ContactDetailsText';
import { DeploymentText } from '../../../common/ocl/DeploymentText';
import { FlavorsText } from '../../../common/ocl/FlavorsText';
import { RegionText } from '../../../common/ocl/RegionText.tsx';
import useDeployedServicesByIsvQuery from '../../../deployedServices/myServices/query/useDeployedServiceByIsvQuery';
import { formatRegionInfo } from '../../../order/formDataHelpers/regionHelper.ts';
import { ShowIcon } from './ShowIcon';

function ServiceDetail({ serviceDetails }: { serviceDetails: ServiceTemplateDetailVo }): React.JSX.Element {
Expand Down Expand Up @@ -94,20 +93,10 @@ function ServiceDetail({ serviceDetails }: { serviceDetails: ServiceTemplateDeta
<>
<div className={catalogStyles.catalogDetailClass}>
<h3 className={catalogStyles.catalogDetailsH3}>
<CloudUploadOutlined />
<GlobalOutlined />
&nbsp;Available Regions
</h3>
<Space size={[0, 8]} wrap>
{serviceDetails.regions.map((region) => (
<Tag
key={region.name + '-' + region.site}
className={oclDisplayStyles.oclDisplayTag}
color='orange'
>
{formatRegionInfo(region, true)}
</Tag>
))}
</Space>
<RegionText regions={serviceDetails.regions} />
</div>
<h3 className={catalogStyles.catalogDetailsH3}>
<InfoCircleOutlined />
Expand Down
23 changes: 7 additions & 16 deletions src/components/content/common/ocl/DisplayOclData.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,22 @@
* SPDX-FileCopyrightText: Huawei Inc.
*/

import { GlobalOutlined } from '@ant-design/icons';
import { InfoCircleOutlined } from '@ant-design/icons/lib/icons';
import { Descriptions, Image, Tag, Tooltip, Typography } from 'antd';
import React from 'react';
import catalogStyles from '../../../../styles/catalog.module.css';
import oclDisplayStyles from '../../../../styles/ocl-display.module.css';
import { Ocl, serviceHostingType } from '../../../../xpanse-api/generated';
import { DeployedServicesHostingType } from '../../deployedServices/common/DeployedServicesHostingType';
import { formatRegionInfo } from '../../order/formDataHelpers/regionHelper.ts';
import { cspMap } from '../csp/CspLogo';
import { AgreementText } from './AgreementText';
import { BillingText } from './BillingText';
import { ContactDetailsShowType } from './ContactDetailsShowType';
import { ContactDetailsText } from './ContactDetailsText';
import { DeploymentText } from './DeploymentText';
import { FlavorsText } from './FlavorsText.tsx';
import { RegionText } from './RegionText.tsx';

function DisplayOclData({ ocl }: { ocl: Ocl }): React.JSX.Element | string {
const PLACE_HOLDER_UNKNOWN_VALUE: string = 'NOT PROVIDED';
Expand Down Expand Up @@ -66,21 +67,6 @@ function DisplayOclData({ ocl }: { ocl: Ocl }): React.JSX.Element | string {
</div>
<br />
</div>
<div>
<b>Available Regions</b>
<br />
{ocl.cloudServiceProvider.regions.map((region) => (
<Tag
className={oclDisplayStyles.oclDisplayTag}
color='orange'
key={region.name + '-' + region.site}
>
{formatRegionInfo(region, true)}
</Tag>
))}
<br />
<br />
</div>
<div>
<b>Service Hosted By</b>
<br />
Expand All @@ -94,6 +80,11 @@ function DisplayOclData({ ocl }: { ocl: Ocl }): React.JSX.Element | string {
</div>
</div>
<div>
<h3 className={catalogStyles.catalogDetailsH3}>
<GlobalOutlined />
&nbsp;Available Regions
</h3>
<RegionText regions={ocl.cloudServiceProvider.regions} />
<h3 className={catalogStyles.catalogDetailsH3}>
<InfoCircleOutlined />
&nbsp;Basic Information
Expand Down
70 changes: 70 additions & 0 deletions src/components/content/common/ocl/RegionText.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-FileCopyrightText: Huawei Inc.
*/

import { Table, TableProps, Tag } from 'antd';
import React from 'react';
import regionStyle from '../../../../styles/region-text.module.css';
import { Region } from '../../../../xpanse-api/generated';
import { GroupedRegionItem, groupedRegions } from '../../../utils/groupedRegions.tsx';

const columns: TableProps<GroupedRegionItem>['columns'] = [
{
title: 'Area',
dataIndex: 'area',
key: 'area',
render: (text) => <Tag color={'green'}>{text}</Tag>,
},
{
title: 'Region',
dataIndex: 'name',
key: 'region',
render: (_, { name }) => (
<>
{name.map((item) => {
return (
<Tag color={'blue'} key={item}>
{item}
</Tag>
);
})}
</>
),
},
{
title: 'Site',
dataIndex: 'site',
key: 'site',
render: (_, { site }) => (
<>
{site.map((item) => {
return (
<Tag color={'orange'} key={item}>
{item}
</Tag>
);
})}
</>
),
},
];

export function RegionText({ regions }: { regions: Region[] }): React.JSX.Element {
if (regions.length > 1) {
const groupedByAreaRegions = groupedRegions(regions);
return (
<div className={regionStyle.regionList}>
<Table
columns={columns}
dataSource={groupedByAreaRegions}
rowKey={'id'}
pagination={false}
bordered={true}
/>
</div>
);
}

return <></>;
}
26 changes: 8 additions & 18 deletions src/components/content/review/ServiceReviewsDetails.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,22 @@
* SPDX-FileCopyrightText: Huawei Inc.
*/

import { BarsOutlined } from '@ant-design/icons';
import { BarsOutlined, GlobalOutlined } from '@ant-design/icons';
import { InfoCircleOutlined } from '@ant-design/icons/lib/icons';
import { Button, Descriptions, Image, Tag, Tooltip, Typography } from 'antd';
import React, { useState } from 'react';
import catalogStyles from '../../../styles/catalog.module.css';
import oclDisplayStyles from '../../../styles/ocl-display.module.css';
import serviceReviewStyles from '../../../styles/service-review.module.css';
import { ServiceTemplateDetailVo, name, serviceRegistrationState } from '../../../xpanse-api/generated';
import { name, serviceRegistrationState, ServiceTemplateDetailVo } from '../../../xpanse-api/generated';
import { cspMap } from '../common/csp/CspLogo';
import { AgreementText } from '../common/ocl/AgreementText';
import { BillingText } from '../common/ocl/BillingText';
import { ContactDetailsShowType } from '../common/ocl/ContactDetailsShowType';
import { ContactDetailsText } from '../common/ocl/ContactDetailsText';
import { DeploymentText } from '../common/ocl/DeploymentText';
import { FlavorsText } from '../common/ocl/FlavorsText';
import { formatRegionInfo } from '../order/formDataHelpers/regionHelper.ts';
import { RegionText } from '../common/ocl/RegionText.tsx';
import { ApproveOrRejectServiceTemplate } from './ApproveOrRejectServiceTemplate';
import useApproveOrRejectRequest from './query/useApproveOrRejectRequest';

Expand Down Expand Up @@ -118,21 +118,6 @@ export const ServiceReviewsDetails = ({
</div>
<br />
</div>
<div>
<b>Available Regions</b>
<br />
{currentServiceTemplateVo.regions.map((region) => (
<Tag
className={oclDisplayStyles.oclDisplayTag}
color='orange'
key={region.name + '-' + region.site}
>
{formatRegionInfo(region, true)}
</Tag>
))}
<br />
<br />
</div>
<div>
<b>Service Hosted By</b>
<br />
Expand All @@ -149,6 +134,11 @@ export const ServiceReviewsDetails = ({
</div>
</div>
<div>
<h3 className={catalogStyles.catalogDetailsH3}>
<GlobalOutlined />
&nbsp;Available Regions
</h3>
<RegionText regions={currentServiceTemplateVo.regions} />
<h3 className={catalogStyles.catalogDetailsH3}>
<InfoCircleOutlined />
&nbsp;Basic Information
Expand Down
43 changes: 43 additions & 0 deletions src/components/utils/groupedRegions.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-FileCopyrightText: Huawei Inc.
*/

import { Region } from '../../xpanse-api/generated';

export interface GroupedRegionItem {
/**
* The names of the region
*/
name: string[];
/**
* The sites with the region belongs to, such as default, Chinese Mainland, International,
*/
site: string[];
/**
* The area which the region belongs to, such as Asia, Europe, Africa
*/
area: string;
}

export const groupedRegions = (regions: Region[]): GroupedRegionItem[] => {
const groupedData: Record<string, GroupedRegionItem> = {};

regions.forEach((item) => {
const groupKey = `${item.name}-${item.area}`;

if (!(groupKey in groupedData)) {
groupedData[groupKey] = {
name: [item.name],
site: [item.site],
area: item.area,
};
} else {
if (!groupedData[groupKey].site.includes(item.site)) {
groupedData[groupKey].site.push(item.site);
}
}
});

return Object.values(groupedData);
};
9 changes: 9 additions & 0 deletions src/styles/region-text.module.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-FileCopyrightText: Huawei Inc.
*/

.region-list {
margin-top: 5px;
width: 100%;
}

0 comments on commit b1beed1

Please sign in to comment.