udp-react-enterprise-component-library 25.1.0-beta.2 → 25.1.0-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{AmbientGridTemplate-BLwgiqwK.js → AmbientGridTemplate-BqlMt5Su.js} +152 -137
- package/dist/AmbientGridTemplate-BqlMt5Su.js.map +1 -0
- package/dist/{EnvironmentRibbon-BMvQEZPZ.js → EnvironmentRibbon-DaDmKAPO.js} +2 -2
- package/dist/{EnvironmentRibbon-BMvQEZPZ.js.map → EnvironmentRibbon-DaDmKAPO.js.map} +1 -1
- package/dist/{MenuPage-DLsNc-P8.js → MenuPage-CO6_GWwB.js} +97 -27
- package/dist/MenuPage-CO6_GWwB.js.map +1 -0
- package/dist/{MyExportsPage-BYH2Wl9k.js → MyExportsPage-CX9tzqHk.js} +5 -5
- package/dist/{MyExportsPage-BYH2Wl9k.js.map → MyExportsPage-CX9tzqHk.js.map} +1 -1
- package/dist/MyExportsPage-CkzQ0MRq.js +8 -0
- package/dist/{PageContainer-B65gsUfF.js → PageContainer-k8KCfGsM.js} +2 -2
- package/dist/{PageContainer-B65gsUfF.js.map → PageContainer-k8KCfGsM.js.map} +1 -1
- package/dist/{SearchUtilities-dbXvMYoa.js → SearchUtilities-Bor3HbfB.js} +2 -2
- package/dist/{SearchUtilities-dbXvMYoa.js.map → SearchUtilities-Bor3HbfB.js.map} +1 -1
- package/dist/{SideSheet-CPHhyWLB.js → SideSheet-DUsxG1FN.js} +3 -3
- package/dist/{SideSheet-CPHhyWLB.js.map → SideSheet-DUsxG1FN.js.map} +1 -1
- package/dist/{UdpPublicForm-DFCL1GzD.js → UdpPublicForm-Caa1tH6z.js} +2 -2
- package/dist/{UdpPublicForm-DFCL1GzD.js.map → UdpPublicForm-Caa1tH6z.js.map} +1 -1
- package/dist/UdpPublicForm-Cvw5tOHe.js +4 -0
- package/dist/{UtilitySideBar-B4r2IAv5.js → UtilitySideBar-D4CXGtW2.js} +12 -9
- package/dist/UtilitySideBar-D4CXGtW2.js.map +1 -0
- package/dist/{VirtualBrowser-C_IJ0I6f.js → VirtualBrowser-BXL0hdy0.js} +7 -7
- package/dist/{VirtualBrowser-C_IJ0I6f.js.map → VirtualBrowser-BXL0hdy0.js.map} +1 -1
- package/dist/{WorkflowContainer-DKwRWi1i.js → WorkflowContainer-DrqzuQtU.js} +35 -7
- package/dist/WorkflowContainer-DrqzuQtU.js.map +1 -0
- package/dist/WorkflowContainer-Q8gtuaB7.js +9 -0
- package/dist/{apiHelpers-t3rfkjFZ.js → apiHelpers-DZots3og.js} +2 -2
- package/dist/apiHelpers-DZots3og.js.map +1 -0
- package/dist/index.js +2624 -2468
- package/dist/index.js.map +1 -1
- package/dist/{propertyTypeEnums-DTGsK5-s.js → propertyTypeEnums-Civy7RJv.js} +2 -2
- package/dist/{propertyTypeEnums-DTGsK5-s.js.map → propertyTypeEnums-Civy7RJv.js.map} +1 -1
- package/dist/types/AGLicense.d.ts +1 -1
- package/dist/types/UI/maps/UdpMap.d.ts +2 -0
- package/dist/types/UI/maps/UdpMapComponent.d.ts +2 -0
- package/dist/types/UI/utilityDisplay/ChipSection.d.ts +2 -1
- package/dist/types/UI/utilityDisplay/GridPrimaryBar.d.ts +2 -1
- package/dist/types/hooks/usePromotedMethodEntities.d.ts +6 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/stores/catalogStore.d.ts +2 -0
- package/dist/types/stores/inquiryStore.d.ts +3 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dist/types/utilities/catalog/CatalogUtilities.d.ts +1 -0
- package/dist/types/utilities/tree/TreeUtilities.d.ts +1 -1
- package/package.json +2 -2
- package/dist/AmbientGridTemplate-BLwgiqwK.js.map +0 -1
- package/dist/MenuPage-DLsNc-P8.js.map +0 -1
- package/dist/MyExportsPage-CVUIXWTf.js +0 -8
- package/dist/UdpPublicForm-BrVSSMCN.js +0 -4
- package/dist/UtilitySideBar-B4r2IAv5.js.map +0 -1
- package/dist/WorkflowContainer-8-mmebY0.js +0 -9
- package/dist/WorkflowContainer-DKwRWi1i.js.map +0 -1
- package/dist/apiHelpers-t3rfkjFZ.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MyExportsPage-BYH2Wl9k.js","names":["element","TableContainer","useStyles","value","useStyles","value","TableContainer"],"sources":["../src/utilities/aggrid/datasources/SearchServiceDatasource.js","../src/maintenanceEngine/tableBrowser/TableColumnDefs.js","../src/maintenanceEngine/tableBrowser/TableContainer.jsx","../src/UI/inputs/textField/AmbientAutoComplete.jsx","../src/UI/dataDisplay/EmptyStateDisplay.jsx","../src/UI/feedback/AmbientAlert.jsx","../src/UI/templates/ui/renderers/StatusCellRenderer.jsx","../src/udp/export/MyExportsPage.jsx"],"sourcesContent":["import {\n LogicalSearchOperatorEnums,\n SearchGroupingType,\n SearchSortDirection\n} from '../../../enums/unitySystemEnums';\nimport { getSearchObject } from '../../search/SearchUtilities';\nimport { FilterOperators } from '../../../models/SearchOperator';\nimport { cloneDeep } from 'lodash';\n\nexport const SearchServiceDatasource = (\n queryData,\n apiMethodId,\n searchFilterElements,\n logicalSearchOperator = LogicalSearchOperatorEnums.And,\n executeQuery,\n storeRowData,\n lookupsMap,\n eagerLoad = false,\n getCleanData = null\n) => {\n return {\n async getRows(params) {\n const {\n startRow,\n endRow,\n rowGroupCols,\n groupKeys,\n valueCols,\n filterModel,\n sortModel\n } = params.request;\n const page = endRow / 20;\n const originalSearchObject = getSearchObject(\n searchFilterElements,\n page,\n null,\n eagerLoad,\n logicalSearchOperator\n );\n\n const searchObject = cloneDeep(originalSearchObject);\n\n // handle server-side sorting on ag-grid\n if (sortModel.length) {\n const orderElements = searchObject.orderElements;\n sortModel.forEach((sortItem) => {\n const formattedPropertyName =\n sortItem.colId.charAt(0).toUpperCase() + sortItem.colId.slice(1);\n const element = orderElements.find(\n (element) => element.sortColumn === formattedPropertyName\n );\n if (element) {\n element.sortDirection = sortItem.sort.toUpperCase();\n } else {\n orderElements.push({\n sortColumn: formattedPropertyName,\n sortDirection: sortItem.sort.toUpperCase()\n });\n }\n });\n }\n\n // handle server-side filtering on ag-grid\n if (Object.keys(filterModel).length) {\n const filterElements = searchObject.filterElements;\n Object.keys(filterModel).forEach((key) => {\n const filterItem = filterModel[key];\n const formattedPropertyName =\n key.charAt(0).toUpperCase() + key.slice(1);\n filterElements.push({\n searchField: formattedPropertyName,\n searchValue: filterItem.filter,\n searchOperator: FilterOperators[filterItem.type]\n });\n });\n }\n\n // construct search for initial grouping\n if (rowGroupCols.length && !groupKeys.length) {\n const formattedPropertyName =\n rowGroupCols[0].field.charAt(0).toUpperCase() +\n rowGroupCols[0].field.slice(1);\n searchObject.groupingType = SearchGroupingType.Distinct;\n if (!searchObject.groupProperty.includes(formattedPropertyName)) {\n searchObject.groupProperty.push(formattedPropertyName);\n\n const orderElements = searchObject.orderElements;\n const element = orderElements.find(\n (element) => element.sortColumn === formattedPropertyName\n );\n if (!element) {\n orderElements.push({\n sortColumn: formattedPropertyName,\n sortDirection: SearchSortDirection.Asc\n });\n }\n }\n }\n\n // construct the filter for grouped columns\n if (groupKeys.length) {\n // construct search for last grouped element\n if (groupKeys.length === rowGroupCols.length) {\n searchObject.groupingType = '';\n const filterElements = searchObject.filterElements;\n groupKeys.forEach((key, index) => {\n const rowGroupCol = rowGroupCols[index];\n const formattedPropertyName =\n rowGroupCol.field.charAt(0).toUpperCase() +\n rowGroupCol.field.slice(1);\n const element = filterElements.find(\n (element) => element.searchField === formattedPropertyName\n );\n\n let currentNode = null;\n params.api.forEachNode((node) => {\n const nodeKey = node.field;\n if (\n nodeKey?.toLowerCase() ===\n formattedPropertyName?.toLowerCase() &&\n node?.data?.[nodeKey] === key\n ) {\n currentNode = node;\n return;\n }\n });\n let searchValue = key;\n if (currentNode) {\n const cleanData = getCleanData\n ? getCleanData(currentNode.data, lookupsMap)\n : null;\n if (cleanData) {\n searchValue = cleanData[currentNode.field];\n }\n }\n\n if (element) {\n element.searchValue = searchValue;\n element.searchOperator = '=';\n } else {\n filterElements.push({\n searchField: formattedPropertyName,\n searchValue: searchValue,\n searchOperator: '='\n });\n }\n });\n } else {\n // construct search for the next grouped element\n groupKeys.forEach((key, index) => {\n const formattedPropertyNameForSearch =\n rowGroupCols[index].field.charAt(0).toUpperCase() +\n rowGroupCols[index].field.slice(1);\n\n let currentNode = null;\n params.api.forEachNode((node) => {\n const nodeKey = node.field;\n if (\n nodeKey?.toLowerCase() ===\n formattedPropertyNameForSearch?.toLowerCase() &&\n node?.data?.[nodeKey] === key\n ) {\n currentNode = node;\n return;\n }\n });\n let searchValue = key;\n if (currentNode) {\n const cleanData = getCleanData\n ? getCleanData(currentNode.data, lookupsMap)\n : null;\n if (cleanData) {\n searchValue = cleanData[currentNode.field];\n }\n }\n\n searchObject.filterElements.push({\n searchField: formattedPropertyNameForSearch,\n searchValue: searchValue,\n searchOperator: '='\n });\n });\n\n searchObject.groupingType = SearchGroupingType.Distinct;\n const searchIndex = groupKeys.length;\n const rowGroupCol = rowGroupCols[searchIndex];\n const formattedPropertyName =\n rowGroupCol.field.charAt(0).toUpperCase() +\n rowGroupCol.field.slice(1);\n\n if (!searchObject.groupProperty.includes(formattedPropertyName)) {\n searchObject.groupProperty.push(formattedPropertyName);\n\n const orderElements = searchObject.orderElements;\n const element = orderElements.find(\n (element) => element.sortColumn === formattedPropertyName\n );\n if (!element) {\n orderElements.push({\n sortColumn: formattedPropertyName,\n sortDirection: SearchSortDirection.Asc\n });\n }\n }\n }\n }\n\n if (\n !startRow &&\n rowGroupCols.length === 0 &&\n !sortModel.length &&\n !Object.keys(filterModel).length &&\n !groupKeys.length &&\n queryData\n ) {\n if (queryData.pageList && queryData.pageList) {\n params.success({\n rowData: queryData.pageList,\n rowCount: parseInt(queryData.total)\n });\n if (storeRowData) {\n storeRowData(queryData.pageList);\n }\n } else {\n // TODO: add an overlay to display no rows\n params.success({\n rowData: [],\n rowCount: 0\n });\n if (storeRowData) {\n storeRowData([]);\n }\n }\n } else {\n let response = null;\n if (executeQuery) {\n const data = { data: searchObject };\n response = await executeQuery(data, apiMethodId, lookupsMap).catch(\n (e) =>\n params.success({\n rowData: [],\n rowCount: 0\n })\n );\n }\n const rowData = response?.status === 200 ? response?.data : response;\n if (rowData && response) {\n if (rowData?.pageList?.length > 0) {\n params.success({\n rowData: rowData.pageList,\n rowCount: parseInt(rowData.total)\n });\n if (storeRowData) {\n storeRowData(rowData.pageList);\n }\n } else {\n params.success({\n rowData: [],\n rowCount: 0\n });\n if (storeRowData) {\n storeRowData([]);\n }\n }\n } else {\n params.success({\n rowData: [],\n rowCount: 0\n });\n if (storeRowData) {\n storeRowData([]);\n }\n }\n }\n }\n };\n};\n","import { useCallback } from 'react';\nimport { getSanitizedName } from '../../utilities/entities/entityUtilities';\n\nexport const TableColumnDefs = (actionList) => {\n const getterRowData = useCallback((params) => {\n return params.data;\n }, []);\n\n const columnDefs = [\n {\n headerName: 'Name',\n field: 'entityName',\n valueGetter: (params) =>\n params.data?.properties?.displayName ||\n params.data?.sanitizedName ||\n getSanitizedName(params.data?.entityName),\n wrapText: true,\n autoHeight: false,\n sortable: false\n },\n {\n headerName: 'Actions',\n filter: false,\n pinned: 'right',\n cellRenderer: 'actionsRenderer',\n // minWidth: 50,\n width: 150,\n cellRendererParams: {\n actionList: actionList\n },\n valueGetter: getterRowData,\n maxWidth: 180,\n suppressMenu: true,\n sortable: false,\n cellStyle: { display: 'flex', alignItems: 'center' }\n }\n ];\n return columnDefs;\n};\n\nexport const defaultColumnActionsDef = {\n resizable: true,\n editable: false,\n sortable: true,\n filter: true,\n floatingFilter: false,\n enableRowGroup: true\n};\n","import React, { useEffect, useMemo } from 'react';\nimport { TableColumnDefs } from './TableColumnDefs';\nimport { AmbientGridTemplate } from '../../UI/templates/AmbientGridTemplate';\nimport { ActionsRenderer } from '../../UI/templates/ui/renderers/ActionsRenderer';\nimport { useAgGridApi } from '../../utilities/aggrid/AgTable';\nimport { executeQueryAdHoc } from '../../udp/utilities/methodUtils';\nimport { SearchServiceDatasource } from '../../utilities/aggrid/datasources/SearchServiceDatasource';\nimport { useBuildEnvironment } from '../../shell/ui/EnvironmentRibbon';\n\nexport const TableContainer = (props) => {\n const {\n actionList,\n loading,\n rowData,\n catalog,\n isServerSide = false,\n promotedEntity,\n filterElements,\n customColumnDefs,\n eagerLoad = false,\n logicalSearchOperator = 1,\n frameworkComponents={ actionsRenderer: ActionsRenderer },\n additionalGridOptions,\n headerBackgroundColor,\n api,\n columnApi,\n gridReady,\n dynamicSizing,\n ...other\n } = props;\n const { gridApi, gridColumnApi, onGridReady } = useAgGridApi();\n const gApi = api || gridApi;\n const cApi = columnApi || gridColumnApi;\n const gReady = gridReady || onGridReady\n const buildEnv = useBuildEnvironment()\n const columnDefs = customColumnDefs || TableColumnDefs(actionList);\n\n const groupData = useMemo(() => {\n return columnDefs?.map((item) => {\n return {\n groupItem: item.field,\n label: item.headerName,\n value: item.field\n };\n });\n }, [columnDefs]);\n\n useEffect(() => {\n if (!gApi) return;\n if (promotedEntity && isServerSide) {\n let datasource = SearchServiceDatasource(\n null,\n promotedEntity?.unityBaseSearchMethod?.apiMethodId,\n filterElements,\n logicalSearchOperator,\n executeQueryAdHoc,\n null,\n null,\n eagerLoad\n );\n // eslint-disable-next-line no-unused-expressions\n gApi?.setServerSideDatasource(datasource);\n }\n }, [gApi, promotedEntity, isServerSide, filterElements, eagerLoad, logicalSearchOperator]);\n\n return (\n <AmbientGridTemplate\n useNewHeader\n api={gApi}\n onGridReady={gReady}\n columnApi={cApi}\n title={catalog?.name}\n data={!isServerSide && rowData}\n columnDefs={columnDefs}\n groupingData={groupData}\n height={`calc(100vh - ${buildEnv ? '139px' : '114px'})`}\n frameworkComponents={frameworkComponents}\n hideSearchBar={isServerSide}\n loading={loading}\n suppressScrollOnNewData\n dynamicSizing={dynamicSizing ?? false}\n disableRowSelection={true}\n rowModelType={isServerSide ? 'serverSide' : null}\n serverSideStoreType={isServerSide ? 'partial' : null}\n cacheOverflowSize={isServerSide ? 2 : null}\n cacheBlockSize={isServerSide ? 20 : null}\n maxConcurrentDatasourceRequests={isServerSide ? 1 : null}\n additionalGridOptions={additionalGridOptions}\n headerBackgroundColor={headerBackgroundColor}\n {...other}\n />\n );\n};\n","/* eslint-disable no-use-before-define */\nimport React, { useCallback } from 'react';\nimport { TextField, makeStyles, Popper } from '@material-ui/core';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\n\nconst useStyles = makeStyles((theme) => ({\n input: {\n borderRadius: 2,\n minHeight: 32,\n padding: 0,\n paddingTop: '0 !important',\n paddingBottom: (props) => (props.isMultiple ? '0 !important' : 10),\n marginTop: 3,\n '& .MuiFilledInput-inputMarginDense': {\n paddingTop: 8\n },\n '& .MuiFilledInput-root': {\n paddingTop: 0\n },\n '& .MuiInputAdornment-filled.MuiInputAdornment-positionStart:not(.MuiInputAdornment-hiddenLabel)':\n {\n marginTop: theme.spacing(0.5),\n marginLeft: theme.spacing(1)\n }\n },\n formTextInput: {\n fontSize: 14,\n marginTop: '2px !important',\n paddingBottom: '2px !important'\n },\n labelRoot: {\n fontSize: 14\n },\n root: {\n marginTop: 25,\n '& .MuiFormLabel-root': {\n marginTop: -30,\n marginLeft: -11\n },\n '& .MuiInputAdornment-root': {\n paddingLeft: theme.spacing(1)\n }\n },\n noLabel: {\n marginTop: theme.spacing(1)\n },\n formControl: {\n width: '100%'\n }\n}));\n\nconst AutoCompletePopper = (props) => {\n return <Popper {...props} placement='bottom-start' />;\n};\n\nexport const AmbientAutoComplete = (props) => {\n const {\n getOptionLabelFunction,\n getOptionSelected,\n label,\n placeholder,\n options,\n textFieldProps,\n disabled,\n onChange: onChangeProp,\n value,\n additionalOnChangeAction,\n classes: classProps,\n variant = 'filled',\n inputProps,\n inputPropClasses,\n customPopper,\n disableClearable = false,\n defaultValue,\n additionalOptionKey,\n isMultiple = false,\n limitTags,\n renderTags,\n size = 'medium',\n groupBy = null,\n loading,\n disableCloseOnSelect = false,\n ...other\n } = props;\n\n const classes = useStyles(props);\n const { autocompleteRoot } = classProps || {};\n\n const onChange = useCallback(\n (e, value) => {\n if (additionalOnChangeAction) {\n additionalOnChangeAction(value);\n }\n return onChangeProp?.(value);\n },\n [onChangeProp, additionalOnChangeAction]\n );\n\n return (\n <Autocomplete\n id='autocomplete'\n multiple={isMultiple}\n limitTags={limitTags}\n disabled={disabled}\n options={options || []}\n loading={loading}\n getOptionLabel={getOptionLabelFunction}\n getOptionSelected={getOptionSelected}\n groupBy={groupBy}\n onChange={onChange}\n value={value || (isMultiple ? [] : null)}\n className={autocompleteRoot}\n classes={{\n root: classes.formControl\n }}\n PopperComponent={customPopper || AutoCompletePopper}\n disableClearable={disableClearable}\n defaultValue={defaultValue}\n size={size}\n disableCloseOnSelect={disableCloseOnSelect}\n renderInput={(params) => (\n <div className={label ? classes.root : classes.noLabel}>\n <TextField\n {...textFieldProps}\n {...params}\n {...other}\n label={label}\n margin='dense'\n variant={variant}\n size='small'\n InputProps={{\n ...params.InputProps,\n classes: {\n root: classes.input,\n input: classes.formTextInput,\n ...props.InputProps?.classes\n }\n }}\n InputLabelProps={{\n shrink: false,\n classes: {\n root: classes.labelRoot,\n focused: classes.labelFocused\n }\n }}\n />\n </div>\n )}\n renderTags={renderTags}\n />\n );\n};\n","import { ErrorIcon } from '@fluentui/react-icons';\nimport { Typography, makeStyles, Box } from '@material-ui/core';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { FluentButton } from '../inputs/buttons/FluentButton';\nimport { FluentIcon } from '../../utilities/FluentIcon';\nimport { LayoutUnit } from '../../layout/LayoutUnit';\n\nconst useStyles = makeStyles(theme => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n height: '100%',\n width: '100%',\n },\n secondaryText: {\n color: theme.palette.text.secondary,\n },\n image: {\n width: props => props?.imageWidth,\n },\n}));\n\nexport const EmptyStateDisplay = props => {\n const {\n icon,\n iconSize = 48,\n customIconSize = true,\n imageSrc,\n imageWidth = '100px',\n primaryText,\n secondaryText,\n actionLabel,\n action,\n } = props;\n const classes = useStyles({ imageWidth });\n\n return (\n <div className={classes.container}>\n {imageSrc ? (\n <img src={imageSrc} alt='logo' className={classes.image} />\n ) : (\n <FluentIcon\n component={icon ?? ErrorIcon}\n size={iconSize}\n customSize={customIconSize}\n />\n )}\n <LayoutUnit unit=\"xxs\" />\n {primaryText && (\n <div>\n <Typography variant='subtitle2' align='center'>\n {primaryText}\n </Typography>\n </div>\n )}\n {secondaryText && (\n <div>\n <Typography className={classes.secondaryText} align='center'>\n {secondaryText}\n </Typography>\n </div>\n )}\n {(primaryText || secondaryText) && <LayoutUnit unit=\"xxs\" />}\n {action && (\n <div\n className={primaryText || secondaryText ? classes.buttonWrapper : ''}\n >\n <FluentButton\n onClick={action}\n variant='outlined'\n color='secondary'\n id={\n 'udpRecord-EmptyStateDisplay-' +\n primaryText.replace(/\\s+/g, '') +\n '-' +\n actionLabel.replace(/\\s+/g, '')\n }\n udprecordid={\n 'udpRecord-EmptyStateDisplay-' +\n primaryText.replace(/\\s+/g, '') +\n '-' +\n actionLabel.replace(/\\s+/g, '')\n }\n >\n {actionLabel}\n </FluentButton>\n </div>\n )}\n </div>\n );\n};\n\nEmptyStateDisplay.propTypes = {\n icon: PropTypes.elementType,\n iconSize: PropTypes.number,\n customIconSize: PropTypes.bool,\n imageSrc: PropTypes.string,\n imageWidth: PropTypes.string,\n primaryText: PropTypes.string,\n secondaryText: PropTypes.string,\n actionLabel: PropTypes.string,\n action: PropTypes.func\n};\n\nEmptyStateDisplay.defaultProps = {\n iconSize: 48,\n customIconSize: true,\n imageWidth: '100px'\n};","import React from 'react';\nimport { makeStyles, Button } from '@material-ui/core';\nimport { Alert, AlertTitle } from '@material-ui/lab';\nimport clsx from 'clsx';\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n '@global': {\n '.MuiPaper-rounded': {\n borderRadius: 0,\n },\n },\n alertSuccess: {\n borderLeft: `4px solid ${theme.palette.success.main}`,\n },\n alertWarning: {\n borderLeft: `4px solid ${theme.palette.warning.main}`,\n },\n alertError: {\n borderLeft: `4px solid ${theme.palette.error.main}`,\n color: theme.palette.error.main,\n },\n alertInfo: {\n borderLeft: `4px solid ${theme.palette.info.main}`,\n },\n square: {\n borderRadius: 0,\n },\n}));\n\nexport const AmbientAlert = ({\n alertButton,\n alertMessage,\n alertTitle,\n showAlert,\n alertSeverity,\n closeAlert,\n alertAction,\n alertActionButton,\n alertHandleAction,\n ...otherProps\n}) => {\n const classes = useStyles();\n\n const alertColor = () => {\n if (alertSeverity === 'success') {\n let alertLevel = classes.alertSuccess;\n return alertLevel;\n } else if (alertSeverity === 'warning') {\n let alertLevel = classes.alertWarning;\n return alertLevel;\n } else if (alertSeverity === 'error') {\n let alertLevel = classes.alertError;\n return alertLevel;\n } else if (alertSeverity === 'info') {\n let alertLevel = classes.alertInfo;\n return alertLevel;\n }\n };\n\n return (\n <div>\n {showAlert && (\n <Alert\n classes={{ root: clsx(alertColor(), classes.square) }}\n {...otherProps}\n severity={alertSeverity}\n onClose={closeAlert}\n action={\n alertAction ? (\n <Button\n onClick={alertHandleAction}\n id='udpRecord-AmbientAlert-alertActionButton'\n udprecordid='udpRecord-AmbientAlert-alertActionButton'\n >\n {alertActionButton}\n </Button>\n ) : null\n }\n >\n {alertTitle && <AlertTitle>{alertTitle}</AlertTitle>}\n {alertMessage}\n </Alert>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { StatusChip } from '../../../dataDisplay/StatusChip';\n\nexport const StatusCellRenderer = props => {\n const { value, getStatus, getLabel } = props;\n const formattedLabel = value => {\n return value\n ?.replace(/([a-z])([A-Z])/g, '$1 $2')\n ?.replace(/\\b\\w/g, char => char.toUpperCase());\n };\n return (\n <StatusChip\n status={getStatus(value)}\n label={getLabel ? formattedLabel(getLabel(value)) : formattedLabel(value)}\n />\n );\n};\n","import React, { useMemo, useState, useCallback, useEffect } from 'react';\nimport {\n StatusCircleCheckmarkIcon,\n ErrorIcon,\n DownloadIcon\n} from '@fluentui/react-icons';\nimport { getSanitizedName } from '../../utilities/entities/entityUtilities';\nimport { FluentDialog } from '../../UI/feedback/FluentDialog';\nimport { EmptyStateDisplay } from '../../UI/dataDisplay/EmptyStateDisplay';\nimport { useAxiosGet } from '../../utilities/useAxiosGet';\nimport { ActionsRenderer } from '../../UI/templates/ui/renderers/ActionsRenderer';\nimport { AmbientAlert } from '../../UI/feedback/AmbientAlert';\nimport { TableContainer } from '../../maintenanceEngine/tableBrowser/TableContainer';\nimport { StatusCellRenderer } from '../../UI/templates/ui/renderers/StatusCellRenderer';\nimport { useUser } from '../../utilities/auth/useUser';\nimport { AmbientAutoComplete } from '../../UI/inputs/textField/AmbientAutoComplete';\nimport { executeQueryWithParameters } from '../utilities/methodUtils';\nimport { useHandleAxiosSnackbar } from '../../utilities/apiHelpers';\nimport { ConfigService } from 'udp-react-stencil-component-library';\n\nexport const MyExportsPage = (props) => {\n const { productId } = props;\n const user = useUser();\n const [product, setProduct] = useState();\n const [downloadLinkLoading, setDownloadLinkLoading] = useState(false);\n const [fileResultData, setFileResultData] = useState();\n const [downloadOpen, setDownloadOpen] = useState(false);\n const [noDownloadMethod, setNoDownloadMethod] = useState(false);\n\n const { handleErrorSnackbar, handleSuccessSnackbar } =\n useHandleAxiosSnackbar();\n\n const [{ data: products, loading: productsLoading }] = useAxiosGet(\n ConfigService.tenantV2ApiUrl,\n `tenant/products?tenantId=${user?.currentTenantId}&isSubscribable=${!user\n ?.can?.CAN_MANAGE_CATALOGS_FOR_UNSUBSCRIBABLE_PRODUCTS}`,\n {},\n !user\n );\n\n const [{ data: apiCatalog, loading: catalogLoading, error: catalogError }] =\n useAxiosGet(\n ConfigService.integrationV1ApiUrl,\n `tenantProductApiCatalogBase/tenant/${user?.currentTenantId}/product/${\n productId ? productId : product?.productId\n }`,\n {},\n !(product || productId),\n false\n );\n\n const [{ data: udpJobEntity, loading: jobEntityLoading }] = useAxiosGet(\n ConfigService.integrationV1ApiUrl,\n `apicatalog/${apiCatalog?.apiCatalogId}/promotedMethodEntities/udpJob/product/${apiCatalog?.productId}?compareSanitizedName=true`,\n {},\n !apiCatalog?.productId || !apiCatalog?.apiCatalogId,\n false\n );\n\n const refetchfileResultData = useCallback(\n async (selectedRecord) => {\n if (udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId) {\n setDownloadLinkLoading(true);\n await executeQueryWithParameters(\n {\n data: { JobId: selectedRecord?.id }\n },\n udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId\n )\n .then((res) => {\n setFileResultData(res.data);\n })\n .catch((err) => {});\n setDownloadLinkLoading(false);\n } else {\n setNoDownloadMethod(true);\n }\n },\n [udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId]\n );\n\n const handleSelectRecord = useCallback(\n (data) => {\n refetchfileResultData(data);\n setDownloadOpen(true);\n },\n [refetchfileResultData]\n );\n\n const getOptionLabel = (val) => {\n return val?.name;\n };\n\n const handleProductChange = useCallback((val) => {\n setProduct(val);\n }, []);\n\n const handleFileDownload = useCallback(() => {\n if (fileResultData?.link) {\n const link = document.createElement('a');\n link.href = fileResultData?.link;\n link.download = '';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n setDownloadOpen(false);\n handleSuccessSnackbar('File successfully downloaded');\n }\n }, [fileResultData?.link, handleSuccessSnackbar]);\n\n const getJobStatus = (value) => {\n if (value === 1) {\n return null;\n } else if (value === 2) {\n return 'info';\n } else if (value === 3) {\n return 'success';\n } else if (value === 4) {\n return 'error';\n }\n };\n\n const getJobLabel = (value) => {\n if (value === 1) {\n return 'Pending';\n } else if (value === 2) {\n return 'Running';\n } else if (value === 3) {\n return 'Completed';\n } else if (value === 4) {\n return 'Failed';\n }\n };\n\n useEffect(() => {\n if (catalogError) {\n handleErrorSnackbar(\n '',\n 'Error fetching catalog for the selected product'\n );\n }\n }, [catalogError, handleErrorSnackbar]);\n\n const filterElements = useMemo(() => {\n return [\n {\n searchField: 'jobTypeId',\n searchOperator: '=',\n searchValue: 2\n }\n ];\n }, []);\n\n const actionList = useMemo(() => {\n return [\n {\n id: 1,\n title: 'Download',\n icon: DownloadIcon,\n onClick: handleSelectRecord,\n disabled: false,\n checkDisabled: (value) => value?.statusId !== 3\n }\n ];\n }, [handleSelectRecord]);\n\n const columnDefs = useMemo(\n () => [\n {\n headerName: 'Id',\n sortable: true,\n field: 'id',\n suppressMenu: true\n },\n {\n headerName: 'Name',\n sortable: false,\n field: 'name',\n minWidth: 140,\n suppressMenu: true,\n valueFormatter: (data) => getSanitizedName(data.data.name)\n },\n {\n headerName: 'Date',\n sortable: false,\n valueFormatter: (data) =>\n new Date(data.data.startTime).toLocaleString(),\n minWidth: 130,\n suppressMenu: true\n //sort: 'desc',\n },\n {\n headerName: 'Status',\n field: 'statusId',\n wrapText: true,\n autoHeight: true,\n sortable: false,\n cellRenderer: 'statusCellRenderer',\n cellRendererParams: { getStatus: getJobStatus, getLabel: getJobLabel },\n minWidth: 130,\n maxWidth: 130,\n suppressMenu: true\n },\n\n {\n headerName: 'Actions',\n filter: false,\n pinned: 'right',\n cellRenderer: 'actionsRenderer',\n width: 120,\n maxWidth: 120,\n cellRendererParams: {\n actionList: actionList,\n value: (data) => data\n },\n suppressMenu: true,\n sortable: false,\n cellStyle: { display: 'flex', alignItems: 'center' }\n }\n ],\n [actionList]\n );\n\n return (\n <div>\n {udpJobEntity && !udpJobEntity?.unityBaseSearchMethod?.apiMethodId && (\n <AmbientAlert\n alertMessage={\"UdpJob's search method must be promoted\"}\n showAlert={true}\n alertSeverity={'error'}\n />\n )}\n\n {!productId && (\n <div style={{ margin: '0px 5px 5px 5px' }}>\n <AmbientAutoComplete\n isMultiple={false}\n id={'product'}\n name={'product'}\n label='Product'\n onChange={handleProductChange}\n options={products}\n size='small'\n getOptionLabelFunction={getOptionLabel}\n value={product}\n required\n />\n </div>\n )}\n <TableContainer\n loading={productsLoading || catalogLoading || jobEntityLoading}\n title={`Exports`}\n isServerSide={true}\n eagerLoad={false}\n logicalSearchOperator={2}\n promotedEntity={udpJobEntity}\n filterElements={filterElements}\n actionList={actionList}\n customColumnDefs={columnDefs}\n frameworkComponents={{\n statusCellRenderer: StatusCellRenderer,\n actionsRenderer: ActionsRenderer\n }}\n hideSearchBar\n hiddenActionButtons={[\n 'saveView',\n 'views',\n 'insights',\n 'importExport',\n 'group',\n 'filter',\n 'columns',\n 'clearFilters',\n 'fitGrid',\n 'expandGrid'\n ]}\n height={'calc(100vh - 167px)'}\n dynamicSizing\n />\n <FluentDialog\n actionOne={handleFileDownload}\n actionTwo={() => setDownloadOpen(false)}\n labelOne='Download'\n labelTwo='Cancel'\n open={downloadOpen}\n handleClose={() => setDownloadOpen(false)}\n disableOne={noDownloadMethod || downloadLinkLoading}\n progress={downloadLinkLoading}\n fullWidth\n >\n {noDownloadMethod ? (\n <AmbientAlert\n alertMessage={\"UdpJob's get file result method must be promoted\"}\n showAlert={true}\n alertSeverity={'error'}\n />\n ) : downloadLinkLoading ? (\n <EmptyStateDisplay primaryText={'Fetching download link...'} />\n ) : (\n <EmptyStateDisplay\n icon={noDownloadMethod ? ErrorIcon : StatusCircleCheckmarkIcon}\n primaryText={!noDownloadMethod && 'File is ready to download!'}\n />\n )}\n </FluentDialog>\n </div>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MyExportsPage-CX9tzqHk.js","names":["element","TableContainer","useStyles","value","useStyles","value","TableContainer"],"sources":["../src/utilities/aggrid/datasources/SearchServiceDatasource.js","../src/maintenanceEngine/tableBrowser/TableColumnDefs.js","../src/maintenanceEngine/tableBrowser/TableContainer.jsx","../src/UI/inputs/textField/AmbientAutoComplete.jsx","../src/UI/dataDisplay/EmptyStateDisplay.jsx","../src/UI/feedback/AmbientAlert.jsx","../src/UI/templates/ui/renderers/StatusCellRenderer.jsx","../src/udp/export/MyExportsPage.jsx"],"sourcesContent":["import {\n LogicalSearchOperatorEnums,\n SearchGroupingType,\n SearchSortDirection\n} from '../../../enums/unitySystemEnums';\nimport { getSearchObject } from '../../search/SearchUtilities';\nimport { FilterOperators } from '../../../models/SearchOperator';\nimport { cloneDeep } from 'lodash';\n\nexport const SearchServiceDatasource = (\n queryData,\n apiMethodId,\n searchFilterElements,\n logicalSearchOperator = LogicalSearchOperatorEnums.And,\n executeQuery,\n storeRowData,\n lookupsMap,\n eagerLoad = false,\n getCleanData = null\n) => {\n return {\n async getRows(params) {\n const {\n startRow,\n endRow,\n rowGroupCols,\n groupKeys,\n valueCols,\n filterModel,\n sortModel\n } = params.request;\n const page = endRow / 20;\n const originalSearchObject = getSearchObject(\n searchFilterElements,\n page,\n null,\n eagerLoad,\n logicalSearchOperator\n );\n\n const searchObject = cloneDeep(originalSearchObject);\n\n // handle server-side sorting on ag-grid\n if (sortModel.length) {\n const orderElements = searchObject.orderElements;\n sortModel.forEach((sortItem) => {\n const formattedPropertyName =\n sortItem.colId.charAt(0).toUpperCase() + sortItem.colId.slice(1);\n const element = orderElements.find(\n (element) => element.sortColumn === formattedPropertyName\n );\n if (element) {\n element.sortDirection = sortItem.sort.toUpperCase();\n } else {\n orderElements.push({\n sortColumn: formattedPropertyName,\n sortDirection: sortItem.sort.toUpperCase()\n });\n }\n });\n }\n\n // handle server-side filtering on ag-grid\n if (Object.keys(filterModel).length) {\n const filterElements = searchObject.filterElements;\n Object.keys(filterModel).forEach((key) => {\n const filterItem = filterModel[key];\n const formattedPropertyName =\n key.charAt(0).toUpperCase() + key.slice(1);\n filterElements.push({\n searchField: formattedPropertyName,\n searchValue: filterItem.filter,\n searchOperator: FilterOperators[filterItem.type]\n });\n });\n }\n\n // construct search for initial grouping\n if (rowGroupCols.length && !groupKeys.length) {\n const formattedPropertyName =\n rowGroupCols[0].field.charAt(0).toUpperCase() +\n rowGroupCols[0].field.slice(1);\n searchObject.groupingType = SearchGroupingType.Distinct;\n if (!searchObject.groupProperty.includes(formattedPropertyName)) {\n searchObject.groupProperty.push(formattedPropertyName);\n\n const orderElements = searchObject.orderElements;\n const element = orderElements.find(\n (element) => element.sortColumn === formattedPropertyName\n );\n if (!element) {\n orderElements.push({\n sortColumn: formattedPropertyName,\n sortDirection: SearchSortDirection.Asc\n });\n }\n }\n }\n\n // construct the filter for grouped columns\n if (groupKeys.length) {\n // construct search for last grouped element\n if (groupKeys.length === rowGroupCols.length) {\n searchObject.groupingType = '';\n const filterElements = searchObject.filterElements;\n groupKeys.forEach((key, index) => {\n const rowGroupCol = rowGroupCols[index];\n const formattedPropertyName =\n rowGroupCol.field.charAt(0).toUpperCase() +\n rowGroupCol.field.slice(1);\n const element = filterElements.find(\n (element) => element.searchField === formattedPropertyName\n );\n\n let currentNode = null;\n params.api.forEachNode((node) => {\n const nodeKey = node.field;\n if (\n nodeKey?.toLowerCase() ===\n formattedPropertyName?.toLowerCase() &&\n node?.data?.[nodeKey] === key\n ) {\n currentNode = node;\n return;\n }\n });\n let searchValue = key;\n if (currentNode) {\n const cleanData = getCleanData\n ? getCleanData(currentNode.data, lookupsMap)\n : null;\n if (cleanData) {\n searchValue = cleanData[currentNode.field];\n }\n }\n\n if (element) {\n element.searchValue = searchValue;\n element.searchOperator = '=';\n } else {\n filterElements.push({\n searchField: formattedPropertyName,\n searchValue: searchValue,\n searchOperator: '='\n });\n }\n });\n } else {\n // construct search for the next grouped element\n groupKeys.forEach((key, index) => {\n const formattedPropertyNameForSearch =\n rowGroupCols[index].field.charAt(0).toUpperCase() +\n rowGroupCols[index].field.slice(1);\n\n let currentNode = null;\n params.api.forEachNode((node) => {\n const nodeKey = node.field;\n if (\n nodeKey?.toLowerCase() ===\n formattedPropertyNameForSearch?.toLowerCase() &&\n node?.data?.[nodeKey] === key\n ) {\n currentNode = node;\n return;\n }\n });\n let searchValue = key;\n if (currentNode) {\n const cleanData = getCleanData\n ? getCleanData(currentNode.data, lookupsMap)\n : null;\n if (cleanData) {\n searchValue = cleanData[currentNode.field];\n }\n }\n\n searchObject.filterElements.push({\n searchField: formattedPropertyNameForSearch,\n searchValue: searchValue,\n searchOperator: '='\n });\n });\n\n searchObject.groupingType = SearchGroupingType.Distinct;\n const searchIndex = groupKeys.length;\n const rowGroupCol = rowGroupCols[searchIndex];\n const formattedPropertyName =\n rowGroupCol.field.charAt(0).toUpperCase() +\n rowGroupCol.field.slice(1);\n\n if (!searchObject.groupProperty.includes(formattedPropertyName)) {\n searchObject.groupProperty.push(formattedPropertyName);\n\n const orderElements = searchObject.orderElements;\n const element = orderElements.find(\n (element) => element.sortColumn === formattedPropertyName\n );\n if (!element) {\n orderElements.push({\n sortColumn: formattedPropertyName,\n sortDirection: SearchSortDirection.Asc\n });\n }\n }\n }\n }\n\n if (\n !startRow &&\n rowGroupCols.length === 0 &&\n !sortModel.length &&\n !Object.keys(filterModel).length &&\n !groupKeys.length &&\n queryData\n ) {\n if (queryData.pageList && queryData.pageList) {\n params.success({\n rowData: queryData.pageList,\n rowCount: parseInt(queryData.total)\n });\n if (storeRowData) {\n storeRowData(queryData.pageList);\n }\n } else {\n // TODO: add an overlay to display no rows\n params.success({\n rowData: [],\n rowCount: 0\n });\n if (storeRowData) {\n storeRowData([]);\n }\n }\n } else {\n let response = null;\n if (executeQuery) {\n const data = { data: searchObject };\n response = await executeQuery(data, apiMethodId, lookupsMap).catch(\n (e) =>\n params.success({\n rowData: [],\n rowCount: 0\n })\n );\n }\n const rowData = response?.status === 200 ? response?.data : response;\n if (rowData && response) {\n if (rowData?.pageList?.length > 0) {\n params.success({\n rowData: rowData.pageList,\n rowCount: parseInt(rowData.total)\n });\n if (storeRowData) {\n storeRowData(rowData.pageList);\n }\n } else {\n params.success({\n rowData: [],\n rowCount: 0\n });\n if (storeRowData) {\n storeRowData([]);\n }\n }\n } else {\n params.success({\n rowData: [],\n rowCount: 0\n });\n if (storeRowData) {\n storeRowData([]);\n }\n }\n }\n }\n };\n};\n","import { useCallback } from 'react';\nimport { getSanitizedName } from '../../utilities/entities/entityUtilities';\n\nexport const TableColumnDefs = (actionList) => {\n const getterRowData = useCallback((params) => {\n return params.data;\n }, []);\n\n const columnDefs = [\n {\n headerName: 'Name',\n field: 'entityName',\n valueGetter: (params) =>\n params.data?.properties?.displayName ||\n params.data?.sanitizedName ||\n getSanitizedName(params.data?.entityName),\n wrapText: true,\n autoHeight: false,\n sortable: false\n },\n {\n headerName: 'Actions',\n filter: false,\n pinned: 'right',\n cellRenderer: 'actionsRenderer',\n // minWidth: 50,\n width: 150,\n cellRendererParams: {\n actionList: actionList\n },\n valueGetter: getterRowData,\n maxWidth: 180,\n suppressMenu: true,\n sortable: false,\n cellStyle: { display: 'flex', alignItems: 'center' }\n }\n ];\n return columnDefs;\n};\n\nexport const defaultColumnActionsDef = {\n resizable: true,\n editable: false,\n sortable: true,\n filter: true,\n floatingFilter: false,\n enableRowGroup: true\n};\n","import React, { useEffect, useMemo } from 'react';\nimport { TableColumnDefs } from './TableColumnDefs';\nimport { AmbientGridTemplate } from '../../UI/templates/AmbientGridTemplate';\nimport { ActionsRenderer } from '../../UI/templates/ui/renderers/ActionsRenderer';\nimport { useAgGridApi } from '../../utilities/aggrid/AgTable';\nimport { executeQueryAdHoc } from '../../udp/utilities/methodUtils';\nimport { SearchServiceDatasource } from '../../utilities/aggrid/datasources/SearchServiceDatasource';\nimport { useBuildEnvironment } from '../../shell/ui/EnvironmentRibbon';\n\nexport const TableContainer = (props) => {\n const {\n actionList,\n loading,\n rowData,\n catalog,\n isServerSide = false,\n promotedEntity,\n filterElements,\n customColumnDefs,\n eagerLoad = false,\n logicalSearchOperator = 1,\n frameworkComponents={ actionsRenderer: ActionsRenderer },\n additionalGridOptions,\n headerBackgroundColor,\n api,\n columnApi,\n gridReady,\n dynamicSizing,\n ...other\n } = props;\n const { gridApi, gridColumnApi, onGridReady } = useAgGridApi();\n const gApi = api || gridApi;\n const cApi = columnApi || gridColumnApi;\n const gReady = gridReady || onGridReady\n const buildEnv = useBuildEnvironment()\n const columnDefs = customColumnDefs || TableColumnDefs(actionList);\n\n const groupData = useMemo(() => {\n return columnDefs?.map((item) => {\n return {\n groupItem: item.field,\n label: item.headerName,\n value: item.field\n };\n });\n }, [columnDefs]);\n\n useEffect(() => {\n if (!gApi) return;\n if (promotedEntity && isServerSide) {\n let datasource = SearchServiceDatasource(\n null,\n promotedEntity?.unityBaseSearchMethod?.apiMethodId,\n filterElements,\n logicalSearchOperator,\n executeQueryAdHoc,\n null,\n null,\n eagerLoad\n );\n // eslint-disable-next-line no-unused-expressions\n gApi?.setServerSideDatasource(datasource);\n }\n }, [gApi, promotedEntity, isServerSide, filterElements, eagerLoad, logicalSearchOperator]);\n\n return (\n <AmbientGridTemplate\n useNewHeader\n api={gApi}\n onGridReady={gReady}\n columnApi={cApi}\n title={catalog?.name}\n data={!isServerSide && rowData}\n columnDefs={columnDefs}\n groupingData={groupData}\n height={`calc(100vh - ${buildEnv ? '139px' : '114px'})`}\n frameworkComponents={frameworkComponents}\n hideSearchBar={isServerSide}\n loading={loading}\n suppressScrollOnNewData\n dynamicSizing={dynamicSizing ?? false}\n disableRowSelection={true}\n rowModelType={isServerSide ? 'serverSide' : null}\n serverSideStoreType={isServerSide ? 'partial' : null}\n cacheOverflowSize={isServerSide ? 2 : null}\n cacheBlockSize={isServerSide ? 20 : null}\n maxConcurrentDatasourceRequests={isServerSide ? 1 : null}\n additionalGridOptions={additionalGridOptions}\n headerBackgroundColor={headerBackgroundColor}\n {...other}\n />\n );\n};\n","/* eslint-disable no-use-before-define */\nimport React, { useCallback } from 'react';\nimport { TextField, makeStyles, Popper } from '@material-ui/core';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\n\nconst useStyles = makeStyles((theme) => ({\n input: {\n borderRadius: 2,\n minHeight: 32,\n padding: 0,\n paddingTop: '0 !important',\n paddingBottom: (props) => (props.isMultiple ? '0 !important' : 10),\n marginTop: 3,\n '& .MuiFilledInput-inputMarginDense': {\n paddingTop: 8\n },\n '& .MuiFilledInput-root': {\n paddingTop: 0\n },\n '& .MuiInputAdornment-filled.MuiInputAdornment-positionStart:not(.MuiInputAdornment-hiddenLabel)':\n {\n marginTop: theme.spacing(0.5),\n marginLeft: theme.spacing(1)\n }\n },\n formTextInput: {\n fontSize: 14,\n marginTop: '2px !important',\n paddingBottom: '2px !important'\n },\n labelRoot: {\n fontSize: 14\n },\n root: {\n marginTop: 25,\n '& .MuiFormLabel-root': {\n marginTop: -30,\n marginLeft: -11\n },\n '& .MuiInputAdornment-root': {\n paddingLeft: theme.spacing(1)\n }\n },\n noLabel: {\n marginTop: theme.spacing(1)\n },\n formControl: {\n width: '100%'\n }\n}));\n\nconst AutoCompletePopper = (props) => {\n return <Popper {...props} placement='bottom-start' />;\n};\n\nexport const AmbientAutoComplete = (props) => {\n const {\n getOptionLabelFunction,\n getOptionSelected,\n label,\n placeholder,\n options,\n textFieldProps,\n disabled,\n onChange: onChangeProp,\n value,\n additionalOnChangeAction,\n classes: classProps,\n variant = 'filled',\n inputProps,\n inputPropClasses,\n customPopper,\n disableClearable = false,\n defaultValue,\n additionalOptionKey,\n isMultiple = false,\n limitTags,\n renderTags,\n size = 'medium',\n groupBy = null,\n loading,\n disableCloseOnSelect = false,\n ...other\n } = props;\n\n const classes = useStyles(props);\n const { autocompleteRoot } = classProps || {};\n\n const onChange = useCallback(\n (e, value) => {\n if (additionalOnChangeAction) {\n additionalOnChangeAction(value);\n }\n return onChangeProp?.(value);\n },\n [onChangeProp, additionalOnChangeAction]\n );\n\n return (\n <Autocomplete\n id='autocomplete'\n multiple={isMultiple}\n limitTags={limitTags}\n disabled={disabled}\n options={options || []}\n loading={loading}\n getOptionLabel={getOptionLabelFunction}\n getOptionSelected={getOptionSelected}\n groupBy={groupBy}\n onChange={onChange}\n value={value || (isMultiple ? [] : null)}\n className={autocompleteRoot}\n classes={{\n root: classes.formControl\n }}\n PopperComponent={customPopper || AutoCompletePopper}\n disableClearable={disableClearable}\n defaultValue={defaultValue}\n size={size}\n disableCloseOnSelect={disableCloseOnSelect}\n renderInput={(params) => (\n <div className={label ? classes.root : classes.noLabel}>\n <TextField\n {...textFieldProps}\n {...params}\n {...other}\n label={label}\n margin='dense'\n variant={variant}\n size='small'\n InputProps={{\n ...params.InputProps,\n classes: {\n root: classes.input,\n input: classes.formTextInput,\n ...props.InputProps?.classes\n }\n }}\n InputLabelProps={{\n shrink: false,\n classes: {\n root: classes.labelRoot,\n focused: classes.labelFocused\n }\n }}\n />\n </div>\n )}\n renderTags={renderTags}\n />\n );\n};\n","import { ErrorIcon } from '@fluentui/react-icons';\nimport { Typography, makeStyles, Box } from '@material-ui/core';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { FluentButton } from '../inputs/buttons/FluentButton';\nimport { FluentIcon } from '../../utilities/FluentIcon';\nimport { LayoutUnit } from '../../layout/LayoutUnit';\n\nconst useStyles = makeStyles(theme => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n height: '100%',\n width: '100%',\n },\n secondaryText: {\n color: theme.palette.text.secondary,\n },\n image: {\n width: props => props?.imageWidth,\n },\n}));\n\nexport const EmptyStateDisplay = props => {\n const {\n icon,\n iconSize = 48,\n customIconSize = true,\n imageSrc,\n imageWidth = '100px',\n primaryText,\n secondaryText,\n actionLabel,\n action,\n } = props;\n const classes = useStyles({ imageWidth });\n\n return (\n <div className={classes.container}>\n {imageSrc ? (\n <img src={imageSrc} alt='logo' className={classes.image} />\n ) : (\n <FluentIcon\n component={icon ?? ErrorIcon}\n size={iconSize}\n customSize={customIconSize}\n />\n )}\n <LayoutUnit unit=\"xxs\" />\n {primaryText && (\n <div>\n <Typography variant='subtitle2' align='center'>\n {primaryText}\n </Typography>\n </div>\n )}\n {secondaryText && (\n <div>\n <Typography className={classes.secondaryText} align='center'>\n {secondaryText}\n </Typography>\n </div>\n )}\n {(primaryText || secondaryText) && <LayoutUnit unit=\"xxs\" />}\n {action && (\n <div\n className={primaryText || secondaryText ? classes.buttonWrapper : ''}\n >\n <FluentButton\n onClick={action}\n variant='outlined'\n color='secondary'\n id={\n 'udpRecord-EmptyStateDisplay-' +\n primaryText.replace(/\\s+/g, '') +\n '-' +\n actionLabel.replace(/\\s+/g, '')\n }\n udprecordid={\n 'udpRecord-EmptyStateDisplay-' +\n primaryText.replace(/\\s+/g, '') +\n '-' +\n actionLabel.replace(/\\s+/g, '')\n }\n >\n {actionLabel}\n </FluentButton>\n </div>\n )}\n </div>\n );\n};\n\nEmptyStateDisplay.propTypes = {\n icon: PropTypes.elementType,\n iconSize: PropTypes.number,\n customIconSize: PropTypes.bool,\n imageSrc: PropTypes.string,\n imageWidth: PropTypes.string,\n primaryText: PropTypes.string,\n secondaryText: PropTypes.string,\n actionLabel: PropTypes.string,\n action: PropTypes.func\n};\n\nEmptyStateDisplay.defaultProps = {\n iconSize: 48,\n customIconSize: true,\n imageWidth: '100px'\n};","import React from 'react';\nimport { makeStyles, Button } from '@material-ui/core';\nimport { Alert, AlertTitle } from '@material-ui/lab';\nimport clsx from 'clsx';\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n '@global': {\n '.MuiPaper-rounded': {\n borderRadius: 0,\n },\n },\n alertSuccess: {\n borderLeft: `4px solid ${theme.palette.success.main}`,\n },\n alertWarning: {\n borderLeft: `4px solid ${theme.palette.warning.main}`,\n },\n alertError: {\n borderLeft: `4px solid ${theme.palette.error.main}`,\n color: theme.palette.error.main,\n },\n alertInfo: {\n borderLeft: `4px solid ${theme.palette.info.main}`,\n },\n square: {\n borderRadius: 0,\n },\n}));\n\nexport const AmbientAlert = ({\n alertButton,\n alertMessage,\n alertTitle,\n showAlert,\n alertSeverity,\n closeAlert,\n alertAction,\n alertActionButton,\n alertHandleAction,\n ...otherProps\n}) => {\n const classes = useStyles();\n\n const alertColor = () => {\n if (alertSeverity === 'success') {\n let alertLevel = classes.alertSuccess;\n return alertLevel;\n } else if (alertSeverity === 'warning') {\n let alertLevel = classes.alertWarning;\n return alertLevel;\n } else if (alertSeverity === 'error') {\n let alertLevel = classes.alertError;\n return alertLevel;\n } else if (alertSeverity === 'info') {\n let alertLevel = classes.alertInfo;\n return alertLevel;\n }\n };\n\n return (\n <div>\n {showAlert && (\n <Alert\n classes={{ root: clsx(alertColor(), classes.square) }}\n {...otherProps}\n severity={alertSeverity}\n onClose={closeAlert}\n action={\n alertAction ? (\n <Button\n onClick={alertHandleAction}\n id='udpRecord-AmbientAlert-alertActionButton'\n udprecordid='udpRecord-AmbientAlert-alertActionButton'\n >\n {alertActionButton}\n </Button>\n ) : null\n }\n >\n {alertTitle && <AlertTitle>{alertTitle}</AlertTitle>}\n {alertMessage}\n </Alert>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { StatusChip } from '../../../dataDisplay/StatusChip';\n\nexport const StatusCellRenderer = props => {\n const { value, getStatus, getLabel } = props;\n const formattedLabel = value => {\n return value\n ?.replace(/([a-z])([A-Z])/g, '$1 $2')\n ?.replace(/\\b\\w/g, char => char.toUpperCase());\n };\n return (\n <StatusChip\n status={getStatus(value)}\n label={getLabel ? formattedLabel(getLabel(value)) : formattedLabel(value)}\n />\n );\n};\n","import React, { useMemo, useState, useCallback, useEffect } from 'react';\nimport {\n StatusCircleCheckmarkIcon,\n ErrorIcon,\n DownloadIcon\n} from '@fluentui/react-icons';\nimport { getSanitizedName } from '../../utilities/entities/entityUtilities';\nimport { FluentDialog } from '../../UI/feedback/FluentDialog';\nimport { EmptyStateDisplay } from '../../UI/dataDisplay/EmptyStateDisplay';\nimport { useAxiosGet } from '../../utilities/useAxiosGet';\nimport { ActionsRenderer } from '../../UI/templates/ui/renderers/ActionsRenderer';\nimport { AmbientAlert } from '../../UI/feedback/AmbientAlert';\nimport { TableContainer } from '../../maintenanceEngine/tableBrowser/TableContainer';\nimport { StatusCellRenderer } from '../../UI/templates/ui/renderers/StatusCellRenderer';\nimport { useUser } from '../../utilities/auth/useUser';\nimport { AmbientAutoComplete } from '../../UI/inputs/textField/AmbientAutoComplete';\nimport { executeQueryWithParameters } from '../utilities/methodUtils';\nimport { useHandleAxiosSnackbar } from '../../utilities/apiHelpers';\nimport { ConfigService } from 'udp-react-stencil-component-library';\n\nexport const MyExportsPage = (props) => {\n const { productId } = props;\n const user = useUser();\n const [product, setProduct] = useState();\n const [downloadLinkLoading, setDownloadLinkLoading] = useState(false);\n const [fileResultData, setFileResultData] = useState();\n const [downloadOpen, setDownloadOpen] = useState(false);\n const [noDownloadMethod, setNoDownloadMethod] = useState(false);\n\n const { handleErrorSnackbar, handleSuccessSnackbar } =\n useHandleAxiosSnackbar();\n\n const [{ data: products, loading: productsLoading }] = useAxiosGet(\n ConfigService.tenantV2ApiUrl,\n `tenant/products?tenantId=${user?.currentTenantId}&isSubscribable=${!user\n ?.can?.CAN_MANAGE_CATALOGS_FOR_UNSUBSCRIBABLE_PRODUCTS}`,\n {},\n !user\n );\n\n const [{ data: apiCatalog, loading: catalogLoading, error: catalogError }] =\n useAxiosGet(\n ConfigService.integrationV1ApiUrl,\n `tenantProductApiCatalogBase/tenant/${user?.currentTenantId}/product/${\n productId ? productId : product?.productId\n }`,\n {},\n !(product || productId),\n false\n );\n\n const [{ data: udpJobEntity, loading: jobEntityLoading }] = useAxiosGet(\n ConfigService.integrationV1ApiUrl,\n `apicatalog/${apiCatalog?.apiCatalogId}/promotedMethodEntities/udpJob/product/${apiCatalog?.productId}?compareSanitizedName=true`,\n {},\n !apiCatalog?.productId || !apiCatalog?.apiCatalogId,\n false\n );\n\n const refetchfileResultData = useCallback(\n async (selectedRecord) => {\n if (udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId) {\n setDownloadLinkLoading(true);\n await executeQueryWithParameters(\n {\n data: { JobId: selectedRecord?.id }\n },\n udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId\n )\n .then((res) => {\n setFileResultData(res.data);\n })\n .catch((err) => {});\n setDownloadLinkLoading(false);\n } else {\n setNoDownloadMethod(true);\n }\n },\n [udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId]\n );\n\n const handleSelectRecord = useCallback(\n (data) => {\n refetchfileResultData(data);\n setDownloadOpen(true);\n },\n [refetchfileResultData]\n );\n\n const getOptionLabel = (val) => {\n return val?.name;\n };\n\n const handleProductChange = useCallback((val) => {\n setProduct(val);\n }, []);\n\n const handleFileDownload = useCallback(() => {\n if (fileResultData?.link) {\n const link = document.createElement('a');\n link.href = fileResultData?.link;\n link.download = '';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n setDownloadOpen(false);\n handleSuccessSnackbar('File successfully downloaded');\n }\n }, [fileResultData?.link, handleSuccessSnackbar]);\n\n const getJobStatus = (value) => {\n if (value === 1) {\n return null;\n } else if (value === 2) {\n return 'info';\n } else if (value === 3) {\n return 'success';\n } else if (value === 4) {\n return 'error';\n }\n };\n\n const getJobLabel = (value) => {\n if (value === 1) {\n return 'Pending';\n } else if (value === 2) {\n return 'Running';\n } else if (value === 3) {\n return 'Completed';\n } else if (value === 4) {\n return 'Failed';\n }\n };\n\n useEffect(() => {\n if (catalogError) {\n handleErrorSnackbar(\n '',\n 'Error fetching catalog for the selected product'\n );\n }\n }, [catalogError, handleErrorSnackbar]);\n\n const filterElements = useMemo(() => {\n return [\n {\n searchField: 'jobTypeId',\n searchOperator: '=',\n searchValue: 2\n }\n ];\n }, []);\n\n const actionList = useMemo(() => {\n return [\n {\n id: 1,\n title: 'Download',\n icon: DownloadIcon,\n onClick: handleSelectRecord,\n disabled: false,\n checkDisabled: (value) => value?.statusId !== 3\n }\n ];\n }, [handleSelectRecord]);\n\n const columnDefs = useMemo(\n () => [\n {\n headerName: 'Id',\n sortable: true,\n field: 'id',\n suppressMenu: true\n },\n {\n headerName: 'Name',\n sortable: false,\n field: 'name',\n minWidth: 140,\n suppressMenu: true,\n valueFormatter: (data) => getSanitizedName(data.data.name)\n },\n {\n headerName: 'Date',\n sortable: false,\n valueFormatter: (data) =>\n new Date(data.data.startTime).toLocaleString(),\n minWidth: 130,\n suppressMenu: true\n //sort: 'desc',\n },\n {\n headerName: 'Status',\n field: 'statusId',\n wrapText: true,\n autoHeight: true,\n sortable: false,\n cellRenderer: 'statusCellRenderer',\n cellRendererParams: { getStatus: getJobStatus, getLabel: getJobLabel },\n minWidth: 130,\n maxWidth: 130,\n suppressMenu: true\n },\n\n {\n headerName: 'Actions',\n filter: false,\n pinned: 'right',\n cellRenderer: 'actionsRenderer',\n width: 120,\n maxWidth: 120,\n cellRendererParams: {\n actionList: actionList,\n value: (data) => data\n },\n suppressMenu: true,\n sortable: false,\n cellStyle: { display: 'flex', alignItems: 'center' }\n }\n ],\n [actionList]\n );\n\n return (\n <div>\n {udpJobEntity && !udpJobEntity?.unityBaseSearchMethod?.apiMethodId && (\n <AmbientAlert\n alertMessage={\"UdpJob's search method must be promoted\"}\n showAlert={true}\n alertSeverity={'error'}\n />\n )}\n\n {!productId && (\n <div style={{ margin: '0px 5px 5px 5px' }}>\n <AmbientAutoComplete\n isMultiple={false}\n id={'product'}\n name={'product'}\n label='Product'\n onChange={handleProductChange}\n options={products}\n size='small'\n getOptionLabelFunction={getOptionLabel}\n value={product}\n required\n />\n </div>\n )}\n <TableContainer\n loading={productsLoading || catalogLoading || jobEntityLoading}\n title={`Exports`}\n isServerSide={true}\n eagerLoad={false}\n logicalSearchOperator={2}\n promotedEntity={udpJobEntity}\n filterElements={filterElements}\n actionList={actionList}\n customColumnDefs={columnDefs}\n frameworkComponents={{\n statusCellRenderer: StatusCellRenderer,\n actionsRenderer: ActionsRenderer\n }}\n hideSearchBar\n hiddenActionButtons={[\n 'saveView',\n 'views',\n 'insights',\n 'importExport',\n 'group',\n 'filter',\n 'columns',\n 'clearFilters',\n 'fitGrid',\n 'expandGrid'\n ]}\n height={'calc(100vh - 167px)'}\n dynamicSizing\n />\n <FluentDialog\n actionOne={handleFileDownload}\n actionTwo={() => setDownloadOpen(false)}\n labelOne='Download'\n labelTwo='Cancel'\n open={downloadOpen}\n handleClose={() => setDownloadOpen(false)}\n disableOne={noDownloadMethod || downloadLinkLoading}\n progress={downloadLinkLoading}\n fullWidth\n >\n {noDownloadMethod ? (\n <AmbientAlert\n alertMessage={\"UdpJob's get file result method must be promoted\"}\n showAlert={true}\n alertSeverity={'error'}\n />\n ) : downloadLinkLoading ? (\n <EmptyStateDisplay primaryText={'Fetching download link...'} />\n ) : (\n <EmptyStateDisplay\n icon={noDownloadMethod ? ErrorIcon : StatusCircleCheckmarkIcon}\n primaryText={!noDownloadMethod && 'File is ready to download!'}\n />\n )}\n </FluentDialog>\n </div>\n );\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import "./AmbientGridTemplate-BqlMt5Su.js";
|
|
2
|
+
import "./SideSheet-DUsxG1FN.js";
|
|
3
|
+
import "./EnvironmentRibbon-DaDmKAPO.js";
|
|
4
|
+
import "./apiHelpers-DZots3og.js";
|
|
5
|
+
import "./SearchUtilities-Bor3HbfB.js";
|
|
6
|
+
import { MyExportsPage } from "./MyExportsPage-CX9tzqHk.js";
|
|
7
|
+
|
|
8
|
+
export { MyExportsPage };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FluentIcon, FluentIconButton, LayoutUnit, PrimaryActionButton, StandardTitle, StatusChip, useAxiosGet, useId, useShellStore } from "./EnvironmentRibbon-
|
|
1
|
+
import { FluentIcon, FluentIconButton, LayoutUnit, PrimaryActionButton, StandardTitle, StatusChip, useAxiosGet, useId, useShellStore } from "./EnvironmentRibbon-DaDmKAPO.js";
|
|
2
2
|
import React, { Fragment, createContext, createRef, forwardRef, memo, useCallback, useEffect, useMemo, useReducer, useRef, useState } from "react";
|
|
3
3
|
import { Badge, Button, ButtonBase, Card, CardActions, CardContent, CircularProgress, Collapse, Divider, IconButton, LinearProgress, ListItemIcon, ListItemText, Menu, MenuItem, Popover, Slide, Tooltip, Typography, lighten, makeStyles, useTheme } from "@material-ui/core";
|
|
4
4
|
import { ConfigService } from "udp-react-stencil-component-library";
|
|
@@ -1538,4 +1538,4 @@ const PageContainer = (props) => {
|
|
|
1538
1538
|
|
|
1539
1539
|
//#endregion
|
|
1540
1540
|
export { AmbientPopoverMenuItem, FUICardHeaderMenu, FUICard_default, FUIMenuItem_default, FluentCard, FluentCardActions, FluentCardContent, PAHExport, PageContainer, PrimaryActionHeader, ToolBarButton, UdpTabs, WidgetCard, pageContext, useAllTeleporters, useSetLocationState, useTeleporterStore };
|
|
1541
|
-
//# sourceMappingURL=PageContainer-
|
|
1541
|
+
//# sourceMappingURL=PageContainer-k8KCfGsM.js.map
|