diff --git a/src/views/ChoreEdit/ChoreEdit.jsx b/src/views/ChoreEdit/ChoreEdit.jsx index a0c5fd4..958ab08 100644 --- a/src/views/ChoreEdit/ChoreEdit.jsx +++ b/src/views/ChoreEdit/ChoreEdit.jsx @@ -113,8 +113,8 @@ const ChoreEdit = () => { if (assignedTo < 0) { errors.assignedTo = 'Assigned to is required' } - if (frequencyType === 'interval' && frequency < 1) { - errors.frequency = 'Frequency is required' + if (frequencyType === 'interval' && !frequency > 0) { + errors.frequency = `Invalid frequency, the ${frequencyMetadata.unit} should be > 0` } if ( frequencyType === 'days_of_the_week' && diff --git a/src/views/ChoreEdit/RepeatSection.jsx b/src/views/ChoreEdit/RepeatSection.jsx index 94d16c8..f9a578c 100644 --- a/src/views/ChoreEdit/RepeatSection.jsx +++ b/src/views/ChoreEdit/RepeatSection.jsx @@ -1,5 +1,6 @@ import { Box, + Button, Card, Checkbox, Chip, @@ -53,6 +54,30 @@ const MONTH_WITH_NO_31_DAYS = [ 'september', 'november', ] +const MONTHS = [ + 'january', + 'february', + 'march', + 'april', + 'may', + 'june', + 'july', + 'august', + 'september', + 'october', + 'november', + 'december', +] + +const DAYS = [ + 'monday', + 'tuesday', + 'wednesday', + 'thursday', + 'friday', + 'saturday', + 'sunday', +] const RepeatOnSections = ({ frequencyType, frequency, @@ -99,12 +124,15 @@ const RepeatOnSections = ({ Every: { - if (e.target.value < 1) { - e.target.value = 1 - } onFrequencyUpdate(e.target.value) }} /> @@ -142,19 +170,9 @@ const RepeatOnSections = ({ '--ListItem-radius': '20px', }} > - {[ - 'monday', - 'tuesday', - 'wednesday', - 'thursday', - 'friday', - 'saturday', - 'sunday', - ].map(item => ( + {DAYS.map(item => ( { const newDaysOfTheWeek = frequencyMetadata['days'] || [] @@ -180,6 +198,31 @@ const RepeatOnSections = ({ ))} + {timePickerComponent} @@ -207,35 +250,10 @@ const RepeatOnSections = ({ '--ListItem-radius': '20px', }} > - {[ - 'january', - 'february', - 'march', - 'april', - 'may', - 'june', - 'july', - 'august', - 'september', - 'october', - 'november', - 'december', - ].map(item => ( + {MONTHS.map(item => ( { - // const newMonthsOfTheYear = { - // ...monthsOfTheYear, - // } - // newMonthsOfTheYear[item] = !newMonthsOfTheYear[item] - // onFrequencyMetadataUpdate({ - // months: newMonthsOfTheYear, - // }) - // setMonthsOfTheYear(newMonthsOfTheYear) - // }} onClick={() => { const newMonthsOfTheYear = frequencyMetadata['months'] || [] @@ -263,6 +281,31 @@ const RepeatOnSections = ({ ))} + { } const handleLabelFiltering = chipClicked => { - console.log('chipClicked', chipClicked) - if (chipClicked.label) { const label = chipClicked.label const labelFiltered = [...chores].filter(chore => - chore.labelsV2.some(l => l.id === label.id), + chore.labelsV2.some( + l => l.id === label.id && l.created_by === label.created_by, + ), ) - console.log('labelFiltered', labelFiltered) setFilteredChores(labelFiltered) setSelectedFilter('Label: ' + label.name) } else if (chipClicked.priority) { @@ -200,9 +199,7 @@ const MyChores = () => { const fuse = new Fuse( chores.map(c => ({ ...c, - raw_label: c.labelsV2 - .map(l => userLabels.find(x => x.id === l.id).name) - .join(' '), + raw_label: c.labelsV2.map(c => c.name).join(' '), })), searchOptions, ) @@ -287,7 +284,23 @@ const MyChores = () => { } - options={userLabels} + // TODO : this need simplification we want to display both user labels and chore labels + // that why we are merging them here. + // we also filter out the labels that user created as those will be part of user labels + options={[ + ...userLabels, + ...chores + .map(c => c.labelsV2) + .flat() + .filter(l => l.created_by !== userProfile.id) + .map(l => { + // if user created it don't show it: + return { + ...l, + name: l.name + ' (Shared Label)', + } + }), + ]} selectedItem={selectedFilter} onItemSelect={selected => { handleLabelFiltering({ label: selected })