|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import React from 'react'; |
|
|
import CardPro from '../../common/ui/CardPro'; |
|
|
import ModelsTable from './ModelsTable'; |
|
|
import ModelsActions from './ModelsActions'; |
|
|
import ModelsFilters from './ModelsFilters'; |
|
|
import ModelsTabs from './ModelsTabs'; |
|
|
import EditModelModal from './modals/EditModelModal'; |
|
|
import EditVendorModal from './modals/EditVendorModal'; |
|
|
import { useModelsData } from '../../../hooks/models/useModelsData'; |
|
|
import { useIsMobile } from '../../../hooks/common/useIsMobile'; |
|
|
import { createCardProPagination } from '../../../helpers/utils'; |
|
|
|
|
|
const ModelsPage = () => { |
|
|
const modelsData = useModelsData(); |
|
|
const isMobile = useIsMobile(); |
|
|
|
|
|
const { |
|
|
|
|
|
showEdit, |
|
|
editingModel, |
|
|
closeEdit, |
|
|
refresh, |
|
|
|
|
|
|
|
|
selectedKeys, |
|
|
setSelectedKeys, |
|
|
setEditingModel, |
|
|
setShowEdit, |
|
|
batchDeleteModels, |
|
|
|
|
|
|
|
|
formInitValues, |
|
|
setFormApi, |
|
|
searchModels, |
|
|
loading, |
|
|
searching, |
|
|
|
|
|
|
|
|
compactMode, |
|
|
setCompactMode, |
|
|
|
|
|
|
|
|
showAddVendor, |
|
|
setShowAddVendor, |
|
|
showEditVendor, |
|
|
setShowEditVendor, |
|
|
editingVendor, |
|
|
setEditingVendor, |
|
|
loadVendors, |
|
|
|
|
|
|
|
|
t, |
|
|
} = modelsData; |
|
|
|
|
|
return ( |
|
|
<> |
|
|
<EditModelModal |
|
|
refresh={refresh} |
|
|
editingModel={editingModel} |
|
|
visiable={showEdit} |
|
|
handleClose={closeEdit} |
|
|
/> |
|
|
|
|
|
<EditVendorModal |
|
|
visible={showAddVendor || showEditVendor} |
|
|
handleClose={() => { |
|
|
setShowAddVendor(false); |
|
|
setShowEditVendor(false); |
|
|
setEditingVendor({ id: undefined }); |
|
|
}} |
|
|
editingVendor={showEditVendor ? editingVendor : { id: undefined }} |
|
|
refresh={() => { |
|
|
loadVendors(); |
|
|
refresh(); |
|
|
}} |
|
|
/> |
|
|
|
|
|
<CardPro |
|
|
type='type3' |
|
|
tabsArea={<ModelsTabs {...modelsData} />} |
|
|
actionsArea={ |
|
|
<div className='flex flex-col md:flex-row justify-between items-center gap-2 w-full'> |
|
|
<ModelsActions |
|
|
selectedKeys={selectedKeys} |
|
|
setSelectedKeys={setSelectedKeys} |
|
|
setEditingModel={setEditingModel} |
|
|
setShowEdit={setShowEdit} |
|
|
batchDeleteModels={batchDeleteModels} |
|
|
syncing={modelsData.syncing} |
|
|
syncUpstream={modelsData.syncUpstream} |
|
|
previewing={modelsData.previewing} |
|
|
previewUpstreamDiff={modelsData.previewUpstreamDiff} |
|
|
applyUpstreamOverwrite={modelsData.applyUpstreamOverwrite} |
|
|
compactMode={compactMode} |
|
|
setCompactMode={setCompactMode} |
|
|
t={t} |
|
|
/> |
|
|
|
|
|
<div className='w-full md:w-full lg:w-auto order-1 md:order-2'> |
|
|
<ModelsFilters |
|
|
formInitValues={formInitValues} |
|
|
setFormApi={setFormApi} |
|
|
searchModels={searchModels} |
|
|
loading={loading} |
|
|
searching={searching} |
|
|
t={t} |
|
|
/> |
|
|
</div> |
|
|
</div> |
|
|
} |
|
|
paginationArea={createCardProPagination({ |
|
|
currentPage: modelsData.activePage, |
|
|
pageSize: modelsData.pageSize, |
|
|
total: modelsData.modelCount, |
|
|
onPageChange: modelsData.handlePageChange, |
|
|
onPageSizeChange: modelsData.handlePageSizeChange, |
|
|
isMobile: isMobile, |
|
|
t: modelsData.t, |
|
|
})} |
|
|
t={modelsData.t} |
|
|
> |
|
|
<ModelsTable {...modelsData} /> |
|
|
</CardPro> |
|
|
</> |
|
|
); |
|
|
}; |
|
|
|
|
|
export default ModelsPage; |
|
|
|