feat: crappy reordering

This commit is contained in:
2024-10-08 00:03:43 +03:00
parent 223ed0577a
commit dea1221016
6 changed files with 92 additions and 11 deletions

View File

@@ -198,6 +198,8 @@ export type { ServicePriceRangeSchema } from './models/ServicePriceRangeSchema';
export type { ServiceReorderRequest } from './models/ServiceReorderRequest';
export type { ServiceReorderResponse } from './models/ServiceReorderResponse';
export type { ServiceSchema } from './models/ServiceSchema';
export type { ServiceUpdateCategoryRequest } from './models/ServiceUpdateCategoryRequest';
export type { ServiceUpdateCategoryResponse } from './models/ServiceUpdateCategoryResponse';
export type { ServiceUpdateRequest } from './models/ServiceUpdateRequest';
export type { ServiceUpdateResponse } from './models/ServiceUpdateResponse';
export type { ShippingWarehouseSchema } from './models/ShippingWarehouseSchema';

View File

@@ -0,0 +1,9 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
import type { ServiceCategorySchema } from './ServiceCategorySchema';
export type ServiceUpdateCategoryRequest = {
category: ServiceCategorySchema;
};

View File

@@ -0,0 +1,9 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
export type ServiceUpdateCategoryResponse = {
ok: boolean;
message: string;
};

View File

@@ -23,6 +23,8 @@ import type { ServiceGetAllCategoriesResponse } from '../models/ServiceGetAllCat
import type { ServiceGetAllResponse } from '../models/ServiceGetAllResponse';
import type { ServiceReorderRequest } from '../models/ServiceReorderRequest';
import type { ServiceReorderResponse } from '../models/ServiceReorderResponse';
import type { ServiceUpdateCategoryRequest } from '../models/ServiceUpdateCategoryRequest';
import type { ServiceUpdateCategoryResponse } from '../models/ServiceUpdateCategoryResponse';
import type { ServiceUpdateRequest } from '../models/ServiceUpdateRequest';
import type { ServiceUpdateResponse } from '../models/ServiceUpdateResponse';
import type { UpdatePriceCategoryRequest } from '../models/UpdatePriceCategoryRequest';
@@ -155,6 +157,26 @@ export class ServiceService {
},
});
}
/**
* Update Category
* @returns ServiceUpdateCategoryResponse Successful Response
* @throws ApiError
*/
public static updateServiceCategory({
requestBody,
}: {
requestBody: ServiceUpdateCategoryRequest,
}): CancelablePromise<ServiceUpdateCategoryResponse> {
return __request(OpenAPI, {
method: 'POST',
url: '/service/categories/update',
body: requestBody,
mediaType: 'application/json',
errors: {
422: `Validation Error`,
},
});
}
/**
* Reorder Category
* @returns ServiceCategoryReorderResponse Successful Response

View File

@@ -150,6 +150,38 @@ const ServicesTable: FC<Props> = ({
);
},
},
"mrt-row-actions": {
AggregatedCell: ({ row }) => editMode && (
<Tooltip label={"Редактировать категорию"}>
<ActionIcon onClick={() => {
modals.openContextModal({
modal: "createServiceCategory",
title: "Создание категории",
withCloseButton: false,
innerProps: {
element: row.original.category,
onChange: newCategory => {
ServiceService.updateServiceCategory({ requestBody: { category: newCategory } }).then(({
ok,
message,
}) => {
notifications.guess(ok, { message });
if (!ok) return;
queryClient.invalidateQueries({
queryKey: ["getAllServices"],
}).then(() => {
});
},
);
},
},
});
}} variant={"default"}>
<IconEdit />
</ActionIcon>
</Tooltip>
),
},
},
enableRowActions: true,
renderRowActions: ({ row }) => (

View File

@@ -2,19 +2,18 @@ import { ServiceCategorySchema } from "../../../client";
import { Button, Flex, rem, TextInput } from "@mantine/core";
import { useForm } from "@mantine/form";
import { ContextModalProps } from "@mantine/modals";
import { CreateEditFormProps } from "../../ClientsPage/modals/BaseFormModal/BaseFormModal.tsx";
type Props = {
onCreate: (category: ServiceCategorySchema) => void;
};
type Props = CreateEditFormProps<ServiceCategorySchema>;
const CreateServiceCategoryModal = ({
context,
id,
innerProps,
}: ContextModalProps<Props>) => {
const isEditing = "onChange" in innerProps;
const initialValues = isEditing ? innerProps.element : { name: "" };
const form = useForm({
initialValues: {
name: "",
},
initialValues,
validate: {
name: name =>
name.trim() !== ""
@@ -23,7 +22,15 @@ const CreateServiceCategoryModal = ({
},
});
const onSubmit = (values: { name: string }) => {
innerProps.onCreate({ name: values.name, id: -1 });
if (isEditing) {
innerProps.onChange({ ...innerProps.element, ...values });
} else {
innerProps.onCreate({
...values,
dealServiceRank: "",
productServiceRank: "", id: -1,
});
}
context.closeContextModal(id);
};
const onCancelClick = () => {