Skip to content

Commit

Permalink
fix day details page showing that there's no observations before load…
Browse files Browse the repository at this point in the history
…ing the page
  • Loading branch information
aorin committed Dec 17, 2024
1 parent a50b7bd commit c21f7bd
Show file tree
Hide file tree
Showing 13 changed files with 163 additions and 95 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '18.x'
node-version: '20.x'
- name: Install frontend packages
run: npm install
working-directory: ./frontend
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM node:18 AS builder
FROM node:20 AS builder

COPY /frontend /front

Expand Down
2 changes: 1 addition & 1 deletion frontend/.nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
18
20
69 changes: 46 additions & 23 deletions frontend/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
"react-dom": "^18.3.1",
"react-i18next": "^15.1.1",
"react-redux": "^9.1.2",
"react-router-dom": "^6.28.0",
"react-router-dom": "^7.0.2",
"react-scripts": "^5.0.1",
"redux": "^5.0.1",
"redux-thunk": "^3.1.0",
Expand Down
6 changes: 3 additions & 3 deletions frontend/public/index.html
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<!DOCTYPE html>
<html lang="en">
<html lang="en" style="height: 100%">
<head>
<meta charset="utf-8" />
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
Expand All @@ -26,9 +26,9 @@
-->
<title>Lintuasemasovellus</title>
</head>
<body>
<body style="height: 100%; margin: 0;">
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
<div id="root" style="height: 100%;"></div>
<!--
This HTML file is a template.
If you open it directly in the browser, you will see an empty page.
Expand Down
72 changes: 24 additions & 48 deletions frontend/src/App.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,47 +9,26 @@ import { getPerson, getCurrentUser } from "./services";
import { setUser } from "./reducers/userReducer";
import { setUserObservatory } from "./reducers/userObservatoryReducer";
import { initializeStations } from "./reducers/obsStationReducer";
import { makeStyles } from "@mui/styles";
import { clean as DraftsClean } from "./services/draftService";
import { initializeSpecies } from "./reducers/speciesReducer";
import LoadingSpinner from "./globalComponents/LoadingSpinner";
import { makeStyles } from "@mui/styles";

