diff --git a/src/components/LoadingSpinner.js b/src/components/LoadingSpinner.js index 59b1afa..7f2d379 100644 --- a/src/components/LoadingSpinner.js +++ b/src/components/LoadingSpinner.js @@ -22,12 +22,14 @@ const CenteredContainer = styled.div` display: flex; align-items: center; justify-content: center; + + ${({ fullHeight }) => (fullHeight ? 'height: 100vh;' : '')} ` export const Spinner = () => -export const CenteredSpinner = () => ( - +export const CenteredSpinner = (props) => ( + ) diff --git a/src/helpers/groupTasks.js b/src/helpers/groupTasks.js index 5cacfe9..41e7c42 100644 --- a/src/helpers/groupTasks.js +++ b/src/helpers/groupTasks.js @@ -33,20 +33,24 @@ export const getMemberCompletedTasks = (member, mandatoryTasks) => { * @param itemsByGuid * @param completedTaskItems */ -export const getTaskGroupsWithItems = (itemsByGuid, completedTaskItems) => - Object.values(itemsByGuid) - .filter((item) => item.type === 'TASK_GROUP' && item.item.activities.length) - .reduce((acc, item) => { +export const getTaskGroupsWithItems = (itemsByGuid, completedTaskItems) => { + const getActivities = (item) => + (item && item.item && item.item.activities) || [] + + return Object.values(itemsByGuid) + .filter((item) => item.type === 'TASK_GROUP' && getActivities(item).length) + .reduce((acc, taskGroup) => { const itemTasks = completedTaskItems.filter((task) => { - return item.item.activities.find((groupTask) => { - return getItemId(groupTask) === getItemId(task.item) - }) + return getActivities(taskGroup).find( + (groupTask) => getItemId(groupTask) === getItemId(task.item) + ) }) - if (itemTasks.length) { - acc[getItemId(item.item)] = itemTasks + if (itemTasks.length && taskGroup.item) { + acc[getItemId(taskGroup.item)] = itemTasks } return acc }, {}) +} /** * Get the parent groups for a task group with the tasks array as the value for the last child group diff --git a/src/views/Member/index.js b/src/views/Member/index.js index d112ff1..77691e4 100644 --- a/src/views/Member/index.js +++ b/src/views/Member/index.js @@ -122,9 +122,20 @@ const Member = () => { const { groupId } = useParams() const { memberId } = useParams() - if (!groupsData) return null - - if (!itemsByGuid || !translations) return null + if ( + !groupsData || + !itemsByGuid || + !translations || + Object.keys(itemsByGuid).length < 25 + ) { + return ( + + + + + + ) + } const group = groupsData.find( (groups) => groups.id.toString() === groupId.toString()