|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import React from 'react'; |
|
|
import { Button } from '@douyinfe/semi-ui'; |
|
|
import PricingGroups from '../filter/PricingGroups'; |
|
|
import PricingQuotaTypes from '../filter/PricingQuotaTypes'; |
|
|
import PricingEndpointTypes from '../filter/PricingEndpointTypes'; |
|
|
import PricingVendors from '../filter/PricingVendors'; |
|
|
import PricingTags from '../filter/PricingTags'; |
|
|
|
|
|
import { resetPricingFilters } from '../../../../helpers/utils'; |
|
|
import { usePricingFilterCounts } from '../../../../hooks/model-pricing/usePricingFilterCounts'; |
|
|
|
|
|
const PricingSidebar = ({ |
|
|
showWithRecharge, |
|
|
setShowWithRecharge, |
|
|
currency, |
|
|
setCurrency, |
|
|
handleChange, |
|
|
setActiveKey, |
|
|
showRatio, |
|
|
setShowRatio, |
|
|
viewMode, |
|
|
setViewMode, |
|
|
filterGroup, |
|
|
setFilterGroup, |
|
|
handleGroupClick, |
|
|
filterQuotaType, |
|
|
setFilterQuotaType, |
|
|
filterEndpointType, |
|
|
setFilterEndpointType, |
|
|
filterVendor, |
|
|
setFilterVendor, |
|
|
filterTag, |
|
|
setFilterTag, |
|
|
currentPage, |
|
|
setCurrentPage, |
|
|
tokenUnit, |
|
|
setTokenUnit, |
|
|
loading, |
|
|
t, |
|
|
...categoryProps |
|
|
}) => { |
|
|
const { |
|
|
quotaTypeModels, |
|
|
endpointTypeModels, |
|
|
vendorModels, |
|
|
tagModels, |
|
|
groupCountModels, |
|
|
} = usePricingFilterCounts({ |
|
|
models: categoryProps.models, |
|
|
filterGroup, |
|
|
filterQuotaType, |
|
|
filterEndpointType, |
|
|
filterVendor, |
|
|
filterTag, |
|
|
searchValue: categoryProps.searchValue, |
|
|
}); |
|
|
|
|
|
const handleResetFilters = () => |
|
|
resetPricingFilters({ |
|
|
handleChange, |
|
|
setShowWithRecharge, |
|
|
setCurrency, |
|
|
setShowRatio, |
|
|
setViewMode, |
|
|
setFilterGroup, |
|
|
setFilterQuotaType, |
|
|
setFilterEndpointType, |
|
|
setFilterVendor, |
|
|
setFilterTag, |
|
|
setCurrentPage, |
|
|
setTokenUnit, |
|
|
}); |
|
|
|
|
|
return ( |
|
|
<div className='p-2'> |
|
|
<div className='flex items-center justify-between mb-6'> |
|
|
<div className='text-lg font-semibold text-gray-800'>{t('筛选')}</div> |
|
|
<Button |
|
|
theme='outline' |
|
|
type='tertiary' |
|
|
onClick={handleResetFilters} |
|
|
className='text-gray-500 hover:text-gray-700' |
|
|
> |
|
|
{t('重置')} |
|
|
</Button> |
|
|
</div> |
|
|
|
|
|
<PricingVendors |
|
|
filterVendor={filterVendor} |
|
|
setFilterVendor={setFilterVendor} |
|
|
models={vendorModels} |
|
|
allModels={categoryProps.models} |
|
|
loading={loading} |
|
|
t={t} |
|
|
/> |
|
|
|
|
|
<PricingTags |
|
|
filterTag={filterTag} |
|
|
setFilterTag={setFilterTag} |
|
|
models={tagModels} |
|
|
allModels={categoryProps.models} |
|
|
loading={loading} |
|
|
t={t} |
|
|
/> |
|
|
|
|
|
<PricingGroups |
|
|
filterGroup={filterGroup} |
|
|
setFilterGroup={handleGroupClick} |
|
|
usableGroup={categoryProps.usableGroup} |
|
|
groupRatio={categoryProps.groupRatio} |
|
|
models={groupCountModels} |
|
|
loading={loading} |
|
|
t={t} |
|
|
/> |
|
|
|
|
|
<PricingQuotaTypes |
|
|
filterQuotaType={filterQuotaType} |
|
|
setFilterQuotaType={setFilterQuotaType} |
|
|
models={quotaTypeModels} |
|
|
loading={loading} |
|
|
t={t} |
|
|
/> |
|
|
|
|
|
<PricingEndpointTypes |
|
|
filterEndpointType={filterEndpointType} |
|
|
setFilterEndpointType={setFilterEndpointType} |
|
|
models={endpointTypeModels} |
|
|
allModels={categoryProps.models} |
|
|
loading={loading} |
|
|
t={t} |
|
|
/> |
|
|
</div> |
|
|
); |
|
|
}; |
|
|
|
|
|
export default PricingSidebar; |
|
|
|