Skip to content

Commit

Permalink
feat: Separates data into static,dynamic on stage,cdpipeline pages (#40)
Browse files Browse the repository at this point in the history
Jira: EPMDEDP-12606
Related: #40
Change-Id: I66f45624e7c169cc45c97e73b165b4b88368e090
  • Loading branch information
callmevladik authored and MykolaMarusenko committed Sep 15, 2023
1 parent 7fe1e7f commit 73d90cb
Show file tree
Hide file tree
Showing 36 changed files with 160 additions and 177 deletions.
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { Grid, Typography } from '@material-ui/core';
import React from 'react';
import { Table } from '../../../../components/Table';
import { useEnrichedApplicationsContext } from '../../providers/EnrichedApplications/hooks';
import { useDynamicDataContext } from '../../providers/DynamicData/hooks';
import { useColumns } from './hooks/useColumns';

export const CDPipelineApplicationsTable = () => {
const columns = useColumns();
const { enrichedApplications } = useEnrichedApplicationsContext();
const { enrichedApplications } = useDynamicDataContext();

return (
<Grid container spacing={1}>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import { GENERATE_URL_SERVICE } from '../../../../../services/url';
import { capitalizeFirstLetter } from '../../../../../utils/format/capitalizeFirstLetter';
import { rem } from '../../../../../utils/styling/rem';
import { routeEDPStageDetails } from '../../../../edp-stage-details/route';
import { useEnrichedApplicationsContext } from '../../../providers/EnrichedApplications/hooks';
import { useDynamicDataContext } from '../../../providers/DynamicData/hooks';
import { EDPCDPipelineRouteParams } from '../../../types';

export const useColumns = (
Expand All @@ -30,7 +30,7 @@ export const useColumns = (
useResourceActionListContext<EDPCDPipelineStageKubeObjectInterface>();
const { name: CDPipelineName, namespace } = useParams<EDPCDPipelineRouteParams>();
const { data: EDPComponentsURLS } = useEDPComponentsURLsQuery(namespace);
const { enrichedApplications } = useEnrichedApplicationsContext();
const { enrichedApplications } = useDynamicDataContext();

const ciTool = enrichedApplications?.[0]?.application?.spec.ciTool;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,18 @@ import { useDialogContext } from '../../../../providers/Dialog/hooks';
import { FORM_MODES } from '../../../../types/forms';
import { CREATE_EDIT_STAGE_DIALOG_NAME } from '../../../../widgets/CreateEditStage/constants';
import { CreateEditStageDialogForwardedProps } from '../../../../widgets/CreateEditStage/types';
import { useCDPipelineContext } from '../../providers/CDPipeline/hooks';
import { useCDPipelineStagesContext } from '../../providers/CDPipelineStages/hooks';
import { useEnrichedApplicationsContext } from '../../providers/EnrichedApplications/hooks';
import { useDynamicDataContext } from '../../providers/DynamicData/hooks';
import { TableHeaderActions } from '../TableHeaderActions';
import { useColumns } from './hooks/useColumns';
import { useStyles } from './styles';

export const StageList = () => {
const classes = useStyles();
const columns = useColumns(classes);
const { stages } = useCDPipelineStagesContext();
const { CDPipeline } = useCDPipelineContext();
const { stages, CDPipeline, enrichedApplications } = useDynamicDataContext();

const { setDialog } = useDialogContext();

const { enrichedApplications } = useEnrichedApplicationsContext();

const createEditStageDialogForwardedProps: CreateEditStageDialogForwardedProps = React.useMemo(
() => ({
mode: FORM_MODES.CREATE,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,11 @@ import { useDialogContext } from '../../../../providers/Dialog/hooks';
import { FORM_MODES } from '../../../../types/forms';
import { CREATE_EDIT_STAGE_DIALOG_NAME } from '../../../../widgets/CreateEditStage/constants';
import { CreateEditStageDialogForwardedProps } from '../../../../widgets/CreateEditStage/types';
import { useCDPipelineContext } from '../../providers/CDPipeline/hooks';
import { useEnrichedApplicationsContext } from '../../providers/EnrichedApplications/hooks';
import { useDynamicDataContext } from '../../providers/DynamicData/hooks';
import { TableHeaderActionsProps } from './types';

export const TableHeaderActions = ({ CDPipelineStages }: TableHeaderActionsProps) => {
const { CDPipeline } = useCDPipelineContext();
const { enrichedApplications } = useEnrichedApplicationsContext();
const { CDPipeline, enrichedApplications } = useDynamicDataContext();
const ciTool = enrichedApplications?.[0]?.application?.spec.ciTool;
const { setDialog } = useDialogContext<CreateEditStageDialogForwardedProps>();

Expand Down
18 changes: 6 additions & 12 deletions src/pages/edp-cdpipeline-details/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,7 @@ import { QueryClient, QueryClientProvider } from 'react-query';
import ErrorBoundary from '../../components/ErrorBoundary';
import { DialogContextProvider } from '../../providers/Dialog';
import { ResourceActionListContextProvider } from '../../providers/ResourceActionList';
import { CDPipelineContextProvider } from './providers/CDPipeline/provider';
import { CDPipelineStagesContextProvider } from './providers/CDPipelineStages/provider';
import { EnrichedApplicationsContextProvider } from './providers/EnrichedApplications/provider';
import { DynamicDataContextProvider } from './providers/DynamicData/provider';
import { PageView } from './view';

export default function () {
Expand All @@ -23,15 +21,11 @@ export default function () {
<QueryClientProvider client={queryClient}>
<ErrorBoundary>
<DialogContextProvider>
<CDPipelineContextProvider>
<CDPipelineStagesContextProvider>
<EnrichedApplicationsContextProvider>
<ResourceActionListContextProvider>
<PageView />
</ResourceActionListContextProvider>
</EnrichedApplicationsContextProvider>
</CDPipelineStagesContextProvider>
</CDPipelineContextProvider>
<ResourceActionListContextProvider>
<DynamicDataContextProvider>
<PageView />
</DynamicDataContextProvider>
</ResourceActionListContextProvider>
</DialogContextProvider>
</ErrorBoundary>
</QueryClientProvider>
Expand Down

This file was deleted.

This file was deleted.

18 changes: 0 additions & 18 deletions src/pages/edp-cdpipeline-details/providers/CDPipeline/provider.tsx

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import React from 'react';
import { DynamicDataContextProviderValue } from './types';

export const DynamicDataContext = React.createContext<DynamicDataContextProviderValue>({
stages: null,
CDPipeline: null,
enrichedApplications: null,
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import React from 'react';
import { DynamicDataContext } from './context';

export const useDynamicDataContext = () => React.useContext(DynamicDataContext);
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import React from 'react';
import { useParams } from 'react-router-dom';
import { useStreamCDPipeline } from '../../../../k8s/EDPCDPipeline/hooks/useStreamCDPipeline';
import { useStreamStagesByCDPipelineName } from '../../../../k8s/EDPCDPipelineStage/hooks/useStreamStagesByCDPipelineName';
import { useEnrichedApplicationsWithImageStreamsQuery } from '../../../../k8s/EDPCodebase/hooks/useEnrichedApplicationsWithImageStreamsQuery';
import { EDPCDPipelineRouteParams } from '../../types';
import { DynamicDataContext } from './context';

export const DynamicDataContextProvider: React.FC = ({ children }) => {
const { namespace, name } = useParams<EDPCDPipelineRouteParams>();

const CDPipeline = useStreamCDPipeline({
namespace,
CDPipelineMetadataName: name,
});

const {
isLoading: isEnrichedApplicationsWithImageStreamsQueryLoading,
data: enrichedApplications,
} = useEnrichedApplicationsWithImageStreamsQuery({
props: {
CDPipelineData: CDPipeline,
},
});

const enrichedApplicationsValue = React.useMemo(
() => !isEnrichedApplicationsWithImageStreamsQueryLoading && enrichedApplications,
[enrichedApplications, isEnrichedApplicationsWithImageStreamsQueryLoading]
);

const stages = useStreamStagesByCDPipelineName({
namespace,
CDPipelineMetadataName: name,
select: React.useCallback(data => {
return data.sort((a, b) => a.spec.order - b.spec.order);
}, []),
});

const DataContextValue = React.useMemo(
() => ({
CDPipeline,
stages,
enrichedApplications: enrichedApplicationsValue,
}),
[CDPipeline, stages, enrichedApplicationsValue]
);

return (
<DynamicDataContext.Provider value={DataContextValue}>
{children}
</DynamicDataContext.Provider>
);
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { EDPCDPipelineKubeObjectInterface } from '../../../../k8s/EDPCDPipeline/types';
import { EDPCDPipelineStageKubeObjectInterface } from '../../../../k8s/EDPCDPipelineStage/types';
import { EnrichedApplicationWithItsImageStreams } from '../../../../k8s/EDPCodebase/hooks/useEnrichedApplicationsWithImageStreamsQuery';

export interface DynamicDataContextProviderValue {
CDPipeline: EDPCDPipelineKubeObjectInterface;
stages: EDPCDPipelineStageKubeObjectInterface[];
enrichedApplications: EnrichedApplicationWithItsImageStreams[];
}

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

8 changes: 2 additions & 6 deletions src/pages/edp-cdpipeline-details/view.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,14 @@ import { CDPipelineActions } from './components/CDPipelineActions';
import { CDPipelineApplicationsTable } from './components/CDPipelineApplicationsTable';
import { CDPipelineMetadataTable } from './components/CDPipelineMetadataTable';
import { StageList } from './components/StageList';
import { useCDPipelineContext } from './providers/CDPipeline/hooks';
import { useCDPipelineStagesContext } from './providers/CDPipelineStages/hooks';
import { useEnrichedApplicationsContext } from './providers/EnrichedApplications/hooks';
import { useDynamicDataContext } from './providers/DynamicData/hooks';
import { EDPCDPipelineRouteParams } from './types';

export const PageView = () => {
const { name, namespace } = useParams<EDPCDPipelineRouteParams>();

const { CDPipeline } = useCDPipelineContext();
const { stages } = useCDPipelineStagesContext();
const { CDPipeline, stages, enrichedApplications } = useDynamicDataContext();
const { data: EDPComponentsURLS } = useEDPComponentsURLsQuery(namespace);
const { enrichedApplications } = useEnrichedApplicationsContext();

const ciTool = enrichedApplications?.[0]?.application?.spec.ciTool;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import { useEDPComponentsURLsQuery } from '../../../../../k8s/EDPComponent/hooks
import { GENERATE_URL_SERVICE } from '../../../../../services/url';
import { routeEDPComponentDetails } from '../../../../edp-component-details/route';
import { useDataContext } from '../../../providers/Data/hooks';
import { useDynamicDataContext } from '../../../providers/DynamicData/hooks';
import { EDPStageDetailsRouteParams, EnrichedApplicationWithArgoApplication } from '../../../types';
import { ImageStreamTagsSelect } from '../components/ImageStreamTagsSelect';
import { ValuesOverrideCheckbox } from '../components/ValuesOverrideCheckbox';
Expand All @@ -40,7 +41,8 @@ export const useColumns = (
const theme = useTheme();
const { namespace, CDPipelineName } = useParams<EDPStageDetailsRouteParams>();
const { data: EDPComponentsURLS } = useEDPComponentsURLsQuery(namespace);
const { stage, gitOpsCodebase } = useDataContext();
const { gitOpsCodebase } = useDataContext();
const { stage } = useDynamicDataContext();
const _createArgoCDLink = React.useCallback(
(argoApplication: ApplicationKubeObjectInterface) =>
GENERATE_URL_SERVICE.createArgoCDApplicationLink(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import { getDeployedVersion } from '../../../../k8s/Application/utils/getDeploye
import { useGitServerListQuery } from '../../../../k8s/EDPGitServer/hooks/useGitServerListQuery';
import { mapEvery } from '../../../../utils/loops/mapEvery';
import { useDataContext } from '../../providers/Data/hooks';
import { useDynamicDataContext } from '../../providers/DynamicData/hooks';
import { EnrichedApplicationWithArgoApplication } from '../../types';
import { useColumns } from './hooks/useColumns';
import { useUpperColumns } from './hooks/useUpperColumns';
Expand All @@ -36,7 +37,8 @@ export const Applications = ({
enrichedApplicationsWithArgoApplications,
qualityGatePipelineIsRunning,
}: ApplicationsProps) => {
const { CDPipeline, stage, gitOpsCodebase } = useDataContext();
const { CDPipeline, gitOpsCodebase } = useDataContext();
const { stage } = useDynamicDataContext();
const { data: gitServers } = useGitServerListQuery({});
const { getValues, setValue, resetField, trigger } = useFormContext();
const [selected, setSelected] = React.useState<string[]>([]);
Expand Down
4 changes: 2 additions & 2 deletions src/pages/edp-stage-details/components/CustomGates/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import { usePipelineByTypeListQuery } from '../../../../k8s/Pipeline/hooks/usePi
import { useCreateDeployPipelineRun } from '../../../../k8s/PipelineRun/hooks/useCreateDeployPipelineRun';
import { FormSelect } from '../../../../providers/Form/components/FormSelect';
import { parseTektonResourceStatus } from '../../../../utils/parseTektonResourceStatus';
import { useDataContext } from '../../providers/Data/hooks';
import { useDynamicDataContext } from '../../providers/DynamicData/hooks';
import { EDPStageDetailsRouteParams } from '../../types';
import { useColumns } from './hooks/useColumns';
import { CustomGatesProps } from './types';
Expand All @@ -25,7 +25,7 @@ export const CustomGates = ({
}: CustomGatesProps) => {
const { namespace, CDPipelineName } = useParams<EDPStageDetailsRouteParams>();
const columns = useColumns();
const { stage } = useDataContext();
const { stage } = useDynamicDataContext();
const stageSpecName = stage?.spec.name;

const {
Expand Down
Loading

0 comments on commit 73d90cb

Please sign in to comment.