Skip to content

Commit 7b524bc

Browse files
committed
fix: [FIXUP] ScenarioNode
1 parent cf4799c commit 7b524bc

File tree

2 files changed

+98
-103
lines changed

2 files changed

+98
-103
lines changed

src/cards/ScenarioNode/ScenarioNode.js

Lines changed: 66 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ import { DatasetUtils } from '@cosmotech/core';
2424
import { DescriptionEditor, TagsEditor } from '../../inputs';
2525
import { FadingTooltip, ScenarioValidationStatusChip } from '../../misc';
2626
import { ConfirmDeleteDialog, EditableLink } from './components';
27-
import useStyles from './style';
27+
import { SHRUNK_NODE_HEIGHT } from './constants';
28+
import { classes, Root } from './style';
2829

2930
const DEFAULT_LABELS = {
3031
status: 'Run status:',
@@ -82,7 +83,6 @@ export const ScenarioNode = ({
8283
buildScenarioNameToDelete,
8384
onScenarioUpdate = () => null,
8485
}) => {
85-
const classes = useStyles();
8686
const labels = { ...DEFAULT_LABELS, ...tmpLabels };
8787
const [isConfirmDialogOpen, setIsConfirmDialogOpen] = useState(false);
8888
labels.deleteDialog.title = buildScenarioNameToDelete(scenario.name);
@@ -208,8 +208,15 @@ export const ScenarioNode = ({
208208

209209
const getDetailedStatus = () => {
210210
return (
211-
<div className={classes.scenarioDetailsStatusContainer}>
212-
<Typography className={classes.cardLabel}>{labels.status}</Typography>
211+
<div
212+
style={{
213+
display: 'flex',
214+
flexDirection: 'row',
215+
justifyContent: 'flex-start',
216+
alignItems: 'stretch',
217+
}}
218+
>
219+
<Typography sx={{ fontWeight: 'bold' }}>{labels.status}</Typography>
213220
{getStatusIcon(true)}
214221
</div>
215222
);
@@ -278,18 +285,27 @@ export const ScenarioNode = ({
278285

279286
const getScenarioCreationData = () => {
280287
return [
281-
<span data-cy="scenario-owner-name" key="scenario-owner-name" className={classes.scenarioHeaderItem}>
288+
<span data-cy="scenario-owner-name" key="scenario-owner-name" style={{ marginRight: '24px' }}>
282289
{scenario.ownerName}
283290
</span>,
284-
<span data-cy="scenario-creation-date" key="scenario-creation-date" className={classes.scenarioHeaderItem}>
291+
<span data-cy="scenario-creation-date" key="scenario-creation-date" style={{ marginRight: '24px' }}>
285292
{new Date(scenario.creationDate).toLocaleString()}
286293
</span>,
287294
];
288295
};
289296

290297
const getScenarioHeader = () => {
291298
return (
292-
<Box className={classes.scenarioHeader} sx={{ flexGrow: 1 }}>
299+
<Box
300+
sx={{
301+
flexGrow: 1,
302+
height: '100%',
303+
display: 'flex',
304+
flexDirection: 'row',
305+
justifyContent: 'flex-start',
306+
alignItems: 'center',
307+
}}
308+
>
293309
{isExpanded ? getScenarioCreationData() : getScenarioDetailNameLine(false)}
294310
</Box>
295311
);
@@ -298,7 +314,13 @@ export const ScenarioNode = ({
298314
const getAccordionSummary = () => {
299315
return (
300316
<AccordionSummary
301-
className={classes.accordionSummary}
317+
sx={{
318+
height: `${SHRUNK_NODE_HEIGHT}px !important`,
319+
minHeight: `${SHRUNK_NODE_HEIGHT}px !important`,
320+
alignItems: 'center',
321+
'& .MuiAccordionSummary-expandIcon': { color: (theme) => theme.palette.primary.main },
322+
'& .MuiAccordionSummary-content': { alignItems: 'center' },
323+
}}
302324
expandIcon={<ExpandMoreIcon data-cy="expand-accordion-button" />}
303325
component="div"
304326
role="button"
@@ -307,7 +329,7 @@ export const ScenarioNode = ({
307329
{showDeleteIcon && (
308330
<FadingTooltip title={labels.delete || 'Delete file'}>
309331
<IconButton
310-
className={classes.scenarioDeleteButton}
332+
sx={{ color: (theme) => theme.palette.error.main }}
311333
data-cy="scenario-delete-button"
312334
aria-label="delete scenario"
313335
size="small"
@@ -322,8 +344,25 @@ export const ScenarioNode = ({
322344
};
323345
const getAccordionDetails = () => {
324346
return (
325-
<AccordionDetails className={classes.scenarioDetailsContainer} sx={{ gap: 1 }}>
326-
<div className={classes.scenarioDetailsNameLine}>{getScenarioDetailNameLine(true)}</div>
347+
<AccordionDetails
348+
sx={{
349+
gap: 1,
350+
height: '100%',
351+
display: 'flex',
352+
flexDirection: 'column',
353+
justifyContent: 'space-between',
354+
alignItems: 'stretch',
355+
}}
356+
>
357+
<div
358+
style={{
359+
display: 'flex',
360+
flexDirection: 'row',
361+
alignItems: 'center',
362+
}}
363+
>
364+
{getScenarioDetailNameLine(true)}
365+
</div>
327366
<DescriptionEditor
328367
labels={labels.description}
329368
value={scenario.description}
@@ -340,13 +379,13 @@ export const ScenarioNode = ({
340379
headerStyle={{ color: 'unset', fontWeight: '700' }}
341380
/>
342381
{getDetailedStatus()}
343-
<Typography className={classes.cardLabel}>{labels.runTemplateLabel ?? 'Run type:'}</Typography>
344-
<Typography data-cy="scenario-run-template" className={classes.runTemplateName}>
382+
<Typography sx={{ fontWeight: 'bold' }}>{labels.runTemplateLabel ?? 'Run type:'}</Typography>
383+
<Typography data-cy="scenario-run-template" sx={{ marginLeft: '15px' }}>
345384
{scenario.runTemplateName}
346385
</Typography>
347-
<Typography className={classes.cardLabel}>{labels.dataset}</Typography>
386+
<Typography sx={{ fontWeight: 'bold' }}>{labels.dataset}</Typography>
348387
<Typography>
349-
<span data-cy="scenario-datasets" className={classes.datasets}>
388+
<span data-cy="scenario-datasets" style={{ marginLeft: '15px' }}>
350389
{datasetNames}
351390
</span>
352391
</Typography>
@@ -357,16 +396,18 @@ export const ScenarioNode = ({
357396
const rootClass = isExpanded ? classes.rootExpandedScenarioContainer : classes.rootShrunkScenarioContainer;
358397
return (
359398
<Paper key={scenario.id} className={rootClass}>
360-
<ConfirmDeleteDialog
361-
open={isConfirmDialogOpen}
362-
closeDialog={closeConfirmDialog}
363-
confirmDelete={confirmScenarioDelete}
364-
labels={labels.deleteDialog}
365-
></ConfirmDeleteDialog>
366-
<Accordion data-cy={'scenario-accordion-' + scenario.id} expanded={isExpanded} onChange={handleAccordionExpand}>
367-
{getAccordionSummary()}
368-
{isExpanded ? getAccordionDetails() : null}
369-
</Accordion>
399+
<Root>
400+
<ConfirmDeleteDialog
401+
open={isConfirmDialogOpen}
402+
closeDialog={closeConfirmDialog}
403+
confirmDelete={confirmScenarioDelete}
404+
labels={labels.deleteDialog}
405+
></ConfirmDeleteDialog>
406+
<Accordion data-cy={'scenario-accordion-' + scenario.id} expanded={isExpanded} onChange={handleAccordionExpand}>
407+
{getAccordionSummary()}
408+
{isExpanded ? getAccordionDetails() : null}
409+
</Accordion>
410+
</Root>
370411
</Paper>
371412
);
372413
};

src/cards/ScenarioNode/style.js

Lines changed: 32 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,27 @@
11
// Copyright (c) Cosmo Tech.
22
// Licensed under the MIT license.
3-
import makeStyles from '@mui/styles/makeStyles';
3+
import { styled } from '@mui/material/styles';
44
import { SHRUNK_NODE_HEIGHT, EXPANDED_NODE_HEIGHT } from './constants';
55

6-
const useStyles = makeStyles((theme) => ({
7-
rootShrunkScenarioContainer: {
6+
const PREFIX = 'ScenarioNode';
7+
export const classes = {
8+
rootShrunkScenarioContainer: `${PREFIX}-rootShrunkScenarioContainer`,
9+
rootExpandedScenarioContainer: `${PREFIX}-rootExpandedScenarioContainer`,
10+
statusUnknown: `${PREFIX}-statusUnknown`,
11+
statusCreated: `${PREFIX}-statusCreated`,
12+
statusRunning: `${PREFIX}-statusRunning`,
13+
statusSuccessful: `${PREFIX}-statusSuccessful`,
14+
statusFailed: `${PREFIX}-statusFailed`,
15+
statusSuccessfulIcon: `${PREFIX}-statusSuccessfulIcon`,
16+
statusFailedIcon: `${PREFIX}-statusFailedIcon`,
17+
statusRunningIcon: `${PREFIX}-statusRunningIcon`,
18+
statusUnknownIcon: `${PREFIX}-statusUnknownIcon`,
19+
clickableValidationStatusChip: `${PREFIX}-clickableValidationStatusChip`,
20+
nonClickableValidationStatusChip: `${PREFIX}-nonClickableValidationStatusChip`,
21+
};
22+
23+
export const Root = styled('Paper')(({ theme }) => ({
24+
[`& .${classes.rootShrunkScenarioContainer}`]: {
825
borderColor: theme.palette.divider,
926
'&:hover': {
1027
borderColor: theme.palette.text.primary,
@@ -16,7 +33,7 @@ const useStyles = makeStyles((theme) => ({
1633
height: `${SHRUNK_NODE_HEIGHT}px`,
1734
},
1835
},
19-
rootExpandedScenarioContainer: {
36+
[`& .${classes.rootExpandedScenarioContainer}`]: {
2037
borderColor: theme.palette.divider,
2138
'&:hover': {
2239
borderColor: theme.palette.text.primary,
@@ -40,117 +57,54 @@ const useStyles = makeStyles((theme) => ({
4057
},
4158
},
4259
},
43-
accordionSummary: {
44-
height: `${SHRUNK_NODE_HEIGHT}px !important`,
45-
minHeight: `${SHRUNK_NODE_HEIGHT}px !important`,
46-
alignItems: 'center',
47-
'& .MuiAccordionSummary-expandIcon': {
48-
color: theme.palette.primary.main,
49-
},
50-
'& .MuiAccordionSummary-content': {
51-
alignItems: 'center',
52-
},
53-
},
54-
cardLabel: {
55-
fontWeight: 'bold',
56-
},
57-
statusRow: {
58-
display: 'flex',
59-
flexDirection: 'row',
60-
},
61-
scenarioDeleteButton: {
62-
color: theme.palette.error.main,
63-
},
64-
scenarioHeader: {
65-
height: '100%',
66-
display: 'flex',
67-
flexDirection: 'row',
68-
justifyContent: 'flex-start',
69-
alignItems: 'center',
70-
},
71-
scenarioHeaderItem: {
72-
marginRight: '24px',
73-
},
74-
scenarioDetailsContainer: {
75-
height: '100%',
76-
display: 'flex',
77-
flexDirection: 'column',
78-
justifyContent: 'space-between',
79-
alignItems: 'stretch',
80-
},
81-
scenarioDetailsNameLine: {
82-
display: 'flex',
83-
flexDirection: 'row',
84-
alignItems: 'center',
85-
},
86-
scenarioDetailsStatusContainer: {
87-
display: 'flex',
88-
flexDirection: 'row',
89-
justifyContent: 'flex-start',
90-
alignItems: 'stretch',
91-
},
92-
scenarioTitle: {
93-
maxWidth: '500px',
94-
color: theme.palette.primary.main,
95-
overflow: 'hidden',
96-
textOverflow: 'ellipsis',
97-
},
98-
statusUnknown: {
60+
[`& .${classes.statusUnknown}`]: {
9961
marginLeft: '5px',
10062
color: theme.palette.warning.main,
10163
fontWeight: 'bold',
10264
},
103-
statusCreated: {
65+
[`& .${classes.statusCreated}`]: {
10466
marginLeft: '5px',
10567
fontWeight: 'bold',
10668
},
107-
statusRunning: {
69+
[`& .${classes.statusRunning}`]: {
10870
marginLeft: '5px',
10971
fontWeight: 'bold',
11072
},
111-
statusSuccessful: {
73+
[`& .${classes.statusSuccessful}`]: {
11274
marginLeft: '5px',
11375
color: theme.palette.success.main,
11476
fontWeight: 'bold',
11577
},
116-
statusFailed: {
78+
[`& .${classes.statusFailed}`]: {
11779
marginLeft: '5px',
11880
color: theme.palette.error.main,
11981
fontWeight: 'bold',
12082
},
121-
statusSuccessfulIcon: {
83+
[`& .${classes.statusSuccessfulIcon}`]: {
12284
marginLeft: '10px',
12385
color: theme.palette.success.main,
12486
},
125-
statusFailedIcon: {
87+
[`& .${classes.statusFailedIcon}`]: {
12688
marginLeft: '10px',
12789
color: theme.palette.error.main,
12890
},
129-
statusRunningIcon: {
91+
[`& .${classes.statusRunningIcon}`]: {
13092
marginLeft: '15px',
13193
color: theme.palette.text.primary,
13294
},
133-
statusUnknownIcon: {
95+
[`& .${classes.statusUnknownIcon}`]: {
13496
marginLeft: '10px',
13597
color: theme.palette.warning.main,
13698
},
137-
runTemplateName: {
138-
marginLeft: '15px',
139-
},
140-
datasets: {
141-
marginLeft: '15px',
142-
},
143-
clickableValidationStatusChip: {
99+
[`& .${classes.clickableValidationStatusChip}`]: {
144100
marginLeft: '10px',
145101
height: '24px',
146102
'&:hover': {
147103
cursor: 'pointer',
148104
},
149105
},
150-
nonClickableValidationStatusChip: {
106+
[`& .${classes.nonClickableValidationStatusChip}`]: {
151107
marginLeft: '10px',
152108
height: '24px',
153109
},
154110
}));
155-
156-
export default useStyles;

0 commit comments

Comments
 (0)