@kartverket/backstage-plugin-risk-scorecard 1.3.0 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/common/Spinner.esm.js +24 -6
- package/dist/components/common/Spinner.esm.js.map +1 -1
- package/dist/components/riScInfo/riScStatus/RiScStatusComponent.esm.js +3 -3
- package/dist/components/riScInfo/riScStatus/RiScStatusComponent.esm.js.map +1 -1
- package/dist/components/riScPlugin/RiScPlugin.esm.js.map +1 -1
- package/dist/components/riskMatrix/RiskMatrixScenarioCount.esm.js +2 -2
- package/dist/components/riskMatrix/RiskMatrixScenarioCount.esm.js.map +1 -1
- package/dist/components/scenarioDrawer/ScenarioDrawer.esm.js +11 -5
- package/dist/components/scenarioDrawer/ScenarioDrawer.esm.js.map +1 -1
- package/dist/components/scenarioDrawer/components/ActionBox.esm.js +2 -9
- package/dist/components/scenarioDrawer/components/ActionBox.esm.js.map +1 -1
- package/dist/components/scenarioDrawer/components/ActionFormSection.esm.js +2 -2
- package/dist/components/scenarioDrawer/components/ActionFormSection.esm.js.map +1 -1
- package/dist/components/scenarioDrawer/components/ActionsSection.esm.js +2 -9
- package/dist/components/scenarioDrawer/components/ActionsSection.esm.js.map +1 -1
- package/dist/components/scenarioDrawer/components/DeleteConfirmation.esm.js +19 -4
- package/dist/components/scenarioDrawer/components/DeleteConfirmation.esm.js.map +1 -1
- package/dist/components/scenarioTable/ScenarioTable.esm.js +4 -4
- package/dist/components/scenarioTable/ScenarioTable.esm.js.map +1 -1
- package/dist/components/scenarioWizard/ScenarioWizard.esm.js +55 -63
- package/dist/components/scenarioWizard/ScenarioWizard.esm.js.map +1 -1
- package/dist/components/scenarioWizard/components/ConsequenceTable.esm.js +65 -56
- package/dist/components/scenarioWizard/components/ConsequenceTable.esm.js.map +1 -1
- package/dist/components/scenarioWizard/components/ProbabilityTable.esm.js +25 -27
- package/dist/components/scenarioWizard/components/ProbabilityTable.esm.js.map +1 -1
- package/dist/components/scenarioWizard/components/RiskRadioButton.esm.js +22 -0
- package/dist/components/scenarioWizard/components/RiskRadioButton.esm.js.map +1 -0
- package/dist/components/scenarioWizard/steps/ActionsStep.esm.js +92 -14
- package/dist/components/scenarioWizard/steps/ActionsStep.esm.js.map +1 -1
- package/dist/components/scenarioWizard/steps/RiskStep.esm.js +3 -49
- package/dist/components/scenarioWizard/steps/RiskStep.esm.js.map +1 -1
- package/dist/components/scenarioWizard/steps/ScenarioStep.esm.js +47 -48
- package/dist/components/scenarioWizard/steps/ScenarioStep.esm.js.map +1 -1
- package/dist/components/scenarioWizard/wizardStyles.esm.js +9 -6
- package/dist/components/scenarioWizard/wizardStyles.esm.js.map +1 -1
- package/dist/contexts/RiScContext.esm.js +27 -68
- package/dist/contexts/RiScContext.esm.js.map +1 -1
- package/dist/contexts/ScenarioContext.esm.js +43 -156
- package/dist/contexts/ScenarioContext.esm.js.map +1 -1
- package/dist/utils/DTOs.esm.js.map +1 -1
- package/dist/utils/constants.esm.js +3 -1
- package/dist/utils/constants.esm.js.map +1 -1
- package/dist/utils/hooks.esm.js +4 -17
- package/dist/utils/hooks.esm.js.map +1 -1
- package/dist/utils/style.esm.js +1 -48
- package/dist/utils/style.esm.js.map +1 -1
- package/dist/utils/types.esm.js +0 -1
- package/dist/utils/types.esm.js.map +1 -1
- package/dist/utils/utilityfunctions.esm.js +2 -2
- package/dist/utils/utilityfunctions.esm.js.map +1 -1
- package/package.json +1 -1
- package/dist/components/common/Dropdown.esm.js +0 -79
- package/dist/components/common/Dropdown.esm.js.map +0 -1
- package/dist/components/common/Textfield.esm.js +0 -64
- package/dist/components/common/Textfield.esm.js.map +0 -1
- package/dist/components/scenarioWizard/components/ActionEdit.esm.js +0 -111
- package/dist/components/scenarioWizard/components/ActionEdit.esm.js.map +0 -1
|
@@ -1,11 +1,29 @@
|
|
|
1
|
-
import { CircularProgress } from '@material-ui/core';
|
|
2
1
|
import React from 'react';
|
|
3
|
-
import
|
|
2
|
+
import Box from '@mui/material/Box';
|
|
3
|
+
import CircularProgress from '@mui/material/CircularProgress';
|
|
4
4
|
|
|
5
|
-
const Spinner = ({ size }) =>
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
const Spinner = ({ size }) => /* @__PURE__ */ React.createElement(
|
|
6
|
+
Box,
|
|
7
|
+
{
|
|
8
|
+
sx: {
|
|
9
|
+
display: "flex",
|
|
10
|
+
minWidth: "100wh",
|
|
11
|
+
height: "100vh",
|
|
12
|
+
justifyContent: "center",
|
|
13
|
+
alignItems: "flex-start"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
/* @__PURE__ */ React.createElement(
|
|
17
|
+
CircularProgress,
|
|
18
|
+
{
|
|
19
|
+
size,
|
|
20
|
+
sx: {
|
|
21
|
+
display: "flex",
|
|
22
|
+
marginTop: "200px"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
)
|
|
26
|
+
);
|
|
9
27
|
|
|
10
28
|
export { Spinner };
|
|
11
29
|
//# sourceMappingURL=Spinner.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Spinner.esm.js","sources":["../../../src/components/common/Spinner.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"Spinner.esm.js","sources":["../../../src/components/common/Spinner.tsx"],"sourcesContent":["import React from 'react';\nimport Box from '@mui/material/Box';\nimport CircularProgress from '@mui/material/CircularProgress';\n\nexport const Spinner = ({ size }: { size?: string | number }) => (\n <Box\n sx={{\n display: 'flex',\n minWidth: '100wh',\n height: '100vh',\n justifyContent: 'center',\n alignItems: 'flex-start',\n }}\n >\n <CircularProgress\n size={size}\n sx={{\n display: 'flex',\n marginTop: '200px',\n }}\n />\n </Box>\n);\n"],"names":[],"mappings":";;;;AAIO,MAAM,OAAU,GAAA,CAAC,EAAE,IAAA,EACxB,qBAAA,KAAA,CAAA,aAAA;AAAA,EAAC,GAAA;AAAA,EAAA;AAAA,IACC,EAAI,EAAA;AAAA,MACF,OAAS,EAAA,MAAA;AAAA,MACT,QAAU,EAAA,OAAA;AAAA,MACV,MAAQ,EAAA,OAAA;AAAA,MACR,cAAgB,EAAA,QAAA;AAAA,MAChB,UAAY,EAAA,YAAA;AAAA,KACd;AAAA,GAAA;AAAA,kBAEA,KAAA,CAAA,aAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,EAAI,EAAA;AAAA,QACF,OAAS,EAAA,MAAA;AAAA,QACT,SAAW,EAAA,OAAA;AAAA,OACb;AAAA,KAAA;AAAA,GACF;AACF;;;;"}
|
|
@@ -123,9 +123,9 @@ const RiScStatusComponent = ({
|
|
|
123
123
|
RosAcceptance,
|
|
124
124
|
{
|
|
125
125
|
status: selectedRiSc.status,
|
|
126
|
-
migration: selectedRiSc.migrationChanges
|
|
126
|
+
migration: selectedRiSc.migrationStatus?.migrationChanges
|
|
127
127
|
}
|
|
128
|
-
), selectedRiSc.status === RiScStatus.SentForApproval && !selectedRiSc.migrationChanges && /* @__PURE__ */ React.createElement(Typography, { sx: { fontWeight: 700 }, paragraph: true, variant: "subtitle1" }, /* @__PURE__ */ React.createElement(PullRequestSvg, null), t("rosStatus.prStatus"), /* @__PURE__ */ React.createElement(Link, { target: "_blank", href: selectedRiSc.pullRequestUrl }, "Github")), selectedRiSc.status === RiScStatus.Draft && !selectedRiSc.migrationChanges && /* @__PURE__ */ React.createElement(
|
|
128
|
+
), selectedRiSc.status === RiScStatus.SentForApproval && !selectedRiSc.migrationStatus?.migrationChanges && /* @__PURE__ */ React.createElement(Typography, { sx: { fontWeight: 700 }, paragraph: true, variant: "subtitle1" }, /* @__PURE__ */ React.createElement(PullRequestSvg, null), t("rosStatus.prStatus"), /* @__PURE__ */ React.createElement(Link, { target: "_blank", href: selectedRiSc.pullRequestUrl }, "Github")), selectedRiSc.status === RiScStatus.Draft && !selectedRiSc.migrationStatus?.migrationChanges && /* @__PURE__ */ React.createElement(
|
|
129
129
|
Button,
|
|
130
130
|
{
|
|
131
131
|
color: "primary",
|
|
@@ -135,7 +135,7 @@ const RiScStatusComponent = ({
|
|
|
135
135
|
sx: { display: "block", marginLeft: "auto" }
|
|
136
136
|
},
|
|
137
137
|
t("rosStatus.approveButton")
|
|
138
|
-
), selectedRiSc.migrationChanges && /* @__PURE__ */ React.createElement(
|
|
138
|
+
), selectedRiSc.migrationStatus?.migrationChanges && /* @__PURE__ */ React.createElement(
|
|
139
139
|
Button,
|
|
140
140
|
{
|
|
141
141
|
color: "primary",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RiScStatusComponent.esm.js","sources":["../../../../src/components/riScInfo/riScStatus/RiScStatusComponent.tsx"],"sourcesContent":["import React, { ReactComponentElement, useState } from 'react';\nimport { RiScStatus, RiScWithMetadata } from '../../../utils/types';\nimport Alert from '@mui/material/Alert';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogActions from '@mui/material/DialogActions';\nimport Link from '@mui/material/Link';\nimport Typography from '@mui/material/Typography';\nimport Checkbox from '@mui/material/Checkbox';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../../utils/translations';\nimport CheckIcon from '@mui/icons-material/Check';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport { dialogActions } from '../../common/mixins';\nimport { InfoCard } from '@backstage/core-components';\nimport { PullRequestSvg } from '../../common/Icons';\nimport { useRiScs } from '../../../contexts/RiScContext';\nimport { subtitle1 } from '../../common/typography';\n\ninterface RiScPublishDialogProps {\n openDialog: boolean;\n handleCancel: () => void;\n handlePublish: () => void;\n}\n\nconst RiScPublishDialog = ({\n openDialog,\n handleCancel,\n handlePublish,\n}: RiScPublishDialogProps): ReactComponentElement<any> => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const [riskOwnerApproves, setRiskOwnerApproves] = useState<boolean>(false);\n\n const handleCheckboxInput = (event: React.ChangeEvent<HTMLInputElement>) => {\n setRiskOwnerApproves(event.target.checked);\n };\n\n return (\n <Dialog open={openDialog}>\n <DialogTitle>{t('publishDialog.title')}</DialogTitle>\n <DialogContent>\n <Alert severity=\"info\" icon={false}>\n <FormControlLabel\n control={\n <Checkbox\n color=\"primary\"\n checked={riskOwnerApproves}\n onChange={handleCheckboxInput}\n />\n }\n label={t('publishDialog.checkboxLabel')}\n />\n </Alert>\n </DialogContent>\n <DialogActions sx={dialogActions}>\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={handlePublish}\n disabled={!riskOwnerApproves}\n >\n {t('dictionary.confirm')}\n </Button>\n <Button variant=\"outlined\" color=\"primary\" onClick={handleCancel}>\n {t('dictionary.cancel')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\ninterface RiScMigrationDialogProps {\n openDialog: boolean;\n handleCancel: () => void;\n handleUpdate: () => void;\n}\n\nconst RiScMigrationDialog = ({\n openDialog,\n handleCancel,\n handleUpdate,\n}: RiScMigrationDialogProps): ReactComponentElement<any> => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const [saveMigration, setSaveMigration] = useState<boolean>(false);\n\n const handleCheckboxInput = (event: React.ChangeEvent<HTMLInputElement>) => {\n setSaveMigration(event.target.checked);\n };\n\n return (\n <Dialog open={openDialog}>\n <DialogTitle>{t('migrationDialog.title')}</DialogTitle>\n <DialogContent>\n <Alert severity=\"info\" icon={false}>\n <FormControlLabel\n control={\n <Checkbox\n checked={saveMigration}\n onChange={handleCheckboxInput}\n />\n }\n label={t('migrationDialog.checkboxLabel')}\n />\n </Alert>\n </DialogContent>\n <DialogActions sx={dialogActions}>\n <Button\n variant=\"contained\"\n onClick={handleUpdate}\n disabled={!saveMigration}\n >\n {t('dictionary.confirm')}\n </Button>\n <Button variant=\"outlined\" color=\"primary\" onClick={handleCancel}>\n {t('dictionary.cancel')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nconst RosAcceptance = ({\n status,\n migration,\n}: {\n status: RiScStatus;\n migration?: boolean;\n}): React.JSX.Element => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n if (migration) {\n return (\n <Typography paragraph sx={subtitle1}>\n {t('rosStatus.statusBadge.migration')}\n </Typography>\n );\n }\n switch (status) {\n case RiScStatus.Draft:\n return (\n <Typography paragraph sx={subtitle1}>\n {t('rosStatus.statusBadge.missing')}\n </Typography>\n );\n case RiScStatus.SentForApproval:\n case RiScStatus.Published:\n return (\n <Typography paragraph sx={subtitle1}>\n <CheckIcon fontSize=\"medium\" sx={{ transform: 'translateY(5px)' }} />{' '}\n {t('rosStatus.statusBadge.approved')}\n </Typography>\n );\n default:\n return (\n <Typography paragraph sx={subtitle1}>\n {t('rosStatus.statusBadge.error')}\n </Typography>\n );\n }\n};\n\ninterface RiScStatusProps {\n selectedRiSc: RiScWithMetadata;\n publishRiScFn: () => void;\n}\n\nexport const RiScStatusComponent = ({\n selectedRiSc,\n publishRiScFn,\n}: RiScStatusProps) => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const [publishRiScDialogIsOpen, setPublishRiScDialogIsOpen] =\n useState<boolean>(false);\n\n const [migrationDialogIsOpen, setMigrationDialogIsOpen] =\n useState<boolean>(false);\n\n const { updateRiSc } = useRiScs();\n\n const handleApproveAndPublish = () => {\n publishRiScFn();\n setPublishRiScDialogIsOpen(false);\n };\n\n const handleUpdate = () => {\n updateRiSc(selectedRiSc.content);\n setMigrationDialogIsOpen(false);\n };\n\n return (\n <InfoCard>\n <Typography variant=\"h5\">Status</Typography>\n\n <RosAcceptance\n status={selectedRiSc.status}\n migration={selectedRiSc.migrationChanges}\n />\n {selectedRiSc.status === RiScStatus.SentForApproval &&\n !selectedRiSc.migrationChanges && (\n <Typography sx={{ fontWeight: 700 }} paragraph variant=\"subtitle1\">\n <PullRequestSvg />\n {t('rosStatus.prStatus')}\n <Link target=\"_blank\" href={selectedRiSc.pullRequestUrl}>\n Github\n </Link>\n </Typography>\n )}\n {selectedRiSc.status === RiScStatus.Draft &&\n !selectedRiSc.migrationChanges && (\n <Button\n color=\"primary\"\n variant=\"contained\"\n onClick={() => setPublishRiScDialogIsOpen(!publishRiScDialogIsOpen)}\n disabled={selectedRiSc.status !== RiScStatus.Draft}\n sx={{ display: 'block', marginLeft: 'auto' }}\n >\n {t('rosStatus.approveButton')}\n </Button>\n )}\n {selectedRiSc.migrationChanges && (\n <Button\n color=\"primary\"\n variant=\"contained\"\n onClick={() => setMigrationDialogIsOpen(!migrationDialogIsOpen)}\n sx={{ display: 'block', marginLeft: 'auto' }}\n >\n <Typography variant=\"button\">{t('rosStatus.saveButton')}</Typography>\n </Button>\n )}\n <RiScPublishDialog\n openDialog={publishRiScDialogIsOpen}\n handlePublish={handleApproveAndPublish}\n handleCancel={() => setPublishRiScDialogIsOpen(false)}\n />\n <RiScMigrationDialog\n openDialog={migrationDialogIsOpen}\n handleUpdate={handleUpdate}\n handleCancel={() => setMigrationDialogIsOpen(false)}\n />\n </InfoCard>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RiScStatusComponent.esm.js","sources":["../../../../src/components/riScInfo/riScStatus/RiScStatusComponent.tsx"],"sourcesContent":["import React, { ReactComponentElement, useState } from 'react';\nimport { RiScStatus, RiScWithMetadata } from '../../../utils/types';\nimport Alert from '@mui/material/Alert';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogActions from '@mui/material/DialogActions';\nimport Link from '@mui/material/Link';\nimport Typography from '@mui/material/Typography';\nimport Checkbox from '@mui/material/Checkbox';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../../utils/translations';\nimport CheckIcon from '@mui/icons-material/Check';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport { dialogActions } from '../../common/mixins';\nimport { InfoCard } from '@backstage/core-components';\nimport { PullRequestSvg } from '../../common/Icons';\nimport { useRiScs } from '../../../contexts/RiScContext';\nimport { subtitle1 } from '../../common/typography';\n\ninterface RiScPublishDialogProps {\n openDialog: boolean;\n handleCancel: () => void;\n handlePublish: () => void;\n}\n\nconst RiScPublishDialog = ({\n openDialog,\n handleCancel,\n handlePublish,\n}: RiScPublishDialogProps): ReactComponentElement<any> => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const [riskOwnerApproves, setRiskOwnerApproves] = useState<boolean>(false);\n\n const handleCheckboxInput = (event: React.ChangeEvent<HTMLInputElement>) => {\n setRiskOwnerApproves(event.target.checked);\n };\n\n return (\n <Dialog open={openDialog}>\n <DialogTitle>{t('publishDialog.title')}</DialogTitle>\n <DialogContent>\n <Alert severity=\"info\" icon={false}>\n <FormControlLabel\n control={\n <Checkbox\n color=\"primary\"\n checked={riskOwnerApproves}\n onChange={handleCheckboxInput}\n />\n }\n label={t('publishDialog.checkboxLabel')}\n />\n </Alert>\n </DialogContent>\n <DialogActions sx={dialogActions}>\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={handlePublish}\n disabled={!riskOwnerApproves}\n >\n {t('dictionary.confirm')}\n </Button>\n <Button variant=\"outlined\" color=\"primary\" onClick={handleCancel}>\n {t('dictionary.cancel')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\ninterface RiScMigrationDialogProps {\n openDialog: boolean;\n handleCancel: () => void;\n handleUpdate: () => void;\n}\n\nconst RiScMigrationDialog = ({\n openDialog,\n handleCancel,\n handleUpdate,\n}: RiScMigrationDialogProps): ReactComponentElement<any> => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const [saveMigration, setSaveMigration] = useState<boolean>(false);\n\n const handleCheckboxInput = (event: React.ChangeEvent<HTMLInputElement>) => {\n setSaveMigration(event.target.checked);\n };\n\n return (\n <Dialog open={openDialog}>\n <DialogTitle>{t('migrationDialog.title')}</DialogTitle>\n <DialogContent>\n <Alert severity=\"info\" icon={false}>\n <FormControlLabel\n control={\n <Checkbox\n checked={saveMigration}\n onChange={handleCheckboxInput}\n />\n }\n label={t('migrationDialog.checkboxLabel')}\n />\n </Alert>\n </DialogContent>\n <DialogActions sx={dialogActions}>\n <Button\n variant=\"contained\"\n onClick={handleUpdate}\n disabled={!saveMigration}\n >\n {t('dictionary.confirm')}\n </Button>\n <Button variant=\"outlined\" color=\"primary\" onClick={handleCancel}>\n {t('dictionary.cancel')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nconst RosAcceptance = ({\n status,\n migration,\n}: {\n status: RiScStatus;\n migration?: boolean;\n}): React.JSX.Element => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n if (migration) {\n return (\n <Typography paragraph sx={subtitle1}>\n {t('rosStatus.statusBadge.migration')}\n </Typography>\n );\n }\n switch (status) {\n case RiScStatus.Draft:\n return (\n <Typography paragraph sx={subtitle1}>\n {t('rosStatus.statusBadge.missing')}\n </Typography>\n );\n case RiScStatus.SentForApproval:\n case RiScStatus.Published:\n return (\n <Typography paragraph sx={subtitle1}>\n <CheckIcon fontSize=\"medium\" sx={{ transform: 'translateY(5px)' }} />{' '}\n {t('rosStatus.statusBadge.approved')}\n </Typography>\n );\n default:\n return (\n <Typography paragraph sx={subtitle1}>\n {t('rosStatus.statusBadge.error')}\n </Typography>\n );\n }\n};\n\ninterface RiScStatusProps {\n selectedRiSc: RiScWithMetadata;\n publishRiScFn: () => void;\n}\n\nexport const RiScStatusComponent = ({\n selectedRiSc,\n publishRiScFn,\n}: RiScStatusProps) => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const [publishRiScDialogIsOpen, setPublishRiScDialogIsOpen] =\n useState<boolean>(false);\n\n const [migrationDialogIsOpen, setMigrationDialogIsOpen] =\n useState<boolean>(false);\n\n const { updateRiSc } = useRiScs();\n\n const handleApproveAndPublish = () => {\n publishRiScFn();\n setPublishRiScDialogIsOpen(false);\n };\n\n const handleUpdate = () => {\n updateRiSc(selectedRiSc.content);\n setMigrationDialogIsOpen(false);\n };\n\n return (\n <InfoCard>\n <Typography variant=\"h5\">Status</Typography>\n\n <RosAcceptance\n status={selectedRiSc.status}\n migration={selectedRiSc.migrationStatus?.migrationChanges}\n />\n {selectedRiSc.status === RiScStatus.SentForApproval &&\n !selectedRiSc.migrationStatus?.migrationChanges && (\n <Typography sx={{ fontWeight: 700 }} paragraph variant=\"subtitle1\">\n <PullRequestSvg />\n {t('rosStatus.prStatus')}\n <Link target=\"_blank\" href={selectedRiSc.pullRequestUrl}>\n Github\n </Link>\n </Typography>\n )}\n {selectedRiSc.status === RiScStatus.Draft &&\n !selectedRiSc.migrationStatus?.migrationChanges && (\n <Button\n color=\"primary\"\n variant=\"contained\"\n onClick={() => setPublishRiScDialogIsOpen(!publishRiScDialogIsOpen)}\n disabled={selectedRiSc.status !== RiScStatus.Draft}\n sx={{ display: 'block', marginLeft: 'auto' }}\n >\n {t('rosStatus.approveButton')}\n </Button>\n )}\n {selectedRiSc.migrationStatus?.migrationChanges && (\n <Button\n color=\"primary\"\n variant=\"contained\"\n onClick={() => setMigrationDialogIsOpen(!migrationDialogIsOpen)}\n sx={{ display: 'block', marginLeft: 'auto' }}\n >\n <Typography variant=\"button\">{t('rosStatus.saveButton')}</Typography>\n </Button>\n )}\n <RiScPublishDialog\n openDialog={publishRiScDialogIsOpen}\n handlePublish={handleApproveAndPublish}\n handleCancel={() => setPublishRiScDialogIsOpen(false)}\n />\n <RiScMigrationDialog\n openDialog={migrationDialogIsOpen}\n handleUpdate={handleUpdate}\n handleCancel={() => setMigrationDialogIsOpen(false)}\n />\n </InfoCard>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RiScPlugin.esm.js","sources":["../../../src/components/riScPlugin/RiScPlugin.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { ContentHeader, SupportButton } from '@backstage/core-components';\nimport { useSearchParams } from 'react-router-dom';\nimport { ScenarioWizard } from '../scenarioWizard/ScenarioWizard';\nimport { ScenarioDrawer } from '../scenarioDrawer/ScenarioDrawer';\nimport { RiskMatrix } from '../riskMatrix/RiskMatrix';\nimport { ScenarioTable } from '../scenarioTable/ScenarioTable';\nimport Alert from '@mui/material/Alert';\nimport Button from '@mui/material/Button';\nimport Grid from '@mui/material/Grid';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport Typography from '@mui/material/Typography';\nimport { getAlertSeverity } from '../../utils/utilityfunctions';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { RiScDialog, RiScDialogStates } from '../riScDialog/RiScDialog';\nimport { RiScInfo } from '../riScInfo/RiScInfo';\nimport AddCircle from '@mui/icons-material/AddCircle';\nimport { Spinner } from '../common/Spinner';\nimport { useRiScs } from '../../contexts/RiScContext';\nimport Select from '@mui/material/Select';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemText from '@mui/material/ListItemText';\nimport { ScenarioWizardSteps } from '../../contexts/ScenarioContext';\n\nexport const RiScPlugin = () => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const [riScDialogState, setRiScDialogState] = useState<RiScDialogStates>(\n RiScDialogStates.Closed,\n );\n\n const openCreateRiScDialog = () =>\n setRiScDialogState(RiScDialogStates.Create);\n const openEditRiScDialog = () => setRiScDialogState(RiScDialogStates.Edit);\n const closeRiScDialog = () => setRiScDialogState(RiScDialogStates.Closed);\n\n const {\n selectedRiSc,\n riScs,\n selectRiSc,\n isFetching,\n resetRiScStatus,\n response,\n riScUpdateStatus,\n } = useRiScs();\n\n const [searchParams] = useSearchParams();\n const scenarioWizardStep = searchParams.get(\n 'step',\n ) as ScenarioWizardSteps | null;\n\n useEffect(() => {\n if (scenarioWizardStep !== null) resetRiScStatus();\n }, [resetRiScStatus, scenarioWizardStep]);\n\n return (\n <>\n {response && (\n <Alert\n severity={getAlertSeverity(response.status)}\n sx={{ marginBottom: 2 }}\n >\n <Typography>{response.statusMessage}</Typography>\n </Alert>\n )}\n {riScUpdateStatus.isLoading && (\n <LinearProgress\n sx={{\n position: 'sticky',\n top: 0,\n margin: 2,\n }}\n />\n )}\n\n {scenarioWizardStep !== null ? (\n <ScenarioWizard step={scenarioWizardStep} />\n ) : (\n <>\n <ContentHeader title={t('contentHeader.title')}>\n <SupportButton />\n </ContentHeader>\n\n {isFetching && <Spinner size={80} />}\n\n <Grid container spacing={4}>\n {riScs !== null && riScs.length !== 0 && (\n <Grid\n item\n xs={12}\n sm={6}\n sx={{\n maxWidth: '600px',\n minWidth: '300px',\n }}\n >\n <Select\n variant=\"standard\"\n value={selectedRiSc?.content.title ?? ''}\n onChange={e => selectRiSc(e.target.value)}\n sx={{ width: '100%' }}\n >\n {riScs.map(riSc => (\n <MenuItem key={riSc.id} value={riSc.content.title}>\n <ListItemText primary={riSc.content.title} />\n </MenuItem>\n )) ?? []}\n </Select>\n </Grid>\n )}\n\n {!isFetching && (\n <Grid item xs>\n <Button\n startIcon={<AddCircle />}\n variant=\"text\"\n color=\"primary\"\n onClick={openCreateRiScDialog}\n sx={{\n minWidth: '205px',\n }}\n >\n {t('contentHeader.createNewButton')}\n </Button>\n </Grid>\n )}\n {selectedRiSc && (\n <>\n <Grid item xs={12}>\n <RiScInfo riSc={selectedRiSc} edit={openEditRiScDialog} />\n </Grid>\n <Grid item xs md={7} lg={8}>\n <ScenarioTable riSc={selectedRiSc.content} />\n </Grid>\n <Grid item xs md={5} lg={4}>\n <RiskMatrix riSc={selectedRiSc.content} />\n </Grid>\n </>\n )}\n </Grid>\n </>\n )}\n\n {riScDialogState !== RiScDialogStates.Closed && (\n <RiScDialog onClose={closeRiScDialog} dialogState={riScDialogState} />\n )}\n\n {!scenarioWizardStep && <ScenarioDrawer />}\n </>\n );\n};\n"],"names":["Select"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"RiScPlugin.esm.js","sources":["../../../src/components/riScPlugin/RiScPlugin.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { ContentHeader, SupportButton } from '@backstage/core-components';\nimport { useSearchParams } from 'react-router-dom';\nimport { ScenarioWizard } from '../scenarioWizard/ScenarioWizard';\nimport { ScenarioDrawer } from '../scenarioDrawer/ScenarioDrawer';\nimport { RiskMatrix } from '../riskMatrix/RiskMatrix';\nimport { ScenarioTable } from '../scenarioTable/ScenarioTable';\nimport Alert from '@mui/material/Alert';\nimport Button from '@mui/material/Button';\nimport Grid from '@mui/material/Grid';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport Typography from '@mui/material/Typography';\nimport { getAlertSeverity } from '../../utils/utilityfunctions';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { RiScDialog, RiScDialogStates } from '../riScDialog/RiScDialog';\nimport { RiScInfo } from '../riScInfo/RiScInfo';\nimport AddCircle from '@mui/icons-material/AddCircle';\nimport { Spinner } from '../common/Spinner';\nimport { useRiScs } from '../../contexts/RiScContext';\nimport Select from '@mui/material/Select';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemText from '@mui/material/ListItemText';\nimport { ScenarioWizardSteps } from '../../contexts/ScenarioContext';\n\nexport const RiScPlugin = () => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const [riScDialogState, setRiScDialogState] = useState<RiScDialogStates>(\n RiScDialogStates.Closed,\n );\n\n const openCreateRiScDialog = () =>\n setRiScDialogState(RiScDialogStates.Create);\n const openEditRiScDialog = () => setRiScDialogState(RiScDialogStates.Edit);\n const closeRiScDialog = () => setRiScDialogState(RiScDialogStates.Closed);\n\n const {\n selectedRiSc,\n riScs,\n selectRiSc,\n isFetching,\n resetRiScStatus,\n response,\n riScUpdateStatus,\n } = useRiScs();\n\n const [searchParams] = useSearchParams();\n const scenarioWizardStep = searchParams.get(\n 'step',\n ) as ScenarioWizardSteps | null;\n\n useEffect(() => {\n if (scenarioWizardStep !== null) resetRiScStatus();\n }, [resetRiScStatus, scenarioWizardStep]);\n\n return (\n <>\n {response && (\n <Alert\n severity={getAlertSeverity(response.status)}\n sx={{ marginBottom: 2 }}\n >\n <Typography>{response.statusMessage}</Typography>\n </Alert>\n )}\n {riScUpdateStatus.isLoading && (\n <LinearProgress\n sx={{\n position: 'sticky',\n top: 0,\n margin: 2,\n }}\n />\n )}\n\n {scenarioWizardStep !== null ? (\n <ScenarioWizard step={scenarioWizardStep} />\n ) : (\n <>\n <ContentHeader title={t('contentHeader.title')}>\n <SupportButton />\n </ContentHeader>\n\n {isFetching && <Spinner size={80} />}\n\n <Grid container spacing={4}>\n {riScs !== null && riScs.length !== 0 && (\n <Grid\n item\n xs={12}\n sm={6}\n sx={{\n maxWidth: '600px',\n minWidth: '300px',\n }}\n >\n <Select\n variant=\"standard\"\n value={selectedRiSc?.content.title ?? ''}\n onChange={e => selectRiSc(e.target.value)}\n sx={{ width: '100%' }}\n >\n {riScs.map(riSc => (\n <MenuItem key={riSc.id} value={riSc.content.title}>\n <ListItemText primary={riSc.content.title} />\n </MenuItem>\n )) ?? []}\n </Select>\n </Grid>\n )}\n\n {!isFetching && (\n <Grid item xs>\n <Button\n startIcon={<AddCircle />}\n variant=\"text\"\n color=\"primary\"\n onClick={openCreateRiScDialog}\n sx={{\n minWidth: '205px',\n }}\n >\n {t('contentHeader.createNewButton')}\n </Button>\n </Grid>\n )}\n\n {selectedRiSc && (\n <>\n <Grid item xs={12}>\n <RiScInfo riSc={selectedRiSc} edit={openEditRiScDialog} />\n </Grid>\n <Grid item xs md={7} lg={8}>\n <ScenarioTable riSc={selectedRiSc.content} />\n </Grid>\n <Grid item xs md={5} lg={4}>\n <RiskMatrix riSc={selectedRiSc.content} />\n </Grid>\n </>\n )}\n </Grid>\n </>\n )}\n\n {riScDialogState !== RiScDialogStates.Closed && (\n <RiScDialog onClose={closeRiScDialog} dialogState={riScDialogState} />\n )}\n\n {!scenarioWizardStep && <ScenarioDrawer />}\n </>\n );\n};\n"],"names":["Select"],"mappings":"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"}
|
|
@@ -24,10 +24,10 @@ const RiskMatrixScenarioCount = ({
|
|
|
24
24
|
tooltipText
|
|
25
25
|
} = useRiskMatrixStyles();
|
|
26
26
|
const [tooltipOpen, setTooltipOpen] = useState(false);
|
|
27
|
-
const {
|
|
27
|
+
const { openScenarioDrawer } = useScenario();
|
|
28
28
|
const handleScenarioClick = (ID) => {
|
|
29
29
|
setTooltipOpen(false);
|
|
30
|
-
|
|
30
|
+
openScenarioDrawer(ID);
|
|
31
31
|
};
|
|
32
32
|
const scenarios = riSc.scenarios.filter(
|
|
33
33
|
(scenario) => probabilityOptions.indexOf(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RiskMatrixScenarioCount.esm.js","sources":["../../../src/components/riskMatrix/RiskMatrixScenarioCount.tsx"],"sourcesContent":["import {\n ClickAwayListener,\n List,\n ListItem,\n ListItemText,\n ListSubheader,\n Paper,\n Tooltip,\n Typography,\n} from '@material-ui/core';\nimport React, { useState } from 'react';\nimport CircleIcon from '@material-ui/icons/FiberManualRecord';\nimport { consequenceOptions, probabilityOptions } from '../../utils/constants';\nimport { RiSc } from '../../utils/types';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { useRiskMatrixStyles } from './riskMatrixStyle';\nimport { useScenario } from '../../contexts/ScenarioContext';\n\ninterface ScenarioCountProps {\n riSc: RiSc;\n probability: number;\n consequence: number;\n initialRisk: boolean;\n}\n\nexport const RiskMatrixScenarioCount = ({\n riSc,\n probability,\n consequence,\n initialRisk,\n}: ScenarioCountProps) => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const {\n circle,\n centered,\n circleText,\n text,\n tooltip,\n tooltipArrow,\n tooltipText,\n } = useRiskMatrixStyles();\n\n const [tooltipOpen, setTooltipOpen] = useState(false);\n const {
|
|
1
|
+
{"version":3,"file":"RiskMatrixScenarioCount.esm.js","sources":["../../../src/components/riskMatrix/RiskMatrixScenarioCount.tsx"],"sourcesContent":["import {\n ClickAwayListener,\n List,\n ListItem,\n ListItemText,\n ListSubheader,\n Paper,\n Tooltip,\n Typography,\n} from '@material-ui/core';\nimport React, { useState } from 'react';\nimport CircleIcon from '@material-ui/icons/FiberManualRecord';\nimport { consequenceOptions, probabilityOptions } from '../../utils/constants';\nimport { RiSc } from '../../utils/types';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { useRiskMatrixStyles } from './riskMatrixStyle';\nimport { useScenario } from '../../contexts/ScenarioContext';\n\ninterface ScenarioCountProps {\n riSc: RiSc;\n probability: number;\n consequence: number;\n initialRisk: boolean;\n}\n\nexport const RiskMatrixScenarioCount = ({\n riSc,\n probability,\n consequence,\n initialRisk,\n}: ScenarioCountProps) => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const {\n circle,\n centered,\n circleText,\n text,\n tooltip,\n tooltipArrow,\n tooltipText,\n } = useRiskMatrixStyles();\n\n const [tooltipOpen, setTooltipOpen] = useState(false);\n const { openScenarioDrawer } = useScenario();\n\n const handleScenarioClick = (ID: string) => {\n setTooltipOpen(false);\n openScenarioDrawer(ID);\n };\n\n const scenarios = riSc.scenarios.filter(\n scenario =>\n probabilityOptions.indexOf(\n initialRisk\n ? scenario.risk.probability\n : scenario.remainingRisk.probability,\n ) === probability &&\n consequenceOptions.indexOf(\n initialRisk\n ? scenario.risk.consequence\n : scenario.remainingRisk.consequence,\n ) === consequence,\n );\n\n if (scenarios.length === 0) {\n return null;\n }\n\n const tooltipList = (\n <List dense>\n <ListSubheader className={tooltipText}>\n <Typography variant=\"h6\" className={tooltipText}>\n {t('riskMatrix.tooltip.title')}\n </Typography>\n </ListSubheader>\n {scenarios.map(s => (\n <ListItem\n key={s.ID}\n button\n disableGutters\n className={tooltipText}\n onClick={() => {\n handleScenarioClick(s.ID);\n }}\n >\n <CircleIcon className={tooltipText} style={{ width: '10px' }} />\n <ListItemText\n className={tooltipText}\n style={{ paddingLeft: '0.6rem' }}\n >\n <span>{s.title}</span>\n </ListItemText>\n </ListItem>\n ))}\n </List>\n );\n\n return (\n <ClickAwayListener onClickAway={() => setTooltipOpen(false)}>\n <Tooltip\n interactive\n classes={{ tooltip: tooltip, arrow: tooltipArrow }}\n title={tooltipList}\n placement=\"right\"\n arrow\n open={tooltipOpen}\n >\n <Paper\n className={`${circle} ${centered}`}\n elevation={10}\n onClick={() => setTooltipOpen(!tooltipOpen)}\n >\n <Typography className={`${circleText} ${text}`}>\n {scenarios.length}\n </Typography>\n </Paper>\n </Tooltip>\n </ClickAwayListener>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -27,10 +27,10 @@ const ScenarioDrawer = () => {
|
|
|
27
27
|
const {
|
|
28
28
|
scenario,
|
|
29
29
|
isDrawerOpen,
|
|
30
|
-
|
|
31
|
-
closeScenario,
|
|
30
|
+
closeScenarioForm,
|
|
32
31
|
submitEditedScenarioToRiSc
|
|
33
32
|
} = useScenario();
|
|
33
|
+
const [deleteConfirmationIsOpen, setDeleteConfirmationIsOpen] = useState(false);
|
|
34
34
|
const { riScUpdateStatus, response } = useRiScs();
|
|
35
35
|
const formMethods = useForm({
|
|
36
36
|
defaultValues: scenario,
|
|
@@ -41,7 +41,7 @@ const ScenarioDrawer = () => {
|
|
|
41
41
|
setIsEditing(false);
|
|
42
42
|
};
|
|
43
43
|
const onClose = () => {
|
|
44
|
-
|
|
44
|
+
closeScenarioForm();
|
|
45
45
|
setIsEditing(false);
|
|
46
46
|
};
|
|
47
47
|
const onSubmit = formMethods.handleSubmit((data) => {
|
|
@@ -130,14 +130,20 @@ const ScenarioDrawer = () => {
|
|
|
130
130
|
startIcon: /* @__PURE__ */ React.createElement(DeleteIcon, null),
|
|
131
131
|
variant: "text",
|
|
132
132
|
color: "primary",
|
|
133
|
-
onClick:
|
|
133
|
+
onClick: () => setDeleteConfirmationIsOpen(true),
|
|
134
134
|
sx: { marginLeft: "auto" }
|
|
135
135
|
},
|
|
136
136
|
t("scenarioDrawer.deleteScenarioButton")
|
|
137
137
|
)
|
|
138
138
|
),
|
|
139
139
|
response && response.status !== ProcessingStatus.ErrorWhenFetchingRiScs && /* @__PURE__ */ React.createElement(Alert, { severity: getAlertSeverity(response.status) }, /* @__PURE__ */ React.createElement(Typography, null, response.statusMessage)),
|
|
140
|
-
/* @__PURE__ */ React.createElement(
|
|
140
|
+
/* @__PURE__ */ React.createElement(
|
|
141
|
+
DeleteConfirmation,
|
|
142
|
+
{
|
|
143
|
+
deleteConfirmationIsOpen,
|
|
144
|
+
setDeleteConfirmationIsOpen
|
|
145
|
+
}
|
|
146
|
+
)
|
|
141
147
|
);
|
|
142
148
|
};
|
|
143
149
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScenarioDrawer.esm.js","sources":["../../../src/components/scenarioDrawer/ScenarioDrawer.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport Box from '@mui/material/Box';\nimport { useScenario } from '../../contexts/ScenarioContext';\nimport { RiskSection } from './components/RiskSection';\nimport { ActionsSection } from './components/ActionsSection';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { DeleteConfirmation } from './components/DeleteConfirmation';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { ScopeSection } from './components/ScopeSection';\nimport { useForm } from 'react-hook-form';\nimport { ProcessingStatus, Scenario } from '../../utils/types';\nimport RiskFormSection from './components/RiskFormSection';\nimport ActionFormSection from './components/ActionFormSection';\nimport ScopeFormSection from './components/ScopeFormSection';\nimport Drawer from '@mui/material/Drawer';\nimport Button from '@mui/material/Button';\nimport { useRiScs } from '../../contexts/RiScContext';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Alert from '@mui/material/Alert';\nimport { getAlertSeverity } from '../../utils/utilityfunctions';\nimport Typography from '@mui/material/Typography';\n\nexport const ScenarioDrawer = () => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const [isEditing, setIsEditing] = useState(false);\n const {\n scenario,\n isDrawerOpen,\n
|
|
1
|
+
{"version":3,"file":"ScenarioDrawer.esm.js","sources":["../../../src/components/scenarioDrawer/ScenarioDrawer.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport Box from '@mui/material/Box';\nimport { useScenario } from '../../contexts/ScenarioContext';\nimport { RiskSection } from './components/RiskSection';\nimport { ActionsSection } from './components/ActionsSection';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { DeleteConfirmation } from './components/DeleteConfirmation';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { ScopeSection } from './components/ScopeSection';\nimport { useForm } from 'react-hook-form';\nimport { ProcessingStatus, Scenario } from '../../utils/types';\nimport RiskFormSection from './components/RiskFormSection';\nimport ActionFormSection from './components/ActionFormSection';\nimport ScopeFormSection from './components/ScopeFormSection';\nimport Drawer from '@mui/material/Drawer';\nimport Button from '@mui/material/Button';\nimport { useRiScs } from '../../contexts/RiScContext';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Alert from '@mui/material/Alert';\nimport { getAlertSeverity } from '../../utils/utilityfunctions';\nimport Typography from '@mui/material/Typography';\n\nexport const ScenarioDrawer = () => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const [isEditing, setIsEditing] = useState(false);\n const {\n scenario,\n isDrawerOpen,\n closeScenarioForm,\n submitEditedScenarioToRiSc,\n } = useScenario();\n\n const [deleteConfirmationIsOpen, setDeleteConfirmationIsOpen] =\n useState(false);\n\n const { riScUpdateStatus, response } = useRiScs();\n\n const formMethods = useForm<Scenario>({\n defaultValues: scenario,\n mode: 'onBlur',\n });\n\n const onCancel = () => {\n formMethods.reset(scenario);\n setIsEditing(false);\n };\n\n const onClose = () => {\n closeScenarioForm();\n setIsEditing(false);\n };\n\n const onSubmit = formMethods.handleSubmit((data: Scenario) => {\n submitEditedScenarioToRiSc(data, () => setIsEditing(false));\n });\n\n useEffect(() => {\n formMethods.reset(scenario);\n }, [scenario, formMethods]);\n\n return (\n <Drawer\n PaperProps={{\n sx: theme => ({\n padding: theme.spacing(4),\n width: '50%',\n gap: theme.spacing(3),\n [theme.breakpoints.down('sm')]: {\n width: '90%',\n padding: theme.spacing(2),\n },\n backgroundColor:\n theme.palette.mode === 'dark' ? '#333333' : '#f8f8f8',\n }),\n }}\n variant=\"temporary\"\n anchor=\"right\"\n open={isDrawerOpen}\n onClose={onClose}\n >\n <Box\n sx={{\n display: 'flex',\n gap: '16px',\n marginLeft: 'auto',\n }}\n >\n {!isEditing && (\n <Button\n color=\"primary\"\n variant=\"contained\"\n onClick={() => setIsEditing(true)}\n >\n {t('dictionary.edit')}\n </Button>\n )}\n <Button\n variant=\"outlined\"\n color=\"primary\"\n onClick={isEditing ? onCancel : onClose}\n >\n {t(isEditing ? 'dictionary.cancel' : 'dictionary.close')}\n </Button>\n </Box>\n\n {isEditing ? (\n <>\n <ScopeFormSection formMethods={formMethods} />\n <RiskFormSection formMethods={formMethods} />\n <ActionFormSection formMethods={formMethods} />\n </>\n ) : (\n <>\n <ScopeSection />\n <RiskSection />\n <ActionsSection />\n </>\n )}\n <Box\n sx={{\n display: 'flex',\n gap: '16px',\n }}\n >\n {isEditing && (\n <Button\n color=\"primary\"\n variant=\"contained\"\n onClick={onSubmit}\n disabled={\n !formMethods.formState.isDirty || riScUpdateStatus.isLoading\n }\n >\n {t('dictionary.save')}\n {riScUpdateStatus.isLoading && (\n <CircularProgress\n size={16}\n sx={{ marginLeft: 1, color: 'inherit' }}\n />\n )}\n </Button>\n )}\n <Button\n startIcon={<DeleteIcon />}\n variant=\"text\"\n color=\"primary\"\n onClick={() => setDeleteConfirmationIsOpen(true)}\n sx={{ marginLeft: 'auto' }}\n >\n {t('scenarioDrawer.deleteScenarioButton')}\n </Button>\n </Box>\n\n {response &&\n response.status !== ProcessingStatus.ErrorWhenFetchingRiScs && (\n <Alert severity={getAlertSeverity(response.status)}>\n <Typography>{response.statusMessage}</Typography>\n </Alert>\n )}\n\n <DeleteConfirmation\n deleteConfirmationIsOpen={deleteConfirmationIsOpen}\n setDeleteConfirmationIsOpen={setDeleteConfirmationIsOpen}\n />\n </Drawer>\n );\n};\n"],"names":["RiskFormSection"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useState
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
2
|
import { pluginRiScTranslationRef } from '../../../utils/translations.esm.js';
|
|
3
3
|
import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
|
|
4
4
|
import Chip from '@mui/material/Chip';
|
|
@@ -10,16 +10,9 @@ import Button from '@mui/material/Button';
|
|
|
10
10
|
import Collapse from '@mui/material/Collapse';
|
|
11
11
|
import { ExpandLess, ExpandMore } from '@mui/icons-material';
|
|
12
12
|
|
|
13
|
-
const ActionBox = ({ action, index
|
|
13
|
+
const ActionBox = ({ action, index }) => {
|
|
14
14
|
const { t } = useTranslationRef(pluginRiScTranslationRef);
|
|
15
|
-
const [previousAction, setPreviousAction] = useState(action);
|
|
16
15
|
const [isExpanded, setIsExpanded] = useState(false);
|
|
17
|
-
useEffect(() => {
|
|
18
|
-
if (previousAction !== action) {
|
|
19
|
-
saveScenario();
|
|
20
|
-
setPreviousAction(action);
|
|
21
|
-
}
|
|
22
|
-
}, [action, saveScenario, previousAction]);
|
|
23
16
|
const isActionTitlePresent = action.title !== null && action.title !== "";
|
|
24
17
|
const translatedActionStatus = t(`actionStatus.${action.status}`);
|
|
25
18
|
return /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionBox.esm.js","sources":["../../../../src/components/scenarioDrawer/components/ActionBox.tsx"],"sourcesContent":["import React, {
|
|
1
|
+
{"version":3,"file":"ActionBox.esm.js","sources":["../../../../src/components/scenarioDrawer/components/ActionBox.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Action } from '../../../utils/types';\nimport { pluginRiScTranslationRef } from '../../../utils/translations';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport Chip from '@mui/material/Chip';\nimport Box from '@mui/material/Box';\nimport Link from '@mui/material/Link';\nimport Typography from '@mui/material/Typography';\nimport { body2, emptyState, label } from '../../common/typography';\nimport Button from '@mui/material/Button';\nimport Collapse from '@mui/material/Collapse';\nimport { ExpandLess, ExpandMore } from '@mui/icons-material';\n\ninterface ActionBoxProps {\n action: Action;\n index: number;\n}\n\nexport const ActionBox = ({ action, index }: ActionBoxProps) => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const [isExpanded, setIsExpanded] = useState<boolean>(false);\n\n const isActionTitlePresent = action.title !== null && action.title !== '';\n\n /* @ts-ignore Because ts can't typecheck strings against our keys */\n const translatedActionStatus = t(`actionStatus.${action.status}`);\n\n return (\n <Box>\n <Button\n sx={{\n width: '100%',\n fontSize: '16px',\n color: 'inherit',\n textAlign: 'left',\n justifyContent: 'start',\n textTransform: 'initial',\n }}\n startIcon={isExpanded ? <ExpandLess /> : <ExpandMore />}\n onClick={() => setIsExpanded(!isExpanded)}\n variant=\"text\"\n >\n {isActionTitlePresent\n ? action.title\n : `${t('dictionary.measure')} ${index}`}\n </Button>\n <Collapse in={isExpanded}>\n <Typography sx={{ ...label, marginTop: 1 }}>\n {t('dictionary.description')}\n </Typography>\n <Typography sx={body2}>{action.description}</Typography>\n\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'end',\n marginTop: '16px',\n }}\n >\n <Box>\n <Typography sx={label}>{t('dictionary.url')}</Typography>\n {action.url ? (\n <Link\n sx={body2}\n target=\"_blank\"\n rel=\"noreferrer\"\n href={\n action.url.startsWith('http') ? action.url : `//${action.url}`\n }\n >\n {action.url}\n </Link>\n ) : (\n <Typography sx={emptyState}>\n {t('dictionary.emptyField', {\n field: t('dictionary.url').toLowerCase(),\n })}\n </Typography>\n )}\n </Box>\n\n <Chip\n label={translatedActionStatus}\n sx={{\n margin: 0,\n backgroundColor:\n action.status === 'Completed'\n ? { backgroundColor: '#6BC6A4' }\n : undefined,\n }}\n />\n </Box>\n </Collapse>\n </Box>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { useFieldArray } from 'react-hook-form';
|
|
|
3
3
|
import { pluginRiScTranslationRef } from '../../../utils/translations.esm.js';
|
|
4
4
|
import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
|
|
5
5
|
import { Input } from '../../common/Input.esm.js';
|
|
6
|
-
import { actionStatusOptions } from '../../../utils/constants.esm.js';
|
|
6
|
+
import { actionStatusOptions, urlRegExpPattern } from '../../../utils/constants.esm.js';
|
|
7
7
|
import { Select } from '../../common/Select.esm.js';
|
|
8
8
|
import Box from '@mui/material/Box';
|
|
9
9
|
import Typography from '@mui/material/Typography';
|
|
@@ -85,7 +85,7 @@ const ActionFormSection = ({
|
|
|
85
85
|
{
|
|
86
86
|
...register(`actions.${index}.url`, {
|
|
87
87
|
pattern: {
|
|
88
|
-
value:
|
|
88
|
+
value: urlRegExpPattern,
|
|
89
89
|
message: t("scenarioDrawer.action.urlError")
|
|
90
90
|
}
|
|
91
91
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionFormSection.esm.js","sources":["../../../../src/components/scenarioDrawer/components/ActionFormSection.tsx"],"sourcesContent":["import React, { Fragment } from 'react';\nimport { useFieldArray, UseFormReturn } from 'react-hook-form';\nimport { Scenario } from '../../../utils/types';\nimport { pluginRiScTranslationRef } from '../../../utils/translations';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { Input } from '../../common/Input';\nimport {
|
|
1
|
+
{"version":3,"file":"ActionFormSection.esm.js","sources":["../../../../src/components/scenarioDrawer/components/ActionFormSection.tsx"],"sourcesContent":["import React, { Fragment } from 'react';\nimport { useFieldArray, UseFormReturn } from 'react-hook-form';\nimport { Scenario } from '../../../utils/types';\nimport { pluginRiScTranslationRef } from '../../../utils/translations';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { Input } from '../../common/Input';\nimport {\n actionStatusOptions,\n urlRegExpPattern,\n} from '../../../utils/constants';\nimport { Select } from '../../common/Select';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport { heading3 } from '../../common/typography';\nimport { AddCircle } from '@mui/icons-material';\nimport Divider from '@mui/material/Divider';\nimport Button from '@mui/material/Button';\nimport { emptyAction } from '../../../contexts/ScenarioContext';\nimport IconButton from '@mui/material/IconButton';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { section } from '../scenarioDrawerComponents';\nimport Paper from '@mui/material/Paper';\n\nconst ActionFormSection = ({\n formMethods,\n}: {\n formMethods: UseFormReturn<Scenario>;\n}) => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const { control, register, formState } = formMethods;\n const { fields, append, remove } = useFieldArray({\n control,\n name: 'actions',\n rules: {\n required: true,\n },\n });\n\n const translatedActionStatuses = actionStatusOptions.map(actionStatus => ({\n value: actionStatus,\n /* @ts-ignore Because ts can't typecheck strings against our keys */\n renderedValue: t(`actionStatus.${actionStatus}`),\n }));\n\n return (\n <Paper sx={section}>\n <Typography sx={heading3}>{t('dictionary.measure')}</Typography>\n {fields.map((field, index) => (\n <Fragment key={field.ID}>\n <Divider variant=\"fullWidth\" />\n <Box\n sx={{\n display: 'grid',\n gap: '24px',\n padding: 0,\n }}\n >\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n }}\n >\n <Typography sx={heading3}>\n {t('dictionary.measure')} {index + 1}\n </Typography>\n <IconButton onClick={() => remove(index)} color=\"primary\">\n <DeleteIcon aria-label=\"Edit\" />\n </IconButton>\n </Box>\n <Input\n {...register(`actions.${index}.title`)}\n label={t('dictionary.title')}\n />\n <Input\n required\n {...register(`actions.${index}.description`, { required: true })}\n error={\n formState.errors?.actions?.[index]?.description !== undefined\n }\n label={t('dictionary.description')}\n />\n <Box\n sx={{\n display: 'grid',\n gridTemplateColumns: '2fr 1fr',\n gap: '24px',\n }}\n >\n <Input\n {...register(`actions.${index}.url`, {\n pattern: {\n value: urlRegExpPattern,\n message: t('scenarioDrawer.action.urlError'),\n },\n })}\n label={t('dictionary.url')}\n helperText={formState.errors.actions?.[index]?.url?.message}\n error={!!formState.errors.actions?.[index]?.url?.message}\n />\n <Select<Scenario>\n required\n control={control}\n name={`actions.${index}.status`}\n label={t('dictionary.status')}\n options={translatedActionStatuses}\n />\n </Box>\n </Box>\n </Fragment>\n ))}\n <Button\n startIcon={<AddCircle />}\n color=\"primary\"\n onClick={() => append(emptyAction())}\n >\n {t('scenarioDrawer.measureTab.addMeasureButton')}\n </Button>\n </Paper>\n );\n};\n\nexport default ActionFormSection;\n"],"names":[],"mappings":"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"}
|
|
@@ -11,15 +11,8 @@ import Divider from '@mui/material/Divider';
|
|
|
11
11
|
|
|
12
12
|
const ActionsSection = () => {
|
|
13
13
|
const { t } = useTranslationRef(pluginRiScTranslationRef);
|
|
14
|
-
const { scenario
|
|
15
|
-
return /* @__PURE__ */ React.createElement(Paper, { sx: section }, /* @__PURE__ */ React.createElement(Typography, { sx: heading3 }, t("dictionary.measure")), scenario.actions.length > 0 ? scenario.actions.map((action, index) => /* @__PURE__ */ React.createElement(Fragment, { key: action.ID }, /* @__PURE__ */ React.createElement(Divider, null), /* @__PURE__ */ React.createElement(
|
|
16
|
-
ActionBox,
|
|
17
|
-
{
|
|
18
|
-
action,
|
|
19
|
-
index: index + 1,
|
|
20
|
-
saveScenario
|
|
21
|
-
}
|
|
22
|
-
))) : /* @__PURE__ */ React.createElement(Typography, { sx: emptyState }, t("dictionary.emptyField", {
|
|
14
|
+
const { scenario } = useScenario();
|
|
15
|
+
return /* @__PURE__ */ React.createElement(Paper, { sx: section }, /* @__PURE__ */ React.createElement(Typography, { sx: heading3 }, t("dictionary.measure")), scenario.actions.length > 0 ? scenario.actions.map((action, index) => /* @__PURE__ */ React.createElement(Fragment, { key: action.ID }, /* @__PURE__ */ React.createElement(Divider, null), /* @__PURE__ */ React.createElement(ActionBox, { action, index: index + 1 }))) : /* @__PURE__ */ React.createElement(Typography, { sx: emptyState }, t("dictionary.emptyField", {
|
|
23
16
|
field: t("dictionary.measures").toLowerCase()
|
|
24
17
|
})));
|
|
25
18
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionsSection.esm.js","sources":["../../../../src/components/scenarioDrawer/components/ActionsSection.tsx"],"sourcesContent":["import { ActionBox } from './ActionBox';\nimport React, { Fragment } from 'react';\nimport Paper from '@mui/material/Paper';\nimport Typography from '@mui/material/Typography';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../../utils/translations';\nimport { useScenario } from '../../../contexts/ScenarioContext';\nimport { section } from '../scenarioDrawerComponents';\nimport { emptyState, heading3 } from '../../common/typography';\nimport Divider from '@mui/material/Divider';\n\nexport const ActionsSection = () => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const { scenario
|
|
1
|
+
{"version":3,"file":"ActionsSection.esm.js","sources":["../../../../src/components/scenarioDrawer/components/ActionsSection.tsx"],"sourcesContent":["import { ActionBox } from './ActionBox';\nimport React, { Fragment } from 'react';\nimport Paper from '@mui/material/Paper';\nimport Typography from '@mui/material/Typography';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../../utils/translations';\nimport { useScenario } from '../../../contexts/ScenarioContext';\nimport { section } from '../scenarioDrawerComponents';\nimport { emptyState, heading3 } from '../../common/typography';\nimport Divider from '@mui/material/Divider';\n\nexport const ActionsSection = () => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const { scenario } = useScenario();\n\n return (\n <Paper sx={section}>\n <Typography sx={heading3}>{t('dictionary.measure')}</Typography>\n\n {scenario.actions.length > 0 ? (\n scenario.actions.map((action, index) => (\n <Fragment key={action.ID}>\n <Divider />\n <ActionBox action={action} index={index + 1} />\n </Fragment>\n ))\n ) : (\n <Typography sx={emptyState}>\n {t('dictionary.emptyField', {\n field: t('dictionary.measures').toLowerCase(),\n })}\n </Typography>\n )}\n </Paper>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;AAWO,MAAM,iBAAiB,MAAM;AAClC,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,wBAAwB,CAAA,CAAA;AACxD,EAAM,MAAA,EAAE,QAAS,EAAA,GAAI,WAAY,EAAA,CAAA;AAEjC,EACE,uBAAA,KAAA,CAAA,aAAA,CAAC,SAAM,EAAI,EAAA,OAAA,EAAA,sCACR,UAAW,EAAA,EAAA,EAAA,EAAI,YAAW,CAAE,CAAA,oBAAoB,CAAE,CAElD,EAAA,QAAA,CAAS,QAAQ,MAAS,GAAA,CAAA,GACzB,SAAS,OAAQ,CAAA,GAAA,CAAI,CAAC,MAAQ,EAAA,KAAA,yCAC3B,QAAS,EAAA,EAAA,GAAA,EAAK,OAAO,EACpB,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,aAAQ,CACT,kBAAA,KAAA,CAAA,aAAA,CAAC,aAAU,MAAgB,EAAA,KAAA,EAAO,QAAQ,CAAG,EAAA,CAC/C,CACD,CAED,mBAAA,KAAA,CAAA,aAAA,CAAC,cAAW,EAAI,EAAA,UAAA,EAAA,EACb,EAAE,uBAAyB,EAAA;AAAA,IAC1B,KAAO,EAAA,CAAA,CAAE,qBAAqB,CAAA,CAAE,WAAY,EAAA;AAAA,GAC7C,CACH,CAEJ,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -2,16 +2,31 @@ import Button from '@mui/material/Button';
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { pluginRiScTranslationRef } from '../../../utils/translations.esm.js';
|
|
4
4
|
import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
|
|
5
|
-
import { useScenario } from '../../../contexts/ScenarioContext.esm.js';
|
|
6
5
|
import Dialog from '@mui/material/Dialog';
|
|
7
6
|
import DialogTitle from '@mui/material/DialogTitle';
|
|
8
7
|
import DialogActions from '@mui/material/DialogActions';
|
|
9
8
|
import { dialogActions } from '../../common/mixins.esm.js';
|
|
9
|
+
import { useScenario } from '../../../contexts/ScenarioContext.esm.js';
|
|
10
|
+
import { useRiScs } from '../../../contexts/RiScContext.esm.js';
|
|
10
11
|
|
|
11
|
-
const DeleteConfirmation = (
|
|
12
|
+
const DeleteConfirmation = ({
|
|
13
|
+
deleteConfirmationIsOpen,
|
|
14
|
+
setDeleteConfirmationIsOpen
|
|
15
|
+
}) => {
|
|
12
16
|
const { t } = useTranslationRef(pluginRiScTranslationRef);
|
|
13
|
-
const {
|
|
14
|
-
|
|
17
|
+
const { selectedRiSc: riSc, updateRiSc } = useRiScs();
|
|
18
|
+
const { scenario, closeScenarioForm } = useScenario();
|
|
19
|
+
const confirmDeletion = () => {
|
|
20
|
+
if (riSc) {
|
|
21
|
+
setDeleteConfirmationIsOpen(false);
|
|
22
|
+
closeScenarioForm();
|
|
23
|
+
const updatedScenarios = riSc.content.scenarios.filter(
|
|
24
|
+
(s) => s.ID !== scenario.ID
|
|
25
|
+
);
|
|
26
|
+
updateRiSc({ ...riSc.content, scenarios: updatedScenarios });
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
return /* @__PURE__ */ React.createElement(Dialog, { open: deleteConfirmationIsOpen }, /* @__PURE__ */ React.createElement(DialogTitle, null, t("scenarioDrawer.deleteScenarioConfirmation")), /* @__PURE__ */ React.createElement(DialogActions, { sx: dialogActions }, /* @__PURE__ */ React.createElement(Button, { onClick: () => setDeleteConfirmationIsOpen(false) }, t("dictionary.cancel")), /* @__PURE__ */ React.createElement(Button, { onClick: confirmDeletion, variant: "contained", color: "error" }, t("scenarioDrawer.deleteScenarioButton"))));
|
|
15
30
|
};
|
|
16
31
|
|
|
17
32
|
export { DeleteConfirmation };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeleteConfirmation.esm.js","sources":["../../../../src/components/scenarioDrawer/components/DeleteConfirmation.tsx"],"sourcesContent":["import Button from '@mui/material/Button';\nimport React from 'react';\nimport { pluginRiScTranslationRef } from '../../../utils/translations';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport
|
|
1
|
+
{"version":3,"file":"DeleteConfirmation.esm.js","sources":["../../../../src/components/scenarioDrawer/components/DeleteConfirmation.tsx"],"sourcesContent":["import Button from '@mui/material/Button';\nimport React from 'react';\nimport { pluginRiScTranslationRef } from '../../../utils/translations';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport Dialog from '@mui/material/Dialog';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogActions from '@mui/material/DialogActions';\nimport { dialogActions } from '../../common/mixins';\nimport { useScenario } from '../../../contexts/ScenarioContext';\nimport { useRiScs } from '../../../contexts/RiScContext';\n\nexport const DeleteConfirmation = ({\n deleteConfirmationIsOpen,\n setDeleteConfirmationIsOpen,\n}: {\n deleteConfirmationIsOpen: boolean;\n setDeleteConfirmationIsOpen: (deleteConfirmationIsOpen: boolean) => void;\n}) => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const { selectedRiSc: riSc, updateRiSc } = useRiScs();\n const { scenario, closeScenarioForm } = useScenario();\n\n const confirmDeletion = () => {\n if (riSc) {\n setDeleteConfirmationIsOpen(false);\n closeScenarioForm();\n const updatedScenarios = riSc.content.scenarios.filter(\n s => s.ID !== scenario.ID,\n );\n updateRiSc({ ...riSc.content, scenarios: updatedScenarios });\n }\n };\n\n return (\n <Dialog open={deleteConfirmationIsOpen}>\n <DialogTitle>\n {t('scenarioDrawer.deleteScenarioConfirmation')}\n </DialogTitle>\n <DialogActions sx={dialogActions}>\n <Button onClick={() => setDeleteConfirmationIsOpen(false)}>\n {t('dictionary.cancel')}\n </Button>\n <Button onClick={confirmDeletion} variant=\"contained\" color=\"error\">\n {t('scenarioDrawer.deleteScenarioButton')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;AAWO,MAAM,qBAAqB,CAAC;AAAA,EACjC,wBAAA;AAAA,EACA,2BAAA;AACF,CAGM,KAAA;AACJ,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,wBAAwB,CAAA,CAAA;AACxD,EAAA,MAAM,EAAE,YAAA,EAAc,IAAM,EAAA,UAAA,KAAe,QAAS,EAAA,CAAA;AACpD,EAAA,MAAM,EAAE,QAAA,EAAU,iBAAkB,EAAA,GAAI,WAAY,EAAA,CAAA;AAEpD,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAA,IAAI,IAAM,EAAA;AACR,MAAA,2BAAA,CAA4B,KAAK,CAAA,CAAA;AACjC,MAAkB,iBAAA,EAAA,CAAA;AAClB,MAAM,MAAA,gBAAA,GAAmB,IAAK,CAAA,OAAA,CAAQ,SAAU,CAAA,MAAA;AAAA,QAC9C,CAAA,CAAA,KAAK,CAAE,CAAA,EAAA,KAAO,QAAS,CAAA,EAAA;AAAA,OACzB,CAAA;AACA,MAAA,UAAA,CAAW,EAAE,GAAG,IAAA,CAAK,OAAS,EAAA,SAAA,EAAW,kBAAkB,CAAA,CAAA;AAAA,KAC7D;AAAA,GACF,CAAA;AAEA,EAAA,2CACG,MAAO,EAAA,EAAA,IAAA,EAAM,wBACZ,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,mBACE,CAAE,CAAA,2CAA2C,CAChD,CAAA,sCACC,aAAc,EAAA,EAAA,EAAA,EAAI,aACjB,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,UAAO,OAAS,EAAA,MAAM,2BAA4B,CAAA,KAAK,KACrD,CAAE,CAAA,mBAAmB,CACxB,CAAA,sCACC,MAAO,EAAA,EAAA,OAAA,EAAS,eAAiB,EAAA,OAAA,EAAQ,aAAY,KAAM,EAAA,OAAA,EAAA,EACzD,EAAE,qCAAqC,CAC1C,CACF,CACF,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -19,7 +19,7 @@ const ScenarioTable = ({ riSc }) => {
|
|
|
19
19
|
const { t } = useTranslationRef(pluginRiScTranslationRef);
|
|
20
20
|
const { label } = useFontStyles();
|
|
21
21
|
const { titleBox, rowBorder, tableCell, tableCellTitle } = useTableStyles();
|
|
22
|
-
const {
|
|
22
|
+
const { openNewScenarioWizard, openScenarioDrawer } = useScenario();
|
|
23
23
|
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Paper, null, /* @__PURE__ */ React.createElement(Box, { className: titleBox }, /* @__PURE__ */ React.createElement(Typography, { variant: "h5", style: { padding: "1rem", marginBottom: 0 } }, t("scenarioTable.title")), riSc.scenarios.length > 0 && /* @__PURE__ */ React.createElement(
|
|
24
24
|
Box,
|
|
25
25
|
{
|
|
@@ -36,7 +36,7 @@ const ScenarioTable = ({ riSc }) => {
|
|
|
36
36
|
startIcon: /* @__PURE__ */ React.createElement(AddCircle, null),
|
|
37
37
|
variant: "text",
|
|
38
38
|
color: "primary",
|
|
39
|
-
onClick:
|
|
39
|
+
onClick: openNewScenarioWizard
|
|
40
40
|
},
|
|
41
41
|
t("scenarioTable.addScenarioButton")
|
|
42
42
|
)
|
|
@@ -55,7 +55,7 @@ const ScenarioTable = ({ riSc }) => {
|
|
|
55
55
|
startIcon: /* @__PURE__ */ React.createElement(AddCircleOutlineIcon, null),
|
|
56
56
|
variant: "contained",
|
|
57
57
|
color: "primary",
|
|
58
|
-
onClick:
|
|
58
|
+
onClick: openNewScenarioWizard,
|
|
59
59
|
style: {
|
|
60
60
|
display: "flex",
|
|
61
61
|
padding: "0.5rem 1rem 0.5rem 1rem",
|
|
@@ -69,7 +69,7 @@ const ScenarioTable = ({ riSc }) => {
|
|
|
69
69
|
{
|
|
70
70
|
key: scenario.ID,
|
|
71
71
|
scenario,
|
|
72
|
-
viewRow:
|
|
72
|
+
viewRow: openScenarioDrawer,
|
|
73
73
|
isLastRow: idx === riSc.scenarios.length - 1
|
|
74
74
|
}
|
|
75
75
|
)))))));
|