Skip to content

Commit

Permalink
Merge pull request #195 from Ohtuilmo/feature/disable-timelog-form-fo…
Browse files Browse the repository at this point in the history
…r-non-current-sprints

Select current sprint by default in TimeLogsPage, Disable TimeLogForm for non-current sprints
  • Loading branch information
miahro authored Mar 18, 2024
2 parents 6409921 + 4839c04 commit 2a1b7fd
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 10 deletions.
8 changes: 6 additions & 2 deletions frontend/src/components/TimeLogsPage/TimeLogForm.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { TextField, Button } from '@material-ui/core'

import './TimeLogsPage.css'

export const TimeLogForm = ({ handleSubmit }) => {
export const TimeLogForm = ({ handleSubmit, disabled }) => {
const [date, setDate] = useState(new Date().toISOString().slice(0, 10))
const [time, setTime] = useState('')
const [description, setDescription] = useState('')
Expand Down Expand Up @@ -36,6 +36,7 @@ export const TimeLogForm = ({ handleSubmit }) => {
<form onSubmit={handleFormSubmit} className="timelogs-form">
<div className="input-container">
<TextField
disabled={disabled}
className="date"
id="date"
type="date"
Expand All @@ -49,6 +50,7 @@ export const TimeLogForm = ({ handleSubmit }) => {
variant="outlined"
/>
<TextField
disabled={disabled}
className="time"
id="time"
label="Time (HH:MM)"
Expand All @@ -61,6 +63,7 @@ export const TimeLogForm = ({ handleSubmit }) => {
variant="outlined"
/>
<TextField
disabled={disabled}
className="description"
id="description"
label="Description"
Expand All @@ -74,11 +77,12 @@ export const TimeLogForm = ({ handleSubmit }) => {
/>
</div>
<Button
disabled={disabled}
type="submit"
variant="contained"
className="submit-button"
style={{
backgroundColor: '#188433',
backgroundColor: !disabled ? '#188433' : 'transparent',
color: 'white',
borderRadius: '8px',
boxShadow: 'none',
Expand Down
44 changes: 36 additions & 8 deletions frontend/src/components/TimeLogsPage/TimeLogsPage.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,19 @@ import { NotInGroupPlaceholder } from '../common/Placeholders'
import { SprintSelect } from './SprintSelect'
import { Typography } from '@material-ui/core'
import timeLogsService from '../../services/timeLogs'
import sprintService from '../../services/sprints'
import myGroupActions from '../../reducers/actions/myGroupActions'
import {
minutesAndHoursFromString,
hoursAndMinutesToMinutes,
} from '../../utils/functions'

import './TimeLogsPage.css'

const TimeLogsPage = (props) => {
const [allLogs, setAllLogs] = useState([])
const [sprintNumber, setSprintNumber] = useState(1) // TODO: determine current sprint.
const [allSprints, setAllSprints] = useState([])
const [currentSprintNumber, setCurrentSprintNumber] = useState(null)
const [selectedSprintNumber, setSelectedSprintNumber] = useState(1)

const { studentNumber, group, initializeMyGroup } = props

Expand All @@ -37,15 +39,37 @@ const TimeLogsPage = (props) => {
console.error('Error fetching logs:', error)
}
}
const fetchSprints = async () => {
try {
const fetchedData = await sprintService.getSprints()
setAllSprints(fetchedData)
} catch (error) {
console.error('Error fetching sprints:', error)
}
}

fetchGroup()
fetchSprints()
fetchTimeLogs()
}, [])

useEffect(() => {
const today = new Intl.DateTimeFormat('fi-FI', {
timeZone: 'Europe/Helsinki',
}).format(new Date())

const currentSprintObject = allSprints.find((sprint) =>
today >= sprint.start_date && today <= sprint.end_date ? sprint : {}
)

currentSprintObject && setCurrentSprintNumber(currentSprintObject.sprint)
currentSprintObject && setSelectedSprintNumber(currentSprintObject.sprint)
}, [allSprints])

const handleSubmit = async (date, time, description) => {
const log = {
studentNumber,
sprint: sprintNumber,
sprint: selectedSprintNumber,
date,
minutes: hoursAndMinutesToMinutes(minutesAndHoursFromString(time)),
description,
Expand All @@ -63,17 +87,18 @@ const TimeLogsPage = (props) => {
}

const handleClickNextSprint = () => {
setSprintNumber(sprintNumber + 1)
setSelectedSprintNumber(selectedSprintNumber + 1)
}

const handleClickPreviousSprint = () => {
setSprintNumber(sprintNumber - 1)
setSelectedSprintNumber(selectedSprintNumber - 1)
}

const isLogs = (logs) => logs && logs.length > 0

const logsBySprint =
isLogs(allLogs) && allLogs.filter((log) => log.sprint === sprintNumber)
isLogs(allLogs) &&
allLogs.filter((log) => log.sprint === selectedSprintNumber)

if (!group) return <NotInGroupPlaceholder />

Expand All @@ -83,12 +108,15 @@ const TimeLogsPage = (props) => {
<div className="timelogs-container-3">
<Typography variant="h4">Time Logs</Typography>
<SprintSelect
sprintNumber={sprintNumber}
sprintNumber={selectedSprintNumber}
handleClickNextSprint={handleClickNextSprint}
handleClickPreviousSprint={handleClickPreviousSprint}
/>
</div>
<TimeLogForm handleSubmit={handleSubmit} />
<TimeLogForm
handleSubmit={handleSubmit}
disabled={selectedSprintNumber !== currentSprintNumber}
/>
</div>
{isLogs(logsBySprint) &&
logsBySprint.map((log) => (
Expand Down

0 comments on commit 2a1b7fd

Please sign in to comment.