| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- /*
- Copyright (C) 2025 QuantumNous
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation, either version 3 of the
- License, or (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see <https://www.gnu.org/licenses/>.
- For commercial licensing, please contact support@quantumnous.com
- */
- 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;
|