From 8163a9796566fb685fe194bde4858f7523b3b080 Mon Sep 17 00:00:00 2001 From: Mohamed-Hacene Date: Fri, 20 Dec 2024 12:55:05 +0100 Subject: [PATCH 01/14] feat: filter selected feared events in ro-to form --- backend/ebios_rm/views.py | 2 +- frontend/src/lib/utils/crud.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/ebios_rm/views.py b/backend/ebios_rm/views.py index 871119cd0..c1684c5b0 100644 --- a/backend/ebios_rm/views.py +++ b/backend/ebios_rm/views.py @@ -88,7 +88,7 @@ def update_workshop_step_status(self, request, pk, workshop, step): class FearedEventViewSet(BaseModelViewSet): model = FearedEvent - filterset_fields = ["ebios_rm_study", "ro_to_couples"] + filterset_fields = ["ebios_rm_study", "ro_to_couples", "is_selected"] @action(detail=True, name="Get risk matrix", url_path="risk-matrix") def risk_matrix(self, request, pk=None): diff --git a/frontend/src/lib/utils/crud.ts b/frontend/src/lib/utils/crud.ts index 24a0698d6..b9ca186d4 100644 --- a/frontend/src/lib/utils/crud.ts +++ b/frontend/src/lib/utils/crud.ts @@ -645,7 +645,7 @@ export const URL_MODEL_MAP: ModelMap = { field: 'feared_events', urlModel: 'feared-events', endpointUrl: 'ebios-rm/feared-events', - urlParams: 'ebios_rm_study=', + urlParams: 'is_selected=true&ebios_rm_study=', detail: true } ], From b4abf53b73ea51fbbf70084eddd7a617e2b1ea76 Mon Sep 17 00:00:00 2001 From: Mohamed-Hacene Date: Fri, 20 Dec 2024 13:01:35 +0100 Subject: [PATCH 02/14] feat: add ebios rm risk matrix placeholder --- frontend/messages/en.json | 3 ++- frontend/src/lib/components/Forms/ModelForm/EbiosRmForm.svelte | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/frontend/messages/en.json b/frontend/messages/en.json index 3a82e3e6d..647092b48 100644 --- a/frontend/messages/en.json +++ b/frontend/messages/en.json @@ -1013,5 +1013,6 @@ "goBackToEbiosRmStudy": "Go back to Ebios RM study", "addStrategicScenario": "Add strategic scenario", "markAsDone": "Mark as done", - "markAsInProgress": "Mark as in progress" + "markAsInProgress": "Mark as in progress", + "ebiosRmRiskMatrix": "4x4 risk matrix from EBIOS-RM" } diff --git a/frontend/src/lib/components/Forms/ModelForm/EbiosRmForm.svelte b/frontend/src/lib/components/Forms/ModelForm/EbiosRmForm.svelte index d85c44fc0..82e9d11e7 100644 --- a/frontend/src/lib/components/Forms/ModelForm/EbiosRmForm.svelte +++ b/frontend/src/lib/components/Forms/ModelForm/EbiosRmForm.svelte @@ -67,6 +67,7 @@ cacheLock={cacheLocks['risk_matrix']} bind:cachedValue={formDataCache['risk_matrix']} label={m.riskMatrix()} + placeholder={m.ebiosRmRiskMatrix()} helpText={m.ebiosRmMatrixHelpText()} /> {:else if context === 'ebiosRmStudy'} From 1dff57d47b6ee713ccfcfeaa28ea1f7356bd9fa2 Mon Sep 17 00:00:00 2001 From: Mohamed-Hacene Date: Fri, 20 Dec 2024 13:27:39 +0100 Subject: [PATCH 03/14] feat: add activity choices --- .../migrations/0009_alter_roto_activity.py | 19 +++++++++++++++++++ backend/ebios_rm/models.py | 12 +++++++++++- backend/ebios_rm/serializers.py | 1 + backend/ebios_rm/views.py | 4 ++++ .../Forms/ModelForm/RoToForm.svelte | 11 ++--------- frontend/src/lib/utils/crud.ts | 3 ++- .../(internal)/ro-to/[id=uuid]/+page.svelte | 2 +- 7 files changed, 40 insertions(+), 12 deletions(-) create mode 100644 backend/ebios_rm/migrations/0009_alter_roto_activity.py diff --git a/backend/ebios_rm/migrations/0009_alter_roto_activity.py b/backend/ebios_rm/migrations/0009_alter_roto_activity.py new file mode 100644 index 000000000..3705c2d84 --- /dev/null +++ b/backend/ebios_rm/migrations/0009_alter_roto_activity.py @@ -0,0 +1,19 @@ +# Generated by Django 5.1.4 on 2024-12-20 12:16 + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('ebios_rm', '0008_remove_attackpath_ro_to_couple_strategicscenario_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='roto', + name='activity', + field=models.PositiveSmallIntegerField(choices=[(0, 'undefined'), (1, 'very_low'), (2, 'low'), (3, 'moderate'), (4, 'important')], default=0, validators=[django.core.validators.MaxValueValidator(4)], verbose_name='Activity'), + ), + ] diff --git a/backend/ebios_rm/models.py b/backend/ebios_rm/models.py index ba5884409..584b70dff 100644 --- a/backend/ebios_rm/models.py +++ b/backend/ebios_rm/models.py @@ -272,6 +272,13 @@ class Resources(models.IntegerChoices): IMPORTANT = 3, "important" UNLIMITED = 4, "unlimited" + class Activity(models.IntegerChoices): + UNDEFINED = 0, "undefined" + VERY_LOW = 1, "very_low" + LOW = 2, "low" + MODERATE = 3, "moderate" + IMPORTANT = 4, "important" + class Pertinence(models.IntegerChoices): UNDEFINED = 0, "undefined" IRRELAVANT = 1, "irrelevant" @@ -306,7 +313,10 @@ class Pertinence(models.IntegerChoices): default=Resources.UNDEFINED, ) activity = models.PositiveSmallIntegerField( - verbose_name=_("Activity"), default=0, validators=[MaxValueValidator(4)] + verbose_name=_("Activity"), + choices=Activity.choices, + default=Activity.UNDEFINED, + validators=[MaxValueValidator(4)], ) is_selected = models.BooleanField(verbose_name=_("Is selected"), default=False) justification = models.TextField(verbose_name=_("Justification"), blank=True) diff --git a/backend/ebios_rm/serializers.py b/backend/ebios_rm/serializers.py index b23c78876..908a63477 100644 --- a/backend/ebios_rm/serializers.py +++ b/backend/ebios_rm/serializers.py @@ -97,6 +97,7 @@ class RoToReadSerializer(BaseModelSerializer): motivation = serializers.CharField(source="get_motivation_display") resources = serializers.CharField(source="get_resources_display") + activity = serializers.CharField(source="get_activity_display") pertinence = serializers.CharField(source="get_pertinence") class Meta: diff --git a/backend/ebios_rm/views.py b/backend/ebios_rm/views.py index c1684c5b0..59535e697 100644 --- a/backend/ebios_rm/views.py +++ b/backend/ebios_rm/views.py @@ -139,6 +139,10 @@ def motivation(self, request): @action(detail=False, name="Get resources choices") def resources(self, request): return Response(dict(RoTo.Resources.choices)) + + @action(detail=False, name="Get activity choices") + def activity(self, request): + return Response(dict(RoTo.Activity.choices)) class StakeholderViewSet(BaseModelViewSet): diff --git a/frontend/src/lib/components/Forms/ModelForm/RoToForm.svelte b/frontend/src/lib/components/Forms/ModelForm/RoToForm.svelte index a78db0a56..ac229b4f6 100644 --- a/frontend/src/lib/components/Forms/ModelForm/RoToForm.svelte +++ b/frontend/src/lib/components/Forms/ModelForm/RoToForm.svelte @@ -96,16 +96,9 @@ cacheLock={cacheLocks['resources']} bind:cachedValue={formDataCache['resources']} /> - - {m.activity()} = - {roto.activity} + {safeTranslate(roto.activity)}

