{"version":3,"file":"RecentlyLoadedNodesTable.mjs","names":["React","useCallback","useMemo","useEffect","useState","Typography","LinearProgress","AmbientCard","AgTable","useAgGridApi","formatDateToLocaleString","DateTime","IconRenderer","getSanitizedName","useTranslation","defaultColDef","resizable","editable","sortable","filter","RecentlyLoadedNodesTable","props","$","_c","recentlyLoadedNodes","loading","onLoadedNodeClick","tableHeight","tree","columnDefs","hideTitle","t0","undefined","gridApi","gridColumnApi","onGridReady","t","setSelectedRow","t1","t2","sizeColumnsToFit","getSelectedRows","length","t3","event","node","selected","selectedRowData","nodeInfo","handleRowSelected","getterRowData","_temp","t4","treeStructure","headerName","cellRenderer","valueGetter","maxWidth","suppressMenu","cellStyle","display","alignItems","justifyContent","defaultValue","field","minWidth","_temp2","columnDefinitions","t5","map","loadedNode","matchingNode","find","properties","catalogReturnObject","nodeDetails","iconData","defaultIcon","name","nodeLabel","type","dateLoaded","DATETIME_MED","recentlyLoadedNodesValues","t6","t7","_temp3","iconRenderer","t8","params","data","params_0","row"],"sources":["../../../src/inquiry/dashboard/RecentlyLoadedNodesTable.jsx"],"sourcesContent":["import React, { useCallback, useMemo, useEffect, useState } from 'react';\nimport { Typography, LinearProgress } from '@material-ui/core';\nimport { AmbientCard } from '../../UI/surfaces/cards/AmbientCard';\nimport { AgTable, useAgGridApi } from '../../utilities/aggrid/AgTable.tsx';\nimport { formatDateToLocaleString } from '../../utilities/input/DateUtilities';\nimport { DateTime } from 'luxon';\nimport { IconRenderer } from '../../UI/templates/ui/renderers/IconRenderer';\nimport { getSanitizedName } from '../../utilities/entities/entityUtilities';\nimport { useTranslation } from 'react-i18next';\n\nconst defaultColDef = {\n  resizable: true,\n  editable: false,\n  sortable: true,\n  filter: true\n};\n\nexport const RecentlyLoadedNodesTable = (props) => {\n  const {\n    recentlyLoadedNodes,\n    loading,\n    onLoadedNodeClick,\n    tableHeight,\n    tree,\n    columnDefs,\n    hideTitle = false\n  } = props;\n\n  const { gridApi, gridColumnApi, onGridReady } = useAgGridApi();\n  const { t } = useTranslation();\n  const [selectedRow, setSelectedRow] = useState();\n\n  useEffect(() => {\n    if (!gridColumnApi) return;\n\n    gridApi?.sizeColumnsToFit();\n    setSelectedRow(\n      gridApi?.getSelectedRows().length && gridApi.getSelectedRows()[0]\n    );\n  }, [gridColumnApi, gridApi]);\n\n  const handleRowSelected = useCallback(\n    (event) => {\n      if (!event.node.selected) return;\n\n      if (!gridApi) return;\n\n      const selectedRowData =\n        gridApi.getSelectedRows().length && gridApi.getSelectedRows()[0];\n\n      if (!selectedRowData) return;\n\n      setSelectedRow(selectedRowData);\n\n      if (selectedRowData?.nodeInfo) {\n        // if the row is a node\n        onLoadedNodeClick(selectedRowData.nodeInfo);\n      }\n    },\n    [gridApi, onLoadedNodeClick]\n  );\n\n  const getterRowData = useCallback((params) => {\n    return params.data?.iconData;\n  }, []);\n\n  const columnDefinitions = useMemo(\n    () =>\n      columnDefs\n        ? columnDefs\n        : [\n            tree?.treeStructure && {\n              headerName: '',\n              cellRenderer: 'iconRenderer',\n              valueGetter: getterRowData,\n              maxWidth: 60,\n              resizable: false,\n              suppressMenu: true,\n              sortable: false,\n              cellStyle: {\n                display: 'flex',\n                alignItems: 'center',\n                justifyContent: 'center'\n              }\n            },\n            {\n              headerName: t('inquiry.recentlyLoaded.columns.name', {\n                defaultValue: 'Name'\n              }),\n              field: 'name',\n              minWidth: 120,\n              maxWidth: 300\n            },\n            {\n              headerName: t('inquiry.recentlyLoaded.columns.type', {\n                defaultValue: 'Type'\n              }),\n              field: 'type',\n              valueGetter: (params) => getSanitizedName(params.data?.type),\n              minWidth: 80\n            },\n            {\n              headerName: t('inquiry.recentlyLoaded.columns.dateLoaded', {\n                defaultValue: 'Date Loaded'\n              }),\n              field: 'dateLoaded',\n              minWidth: 80\n            },\n            {\n              headerName: '',\n              field: 'nodeInfo',\n              maxWidth: 0,\n              cellStyle: {\n                display: 'none'\n              }\n            }\n          ],\n    [columnDefs, getterRowData, tree, t]\n  );\n\n  const recentlyLoadedNodesValues = useMemo(\n    () =>\n      recentlyLoadedNodes?.map((loadedNode) => {\n        const matchingNode = tree?.treeStructure?.find(\n          (node) =>\n            node.properties.catalogReturnObject ===\n            loadedNode?.nodeDetails?.catalogReturnObject\n        );\n\n        return {\n          iconData: matchingNode?.properties?.defaultIcon || {\n            name: 'PictureTileIcon'\n          },\n          name: loadedNode?.nodeDetails?.nodeLabel,\n          type: loadedNode?.nodeDetails?.catalogReturnObject,\n          dateLoaded: formatDateToLocaleString(\n            loadedNode?.dateLoaded,\n            DateTime.DATETIME_MED\n          ),\n          nodeInfo: loadedNode\n        };\n      }),\n    [recentlyLoadedNodes, tree]\n  );\n\n  return (\n    <AmbientCard\n      title={\n        !hideTitle\n          ? t('inquiry.recentlyLoaded.title', {\n              defaultValue: 'Recently Loaded'\n            })\n          : ' '\n      }\n      fullWidth\n      noAdornment\n    >\n      {loading || !tree ? (\n        <LinearProgress />\n      ) : recentlyLoadedNodes?.length ? (\n        <AgTable\n          columnDefs={columnDefinitions}\n          defaultColDef={defaultColDef}\n          rowData={recentlyLoadedNodesValues || []}\n          onGridReady={onGridReady}\n          getRowNodeId={(row) => row.name}\n          onRowSelected={handleRowSelected}\n          rowSelection='single'\n          frameworkComponents={{ iconRenderer: IconRenderer }}\n          height={tableHeight}\n        />\n      ) : (\n        <Typography>\n          {t('inquiry.recentlyLoaded.noData', {\n            defaultValue: 'No Data Recently Loaded.'\n          })}\n        </Typography>\n      )}\n    </AmbientCard>\n  );\n};\n"],"mappings":"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"}