import React from 'react'; import BaseIcon from '../BaseIcon'; import { mdiEye, mdiTrashCan, mdiPencilOutline } from '@mdi/js'; import axios from 'axios'; import { GridActionsCellItem, GridRowParams, GridValueGetterParams, } from '@mui/x-data-grid'; import ImageField from '../ImageField'; import {saveFile} from "../../helpers/fileSaver"; import dataFormatter from '../../helpers/dataFormatter' import DataGridMultiSelect from "../DataGridMultiSelect"; import ListActionsPopover from '../ListActionsPopover'; import {hasPermission} from "../../helpers/userPermissions"; type Params = (id: string) => void; export const loadColumns = async ( onDelete: Params, entityName: string, user ) => { async function callOptionsApi(entityName: string) { if (!hasPermission(user, 'READ_' + entityName.toUpperCase())) return []; try { const data = await axios(`/${entityName}/autocomplete?limit=100`); return data.data; } catch (error) { console.log(error); return []; } } const hasUpdatePermission = hasPermission(user, 'UPDATE_REVIEW_EXCEPTIONS') return [ { field: 'workflow_run', headerName: 'Workflow Run', flex: 1, minWidth: 120, filterable: false, headerClassName: 'datagrid--header', cellClassName: 'datagrid--cell', editable: hasUpdatePermission, sortable: false, type: 'singleSelect', getOptionValue: (value: any) => value?.id, getOptionLabel: (value: any) => value?.label, valueOptions: await callOptionsApi('workflow_runs'), valueGetter: (params: GridValueGetterParams) => params?.value?.id ?? params?.value, }, { field: 'checklist', headerName: 'Checklist', flex: 1, minWidth: 120, filterable: false, headerClassName: 'datagrid--header', cellClassName: 'datagrid--cell', editable: hasUpdatePermission, sortable: false, type: 'singleSelect', getOptionValue: (value: any) => value?.id, getOptionLabel: (value: any) => value?.label, valueOptions: await callOptionsApi('human_review_checklists'), valueGetter: (params: GridValueGetterParams) => params?.value?.id ?? params?.value, }, { field: 'raised_by', headerName: 'Raised By', flex: 1, minWidth: 120, filterable: false, headerClassName: 'datagrid--header', cellClassName: 'datagrid--cell', editable: hasUpdatePermission, sortable: false, type: 'singleSelect', getOptionValue: (value: any) => value?.id, getOptionLabel: (value: any) => value?.label, valueOptions: await callOptionsApi('users'), valueGetter: (params: GridValueGetterParams) => params?.value?.id ?? params?.value, }, { field: 'exception_type', headerName: 'Exception Type', flex: 1, minWidth: 120, filterable: false, headerClassName: 'datagrid--header', cellClassName: 'datagrid--cell', editable: hasUpdatePermission, }, { field: 'rationale', headerName: 'Rationale', flex: 1, minWidth: 120, filterable: false, headerClassName: 'datagrid--header', cellClassName: 'datagrid--cell', editable: hasUpdatePermission, }, { field: 'resolution_status', headerName: 'Resolution Status', flex: 1, minWidth: 120, filterable: false, headerClassName: 'datagrid--header', cellClassName: 'datagrid--cell', editable: hasUpdatePermission, }, { field: 'raised_at', headerName: 'Raised At', flex: 1, minWidth: 120, filterable: false, headerClassName: 'datagrid--header', cellClassName: 'datagrid--cell', editable: hasUpdatePermission, type: 'dateTime', valueGetter: (params: GridValueGetterParams) => new Date(params.row.raised_at), }, { field: 'resolved_at', headerName: 'Resolved At', flex: 1, minWidth: 120, filterable: false, headerClassName: 'datagrid--header', cellClassName: 'datagrid--cell', editable: hasUpdatePermission, type: 'dateTime', valueGetter: (params: GridValueGetterParams) => new Date(params.row.resolved_at), }, { field: 'actions', type: 'actions', minWidth: 30, headerClassName: 'datagrid--header', cellClassName: 'datagrid--cell', getActions: (params: GridRowParams) => { return [
, ] }, }, ]; };