Date: Fri, 20 Dec 2024 13:53:34 +0100 Subject: [PATCH 04/14] feat: disable workshop links in breadcrumbs --- .../src/lib/components/Breadcrumbs/Breadcrumbs.svelte | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/frontend/src/lib/components/Breadcrumbs/Breadcrumbs.svelte b/frontend/src/lib/components/Breadcrumbs/Breadcrumbs.svelte index ff92026a7..8d4845c42 100644 --- a/frontend/src/lib/components/Breadcrumbs/Breadcrumbs.svelte +++ b/frontend/src/lib/components/Breadcrumbs/Breadcrumbs.svelte @@ -9,6 +9,14 @@ let crumbs: Array<{ label: string; href: string; icon?: string }> = []; + const disableWorkhopLink = [ + 'workshop1', + 'workshop2', + 'workshop3', + 'workshop4', + 'workshop5', + ] // Disable workshops links in breadcrumb + $: { // Remove zero-length tokens. const tokens = $page.url.pathname.split('/').filter((t) => t !== ''); @@ -35,7 +43,8 @@ label: $page.data.label || t, href: Object.keys(listViewFields).includes(tokens[0]) && - !listViewFields[tokens[0]].breadcrumb_link_disabled + !listViewFields[tokens[0]].breadcrumb_link_disabled && + !disableWorkhopLink.includes(t) // Disable workshops links in breadcrumb ? tokenPath : null }; From 4c38ba566aeba90ebc0ac4180843171616e63534 Mon Sep 17 00:00:00 2001 From: Mohamed-Hacene Date: Fri, 20 Dec 2024 14:12:24 +0100 Subject: [PATCH 05/14] feat: add icons for true/false --- .../src/lib/components/Breadcrumbs/Breadcrumbs.svelte | 8 +------- frontend/src/lib/components/DetailView/DetailView.svelte | 2 +- frontend/src/lib/utils/crud.ts | 2 +- frontend/src/lib/utils/i18n.ts | 3 +++ 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/frontend/src/lib/components/Breadcrumbs/Breadcrumbs.svelte b/frontend/src/lib/components/Breadcrumbs/Breadcrumbs.svelte index 8d4845c42..3e94cd211 100644 --- a/frontend/src/lib/components/Breadcrumbs/Breadcrumbs.svelte +++ b/frontend/src/lib/components/Breadcrumbs/Breadcrumbs.svelte @@ -9,13 +9,7 @@ let crumbs: Array<{ label: string; href: string; icon?: string }> = []; - const disableWorkhopLink = [ - 'workshop1', - 'workshop2', - 'workshop3', - 'workshop4', - 'workshop5', - ] // Disable workshops links in breadcrumb + const disableWorkhopLink = ['workshop1', 'workshop2', 'workshop3', 'workshop4', 'workshop5']; // Disable workshops links in breadcrumb $: { // Remove zero-length tokens. diff --git a/frontend/src/lib/components/DetailView/DetailView.svelte b/frontend/src/lib/components/DetailView/DetailView.svelte index 4a2f12545..95303fcc8 100644 --- a/frontend/src/lib/components/DetailView/DetailView.svelte +++ b/frontend/src/lib/components/DetailView/DetailView.svelte @@ -345,7 +345,7 @@ {value} {:else if ISO_8601_REGEX.test(value) && (key === 'created_at' || key === 'updated_at' || key === 'expiry_date' || key === 'accepted_at' || key === 'rejected_at' || key === 'revoked_at' || key === 'eta')} {formatDateOrDateTime(value, languageTag())} - {:else if m[toCamelCase((value.str || value.name) ?? value)]} + {:else if m[toCamelCase(value.str || value.name)]} {safeTranslate((value.str || value.name) ?? value)} {:else} {(value.str || value.name) ?? value} diff --git a/frontend/src/lib/utils/crud.ts b/frontend/src/lib/utils/crud.ts index 18be4059a..fc57fe0a5 100644 --- a/frontend/src/lib/utils/crud.ts +++ b/frontend/src/lib/utils/crud.ts @@ -653,7 +653,7 @@ export const URL_MODEL_MAP: ModelMap = { { field: 'risk-origin' }, { field: 'motivation', valueType: 'number' }, { field: 'resources', valueType: 'number' }, - { field: 'activity', valueType: 'number' }, + { field: 'activity', valueType: 'number' } ] }, stakeholders: { diff --git a/frontend/src/lib/utils/i18n.ts b/frontend/src/lib/utils/i18n.ts index ad8357744..4cdc174d2 100644 --- a/frontend/src/lib/utils/i18n.ts +++ b/frontend/src/lib/utils/i18n.ts @@ -14,6 +14,9 @@ export function unsafeTranslate(key: string, params = {}, options = {}): string if (Object.hasOwn(m, toCamelCase(key))) { return m[toCamelCase(key)](params, options); } + if (typeof key === 'boolean') { + return key ? '✅' : '❌'; + } } /** From cbe6a28291b0487068a50558a46f3ddd4cf67274 Mon Sep 17 00:00:00 2001 From: Mohamed-Hacene Date: Fri, 20 Dec 2024 14:26:21 +0100 Subject: [PATCH 06/14] fix: add missing safeTranslate --- frontend/src/lib/components/ModelTable/ModelTable.svelte | 2 +- .../src/routes/(app)/(internal)/ro-to/[id=uuid]/+page.svelte | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/lib/components/ModelTable/ModelTable.svelte b/frontend/src/lib/components/ModelTable/ModelTable.svelte index 5b8a25b8c..c504cb036 100644 --- a/frontend/src/lib/components/ModelTable/ModelTable.svelte +++ b/frontend/src/lib/components/ModelTable/ModelTable.svelte @@ -326,7 +326,7 @@ on:click={(e) => e.stopPropagation()}>{val.str} {:else if val.str} - {val.str} + {safeTranslate(val.str)} {:else if unsafeTranslate(val.split(':')[0])} {unsafeTranslate(val.split(':')[0] + 'Colon')} diff --git a/frontend/src/routes/(app)/(internal)/ro-to/[id=uuid]/+page.svelte b/frontend/src/routes/(app)/(internal)/ro-to/[id=uuid]/+page.svelte index dfd79cbfa..734d9b10c 100644 --- a/frontend/src/routes/(app)/(internal)/ro-to/[id=uuid]/+page.svelte +++ b/frontend/src/routes/(app)/(internal)/ro-to/[id=uuid]/+page.svelte @@ -70,7 +70,7 @@

