{"version":3,"file":"RemindersCard.mjs","names":["React","useCallback","useMemo","Typography","LinearProgress","makeStyles","List","ListItem","Checkbox","ListItemText","ListItemSecondaryAction","Divider","FormControlLabel","useTranslation","StatusChip","UnityFluentIcon","getUnityIconFromName","getIconFromName","useActions","SplitScreenTypeEnums","CompleteReminderSwitch","executeQueryWithParameters","useStyles","theme","root","item","display","width","paddingLeft","paddingRight","RemindersCard","props","$","_c","reminders","setReminders","loading","getNodeToLoad","onLoadedNodeClick","getIcon","t0","updateRemindersAcknowledgement","undefined","_temp","classes","openSplitScreen","t","t1","event","reminder","updatedReminder","checked","target","handleSwitchChange","t2","reminder_0","acknowledged","event_0","defaultValue","marginRight","getCompleteSwitch","getStatusLabel","_temp2","getStatusColor","_temp3","t3","evt","reminder_1","updatedReminders","matchingReminders","filter","r","id","forEach","matchingReminder","handleReminderCheck","t4","nodeToLoad","reminder_2","open","action","type","Reminders","params","additionalInputs","handleReminderClick","t5","length","map","reminder_3","icon","nodeToLoad_0","evt_0","subject","lineHeight","fontSize","fontWeight","color","Date","reminderDate","toDateString","name","height","date","getTime","now","Math","floor","date_0","reminderDate_0"],"sources":["../../src/reminders/RemindersCard.jsx"],"sourcesContent":["import React, { useCallback, useMemo } from 'react';\nimport {\n  Typography,\n  LinearProgress,\n  makeStyles,\n  List,\n  ListItem,\n  Checkbox,\n  ListItemText,\n  ListItemSecondaryAction,\n  Divider,\n  FormControlLabel\n} from '@material-ui/core';\nimport { useTranslation } from 'react-i18next';\nimport { StatusChip } from '../UI/dataDisplay/status/StatusChip';\nimport { UnityFluentIcon } from '../utilities/iconLibrary/UnityFluentIcon';\nimport { getUnityIconFromName } from '../utilities/iconLibrary/UnityIconLibrary';\nimport { getIconFromName } from '../utilities/tree/TreeUtilities';\nimport { useActions } from '../hooks/useActions';\nimport { SplitScreenTypeEnums } from '../enums/unitySystemEnums';\nimport { CompleteReminderSwitch } from './CompleteReminderSwitch';\nimport { executeQueryWithParameters } from '../udp/utilities/methodUtils';\n\nconst useStyles = makeStyles((theme) => ({\n  root: {},\n  item: {\n    display: 'flex',\n    '& .MuiListItem-container': {\n      width: '100%'\n    },\n    '& .MuiListItem-container > .MuiListItem-button': {\n      paddingLeft: 0,\n      paddingRight: 0\n    }\n  }\n}));\n\nexport const RemindersCard = (props) => {\n  const {\n    reminders,\n    setReminders,\n    loading,\n    getNodeToLoad,\n    onLoadedNodeClick,\n    getIcon = () => {},\n    updateRemindersAcknowledgement\n  } = props;\n  const classes = useStyles(props);\n  const { openSplitScreen } = useActions();\n  const { t } = useTranslation();\n\n  const handleSwitchChange = useCallback(\n    async (event, reminder) => {\n      const updatedReminder = { ...reminder };\n      updatedReminder.checked = event.target.checked;\n      await updateRemindersAcknowledgement([updatedReminder]);\n    },\n    [updateRemindersAcknowledgement]\n  );\n\n  const getCompleteSwitch = useCallback(\n    (reminder) => (\n      <FormControlLabel\n        control={\n          <CompleteReminderSwitch\n            size='small'\n            checked={reminder?.acknowledged || false}\n            onChange={(event) => handleSwitchChange(event, reminder)}\n          />\n        }\n        label={t('reminders.card.complete', { defaultValue: 'Complete' })}\n        style={{ marginRight: 8 }}\n      />\n    ),\n    [handleSwitchChange, t]\n  );\n\n  const getStatusLabel = useCallback((date) => {\n    const day = 1000 * 60 * 60 * 24;\n    const reminderDate = new Date(date).getTime();\n    if (reminderDate >= Date.now() - day * 7) {\n      // Less than or equal 7 days past reminder date\n      return Math.floor((Date.now() - reminderDate) / (1000 * 3600 * 24));\n    } else if (\n      reminderDate < Date.now() - day * 7 &&\n      reminderDate >= Date.now() - day * 30\n    ) {\n      // Greater than 7 days but less than or equal to 30 days past reminder date\n      return Math.floor((Date.now() - reminderDate) / (1000 * 3600 * 24));\n    } else if (\n      reminderDate < Date.now() - day * 30 &&\n      reminderDate >= Date.now() - day * 180\n    ) {\n      // Greater 30 days but less than or equal to 180 days past reminder date\n      return Math.floor((Date.now() - reminderDate) / (1000 * 3600 * 24));\n    } else if (reminderDate < Date.now() - day * 180) {\n      // Greater than 180 days past reminder date\n      return Math.floor((Date.now() - reminderDate) / (1000 * 3600 * 24));\n    }\n  }, []);\n\n  const getStatusColor = useCallback((date) => {\n    const day = 1000 * 60 * 60 * 24;\n    const reminderDate = new Date(date).getTime();\n    if (reminderDate >= Date.now() - day * 7) {\n      // Less than or equal 7 days past reminder date\n      return '';\n    } else if (\n      reminderDate < Date.now() - day * 7 &&\n      reminderDate >= Date.now() - day * 30\n    ) {\n      // Greater than 7 days but less than or equal to 30 days past reminder date\n      return 'info';\n    } else if (\n      reminderDate < Date.now() - day * 30 &&\n      reminderDate >= Date.now() - day * 180\n    ) {\n      // Greater 30 days but less than or equal to 180 days past reminder date\n      return 'warning';\n    } else if (reminderDate < Date.now() - day * 180) {\n      // Greater than 180 days past reminder date\n      return 'error';\n    }\n  }, []);\n\n  const handleReminderCheck = useCallback(\n    (evt, reminder) => {\n      const updatedReminders = [...reminders];\n      const matchingReminders = updatedReminders.filter(\n        (r) => r.id === reminder.id\n      );\n      matchingReminders?.forEach(\n        (matchingReminder) => (matchingReminder.checked = evt.target.checked)\n      );\n      setReminders(updatedReminders);\n    },\n    [reminders, setReminders]\n  );\n\n  const handleReminderClick = useCallback(\n    (nodeToLoad, reminder) => {\n      onLoadedNodeClick(nodeToLoad);\n\n      openSplitScreen({\n        open: true,\n        action: null,\n        type: SplitScreenTypeEnums.Reminders,\n        params: {\n          id: reminder?.id || '',\n          additionalInputs: reminder ? getCompleteSwitch(reminder) : null\n        }\n      });\n    },\n    [onLoadedNodeClick, openSplitScreen, getCompleteSwitch]\n  );\n\n  return loading ? (\n    <LinearProgress />\n  ) : reminders?.length ? (\n    <List className={classes.root}>\n      {reminders.map((reminder) => {\n        const icon = getIcon(reminder);\n        const nodeToLoad = getNodeToLoad(reminder);\n        return (\n          <>\n            <div className={classes.item} key={reminder.id}>\n              <Checkbox\n                id='udpRecord-RemindersCard-Checkbox'\n                udprecordid='udpRecord-RemindersCard-Checkbox'\n                edge='start'\n                checked={reminder.checked || reminder.acknowledged}\n                disableRipple\n                size='small'\n                onChange={(evt) => handleReminderCheck(evt, reminder)}\n                disabled={reminder.acknowledged}\n              />\n              <ListItem\n                id='udpRecord-ReminderCard-Item'\n                udprecordid='udpRecord-ReminderCard-Item'\n                key={reminder.id}\n                dense\n                subject={reminder.subject}\n                removePadding={true}\n                button\n                onClick={() => handleReminderClick(nodeToLoad, reminder)}\n              >\n                <ListItemText>\n                  <div style={{ display: 'block' }}>\n                    <Typography\n                      style={{ lineHeight: '0.9rem', fontSize: '0.8rem' }}\n                    >\n                      {reminder.subject}\n                    </Typography>\n                  </div>\n                  <Typography\n                    style={{\n                      lineHeight: '0.8rem',\n                      fontSize: '0.7rem',\n                      fontWeight: 400,\n                      color: 'rgba(0, 0, 0, 0.54)'\n                    }}\n                  >\n                    {new Date(reminder.reminderDate).toDateString()}\n                  </Typography>\n                </ListItemText>\n                <ListItemSecondaryAction>\n                  <StatusChip\n                    status={getStatusColor(reminder.reminderDate)}\n                    label={getStatusLabel(reminder.reminderDate)}\n                    icon={\n                      <UnityFluentIcon\n                        type={icon?.type}\n                        icon={\n                          icon?.type === 'unity'\n                            ? getUnityIconFromName(icon?.name || '')\n                            : getIconFromName(icon?.name || '')\n                        }\n                      />\n                    }\n                  />\n                </ListItemSecondaryAction>\n              </ListItem>\n            </div>\n            <Divider style={{ height: 1 }} />\n          </>\n        );\n      })}\n    </List>\n  ) : (\n    <Typography>\n      {t('reminders.card.allCompleted', {\n        defaultValue: 'All Reminders Completed'\n      })}\n    </Typography>\n  );\n};\n"],"mappings":"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"}