diff --git a/jams-react-client/src/views/Blueprint/EditBlueprintConfiguration.js b/jams-react-client/src/views/Blueprint/EditBlueprintConfiguration.js index 28ee9c356c0db3944821326bcd0352e60a53bfa4..b017d600e6c7848764c771991d6bf31e4ee286b4 100644 --- a/jams-react-client/src/views/Blueprint/EditBlueprintConfiguration.js +++ b/jams-react-client/src/views/Blueprint/EditBlueprintConfiguration.js @@ -8,23 +8,15 @@ import InputLabel from "@material-ui/core/InputLabel"; import Grid from '@material-ui/core/Grid'; import GridItem from "components/Grid/GridItem.js"; import GridContainer from "components/Grid/GridContainer.js"; -import CustomInput from "components/CustomInput/CustomInput.js"; -import Button from "components/CustomButtons/Button.js"; import Card from "components/Card/Card.js"; import CardHeader from "components/Card/CardHeader.js"; import CardIcon from "components/Card/CardIcon.js"; -import CardAvatar from "components/Card/CardAvatar.js"; import CardBody from "components/Card/CardBody.js"; -import CardFooter from "components/Card/CardFooter.js"; -import Devices from "components/Devices/Devices.js"; -import Search from "@material-ui/icons/Search"; import FormGroup from '@material-ui/core/FormGroup'; import FormControlLabel from '@material-ui/core/FormControlLabel'; import FormControl from '@material-ui/core/FormControl'; import Input from '@material-ui/core/Input'; import InputAdornment from '@material-ui/core/InputAdornment'; -import Slider from '@material-ui/core/Slider'; -import Typography from "@material-ui/core/Typography"; import DnsOutlinedIcon from '@material-ui/icons/DnsOutlined'; import AccountCircleIcon from '@material-ui/icons/AccountCircle'; @@ -48,11 +40,6 @@ import dashboardStyle from "assets/jss/material-dashboard-react/views/dashboardS import { debounce } from "lodash"; -const CONTAINER_HEIGHT = 200 - -const fileUpload = require('fuctbase64'); - - const styles = (theme)=> ( { ...dashboardStyle, diff --git a/jams-react-client/src/views/Blueprint/EditBlueprintPermissions.js b/jams-react-client/src/views/Blueprint/EditBlueprintPermissions.js index 4d447d5f05d4b216f68359328ac58ba2400afdaf..0c45eeaba9598172f63a77df0eb1f8255d463307 100644 --- a/jams-react-client/src/views/Blueprint/EditBlueprintPermissions.js +++ b/jams-react-client/src/views/Blueprint/EditBlueprintPermissions.js @@ -3,28 +3,16 @@ import { useHistory } from 'react-router-dom'; // @material-ui/core components import { makeStyles } from "@material-ui/core/styles"; import Checkbox from '@material-ui/core/Checkbox'; -import InputLabel from "@material-ui/core/InputLabel"; // core components import Grid from '@material-ui/core/Grid'; import GridItem from "components/Grid/GridItem.js"; import GridContainer from "components/Grid/GridContainer.js"; -import CustomInput from "components/CustomInput/CustomInput.js"; -import Button from "components/CustomButtons/Button.js"; import Card from "components/Card/Card.js"; import CardHeader from "components/Card/CardHeader.js"; import CardIcon from "components/Card/CardIcon.js"; -import CardAvatar from "components/Card/CardAvatar.js"; import CardBody from "components/Card/CardBody.js"; -import CardFooter from "components/Card/CardFooter.js"; -import Devices from "components/Devices/Devices.js"; -import Search from "@material-ui/icons/Search"; import FormGroup from '@material-ui/core/FormGroup'; import FormControlLabel from '@material-ui/core/FormControlLabel'; -import FormControl from '@material-ui/core/FormControl'; -import Input from '@material-ui/core/Input'; -import InputAdornment from '@material-ui/core/InputAdornment'; -import Slider from '@material-ui/core/Slider'; -import Typography from "@material-ui/core/Typography"; import Snackbar from '@material-ui/core/Snackbar'; @@ -41,11 +29,6 @@ import dashboardStyle from "assets/jss/material-dashboard-react/views/dashboardS import MuiAlert from '@material-ui/lab/Alert'; -const CONTAINER_HEIGHT = 200 - -const fileUpload = require('fuctbase64'); - - const styles = (theme)=> ( { ...dashboardStyle, diff --git a/jams-react-client/src/views/Blueprints/Blueprints.js b/jams-react-client/src/views/Blueprints/Blueprints.js index d1915fcfd59372a5fcc92321f9006e5d4b824fcc..013a867ae1b829b340710f2334c59090ec382238 100644 --- a/jams-react-client/src/views/Blueprints/Blueprints.js +++ b/jams-react-client/src/views/Blueprints/Blueprints.js @@ -1,6 +1,5 @@ import React, { useCallback, useEffect } from "react"; import { useHistory } from 'react-router-dom'; -import { Switch, Route, Redirect } from "react-router-dom"; // @material-ui/core components import { makeStyles } from "@material-ui/core/styles"; import InputLabel from "@material-ui/core/InputLabel"; @@ -11,28 +10,18 @@ import CustomInput from "components/CustomInput/CustomInput.js"; import Button from "components/CustomButtons/Button.js"; import IconButton from '@material-ui/core/IconButton'; import Card from "components/Card/Card.js"; -import CardHeader from "components/Card/CardHeader.js"; -import CardAvatar from "components/Card/CardAvatar.js"; import CardBody from "components/Card/CardBody.js"; import CardFooter from "components/Card/CardFooter.js"; -import UserProfile from "views/UserProfile/UserProfile.js" -import Divider from '@material-ui/core/Divider'; -import FormGroup from '@material-ui/core/FormGroup'; -import FormControlLabel from '@material-ui/core/FormControlLabel'; import FormControl from '@material-ui/core/FormControl'; import Input from '@material-ui/core/Input'; import InputAdornment from '@material-ui/core/InputAdornment'; -import PersonIcon from '@material-ui/icons/Person'; -import PermIdentityIcon from '@material-ui/icons/PermIdentity'; -import PhoneOutlinedIcon from '@material-ui/icons/PhoneOutlined'; import GroupIcon from '@material-ui/icons/Group'; import Search from "@material-ui/icons/Search"; import DeleteOutlineIcon from '@material-ui/icons/DeleteOutline'; import AllInbox from "@material-ui/icons/AllInbox" -import MailOutlineIcon from '@material-ui/icons/MailOutline'; import axios from "axios"; import configApiCall from "api.js"; import auth from 'auth.js' @@ -41,8 +30,6 @@ import { api_path_blueprints } from "globalUrls"; import AddCircleOutlineIcon from '@material-ui/icons/AddCircleOutline'; import KeyboardReturnIcon from '@material-ui/icons/KeyboardReturn'; -import jami from "assets/img/faces/jami.png"; - import LinearProgress from '@material-ui/core/LinearProgress'; import headerLinksStyle from "assets/jss/material-dashboard-react/components/headerLinksStyle.js"; @@ -116,7 +103,7 @@ export default function Blueprints() { return Math.min(oldProgress + diff, 100); }); }, 500); - axios(configApiCall(api_path_blueprints, 'GET', {"queryString":"*"}, null)).then((response)=> { + axios(configApiCall(api_path_blueprints+"?groupName=*", 'GET', null, null)).then((response)=> { setBlueprints(response.data) setLoading(false) }).catch((error) =>{ @@ -144,7 +131,7 @@ export default function Blueprints() { } const handleCheckBlueprintNameExists = (searchBlueprintNameValue) => { - axios(configApiCall(api_path_blueprints, 'GET', {"queryString": searchBlueprintNameValue}, null)).then((response)=>{ + axios(configApiCall(api_path_blueprints+"?groupName="+searchBlueprintNameValue, 'GET', null, null)).then((response)=>{ setBlueprintNameExits(false) }).catch((error) =>{ setBlueprintNameExits(true) @@ -158,7 +145,7 @@ export default function Blueprints() { }; const handleCreateUser = () => { - axios(configApiCall(api_path_blueprints, 'POST', {"queryString": blueprintName}, null)).then((response)=>{ + axios(configApiCall(api_path_blueprints+"?groupName="+blueprintName+"&username=admin&policyData="+blueprintName, 'POST', null, null)).then((response)=>{ console.log("Successfully create " + blueprintName) }).catch((error) =>{ console.log("Could not create " + blueprintName + " " + error) @@ -173,7 +160,7 @@ export default function Blueprints() { } const removeBlueprint = () => { - axios(configApiCall(api_path_blueprints, 'DELETE', {"queryString": removedBlueprint}, null)).then((response)=>{ + axios(configApiCall(api_path_blueprints+"?groupName="+removedBlueprint, 'DELETE', {"queryString": removedBlueprint}, null)).then((response)=>{ console.log("Successfully create " + removedBlueprint) }).catch((error) =>{ console.log("Could not create " + removedBlueprint + " " + error) diff --git a/jams-react-client/src/views/Groups/EditGroup.js b/jams-react-client/src/views/Groups/EditGroup.js index 3f7cfa323bf814446e6756fba0a2053e14c16e9d..0881b3444343c955154a73a57a23b4c8c6f4637d 100644 --- a/jams-react-client/src/views/Groups/EditGroup.js +++ b/jams-react-client/src/views/Groups/EditGroup.js @@ -4,19 +4,16 @@ import classnames from "classnames"; // @material-ui/core components import { makeStyles } from "@material-ui/core/styles"; -import InputLabel from "@material-ui/core/InputLabel"; + // core components import Grid from '@material-ui/core/Grid'; import GridItem from "components/Grid/GridItem.js"; import GridContainer from "components/Grid/GridContainer.js"; -import CustomInput from "components/CustomInput/CustomInput.js"; import Button from "components/CustomButtons/Button.js"; import Card from "components/Card/Card.js"; import CardHeader from "components/Card/CardHeader.js"; import CardIcon from "components/Card/CardIcon.js"; -import CardAvatar from "components/Card/CardAvatar.js"; import CardBody from "components/Card/CardBody.js"; -import CardFooter from "components/Card/CardFooter.js"; import FormControl from '@material-ui/core/FormControl'; import Input from '@material-ui/core/Input'; import InputAdornment from '@material-ui/core/InputAdornment'; @@ -107,9 +104,9 @@ export default function EditGroup(props) { /* TODO: Include the username of the user of witch we want to display contacts at the moment the admin sees his contacts in each user profile he visits - */ - // axios(configApiCall(api_path_get_list_group, 'GET', {"groupName": props.groupName}, null)).then((response) => { - axios('../groups.json').then((response) => { + */ + + axios(configApiCall(api_path_get_list_group+"?groupName="+props.groupName, 'GET', null, null)).then((response) => { response.data.map((group) => { if(group.name == props.groupName){ setGroupMembers(group["groupMembers"]) @@ -122,8 +119,7 @@ export default function EditGroup(props) { React.useEffect(()=>{ setName(props.groupName) - // axios(configApiCall(api_path_get_list_group, 'GET', {"groupName": props.groupName}, null)).then((response) => { - axios('../groups.json').then((response) => { + axios(configApiCall(api_path_get_list_group+"?groupName="+props.groupName, 'GET', null, null)).then((response) => { response.data.map((group) => { if(group.name == props.groupName){ setGroupMembers(group["groupMembers"]) @@ -151,7 +147,7 @@ export default function EditGroup(props) { } //TODO: Add blueprint to data to update the blueprint using the blueprintName - axios(configApiCall(api_path_put_update_group, 'PUT', data, null)).then((response) => { + axios(configApiCall(api_path_put_update_group+"?groupName="+name, 'PUT', null, null)).then((response) => { handleGroupUpdate(data); }).catch((error) => { console.log("Error updating group: " + error) diff --git a/jams-react-client/src/views/Groups/Groups.js b/jams-react-client/src/views/Groups/Groups.js index 69b50306929dabda06d9d8b63b25db4b516f135c..85ba77225510c1f2e9bb5d8e604df67fa22d8718 100644 --- a/jams-react-client/src/views/Groups/Groups.js +++ b/jams-react-client/src/views/Groups/Groups.js @@ -9,10 +9,8 @@ import GridItem from "components/Grid/GridItem.js"; import GridContainer from "components/Grid/GridContainer.js"; import Button from "components/CustomButtons/Button.js"; import Card from "components/Card/Card.js"; -import CardAvatar from "components/Card/CardAvatar.js"; import CardBody from "components/Card/CardBody.js"; import CardFooter from "components/Card/CardFooter.js"; -import Divider from '@material-ui/core/Divider'; import CustomInput from "components/CustomInput/CustomInput.js"; import IconButton from '@material-ui/core/IconButton'; @@ -35,8 +33,6 @@ import AddCircleOutlineIcon from '@material-ui/icons/AddCircleOutline'; import KeyboardReturnIcon from '@material-ui/icons/KeyboardReturn'; import EditGroup from "views/Groups/EditGroup"; -import FormGroup from '@material-ui/core/FormGroup'; -import FormControlLabel from '@material-ui/core/FormControlLabel'; import FormControl from '@material-ui/core/FormControl'; import Input from '@material-ui/core/Input'; import InputAdornment from '@material-ui/core/InputAdornment'; @@ -78,6 +74,7 @@ export default function Groups() { const [groups, setGroups] = React.useState([]) const [selectedGroupName, setSelectedGroupName] = React.useState("") const [loading, setLoading] = React.useState(false) + const [zeroGroup, setZeroGroup] = React.useState(false) const [progress, setProgress] = React.useState(0); const [searchValue, setSearchValue] = React.useState(null) @@ -96,12 +93,14 @@ export default function Groups() { } const removeGroup = () => { - axios(configApiCall(api_path_delete_group, 'DELETE', {"queryString": removedGroup}, null)).then((response)=>{ + axios(configApiCall(api_path_delete_group+"?groupName="+removedGroup, 'DELETE', null, null)).then((response)=>{ console.log("Successfully deleted " + removedGroup) + setOpenRemoveDialog(false); }).catch((error) =>{ console.log("Could not delete " + removedGroup + " " + error) + setOpenRemoveDialog(false); }); - setOpenRemoveDialog(false); + history.push('/admin/groups') } @@ -116,9 +115,12 @@ export default function Groups() { return Math.min(oldProgress + diff, 100); }); }, 500); - // axios(configApiCall(api_path_get_list_group, 'GET', {"groupName":"*"}, null)).then((response)=>{ - axios('../groups.json').then((response) => { + + axios(configApiCall(api_path_get_list_group+"?groupName=*", 'GET', null, null)).then((response) => { let allGroups = response.data + if(allGroups.length === 0) + setZeroGroup(true); + else setZeroGroup(false); allGroups.map((group) => { group.display = "" }) @@ -131,8 +133,7 @@ export default function Groups() { history.push('/') } }); - // axios(configApiCall(api_path_blueprints, 'GET', {"groupName":"*"}, null)).then((response)=>{ - axios('../blueprints.json').then((response) => { + /*axios(configApiCall(api_path_blueprints+"?groupName=*", 'GET', null, null)).then((response) => { setBlueprints(response.data) }).catch((error) =>{ console.log(error); @@ -140,11 +141,11 @@ export default function Groups() { auth.authenticated = false history.push('/') } - }); + });*/ return () => { clearInterval(timer); }; - }, []); + }, [openCreate, openRemoveDialog]); const [selectedGroup, setSelectedGroup] = useState(false); @@ -161,7 +162,7 @@ export default function Groups() { } const handleCheckGroupNameExists = (searchGroupNameValue) => { - axios(configApiCall(api_path_get_list_group, 'GET', {"groupName": searchGroupNameValue}, null)).then((response)=>{ + axios(configApiCall(api_path_get_list_group+"?groupName="+searchGroupNameValue, 'GET', null, null)).then((response)=>{ if(response.data == "[]"){ setGroupNameExits(true) } @@ -178,18 +179,13 @@ export default function Groups() { const handleCreateGroup = () => { - const data = { - "groupname": groupName, - "groupMembers": {}, - "blueprint": "default" - } - - axios(configApiCall(api_path_post_create_group, 'POST', data, null)).then(() => { + axios(configApiCall(api_path_post_create_group+"?name="+groupName, 'POST', null, null)).then(() => { console.log("Successfully create " + groupName) + setOpenCreate(false); }).catch((error) => { console.log("Error creating group: " + error) + setOpenCreate(false); }) - setOpenCreate(false); history.push('/admin/groups') } @@ -329,10 +325,14 @@ export default function Groups() { </div> </div> </GridItem> - { + {zeroGroup + ? + <span>No Group Found</span> + : groups.filter((data)=>{ - if(searchValue == null) + if(searchValue == null){ return data + } else if((data.name != null ) && data.name.toLowerCase().includes(searchValue.toLowerCase()) ){ return data @@ -341,11 +341,11 @@ export default function Groups() { <GridItem xs={12} sm={12} md={2} key={group.username} style={{display: group.display}}> <Card profile> <CardBody profile> - <h3 className={classes.cardTitle}>{group.name}</h3> - <ul> - <li><PersonIcon fontSize='small' style={{ marginRight: "10px"}}/><strong style={{ marginRight: "5px"}}>{group.groupMembers.length}</strong>users</li> - <li><MailOutlineIcon fontSize='small' style={{ marginRight: "10px"}}/><strong style={{ marginRight: "5px"}}>Blueprint</strong>{group.blueprint}</li> - </ul> + <h3 className={classes.cardTitle}>{group.name}</h3> + <ul> + <li><PersonIcon fontSize='small' style={{ marginRight: "10px"}}/><strong style={{ marginRight: "5px"}}>{group.groupMembers.length}</strong>users</li> + <li><MailOutlineIcon fontSize='small' style={{ marginRight: "10px"}}/><strong style={{ marginRight: "5px"}}>Blueprint</strong>{group.blueprint}</li> + </ul> </CardBody> <CardFooter> <IconButton color="primary" onClick={ (e) => redirectToGroup(e, group.name)}><EditOutlinedIcon /></IconButton>