{m.riskOrigin()} - {roto.risk_origin} / + {safeTranslate(roto.risk_origin)} /

{m.targetObjective()} From c2579d55ae0e5210409dfe81ff50a53bf0400cc2 Mon Sep 17 00:00:00 2001 From: Mohamed-Hacene Date: Fri, 20 Dec 2024 14:39:52 +0100 Subject: [PATCH 07/14] fix: risk assessment generation --- backend/core/models.py | 2 +- backend/core/serializers.py | 3 ++- .../migrations/0009_alter_roto_activity.py | 20 ++++++++++++++----- backend/ebios_rm/models.py | 2 +- backend/ebios_rm/views.py | 2 +- .../risk-assessments/[id=uuid]/+page.svelte | 11 ++++++++++ 6 files changed, 31 insertions(+), 9 deletions(-) diff --git a/backend/core/models.py b/backend/core/models.py index 7407d4853..3b0860c8a 100644 --- a/backend/core/models.py +++ b/backend/core/models.py @@ -1501,7 +1501,7 @@ def get_descendants(self) -> set[Self]: children = self.get_children() sub_children = set() for child in children: - sub_children.append(child) + sub_children.add(child) sub_children.update(child.get_descendants()) return sub_children diff --git a/backend/core/serializers.py b/backend/core/serializers.py index 6595dd66a..75547b1ff 100644 --- a/backend/core/serializers.py +++ b/backend/core/serializers.py @@ -210,10 +210,11 @@ class RiskAssessmentReadSerializer(AssessmentReadSerializer): risk_scenarios = FieldsRelatedField(many=True) risk_scenarios_count = serializers.IntegerField(source="risk_scenarios.count") risk_matrix = FieldsRelatedField() + ebios_rm_study = FieldsRelatedField(["id", "name"]) class Meta: model = RiskAssessment - exclude = ["ebios_rm_study"] + exclude = [] class AssetWriteSerializer(BaseModelSerializer): diff --git a/backend/ebios_rm/migrations/0009_alter_roto_activity.py b/backend/ebios_rm/migrations/0009_alter_roto_activity.py index 3705c2d84..86b3f5d53 100644 --- a/backend/ebios_rm/migrations/0009_alter_roto_activity.py +++ b/backend/ebios_rm/migrations/0009_alter_roto_activity.py @@ -5,15 +5,25 @@ class Migration(migrations.Migration): - dependencies = [ - ('ebios_rm', '0008_remove_attackpath_ro_to_couple_strategicscenario_and_more'), + ("ebios_rm", "0008_remove_attackpath_ro_to_couple_strategicscenario_and_more"), ] operations = [ migrations.AlterField( - model_name='roto', - name='activity', - field=models.PositiveSmallIntegerField(choices=[(0, 'undefined'), (1, 'very_low'), (2, 'low'), (3, 'moderate'), (4, 'important')], default=0, validators=[django.core.validators.MaxValueValidator(4)], verbose_name='Activity'), + model_name="roto", + name="activity", + field=models.PositiveSmallIntegerField( + choices=[ + (0, "undefined"), + (1, "very_low"), + (2, "low"), + (3, "moderate"), + (4, "important"), + ], + default=0, + validators=[django.core.validators.MaxValueValidator(4)], + verbose_name="Activity", + ), ), ] diff --git a/backend/ebios_rm/models.py b/backend/ebios_rm/models.py index 584b70dff..5b35766fc 100644 --- a/backend/ebios_rm/models.py +++ b/backend/ebios_rm/models.py @@ -655,7 +655,7 @@ def ro_to(self): def get_assets(self): initial_assets = Asset.objects.filter( - feared_events__in=self.ro_to.feared_events.all(), is_selected=True + feared_events__in=self.ro_to.feared_events.filter(is_selected=True) ) assets = set() for asset in initial_assets: diff --git a/backend/ebios_rm/views.py b/backend/ebios_rm/views.py index 59535e697..92f8c7ca2 100644 --- a/backend/ebios_rm/views.py +++ b/backend/ebios_rm/views.py @@ -139,7 +139,7 @@ def motivation(self, request): @action(detail=False, name="Get resources choices") def resources(self, request): return Response(dict(RoTo.Resources.choices)) - + @action(detail=False, name="Get activity choices") def activity(self, request): return Response(dict(RoTo.Activity.choices)) diff --git a/frontend/src/routes/(app)/(internal)/risk-assessments/[id=uuid]/+page.svelte b/frontend/src/routes/(app)/(internal)/risk-assessments/[id=uuid]/+page.svelte index 8286307d0..8910121e3 100644 --- a/frontend/src/routes/(app)/(internal)/risk-assessments/[id=uuid]/+page.svelte +++ b/frontend/src/routes/(app)/(internal)/risk-assessments/[id=uuid]/+page.svelte @@ -199,6 +199,17 @@ >


