From 72eb095e96bc547af7a11a4c2dac33bbdb9f0ba7 Mon Sep 17 00:00:00 2001
From: Zoltan Runyo <zoltan.runyo@ess.eu>
Date: Fri, 18 Feb 2022 16:35:58 +0100
Subject: [PATCH] ICSHWI-8665: Personal statistics on Home view

---
 src/api/SwaggerApi.js      | 15 ++++++++++++---
 src/views/home/HomeView.js | 11 +++++++++--
 2 files changed, 21 insertions(+), 5 deletions(-)

diff --git a/src/api/SwaggerApi.js b/src/api/SwaggerApi.js
index 517c5957..2394f3e0 100644
--- a/src/api/SwaggerApi.js
+++ b/src/api/SwaggerApi.js
@@ -805,7 +805,16 @@ export function useAnnouncements() {
 }
 
 export function unpackAnnouncement(announcements) {
-  const a = { ...announcements };
-  console.log(a);
-  return a;
+  return { ...announcements };
 }
+
+export function usePersonalStatistics() {
+  const api = useContext(apiContext);
+  const method = useCallAndUnpack(api.apis.Statistics.personalStatistics, unpackPersonalStatistics)
+
+  return useAsync({ fcn: method, call: true });
+}
+
+export function unpackPersonalStatistics(statistics) {
+  return { ...statistics };
+}
\ No newline at end of file
diff --git a/src/views/home/HomeView.js b/src/views/home/HomeView.js
index 202e9574..21ce478f 100644
--- a/src/views/home/HomeView.js
+++ b/src/views/home/HomeView.js
@@ -2,8 +2,9 @@ import { Container, Grid, Paper, Button, Box, Typography } from "@material-ui/co
 import React, { useState} from "react";
 import { useGlobalAppBar } from "../../components/navigation/GlobalAppBar/GlobalAppBar";
 import { CreateIOC } from "../../components/IOC/CreateIOC";
+import { KeyValueTable } from "../../components/common/KeyValueTable/KeyValueTable";
 import { SimpleModal } from "../../components/common/SimpleModal/SimpleModal";
-import { useCreateIOC, useAnnouncements } from "../../api/SwaggerApi";
+import { useCreateIOC, useAnnouncements, usePersonalStatistics } from "../../api/SwaggerApi";
 import ReactMarkdown from 'react-markdown'
 import remarkGfm from 'remark-gfm'
 import { makeStyles } from '@material-ui/core/styles';
@@ -21,6 +22,7 @@ const useStyles = makeStyles((theme) => ({
 export function HomeView() {
   const [iocFormOpen, setIOCFormOpen] = useState(false);
   const [announcements] = useAnnouncements();
+  const [statistics] = usePersonalStatistics();
   const classes = useStyles();
 
   console.log("rendering Own IOCs")
@@ -38,7 +40,7 @@ export function HomeView() {
             <Grid item xs={10}>
               <Box display="flex" flexDirection="row" p={2} m={1}>
               <Typography variant="h2">
-                Home
+                My statistics
               </Typography>
               </Box>
             </Grid>
@@ -47,6 +49,11 @@ export function HomeView() {
                 <Button variant="contained" color="secondary" onClick={() => { setIOCFormOpen(true) }}>New IOC</Button>
               </Box>
             </Grid>
+            {statistics &&
+              <Grid item xs={12}>
+                <KeyValueTable obj={{"Number of my IOCs": statistics.numberOfActiveIocs}} variant="table" />
+              </Grid>
+            }
             </Grid>
             {announcements?.announcementsText &&
             <Grid container justify="flex-start" className={classes.announcements}>
-- 
GitLab