Enhance ObjectTable component to support Electron context; adjust scroll height based on Electron environment and improve action button handling with dynamic disabled state.
This commit is contained in:
parent
f0cb4b3b83
commit
5300874b80
@ -39,7 +39,8 @@ import CheckIcon from '../../Icons/CheckIcon'
|
||||
import { useNavigate } from 'react-router-dom'
|
||||
import QuestionCircleIcon from '../../Icons/QuestionCircleIcon'
|
||||
import { AuthContext } from '../context/AuthContext'
|
||||
import unionBy from 'lodash/unionBy'
|
||||
import { ElectronContext } from '../context/ElectronContext'
|
||||
|
||||
const logger = loglevel.getLogger('DasboardTable')
|
||||
logger.setLevel(config.logLevel)
|
||||
|
||||
@ -58,6 +59,7 @@ const ObjectTable = forwardRef(
|
||||
ref
|
||||
) => {
|
||||
const { token } = useContext(AuthContext)
|
||||
const { isElectron } = useContext(ElectronContext)
|
||||
const {
|
||||
fetchObjects,
|
||||
connected,
|
||||
@ -73,6 +75,15 @@ const ObjectTable = forwardRef(
|
||||
if (cards) {
|
||||
adjustedScrollHeight = 'calc(var(--unit-100vh) - 280px)'
|
||||
}
|
||||
if (isElectron) {
|
||||
adjustedScrollHeight = 'calc(var(--unit-100vh) - 244px)'
|
||||
}
|
||||
if (isMobile && isElectron) {
|
||||
adjustedScrollHeight = 'calc(var(--unit-100vh) - 282px)'
|
||||
}
|
||||
if (cards && isElectron) {
|
||||
adjustedScrollHeight = 'calc(var(--unit-100vh) - 260px)'
|
||||
}
|
||||
const [, contextHolder] = message.useMessage()
|
||||
const tableRef = useRef(null)
|
||||
const model = getModelByName(type)
|
||||
@ -108,7 +119,16 @@ const ObjectTable = forwardRef(
|
||||
const renderActions = (objectData) => {
|
||||
return (
|
||||
<Flex gap='small' align='center' justify='center'>
|
||||
{rowActions.map((action, index) => (
|
||||
{rowActions.map((action, index) => {
|
||||
var disabled = false
|
||||
if (action.disabled) {
|
||||
if (typeof action.disabled === 'function') {
|
||||
disabled = action.disabled(objectData)
|
||||
} else {
|
||||
disabled = action.disabled
|
||||
}
|
||||
}
|
||||
return (
|
||||
<Tooltip key={index} title={action.label} arrow={false}>
|
||||
<Button
|
||||
icon={
|
||||
@ -118,6 +138,7 @@ const ObjectTable = forwardRef(
|
||||
<QuestionCircleIcon />
|
||||
)
|
||||
}
|
||||
disabled={disabled}
|
||||
type={'text'}
|
||||
size={'small'}
|
||||
onClick={() => {
|
||||
@ -127,7 +148,8 @@ const ObjectTable = forwardRef(
|
||||
}}
|
||||
/>
|
||||
</Tooltip>
|
||||
))}
|
||||
)
|
||||
})}
|
||||
</Flex>
|
||||
)
|
||||
}
|
||||
@ -289,11 +311,12 @@ const ObjectTable = forwardRef(
|
||||
const updateEventHandler = useCallback((id, updatedData) => {
|
||||
setPages((prevPages) =>
|
||||
prevPages.map((page) => {
|
||||
const updatedItems = unionBy(
|
||||
[{ ...updatedData, _id: id }],
|
||||
page.items,
|
||||
'_id'
|
||||
)
|
||||
const updatedItems = page.items.map((item) => {
|
||||
if (item._id === id) {
|
||||
return { ...item, ...updatedData }
|
||||
}
|
||||
return item
|
||||
})
|
||||
return {
|
||||
...page,
|
||||
items: updatedItems
|
||||
@ -748,6 +771,7 @@ const ObjectTable = forwardRef(
|
||||
onChange={handleTableChange}
|
||||
showSorterTooltip={false}
|
||||
style={{ height: '100%' }}
|
||||
size={isElectron ? 'small' : 'middle'}
|
||||
/>
|
||||
{cards ? (
|
||||
<Spin indicator={<LoadingOutlined />} spinning={loading}>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user