Fixed #452 Manage tab should load tier data from Tier tag category. (#453)

This commit is contained in:
Sachin Chaurasiya 2021-09-09 19:11:58 +05:30 committed by GitHub
parent 2d6f67eac3
commit 5b92d85077
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 41 additions and 11 deletions

View File

@ -16,10 +16,10 @@
*/ */
export type CardWithListItems = { export type CardWithListItems = {
title: string;
id: string; id: string;
description: string; description: string;
contents: Array<Record<string, string>>; data: string;
title: string;
}; };
export type Props = { export type Props = {

View File

@ -17,6 +17,7 @@
import classNames from 'classnames'; import classNames from 'classnames';
import React, { FunctionComponent } from 'react'; import React, { FunctionComponent } from 'react';
import RichTextEditorPreviewer from '../../common/rich-text-editor/RichTextEditorPreviewer';
import { Props } from './CardWithListItems.interface'; import { Props } from './CardWithListItems.interface';
import { cardStyle } from './CardWithListItems.style'; import { cardStyle } from './CardWithListItems.style';
@ -39,7 +40,9 @@ const CardListItem: FunctionComponent<Props> = ({
)}> )}>
<div className="tw-flex tw-flex-col"> <div className="tw-flex tw-flex-col">
<h4 className={cardStyle.header.title}>{card.title}</h4> <h4 className={cardStyle.header.title}>{card.title}</h4>
<p className={cardStyle.header.description}>{card.description}</p> <p className={cardStyle.header.description}>
{card.description.replaceAll('*', '')}
</p>
</div> </div>
<div> <div>
{isActive && <i className="fas fa-check-circle tw-text-h2" />} {isActive && <i className="fas fa-check-circle tw-text-h2" />}
@ -50,11 +53,7 @@ const CardListItem: FunctionComponent<Props> = ({
cardStyle.body.base, cardStyle.body.base,
isActive ? cardStyle.body.active : cardStyle.body.default isActive ? cardStyle.body.active : cardStyle.body.default
)}> )}>
<ol className="tw-list-decimal"> <RichTextEditorPreviewer markdown={card.data} />
{card.contents.map(({ text }, i) => (
<li key={i}>{text}</li>
))}
</ol>
</div> </div>
</div> </div>
); );

View File

@ -15,15 +15,17 @@
* limitations under the License. * limitations under the License.
*/ */
import { AxiosResponse } from 'axios';
import { isEmpty } from 'lodash'; import { isEmpty } from 'lodash';
import { TableDetail } from 'Models'; import { TableDetail } from 'Models';
import React, { FunctionComponent, useEffect, useState } from 'react'; import React, { FunctionComponent, useEffect, useState } from 'react';
import appState from '../../AppState'; import appState from '../../AppState';
import cardData from '../../jsons/tiersData.json'; import { getCategory } from '../../axiosAPIs/tagAPI';
import { getUserTeams } from '../../utils/CommonUtils'; import { getUserTeams } from '../../utils/CommonUtils';
import SVGIcons from '../../utils/SvgUtils'; import SVGIcons from '../../utils/SvgUtils';
import { Button } from '../buttons/Button/Button'; import { Button } from '../buttons/Button/Button';
import CardListItem from '../card-list/CardListItem/CardWithListItems'; import CardListItem from '../card-list/CardListItem/CardWithListItems';
import { CardWithListItems } from '../card-list/CardListItem/CardWithListItems.interface';
import NonAdminAction from '../common/non-admin-action/NonAdminAction'; import NonAdminAction from '../common/non-admin-action/NonAdminAction';
import DropDownList from '../dropdown/DropDownList'; import DropDownList from '../dropdown/DropDownList';
import Loader from '../Loader/Loader'; import Loader from '../Loader/Loader';
@ -44,13 +46,14 @@ const ManageTab: FunctionComponent<Props> = ({
onSave, onSave,
hasEditAccess, hasEditAccess,
}: Props) => { }: Props) => {
const { data } = cardData;
const [loading, setLoading] = useState<boolean>(false); const [loading, setLoading] = useState<boolean>(false);
const [status, setStatus] = useState<'initial' | 'waiting' | 'success'>( const [status, setStatus] = useState<'initial' | 'waiting' | 'success'>(
'initial' 'initial'
); );
const [activeTier, setActiveTier] = useState(currentTier); const [activeTier, setActiveTier] = useState(currentTier);
const [listVisible, setListVisible] = useState(false); const [listVisible, setListVisible] = useState(false);
const [tierData, setTierData] = useState<Array<CardWithListItems>>([]);
const [listOwners] = useState(() => { const [listOwners] = useState(() => {
const user = !isEmpty(appState.userDetails) const user = !isEmpty(appState.userDetails)
? appState.userDetails ? appState.userDetails
@ -113,6 +116,34 @@ const ManageTab: FunctionComponent<Props> = ({
setOwner(currentUser); setOwner(currentUser);
}; };
const getTierData = () => {
getCategory('Tier').then((res: AxiosResponse) => {
if (res.data) {
const tierData = res.data.children.map(
(tier: { name: string; description: string }) => ({
id: `Tier.${tier.name}`,
title: tier.name,
description: tier.description.substring(
0,
tier.description.indexOf('\n\n')
),
data: tier.description.substring(
tier.description.indexOf('\n\n') + 1
),
})
);
setTierData(tierData);
} else {
setTierData([]);
}
});
};
useEffect(() => {
getTierData();
}, []);
useEffect(() => { useEffect(() => {
setActiveTier(currentTier); setActiveTier(currentTier);
}, [currentTier]); }, [currentTier]);
@ -165,7 +196,7 @@ const ManageTab: FunctionComponent<Props> = ({
</span> </span>
</div> </div>
<div className="tw-flex tw-flex-col"> <div className="tw-flex tw-flex-col">
{data.map((card, i) => ( {tierData.map((card, i) => (
<NonAdminAction <NonAdminAction
html={ html={
<> <>