From 43ab2dd632549797a4633d6a30524cb4f13ca689 Mon Sep 17 00:00:00 2001 From: Markus Hauru Date: Mon, 30 May 2022 13:42:56 +0100 Subject: [PATCH] Add Create Group to PermissionManager. Also fix a bug in CaseContainer. --- frontend/src/components/CaseContainer.js | 28 ++++++----- .../src/components/CasePermissionsManager.js | 29 +++++++---- frontend/src/components/CreateGroup.js | 50 +++++++++++++++++++ frontend/src/components/Groups.js | 32 +----------- frontend/src/components/PermissionSelector.js | 12 ++--- 5 files changed, 92 insertions(+), 59 deletions(-) create mode 100644 frontend/src/components/CreateGroup.js diff --git a/frontend/src/components/CaseContainer.js b/frontend/src/components/CaseContainer.js index 0c230e89..2657d281 100644 --- a/frontend/src/components/CaseContainer.js +++ b/frontend/src/components/CaseContainer.js @@ -50,19 +50,21 @@ class CaseContainer extends Component { }, }; const res = await fetch(this.url + id, requestOptions); - const json_response = await res.json(); - if ( - JSON.stringify(this.state.assurance_case) !== - JSON.stringify(json_response) - ) { - this.setState({ loading: true }); - this.setState({ - assurance_case: json_response, - }); - this.setState({ - mermaid_md: jsonToMermaid(this.state.assurance_case), - }); - this.setState({ loading: false }); + if (res.status === 200) { + const json_response = await res.json(); + if ( + JSON.stringify(this.state.assurance_case) !== + JSON.stringify(json_response) + ) { + this.setState({ loading: true }); + this.setState({ + assurance_case: json_response, + }); + this.setState({ + mermaid_md: jsonToMermaid(this.state.assurance_case), + }); + this.setState({ loading: false }); + } } }; diff --git a/frontend/src/components/CasePermissionsManager.js b/frontend/src/components/CasePermissionsManager.js index 130b9839..280de364 100644 --- a/frontend/src/components/CasePermissionsManager.js +++ b/frontend/src/components/CasePermissionsManager.js @@ -2,6 +2,7 @@ import React, { Component } from "react"; import { useNavigate, useParams } from "react-router-dom"; import { getBaseURL } from "./utils.js"; import { Box, Button, Form, Heading, Text } from "grommet"; +import CreateGroup from "./CreateGroup.js"; import PermissionSelector from "./PermissionSelector.js"; import { removeArrayElement } from "./utils.js"; @@ -16,7 +17,7 @@ class CasePermissionsManager extends Component { }; } - componentDidMount() { + getGroups() { const requestOptions = { headers: { Authorization: `Token ${localStorage.getItem("token")}`, @@ -35,6 +36,10 @@ class CasePermissionsManager extends Component { }); } + componentDidMount() { + this.getGroups(); + } + dialValue(group, assurance_case) { if (group.editable_cases.includes(assurance_case.id)) return "Edit"; if (group.viewable_cases.includes(assurance_case.id)) return "View"; @@ -52,15 +57,15 @@ class CasePermissionsManager extends Component { } renderGroupDials(group) { - const initialValue = this.getGroupPermission(group); - if (initialValue === undefined) + const value = this.getGroupPermission(group); + if (value === undefined) return Loading permissions...; return ( {group.name} this.setGroupPermission(group, value)} /> @@ -104,13 +109,19 @@ class CasePermissionsManager extends Component { render() { return ( -
- Group permissions + + + Group permissions + + {this.state.groups.map(this.renderGroupDials.bind(this))} +