|
- {mesure.name}
+ {measure.name}
- {mesure.description && (
+ {measure.description && (
- {mesure.description}
+ {measure.description}
)}
|
- {formatState(mesure.state)}
+ {formatState(measure.state)}
|
@@ -883,12 +883,12 @@ export function Control({
variant="outline"
size="sm"
onClick={() =>
- handleUnlinkMesure(mesure.id)
+ handleUnlinkMeasure(measure.id)
}
- disabled={isUnlinkingMesure}
+ disabled={isUnlinkingMeasure}
className="text-xs h-7 text-danger border-danger-b hover:bg-h-danger-bg"
>
- {isUnlinkingMesure ? (
+ {isUnlinkingMeasure ? (
) : (
@@ -900,12 +900,12 @@ export function Control({
variant="secondary"
size="sm"
onClick={() =>
- handleLinkMesure(mesure.id)
+ handleLinkMeasure(measure.id)
}
- disabled={isLinkingMesure}
+ disabled={isLinkingMeasure}
className="text-xs h-7 text-info border-info-b hover:bg-h-info-bg"
>
- {isLinkingMesure ? (
+ {isLinkingMeasure ? (
) : (
@@ -925,14 +925,14 @@ export function Control({
-
- {/* Linked Mesures List */}
+ {/* Linked Measures List */}
@@ -942,20 +942,20 @@ export function Control({
variant="outline"
size="sm"
className="flex items-center gap-1"
- onClick={handleOpenMesureMappingDialog}
+ onClick={handleOpenMeasureMappingDialog}
>
Link Security Measures
- {isLoadingMesures ? (
+ {isLoadingMeasures ? (
Loading security measures...
- ) : linkedMesuresData?.control?.mesures?.edges &&
- linkedMesuresData.control.mesures.edges.length > 0 ? (
+ ) : linkedMeasuresData?.control?.measures?.edges &&
+ linkedMeasuresData.control.measures.edges.length > 0 ? (
@@ -968,26 +968,26 @@ export function Control({
- {getLinkedMesures().map((mesure) => (
+ {getLinkedMeasures().map((measure) => (
|
- {mesure.name}
- {mesure.description && (
+ {measure.name}
+ {measure.description && (
- {mesure.description}
+ {measure.description}
)}
|
- {formatState(mesure.state)}
+ {formatState(measure.state)}
|
@@ -999,7 +999,7 @@ export function Control({
className="text-xs h-7"
>
View
@@ -1007,8 +1007,8 @@ export function Control({
handleUnlinkMesure(mesure.id)}
- disabled={isUnlinkingMesure}
+ onClick={() => handleUnlinkMeasure(measure.id)}
+ disabled={isUnlinkingMeasure}
className="text-xs h-7 text-danger border-danger-b hover:bg-h-danger-bg"
>
Unlink
diff --git a/apps/console/src/pages/organizations/risks/__generated__/ShowRiskViewCreateRiskMesureMappingMutation.graphql.ts b/apps/console/src/pages/organizations/frameworks/controls/__generated__/ControlCreateMeasureMappingMutation.graphql.ts
similarity index 54%
rename from apps/console/src/pages/organizations/risks/__generated__/ShowRiskViewCreateRiskMesureMappingMutation.graphql.ts
rename to apps/console/src/pages/organizations/frameworks/controls/__generated__/ControlCreateMeasureMappingMutation.graphql.ts
index f98d70d82..b156d3cb6 100644
--- a/apps/console/src/pages/organizations/risks/__generated__/ShowRiskViewCreateRiskMesureMappingMutation.graphql.ts
+++ b/apps/console/src/pages/organizations/frameworks/controls/__generated__/ControlCreateMeasureMappingMutation.graphql.ts
@@ -1,5 +1,5 @@
/**
- * @generated SignedSource<>
+ * @generated SignedSource<<369cb72e422d254a5e4956d17c47a8ae>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -9,21 +9,21 @@
// @ts-nocheck
import { ConcreteRequest } from 'relay-runtime';
-export type CreateRiskMesureMappingInput = {
- mesureId: string;
- riskId: string;
+export type CreateControlMeasureMappingInput = {
+ controlId: string;
+ measureId: string;
};
-export type ShowRiskViewCreateRiskMesureMappingMutation$variables = {
- input: CreateRiskMesureMappingInput;
+export type ControlCreateMeasureMappingMutation$variables = {
+ input: CreateControlMeasureMappingInput;
};
-export type ShowRiskViewCreateRiskMesureMappingMutation$data = {
- readonly createRiskMesureMapping: {
+export type ControlCreateMeasureMappingMutation$data = {
+ readonly createControlMeasureMapping: {
readonly success: boolean;
};
};
-export type ShowRiskViewCreateRiskMesureMappingMutation = {
- response: ShowRiskViewCreateRiskMesureMappingMutation$data;
- variables: ShowRiskViewCreateRiskMesureMappingMutation$variables;
+export type ControlCreateMeasureMappingMutation = {
+ response: ControlCreateMeasureMappingMutation$data;
+ variables: ControlCreateMeasureMappingMutation$variables;
};
const node: ConcreteRequest = (function(){
@@ -44,9 +44,9 @@ v1 = [
"variableName": "input"
}
],
- "concreteType": "CreateRiskMesureMappingPayload",
+ "concreteType": "CreateControlMeasureMappingPayload",
"kind": "LinkedField",
- "name": "createRiskMesureMapping",
+ "name": "createControlMeasureMapping",
"plural": false,
"selections": [
{
@@ -65,7 +65,7 @@ return {
"argumentDefinitions": (v0/*: any*/),
"kind": "Fragment",
"metadata": null,
- "name": "ShowRiskViewCreateRiskMesureMappingMutation",
+ "name": "ControlCreateMeasureMappingMutation",
"selections": (v1/*: any*/),
"type": "Mutation",
"abstractKey": null
@@ -74,20 +74,20 @@ return {
"operation": {
"argumentDefinitions": (v0/*: any*/),
"kind": "Operation",
- "name": "ShowRiskViewCreateRiskMesureMappingMutation",
+ "name": "ControlCreateMeasureMappingMutation",
"selections": (v1/*: any*/)
},
"params": {
- "cacheID": "f7d34307825549877c07678c77ca17c6",
+ "cacheID": "5ff3b52a5f40607556617a17e44dc3b1",
"id": null,
"metadata": {},
- "name": "ShowRiskViewCreateRiskMesureMappingMutation",
+ "name": "ControlCreateMeasureMappingMutation",
"operationKind": "mutation",
- "text": "mutation ShowRiskViewCreateRiskMesureMappingMutation(\n $input: CreateRiskMesureMappingInput!\n) {\n createRiskMesureMapping(input: $input) {\n success\n }\n}\n"
+ "text": "mutation ControlCreateMeasureMappingMutation(\n $input: CreateControlMeasureMappingInput!\n) {\n createControlMeasureMapping(input: $input) {\n success\n }\n}\n"
}
};
})();
-(node as any).hash = "e1d7cdd482d6658c2befddd478a3397d";
+(node as any).hash = "2c0061b6e180971d0e0f8b8b5c44d566";
export default node;
diff --git a/apps/console/src/pages/organizations/risks/__generated__/ShowRiskViewDeleteRiskMesureMappingMutation.graphql.ts b/apps/console/src/pages/organizations/frameworks/controls/__generated__/ControlDeleteMeasureMappingMutation.graphql.ts
similarity index 54%
rename from apps/console/src/pages/organizations/risks/__generated__/ShowRiskViewDeleteRiskMesureMappingMutation.graphql.ts
rename to apps/console/src/pages/organizations/frameworks/controls/__generated__/ControlDeleteMeasureMappingMutation.graphql.ts
index c7576257c..6d38cb2f9 100644
--- a/apps/console/src/pages/organizations/risks/__generated__/ShowRiskViewDeleteRiskMesureMappingMutation.graphql.ts
+++ b/apps/console/src/pages/organizations/frameworks/controls/__generated__/ControlDeleteMeasureMappingMutation.graphql.ts
@@ -1,5 +1,5 @@
/**
- * @generated SignedSource<<0fc791ecc00bfd6b1aa3a8da262df36c>>
+ * @generated SignedSource<<6208e6173d03bbf497b38e0f8dece2a7>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -9,21 +9,21 @@
// @ts-nocheck
import { ConcreteRequest } from 'relay-runtime';
-export type DeleteRiskMesureMappingInput = {
- mesureId: string;
- riskId: string;
+export type DeleteControlMeasureMappingInput = {
+ controlId: string;
+ measureId: string;
};
-export type ShowRiskViewDeleteRiskMesureMappingMutation$variables = {
- input: DeleteRiskMesureMappingInput;
+export type ControlDeleteMeasureMappingMutation$variables = {
+ input: DeleteControlMeasureMappingInput;
};
-export type ShowRiskViewDeleteRiskMesureMappingMutation$data = {
- readonly deleteRiskMesureMapping: {
+export type ControlDeleteMeasureMappingMutation$data = {
+ readonly deleteControlMeasureMapping: {
readonly success: boolean;
};
};
-export type ShowRiskViewDeleteRiskMesureMappingMutation = {
- response: ShowRiskViewDeleteRiskMesureMappingMutation$data;
- variables: ShowRiskViewDeleteRiskMesureMappingMutation$variables;
+export type ControlDeleteMeasureMappingMutation = {
+ response: ControlDeleteMeasureMappingMutation$data;
+ variables: ControlDeleteMeasureMappingMutation$variables;
};
const node: ConcreteRequest = (function(){
@@ -44,9 +44,9 @@ v1 = [
"variableName": "input"
}
],
- "concreteType": "DeleteRiskMesureMappingPayload",
+ "concreteType": "DeleteControlMeasureMappingPayload",
"kind": "LinkedField",
- "name": "deleteRiskMesureMapping",
+ "name": "deleteControlMeasureMapping",
"plural": false,
"selections": [
{
@@ -65,7 +65,7 @@ return {
"argumentDefinitions": (v0/*: any*/),
"kind": "Fragment",
"metadata": null,
- "name": "ShowRiskViewDeleteRiskMesureMappingMutation",
+ "name": "ControlDeleteMeasureMappingMutation",
"selections": (v1/*: any*/),
"type": "Mutation",
"abstractKey": null
@@ -74,20 +74,20 @@ return {
"operation": {
"argumentDefinitions": (v0/*: any*/),
"kind": "Operation",
- "name": "ShowRiskViewDeleteRiskMesureMappingMutation",
+ "name": "ControlDeleteMeasureMappingMutation",
"selections": (v1/*: any*/)
},
"params": {
- "cacheID": "d46920306e833fb33b4f10dca6aa1c5a",
+ "cacheID": "446e0d6cc32e0c0dfc4f5e74e11bdb84",
"id": null,
"metadata": {},
- "name": "ShowRiskViewDeleteRiskMesureMappingMutation",
+ "name": "ControlDeleteMeasureMappingMutation",
"operationKind": "mutation",
- "text": "mutation ShowRiskViewDeleteRiskMesureMappingMutation(\n $input: DeleteRiskMesureMappingInput!\n) {\n deleteRiskMesureMapping(input: $input) {\n success\n }\n}\n"
+ "text": "mutation ControlDeleteMeasureMappingMutation(\n $input: DeleteControlMeasureMappingInput!\n) {\n deleteControlMeasureMapping(input: $input) {\n success\n }\n}\n"
}
};
})();
-(node as any).hash = "e55c8d6490fbcfe0d287053200b6347d";
+(node as any).hash = "f6a94c260a98dffe7d48e4aa9e690845";
export default node;
diff --git a/apps/console/src/pages/organizations/frameworks/controls/__generated__/ControlLinkedMesuresQuery.graphql.ts b/apps/console/src/pages/organizations/frameworks/controls/__generated__/ControlLinkedMeasuresQuery.graphql.ts
similarity index 75%
rename from apps/console/src/pages/organizations/frameworks/controls/__generated__/ControlLinkedMesuresQuery.graphql.ts
rename to apps/console/src/pages/organizations/frameworks/controls/__generated__/ControlLinkedMeasuresQuery.graphql.ts
index ff00729f1..1e433c593 100644
--- a/apps/console/src/pages/organizations/frameworks/controls/__generated__/ControlLinkedMesuresQuery.graphql.ts
+++ b/apps/console/src/pages/organizations/frameworks/controls/__generated__/ControlLinkedMeasuresQuery.graphql.ts
@@ -1,5 +1,5 @@
/**
- * @generated SignedSource<<94f5c5a041ae3730b8f4a71ad63530a8>>
+ * @generated SignedSource<<968e00428300c564a03ee9a4b98eed90>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -9,29 +9,29 @@
// @ts-nocheck
import { ConcreteRequest } from 'relay-runtime';
-export type MesureState = "IMPLEMENTED" | "IN_PROGRESS" | "NOT_APPLICABLE" | "NOT_STARTED";
-export type ControlLinkedMesuresQuery$variables = {
+export type MeasureState = "IMPLEMENTED" | "IN_PROGRESS" | "NOT_APPLICABLE" | "NOT_STARTED";
+export type ControlLinkedMeasuresQuery$variables = {
controlId: string;
};
-export type ControlLinkedMesuresQuery$data = {
+export type ControlLinkedMeasuresQuery$data = {
readonly control: {
readonly id: string;
- readonly mesures?: {
+ readonly measures?: {
readonly edges: ReadonlyArray<{
readonly node: {
readonly category: string;
readonly description: string;
readonly id: string;
readonly name: string;
- readonly state: MesureState;
+ readonly state: MeasureState;
};
}>;
};
};
};
-export type ControlLinkedMesuresQuery = {
- response: ControlLinkedMesuresQuery$data;
- variables: ControlLinkedMesuresQuery$variables;
+export type ControlLinkedMeasuresQuery = {
+ response: ControlLinkedMeasuresQuery$data;
+ variables: ControlLinkedMeasuresQuery$variables;
};
const node: ConcreteRequest = (function(){
@@ -67,7 +67,7 @@ v4 = [
{
"alias": null,
"args": null,
- "concreteType": "MesureEdge",
+ "concreteType": "MeasureEdge",
"kind": "LinkedField",
"name": "edges",
"plural": true,
@@ -75,7 +75,7 @@ v4 = [
{
"alias": null,
"args": null,
- "concreteType": "Mesure",
+ "concreteType": "Measure",
"kind": "LinkedField",
"name": "node",
"plural": false,
@@ -161,7 +161,7 @@ return {
"argumentDefinitions": (v0/*: any*/),
"kind": "Fragment",
"metadata": null,
- "name": "ControlLinkedMesuresQuery",
+ "name": "ControlLinkedMeasuresQuery",
"selections": [
{
"alias": "control",
@@ -176,11 +176,11 @@ return {
"kind": "InlineFragment",
"selections": [
{
- "alias": "mesures",
+ "alias": "measures",
"args": null,
- "concreteType": "MesureConnection",
+ "concreteType": "MeasureConnection",
"kind": "LinkedField",
- "name": "__Control__mesures_connection",
+ "name": "__Control__measures_connection",
"plural": false,
"selections": (v4/*: any*/),
"storageKey": null
@@ -200,7 +200,7 @@ return {
"operation": {
"argumentDefinitions": (v0/*: any*/),
"kind": "Operation",
- "name": "ControlLinkedMesuresQuery",
+ "name": "ControlLinkedMeasuresQuery",
"selections": [
{
"alias": "control",
@@ -218,21 +218,21 @@ return {
{
"alias": null,
"args": (v5/*: any*/),
- "concreteType": "MesureConnection",
+ "concreteType": "MeasureConnection",
"kind": "LinkedField",
- "name": "mesures",
+ "name": "measures",
"plural": false,
"selections": (v4/*: any*/),
- "storageKey": "mesures(first:100)"
+ "storageKey": "measures(first:100)"
},
{
"alias": null,
"args": (v5/*: any*/),
"filters": null,
"handle": "connection",
- "key": "Control__mesures",
+ "key": "Control__measures",
"kind": "LinkedHandle",
- "name": "mesures"
+ "name": "measures"
}
],
"type": "Control",
@@ -244,7 +244,7 @@ return {
]
},
"params": {
- "cacheID": "b29cb1662103fc42abf16fa6b3458a68",
+ "cacheID": "1b64a54214517bf3d4555ada606c7e1c",
"id": null,
"metadata": {
"connection": [
@@ -254,18 +254,18 @@ return {
"direction": "forward",
"path": [
"control",
- "mesures"
+ "measures"
]
}
]
},
- "name": "ControlLinkedMesuresQuery",
+ "name": "ControlLinkedMeasuresQuery",
"operationKind": "query",
- "text": "query ControlLinkedMesuresQuery(\n $controlId: ID!\n) {\n control: node(id: $controlId) {\n __typename\n id\n ... on Control {\n mesures(first: 100) {\n edges {\n node {\n id\n name\n description\n category\n state\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n }\n }\n}\n"
+ "text": "query ControlLinkedMeasuresQuery(\n $controlId: ID!\n) {\n control: node(id: $controlId) {\n __typename\n id\n ... on Control {\n measures(first: 100) {\n edges {\n node {\n id\n name\n description\n category\n state\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n }\n }\n}\n"
}
};
})();
-(node as any).hash = "e42a48d7b21eaa5c42331377b6a9bc9c";
+(node as any).hash = "168cf7c175bd5abf756edada5c8bd533";
export default node;
diff --git a/apps/console/src/pages/organizations/frameworks/controls/__generated__/ControlOrganizationMesuresQuery.graphql.ts b/apps/console/src/pages/organizations/frameworks/controls/__generated__/ControlOrganizationMeasuresQuery.graphql.ts
similarity index 74%
rename from apps/console/src/pages/organizations/frameworks/controls/__generated__/ControlOrganizationMesuresQuery.graphql.ts
rename to apps/console/src/pages/organizations/frameworks/controls/__generated__/ControlOrganizationMeasuresQuery.graphql.ts
index 0932b719c..46e9fab2b 100644
--- a/apps/console/src/pages/organizations/frameworks/controls/__generated__/ControlOrganizationMesuresQuery.graphql.ts
+++ b/apps/console/src/pages/organizations/frameworks/controls/__generated__/ControlOrganizationMeasuresQuery.graphql.ts
@@ -1,5 +1,5 @@
/**
- * @generated SignedSource<<862b2210a9d569a05063cebc805bdd01>>
+ * @generated SignedSource<>
* @lightSyntaxTransform
* @nogrep
*/
@@ -9,29 +9,29 @@
// @ts-nocheck
import { ConcreteRequest } from 'relay-runtime';
-export type MesureState = "IMPLEMENTED" | "IN_PROGRESS" | "NOT_APPLICABLE" | "NOT_STARTED";
-export type ControlOrganizationMesuresQuery$variables = {
+export type MeasureState = "IMPLEMENTED" | "IN_PROGRESS" | "NOT_APPLICABLE" | "NOT_STARTED";
+export type ControlOrganizationMeasuresQuery$variables = {
organizationId: string;
};
-export type ControlOrganizationMesuresQuery$data = {
+export type ControlOrganizationMeasuresQuery$data = {
readonly organization: {
readonly id: string;
- readonly mesures?: {
+ readonly measures?: {
readonly edges: ReadonlyArray<{
readonly node: {
readonly category: string;
readonly description: string;
readonly id: string;
readonly name: string;
- readonly state: MesureState;
+ readonly state: MeasureState;
};
}>;
};
};
};
-export type ControlOrganizationMesuresQuery = {
- response: ControlOrganizationMesuresQuery$data;
- variables: ControlOrganizationMesuresQuery$variables;
+export type ControlOrganizationMeasuresQuery = {
+ response: ControlOrganizationMeasuresQuery$data;
+ variables: ControlOrganizationMeasuresQuery$variables;
};
const node: ConcreteRequest = (function(){
@@ -67,7 +67,7 @@ v4 = [
{
"alias": null,
"args": null,
- "concreteType": "MesureEdge",
+ "concreteType": "MeasureEdge",
"kind": "LinkedField",
"name": "edges",
"plural": true,
@@ -75,7 +75,7 @@ v4 = [
{
"alias": null,
"args": null,
- "concreteType": "Mesure",
+ "concreteType": "Measure",
"kind": "LinkedField",
"name": "node",
"plural": false,
@@ -161,7 +161,7 @@ return {
"argumentDefinitions": (v0/*: any*/),
"kind": "Fragment",
"metadata": null,
- "name": "ControlOrganizationMesuresQuery",
+ "name": "ControlOrganizationMeasuresQuery",
"selections": [
{
"alias": "organization",
@@ -176,11 +176,11 @@ return {
"kind": "InlineFragment",
"selections": [
{
- "alias": "mesures",
+ "alias": "measures",
"args": null,
- "concreteType": "MesureConnection",
+ "concreteType": "MeasureConnection",
"kind": "LinkedField",
- "name": "__Organization__mesures_connection",
+ "name": "__Organization__measures_connection",
"plural": false,
"selections": (v4/*: any*/),
"storageKey": null
@@ -200,7 +200,7 @@ return {
"operation": {
"argumentDefinitions": (v0/*: any*/),
"kind": "Operation",
- "name": "ControlOrganizationMesuresQuery",
+ "name": "ControlOrganizationMeasuresQuery",
"selections": [
{
"alias": "organization",
@@ -218,21 +218,21 @@ return {
{
"alias": null,
"args": (v5/*: any*/),
- "concreteType": "MesureConnection",
+ "concreteType": "MeasureConnection",
"kind": "LinkedField",
- "name": "mesures",
+ "name": "measures",
"plural": false,
"selections": (v4/*: any*/),
- "storageKey": "mesures(first:100)"
+ "storageKey": "measures(first:100)"
},
{
"alias": null,
"args": (v5/*: any*/),
"filters": null,
"handle": "connection",
- "key": "Organization__mesures",
+ "key": "Organization__measures",
"kind": "LinkedHandle",
- "name": "mesures"
+ "name": "measures"
}
],
"type": "Organization",
@@ -244,7 +244,7 @@ return {
]
},
"params": {
- "cacheID": "bb1066800bfa28aaa64a2fd1f12c5924",
+ "cacheID": "9d2ddaaceb1b73e3c7b967e2d2a1b86b",
"id": null,
"metadata": {
"connection": [
@@ -254,18 +254,18 @@ return {
"direction": "forward",
"path": [
"organization",
- "mesures"
+ "measures"
]
}
]
},
- "name": "ControlOrganizationMesuresQuery",
+ "name": "ControlOrganizationMeasuresQuery",
"operationKind": "query",
- "text": "query ControlOrganizationMesuresQuery(\n $organizationId: ID!\n) {\n organization: node(id: $organizationId) {\n __typename\n id\n ... on Organization {\n mesures(first: 100) {\n edges {\n node {\n id\n name\n description\n category\n state\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n }\n }\n}\n"
+ "text": "query ControlOrganizationMeasuresQuery(\n $organizationId: ID!\n) {\n organization: node(id: $organizationId) {\n __typename\n id\n ... on Organization {\n measures(first: 100) {\n edges {\n node {\n id\n name\n description\n category\n state\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n }\n }\n}\n"
}
};
})();
-(node as any).hash = "5f1d6b11af3d92bec1c4d37ceb12b7c3";
+(node as any).hash = "6f5efd4dbac9bdc9b32ed8c155edf1e7";
export default node;
diff --git a/apps/console/src/pages/organizations/mesures/NewMesurePage.tsx b/apps/console/src/pages/organizations/measures/EditMeasurePage.tsx
similarity index 60%
rename from apps/console/src/pages/organizations/mesures/NewMesurePage.tsx
rename to apps/console/src/pages/organizations/measures/EditMeasurePage.tsx
index fa80102eb..edd58a0c3 100644
--- a/apps/console/src/pages/organizations/mesures/NewMesurePage.tsx
+++ b/apps/console/src/pages/organizations/measures/EditMeasurePage.tsx
@@ -4,26 +4,26 @@ import { lazy } from "@probo/react-lazy";
import { useLocation } from "react-router";
import { ErrorBoundaryWithLocation } from "../ErrorBoundary";
-const NewMesureView = lazy(() => import("./NewMesureView"));
+const EditMeasureView = lazy(() => import("./EditMeasureView"));
-export function NewMesureViewSkeleton() {
+export function EditMeasureViewSkeleton() {
return (
);
}
-export function NewMesurePage() {
+export function EditMeasurePage() {
const location = useLocation();
return (
- }>
+ }>
-
+
);
diff --git a/apps/console/src/pages/organizations/mesures/EditMesureView.tsx b/apps/console/src/pages/organizations/measures/EditMeasureView.tsx
similarity index 65%
rename from apps/console/src/pages/organizations/mesures/EditMesureView.tsx
rename to apps/console/src/pages/organizations/measures/EditMeasureView.tsx
index 9cc95aaf8..ea7631bdb 100644
--- a/apps/console/src/pages/organizations/mesures/EditMesureView.tsx
+++ b/apps/console/src/pages/organizations/measures/EditMeasureView.tsx
@@ -9,19 +9,19 @@ import {
import { useParams, useNavigate } from "react-router";
import { PageTemplate } from "@/components/PageTemplate";
import { useToast } from "@/hooks/use-toast";
-import { EditMesureViewUpdateMesureMutation } from "./__generated__/EditMesureViewUpdateMesureMutation.graphql";
+import { EditMeasureViewUpdateMeasureMutation } from "./__generated__/EditMeasureViewUpdateMeasureMutation.graphql";
import { EditableField } from "@/components/EditableField";
import { Button } from "@/components/ui/button";
import { Card } from "@/components/ui/card";
import { Label } from "@/components/ui/label";
import { cn } from "@/lib/utils";
-import { EditMesureViewSkeleton } from "./EditMesurePage";
-import { EditMesureViewQuery } from "./__generated__/EditMesureViewQuery.graphql";
+import { EditMeasureViewSkeleton } from "./EditMeasurePage";
+import { EditMeasureViewQuery } from "./__generated__/EditMeasureViewQuery.graphql";
-const editMesureQuery = graphql`
- query EditMesureViewQuery($mesureId: ID!) {
- node(id: $mesureId) {
- ... on Mesure {
+const editMeasureQuery = graphql`
+ query EditMeasureViewQuery($measureId: ID!) {
+ node(id: $measureId) {
+ ... on Measure {
id
name
description
@@ -31,10 +31,10 @@ const editMesureQuery = graphql`
}
`;
-const updateMesureMutation = graphql`
- mutation EditMesureViewUpdateMesureMutation($input: UpdateMesureInput!) {
- updateMesure(input: $input) {
- mesure {
+const updateMeasureMutation = graphql`
+ mutation EditMeasureViewUpdateMeasureMutation($input: UpdateMeasureInput!) {
+ updateMeasure(input: $input) {
+ measure {
id
name
description
@@ -43,26 +43,26 @@ const updateMesureMutation = graphql`
}
`;
-function EditMesureViewContent({
+function EditMeasureViewContent({
queryRef,
}: {
- queryRef: PreloadedQuery;
+ queryRef: PreloadedQuery;
}) {
const { organizationId } = useParams<{
organizationId: string;
}>();
- const { mesureId } = useParams();
+ const { measureId } = useParams();
const navigate = useNavigate();
const { toast } = useToast();
- const { node: mesure } = usePreloadedQuery(editMesureQuery, queryRef);
+ const { node: measure } = usePreloadedQuery(editMeasureQuery, queryRef);
const [formData, setFormData] = useState({
- name: mesure.name ?? "",
- description: mesure.description ?? "",
- category: mesure.category ?? ""
+ name: measure.name ?? "",
+ description: measure.description ?? "",
+ category: measure.category ?? ""
});
const [commit, isInFlight] =
- useMutation(updateMesureMutation);
+ useMutation(updateMeasureMutation);
const handleFieldChange = (field: keyof typeof formData, value: unknown) => {
setFormData((prev) => ({
@@ -86,7 +86,7 @@ function EditMesureViewContent({
commit({
variables: {
input: {
- id: mesureId!,
+ id: measureId!,
name: formData.name,
description: formData.description,
category: formData.category
@@ -96,7 +96,7 @@ function EditMesureViewContent({
if (errors) {
toast({
title: "Error",
- description: errors[0]?.message || "Failed to update mesure",
+ description: errors[0]?.message || "Failed to update measure",
variant: "destructive",
});
return;
@@ -104,10 +104,10 @@ function EditMesureViewContent({
toast({
title: "Success",
- description: "Mesure updated successfully",
+ description: "Measure updated successfully",
});
- navigate(`/organizations/${organizationId}/mesures/${mesureId}`);
+ navigate(`/organizations/${organizationId}/measures/${measureId}`);
},
onError(error) {
toast({
@@ -121,8 +121,8 @@ function EditMesureViewContent({
return (
- {isInFlight ? "Updating..." : "Update Mesure"}
+ {isInFlight ? "Updating..." : "Update Measure"}
@@ -169,24 +169,24 @@ function EditMesureViewContent({
);
}
-export default function EditMesureView() {
- const { mesureId } = useParams();
+export default function EditMeasureView() {
+ const { measureId } = useParams();
const [queryRef, loadQuery] =
- useQueryLoader(editMesureQuery);
+ useQueryLoader(editMeasureQuery);
useEffect(() => {
- if (mesureId) {
- loadQuery({ mesureId });
+ if (measureId) {
+ loadQuery({ measureId });
}
- }, [mesureId, loadQuery]);
+ }, [measureId, loadQuery]);
if (!queryRef) {
- return ;
+ return ;
}
return (
- }>
-
+ }>
+
);
}
diff --git a/apps/console/src/pages/organizations/mesures/MesureListPage.tsx b/apps/console/src/pages/organizations/measures/MeasureListPage.tsx
similarity index 75%
rename from apps/console/src/pages/organizations/mesures/MesureListPage.tsx
rename to apps/console/src/pages/organizations/measures/MeasureListPage.tsx
index 55694a0f6..6e64351c6 100644
--- a/apps/console/src/pages/organizations/mesures/MesureListPage.tsx
+++ b/apps/console/src/pages/organizations/measures/MeasureListPage.tsx
@@ -4,13 +4,13 @@ import { lazy } from "@probo/react-lazy";
import { useLocation } from "react-router";
import { ErrorBoundaryWithLocation } from "../ErrorBoundary";
-const MesureListView = lazy(() => import("./MesureListView"));
+const MeasureListView = lazy(() => import("./MeasureListView"));
-export function MesureListViewSkeleton() {
+export function MeasureListViewSkeleton() {
return (
@@ -31,13 +31,13 @@ export function MesureListViewSkeleton() {
);
}
-export function MesureListPage() {
+export function MeasureListPage() {
const location = useLocation();
return (
- }>
+ }>
-
+
);
diff --git a/apps/console/src/pages/organizations/mesures/MesureListView.tsx b/apps/console/src/pages/organizations/measures/MeasureListView.tsx
similarity index 79%
rename from apps/console/src/pages/organizations/mesures/MesureListView.tsx
rename to apps/console/src/pages/organizations/measures/MeasureListView.tsx
index d947b6d41..d3923cd23 100644
--- a/apps/console/src/pages/organizations/mesures/MesureListView.tsx
+++ b/apps/console/src/pages/organizations/measures/MeasureListView.tsx
@@ -21,11 +21,11 @@ import {
} from "lucide-react";
import { PageTemplate } from "@/components/PageTemplate";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
-import { MesureListViewQuery as MesureListViewQueryType } from "./__generated__/MesureListViewQuery.graphql";
-import { MesureListViewSkeleton } from "./MesureListPage";
+import { MeasureListViewQuery as MeasureListViewQueryType } from "./__generated__/MeasureListViewQuery.graphql";
+import { MeasureListViewSkeleton } from "./MeasureListPage";
import { Button } from "@/components/ui/button";
import { useToast } from "@/hooks/use-toast";
-import { MesureListViewImportMesureMutation as MesureListViewImportMesureMutationType } from "./__generated__/MesureListViewImportMesureMutation.graphql";
+import { MeasureListViewImportMeasureMutation as MeasureListViewImportMeasureMutationType } from "./__generated__/MeasureListViewImportMeasureMutation.graphql";
import {
Tooltip,
TooltipContent,
@@ -38,12 +38,12 @@ import {
PopoverTrigger,
} from "@/components/ui/popover";
-const mesureListViewQuery = graphql`
- query MesureListViewQuery($organizationId: ID!, $first: Int) {
+const measureListViewQuery = graphql`
+ query MeasureListViewQuery($organizationId: ID!, $first: Int) {
organization: node(id: $organizationId) {
id
... on Organization {
- mesures(first: $first) @connection(key: "MesureListView_mesures") {
+ measures(first: $first) @connection(key: "MeasureListView_measures") {
edges {
node {
id
@@ -61,13 +61,13 @@ const mesureListViewQuery = graphql`
}
`;
-const importMesureMutation = graphql`
- mutation MesureListViewImportMesureMutation(
- $input: ImportMesureInput!
+const importMeasureMutation = graphql`
+ mutation MeasureListViewImportMeasureMutation(
+ $input: ImportMeasureInput!
$connections: [ID!]!
) {
- importMesure(input: $input) {
- mesureEdges @appendEdge(connections: $connections) {
+ importMeasure(input: $input) {
+ measureEdges @appendEdge(connections: $connections) {
node {
id
name
@@ -82,7 +82,7 @@ const importMesureMutation = graphql`
}
`;
-interface Mesure {
+interface Measure {
id?: string;
name?: string;
description?: string;
@@ -98,7 +98,7 @@ interface Category {
name: string;
description: string;
progress: number;
- mesures: Mesure[];
+ measures: Measure[];
doneCount: number;
totalCount: number;
}
@@ -106,21 +106,21 @@ interface Category {
interface OrganizationData {
organization: {
id: string;
- mesures?: {
+ measures?: {
edges: Array<{
- node: Mesure;
+ node: Measure;
}>;
};
};
}
-function MesureListContent({
+function MeasureListContent({
queryRef,
}: {
- queryRef: PreloadedQuery ;
+ queryRef: PreloadedQuery;
}) {
- const data = usePreloadedQuery(
- mesureListViewQuery,
+ const data = usePreloadedQuery(
+ measureListViewQuery,
queryRef
) as unknown as OrganizationData;
@@ -129,8 +129,8 @@ function MesureListContent({
const [isImporting, setIsImporting] = useState(false);
const { toast } = useToast();
- const [importMesure] =
- useMutation(importMesureMutation);
+ const [importMeasure] =
+ useMutation(importMeasureMutation);
// Monitor URL hash for changes and update state accordingly
const [initialHashCategory] = useState(() =>
@@ -175,10 +175,10 @@ function MesureListContent({
};
}, [expandedCategories]);
- const mesures =
- data.organization.mesures?.edges.map((edge) => edge.node) ?? [];
+ const measures =
+ data.organization.measures?.edges.map((edge) => edge.node) ?? [];
- // Map mesure state to status for the new design
+ // Map measure state to status for the new design
const mapStateToStatus = (state?: string): string => {
if (!state) return "incomplete";
switch (state) {
@@ -195,48 +195,48 @@ function MesureListContent({
}
};
- const processedMesures = mesures.map((mesure: Mesure) => ({
- ...mesure,
- status: mapStateToStatus(mesure.state),
+ const processedMeasures = measures.map((measure: Measure) => ({
+ ...measure,
+ status: mapStateToStatus(measure.state),
}));
// Calculate global progress
- const implementedCount = processedMesures.filter(
- (mesure: Mesure) => mesure.status === "complete"
+ const implementedCount = processedMeasures.filter(
+ (measure: Measure) => measure.status === "complete"
).length;
- const notApplicableCount = processedMesures.filter(
- (mesure: Mesure) => mesure.status === "not-applicable"
+ const notApplicableCount = processedMeasures.filter(
+ (measure: Measure) => measure.status === "not-applicable"
).length;
- const totalMesures = processedMesures.length;
+ const totalMeasures = processedMeasures.length;
// Include not-applicable as effectively "complete" for progress percentage
const effectiveCompletedCount = implementedCount + notApplicableCount;
- const globalProgress = totalMesures
- ? Math.round((effectiveCompletedCount / totalMesures) * 100)
+ const globalProgress = totalMeasures
+ ? Math.round((effectiveCompletedCount / totalMeasures) * 100)
: 0;
// Get global status counts
- const globalStatusCounts = processedMesures.reduce(
- (acc: Record, mesure: Mesure) => {
- if (mesure.status) {
- acc[mesure.status] = (acc[mesure.status] || 0) + 1;
+ const globalStatusCounts = processedMeasures.reduce(
+ (acc: Record, measure: Measure) => {
+ if (measure.status) {
+ acc[measure.status] = (acc[measure.status] || 0) + 1;
}
return acc;
},
{} as Record
);
- // Group mesures by category
- const mesuresByCategory = processedMesures.reduce(
- (acc: Record, mesure: Mesure) => {
- if (!mesure?.category) return acc;
- if (!acc[mesure.category]) {
- acc[mesure.category] = [];
+ // Group measures by category
+ const measuresByCategory = processedMeasures.reduce(
+ (acc: Record, measure: Measure) => {
+ if (!measure?.category) return acc;
+ if (!acc[measure.category]) {
+ acc[measure.category] = [];
}
- acc[mesure.category].push(mesure);
+ acc[measure.category].push(measure);
return acc;
},
- {} as Record
+ {} as Record
);
// Function to toggle a category's expanded state
@@ -250,17 +250,17 @@ function MesureListContent({
});
};
- const categories: Category[] = Object.entries(mesuresByCategory)
- .map(([categoryName, categoryMesures]: [string, Mesure[]]) => {
- const catImplementedCount = categoryMesures.filter(
- (mesure) => mesure.status === "complete"
+ const categories: Category[] = Object.entries(measuresByCategory)
+ .map(([categoryName, categoryMeasures]: [string, Measure[]]) => {
+ const catImplementedCount = categoryMeasures.filter(
+ (measure) => measure.status === "complete"
).length;
- const catNotApplicableCount = categoryMesures.filter(
- (mesure) => mesure.status === "not-applicable"
+ const catNotApplicableCount = categoryMeasures.filter(
+ (measure) => measure.status === "not-applicable"
).length;
// Consider both "complete" and "not-applicable" as done for category progress
const catDoneCount = catImplementedCount + catNotApplicableCount;
- const catTotalCount = categoryMesures.length;
+ const catTotalCount = categoryMeasures.length;
const progress = catTotalCount
? Math.round((catDoneCount / catTotalCount) * 100)
: 0;
@@ -268,16 +268,16 @@ function MesureListContent({
return {
id: categoryName,
name: categoryName,
- description: `Mesures related to ${categoryName.toLowerCase()}`,
+ description: `Measures related to ${categoryName.toLowerCase()}`,
progress: progress,
- mesures: categoryMesures.sort((a, b) =>
+ measures: categoryMeasures.sort((a, b) =>
(a.name || "").localeCompare(b.name || "")
),
doneCount: catDoneCount,
totalCount: catTotalCount,
};
})
- .filter((category) => category.mesures.length > 0)
+ .filter((category) => category.measures.length > 0)
.sort((a, b) => a.name.localeCompare(b.name));
const getStatusIcon = (status: string) => {
@@ -303,12 +303,12 @@ function MesureListContent({
setIsImporting(true);
- importMesure({
+ importMeasure({
variables: {
connections: [
ConnectionHandler.getConnectionID(
data.organization.id,
- "MesureListView_mesures"
+ "MeasureListView_measures"
),
],
input: {
@@ -322,8 +322,8 @@ function MesureListContent({
onCompleted: () => {
setIsImporting(false);
toast({
- title: "Mesures imported",
- description: "Mesures have been imported successfully.",
+ title: "Measures imported",
+ description: "Measures have been imported successfully.",
variant: "default",
});
if (fileInputRef.current) {
@@ -333,7 +333,7 @@ function MesureListContent({
onError: (error) => {
setIsImporting(false);
toast({
- title: "Error importing mesures",
+ title: "Error importing measures",
description: error.message,
variant: "destructive",
});
@@ -343,8 +343,8 @@ function MesureListContent({
return (
fileInputRef.current?.click()}
disabled={isImporting}
>
- {isImporting ? "Importing..." : "Import Mesures"}
+ {isImporting ? "Importing..." : "Import Measures"}
-
- New Mesure
+
+ New Measure
}
>
- {/* Hidden file input for mesure import */}
+ {/* Hidden file input for measure import */}
- Mesure Implementation
+ Measure Implementation
{globalProgress}% complete
@@ -390,7 +390,7 @@ function MesureListContent({
className="bg-green-500 h-full"
style={{
width: `${
- (globalStatusCounts.complete / totalMesures) * 100
+ (globalStatusCounts.complete / totalMeasures) * 100
}%`,
}}
/>
@@ -401,7 +401,7 @@ function MesureListContent({
className="bg-blue-500 h-full"
style={{
width: `${
- (globalStatusCounts["in-progress"] / totalMesures) * 100
+ (globalStatusCounts["in-progress"] / totalMeasures) * 100
}%`,
}}
/>
@@ -412,7 +412,7 @@ function MesureListContent({
className="bg-red-500 h-full"
style={{
width: `${
- (globalStatusCounts.incomplete / totalMesures) * 100
+ (globalStatusCounts.incomplete / totalMeasures) * 100
}%`,
}}
/>
@@ -423,7 +423,7 @@ function MesureListContent({
className="bg-primary-bg h-full"
style={{
width: `${
- (globalStatusCounts["not-applicable"] / totalMesures) * 100
+ (globalStatusCounts["not-applicable"] / totalMeasures) * 100
}%`,
}}
/>
@@ -434,7 +434,7 @@ function MesureListContent({
className="bg-secondary h-full"
style={{
width: `${
- (globalStatusCounts["not-started"] / totalMesures) * 100
+ (globalStatusCounts["not-started"] / totalMeasures) * 100
}%`,
}}
/>
@@ -514,7 +514,7 @@ function MesureListContent({
{isExpanded && (
- {category.mesures.length > 0 ? (
+ {category.measures.length > 0 ? (
@@ -522,19 +522,19 @@ function MesureListContent({
|
Status
|
- Mesure |
+ Measure |
- {category.mesures.map((mesure) => (
+ {category.measures.map((measure) => (
|
- {mesure.status
- ? getStatusIcon(mesure.status)
+ {measure.status
+ ? getStatusIcon(measure.status)
: null}
|
@@ -544,11 +544,11 @@ function MesureListContent({
- {mesure.name}
+ {measure.name}
@@ -567,7 +567,7 @@ function MesureListContent({
@@ -580,20 +580,20 @@ function MesureListContent({
- {mesure.name}
+ {measure.name}
- {mesure.description && (
+ {measure.description && (
Why is this important:
- {mesure.description.startsWith(
+ {measure.description.startsWith(
"##"
)
- ? mesure.description
+ ? measure.description
.split("\n")
.find((line) =>
line.startsWith(
@@ -603,15 +603,15 @@ function MesureListContent({
?.replace("## Why?", "")
?.replace("## Why", "")
?.trim() ||
- mesure.description.split(
+ measure.description.split(
"\n"
)[1] ||
""
- : mesure.description.substring(
+ : measure.description.substring(
0,
180
) +
- (mesure.description.length >
+ (measure.description.length >
180
? "..."
: "")}
@@ -627,7 +627,7 @@ function MesureListContent({
asChild
>
Implementation guide
@@ -648,7 +648,7 @@ function MesureListContent({
) : (
- No mesures in this category
+ No measures in this category
)}
@@ -662,9 +662,9 @@ function MesureListContent({
);
}
-export default function MesureListView() {
+export default function MeasureListView() {
const [queryRef, loadQuery] =
- useQueryLoader (mesureListViewQuery);
+ useQueryLoader(measureListViewQuery);
const { organizationId } = useParams();
@@ -676,12 +676,12 @@ export default function MesureListView() {
}, [loadQuery, organizationId]);
if (!queryRef) {
- return ;
+ return ;
}
return (
- }>
-
+ }>
+
);
}
diff --git a/apps/console/src/pages/organizations/mesures/MesurePage.tsx b/apps/console/src/pages/organizations/measures/MeasurePage.tsx
similarity index 84%
rename from apps/console/src/pages/organizations/mesures/MesurePage.tsx
rename to apps/console/src/pages/organizations/measures/MeasurePage.tsx
index 236d31176..1e2241511 100644
--- a/apps/console/src/pages/organizations/mesures/MesurePage.tsx
+++ b/apps/console/src/pages/organizations/measures/MeasurePage.tsx
@@ -5,9 +5,9 @@ import { lazy } from "@probo/react-lazy";
import { useLocation } from "react-router";
import { ErrorBoundaryWithLocation } from "../ErrorBoundary";
-const MesureView = lazy(() => import("./MesureView"));
+const MeasureView = lazy(() => import("./MeasureView"));
-export function MesureViewSkeleton() {
+export function MeasureViewSkeleton() {
return (
}>
+ }>
-
+
);
diff --git a/apps/console/src/pages/organizations/mesures/MesureView.tsx b/apps/console/src/pages/organizations/measures/MeasureView.tsx
similarity index 92%
rename from apps/console/src/pages/organizations/mesures/MesureView.tsx
rename to apps/console/src/pages/organizations/measures/MeasureView.tsx
index 5268754f4..5f5b5fef4 100644
--- a/apps/console/src/pages/organizations/mesures/MesureView.tsx
+++ b/apps/console/src/pages/organizations/measures/MeasureView.tsx
@@ -80,34 +80,34 @@ import {
import { Badge } from "@/components/ui/badge";
import { PageTemplate } from "@/components/PageTemplate";
-import { MesureViewSkeleton } from "./MesurePage";
-import { MesureViewUpdateTaskStateMutation as MesureViewUpdateTaskStateMutationType } from "./__generated__/MesureViewUpdateTaskStateMutation.graphql";
-import { MesureViewCreateTaskMutation as MesureViewCreateTaskMutationType } from "./__generated__/MesureViewCreateTaskMutation.graphql";
-import { MesureViewDeleteTaskMutation as MesureViewDeleteTaskMutationType } from "./__generated__/MesureViewDeleteTaskMutation.graphql";
-import { MesureViewDeleteEvidenceMutation as MesureViewDeleteEvidenceMutationType } from "./__generated__/MesureViewDeleteEvidenceMutation.graphql";
-import { MesureViewAssignTaskMutation as MesureViewAssignTaskMutationType } from "./__generated__/MesureViewAssignTaskMutation.graphql";
-import { MesureViewUnassignTaskMutation as MesureViewUnassignTaskMutationType } from "./__generated__/MesureViewUnassignTaskMutation.graphql";
-import { MesureViewUpdateMesureStateMutation as MesureViewUpdateMesureStateMutationType } from "./__generated__/MesureViewUpdateMesureStateMutation.graphql";
-import { MesureViewQuery as MesureViewQueryType } from "./__generated__/MesureViewQuery.graphql";
+import { MeasureViewSkeleton } from "./MeasurePage";
+import { MeasureViewUpdateTaskStateMutation as MeasureViewUpdateTaskStateMutationType } from "./__generated__/MeasureViewUpdateTaskStateMutation.graphql";
+import { MeasureViewCreateTaskMutation as MeasureViewCreateTaskMutationType } from "./__generated__/MeasureViewCreateTaskMutation.graphql";
+import { MeasureViewDeleteTaskMutation as MeasureViewDeleteTaskMutationType } from "./__generated__/MeasureViewDeleteTaskMutation.graphql";
+import { MeasureViewDeleteEvidenceMutation as MeasureViewDeleteEvidenceMutationType } from "./__generated__/MeasureViewDeleteEvidenceMutation.graphql";
+import { MeasureViewAssignTaskMutation as MeasureViewAssignTaskMutationType } from "./__generated__/MeasureViewAssignTaskMutation.graphql";
+import { MeasureViewUnassignTaskMutation as MeasureViewUnassignTaskMutationType } from "./__generated__/MeasureViewUnassignTaskMutation.graphql";
+import { MeasureViewUpdateMeasureStateMutation as MeasureViewUpdateMeasureStateMutationType } from "./__generated__/MeasureViewUpdateMeasureStateMutation.graphql";
+import { MeasureViewQuery as MeasureViewQueryType } from "./__generated__/MeasureViewQuery.graphql";
import {
- MesureViewOrganizationQuery,
- MesureViewOrganizationQuery$data,
-} from "./__generated__/MesureViewOrganizationQuery.graphql";
+ MeasureViewOrganizationQuery,
+ MeasureViewOrganizationQuery$data,
+} from "./__generated__/MeasureViewOrganizationQuery.graphql";
import {
- MesureViewFrameworksQuery,
- MesureViewFrameworksQuery$data,
-} from "./__generated__/MesureViewFrameworksQuery.graphql";
+ MeasureViewFrameworksQuery,
+ MeasureViewFrameworksQuery$data,
+} from "./__generated__/MeasureViewFrameworksQuery.graphql";
import {
- MesureViewLinkedControlsQuery,
- MesureViewLinkedControlsQuery$data,
-} from "./__generated__/MesureViewLinkedControlsQuery.graphql";
-import { MesureViewCreateEvidenceMutation as MesureViewCreateEvidenceMutationType } from "./__generated__/MesureViewCreateEvidenceMutation.graphql";
-import { MesureViewFulfillEvidenceMutation as MesureViewFulfillEvidenceMutationType } from "./__generated__/MesureViewFulfillEvidenceMutation.graphql";
-import { MesureViewCreateControlMappingMutation } from "./__generated__/MesureViewCreateControlMappingMutation.graphql";
-import { MesureViewDeleteControlMappingMutation } from "./__generated__/MesureViewDeleteControlMappingMutation.graphql";
-import { MesureViewRisksQuery$data } from "./__generated__/MesureViewRisksQuery.graphql";
-import { MesureViewRisksQuery } from "./__generated__/MesureViewRisksQuery.graphql";
-import { MesureViewDeleteMesureMutation } from "./__generated__/MesureViewDeleteMesureMutation.graphql";
+ MeasureViewLinkedControlsQuery,
+ MeasureViewLinkedControlsQuery$data,
+} from "./__generated__/MeasureViewLinkedControlsQuery.graphql";
+import { MeasureViewCreateEvidenceMutation as MeasureViewCreateEvidenceMutationType } from "./__generated__/MeasureViewCreateEvidenceMutation.graphql";
+import { MeasureViewFulfillEvidenceMutation as MeasureViewFulfillEvidenceMutationType } from "./__generated__/MeasureViewFulfillEvidenceMutation.graphql";
+import { MeasureViewCreateControlMappingMutation } from "./__generated__/MeasureViewCreateControlMappingMutation.graphql";
+import { MeasureViewDeleteControlMappingMutation } from "./__generated__/MeasureViewDeleteControlMappingMutation.graphql";
+import { MeasureViewRisksQuery$data } from "./__generated__/MeasureViewRisksQuery.graphql";
+import { MeasureViewRisksQuery } from "./__generated__/MeasureViewRisksQuery.graphql";
+import { MeasureViewDeleteMeasureMutation } from "./__generated__/MeasureViewDeleteMeasureMutation.graphql";
// Function to format ISO8601 duration to human-readable format
const formatDuration = (isoDuration: string): string => {
@@ -146,16 +146,16 @@ const formatDuration = (isoDuration: string): string => {
}
};
-const mesureViewQuery = graphql`
- query MesureViewQuery($mesureId: ID!) {
- mesure: node(id: $mesureId) {
+const measureViewQuery = graphql`
+ query MeasureViewQuery($measureId: ID!) {
+ measure: node(id: $measureId) {
id
- ... on Mesure {
+ ... on Measure {
name
description
state
category
- tasks(first: 100) @connection(key: "MesureView_tasks") {
+ tasks(first: 100) @connection(key: "MeasureView_tasks") {
__id
edges {
node {
@@ -169,7 +169,7 @@ const mesureViewQuery = graphql`
fullName
primaryEmailAddress
}
- evidences(first: 50) @connection(key: "MesureView_evidences") {
+ evidences(first: 50) @connection(key: "MeasureView_evidences") {
__id
edges {
node {
@@ -194,7 +194,7 @@ const mesureViewQuery = graphql`
`;
const updateTaskStateMutation = graphql`
- mutation MesureViewUpdateTaskStateMutation($input: UpdateTaskInput!) {
+ mutation MeasureViewUpdateTaskStateMutation($input: UpdateTaskInput!) {
updateTask(input: $input) {
task {
id
@@ -206,7 +206,7 @@ const updateTaskStateMutation = graphql`
`;
const createTaskMutation = graphql`
- mutation MesureViewCreateTaskMutation(
+ mutation MeasureViewCreateTaskMutation(
$input: CreateTaskInput!
$connections: [ID!]!
) {
@@ -230,7 +230,7 @@ const createTaskMutation = graphql`
`;
const deleteTaskMutation = graphql`
- mutation MesureViewDeleteTaskMutation(
+ mutation MeasureViewDeleteTaskMutation(
$input: DeleteTaskInput!
$connections: [ID!]!
) {
@@ -241,7 +241,7 @@ const deleteTaskMutation = graphql`
`;
const createEvidenceMutation = graphql`
- mutation MesureViewCreateEvidenceMutation(
+ mutation MeasureViewCreateEvidenceMutation(
$input: CreateEvidenceInput!
$connections: [ID!]!
) {
@@ -265,7 +265,7 @@ const createEvidenceMutation = graphql`
`;
const deleteEvidenceMutation = graphql`
- mutation MesureViewDeleteEvidenceMutation(
+ mutation MeasureViewDeleteEvidenceMutation(
$input: DeleteEvidenceInput!
$connections: [ID!]!
) {
@@ -277,7 +277,7 @@ const deleteEvidenceMutation = graphql`
// Add a GraphQL query to fetch the fileUrl for an evidence item
const getEvidenceFileUrlQuery = graphql`
- query MesureViewGetEvidenceFileUrlQuery($evidenceId: ID!) {
+ query MeasureViewGetEvidenceFileUrlQuery($evidenceId: ID!) {
node(id: $evidenceId) {
... on Evidence {
id
@@ -288,7 +288,7 @@ const getEvidenceFileUrlQuery = graphql`
`;
const assignTaskMutation = graphql`
- mutation MesureViewAssignTaskMutation($input: AssignTaskInput!) {
+ mutation MeasureViewAssignTaskMutation($input: AssignTaskInput!) {
assignTask(input: $input) {
task {
id
@@ -303,7 +303,7 @@ const assignTaskMutation = graphql`
`;
const unassignTaskMutation = graphql`
- mutation MesureViewUnassignTaskMutation($input: UnassignTaskInput!) {
+ mutation MeasureViewUnassignTaskMutation($input: UnassignTaskInput!) {
unassignTask(input: $input) {
task {
id
@@ -317,10 +317,10 @@ const unassignTaskMutation = graphql`
}
`;
-const updateMesureStateMutation = graphql`
- mutation MesureViewUpdateMesureStateMutation($input: UpdateMesureInput!) {
- updateMesure(input: $input) {
- mesure {
+const updateMeasureStateMutation = graphql`
+ mutation MeasureViewUpdateMeasureStateMutation($input: UpdateMeasureInput!) {
+ updateMeasure(input: $input) {
+ measure {
id
state
}
@@ -328,24 +328,24 @@ const updateMesureStateMutation = graphql`
}
`;
-const deleteMesureMutation = graphql`
- mutation MesureViewDeleteMesureMutation(
- $input: DeleteMesureInput!
+const deleteMeasureMutation = graphql`
+ mutation MeasureViewDeleteMeasureMutation(
+ $input: DeleteMeasureInput!
$connections: [ID!]!
) {
- deleteMesure(input: $input) {
- deletedMesureId @deleteEdge(connections: $connections)
+ deleteMeasure(input: $input) {
+ deletedMeasureId @deleteEdge(connections: $connections)
}
}
`;
const organizationQuery = graphql`
- query MesureViewOrganizationQuery($organizationId: ID!) {
+ query MeasureViewOrganizationQuery($organizationId: ID!) {
organization: node(id: $organizationId) {
id
... on Organization {
peoples(first: 100, orderBy: { direction: ASC, field: FULL_NAME })
- @connection(key: "MesureView_peoples") {
+ @connection(key: "MeasureView_peoples") {
edges {
node {
id
@@ -361,7 +361,7 @@ const organizationQuery = graphql`
// New queries and mutations for Control Mapping
const frameworksQuery = graphql`
- query MesureViewFrameworksQuery($organizationId: ID!) {
+ query MeasureViewFrameworksQuery($organizationId: ID!) {
organization: node(id: $organizationId) {
id
... on Organization {
@@ -389,11 +389,11 @@ const frameworksQuery = graphql`
`;
const linkedControlsQuery = graphql`
- query MesureViewLinkedControlsQuery($mesureId: ID!) {
- mesure: node(id: $mesureId) {
+ query MeasureViewLinkedControlsQuery($measureId: ID!) {
+ measure: node(id: $measureId) {
id
- ... on Mesure {
- controls(first: 100) @connection(key: "MesureView_controls") {
+ ... on Measure {
+ controls(first: 100) @connection(key: "MeasureView_controls") {
edges {
node {
id
@@ -409,20 +409,20 @@ const linkedControlsQuery = graphql`
`;
const createControlMappingMutation = graphql`
- mutation MesureViewCreateControlMappingMutation(
- $input: CreateControlMesureMappingInput!
+ mutation MeasureViewCreateControlMappingMutation(
+ $input: CreateControlMeasureMappingInput!
) {
- createControlMesureMapping(input: $input) {
+ createControlMeasureMapping(input: $input) {
success
}
}
`;
const deleteControlMappingMutation = graphql`
- mutation MesureViewDeleteControlMappingMutation(
- $input: DeleteControlMesureMappingInput!
+ mutation MeasureViewDeleteControlMappingMutation(
+ $input: DeleteControlMeasureMappingInput!
) {
- deleteControlMesureMapping(input: $input) {
+ deleteControlMeasureMapping(input: $input) {
success
}
}
@@ -430,7 +430,7 @@ const deleteControlMappingMutation = graphql`
// Add a mutation to fulfill evidence
const fulfillEvidenceMutation = graphql`
- mutation MesureViewFulfillEvidenceMutation(
+ mutation MeasureViewFulfillEvidenceMutation(
$input: FulfillEvidenceInput!
$connections: [ID!]!
) {
@@ -453,13 +453,13 @@ const fulfillEvidenceMutation = graphql`
}
`;
-// Add query to fetch risks linked to a mesure
-const mesureRisksQuery = graphql`
- query MesureViewRisksQuery($mesureId: ID!) {
- mesure: node(id: $mesureId) {
+// Add query to fetch risks linked to a measure
+const measureRisksQuery = graphql`
+ query MeasureViewRisksQuery($measureId: ID!) {
+ measure: node(id: $measureId) {
id
- ... on Mesure {
- risks(first: 100) @connection(key: "MesureView_risks") {
+ ... on Measure {
+ risks(first: 100) @connection(key: "MeasureView_risks") {
edges {
node {
id
@@ -481,25 +481,25 @@ const mesureRisksQuery = graphql`
}
`;
-function MesureViewContent({
+function MeasureViewContent({
queryRef,
}: {
- queryRef: PreloadedQuery;
+ queryRef: PreloadedQuery;
}) {
- const data = usePreloadedQuery(
- mesureViewQuery,
+ const data = usePreloadedQuery(
+ measureViewQuery,
queryRef
);
const navigate = useNavigate();
const { toast } = useToast();
- const { organizationId, mesureId } = useParams<{
+ const { organizationId, measureId } = useParams<{
organizationId: string;
- mesureId: string;
+ measureId: string;
}>();
const environment = useRelayEnvironment();
- const [commitDeleteMesure, isDeletingMesure] = useMutation(deleteMesureMutation);
- const [isDeleteMesureOpen, setIsDeleteMesureOpen] = useState(false);
+ const [commitDeleteMeasure, isDeletingMeasure] = useMutation(deleteMeasureMutation);
+ const [isDeleteMeasureOpen, setIsDeleteMeasureOpen] = useState(false);
// Add state for main content tabs
const [mainContentTab, setMainContentTab] = useState("tasks");
@@ -510,15 +510,15 @@ function MesureViewContent({
// Load organization data for people selector
const [organizationData, setOrganizationData] =
- useState(null);
+ useState(null);
// Control mapping state
const [isControlMappingDialogOpen, setIsControlMappingDialogOpen] =
useState(false);
const [frameworksData, setFrameworksData] =
- useState(null);
+ useState(null);
const [linkedControlsData, setLinkedControlsData] =
- useState(null);
+ useState(null);
const [controlSearchQuery, setControlSearchQuery] = useState("");
const [selectedFrameworkId, setSelectedFrameworkId] = useState(
null
@@ -529,17 +529,17 @@ function MesureViewContent({
// Create mutation hooks for control mapping
const [commitCreateControlMapping] =
- useMutation(
+ useMutation(
createControlMappingMutation
);
const [commitDeleteControlMapping] =
- useMutation(
+ useMutation(
deleteControlMappingMutation
);
useEffect(() => {
if (organizationId) {
- fetchQuery(environment, organizationQuery, {
+ fetchQuery(environment, organizationQuery, {
organizationId,
}).subscribe({
next: (data) => {
@@ -554,11 +554,11 @@ function MesureViewContent({
// Load linked controls when component mounts
useEffect(() => {
- if (mesureId) {
- fetchQuery(
+ if (measureId) {
+ fetchQuery(
environment,
linkedControlsQuery,
- { mesureId }
+ { measureId }
).subscribe({
next: (data) => {
setLinkedControlsData(data);
@@ -568,18 +568,18 @@ function MesureViewContent({
},
});
}
- }, [environment, mesureId]);
+ }, [environment, measureId]);
// Add state for risks data
- const [risksData, setRisksData] = useState(
+ const [risksData, setRisksData] = useState(
null
);
// Load risks data when component mounts
useEffect(() => {
- if (mesureId) {
- fetchQuery(environment, mesureRisksQuery, {
- mesureId,
+ if (measureId) {
+ fetchQuery(environment, measureRisksQuery, {
+ measureId,
}).subscribe({
next: (data) => {
setRisksData(data);
@@ -589,7 +589,7 @@ function MesureViewContent({
},
});
}
- }, [environment, mesureId]);
+ }, [environment, measureId]);
const formatState = (state: string | undefined): string => {
if (!state) return "";
@@ -618,30 +618,30 @@ function MesureViewContent({
return "bg-secondary-bg text-primary";
};
- const [updateTask] = useMutation(
+ const [updateTask] = useMutation(
updateTaskStateMutation
);
const [createTask] =
- useMutation(createTaskMutation);
+ useMutation(createTaskMutation);
const [deleteTask] =
- useMutation(deleteTaskMutation);
- const [createEvidence] = useMutation(
+ useMutation(deleteTaskMutation);
+ const [createEvidence] = useMutation(
createEvidenceMutation
);
- const [deleteEvidence] = useMutation(
+ const [deleteEvidence] = useMutation(
deleteEvidenceMutation
);
const [assignTask] =
- useMutation(assignTaskMutation);
+ useMutation(assignTaskMutation);
const [unassignTask] =
- useMutation(unassignTaskMutation);
- const [fulfillEvidence] = useMutation(
+ useMutation(unassignTaskMutation);
+ const [fulfillEvidence] = useMutation(
fulfillEvidenceMutation
);
- const [updateMesureState] =
- useMutation(
- updateMesureStateMutation
+ const [updateMeasureState] =
+ useMutation(
+ updateMeasureStateMutation
);
const [isCreateTaskOpen, setIsCreateTaskOpen] = useState(false);
@@ -724,7 +724,7 @@ function MesureViewContent({
// Track if task panel is open
const [isTaskPanelOpen, setIsTaskPanelOpen] = useState(false);
- const tasks = data.mesure.tasks?.edges.map((edge) => edge.node) || [];
+ const tasks = data.measure.tasks?.edges.map((edge) => edge.node) || [];
// Add useEffect to handle URL parameters for task selection
useEffect(() => {
@@ -866,10 +866,10 @@ function MesureViewContent({
return;
}
- if (!data.mesure.id) {
+ if (!data.measure.id) {
toast({
title: "Error creating task",
- description: "Mesure ID is missing",
+ description: "Measure ID is missing",
variant: "destructive",
});
return;
@@ -879,9 +879,9 @@ function MesureViewContent({
createTask({
variables: {
- connections: [`${data.mesure.tasks?.__id}`],
+ connections: [`${data.measure.tasks?.__id}`],
input: {
- mesureId: data.mesure.id,
+ measureId: data.measure.id,
name: newTaskName,
description: newTaskDescription,
timeEstimate: isoTimeEstimate === "" ? null : isoTimeEstimate,
@@ -919,7 +919,7 @@ function MesureViewContent({
deleteTask({
variables: {
- connections: [`${data.mesure.tasks?.__id}`],
+ connections: [`${data.measure.tasks?.__id}`],
input: {
taskId: taskToDelete.id,
},
@@ -942,8 +942,8 @@ function MesureViewContent({
});
};
- const handleEditMesure = () => {
- navigate(`/organizations/${organizationId}/mesures/${mesureId}/edit`);
+ const handleEditMeasure = () => {
+ navigate(`/organizations/${organizationId}/measures/${measureId}/edit`);
};
const handleCreateEvidence = (taskId: string, taskName: string) => {
@@ -1415,12 +1415,12 @@ function MesureViewContent({
});
};
- // Function to handle mesure state change
- const handleMesureStateChange = (newState: string) => {
- updateMesureState({
+ // Function to handle measure state change
+ const handleMeasureStateChange = (newState: string) => {
+ updateMeasureState({
variables: {
input: {
- id: data.mesure.id,
+ id: data.measure.id,
state: newState as
| "NOT_STARTED"
| "IN_PROGRESS"
@@ -1430,15 +1430,15 @@ function MesureViewContent({
},
onCompleted: () => {
toast({
- title: "Mesure state updated",
- description: `Mesure state has been updated to ${formatState(
+ title: "Measure state updated",
+ description: `Measure state has been updated to ${formatState(
newState
)}.`,
});
},
onError: (error) => {
toast({
- title: "Error updating mesure state",
+ title: "Error updating measure state",
description: error.message,
variant: "destructive",
});
@@ -1569,12 +1569,12 @@ function MesureViewContent({
// Control mapping functions
const loadFrameworksAndControls = useCallback(() => {
- if (!organizationId || !mesureId) return;
+ if (!organizationId || !measureId) return;
setIsLoadingControls(true);
// Fetch all frameworks and their controls
- fetchQuery(environment, frameworksQuery, {
+ fetchQuery(environment, frameworksQuery, {
organizationId,
}).subscribe({
next: (data) => {
@@ -1592,12 +1592,12 @@ function MesureViewContent({
}
},
complete: () => {
- // Fetch already linked controls for this mesure
- fetchQuery(
+ // Fetch already linked controls for this measure
+ fetchQuery(
environment,
linkedControlsQuery,
{
- mesureId,
+ measureId,
}
).subscribe({
next: (data) => {
@@ -1625,7 +1625,7 @@ function MesureViewContent({
});
},
});
- }, [environment, mesureId, organizationId, selectedFrameworkId, toast]);
+ }, [environment, measureId, organizationId, selectedFrameworkId, toast]);
const getControls = useCallback(() => {
if (!frameworksData?.organization?.frameworks?.edges) return [];
@@ -1649,8 +1649,8 @@ function MesureViewContent({
}, [frameworksData, selectedFrameworkId]);
const getLinkedControls = useCallback(() => {
- if (!linkedControlsData?.mesure?.controls?.edges) return [];
- return (linkedControlsData.mesure.controls.edges || []).map(
+ if (!linkedControlsData?.measure?.controls?.edges) return [];
+ return (linkedControlsData.measure.controls.edges || []).map(
(edge) => edge.node
);
}, [linkedControlsData]);
@@ -1665,7 +1665,7 @@ function MesureViewContent({
const handleLinkControl = useCallback(
(controlId: string) => {
- if (!mesureId) return;
+ if (!measureId) return;
setIsLinkingControl(true);
@@ -1673,7 +1673,7 @@ function MesureViewContent({
variables: {
input: {
controlId,
- mesureId,
+ measureId,
},
},
onCompleted: (_, errors) => {
@@ -1690,11 +1690,11 @@ function MesureViewContent({
}
// Refresh linked controls data
- fetchQuery(
+ fetchQuery(
environment,
linkedControlsQuery,
{
- mesureId,
+ measureId,
}
).subscribe({
next: (data) => {
@@ -1707,7 +1707,7 @@ function MesureViewContent({
toast({
title: "Success",
- description: "Control successfully linked to mesure.",
+ description: "Control successfully linked to measure.",
});
},
onError: (error) => {
@@ -1721,12 +1721,12 @@ function MesureViewContent({
},
});
},
- [commitCreateControlMapping, environment, mesureId, toast]
+ [commitCreateControlMapping, environment, measureId, toast]
);
const handleUnlinkControl = useCallback(
(controlId: string) => {
- if (!mesureId) return;
+ if (!measureId) return;
setIsUnlinkingControl(true);
@@ -1734,7 +1734,7 @@ function MesureViewContent({
variables: {
input: {
controlId,
- mesureId,
+ measureId,
},
},
onCompleted: (_, errors) => {
@@ -1752,10 +1752,10 @@ function MesureViewContent({
// Refresh linked controls data
fetchQuery(environment, linkedControlsQuery, {
- mesureId,
+ measureId,
}).subscribe({
next: (data: unknown) => {
- setLinkedControlsData(data as MesureViewLinkedControlsQuery$data);
+ setLinkedControlsData(data as MeasureViewLinkedControlsQuery$data);
},
error: (error: Error) => {
console.error("Error refreshing linked controls:", error);
@@ -1764,7 +1764,7 @@ function MesureViewContent({
toast({
title: "Success",
- description: "Control successfully unlinked from mesure.",
+ description: "Control successfully unlinked from measure.",
});
},
onError: (error) => {
@@ -1778,7 +1778,7 @@ function MesureViewContent({
},
});
},
- [commitDeleteControlMapping, environment, mesureId, toast]
+ [commitDeleteControlMapping, environment, measureId, toast]
);
const handleOpenControlMappingDialog = useCallback(() => {
@@ -1834,33 +1834,33 @@ function MesureViewContent({
return "Very High";
};
- const handleDeleteMesure = () => {
- setIsDeleteMesureOpen(true);
+ const handleDeleteMeasure = () => {
+ setIsDeleteMeasureOpen(true);
};
- const confirmDeleteMesure = () => {
+ const confirmDeleteMeasure = () => {
const connectionId = ConnectionHandler.getConnectionID(
organizationId!,
- "MesureListView_mesures"
+ "MeasureListView_measures"
);
- commitDeleteMesure({
+ commitDeleteMeasure({
variables: {
connections: [connectionId],
input: {
- mesureId: mesureId!,
+ measureId: measureId!,
},
},
onCompleted: () => {
toast({
- title: "Mesure deleted",
- description: "Mesure has been deleted successfully.",
+ title: "Measure deleted",
+ description: "Measure has been deleted successfully.",
});
- navigate(`/organizations/${organizationId}/mesures`);
+ navigate(`/organizations/${organizationId}/measures`);
},
onError: (error) => {
toast({
- title: "Error deleting mesure",
+ title: "Error deleting measure",
description: error.message,
variant: "destructive",
});
@@ -1870,19 +1870,19 @@ function MesureViewContent({
return (
Edit
handleDeleteMesure()}
- disabled={isDeletingMesure}
+ onClick={() => handleDeleteMeasure()}
+ disabled={isDeletingMeasure}
>
- {isDeletingMesure ? "Deleting..." : "Delete"}
+ {isDeletingMeasure ? "Deleting..." : "Delete"}
}
@@ -1905,7 +1905,7 @@ function MesureViewContent({
- {data.mesure.description}
+ {data.measure.description}
@@ -1931,20 +1931,20 @@ function MesureViewContent({
Controls
- {linkedControlsData?.mesure?.controls?.edges &&
- linkedControlsData.mesure.controls.edges.length > 0 && (
+ {linkedControlsData?.measure?.controls?.edges &&
+ linkedControlsData.measure.controls.edges.length > 0 && (
- {linkedControlsData.mesure.controls.edges.length}
+ {linkedControlsData.measure.controls.edges.length}
)}
Risks
- {risksData?.mesure?.risks?.edges &&
- risksData.mesure.risks.edges.length > 0 && (
+ {risksData?.measure?.risks?.edges &&
+ risksData.measure.risks.edges.length > 0 && (
- {risksData.mesure.risks.edges.length}
+ {risksData.measure.risks.edges.length}
)}
@@ -1973,10 +1973,10 @@ function MesureViewContent({
>
- Map Mesure to Controls
+ Map Measure to Controls
- Search and select controls to link to this mesure. This
- helps track which controls are addressed by this mesure.
+ Search and select controls to link to this measure. This
+ helps track which controls are addressed by this measure.
@@ -2125,8 +2125,8 @@ function MesureViewContent({
{/* Linked Controls List */}
- {linkedControlsData?.mesure?.controls?.edges &&
- linkedControlsData.mesure.controls.edges.length > 0 ? (
+ {linkedControlsData?.measure?.controls?.edges &&
+ linkedControlsData.measure.controls.edges.length > 0 ? (
@@ -2174,7 +2174,7 @@ function MesureViewContent({
) : (
- No controls linked to this mesure yet. Click "Map to
+ No controls linked to this measure yet. Click "Map to
Controls" to link controls.
)}
@@ -2207,7 +2207,7 @@ function MesureViewContent({
Create New Task
- Add a new task to this mesure. Click save when
+ Add a new task to this measure. Click save when
you're done.
@@ -2792,8 +2792,8 @@ function MesureViewContent({
- {risksData?.mesure?.risks?.edges &&
- risksData.mesure.risks.edges.length > 0 ? (
+ {risksData?.measure?.risks?.edges &&
+ risksData.measure.risks.edges.length > 0 ? (
@@ -2813,7 +2813,7 @@ function MesureViewContent({
- {risksData.mesure.risks.edges.map(({ node }) => (
+ {risksData.measure.risks.edges.map(({ node }) => (
) : (
- No risks linked to this mesure yet.
+ No risks linked to this measure yet.
)}
@@ -3654,28 +3654,28 @@ function MesureViewContent({
- {/* Delete Mesure Confirmation Dialog */}
- | |