Skip to content

Commit

Permalink
fix(doneTracker): remove TrackerStatus done, use bool instead
Browse files Browse the repository at this point in the history
  • Loading branch information
Clm-Roig committed May 4, 2022
1 parent c50c0f0 commit 4affe68
Show file tree
Hide file tree
Showing 17 changed files with 91 additions and 174 deletions.
1 change: 1 addition & 0 deletions src/components/TrackerCard/TrackerCard.spec.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ const tracker1 = {
id: v4(),
beginDate: subDays(new Date(), 3).toString(),
duration: 13,
isDoneForToday: false,
name: 'Musculation',
remainingDays: 10,
requiredCompletions: [
Expand Down
11 changes: 0 additions & 11 deletions src/components/TrackerList/TrackerList.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import ArchiveIcon from '@mui/icons-material/Archive';
import DoneAllIcon from '@mui/icons-material/DoneAll';
import MovingIcon from '@mui/icons-material/Moving';
import { List, ListProps } from '@mui/material';
import { FC, useCallback, useState } from 'react';
Expand Down Expand Up @@ -28,7 +27,6 @@ const TrackerList: FC<Props> = ({ trackers, listProps }) => {
.filter((t) => t.status === TrackerStatus.archived)
.sort(sortByName);
const activeTrackers = trackers.filter((t) => t.status === TrackerStatus.active).sort(sortByName);
const doneTrackers = trackers.filter((t) => t.status === TrackerStatus.done).sort(sortByName);

const toggleTrackerChecked = (tracker: Tracker) => {
const trackerIdx = selectedTrackers.indexOf(tracker);
Expand All @@ -51,15 +49,6 @@ const TrackerList: FC<Props> = ({ trackers, listProps }) => {
/>

<List {...listProps}>
{doneTrackers.length > 0 && <TrackerListSubheader icon={<DoneAllIcon />} text="TERMINÉS" />}
{doneTrackers.map((t) => (
<TrackerListItem
checked={selectedTrackers.indexOf(t) !== -1}
toggleTrackerChecked={toggleTrackerChecked}
tracker={t}
key={t.id}
/>
))}
{activeTrackers.length > 0 && <TrackerListSubheader icon={<MovingIcon />} text="ACTIFS" />}
{activeTrackers.map((t) => (
<TrackerListItem
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import ArchiveIcon from '@mui/icons-material/Archive';
import DeleteForeverIcon from '@mui/icons-material/DeleteForever';
import DeselectIcon from '@mui/icons-material/Deselect';
import DoneAllIcon from '@mui/icons-material/DoneAll';
import MoreVertIcon from '@mui/icons-material/MoreVert';
import MovingIcon from '@mui/icons-material/Moving';
import SelectAllIcon from '@mui/icons-material/SelectAll';
Expand All @@ -19,7 +18,6 @@ import {
archiveTrackers,
deleteTrackers,
markTrackersAsActive,
markTrackersAsDone,
unarchiveTrackers
} from '../../../store/trackers/trackersSlice';
import Order from '../Order';
Expand Down Expand Up @@ -47,9 +45,7 @@ const TrackerListActions: FC<Props> = ({
const atLeastOneSelectedArchived = selectedTrackers.some(
(t) => t.status === TrackerStatus.archived
);
const atLeastOneSelectedDone = selectedTrackers.some((t) => t.status === TrackerStatus.done);
const atLeastOneSelectedActive = selectedTrackers.some((t) => t.status === TrackerStatus.active);

const allSelectedArchived = selectedTrackers.every((t) => t.status === TrackerStatus.archived);

const handleMenuClick = (event: React.MouseEvent<HTMLButtonElement>) => {
Expand Down Expand Up @@ -84,9 +80,6 @@ const TrackerListActions: FC<Props> = ({
const handlemarkTrackersAsActive = () => {
handleAction(markTrackersAsActive, 'actif', 'success');
};
const handlemarkTrackersAsDone = () => {
handleAction(markTrackersAsDone, 'terminé', 'success');
};
const handleUnrchiveTrackers = () => {
handleAction(unarchiveTrackers, 'désarchivé', 'success');
};
Expand Down Expand Up @@ -123,22 +116,6 @@ const TrackerListActions: FC<Props> = ({
MenuListProps={{
'aria-labelledby': 'basic-button'
}}>
<Tooltip
arrow
title={
selectedTrackers.length === 0 || !atLeastOneSelectedDone
? ''
: 'Vous ne pouvez pas terminer un tracker terminé.'
}>
<span>
<MenuItem
disabled={selectedTrackers.length === 0 || atLeastOneSelectedDone}
onClick={handlemarkTrackersAsDone}>
<DoneAllIcon />
&nbsp; Terminer
</MenuItem>
</span>
</Tooltip>
<Tooltip
arrow
title={
Expand Down
1 change: 1 addition & 0 deletions src/components/forms/TrackerForm/TrackerForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ const getDefaultValues = (): FormValues => ({
duration: '',
defaultCompletions: [],
entries: [],
isDoneForToday: false,
name: '',
requiredCompletions: [],
status: TrackerStatus.active
Expand Down
2 changes: 2 additions & 0 deletions src/models/Tracker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import TrackerStatus from './TrackerStatus';
* @member {number?} duration number of days the tracker is active since beginDate
* @member {string} endDate when the Tracker was archived
* @member {TrackerEntry[]} entries TrackerEntries related to this Tracker
* @member {boolean} isDoneForToday
* @member {string} name
* @member {number?} remainingDays computed attribute describing the number of days before the tracker is archived
* @member {Completion[]} requiredCompletions objectives to complete the tracker
Expand All @@ -27,6 +28,7 @@ export default interface Tracker {
duration?: number;
endDate?: string;
entries: TrackerEntry[];
isDoneForToday: boolean;
name: string;
remainingDays?: number;
requiredCompletions: Completion[];
Expand Down
3 changes: 1 addition & 2 deletions src/models/TrackerStatus.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
enum TrackerStatus {
active, // todo for the current day
archived, // terminated until unarchived
done // done for the current day
archived // terminated until unarchived
}

export default TrackerStatus;
4 changes: 4 additions & 0 deletions src/store/trackers/FAKE_DATA.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ export const testTracker1: Tracker = {
}
],
duration: 13,
isDoneForToday: false,
name: 'Musculation',
remainingDays: 10,
requiredCompletions: [
Expand All @@ -42,6 +43,7 @@ export const testTracker2: Tracker = {
beginDate: subDays(new Date(), 10).toString(),
duration: 70,
entries: [],
isDoneForToday: false,
name: 'Eat',
requiredCompletions: [
{
Expand All @@ -59,6 +61,7 @@ export const testTracker4: Tracker = {
beginDate: new Date().toString(),
defaultCompletions: [],
entries: [],
isDoneForToday: false,
name: 'Wake up',
requiredCompletions: [],
status: TrackerStatus.active
Expand All @@ -75,6 +78,7 @@ export const testTracker3: Tracker = {
}
],
entries: [],
isDoneForToday: false,
name: 'Drink',
requiredCompletions: [
{
Expand Down
8 changes: 4 additions & 4 deletions src/store/trackers/reducers/archive.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ describe('trackers reducer', () => {
status: SliceStatus.idle,
trackers: [
{ ...testTracker1, status: TrackerStatus.active },
{ ...testTracker2, status: TrackerStatus.done }
{ ...testTracker2, isDoneForToday: true }
]
},
archiveTracker(testTracker1.id)
Expand All @@ -29,7 +29,7 @@ describe('trackers reducer', () => {
const t2 = finalState.trackers.find((t) => t.id === testTracker2Id)!;
expect(isSameDay(new Date(t1.endDate!), new Date())).toBeTruthy();
expect(t1.status).toBe(TrackerStatus.archived);
expect(t2.status).toBe(TrackerStatus.done);
expect(t2.isDoneForToday).toBeTruthy();
});
it('should archive multiple trackers and set its endDate', () => {
const finalState = trackersReducer(
Expand All @@ -38,7 +38,7 @@ describe('trackers reducer', () => {
status: SliceStatus.idle,
trackers: [
{ ...testTracker1, status: TrackerStatus.active },
{ ...testTracker2, status: TrackerStatus.done },
{ ...testTracker2, isDoneForToday: true },
{ ...testTracker3, status: TrackerStatus.active }
]
},
Expand All @@ -49,7 +49,7 @@ describe('trackers reducer', () => {
expect(isSameDay(new Date(t1.endDate!), new Date())).toBeTruthy();
expect(isSameDay(new Date(t2.endDate!), new Date())).toBeTruthy();
expect(t1.status).toBe(TrackerStatus.archived);
expect(t2.status).toBe(TrackerStatus.archived);
expect(t2.isDoneForToday).toBeTruthy();
});
});
});
7 changes: 6 additions & 1 deletion src/store/trackers/reducers/markAsActive.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,12 @@ describe('trackers reducer', () => {
trackers: [
{ ...testTracker1, status: TrackerStatus.archived },
{ ...testTracker2, status: TrackerStatus.active },
{ ...testTracker3, status: TrackerStatus.done, endDate: new Date().toString() }
{
...testTracker3,
isDoneForToday: true,
status: TrackerStatus.archived,
endDate: new Date().toString()
}
]
},
markTrackersAsActive([testTracker1Id, testTracker3Id])
Expand Down
51 changes: 0 additions & 51 deletions src/store/trackers/reducers/markAsDone.spec.ts

This file was deleted.

29 changes: 0 additions & 29 deletions src/store/trackers/reducers/markAsDone.ts

This file was deleted.

2 changes: 1 addition & 1 deletion src/store/trackers/reducers/unarchive.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ describe('trackers reducer', () => {
status: SliceStatus.idle,
trackers: [
{ ...testTracker1, status: TrackerStatus.active },
{ ...testTracker2, status: TrackerStatus.done },
{ ...testTracker2, isDoneForToday: true },
{ ...testTracker3, status: TrackerStatus.archived }
]
},
Expand Down
25 changes: 19 additions & 6 deletions src/store/trackers/trackers.selectors.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,18 +88,28 @@ describe('selectTrackersDone()', () => {
trackers: {
...state.trackers,
trackers: [
{ ...testTracker1, status: TrackerStatus.done },
{
...testTracker1,
isDoneForToday: true,
status: TrackerStatus.active,
entries: [{ ...testEntry1, completions: testTracker1.requiredCompletions }]
},
testTracker2,
{ ...testTracker3, status: TrackerStatus.done }
{
...testTracker3,
isDoneForToday: true,
status: TrackerStatus.active,
entries: [{ ...testEntry1 }]
}
]
}
};
const { error, status, trackers } = selectTrackersDone(stateWithTrackers);
expect(error).toEqual({});
expect(status).toEqual(SliceStatus.idle);
expect(trackers.length).toEqual(2);
expect(trackers.length).toEqual(1);
for (const tracker of trackers) {
expect(tracker.status).toBe(TrackerStatus.done);
expect(tracker.isDoneForToday).toBeTruthy();
}
});
});
Expand All @@ -115,9 +125,12 @@ describe('selectTodoTrackers()', () => {
trackers: {
...state.trackers,
trackers: [
{ ...testTracker1, status: TrackerStatus.archived },
{
...testTracker1,
entries: [{ ...testEntry1, completions: testTracker1.requiredCompletions }]
},
{ ...testTracker3, status: TrackerStatus.archived },
{ ...testTracker2, dateHidden: new Date().toString() },
{ ...testTracker3, status: TrackerStatus.done },
{ ...testTracker3, status: TrackerStatus.active }
]
}
Expand Down
5 changes: 2 additions & 3 deletions src/store/trackers/trackers.selectors.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { differenceInDays, isAfter, isEqual, isSameMonth, isSameYear } from 'date-fns';

import TrackerEntry from '../../models/TrackerEntry';
import TrackerStatus from '../../models/TrackerStatus';
import { RootState } from '../store';
import {
formatTrackers,
Expand All @@ -21,8 +20,8 @@ const selectHiddenTrackers = (state: RootState) => {
};

const selectTrackersDone = (state: RootState) => {
const newTrackers = removeHiddenTrackers(
formatTrackers(state.trackers.trackers).filter((t) => t.status === TrackerStatus.done)
const newTrackers = removeArchivedTrackers(
removeHiddenTrackers(formatTrackers(state.trackers.trackers).filter((t) => t.isDoneForToday))
);

return {
Expand Down
5 changes: 0 additions & 5 deletions src/store/trackers/trackersSlice.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import { createTrackerReducer } from './reducers/create';
import { deleteTrackerReducer, deleteTrackersReducer } from './reducers/delete';
import { hideTrackerReducer } from './reducers/hide';
import { markTrackerAsActiveReducer, markTrackersAsActiveReducer } from './reducers/markAsActive';
import { markTrackerAsDoneReducer, markTrackersAsDoneReducer } from './reducers/markAsDone';
import { markTrackerAsVisibleReducer } from './reducers/markAsVisible';
import { unarchiveTrackersReducer } from './reducers/unarchive';
import { completelyValidateReducer, customValidateReducer } from './reducers/validate';
Expand Down Expand Up @@ -42,9 +41,7 @@ export const trackersSlice = createSlice({
deleteTrackers: deleteTrackersReducer,
hideTracker: hideTrackerReducer,
markTrackersAsActive: markTrackersAsActiveReducer,
markTrackersAsDone: markTrackersAsDoneReducer,
markTrackerAsActive: markTrackerAsActiveReducer,
markTrackerAsDone: markTrackerAsDoneReducer,
markTrackerAsVisible: markTrackerAsVisibleReducer,
unarchiveTrackers: unarchiveTrackersReducer
}
Expand All @@ -64,8 +61,6 @@ export const {
hideTracker,
markTrackerAsActive,
markTrackersAsActive,
markTrackerAsDone,
markTrackersAsDone,
markTrackerAsVisible,
unarchiveTrackers
} = trackersSlice.actions;
Expand Down
Loading

0 comments on commit 4affe68

Please sign in to comment.