const App = () => {
const useStyles = makeStyles({
mainContainer: {
height: "calc(100% - 50px)",
display: "flex",
flexDirection: "column"
},
container: {
height: "100%",
display: "flex",
flexDirection: "column"
},

const useStyles = makeStyles({
flexi: {
display: "flex",
alignItems: "center",
justifyContent: "center",
flexDirection: "column",
height: "95vh",
width:"98vw",
},
spinner: {
padding: "0px",
margin: "60px 60px",
fontSize: "10px",
position: "relative",
borderTop: "1.1em solid lightgrey",
borderRight: "1.1em solid lightgrey",
borderBottom: "1.1em solid lightgrey",
borderLeft: "1.1em solid #2691d9",
animation: "$spin 1.1s infinite linear",
"&, :after": {
borderRadius: "50%",
width: "10em",
height: "10em",
},
},
"@keyframes spin": {
"0%": {
transform: "rotate(0deg)",
},
"100%": {
transform: "rotate(360deg)",
},
},
});
});

const App = () => {
const classes = useStyles();
const dispatch = useDispatch();

Expand Down Expand Up @@ -95,15 +74,12 @@ const App = () => {

if (userLoading || initialDataLoading) {
return (
<div className={classes.flexi}>
<div className={classes.spinner}>
</div>
</div>
<LoadingSpinner/>
);
} else if (!user.id) {
return (
<CssBaseline>
<div>
<div className={classes.mainContainer}>
<Login />
<Footer />
</div>
Expand All @@ -112,15 +88,15 @@ const App = () => {
} else if (userObservatory !== "") {
return (
<CssBaseline>
<div>
<NavBar user={user} />
<div className={classes.mainContainer}>
<NavBar user={user}/>
<Routes>
<Route path="/listdays" element={<DayList userObservatory={userObservatory} />} />
<Route path="/daydetails/:day" element={<DayDetails userObservatory={userObservatory} />} />
<Route path="/manual" element={<UserManual />} />
<Route path="/" element={<HomePage user={user} userObservatory={userObservatory} />} />
<Route path="/listdays" element={<DayList userObservatory={userObservatory}/>}/>
<Route className={classes.container} path="/daydetails/:day" element={<DayDetails userObservatory={userObservatory}/>}/>
<Route path="/manual" element={<UserManual/>}/>
<Route path="/" element={<HomePage user={user} userObservatory={userObservatory}/>}/>
</Routes>
<Footer />
<Footer/>
</div>
</CssBaseline>
);
Expand Down
49 changes: 49 additions & 0 deletions frontend/src/globalComponents/LoadingSpinner.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import React from "react";
import { makeStyles } from "@mui/styles";

const useStyles = makeStyles({
spinnerContainer: {
height: "100%",
display: "flex",
alignItems: "center",
justifyContent: "center",
flexDirection: "column"
},
spinner: {
padding: "0px",
margin: "60px 60px",
fontSize: "10px",
position: "relative",
borderTop: "1.1em solid lightgrey",
borderRight: "1.1em solid lightgrey",
borderBottom: "1.1em solid lightgrey",
borderLeft: "1.1em solid #2691d9",
animation: "$spin 1.1s infinite linear",
"&, :after": {
borderRadius: "50%",
width: "10em",
height: "10em",
},
},
"@keyframes spin": {
"0%": {
transform: "rotate(0deg)",
},
"100%": {
transform: "rotate(360deg)",
},
}
});

const LoadingSpinner = () => {
const classes = useStyles();

return (
<div className={classes.spinnerContainer}>
<div className={classes.spinner}>
</div>
</div>
);
};

export default LoadingSpinner;
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React from "react";
import PropTypes from "prop-types";
import {
TextField, Button, IconButton, Typography, FormGroup, FormControlLabel, Box
TextField, Button, IconButton, Typography, FormGroup, FormControlLabel
} from "@mui/material";
import { useTranslation } from "react-i18next";
import { CheckCircle, Edit, RemoveCircleOutlineRounded } from "@mui/icons-material";
Expand Down Expand Up @@ -65,11 +65,9 @@ const DailyActionsEdit = ({ selectedActions, errorsInActions, actionsEditMode, o
disabled InputProps={{ disableUnderline: true }} />}
label={<span style={{ color: "rgba(0, 0, 0, 1)" }}>{t("attachments")}</span>} labelPlacement="start" />

<Box>
<IconButton id="actionsButton" size="small" style={{ left: "100px", alignItems: "left" }} onClick={onActionsEditOpen} variant="contained" color="primary" >
<Edit fontSize="default" />
</IconButton>
</Box>
<IconButton id="actionsButton" size="small" onClick={onActionsEditOpen} variant="contained" color="primary" >
<Edit fontSize="default" />
</IconButton>
</FormGroup>
: <div style={{
display: "flex",
Expand Down
22 changes: 20 additions & 2 deletions frontend/src/pages/dayDetails/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,12 @@ import {
} from "@mui/material";
import { makeStyles } from "@mui/styles";
import { useTranslation } from "react-i18next";
import { useSelector } from "react-redux";
import { useDispatch, useSelector } from "react-redux";
import PropTypes from "prop-types";
import { GeneralDayDetails } from "./generalDayDetails";
import { ObservationEdit } from "./observationEdit";
import { retrieveDays } from "../../reducers/daysReducer";
import LoadingSpinner from "../../globalComponents/LoadingSpinner";

const useStyles = makeStyles(() => ({
paper: {
Expand All @@ -24,19 +26,35 @@ export const DayDetails = ({ userObservatory }) => {

const classes = useStyles();
const { t } = useTranslation();
const dispatch = useDispatch();

const dayList = useSelector(state => state.days);

const [thisDay, setThisDay] = useState(null);
const [dayId, setDayId] = useState();
const [loading, setLoading] = useState(true);

useEffect(() => {
if (!dayList) {
dispatch(retrieveDays());
}
}, [dayList]);

useEffect(() => {
if (!dayList) {
return;
}
const thisDay = dayList.find(d => d.day === day && d.observatory === userObservatory) || null;
setThisDay(thisDay);
setDayId(thisDay ? thisDay.id : null);
setLoading(false);
}, [dayList, day, userObservatory]);

if (!dayId) {
if (loading) {
return (
<LoadingSpinner/>
);
} else if (!dayId) {
return (<>
<Paper className={classes.paper}>
<Typography variant="h4" component="h2" >
Expand Down
Loading

0 comments on commit c21f7bd

Please sign in to comment.