From 7ce990258d0d589ba1b30f2912faafd38f05151d Mon Sep 17 00:00:00 2001
From: Zoltan Runyo <zoltan.runyo@ess.eu>
Date: Wed, 16 Feb 2022 12:09:34 +0100
Subject: [PATCH] ICSHWI-8665: My IOCs to Explore IOCs view (as a switch)

---
 src/views/IOC/IOCListView.js | 32 ++++++++++++++++++++++++++------
 src/views/home/HomeView.js   | 11 +++--------
 2 files changed, 29 insertions(+), 14 deletions(-)

diff --git a/src/views/IOC/IOCListView.js b/src/views/IOC/IOCListView.js
index dc39e318..5f0c45f3 100644
--- a/src/views/IOC/IOCListView.js
+++ b/src/views/IOC/IOCListView.js
@@ -1,10 +1,10 @@
-import { Container, Grid, Hidden, Paper } from "@material-ui/core";
+import { Container, Grid, Hidden, Paper, FormControlLabel, Switch, Typography, Box } from "@material-ui/core";
 import { RootContainer } from "../../components/common/Container/RootContainer";
-import React, { useState, useEffect } from "react"
+import React, { useState, useEffect, useContext } from "react"
 import { useGlobalAppBar } from "../../components/navigation/GlobalAppBar/GlobalAppBar";
 import { IOCList } from "../../components/IOC/IOCList";
 import { IOCTable } from "../../components/IOC/IOCTable";
-import { useIOCSearch } from "../../api/SwaggerApi";
+import { useIOCSearch, userContext } from "../../api/SwaggerApi";
 import { makeStyles } from '@material-ui/core/styles';
 import { initRequestParams } from "../../components/common/Helper";
 import { SearchBar } from "../../components/common/SearchBar/SearchBar";
@@ -18,6 +18,8 @@ const useStyles = makeStyles((theme) => ({
 export function IOCListView({user = null}) {
   const [iocs, getIocs, /*reset*/, loading] = useIOCSearch();
   const [query, setQuery] = useState("");
+  const [ownOnly, setOwnOnly] = useState(false);
+  const {user} = useContext(userContext);
   const classes = useStyles();
 
   const [lazyParams, setLazyParams] = useState({
@@ -31,12 +33,23 @@ export function IOCListView({user = null}) {
     sortOrder: null
   });
 
+  const handleChangeOwn = (event) => {
+    const own = event.target.checked;
+    setOwnOnly(own);
+  };
+
   const rowsPerPage = [5, 10, 20, 50, 100];
+  
+  console.log("rendering Explore IOCs")
 
   useEffect(() => {
     let requestParams = initRequestParams(lazyParams, query, columnSort);
 
     requestParams.owner = user?.loginName;
+    
+    if(ownOnly) {
+      requestParams.owner = user?.loginName;
+    }
 
     if(columnSort.sortField === "owner") {
       requestParams.orderBy = "OWNER";
@@ -51,8 +64,7 @@ export function IOCListView({user = null}) {
     }
 
     getIocs(requestParams);
-
-  }, [getIocs, user, lazyParams, columnSort, query])
+  }, [getIocs, lazyParams, columnSort, query, user, ownOnly])
 
   const title = "Explore IOCs";
   useGlobalAppBar(title);
@@ -75,7 +87,15 @@ export function IOCListView({user = null}) {
       <Container>
         <Paper className={classes.root}>
           <Grid container spacing={1}>
-            <Grid item xs={12}>
+            <Grid item xs={12} md={12}>
+            <Box display="flex" justifyContent="end" p={2} m={1}>
+              <FormControlLabel className={classes.formControl}
+                control={<Switch checked={ownOnly} onChange={handleChangeOwn} />}
+                label={<Typography variant="h5">My IOCs</Typography>}
+              />
+              </Box>
+            </Grid>
+            <Grid item xs={12} md={12}>
               {content}
             </Grid>
           </Grid>
diff --git a/src/views/home/HomeView.js b/src/views/home/HomeView.js
index 1fc5a8ed..d3e2c2d2 100644
--- a/src/views/home/HomeView.js
+++ b/src/views/home/HomeView.js
@@ -1,11 +1,10 @@
 import { Container, Grid, Paper, Button, Box, Typography } from "@material-ui/core";
-import React, { useContext, useState } from "react";
+import React, { useState} from "react";
 import { useGlobalAppBar } from "../../components/navigation/GlobalAppBar/GlobalAppBar";
 import { CreateIOC } from "../../components/IOC/CreateIOC";
 import { SimpleModal } from "../../components/common/SimpleModal/SimpleModal";
-import { useCreateIOC, userContext } from "../../api/SwaggerApi";
+import { useCreateIOC } from "../../api/SwaggerApi";
 import { makeStyles } from '@material-ui/core/styles';
-import { IOCListView } from "../IOC/IOCListView";
 
 const useStyles = makeStyles((theme) => ({
   root: {
@@ -15,7 +14,6 @@ const useStyles = makeStyles((theme) => ({
 
 export function HomeView() {
   const [iocFormOpen, setIOCFormOpen] = useState(false);
-  const {user} = useContext(userContext);
   const classes = useStyles();
 
   console.log("rendering Own IOCs")
@@ -33,7 +31,7 @@ export function HomeView() {
             <Grid item xs={10}>
               <Box display="flex" flexDirection="row" p={2} m={1}>
               <Typography variant="h2">
-                My IOCs
+                Home
               </Typography>
               </Box>
             </Grid>
@@ -42,9 +40,6 @@ export function HomeView() {
                 <Button variant="contained" color="secondary" onClick={() => { setIOCFormOpen(true) }}>New IOC</Button>
               </Box>
             </Grid>
-            <Grid item xs={12}>
-              <IOCListView user={user} />
-            </Grid>
             <SimpleModal open={iocFormOpen} setOpen={setIOCFormOpen}>
               <CreateIOC open={iocFormOpen} setOpen={setIOCFormOpen} isUpdateIoc={false} submitCallback={closeModal} hook={useCreateIOC} title="Create new IOC" buttonText="Create"/>
             </SimpleModal>
-- 
GitLab