{"version":3,"file":"UdpRemindersPage.mjs","names":["React","useCallback","useEffect","useMemo","useRef","useState","ClientSideUdpGrid","getSearchObject","executeQueryAdHoc","getBaseMethod","UdpEnums","useActionState","useHandleAxiosSnackbar","useTranslation","RemindersScreen","SideSheet","useActions","SplitScreenTypeEnums","FILE_TO_TYPES","useUser","GRID_ID","UdpRemindersPage","props","params","nodeObj","manytoManyNodeObjKey","reminders","setReminders","typeOptions","setTypeOptions","loading","setLoading","sheetOpen","setSheetOpen","reminderId","setReminderId","openSplitScreen","actionState","catalogPromotedEntities","handleErrorSnackbar","t","formRef","gridApiRef","user","reminderFiledForSearchApiMethod","Udp_Reminder_Filed_For","reminderTypeGetAllApiMethod","Udp_Reminder_Type","getReminders","remindersList","filterElements","searchField","searchValue","businessObjectKey","searchOperator","searchObject","data","response","apiMethodId","status","pageList","length","map","item","reminder","filedToType","type","defaultValue","openSheet","value","id","closeSheet","handleEditPage","open","action","Reminders","reloadReminders","actionList","title","iconName","handleOnClick","e","disabled","getFiledToType","find","label","getType","code","typeCode","name","columnDefs","headerName","field","resizable","sortable","valueGetter","content","replace","cellRenderer","cellRendererParams","pinned","suppressMenu","gridFunctions","gridOptions","pagination","handleGridApiCallback","api","current","getTypeOptions","options","typesResponse"],"sources":["../../../../src/udp/pages/UdpRemindersPage/UdpRemindersPage.jsx"],"sourcesContent":["import React, {\n  useCallback,\n  useEffect,\n  useMemo,\n  useRef,\n  useState\n} from 'react';\nimport { ClientSideUdpGrid } from '../../../UI/templates/newGrid';\nimport { getSearchObject } from '../../../utilities/search/SearchUtilities';\nimport { executeQueryAdHoc, getBaseMethod } from '../../utilities/methodUtils';\nimport { UdpEnums } from '../../../enums/unitySystemEnums';\nimport { useActionState } from '../../../hooks/useActions';\nimport { useHandleAxiosSnackbar } from '../../../utilities/apiHelpers';\nimport { useTranslation } from 'react-i18next';\nimport { RemindersScreen } from '../../../reminders/RemindersScreen';\nimport { SideSheet } from '../../../UI/surfaces/SideSheet';\nimport { useActions } from '../../../hooks/useActions';\nimport { SplitScreenTypeEnums } from '../../../enums/unitySystemEnums';\nimport { FILE_TO_TYPES } from '../../../constants/reminderConstants';\nimport { useUser } from '../../../utilities/auth/useUser';\n\nconst GRID_ID = 'aac12169-8f86-4a03-b68b-f6d87ac9a2df';\n\nconst UdpRemindersPage = (props) => {\n  const { params } = props;\n  const { nodeObj, manytoManyNodeObjKey } = params;\n  const [reminders, setReminders] = useState([]);\n  const [typeOptions, setTypeOptions] = useState([]);\n  const [loading, setLoading] = useState(false);\n  const [sheetOpen, setSheetOpen] = useState(false);\n  const [reminderId, setReminderId] = useState('');\n  const { openSplitScreen } = useActions();\n  const actionState = useActionState();\n  const { catalogPromotedEntities } = actionState;\n  const { handleErrorSnackbar } = useHandleAxiosSnackbar();\n  const { t } = useTranslation();\n  const formRef = useRef(null);\n  const gridApiRef = useRef(null);\n  const user = useUser();\n\n  const reminderFiledForSearchApiMethod = useMemo(() => {\n    return getBaseMethod(\n      UdpEnums.Udp_Reminder_Filed_For,\n      'unityBaseSearchMethod',\n      catalogPromotedEntities\n    );\n  }, [catalogPromotedEntities]);\n\n  const reminderTypeGetAllApiMethod = useMemo(() => {\n    return getBaseMethod(\n      UdpEnums.Udp_Reminder_Type,\n      'unityBaseGetAllMethod',\n      catalogPromotedEntities\n    );\n  }, [catalogPromotedEntities]);\n\n  const getReminders = useCallback(async () => {\n    if (!nodeObj) {\n      return [];\n    }\n    let remindersList = [];\n    setLoading(true);\n    const filterElements = [\n      {\n        searchField: 'entityBusinessKey',\n        searchValue: manytoManyNodeObjKey\n          ? nodeObj[manytoManyNodeObjKey]?.businessObjectKey\n          : nodeObj?.businessObjectKey,\n        searchOperator: '='\n      }\n    ];\n    const searchObject = getSearchObject(filterElements, 1, 200, true);\n    const data = { data: searchObject };\n\n    if (reminderFiledForSearchApiMethod) {\n      const response = await executeQueryAdHoc(\n        data,\n        reminderFiledForSearchApiMethod.apiMethodId\n      );\n\n      if (response?.status === 200) {\n        const pageList = response.data.pageList;\n        if (pageList?.length) {\n          remindersList = pageList.map((item) => ({\n            ...item.reminder,\n            filedToType: item.type\n          }));\n        }\n      } else {\n        handleErrorSnackbar(null, t('remindersPage.errors.retrieveFailed', { defaultValue: 'Could not retrieve reminders' }));\n      }\n    } else {\n      handleErrorSnackbar(\n        null,\n        t('remindersPage.errors.searchMethodNotPromoted', {\n          defaultValue: 'Search ReminderFiledFor Method Not Promoted'\n        })\n      );\n    }\n    setLoading(false);\n    setReminders(remindersList);\n  }, [\n    reminderFiledForSearchApiMethod,\n    handleErrorSnackbar,\n    nodeObj,\n    manytoManyNodeObjKey,\n    t,\n    user\n  ]);\n\n  const openSheet = useCallback((value) => {\n    setReminderId(value?.id || '');\n    setSheetOpen(true);\n  }, []);\n\n  const closeSheet = useCallback(() => {\n    setReminderId('');\n    setSheetOpen(false);\n  }, []);\n\n  const handleEditPage = useCallback(\n    (value) => {\n      openSplitScreen({\n        open: true,\n        action: null,\n        type: SplitScreenTypeEnums.Reminders,\n        params: { id: value?.id || '', reloadReminders: getReminders }\n      });\n    },\n    [openSplitScreen, getReminders]\n  );\n\n  const actionList = useMemo(\n    () => [\n      {\n        id: 1, // Must be unique\n        title: t('remindersPage.reminder', { defaultValue: 'Reminder' }),\n        iconName: 'view',\n        handleOnClick: (e, params) => openSheet(params?.data),\n        disabled: false\n      },\n      {\n        id: 2, // Must be unique\n        title: t('common.edit', { defaultValue: 'Edit' }),\n        iconName: 'edit',\n        handleOnClick: (e, params) => handleEditPage(params?.data),\n        disabled: false\n      }\n    ],\n    [t, openSheet, handleEditPage]\n  );\n\n  const getFiledToType = (params) => {\n    const filedToType = FILE_TO_TYPES.find(\n      (type) => type.value === params.data.filedToType\n    );\n    return filedToType?.label || '';\n  };\n\n  const getType = useCallback(\n    (params) => {\n      const type = typeOptions.find((t) => t.code === params.data.typeCode);\n      return type?.name || '';\n    },\n    [typeOptions]\n  );\n\n  const columnDefs = [\n    {\n      headerName: t('remindersPage.grid.columns.date', { defaultValue: 'Date' }),\n      field: 'createdOn',\n      resizable: true,\n      sortable: true\n    },\n    {\n      headerName: t('remindersPage.grid.columns.subject', { defaultValue: 'Subject' }),\n      field: 'subject',\n      resizable: true,\n      sortable: true\n    },\n    {\n      headerName: t('remindersPage.grid.columns.reminder', { defaultValue: 'Reminder' }),\n      field: 'content',\n      resizable: true,\n      sortable: true,\n      valueGetter: (params) =>\n        params.data.content?.replace(/(<([^>]+)>)/gi, '') || ''\n    },\n    {\n      headerName: t('remindersPage.grid.columns.reminderDate', { defaultValue: 'Reminder Date' }),\n      field: 'reminderDate',\n      resizable: true,\n      sortable: true\n    },\n    {\n      headerName: t('remindersPage.grid.columns.type', { defaultValue: 'Type' }),\n      field: 'typeCode',\n      resizable: true,\n      sortable: true,\n      valueGetter: getType\n    },\n    {\n      headerName: t('remindersPage.grid.columns.filedToType', { defaultValue: 'Filed To Type' }),\n      field: 'filedToType',\n      resizable: true,\n      sortable: true,\n      valueGetter: getFiledToType\n    },\n    {\n      headerName: t('remindersPage.grid.columns.createdBy', { defaultValue: 'Created By' }),\n      field: 'userDisplayName',\n      resizable: true,\n      sortable: true\n    },\n    {\n      headerName: '',\n      cellRenderer: 'actionsRenderer',\n      cellRendererParams: {\n        actionList\n      },\n      pinned: 'right',\n      suppressMenu: true,\n      sortable: false\n    }\n  ];\n\n  const gridFunctions = [\n    { name: 'quickFilter' },\n    { name: 'agGridExport' },\n    { name: 'agGridSizeColumnsToFit' },\n    { name: 'agGridAutoSizeColumns' },\n    { name: 'agGridResetColumns' },\n    { name: 'agGridHideShowColumns' },\n    { name: 'openSavedViews' }\n  ];\n\n  const gridOptions = useMemo(() => {\n    return {\n      pagination: true\n    };\n  }, []);\n\n  const handleGridApiCallback = (api) => {\n    gridApiRef.current = api;\n  };\n\n  // no dependencies in the array because we only want getReminders to run once\n  useEffect(() => {\n    getReminders();\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  useEffect(() => {\n    const getTypeOptions = async () => {\n      let options = [];\n      if (reminderTypeGetAllApiMethod) {\n        const typesResponse = await executeQueryAdHoc(\n          { data: {} },\n          reminderTypeGetAllApiMethod.apiMethodId\n        );\n        if (typesResponse?.status === 200) {\n          options = typesResponse.data;\n        }\n      }\n      setTypeOptions(options);\n    };\n    getTypeOptions();\n  }, [reminderTypeGetAllApiMethod]);\n\n  return (\n    <>\n      <SideSheet\n        open={sheetOpen}\n        onClose={closeSheet}\n        title={t('remindersPage.reminder', { defaultValue: 'Reminder' })}\n        width={600}\n      >\n        <RemindersScreen\n          viewOnly={true}\n          id={reminderId}\n          shortcutContentFinderEnabled={false}\n          formRef={formRef}\n        />\n      </SideSheet>\n      <ClientSideUdpGrid\n        gridId={GRID_ID}\n        rowData={reminders}\n        loading={loading}\n        columnDefs={columnDefs}\n        gridHeaderConfig={{ title: t('remindersPage.title', { defaultValue: 'Reminders' }) }}\n        gridFunctions={gridFunctions}\n        gridOptions={gridOptions}\n        gridApiCallback={handleGridApiCallback}\n      />\n    </>\n  );\n};\n\nexport default UdpRemindersPage;\n"],"mappings":"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"}