@@ -36,22 +39,43 @@ export default function RepositorySummaryBase(
{name}
-
- {start}
+
+ {owner["username"]}
- {details}
+
+ Start: {start}
+
+
+ End: {end}
+
{canDelete ?
-
+
: null}
{canEdit ?
-
+
: null}
{canArchive ?
-
+
: null}
diff --git a/code/frontend/src/components/interactive/RepositorySummaryBase.module.css b/code/frontend/src/components/interactive/RepositorySummaryBase.module.css
index 7f5a9c0..2f21b39 100644
--- a/code/frontend/src/components/interactive/RepositorySummaryBase.module.css
+++ b/code/frontend/src/components/interactive/RepositorySummaryBase.module.css
@@ -50,7 +50,7 @@
align-self: flex-end;
}
-.StartDate {
+.Author {
grid-area: d;
font-size: small;
@@ -59,10 +59,23 @@
.Middle {
flex-grow: 1;
-
height: 60px;
background-color: var(--bg-light);
+
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ align-items: stretch;
+
+}
+
+.StartDate {
+
+}
+
+.EndDate {
+
}
.Right {
diff --git a/code/frontend/src/routes/PageEdit.js b/code/frontend/src/routes/PageEdit.js
new file mode 100644
index 0000000..25d4659
--- /dev/null
+++ b/code/frontend/src/routes/PageEdit.js
@@ -0,0 +1,38 @@
+import React, { useContext } from "react"
+import Style from "./PageDashboard.module.css"
+import classNames from "classnames"
+import BoxHeader from "../components/base/BoxHeader"
+import RepositoryEditor from "../components/providers/RepositoryEditor"
+import useDataImmediately from "../hooks/useDataImmediately"
+import ContextUser from "../contexts/ContextUser"
+import BoxAlert from "../components/base/BoxAlert"
+import RepositorySummaryBase from "../components/interactive/RepositorySummaryBase"
+import { faSearch } from "@fortawesome/free-solid-svg-icons"
+import Loading from "../components/base/Loading"
+import BoxFull from "../components/base/BoxFull"
+
+
+export default function PageEdit({ id, className, ...props }) {
+ const {fetchDataAuth} = useContext(ContextUser)
+ const {data, error} = useDataImmediately(fetchDataAuth, "GET", `/api/v1/repositories/${id}`)
+
+ let contents;
+ if(error) {
+ contents =
{error.toString()}
+ }
+ else if(data) {
+ contents =
+ }
+ else {
+ contents =
+ }
+
+ return (
+
+
+ Edit repository
+
+ {contents}
+
+ )
+}
diff --git a/code/frontend/src/utils/goToOnSuccess.js b/code/frontend/src/utils/goToOnSuccess.js
new file mode 100644
index 0000000..d11eac7
--- /dev/null
+++ b/code/frontend/src/utils/goToOnSuccess.js
@@ -0,0 +1,23 @@
+/**
+ * Decorator which adds a redirect on success to an event handler.
+ *
+ * @param func - The function to decorate.
+ * @param history - The history to push the destination to.
+ * @param destination - The path of the destination.
+ * @returns {(function(): void)|*}
+ */
+export default function goToOnSuccess(func, history, destination) {
+ return ([...args]) => {
+ let success = false
+ try {
+ func(...args)
+ success = true
+ }
+ catch(e) {
+ success = false
+ }
+ if(success) {
+ history.push(destination)
+ }
+ }
+}
From ba2dfa415b426267944b4fa0c20dfb5084ff6de2 Mon Sep 17 00:00:00 2001
From: Stefano Pigozzi <256895@studenti.unimore.it>
Date: Mon, 10 May 2021 16:21:19 +0200
Subject: [PATCH 4/4] =?UTF-8?q?=E2=9C=A8=20Add=20Archive=20and=20Unarchive?=
=?UTF-8?q?=20functionality?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../components/interactive/RepositorySummaryBase.js | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/code/frontend/src/components/interactive/RepositorySummaryBase.js b/code/frontend/src/components/interactive/RepositorySummaryBase.js
index 43a3be6..737b95f 100644
--- a/code/frontend/src/components/interactive/RepositorySummaryBase.js
+++ b/code/frontend/src/components/interactive/RepositorySummaryBase.js
@@ -1,10 +1,12 @@
-import React from "react"
+import React, { useContext } from "react"
import Style from "./RepositorySummaryBase.module.css"
import classNames from "classnames"
import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"
import Button from "../base/Button"
import { faArchive, faPencilAlt, faTrash } from "@fortawesome/free-solid-svg-icons"
import { useHistory } from "react-router"
+import useData from "../../hooks/useData"
+import ContextUser from "../../contexts/ContextUser"
/**
@@ -28,7 +30,11 @@ import { useHistory } from "react-router"
export default function RepositorySummaryBase(
{ id, owner, icon, name, start, end, isActive, canDelete, canEdit, canArchive, className, ...props }
) {
+ const {fetchDataAuth} = useContext(ContextUser)
const {history} = useHistory()
+ const {fetchNow: archiveThis} = useData(fetchDataAuth, "PATCH", `/api/v1/repositories/${id}`, {"close": true})
+ const {fetchNow: unarchiveThis} = useData(fetchDataAuth, "PATCH", `/api/v1/repositories/${id}`, {"open": true})
+ const {fetchNow: deletThis} = useData(fetchDataAuth, "DELETE", `/api/v1/repositories/${id}`)
return (
@@ -56,6 +62,7 @@ export default function RepositorySummaryBase(
@@ -73,6 +80,7 @@ export default function RepositorySummaryBase(