diff --git a/src/client/models/ServiceSchema.ts b/src/client/models/ServiceSchema.ts index 363d9a4..1be8c70 100644 --- a/src/client/models/ServiceSchema.ts +++ b/src/client/models/ServiceSchema.ts @@ -15,5 +15,6 @@ export type ServiceSchema = { categoryPrices: Array; cost: (number | null); rank: string; + isPlaceholder?: boolean; }; diff --git a/src/client/services/ServiceService.ts b/src/client/services/ServiceService.ts index abf492b..2f25169 100644 --- a/src/client/services/ServiceService.ts +++ b/src/client/services/ServiceService.ts @@ -40,10 +40,20 @@ export class ServiceService { * @returns ServiceGetAllResponse Successful Response * @throws ApiError */ - public static getAllServices(): CancelablePromise { + public static getAllServices({ + withPlaceholders = false, + }: { + withPlaceholders?: boolean, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/service/get-all', + query: { + 'with_placeholders': withPlaceholders, + }, + errors: { + 422: `Validation Error`, + }, }); } /** diff --git a/src/components/Selects/ServiceSelectNew/ServiceSelectNew.tsx b/src/components/Selects/ServiceSelectNew/ServiceSelectNew.tsx index d4822d3..7418638 100644 --- a/src/components/Selects/ServiceSelectNew/ServiceSelectNew.tsx +++ b/src/components/Selects/ServiceSelectNew/ServiceSelectNew.tsx @@ -16,7 +16,7 @@ type RestProps = { }; type Props = Omit, "data"> & RestProps; const ServiceSelectNew: FC = (props: Props) => { - const { services } = useServicesList(); + const { services } = useServicesList({ withPlaceholders: false }); const data = props.filterType ? services.filter(service => service.serviceType === props.filterType) : services; @@ -28,10 +28,10 @@ const ServiceSelectNew: FC = (props: Props) => { return { ...option, items: option.items.filter((item: ComboboxItem) => - item.label.toLowerCase().includes(search.toLowerCase()) + item.label.toLowerCase().includes(search.toLowerCase()), ), }; - } + }, ); }; return ( diff --git a/src/components/Selects/ServicesMultiselect/ServicesMultiselect.tsx b/src/components/Selects/ServicesMultiselect/ServicesMultiselect.tsx index d1c5373..1869f05 100644 --- a/src/components/Selects/ServicesMultiselect/ServicesMultiselect.tsx +++ b/src/components/Selects/ServicesMultiselect/ServicesMultiselect.tsx @@ -7,7 +7,7 @@ import useServicesList from "../../../pages/ServicesPage/hooks/useServicesList.t type Props = Omit, "data">; const ServicesMultiselect: FC = (props: Props) => { - const { services } = useServicesList(); + const { services } = useServicesList({ withPlaceholders: false }); return ( = props => { ServiceSchema | undefined >(props.defaultValue); const value = isControlled ? props.value : internalValue; - const { services } = useServicesList(); + const { services } = useServicesList({ withPlaceholders: false }); const categories = useMemo( () => services.reduce((acc, service) => { @@ -29,7 +29,7 @@ const ServiceSelect: FC = props => { } return acc; }, [] as string[]), - [services] + [services], ); const data = useMemo( @@ -43,22 +43,22 @@ const ServiceSelect: FC = props => { label: service.name, })), })), - [services, categories] + [services, categories], ); const handleOnChange = (value: string) => { if (isControlled) { props.onChange( services.find( - service => service.id.toString() === value - ) as ServiceSchema + service => service.id.toString() === value, + ) as ServiceSchema, ); return; } setInternalValue( services.find( - service => service.id.toString() === value - ) as ServiceSchema + service => service.id.toString() === value, + ) as ServiceSchema, ); }; useEffect(() => { diff --git a/src/pages/ServicesPage/components/ServicesTable/ServicesTable.tsx b/src/pages/ServicesPage/components/ServicesTable/ServicesTable.tsx index 0ae201f..1cb2e7b 100644 --- a/src/pages/ServicesPage/components/ServicesTable/ServicesTable.tsx +++ b/src/pages/ServicesPage/components/ServicesTable/ServicesTable.tsx @@ -36,7 +36,6 @@ const ServicesTable: FC = ({ }); const minRank = categoryRanks.sort()[0]; const maxRank = categoryRanks.sort()[categoryRanks.length - 1]; - console.log(minRank, maxRank); const onEditClick = (service: ServiceSchema) => { if (!onChange) return; @@ -185,7 +184,7 @@ const ServicesTable: FC = ({ }, enableRowActions: true, renderRowActions: ({ row }) => ( - + onEditClick(row.original)} diff --git a/src/pages/ServicesPage/components/ServicesTable/columns.tsx b/src/pages/ServicesPage/components/ServicesTable/columns.tsx index dc8e9b1..9fcf1cf 100644 --- a/src/pages/ServicesPage/components/ServicesTable/columns.tsx +++ b/src/pages/ServicesPage/components/ServicesTable/columns.tsx @@ -33,19 +33,23 @@ export const useServicesTableColumns = () => { header: "Услуга", enableGrouping: false, enableSorting: false, + Cell: ({ row, cell }) => { + return row.original.isPlaceholder ? "" : (cell.renderValue()); + }, }, { accessorKey: "price", header: "Цена", enableGrouping: false, enableSorting: false, - Cell: ({ row }) => getPriceRow(row.original), + Cell: ({ row }) => row.original.isPlaceholder ? "" : getPriceRow(row.original), }, { accessorKey: "cost", header: "Себестоимость", enableGrouping: false, enableSorting: false, + Cell: ({ row }) => row.original.isPlaceholder ? "" : `${row.original.cost}₽`, }, ], diff --git a/src/pages/ServicesPage/hooks/useServicesList.tsx b/src/pages/ServicesPage/hooks/useServicesList.tsx index 57ce771..7d832a6 100644 --- a/src/pages/ServicesPage/hooks/useServicesList.tsx +++ b/src/pages/ServicesPage/hooks/useServicesList.tsx @@ -1,10 +1,16 @@ import { useQuery } from "@tanstack/react-query"; import { ServiceService } from "../../../client"; -const useServicesList = () => { +type Props = { + withPlaceholders?: boolean; + +} +const useServicesList = (props: Props) => { + const { withPlaceholders = false } = props; + const { isPending, error, data, refetch } = useQuery({ - queryKey: ["getAllServices"], - queryFn: ServiceService.getAllServices, + queryKey: ["getAllServices", withPlaceholders], + queryFn: () => ServiceService.getAllServices({ withPlaceholders: withPlaceholders }), }); const services = isPending || error || !data ? [] : data.services; diff --git a/src/pages/ServicesPage/hooks/useServicesState.tsx b/src/pages/ServicesPage/hooks/useServicesState.tsx index 20370ff..9cfc0fb 100644 --- a/src/pages/ServicesPage/hooks/useServicesState.tsx +++ b/src/pages/ServicesPage/hooks/useServicesState.tsx @@ -9,7 +9,7 @@ import useServicesList from "./useServicesList.tsx"; import { Text } from "@mantine/core"; const useServicesState = () => { - const { services, refetch } = useServicesList(); + const { services, refetch } = useServicesList({ withPlaceholders: true }); const onCreateClick = () => { modals.openContextModal({ @@ -27,7 +27,7 @@ const useServicesState = () => { notifications.guess(ok, { message: message }); if (!ok) return; await refetch(); - } + }, ); }; @@ -45,7 +45,7 @@ const useServicesState = () => { ServiceService.createServiceCategory({ requestBody: { category: category }, }).then(({ ok, message }) => - notifications.guess(ok, { message: message }) + notifications.guess(ok, { message: message }), ); };