diff --git a/src/api/challengeSubmissionPost.js b/src/api/challengeSubmissionPost.js
index d5ae8f7..720c91f 100644
--- a/src/api/challengeSubmissionPost.js
+++ b/src/api/challengeSubmissionPost.js
@@ -38,7 +38,12 @@ const challengeSubmission = (
.then((data) => {
dispatch({ type: SUBMIT_ACTION.TOGGLE_SUBMISSION_LOADING });
const processUrl = API.replace('/api', '');
- window.location.replace(`${processUrl}/open-view-progress/${data}#form`);
+ if (Number.isInteger(Number(data))) {
+ console.log(`${processUrl}/open-view-progress/${data}#form`);
+ window.location.replace(
+ `${processUrl}/open-view-progress/${data}#form`
+ );
+ }
// console.log(data);
// fetch(`${API}/view-progress-with-web-sockets/${data}`)
diff --git a/src/api/deleteSubmission.js b/src/api/deleteSubmission.js
index b360743..c3f7696 100644
--- a/src/api/deleteSubmission.js
+++ b/src/api/deleteSubmission.js
@@ -1,12 +1,12 @@
import KeyCloakService from '../services/KeyCloakService';
import { API } from '../utils/globals';
+import theme from '../utils/theme';
const deleteSubmission = async (
item,
deletedItems,
setDeletedItems,
- popUpMessageHandler,
- theme
+ popUpMessageHandler
) => {
fetch(`${API}/delete-submission/${item.id}`, {
method: 'POST',
@@ -22,6 +22,13 @@ const deleteSubmission = async (
newDeletedItems.push(item);
setDeletedItems(newDeletedItems);
popUpMessageHandler('Complete', `Submission "${item.id}" deleted`);
+ } else if (data.includes('') && data.includes('Login')) {
+ popUpMessageHandler(
+ 'Error',
+ 'You have to be login in to edit submission!',
+ null,
+ theme.colors.red
+ );
} else {
popUpMessageHandler(
'Error',
diff --git a/src/api/editSubmission.js b/src/api/editSubmission.js
index 6e87dc8..4519b29 100644
--- a/src/api/editSubmission.js
+++ b/src/api/editSubmission.js
@@ -1,25 +1,47 @@
import KeyCloakService from '../services/KeyCloakService';
import { API } from '../utils/globals';
+import theme from '../utils/theme';
-const editSubmission = (
+const editSubmission = async (
submisssion,
tags,
- description
+ description,
+ popUpMessageHandler
) => {
- // tags = tags.map((tag) => tag.name).join(',');
tags = tags.replaceAll(',', '%2C');
fetch(`${API}/edit-submission/${submisssion}/${tags}/${description}`, {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
Authorization: `Bearer ${KeyCloakService.getToken()}`,
- }
+ },
})
.then((resp) => resp.text())
.then((data) => {
console.log(data);
+ if (data === 'Submission changed') {
+ popUpMessageHandler(
+ 'Submission changed!',
+ `Submission ${submisssion} edited`,
+ null,
+ theme.colors.green
+ );
+ } else if (data === 'Only owner can edit a submission!') {
+ popUpMessageHandler('Error', data, null, theme.colors.red);
+ } else if (data.includes('') && data.includes('Login')) {
+ popUpMessageHandler(
+ 'Error',
+ 'You have to be login in to edit submission!',
+ null,
+ theme.colors.red
+ );
+ } else {
+ if (data.length > 650) {
+ data = `${data.slice(0, 650)}...`;
+ }
+ popUpMessageHandler('Error', data, null, theme.colors.red);
+ }
});
};
export default editSubmission;
-// http://localhost:3000/api/edit-submission/4/1%2C2/abc
\ No newline at end of file
diff --git a/src/components/generic/Table/Table.js b/src/components/generic/Table/Table.js
index cb0658f..5d9a6b1 100644
--- a/src/components/generic/Table/Table.js
+++ b/src/components/generic/Table/Table.js
@@ -1,15 +1,10 @@
import React from 'react';
-import TableStyle from './styles/TableStyle';
-import TableHeader from './components/TableHeader';
-import TableRowItems from './components/TableRowItems';
-import RowsBackgroundStyle from './styles/RowsBackgroundStyle';
-import TableRowFooter from './components/TableRowFooter';
-import deleteSubmission from '../../../api/deleteSubmission';
-import theme from '../../../utils/theme';
-import DeletePopUp from './components/DeletePopUp';
-import MobileTable from './components/MobileTable';
import Media from 'react-media';
+import theme from '../../../utils/theme';
+import MobileTable from './components/MobileTable';
+import DesktopTable from './components/DesktopTable';
import EditPopUp from './components/EditPopUp';
+import DeletePopUp from './components/DeletePopUp';
const Table = ({
items,
@@ -24,78 +19,58 @@ const Table = ({
const [deletePopUp, setDeletePopUp] = React.useState(false);
const [editPopUp, setEditPopUp] = React.useState(false);
const [itemToHandle, setItemToHandle] = React.useState(null);
-
const itemsToRender = items.filter((item) => !deletedItems.includes(item));
- const deleteItem = async (item) => {
- await deleteSubmission(
- item,
- deletedItems,
- setDeletedItems,
- popUpMessageHandler,
- theme
- );
- };
-
- const desktopRender = () => {
- return (
- <>
-
-
-
-
- {itemsToRender.map((item, i) => {
- return (
-
-
- {
- setItemToHandle(item);
- setDeletePopUp(true);
- }}
- editItem={() => {
- setItemToHandle(item);
- setEditPopUp(true);
- }}
- rowFooter={rowFooter}
- item={item}
- i={i}
- />
-
-
- );
- })}
-
- >
- );
- };
-
return (
<>
+
+
+
+
+
- {desktopRender()}
>
);
};
diff --git a/src/components/generic/Table/components/DeletePopUp/DeletePopUp.js b/src/components/generic/Table/components/DeletePopUp/DeletePopUp.js
index 2ff2834..47a824f 100644
--- a/src/components/generic/Table/components/DeletePopUp/DeletePopUp.js
+++ b/src/components/generic/Table/components/DeletePopUp/DeletePopUp.js
@@ -4,8 +4,32 @@ import Button from '../../../Button';
import { Medium, H3 } from '../../../../../utils/fonts';
import { FlexColumn, FlexRow } from '../../../../../utils/containers';
import theme from '../../../../../utils/theme';
+import deleteSubmission from '../../../../../api/deleteSubmission';
-const DeletePopUp = ({ deletePopUp, setDeletePopUp, deleteItem, item }) => {
+const deleteItem = async (
+ item,
+ setDeletePopUp,
+ deletedItems,
+ setDeletedItems,
+ popUpMessageHandler
+) => {
+ setDeletePopUp(false);
+ await deleteSubmission(
+ item,
+ deletedItems,
+ setDeletedItems,
+ popUpMessageHandler
+ );
+};
+
+const DeletePopUp = ({
+ deletePopUp,
+ setDeletePopUp,
+ item,
+ deletedItems,
+ setDeletedItems,
+ popUpMessageHandler,
+}) => {
if (deletePopUp) {
return createPortal(
{
diff --git a/src/components/generic/Table/components/DesktopTable/DesktopTable.js b/src/components/generic/Table/components/DesktopTable/DesktopTable.js
new file mode 100644
index 0000000..f8b9b9c
--- /dev/null
+++ b/src/components/generic/Table/components/DesktopTable/DesktopTable.js
@@ -0,0 +1,41 @@
+import React from 'react';
+import TableStyle from '../../styles/TableStyle';
+import TableHeader from '../TableHeader/TableHeader';
+import TableRowItems from '../TableRowItems/TableRowItems';
+import TableRowFooter from '../TableRowFooter/TableRowFooter';
+import RowsBackgroundStyle from '../../styles/RowsBackgroundStyle';
+
+const DesktopTable = (props) => {
+ return (
+
+
+ {props.elements.map((item, i) => {
+ return (
+
+
+ {
+ props.setItemToHandle(item);
+ props.setDeletePopUp(true);
+ }}
+ editItem={() => {
+ props.setItemToHandle(item);
+ props.setEditPopUp(true);
+ }}
+ rowFooter={props.rowFooter}
+ item={item}
+ i={i}
+ />
+
+
+ );
+ })}
+
+ );
+};
+
+export default DesktopTable;
diff --git a/src/components/generic/Table/components/DesktopTable/index.js b/src/components/generic/Table/components/DesktopTable/index.js
new file mode 100644
index 0000000..e04c8bb
--- /dev/null
+++ b/src/components/generic/Table/components/DesktopTable/index.js
@@ -0,0 +1 @@
+export { default } from './DesktopTable';
diff --git a/src/components/generic/Table/components/EditPopUp/EditPopUp.js b/src/components/generic/Table/components/EditPopUp/EditPopUp.js
index c7b154e..6735fdc 100644
--- a/src/components/generic/Table/components/EditPopUp/EditPopUp.js
+++ b/src/components/generic/Table/components/EditPopUp/EditPopUp.js
@@ -10,10 +10,31 @@ import editSubmission from '../../../../../api/editSubmission';
import getTags from '../../../../../api/getTags';
import React from 'react';
-const EditPopUp = ({ editPopUp, setEditPopUp, item }) => {
+const editSubmissionHandler = async (
+ item,
+ setEditPopUp,
+ tagsToEdit,
+ description,
+ popUpMessageHandler
+) => {
+ setEditPopUp(false);
+ let tags = '';
+ if (tagsToEdit) {
+ tags = tagsToEdit.join(',');
+ } else {
+ if (item?.tags) {
+ tags = item.tags.map((tag) => tag.name).join(',');
+ }
+ }
+ await editSubmission(item.id, tags, description, popUpMessageHandler);
+};
+
+const EditPopUp = ({ editPopUp, setEditPopUp, item, popUpMessageHandler }) => {
const [tags, setTags] = React.useState([]);
const [tagsToEdit, setTagsToEdit] = React.useState(item?.tags?.slice());
- const [description, setDescription] = React.useState(item?.description?.slice());
+ const [description, setDescription] = React.useState(
+ item?.description?.slice()
+ );
React.useMemo(() => {
getTags(setTags);
@@ -50,10 +71,15 @@ const EditPopUp = ({ editPopUp, setEditPopUp, item }) => {
@@ -61,7 +87,7 @@ const EditPopUp = ({ editPopUp, setEditPopUp, item }) => {
width="100px"
height="32px"
handler={() => {
- setTagsToEdit([]);
+ setTagsToEdit([]);
setEditPopUp(false);
}}
backgroundColor={theme.colors.dark}
diff --git a/src/components/generic/Table/components/MobileTable/MobileTable.js b/src/components/generic/Table/components/MobileTable/MobileTable.js
index fe07aa4..60247f3 100644
--- a/src/components/generic/Table/components/MobileTable/MobileTable.js
+++ b/src/components/generic/Table/components/MobileTable/MobileTable.js
@@ -1,5 +1,4 @@
import React from 'react';
-import DeletePopUp from '../DeletePopUp/DeletePopUp';
import TableRowItems from '../TableRowItems/TableRowItems';
import TableRowFooter from '../TableRowFooter/TableRowFooter';
import MobileTableStyle from './MobileTableStyle';
@@ -10,15 +9,16 @@ const MobileTable = (props) => {
{props.elements.map((item, i) => {
return (
-
props.setDeletePopUp(true)}
+ deleteItem={() => {
+ props.setItemToHandle(item);
+ props.setDeletePopUp(true);
+ }}
+ editItem={() => {
+ props.setItemToHandle(item);
+ props.setEditPopUp(true);
+ }}
rowFooter={props.rowFooter}
item={item}
i={i}