{"version":3,"file":"UdpNotesPage.mjs","names":["React","useCallback","useEffect","useMemo","useRef","useState","ClientSideUdpGrid","getSearchObject","executeQueryAdHoc","getBaseMethod","UdpEnums","useActionState","useHandleAxiosSnackbar","useTranslation","NotesScreen","SideSheet","useActions","SplitScreenTypeEnums","useUser","GRID_ID","UdpNotesPage","props","params","nodeObj","manytoManyNodeObjKey","notes","setNotes","typeOptions","setTypeOptions","loading","setLoading","sheetOpen","setSheetOpen","noteId","setNoteId","openSplitScreen","actionState","catalogPromotedEntities","handleErrorSnackbar","t","formRef","gridApiRef","user","noteFiledForSearchApiMethod","Udp_Note_Filed_For","noteTypeGetAllApiMethod","Udp_Note_Type","getNotes","notesList","filterElements","searchField","searchValue","businessObjectKey","searchOperator","searchObject","data","response","apiMethodId","status","pageList","length","map","item","note","defaultValue","openSheet","value","id","closeSheet","handleEditPage","open","action","type","Notes","reloadNotes","getType","find","code","typeCode","name","actionList","title","iconName","handleOnClick","e","disabled","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/UdpNotesPage/UdpNotesPage.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 { NotesScreen } from '../../../notes/NotesScreen';\nimport { SideSheet } from '../../../UI/surfaces/SideSheet';\nimport { useActions } from '../../../hooks/useActions';\nimport { SplitScreenTypeEnums } from '../../../enums/unitySystemEnums';\nimport { useUser } from '../../../utilities/auth/useUser';\n\nconst GRID_ID = '52904970-8669-418e-b762-febb9ab38bad';\n\nconst UdpNotesPage = (props) => {\n  const { params } = props;\n  const { nodeObj, manytoManyNodeObjKey } = params;\n  const [notes, setNotes] = useState([]);\n  const [typeOptions, setTypeOptions] = useState([]);\n  const [loading, setLoading] = useState(false);\n  const [sheetOpen, setSheetOpen] = useState(false);\n  const [noteId, setNoteId] = 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 noteFiledForSearchApiMethod = useMemo(() => {\n    return getBaseMethod(\n      UdpEnums.Udp_Note_Filed_For,\n      'unityBaseSearchMethod',\n      catalogPromotedEntities\n    );\n  }, [catalogPromotedEntities]);\n\n  const noteTypeGetAllApiMethod = useMemo(() => {\n    return getBaseMethod(\n      UdpEnums.Udp_Note_Type,\n      'unityBaseGetAllMethod',\n      catalogPromotedEntities\n    );\n  }, [catalogPromotedEntities]);\n\n  const getNotes = useCallback(async () => {\n    if (!nodeObj) {\n      return [];\n    }\n    let notesList = [];\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 (noteFiledForSearchApiMethod) {\n      const response = await executeQueryAdHoc(\n        data,\n        noteFiledForSearchApiMethod.apiMethodId\n      );\n\n      if (response?.status === 200) {\n        const pageList = response.data.pageList;\n        if (pageList?.length) {\n          notesList = pageList.map((item) => item.note);\n        }\n      } else {\n        handleErrorSnackbar(null, t('notesPage.errors.retrieveFailed', { defaultValue: 'Could not retrieve notes' }));\n      }\n    } else {\n      handleErrorSnackbar(null, t('notesPage.errors.searchMethodNotPromoted', { defaultValue: 'Search NoteFiledFor Method Not Promoted' }));\n    }\n    setLoading(false);\n    setNotes(notesList);\n  }, [\n    noteFiledForSearchApiMethod,\n    handleErrorSnackbar,\n    nodeObj,\n    manytoManyNodeObjKey,\n    t,\n    user\n  ]);\n\n  const openSheet = useCallback((value) => {\n    setNoteId(value?.id || '');\n    setSheetOpen(true);\n  }, []);\n\n  const closeSheet = useCallback(() => {\n    setNoteId('');\n    setSheetOpen(false);\n  }, []);\n\n  const handleEditPage = useCallback(\n    (value) => {\n      openSplitScreen({\n        open: true,\n        action: null,\n        type: SplitScreenTypeEnums.Notes,\n        params: { id: value?.id || '', reloadNotes: getNotes }\n      });\n    },\n    [openSplitScreen, getNotes]\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 actionList = useMemo(\n    () => [\n      {\n        id: 1, // Must be unique\n        title: t('notesPage.note', { defaultValue: 'Note' }),\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 columnDefs = [\n    {\n      headerName: t('notesPage.grid.columns.date', { defaultValue: 'Date' }),\n      field: 'createdOn',\n      resizable: true,\n      sortable: true\n    },\n    {\n      headerName: t('notesPage.grid.columns.subject', { defaultValue: 'Subject' }),\n      field: 'subject',\n      resizable: true,\n      sortable: true\n    },\n    {\n      headerName: t('notesPage.grid.columns.note', { defaultValue: 'Note' }),\n      field: 'content',\n      resizable: true,\n      sortable: true,\n      valueGetter: (params) =>\n        params.data.content?.replace(/(<([^>]+)>)/gi, '') || ''\n    },\n    {\n      headerName: t('notesPage.grid.columns.type', { defaultValue: 'Type' }),\n      field: 'typeCode',\n      resizable: true,\n      sortable: true,\n      valueGetter: getType\n    },\n    {\n      headerName: t('notesPage.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 getNotes to run once\n  useEffect(() => {\n    getNotes();\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  useEffect(() => {\n    const getTypeOptions = async () => {\n      let options = [];\n      if (noteTypeGetAllApiMethod) {\n        const typesResponse = await executeQueryAdHoc(\n          { data: {} },\n          noteTypeGetAllApiMethod.apiMethodId\n        );\n        if (typesResponse?.status === 200) {\n          options = typesResponse.data;\n        }\n      }\n      setTypeOptions(options);\n    };\n    getTypeOptions();\n  }, [noteTypeGetAllApiMethod]);\n\n  return (\n    <>\n      <SideSheet\n        open={sheetOpen}\n        onClose={closeSheet}\n        title={t('notesPage.note', { defaultValue: 'Note' })}\n        width={600}\n      >\n        <NotesScreen\n          viewOnly={true}\n          id={noteId}\n          shortcutContentFinderEnabled={false}\n          formRef={formRef}\n        />\n      </SideSheet>\n      <ClientSideUdpGrid\n        gridId={GRID_ID}\n        rowData={notes}\n        loading={loading}\n        columnDefs={columnDefs}\n        gridHeaderConfig={{ title: t('notesPage.title', { defaultValue: 'Notes' }) }}\n        gridFunctions={gridFunctions}\n        gridOptions={gridOptions}\n        gridApiCallback={handleGridApiCallback}\n      />\n    </>\n  );\n};\n\nexport default UdpNotesPage;\n"],"mappings":"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"}