+
+ {m.ebiosRmStudy()}: + {risk_assessment.ebios_rm_study.name} +
+
{m.description()}: From c265d762fd69c72eacbf743c444701b25babacf7 Mon Sep 17 00:00:00 2001 From: Mohamed-Hacene Date: Fri, 20 Dec 2024 14:41:50 +0100 Subject: [PATCH 08/14] chore: add missing translation --- frontend/messages/en.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/messages/en.json b/frontend/messages/en.json index 647092b48..d46ead2b8 100644 --- a/frontend/messages/en.json +++ b/frontend/messages/en.json @@ -1014,5 +1014,6 @@ "addStrategicScenario": "Add strategic scenario", "markAsDone": "Mark as done", "markAsInProgress": "Mark as in progress", - "ebiosRmRiskMatrix": "4x4 risk matrix from EBIOS-RM" + "ebiosRmRiskMatrix": "4x4 risk matrix from EBIOS-RM", + "riskAnalyses": "Risk analyses" } From 2988eb97007ebf07aeb5c5ea28f2141fb00b7a8a Mon Sep 17 00:00:00 2001 From: Mohamed-Hacene Date: Fri, 20 Dec 2024 14:59:17 +0100 Subject: [PATCH 09/14] chore: add missing translation --- frontend/messages/en.json | 5 ++++- frontend/messages/fr.json | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/frontend/messages/en.json b/frontend/messages/en.json index d46ead2b8..bc835ab48 100644 --- a/frontend/messages/en.json +++ b/frontend/messages/en.json @@ -1015,5 +1015,8 @@ "markAsDone": "Mark as done", "markAsInProgress": "Mark as in progress", "ebiosRmRiskMatrix": "4x4 risk matrix from EBIOS-RM", - "riskAnalyses": "Risk analyses" + "riskAnalyses": "Risk analyses", + "client": "Client", + "partner": "Partner", + "supplier": "Supplier" } diff --git a/frontend/messages/fr.json b/frontend/messages/fr.json index a7e674606..c45e90e64 100644 --- a/frontend/messages/fr.json +++ b/frontend/messages/fr.json @@ -1011,5 +1011,8 @@ "strategicScenario": "Scénario stratégique", "strategicScenarios": "Scénarios stratégiques", "goBackToEbiosRmStudy": "Retour à l'étude", - "addStrategicScenario": "Ajouter un scénario stratégique" + "addStrategicScenario": "Ajouter un scénario stratégique", + "client": "Client", + "partner": "Partenaire", + "supplier": "Fournisseur" } From c81796b1ab1b13e39d93828ebe0d68b65b9f32ce Mon Sep 17 00:00:00 2001 From: Mohamed-Hacene Date: Fri, 20 Dec 2024 17:43:30 +0100 Subject: [PATCH 10/14] fix: update functional tests --- frontend/tests/utils/page-detail.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/tests/utils/page-detail.ts b/frontend/tests/utils/page-detail.ts index f252621db..c789d84b8 100644 --- a/frontend/tests/utils/page-detail.ts +++ b/frontend/tests/utils/page-detail.ts @@ -91,7 +91,7 @@ export class PageDetail extends BasePage { if (this.form.fields.get(key)?.type === FormFieldType.CHECKBOX) { await expect .soft(this.page.getByTestId(key.replaceAll('_', '-') + '-field-value')) - .toHaveText(values[key] ? 'true' : 'false'); + .toHaveText(values[key] ? '✅' : '❌'); } else if (this.form.fields.get(key)?.type === FormFieldType.DATE) { const displayedValue = await this.page .getByTestId(key.replaceAll('_', '-') + '-field-value') From 69dc6a7a11ba3b1c1bca2fe4873c964fe3a2b9d4 Mon Sep 17 00:00:00 2001 From: Mohamed-Hacene Date: Fri, 20 Dec 2024 18:06:45 +0100 Subject: [PATCH 11/14] feat: add back to study anchors --- .../workshop-1/ebios-rm-study/+page.svelte | 19 +++++++++++++------ .../[id=uuid]/+page.svelte | 7 +++++++ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/frontend/src/routes/(app)/(internal)/ebios-rm/[id=uuid]/workshop-1/ebios-rm-study/+page.svelte b/frontend/src/routes/(app)/(internal)/ebios-rm/[id=uuid]/workshop-1/ebios-rm-study/+page.svelte index 251499d38..7f380d6a1 100644 --- a/frontend/src/routes/(app)/(internal)/ebios-rm/[id=uuid]/workshop-1/ebios-rm-study/+page.svelte +++ b/frontend/src/routes/(app)/(internal)/ebios-rm/[id=uuid]/workshop-1/ebios-rm-study/+page.svelte @@ -70,13 +70,20 @@
- {#if ebiosRmStudy.ref_id} - - {m.refIdSemiColon()} - {ebiosRmStudy.ref_id} - - {/if} + + +

{m.goBackToEbiosRmStudy()}

+
+ {#if ebiosRmStudy.ref_id} + + {m.refIdSemiColon()} + {ebiosRmStudy.ref_id} + + {/if} {ebiosRmStudy.name} - v{ebiosRmStudy.version} diff --git a/frontend/src/routes/(app)/(internal)/operational-scenarios/[id=uuid]/+page.svelte b/frontend/src/routes/(app)/(internal)/operational-scenarios/[id=uuid]/+page.svelte index cbd6b572f..62c469a08 100644 --- a/frontend/src/routes/(app)/(internal)/operational-scenarios/[id=uuid]/+page.svelte +++ b/frontend/src/routes/(app)/(internal)/operational-scenarios/[id=uuid]/+page.svelte @@ -43,6 +43,13 @@
+ + +

{m.goBackToEbiosRmStudy()}

+


-
-
+ {#if risk_assessment.ebios_rm_study} +
+ {m.ebiosRmStudy()}: + {risk_assessment.ebios_rm_study.name} +
+
+ {/if}
{m.description()}: From e5bc1f31561590f5e44c13f583a0f32f0d893aaa Mon Sep 17 00:00:00 2001 From: Mohamed-Hacene Date: Fri, 20 Dec 2024 18:16:15 +0100 Subject: [PATCH 14/14] chore: format --- .../(app)/(internal)/risk-assessments/[id=uuid]/+page.svelte | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/frontend/src/routes/(app)/(internal)/risk-assessments/[id=uuid]/+page.svelte b/frontend/src/routes/(app)/(internal)/risk-assessments/[id=uuid]/+page.svelte index 2c1e9086a..3c7cdc2fb 100644 --- a/frontend/src/routes/(app)/(internal)/risk-assessments/[id=uuid]/+page.svelte +++ b/frontend/src/routes/(app)/(internal)/risk-assessments/[id=uuid]/+page.svelte @@ -201,8 +201,7 @@
{#if risk_assessment.ebios_rm_study}
- {m.ebiosRmStudy()}:{m.ebiosRmStudy()}: