mirror of
https://github.com/IRBorisov/ConceptPortal.git
synced 2025-06-26 13:00:39 +03:00
R: Unify naming convention for frontend APIs
This commit is contained in:
parent
12fffd0087
commit
6064da8008
|
@ -15,12 +15,12 @@ import {
|
||||||
type AccessPolicy,
|
type AccessPolicy,
|
||||||
type ICloneLibraryItemDTO,
|
type ICloneLibraryItemDTO,
|
||||||
type ICreateLibraryItemDTO,
|
type ICreateLibraryItemDTO,
|
||||||
|
type ICreateVersionDTO,
|
||||||
type ILibraryItem,
|
type ILibraryItem,
|
||||||
type IRenameLocationDTO,
|
type IRenameLocationDTO,
|
||||||
type IUpdateLibraryItemDTO,
|
type IUpdateLibraryItemDTO,
|
||||||
type IVersionCreateDTO,
|
type IUpdateVersionDTO,
|
||||||
type IVersionExInfo,
|
type IVersionExInfo,
|
||||||
type IVersionUpdateDTO,
|
|
||||||
schemaLibraryItem,
|
schemaLibraryItem,
|
||||||
schemaLibraryItemArray,
|
schemaLibraryItemArray,
|
||||||
schemaVersionExInfo
|
schemaVersionExInfo
|
||||||
|
@ -136,8 +136,8 @@ export const libraryApi = {
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
|
|
||||||
versionCreate: ({ itemID, data }: { itemID: number; data: IVersionCreateDTO }) =>
|
createVersion: ({ itemID, data }: { itemID: number; data: ICreateVersionDTO }) =>
|
||||||
axiosPost<IVersionCreateDTO, IVersionCreatedResponse>({
|
axiosPost<ICreateVersionDTO, IVersionCreatedResponse>({
|
||||||
schema: schemaVersionCreatedResponse,
|
schema: schemaVersionCreatedResponse,
|
||||||
endpoint: `/api/library/${itemID}/create-version`,
|
endpoint: `/api/library/${itemID}/create-version`,
|
||||||
request: {
|
request: {
|
||||||
|
@ -145,7 +145,7 @@ export const libraryApi = {
|
||||||
successMessage: infoMsg.newVersion(data.version)
|
successMessage: infoMsg.newVersion(data.version)
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
versionRestore: ({ versionID }: { versionID: number }) =>
|
restoreVersion: ({ versionID }: { versionID: number }) =>
|
||||||
axiosPatch<undefined, IRSFormDTO>({
|
axiosPatch<undefined, IRSFormDTO>({
|
||||||
schema: schemaRSForm,
|
schema: schemaRSForm,
|
||||||
endpoint: `/api/versions/${versionID}/restore`,
|
endpoint: `/api/versions/${versionID}/restore`,
|
||||||
|
@ -153,8 +153,8 @@ export const libraryApi = {
|
||||||
successMessage: infoMsg.versionRestored
|
successMessage: infoMsg.versionRestored
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
versionUpdate: (data: { itemID: number; version: IVersionUpdateDTO }) =>
|
updateVersion: (data: { itemID: number; version: IUpdateVersionDTO }) =>
|
||||||
axiosPatch<IVersionUpdateDTO, IVersionExInfo>({
|
axiosPatch<IUpdateVersionDTO, IVersionExInfo>({
|
||||||
schema: schemaVersionExInfo,
|
schema: schemaVersionExInfo,
|
||||||
endpoint: `/api/versions/${data.version.id}`,
|
endpoint: `/api/versions/${data.version.id}`,
|
||||||
request: {
|
request: {
|
||||||
|
@ -162,7 +162,7 @@ export const libraryApi = {
|
||||||
successMessage: infoMsg.changesSaved
|
successMessage: infoMsg.changesSaved
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
versionDelete: (data: { itemID: number; versionID: number }) =>
|
deleteVersion: (data: { itemID: number; versionID: number }) =>
|
||||||
axiosDelete({
|
axiosDelete({
|
||||||
endpoint: `/api/versions/${data.versionID}`,
|
endpoint: `/api/versions/${data.versionID}`,
|
||||||
request: {
|
request: {
|
||||||
|
|
|
@ -49,10 +49,10 @@ export type ICreateLibraryItemDTO = z.infer<typeof schemaCreateLibraryItem>;
|
||||||
export type IUpdateLibraryItemDTO = z.infer<typeof schemaUpdateLibraryItem>;
|
export type IUpdateLibraryItemDTO = z.infer<typeof schemaUpdateLibraryItem>;
|
||||||
|
|
||||||
/** Create version metadata in persistent storage. */
|
/** Create version metadata in persistent storage. */
|
||||||
export type IVersionCreateDTO = z.infer<typeof schemaVersionCreate>;
|
export type ICreateVersionDTO = z.infer<typeof schemaCreateVersion>;
|
||||||
|
|
||||||
/** Represents version data, intended to update version metadata in persistent storage. */
|
/** Represents version data, intended to update version metadata in persistent storage. */
|
||||||
export type IVersionUpdateDTO = z.infer<typeof schemaVersionUpdate>;
|
export type IUpdateVersionDTO = z.infer<typeof schemaUpdateVersion>;
|
||||||
|
|
||||||
// ======= SCHEMAS =========
|
// ======= SCHEMAS =========
|
||||||
export const schemaLibraryItemType = z.enum(Object.values(LibraryItemType) as [LibraryItemType, ...LibraryItemType[]]);
|
export const schemaLibraryItemType = z.enum(Object.values(LibraryItemType) as [LibraryItemType, ...LibraryItemType[]]);
|
||||||
|
@ -140,13 +140,13 @@ export const schemaVersionExInfo = schemaVersionInfo.extend({
|
||||||
item: z.number()
|
item: z.number()
|
||||||
});
|
});
|
||||||
|
|
||||||
export const schemaVersionUpdate = z.strictObject({
|
export const schemaUpdateVersion = z.strictObject({
|
||||||
id: z.number(),
|
id: z.number(),
|
||||||
version: z.string().nonempty(errorMsg.requiredField),
|
version: z.string().nonempty(errorMsg.requiredField),
|
||||||
description: z.string()
|
description: z.string()
|
||||||
});
|
});
|
||||||
|
|
||||||
export const schemaVersionCreate = z.strictObject({
|
export const schemaCreateVersion = z.strictObject({
|
||||||
version: z.string(),
|
version: z.string(),
|
||||||
description: z.string(),
|
description: z.string(),
|
||||||
items: z.array(z.number())
|
items: z.array(z.number())
|
||||||
|
|
|
@ -3,15 +3,15 @@ import { useMutation, useQueryClient } from '@tanstack/react-query';
|
||||||
import { KEYS } from '@/backend/configuration';
|
import { KEYS } from '@/backend/configuration';
|
||||||
|
|
||||||
import { libraryApi } from './api';
|
import { libraryApi } from './api';
|
||||||
import { type IVersionCreateDTO } from './types';
|
import { type ICreateVersionDTO } from './types';
|
||||||
import { useUpdateTimestamp } from './use-update-timestamp';
|
import { useUpdateTimestamp } from './use-update-timestamp';
|
||||||
|
|
||||||
export const useVersionCreate = () => {
|
export const useCreateVersion = () => {
|
||||||
const client = useQueryClient();
|
const client = useQueryClient();
|
||||||
const { updateTimestamp } = useUpdateTimestamp();
|
const { updateTimestamp } = useUpdateTimestamp();
|
||||||
const mutation = useMutation({
|
const mutation = useMutation({
|
||||||
mutationKey: [KEYS.global_mutation, libraryApi.baseKey, 'create-version'],
|
mutationKey: [KEYS.global_mutation, libraryApi.baseKey, 'create-version'],
|
||||||
mutationFn: libraryApi.versionCreate,
|
mutationFn: libraryApi.createVersion,
|
||||||
onSuccess: data => {
|
onSuccess: data => {
|
||||||
client.setQueryData(KEYS.composite.rsItem({ itemID: data.schema.id }), data.schema);
|
client.setQueryData(KEYS.composite.rsItem({ itemID: data.schema.id }), data.schema);
|
||||||
updateTimestamp(data.schema.id);
|
updateTimestamp(data.schema.id);
|
||||||
|
@ -19,7 +19,7 @@ export const useVersionCreate = () => {
|
||||||
onError: () => client.invalidateQueries()
|
onError: () => client.invalidateQueries()
|
||||||
});
|
});
|
||||||
return {
|
return {
|
||||||
versionCreate: (data: { itemID: number; data: IVersionCreateDTO }) =>
|
createVersion: (data: { itemID: number; data: ICreateVersionDTO }) =>
|
||||||
mutation.mutateAsync(data).then(response => response.version)
|
mutation.mutateAsync(data).then(response => response.version)
|
||||||
};
|
};
|
||||||
};
|
};
|
|
@ -6,11 +6,11 @@ import { KEYS } from '@/backend/configuration';
|
||||||
|
|
||||||
import { libraryApi } from './api';
|
import { libraryApi } from './api';
|
||||||
|
|
||||||
export const useVersionDelete = () => {
|
export const useDeleteVersion = () => {
|
||||||
const client = useQueryClient();
|
const client = useQueryClient();
|
||||||
const mutation = useMutation({
|
const mutation = useMutation({
|
||||||
mutationKey: [KEYS.global_mutation, libraryApi.baseKey, 'delete-version'],
|
mutationKey: [KEYS.global_mutation, libraryApi.baseKey, 'delete-version'],
|
||||||
mutationFn: libraryApi.versionDelete,
|
mutationFn: libraryApi.deleteVersion,
|
||||||
onSuccess: (_, variables) => {
|
onSuccess: (_, variables) => {
|
||||||
client.setQueryData(KEYS.composite.rsItem({ itemID: variables.itemID }), (prev: IRSFormDTO | undefined) =>
|
client.setQueryData(KEYS.composite.rsItem({ itemID: variables.itemID }), (prev: IRSFormDTO | undefined) =>
|
||||||
!prev
|
!prev
|
||||||
|
@ -24,6 +24,6 @@ export const useVersionDelete = () => {
|
||||||
onError: () => client.invalidateQueries()
|
onError: () => client.invalidateQueries()
|
||||||
});
|
});
|
||||||
return {
|
return {
|
||||||
versionDelete: (data: { itemID: number; versionID: number }) => mutation.mutateAsync(data)
|
deleteVersion: (data: { itemID: number; versionID: number }) => mutation.mutateAsync(data)
|
||||||
};
|
};
|
||||||
};
|
};
|
|
@ -4,11 +4,11 @@ import { KEYS } from '@/backend/configuration';
|
||||||
|
|
||||||
import { libraryApi } from './api';
|
import { libraryApi } from './api';
|
||||||
|
|
||||||
export const useVersionRestore = () => {
|
export const useRestoreVersion = () => {
|
||||||
const client = useQueryClient();
|
const client = useQueryClient();
|
||||||
const mutation = useMutation({
|
const mutation = useMutation({
|
||||||
mutationKey: [KEYS.global_mutation, libraryApi.baseKey, 'restore-version'],
|
mutationKey: [KEYS.global_mutation, libraryApi.baseKey, 'restore-version'],
|
||||||
mutationFn: libraryApi.versionRestore,
|
mutationFn: libraryApi.restoreVersion,
|
||||||
onSuccess: data => {
|
onSuccess: data => {
|
||||||
client.setQueryData(KEYS.composite.rsItem({ itemID: data.id }), data);
|
client.setQueryData(KEYS.composite.rsItem({ itemID: data.id }), data);
|
||||||
return client.invalidateQueries({ queryKey: [libraryApi.baseKey] });
|
return client.invalidateQueries({ queryKey: [libraryApi.baseKey] });
|
||||||
|
@ -16,6 +16,6 @@ export const useVersionRestore = () => {
|
||||||
onError: () => client.invalidateQueries()
|
onError: () => client.invalidateQueries()
|
||||||
});
|
});
|
||||||
return {
|
return {
|
||||||
versionRestore: (data: { versionID: number }) => mutation.mutateAsync(data)
|
restoreVersion: (data: { versionID: number }) => mutation.mutateAsync(data)
|
||||||
};
|
};
|
||||||
};
|
};
|
|
@ -5,13 +5,13 @@ import { type IRSFormDTO } from '@/features/rsform';
|
||||||
import { KEYS } from '@/backend/configuration';
|
import { KEYS } from '@/backend/configuration';
|
||||||
|
|
||||||
import { libraryApi } from './api';
|
import { libraryApi } from './api';
|
||||||
import { type IVersionUpdateDTO } from './types';
|
import { type IUpdateVersionDTO } from './types';
|
||||||
|
|
||||||
export const useVersionUpdate = () => {
|
export const useUpdateVersion = () => {
|
||||||
const client = useQueryClient();
|
const client = useQueryClient();
|
||||||
const mutation = useMutation({
|
const mutation = useMutation({
|
||||||
mutationKey: [KEYS.global_mutation, libraryApi.baseKey, 'update-version'],
|
mutationKey: [KEYS.global_mutation, libraryApi.baseKey, 'update-version'],
|
||||||
mutationFn: libraryApi.versionUpdate,
|
mutationFn: libraryApi.updateVersion,
|
||||||
onSuccess: (data, variables) => {
|
onSuccess: (data, variables) => {
|
||||||
client.setQueryData(KEYS.composite.rsItem({ itemID: variables.itemID }), (prev: IRSFormDTO | undefined) =>
|
client.setQueryData(KEYS.composite.rsItem({ itemID: variables.itemID }), (prev: IRSFormDTO | undefined) =>
|
||||||
!prev
|
!prev
|
||||||
|
@ -41,6 +41,6 @@ export const useVersionUpdate = () => {
|
||||||
onError: () => client.invalidateQueries()
|
onError: () => client.invalidateQueries()
|
||||||
});
|
});
|
||||||
return {
|
return {
|
||||||
versionUpdate: (data: { itemID: number; version: IVersionUpdateDTO }) => mutation.mutateAsync(data)
|
updateVersion: (data: { itemID: number; version: IUpdateVersionDTO }) => mutation.mutateAsync(data)
|
||||||
};
|
};
|
||||||
};
|
};
|
|
@ -8,8 +8,8 @@ import { ModalForm } from '@/components/modal';
|
||||||
import { useDialogsStore } from '@/stores/dialogs';
|
import { useDialogsStore } from '@/stores/dialogs';
|
||||||
import { errorMsg } from '@/utils/labels';
|
import { errorMsg } from '@/utils/labels';
|
||||||
|
|
||||||
import { type IVersionCreateDTO, type IVersionInfo, schemaVersionCreate } from '../backend/types';
|
import { type ICreateVersionDTO, type IVersionInfo, schemaCreateVersion } from '../backend/types';
|
||||||
import { useVersionCreate } from '../backend/use-version-create';
|
import { useCreateVersion } from '../backend/use-create-version';
|
||||||
import { nextVersion } from '../models/library-api';
|
import { nextVersion } from '../models/library-api';
|
||||||
|
|
||||||
export interface DlgCreateVersionProps {
|
export interface DlgCreateVersionProps {
|
||||||
|
@ -24,10 +24,10 @@ export function DlgCreateVersion() {
|
||||||
const { itemID, versions, selected, totalCount, onCreate } = useDialogsStore(
|
const { itemID, versions, selected, totalCount, onCreate } = useDialogsStore(
|
||||||
state => state.props as DlgCreateVersionProps
|
state => state.props as DlgCreateVersionProps
|
||||||
);
|
);
|
||||||
const { versionCreate } = useVersionCreate();
|
const { createVersion: versionCreate } = useCreateVersion();
|
||||||
|
|
||||||
const { register, handleSubmit, control } = useForm<IVersionCreateDTO>({
|
const { register, handleSubmit, control } = useForm<ICreateVersionDTO>({
|
||||||
resolver: zodResolver(schemaVersionCreate),
|
resolver: zodResolver(schemaCreateVersion),
|
||||||
defaultValues: {
|
defaultValues: {
|
||||||
version: versions.length > 0 ? nextVersion(versions[versions.length - 1].version) : '1.0.0',
|
version: versions.length > 0 ? nextVersion(versions[versions.length - 1].version) : '1.0.0',
|
||||||
description: '',
|
description: '',
|
||||||
|
@ -37,7 +37,7 @@ export function DlgCreateVersion() {
|
||||||
const version = useWatch({ control, name: 'version' });
|
const version = useWatch({ control, name: 'version' });
|
||||||
const canSubmit = !versions.find(ver => ver.version === version);
|
const canSubmit = !versions.find(ver => ver.version === version);
|
||||||
|
|
||||||
function onSubmit(data: IVersionCreateDTO) {
|
function onSubmit(data: ICreateVersionDTO) {
|
||||||
return versionCreate({ itemID, data }).then(onCreate);
|
return versionCreate({ itemID, data }).then(onCreate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,10 +14,10 @@ import { ModalView } from '@/components/modal';
|
||||||
import { useDialogsStore } from '@/stores/dialogs';
|
import { useDialogsStore } from '@/stores/dialogs';
|
||||||
import { errorMsg } from '@/utils/labels';
|
import { errorMsg } from '@/utils/labels';
|
||||||
|
|
||||||
import { type IVersionUpdateDTO, schemaVersionUpdate } from '../../backend/types';
|
import { type IUpdateVersionDTO, schemaUpdateVersion } from '../../backend/types';
|
||||||
|
import { useDeleteVersion } from '../../backend/use-delete-version';
|
||||||
import { useMutatingLibrary } from '../../backend/use-mutating-library';
|
import { useMutatingLibrary } from '../../backend/use-mutating-library';
|
||||||
import { useVersionDelete } from '../../backend/use-version-delete';
|
import { useUpdateVersion } from '../../backend/use-update-version';
|
||||||
import { useVersionUpdate } from '../../backend/use-version-update';
|
|
||||||
|
|
||||||
import { TableVersions } from './table-versions';
|
import { TableVersions } from './table-versions';
|
||||||
|
|
||||||
|
@ -31,8 +31,8 @@ export function DlgEditVersions() {
|
||||||
const hideDialog = useDialogsStore(state => state.hideDialog);
|
const hideDialog = useDialogsStore(state => state.hideDialog);
|
||||||
const { schema } = useRSFormSuspense({ itemID });
|
const { schema } = useRSFormSuspense({ itemID });
|
||||||
const isProcessing = useMutatingLibrary();
|
const isProcessing = useMutatingLibrary();
|
||||||
const { versionDelete } = useVersionDelete();
|
const { deleteVersion: versionDelete } = useDeleteVersion();
|
||||||
const { versionUpdate } = useVersionUpdate();
|
const { updateVersion: versionUpdate } = useUpdateVersion();
|
||||||
|
|
||||||
const {
|
const {
|
||||||
register,
|
register,
|
||||||
|
@ -40,8 +40,8 @@ export function DlgEditVersions() {
|
||||||
control,
|
control,
|
||||||
reset,
|
reset,
|
||||||
formState: { isDirty, errors: formErrors }
|
formState: { isDirty, errors: formErrors }
|
||||||
} = useForm<IVersionUpdateDTO>({
|
} = useForm<IUpdateVersionDTO>({
|
||||||
resolver: zodResolver(schemaVersionUpdate),
|
resolver: zodResolver(schemaUpdateVersion),
|
||||||
defaultValues: {
|
defaultValues: {
|
||||||
id: schema.versions[schema.versions.length - 1].id,
|
id: schema.versions[schema.versions.length - 1].id,
|
||||||
version: schema.versions[schema.versions.length - 1].version,
|
version: schema.versions[schema.versions.length - 1].version,
|
||||||
|
@ -77,7 +77,7 @@ export function DlgEditVersions() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function onUpdate(data: IVersionUpdateDTO) {
|
function onUpdate(data: IUpdateVersionDTO) {
|
||||||
if (!isDirty || isProcessing || !isValid) {
|
if (!isDirty || isProcessing || !isValid) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,16 +6,16 @@ import { infoMsg } from '@/utils/labels';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
type IConstituentaReference,
|
type IConstituentaReference,
|
||||||
type ICstRelocateDTO,
|
type ICreateOperationDTO,
|
||||||
|
type IDeleteOperationDTO,
|
||||||
type IInputCreatedResponse,
|
type IInputCreatedResponse,
|
||||||
type IInputUpdateDTO,
|
|
||||||
type IOperationCreatedResponse,
|
type IOperationCreatedResponse,
|
||||||
type IOperationCreateDTO,
|
|
||||||
type IOperationDeleteDTO,
|
|
||||||
type IOperationSchemaDTO,
|
type IOperationSchemaDTO,
|
||||||
type IOperationUpdateDTO,
|
|
||||||
type IOssLayout,
|
type IOssLayout,
|
||||||
|
type IRelocateConstituentsDTO,
|
||||||
type ITargetOperation,
|
type ITargetOperation,
|
||||||
|
type IUpdateInputDTO,
|
||||||
|
type IUpdateOperationDTO,
|
||||||
schemaConstituentaReference,
|
schemaConstituentaReference,
|
||||||
schemaInputCreatedResponse,
|
schemaInputCreatedResponse,
|
||||||
schemaOperationCreatedResponse,
|
schemaOperationCreatedResponse,
|
||||||
|
@ -49,8 +49,8 @@ export const ossApi = {
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
|
|
||||||
operationCreate: ({ itemID, data }: { itemID: number; data: IOperationCreateDTO }) =>
|
createOperation: ({ itemID, data }: { itemID: number; data: ICreateOperationDTO }) =>
|
||||||
axiosPost<IOperationCreateDTO, IOperationCreatedResponse>({
|
axiosPost<ICreateOperationDTO, IOperationCreatedResponse>({
|
||||||
schema: schemaOperationCreatedResponse,
|
schema: schemaOperationCreatedResponse,
|
||||||
endpoint: `/api/oss/${itemID}/create-operation`,
|
endpoint: `/api/oss/${itemID}/create-operation`,
|
||||||
request: {
|
request: {
|
||||||
|
@ -58,8 +58,8 @@ export const ossApi = {
|
||||||
successMessage: response => infoMsg.newOperation(response.new_operation.alias)
|
successMessage: response => infoMsg.newOperation(response.new_operation.alias)
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
operationDelete: ({ itemID, data }: { itemID: number; data: IOperationDeleteDTO }) =>
|
deleteOperation: ({ itemID, data }: { itemID: number; data: IDeleteOperationDTO }) =>
|
||||||
axiosPatch<IOperationDeleteDTO, IOperationSchemaDTO>({
|
axiosPatch<IDeleteOperationDTO, IOperationSchemaDTO>({
|
||||||
schema: schemaOperationSchema,
|
schema: schemaOperationSchema,
|
||||||
endpoint: `/api/oss/${itemID}/delete-operation`,
|
endpoint: `/api/oss/${itemID}/delete-operation`,
|
||||||
request: {
|
request: {
|
||||||
|
@ -67,7 +67,7 @@ export const ossApi = {
|
||||||
successMessage: infoMsg.operationDestroyed
|
successMessage: infoMsg.operationDestroyed
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
inputCreate: ({ itemID, data }: { itemID: number; data: ITargetOperation }) =>
|
createInput: ({ itemID, data }: { itemID: number; data: ITargetOperation }) =>
|
||||||
axiosPatch<ITargetOperation, IInputCreatedResponse>({
|
axiosPatch<ITargetOperation, IInputCreatedResponse>({
|
||||||
schema: schemaInputCreatedResponse,
|
schema: schemaInputCreatedResponse,
|
||||||
endpoint: `/api/oss/${itemID}/create-input`,
|
endpoint: `/api/oss/${itemID}/create-input`,
|
||||||
|
@ -76,8 +76,8 @@ export const ossApi = {
|
||||||
successMessage: infoMsg.newLibraryItem
|
successMessage: infoMsg.newLibraryItem
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
inputUpdate: ({ itemID, data }: { itemID: number; data: IInputUpdateDTO }) =>
|
updateInput: ({ itemID, data }: { itemID: number; data: IUpdateInputDTO }) =>
|
||||||
axiosPatch<IInputUpdateDTO, IOperationSchemaDTO>({
|
axiosPatch<IUpdateInputDTO, IOperationSchemaDTO>({
|
||||||
schema: schemaOperationSchema,
|
schema: schemaOperationSchema,
|
||||||
endpoint: `/api/oss/${itemID}/set-input`,
|
endpoint: `/api/oss/${itemID}/set-input`,
|
||||||
request: {
|
request: {
|
||||||
|
@ -85,8 +85,8 @@ export const ossApi = {
|
||||||
successMessage: infoMsg.changesSaved
|
successMessage: infoMsg.changesSaved
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
operationUpdate: ({ itemID, data }: { itemID: number; data: IOperationUpdateDTO }) =>
|
updateOperation: ({ itemID, data }: { itemID: number; data: IUpdateOperationDTO }) =>
|
||||||
axiosPatch<IOperationUpdateDTO, IOperationSchemaDTO>({
|
axiosPatch<IUpdateOperationDTO, IOperationSchemaDTO>({
|
||||||
schema: schemaOperationSchema,
|
schema: schemaOperationSchema,
|
||||||
endpoint: `/api/oss/${itemID}/update-operation`,
|
endpoint: `/api/oss/${itemID}/update-operation`,
|
||||||
request: {
|
request: {
|
||||||
|
@ -94,7 +94,7 @@ export const ossApi = {
|
||||||
successMessage: infoMsg.changesSaved
|
successMessage: infoMsg.changesSaved
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
operationExecute: ({ itemID, data }: { itemID: number; data: ITargetOperation }) =>
|
executeOperation: ({ itemID, data }: { itemID: number; data: ITargetOperation }) =>
|
||||||
axiosPost<ITargetOperation, IOperationSchemaDTO>({
|
axiosPost<ITargetOperation, IOperationSchemaDTO>({
|
||||||
schema: schemaOperationSchema,
|
schema: schemaOperationSchema,
|
||||||
endpoint: `/api/oss/${itemID}/execute-operation`,
|
endpoint: `/api/oss/${itemID}/execute-operation`,
|
||||||
|
@ -104,8 +104,8 @@ export const ossApi = {
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
|
|
||||||
relocateConstituents: (data: ICstRelocateDTO) =>
|
relocateConstituents: (data: IRelocateConstituentsDTO) =>
|
||||||
axiosPost<ICstRelocateDTO, IOperationSchemaDTO>({
|
axiosPost<IRelocateConstituentsDTO, IOperationSchemaDTO>({
|
||||||
schema: schemaOperationSchema,
|
schema: schemaOperationSchema,
|
||||||
endpoint: `/api/oss/relocate-constituents`,
|
endpoint: `/api/oss/relocate-constituents`,
|
||||||
request: {
|
request: {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { z } from 'zod';
|
import { z } from 'zod';
|
||||||
|
|
||||||
import { schemaLibraryItem } from '@/features/library/backend/types';
|
import { schemaLibraryItem } from '@/features/library/backend/types';
|
||||||
import { schemaCstSubstitute } from '@/features/rsform/backend/types';
|
import { schemaSubstituteConstituents } from '@/features/rsform/backend/types';
|
||||||
|
|
||||||
import { errorMsg } from '@/utils/labels';
|
import { errorMsg } from '@/utils/labels';
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ export type IOperationSchemaDTO = z.infer<typeof schemaOperationSchema>;
|
||||||
export type IOssLayout = z.infer<typeof schemaOssLayout>;
|
export type IOssLayout = z.infer<typeof schemaOssLayout>;
|
||||||
|
|
||||||
/** Represents {@link IOperation} data, used in creation process. */
|
/** Represents {@link IOperation} data, used in creation process. */
|
||||||
export type IOperationCreateDTO = z.infer<typeof schemaOperationCreate>;
|
export type ICreateOperationDTO = z.infer<typeof schemaCreateOperation>;
|
||||||
|
|
||||||
/** Represents data response when creating {@link IOperation}. */
|
/** Represents data response when creating {@link IOperation}. */
|
||||||
export type IOperationCreatedResponse = z.infer<typeof schemaOperationCreatedResponse>;
|
export type IOperationCreatedResponse = z.infer<typeof schemaOperationCreatedResponse>;
|
||||||
|
@ -41,19 +41,19 @@ export interface ITargetOperation {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Represents {@link IOperation} data, used in destruction process. */
|
/** Represents {@link IOperation} data, used in destruction process. */
|
||||||
export type IOperationDeleteDTO = z.infer<typeof schemaOperationDelete>;
|
export type IDeleteOperationDTO = z.infer<typeof schemaDeleteOperation>;
|
||||||
|
|
||||||
/** Represents data response when creating {@link IRSForm} for Input {@link IOperation}. */
|
/** Represents data response when creating {@link IRSForm} for Input {@link IOperation}. */
|
||||||
export type IInputCreatedResponse = z.infer<typeof schemaInputCreatedResponse>;
|
export type IInputCreatedResponse = z.infer<typeof schemaInputCreatedResponse>;
|
||||||
|
|
||||||
/** Represents {@link IOperation} data, used in setInput process. */
|
/** Represents {@link IOperation} data, used in setInput process. */
|
||||||
export type IInputUpdateDTO = z.infer<typeof schemaInputUpdate>;
|
export type IUpdateInputDTO = z.infer<typeof schemaUpdateInput>;
|
||||||
|
|
||||||
/** Represents {@link IOperation} data, used in update process. */
|
/** Represents {@link IOperation} data, used in update process. */
|
||||||
export type IOperationUpdateDTO = z.infer<typeof schemaOperationUpdate>;
|
export type IUpdateOperationDTO = z.infer<typeof schemaUpdateOperation>;
|
||||||
|
|
||||||
/** Represents data, used relocating {@link IConstituenta}s between {@link ILibraryItem}s. */
|
/** Represents data, used relocating {@link IConstituenta}s between {@link ILibraryItem}s. */
|
||||||
export type ICstRelocateDTO = z.infer<typeof schemaCstRelocate>;
|
export type IRelocateConstituentsDTO = z.infer<typeof schemaRelocateConstituents>;
|
||||||
|
|
||||||
/** Represents {@link IConstituenta} reference. */
|
/** Represents {@link IConstituenta} reference. */
|
||||||
export type IConstituentaReference = z.infer<typeof schemaConstituentaReference>;
|
export type IConstituentaReference = z.infer<typeof schemaConstituentaReference>;
|
||||||
|
@ -80,7 +80,7 @@ export const schemaBlock = z.strictObject({
|
||||||
parent: z.number().nullable()
|
parent: z.number().nullable()
|
||||||
});
|
});
|
||||||
|
|
||||||
export const schemaCstSubstituteInfo = schemaCstSubstitute.extend({
|
export const schemaCstSubstituteInfo = schemaSubstituteConstituents.extend({
|
||||||
operation: z.number(),
|
operation: z.number(),
|
||||||
original_alias: z.string(),
|
original_alias: z.string(),
|
||||||
original_term: z.string(),
|
original_term: z.string(),
|
||||||
|
@ -121,7 +121,7 @@ export const schemaOperationSchema = schemaLibraryItem.extend({
|
||||||
substitutions: z.array(schemaCstSubstituteInfo)
|
substitutions: z.array(schemaCstSubstituteInfo)
|
||||||
});
|
});
|
||||||
|
|
||||||
export const schemaOperationCreate = z.strictObject({
|
export const schemaCreateOperation = z.strictObject({
|
||||||
layout: schemaOssLayout,
|
layout: schemaOssLayout,
|
||||||
item_data: z.strictObject({
|
item_data: z.strictObject({
|
||||||
alias: z.string().nonempty(),
|
alias: z.string().nonempty(),
|
||||||
|
@ -142,14 +142,14 @@ export const schemaOperationCreatedResponse = z.strictObject({
|
||||||
oss: schemaOperationSchema
|
oss: schemaOperationSchema
|
||||||
});
|
});
|
||||||
|
|
||||||
export const schemaOperationDelete = z.strictObject({
|
export const schemaDeleteOperation = z.strictObject({
|
||||||
target: z.number(),
|
target: z.number(),
|
||||||
layout: schemaOssLayout,
|
layout: schemaOssLayout,
|
||||||
keep_constituents: z.boolean(),
|
keep_constituents: z.boolean(),
|
||||||
delete_schema: z.boolean()
|
delete_schema: z.boolean()
|
||||||
});
|
});
|
||||||
|
|
||||||
export const schemaInputUpdate = z.strictObject({
|
export const schemaUpdateInput = z.strictObject({
|
||||||
target: z.number(),
|
target: z.number(),
|
||||||
layout: schemaOssLayout,
|
layout: schemaOssLayout,
|
||||||
input: z.number().nullable()
|
input: z.number().nullable()
|
||||||
|
@ -160,7 +160,7 @@ export const schemaInputCreatedResponse = z.strictObject({
|
||||||
oss: schemaOperationSchema
|
oss: schemaOperationSchema
|
||||||
});
|
});
|
||||||
|
|
||||||
export const schemaOperationUpdate = z.strictObject({
|
export const schemaUpdateOperation = z.strictObject({
|
||||||
target: z.number(),
|
target: z.number(),
|
||||||
layout: schemaOssLayout,
|
layout: schemaOssLayout,
|
||||||
item_data: z.strictObject({
|
item_data: z.strictObject({
|
||||||
|
@ -169,10 +169,10 @@ export const schemaOperationUpdate = z.strictObject({
|
||||||
description: z.string()
|
description: z.string()
|
||||||
}),
|
}),
|
||||||
arguments: z.array(z.number()),
|
arguments: z.array(z.number()),
|
||||||
substitutions: z.array(schemaCstSubstitute)
|
substitutions: z.array(schemaSubstituteConstituents)
|
||||||
});
|
});
|
||||||
|
|
||||||
export const schemaCstRelocate = z.strictObject({
|
export const schemaRelocateConstituents = z.strictObject({
|
||||||
destination: z.number().nullable(),
|
destination: z.number().nullable(),
|
||||||
items: z.array(z.number()).refine(data => data.length > 0)
|
items: z.array(z.number()).refine(data => data.length > 0)
|
||||||
});
|
});
|
||||||
|
|
|
@ -5,11 +5,11 @@ import { KEYS } from '@/backend/configuration';
|
||||||
import { ossApi } from './api';
|
import { ossApi } from './api';
|
||||||
import { type ITargetOperation } from './types';
|
import { type ITargetOperation } from './types';
|
||||||
|
|
||||||
export const useInputCreate = () => {
|
export const useCreateInput = () => {
|
||||||
const client = useQueryClient();
|
const client = useQueryClient();
|
||||||
const mutation = useMutation({
|
const mutation = useMutation({
|
||||||
mutationKey: [KEYS.global_mutation, ossApi.baseKey, 'input-create'],
|
mutationKey: [KEYS.global_mutation, ossApi.baseKey, 'input-create'],
|
||||||
mutationFn: ossApi.inputCreate,
|
mutationFn: ossApi.createInput,
|
||||||
onSuccess: data => {
|
onSuccess: data => {
|
||||||
client.setQueryData(ossApi.getOssQueryOptions({ itemID: data.oss.id }).queryKey, data.oss);
|
client.setQueryData(ossApi.getOssQueryOptions({ itemID: data.oss.id }).queryKey, data.oss);
|
||||||
return Promise.allSettled([
|
return Promise.allSettled([
|
||||||
|
@ -20,7 +20,7 @@ export const useInputCreate = () => {
|
||||||
onError: () => client.invalidateQueries()
|
onError: () => client.invalidateQueries()
|
||||||
});
|
});
|
||||||
return {
|
return {
|
||||||
inputCreate: (data: { itemID: number; data: ITargetOperation }) =>
|
createInput: (data: { itemID: number; data: ITargetOperation }) =>
|
||||||
mutation.mutateAsync(data).then(response => response.new_schema)
|
mutation.mutateAsync(data).then(response => response.new_schema)
|
||||||
};
|
};
|
||||||
};
|
};
|
|
@ -5,14 +5,14 @@ import { useUpdateTimestamp } from '@/features/library/backend/use-update-timest
|
||||||
import { KEYS } from '@/backend/configuration';
|
import { KEYS } from '@/backend/configuration';
|
||||||
|
|
||||||
import { ossApi } from './api';
|
import { ossApi } from './api';
|
||||||
import { type IOperationCreateDTO } from './types';
|
import { type ICreateOperationDTO } from './types';
|
||||||
|
|
||||||
export const useOperationCreate = () => {
|
export const useCreateOperation = () => {
|
||||||
const client = useQueryClient();
|
const client = useQueryClient();
|
||||||
const { updateTimestamp } = useUpdateTimestamp();
|
const { updateTimestamp } = useUpdateTimestamp();
|
||||||
const mutation = useMutation({
|
const mutation = useMutation({
|
||||||
mutationKey: [KEYS.global_mutation, ossApi.baseKey, 'operation-create'],
|
mutationKey: [KEYS.global_mutation, ossApi.baseKey, 'operation-create'],
|
||||||
mutationFn: ossApi.operationCreate,
|
mutationFn: ossApi.createOperation,
|
||||||
onSuccess: response => {
|
onSuccess: response => {
|
||||||
client.setQueryData(ossApi.getOssQueryOptions({ itemID: response.oss.id }).queryKey, response.oss);
|
client.setQueryData(ossApi.getOssQueryOptions({ itemID: response.oss.id }).queryKey, response.oss);
|
||||||
updateTimestamp(response.oss.id);
|
updateTimestamp(response.oss.id);
|
||||||
|
@ -20,6 +20,6 @@ export const useOperationCreate = () => {
|
||||||
onError: () => client.invalidateQueries()
|
onError: () => client.invalidateQueries()
|
||||||
});
|
});
|
||||||
return {
|
return {
|
||||||
operationCreate: (data: { itemID: number; data: IOperationCreateDTO }) => mutation.mutateAsync(data)
|
createOperation: (data: { itemID: number; data: ICreateOperationDTO }) => mutation.mutateAsync(data)
|
||||||
};
|
};
|
||||||
};
|
};
|
|
@ -3,13 +3,13 @@ import { useMutation, useQueryClient } from '@tanstack/react-query';
|
||||||
import { KEYS } from '@/backend/configuration';
|
import { KEYS } from '@/backend/configuration';
|
||||||
|
|
||||||
import { ossApi } from './api';
|
import { ossApi } from './api';
|
||||||
import { type IOperationDeleteDTO } from './types';
|
import { type IDeleteOperationDTO } from './types';
|
||||||
|
|
||||||
export const useOperationDelete = () => {
|
export const useDeleteOperation = () => {
|
||||||
const client = useQueryClient();
|
const client = useQueryClient();
|
||||||
const mutation = useMutation({
|
const mutation = useMutation({
|
||||||
mutationKey: [KEYS.global_mutation, ossApi.baseKey, 'operation-delete'],
|
mutationKey: [KEYS.global_mutation, ossApi.baseKey, 'operation-delete'],
|
||||||
mutationFn: ossApi.operationDelete,
|
mutationFn: ossApi.deleteOperation,
|
||||||
onSuccess: data => {
|
onSuccess: data => {
|
||||||
client.setQueryData(ossApi.getOssQueryOptions({ itemID: data.id }).queryKey, data);
|
client.setQueryData(ossApi.getOssQueryOptions({ itemID: data.id }).queryKey, data);
|
||||||
return Promise.allSettled([
|
return Promise.allSettled([
|
||||||
|
@ -20,6 +20,6 @@ export const useOperationDelete = () => {
|
||||||
onError: () => client.invalidateQueries()
|
onError: () => client.invalidateQueries()
|
||||||
});
|
});
|
||||||
return {
|
return {
|
||||||
operationDelete: (data: { itemID: number; data: IOperationDeleteDTO }) => mutation.mutateAsync(data)
|
deleteOperation: (data: { itemID: number; data: IDeleteOperationDTO }) => mutation.mutateAsync(data)
|
||||||
};
|
};
|
||||||
};
|
};
|
|
@ -5,11 +5,11 @@ import { KEYS } from '@/backend/configuration';
|
||||||
import { ossApi } from './api';
|
import { ossApi } from './api';
|
||||||
import { type ITargetOperation } from './types';
|
import { type ITargetOperation } from './types';
|
||||||
|
|
||||||
export const useOperationExecute = () => {
|
export const useExecuteOperation = () => {
|
||||||
const client = useQueryClient();
|
const client = useQueryClient();
|
||||||
const mutation = useMutation({
|
const mutation = useMutation({
|
||||||
mutationKey: [KEYS.global_mutation, ossApi.baseKey, 'operation-execute'],
|
mutationKey: [KEYS.global_mutation, ossApi.baseKey, 'operation-execute'],
|
||||||
mutationFn: ossApi.operationExecute,
|
mutationFn: ossApi.executeOperation,
|
||||||
onSuccess: data => {
|
onSuccess: data => {
|
||||||
client.setQueryData(ossApi.getOssQueryOptions({ itemID: data.id }).queryKey, data);
|
client.setQueryData(ossApi.getOssQueryOptions({ itemID: data.id }).queryKey, data);
|
||||||
return Promise.allSettled([
|
return Promise.allSettled([
|
||||||
|
@ -20,6 +20,6 @@ export const useOperationExecute = () => {
|
||||||
onError: () => client.invalidateQueries()
|
onError: () => client.invalidateQueries()
|
||||||
});
|
});
|
||||||
return {
|
return {
|
||||||
operationExecute: (data: { itemID: number; data: ITargetOperation }) => mutation.mutateAsync(data)
|
executeOperation: (data: { itemID: number; data: ITargetOperation }) => mutation.mutateAsync(data)
|
||||||
};
|
};
|
||||||
};
|
};
|
|
@ -3,7 +3,7 @@ import { useMutation, useQueryClient } from '@tanstack/react-query';
|
||||||
import { KEYS } from '@/backend/configuration';
|
import { KEYS } from '@/backend/configuration';
|
||||||
|
|
||||||
import { ossApi } from './api';
|
import { ossApi } from './api';
|
||||||
import { type ICstRelocateDTO } from './types';
|
import { type IRelocateConstituentsDTO } from './types';
|
||||||
|
|
||||||
export const useRelocateConstituents = () => {
|
export const useRelocateConstituents = () => {
|
||||||
const client = useQueryClient();
|
const client = useQueryClient();
|
||||||
|
@ -20,6 +20,6 @@ export const useRelocateConstituents = () => {
|
||||||
onError: () => client.invalidateQueries()
|
onError: () => client.invalidateQueries()
|
||||||
});
|
});
|
||||||
return {
|
return {
|
||||||
relocateConstituents: (data: ICstRelocateDTO) => mutation.mutateAsync(data)
|
relocateConstituents: (data: IRelocateConstituentsDTO) => mutation.mutateAsync(data)
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -3,13 +3,13 @@ import { useMutation, useQueryClient } from '@tanstack/react-query';
|
||||||
import { KEYS } from '@/backend/configuration';
|
import { KEYS } from '@/backend/configuration';
|
||||||
|
|
||||||
import { ossApi } from './api';
|
import { ossApi } from './api';
|
||||||
import { type IInputUpdateDTO } from './types';
|
import { type IUpdateInputDTO } from './types';
|
||||||
|
|
||||||
export const useInputUpdate = () => {
|
export const useUpdateInput = () => {
|
||||||
const client = useQueryClient();
|
const client = useQueryClient();
|
||||||
const mutation = useMutation({
|
const mutation = useMutation({
|
||||||
mutationKey: [KEYS.global_mutation, ossApi.baseKey, 'input-update'],
|
mutationKey: [KEYS.global_mutation, ossApi.baseKey, 'input-update'],
|
||||||
mutationFn: ossApi.inputUpdate,
|
mutationFn: ossApi.updateInput,
|
||||||
onSuccess: data => {
|
onSuccess: data => {
|
||||||
client.setQueryData(ossApi.getOssQueryOptions({ itemID: data.id }).queryKey, data);
|
client.setQueryData(ossApi.getOssQueryOptions({ itemID: data.id }).queryKey, data);
|
||||||
return Promise.allSettled([
|
return Promise.allSettled([
|
||||||
|
@ -20,6 +20,6 @@ export const useInputUpdate = () => {
|
||||||
onError: () => client.invalidateQueries()
|
onError: () => client.invalidateQueries()
|
||||||
});
|
});
|
||||||
return {
|
return {
|
||||||
inputUpdate: (data: { itemID: number; data: IInputUpdateDTO }) => mutation.mutateAsync(data)
|
updateInput: (data: { itemID: number; data: IUpdateInputDTO }) => mutation.mutateAsync(data)
|
||||||
};
|
};
|
||||||
};
|
};
|
|
@ -5,13 +5,13 @@ import { type ILibraryItem } from '@/features/library';
|
||||||
import { KEYS } from '@/backend/configuration';
|
import { KEYS } from '@/backend/configuration';
|
||||||
|
|
||||||
import { ossApi } from './api';
|
import { ossApi } from './api';
|
||||||
import { type IOperationUpdateDTO } from './types';
|
import { type IUpdateOperationDTO } from './types';
|
||||||
|
|
||||||
export const useOperationUpdate = () => {
|
export const useUpdateOperation = () => {
|
||||||
const client = useQueryClient();
|
const client = useQueryClient();
|
||||||
const mutation = useMutation({
|
const mutation = useMutation({
|
||||||
mutationKey: [KEYS.global_mutation, ossApi.baseKey, 'operation-update'],
|
mutationKey: [KEYS.global_mutation, ossApi.baseKey, 'operation-update'],
|
||||||
mutationFn: ossApi.operationUpdate,
|
mutationFn: ossApi.updateOperation,
|
||||||
onSuccess: (data, variables) => {
|
onSuccess: (data, variables) => {
|
||||||
client.setQueryData(KEYS.composite.ossItem({ itemID: data.id }), data);
|
client.setQueryData(KEYS.composite.ossItem({ itemID: data.id }), data);
|
||||||
const schemaID = data.operations.find(item => item.id === variables.data.target)?.result;
|
const schemaID = data.operations.find(item => item.id === variables.data.target)?.result;
|
||||||
|
@ -32,6 +32,6 @@ export const useOperationUpdate = () => {
|
||||||
onError: () => client.invalidateQueries()
|
onError: () => client.invalidateQueries()
|
||||||
});
|
});
|
||||||
return {
|
return {
|
||||||
operationUpdate: (data: { itemID: number; data: IOperationUpdateDTO }) => mutation.mutateAsync(data)
|
updateOperation: (data: { itemID: number; data: IUpdateOperationDTO }) => mutation.mutateAsync(data)
|
||||||
};
|
};
|
||||||
};
|
};
|
|
@ -13,8 +13,8 @@ import { Label } from '@/components/input';
|
||||||
import { ModalForm } from '@/components/modal';
|
import { ModalForm } from '@/components/modal';
|
||||||
import { useDialogsStore } from '@/stores/dialogs';
|
import { useDialogsStore } from '@/stores/dialogs';
|
||||||
|
|
||||||
import { type IInputUpdateDTO, type IOssLayout, schemaInputUpdate } from '../backend/types';
|
import { type IOssLayout, type IUpdateInputDTO, schemaUpdateInput } from '../backend/types';
|
||||||
import { useInputUpdate } from '../backend/use-input-update';
|
import { useUpdateInput } from '../backend/use-update-input';
|
||||||
import { type IOperation, type IOperationSchema } from '../models/oss';
|
import { type IOperation, type IOperationSchema } from '../models/oss';
|
||||||
import { sortItemsForOSS } from '../models/oss-api';
|
import { sortItemsForOSS } from '../models/oss-api';
|
||||||
|
|
||||||
|
@ -26,10 +26,10 @@ export interface DlgChangeInputSchemaProps {
|
||||||
|
|
||||||
export function DlgChangeInputSchema() {
|
export function DlgChangeInputSchema() {
|
||||||
const { oss, target, layout } = useDialogsStore(state => state.props as DlgChangeInputSchemaProps);
|
const { oss, target, layout } = useDialogsStore(state => state.props as DlgChangeInputSchemaProps);
|
||||||
const { inputUpdate } = useInputUpdate();
|
const { updateInput: inputUpdate } = useUpdateInput();
|
||||||
|
|
||||||
const { setValue, handleSubmit, control } = useForm<IInputUpdateDTO>({
|
const { setValue, handleSubmit, control } = useForm<IUpdateInputDTO>({
|
||||||
resolver: zodResolver(schemaInputUpdate),
|
resolver: zodResolver(schemaUpdateInput),
|
||||||
defaultValues: {
|
defaultValues: {
|
||||||
target: target.id,
|
target: target.id,
|
||||||
layout: layout,
|
layout: layout,
|
||||||
|
@ -44,7 +44,7 @@ export function DlgChangeInputSchema() {
|
||||||
return !oss.schemas.includes(item.id) || item.id === target.result;
|
return !oss.schemas.includes(item.id) || item.id === target.result;
|
||||||
}
|
}
|
||||||
|
|
||||||
function onSubmit(data: IInputUpdateDTO) {
|
function onSubmit(data: IUpdateInputDTO) {
|
||||||
return inputUpdate({ itemID: oss.id, data: data });
|
return inputUpdate({ itemID: oss.id, data: data });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,8 +10,8 @@ import { ModalForm } from '@/components/modal';
|
||||||
import { TabLabel, TabList, TabPanel, Tabs } from '@/components/tabs';
|
import { TabLabel, TabList, TabPanel, Tabs } from '@/components/tabs';
|
||||||
import { useDialogsStore } from '@/stores/dialogs';
|
import { useDialogsStore } from '@/stores/dialogs';
|
||||||
|
|
||||||
import { type IOperationCreateDTO, type IOssLayout, OperationType, schemaOperationCreate } from '../../backend/types';
|
import { type ICreateOperationDTO, type IOssLayout, OperationType, schemaCreateOperation } from '../../backend/types';
|
||||||
import { useOperationCreate } from '../../backend/use-operation-create';
|
import { useCreateOperation } from '../../backend/use-create-operation';
|
||||||
import { describeOperationType, labelOperationType } from '../../labels';
|
import { describeOperationType, labelOperationType } from '../../labels';
|
||||||
import { type IOperationSchema } from '../../models/oss';
|
import { type IOperationSchema } from '../../models/oss';
|
||||||
import { calculateInsertPosition } from '../../models/oss-api';
|
import { calculateInsertPosition } from '../../models/oss-api';
|
||||||
|
@ -35,14 +35,14 @@ export const TabID = {
|
||||||
export type TabID = (typeof TabID)[keyof typeof TabID];
|
export type TabID = (typeof TabID)[keyof typeof TabID];
|
||||||
|
|
||||||
export function DlgCreateOperation() {
|
export function DlgCreateOperation() {
|
||||||
const { operationCreate } = useOperationCreate();
|
const { createOperation: operationCreate } = useCreateOperation();
|
||||||
|
|
||||||
const { oss, layout, initialInputs, onCreate, defaultX, defaultY } = useDialogsStore(
|
const { oss, layout, initialInputs, onCreate, defaultX, defaultY } = useDialogsStore(
|
||||||
state => state.props as DlgCreateOperationProps
|
state => state.props as DlgCreateOperationProps
|
||||||
);
|
);
|
||||||
|
|
||||||
const methods = useForm<IOperationCreateDTO>({
|
const methods = useForm<ICreateOperationDTO>({
|
||||||
resolver: zodResolver(schemaOperationCreate),
|
resolver: zodResolver(schemaCreateOperation),
|
||||||
defaultValues: {
|
defaultValues: {
|
||||||
item_data: {
|
item_data: {
|
||||||
operation_type: initialInputs.length === 0 ? OperationType.INPUT : OperationType.SYNTHESIS,
|
operation_type: initialInputs.length === 0 ? OperationType.INPUT : OperationType.SYNTHESIS,
|
||||||
|
@ -64,7 +64,7 @@ export function DlgCreateOperation() {
|
||||||
const [activeTab, setActiveTab] = useState(initialInputs.length === 0 ? TabID.INPUT : TabID.SYNTHESIS);
|
const [activeTab, setActiveTab] = useState(initialInputs.length === 0 ? TabID.INPUT : TabID.SYNTHESIS);
|
||||||
const isValid = !!alias && !oss.operations.some(operation => operation.alias === alias);
|
const isValid = !!alias && !oss.operations.some(operation => operation.alias === alias);
|
||||||
|
|
||||||
function onSubmit(data: IOperationCreateDTO) {
|
function onSubmit(data: ICreateOperationDTO) {
|
||||||
const target = calculateInsertPosition(oss, data.arguments, layout, {
|
const target = calculateInsertPosition(oss, data.arguments, layout, {
|
||||||
x: defaultX,
|
x: defaultX,
|
||||||
y: defaultY
|
y: defaultY
|
||||||
|
|
|
@ -11,7 +11,7 @@ import { IconReset } from '@/components/icons';
|
||||||
import { Checkbox, Label, TextArea, TextInput } from '@/components/input';
|
import { Checkbox, Label, TextArea, TextInput } from '@/components/input';
|
||||||
import { useDialogsStore } from '@/stores/dialogs';
|
import { useDialogsStore } from '@/stores/dialogs';
|
||||||
|
|
||||||
import { type IOperationCreateDTO } from '../../backend/types';
|
import { type ICreateOperationDTO } from '../../backend/types';
|
||||||
import { sortItemsForOSS } from '../../models/oss-api';
|
import { sortItemsForOSS } from '../../models/oss-api';
|
||||||
|
|
||||||
import { type DlgCreateOperationProps } from './dlg-create-operation';
|
import { type DlgCreateOperationProps } from './dlg-create-operation';
|
||||||
|
@ -26,7 +26,7 @@ export function TabInputOperation() {
|
||||||
control,
|
control,
|
||||||
setValue,
|
setValue,
|
||||||
formState: { errors }
|
formState: { errors }
|
||||||
} = useFormContext<IOperationCreateDTO>();
|
} = useFormContext<ICreateOperationDTO>();
|
||||||
const createSchema = useWatch({ control, name: 'create_schema' });
|
const createSchema = useWatch({ control, name: 'create_schema' });
|
||||||
|
|
||||||
function baseFilter(item: ILibraryItem) {
|
function baseFilter(item: ILibraryItem) {
|
||||||
|
|
|
@ -3,7 +3,7 @@ import { Controller, useFormContext, useWatch } from 'react-hook-form';
|
||||||
import { Label, TextArea, TextInput } from '@/components/input';
|
import { Label, TextArea, TextInput } from '@/components/input';
|
||||||
import { useDialogsStore } from '@/stores/dialogs';
|
import { useDialogsStore } from '@/stores/dialogs';
|
||||||
|
|
||||||
import { type IOperationCreateDTO } from '../../backend/types';
|
import { type ICreateOperationDTO } from '../../backend/types';
|
||||||
import { PickMultiOperation } from '../../components/pick-multi-operation';
|
import { PickMultiOperation } from '../../components/pick-multi-operation';
|
||||||
|
|
||||||
import { type DlgCreateOperationProps } from './dlg-create-operation';
|
import { type DlgCreateOperationProps } from './dlg-create-operation';
|
||||||
|
@ -14,7 +14,7 @@ export function TabSynthesisOperation() {
|
||||||
register,
|
register,
|
||||||
control,
|
control,
|
||||||
formState: { errors }
|
formState: { errors }
|
||||||
} = useFormContext<IOperationCreateDTO>();
|
} = useFormContext<ICreateOperationDTO>();
|
||||||
const inputs = useWatch({ control, name: 'arguments' });
|
const inputs = useWatch({ control, name: 'arguments' });
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
|
@ -9,8 +9,8 @@ import { Checkbox, TextInput } from '@/components/input';
|
||||||
import { ModalForm } from '@/components/modal';
|
import { ModalForm } from '@/components/modal';
|
||||||
import { useDialogsStore } from '@/stores/dialogs';
|
import { useDialogsStore } from '@/stores/dialogs';
|
||||||
|
|
||||||
import { type IOperationDeleteDTO, type IOssLayout, schemaOperationDelete } from '../backend/types';
|
import { type IDeleteOperationDTO, type IOssLayout, schemaDeleteOperation } from '../backend/types';
|
||||||
import { useOperationDelete } from '../backend/use-operation-delete';
|
import { useDeleteOperation } from '../backend/use-delete-operation';
|
||||||
import { type IOperation, type IOperationSchema } from '../models/oss';
|
import { type IOperation, type IOperationSchema } from '../models/oss';
|
||||||
|
|
||||||
export interface DlgDeleteOperationProps {
|
export interface DlgDeleteOperationProps {
|
||||||
|
@ -21,10 +21,10 @@ export interface DlgDeleteOperationProps {
|
||||||
|
|
||||||
export function DlgDeleteOperation() {
|
export function DlgDeleteOperation() {
|
||||||
const { oss, target, layout } = useDialogsStore(state => state.props as DlgDeleteOperationProps);
|
const { oss, target, layout } = useDialogsStore(state => state.props as DlgDeleteOperationProps);
|
||||||
const { operationDelete } = useOperationDelete();
|
const { deleteOperation: operationDelete } = useDeleteOperation();
|
||||||
|
|
||||||
const { handleSubmit, control } = useForm<IOperationDeleteDTO>({
|
const { handleSubmit, control } = useForm<IDeleteOperationDTO>({
|
||||||
resolver: zodResolver(schemaOperationDelete),
|
resolver: zodResolver(schemaDeleteOperation),
|
||||||
defaultValues: {
|
defaultValues: {
|
||||||
target: target.id,
|
target: target.id,
|
||||||
layout: layout,
|
layout: layout,
|
||||||
|
@ -33,7 +33,7 @@ export function DlgDeleteOperation() {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
function onSubmit(data: IOperationDeleteDTO) {
|
function onSubmit(data: IDeleteOperationDTO) {
|
||||||
return operationDelete({ itemID: oss.id, data: data });
|
return operationDelete({ itemID: oss.id, data: data });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,8 +11,8 @@ import { ModalForm } from '@/components/modal';
|
||||||
import { TabLabel, TabList, TabPanel, Tabs } from '@/components/tabs';
|
import { TabLabel, TabList, TabPanel, Tabs } from '@/components/tabs';
|
||||||
import { useDialogsStore } from '@/stores/dialogs';
|
import { useDialogsStore } from '@/stores/dialogs';
|
||||||
|
|
||||||
import { type IOperationUpdateDTO, type IOssLayout, OperationType, schemaOperationUpdate } from '../../backend/types';
|
import { type IOssLayout, type IUpdateOperationDTO, OperationType, schemaUpdateOperation } from '../../backend/types';
|
||||||
import { useOperationUpdate } from '../../backend/use-operation-update';
|
import { useUpdateOperation } from '../../backend/use-update-operation';
|
||||||
import { type IOperation, type IOperationSchema } from '../../models/oss';
|
import { type IOperation, type IOperationSchema } from '../../models/oss';
|
||||||
|
|
||||||
import { TabArguments } from './tab-arguments';
|
import { TabArguments } from './tab-arguments';
|
||||||
|
@ -34,10 +34,10 @@ export type TabID = (typeof TabID)[keyof typeof TabID];
|
||||||
|
|
||||||
export function DlgEditOperation() {
|
export function DlgEditOperation() {
|
||||||
const { oss, target, layout } = useDialogsStore(state => state.props as DlgEditOperationProps);
|
const { oss, target, layout } = useDialogsStore(state => state.props as DlgEditOperationProps);
|
||||||
const { operationUpdate } = useOperationUpdate();
|
const { updateOperation: operationUpdate } = useUpdateOperation();
|
||||||
|
|
||||||
const methods = useForm<IOperationUpdateDTO>({
|
const methods = useForm<IUpdateOperationDTO>({
|
||||||
resolver: zodResolver(schemaOperationUpdate),
|
resolver: zodResolver(schemaUpdateOperation),
|
||||||
defaultValues: {
|
defaultValues: {
|
||||||
target: target.id,
|
target: target.id,
|
||||||
item_data: {
|
item_data: {
|
||||||
|
@ -56,7 +56,7 @@ export function DlgEditOperation() {
|
||||||
});
|
});
|
||||||
const [activeTab, setActiveTab] = useState<TabID>(TabID.CARD);
|
const [activeTab, setActiveTab] = useState<TabID>(TabID.CARD);
|
||||||
|
|
||||||
function onSubmit(data: IOperationUpdateDTO) {
|
function onSubmit(data: IUpdateOperationDTO) {
|
||||||
return operationUpdate({ itemID: oss.id, data });
|
return operationUpdate({ itemID: oss.id, data });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,13 +4,13 @@ import { Controller, useFormContext } from 'react-hook-form';
|
||||||
import { Label } from '@/components/input';
|
import { Label } from '@/components/input';
|
||||||
import { useDialogsStore } from '@/stores/dialogs';
|
import { useDialogsStore } from '@/stores/dialogs';
|
||||||
|
|
||||||
import { type IOperationUpdateDTO } from '../../backend/types';
|
import { type IUpdateOperationDTO } from '../../backend/types';
|
||||||
import { PickMultiOperation } from '../../components/pick-multi-operation';
|
import { PickMultiOperation } from '../../components/pick-multi-operation';
|
||||||
|
|
||||||
import { type DlgEditOperationProps } from './dlg-edit-operation';
|
import { type DlgEditOperationProps } from './dlg-edit-operation';
|
||||||
|
|
||||||
export function TabArguments() {
|
export function TabArguments() {
|
||||||
const { control, setValue } = useFormContext<IOperationUpdateDTO>();
|
const { control, setValue } = useFormContext<IUpdateOperationDTO>();
|
||||||
const { oss, target } = useDialogsStore(state => state.props as DlgEditOperationProps);
|
const { oss, target } = useDialogsStore(state => state.props as DlgEditOperationProps);
|
||||||
const potentialCycle = [target.id, ...oss.graph.expandAllOutputs([target.id])];
|
const potentialCycle = [target.id, ...oss.graph.expandAllOutputs([target.id])];
|
||||||
const filtered = oss.operations.filter(item => !potentialCycle.includes(item.id));
|
const filtered = oss.operations.filter(item => !potentialCycle.includes(item.id));
|
||||||
|
|
|
@ -2,13 +2,13 @@ import { useFormContext } from 'react-hook-form';
|
||||||
|
|
||||||
import { TextArea, TextInput } from '@/components/input';
|
import { TextArea, TextInput } from '@/components/input';
|
||||||
|
|
||||||
import { type IOperationUpdateDTO } from '../../backend/types';
|
import { type IUpdateOperationDTO } from '../../backend/types';
|
||||||
|
|
||||||
export function TabOperation() {
|
export function TabOperation() {
|
||||||
const {
|
const {
|
||||||
register,
|
register,
|
||||||
formState: { errors }
|
formState: { errors }
|
||||||
} = useFormContext<IOperationUpdateDTO>();
|
} = useFormContext<IUpdateOperationDTO>();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='cc-fade-in cc-column'>
|
<div className='cc-fade-in cc-column'>
|
||||||
|
|
|
@ -8,14 +8,14 @@ import { PickSubstitutions } from '@/features/rsform/components';
|
||||||
import { TextArea } from '@/components/input';
|
import { TextArea } from '@/components/input';
|
||||||
import { useDialogsStore } from '@/stores/dialogs';
|
import { useDialogsStore } from '@/stores/dialogs';
|
||||||
|
|
||||||
import { type IOperationUpdateDTO } from '../../backend/types';
|
import { type IUpdateOperationDTO } from '../../backend/types';
|
||||||
import { SubstitutionValidator } from '../../models/oss-api';
|
import { SubstitutionValidator } from '../../models/oss-api';
|
||||||
|
|
||||||
import { type DlgEditOperationProps } from './dlg-edit-operation';
|
import { type DlgEditOperationProps } from './dlg-edit-operation';
|
||||||
|
|
||||||
export function TabSynthesis() {
|
export function TabSynthesis() {
|
||||||
const { oss } = useDialogsStore(state => state.props as DlgEditOperationProps);
|
const { oss } = useDialogsStore(state => state.props as DlgEditOperationProps);
|
||||||
const { control } = useFormContext<IOperationUpdateDTO>();
|
const { control } = useFormContext<IUpdateOperationDTO>();
|
||||||
const inputs = useWatch({ control, name: 'arguments' });
|
const inputs = useWatch({ control, name: 'arguments' });
|
||||||
const substitutions = useWatch({ control, name: 'substitutions' });
|
const substitutions = useWatch({ control, name: 'substitutions' });
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ import { Loader } from '@/components/loader';
|
||||||
import { ModalForm } from '@/components/modal';
|
import { ModalForm } from '@/components/modal';
|
||||||
import { useDialogsStore } from '@/stores/dialogs';
|
import { useDialogsStore } from '@/stores/dialogs';
|
||||||
|
|
||||||
import { type ICstRelocateDTO, type IOssLayout, schemaCstRelocate } from '../backend/types';
|
import { type IOssLayout, type IRelocateConstituentsDTO, schemaRelocateConstituents } from '../backend/types';
|
||||||
import { useRelocateConstituents } from '../backend/use-relocate-constituents';
|
import { useRelocateConstituents } from '../backend/use-relocate-constituents';
|
||||||
import { useUpdateLayout } from '../backend/use-update-layout';
|
import { useUpdateLayout } from '../backend/use-update-layout';
|
||||||
import { IconRelocationUp } from '../components/icon-relocation-up';
|
import { IconRelocationUp } from '../components/icon-relocation-up';
|
||||||
|
@ -40,8 +40,8 @@ export function DlgRelocateConstituents() {
|
||||||
control,
|
control,
|
||||||
setValue,
|
setValue,
|
||||||
formState: { isValid }
|
formState: { isValid }
|
||||||
} = useForm<ICstRelocateDTO>({
|
} = useForm<IRelocateConstituentsDTO>({
|
||||||
resolver: zodResolver(schemaCstRelocate),
|
resolver: zodResolver(schemaRelocateConstituents),
|
||||||
defaultValues: {
|
defaultValues: {
|
||||||
items: []
|
items: []
|
||||||
},
|
},
|
||||||
|
@ -97,7 +97,7 @@ export function DlgRelocateConstituents() {
|
||||||
setValue('items', []);
|
setValue('items', []);
|
||||||
}
|
}
|
||||||
|
|
||||||
function onSubmit(data: ICstRelocateDTO) {
|
function onSubmit(data: IRelocateConstituentsDTO) {
|
||||||
if (!layout || JSON.stringify(layout) === JSON.stringify(oss.layout)) {
|
if (!layout || JSON.stringify(layout) === JSON.stringify(oss.layout)) {
|
||||||
return relocateConstituents(data);
|
return relocateConstituents(data);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -5,8 +5,8 @@ import { toast } from 'react-toastify';
|
||||||
|
|
||||||
import { urls, useConceptNavigation } from '@/app';
|
import { urls, useConceptNavigation } from '@/app';
|
||||||
import { useLibrary } from '@/features/library/backend/use-library';
|
import { useLibrary } from '@/features/library/backend/use-library';
|
||||||
import { useInputCreate } from '@/features/oss/backend/use-input-create';
|
import { useCreateInput } from '@/features/oss/backend/use-create-input';
|
||||||
import { useOperationExecute } from '@/features/oss/backend/use-operation-execute';
|
import { useExecuteOperation } from '@/features/oss/backend/use-execute-operation';
|
||||||
|
|
||||||
import { Dropdown, DropdownButton } from '@/components/dropdown';
|
import { Dropdown, DropdownButton } from '@/components/dropdown';
|
||||||
import {
|
import {
|
||||||
|
@ -51,8 +51,8 @@ export function NodeContextMenu({ isOpen, operation, cursorX, cursorY, onHide }:
|
||||||
const isProcessing = useMutatingOss();
|
const isProcessing = useMutatingOss();
|
||||||
const getLayout = useGetLayout();
|
const getLayout = useGetLayout();
|
||||||
|
|
||||||
const { inputCreate } = useInputCreate();
|
const { createInput: inputCreate } = useCreateInput();
|
||||||
const { operationExecute } = useOperationExecute();
|
const { executeOperation: operationExecute } = useExecuteOperation();
|
||||||
|
|
||||||
const showEditInput = useDialogsStore(state => state.showChangeInputSchema);
|
const showEditInput = useDialogsStore(state => state.showChangeInputSchema);
|
||||||
const showRelocateConstituents = useDialogsStore(state => state.showRelocateConstituents);
|
const showRelocateConstituents = useDialogsStore(state => state.showRelocateConstituents);
|
||||||
|
|
|
@ -4,7 +4,7 @@ import { useReactFlow } from 'reactflow';
|
||||||
|
|
||||||
import { HelpTopic } from '@/features/help';
|
import { HelpTopic } from '@/features/help';
|
||||||
import { BadgeHelp } from '@/features/help/components';
|
import { BadgeHelp } from '@/features/help/components';
|
||||||
import { useOperationExecute } from '@/features/oss/backend/use-operation-execute';
|
import { useExecuteOperation } from '@/features/oss/backend/use-execute-operation';
|
||||||
import { useUpdateLayout } from '@/features/oss/backend/use-update-layout';
|
import { useUpdateLayout } from '@/features/oss/backend/use-update-layout';
|
||||||
|
|
||||||
import { MiniButton } from '@/components/control';
|
import { MiniButton } from '@/components/control';
|
||||||
|
@ -63,7 +63,7 @@ export function ToolbarOssGraph({
|
||||||
const toggleEdgeStraight = useOSSGraphStore(state => state.toggleEdgeStraight);
|
const toggleEdgeStraight = useOSSGraphStore(state => state.toggleEdgeStraight);
|
||||||
|
|
||||||
const { updateLayout: updatePositions } = useUpdateLayout();
|
const { updateLayout: updatePositions } = useUpdateLayout();
|
||||||
const { operationExecute } = useOperationExecute();
|
const { executeOperation: operationExecute } = useExecuteOperation();
|
||||||
|
|
||||||
const showEditOperation = useDialogsStore(state => state.showEditOperation);
|
const showEditOperation = useDialogsStore(state => state.showEditOperation);
|
||||||
|
|
||||||
|
|
|
@ -7,20 +7,20 @@ import { infoMsg } from '@/utils/labels';
|
||||||
import {
|
import {
|
||||||
type ICheckConstituentaDTO,
|
type ICheckConstituentaDTO,
|
||||||
type IConstituentaBasicsDTO,
|
type IConstituentaBasicsDTO,
|
||||||
|
type IConstituentaCreatedResponse,
|
||||||
type IConstituentaList,
|
type IConstituentaList,
|
||||||
type ICstCreatedResponse,
|
type ICreateConstituentaDTO,
|
||||||
type ICstCreateDTO,
|
|
||||||
type ICstMoveDTO,
|
|
||||||
type ICstRenameDTO,
|
|
||||||
type ICstSubstitutionsDTO,
|
|
||||||
type ICstUpdateDTO,
|
|
||||||
type IExpressionParseDTO,
|
type IExpressionParseDTO,
|
||||||
type IInlineSynthesisDTO,
|
type IInlineSynthesisDTO,
|
||||||
|
type IMoveConstituentsDTO,
|
||||||
type IProduceStructureResponse,
|
type IProduceStructureResponse,
|
||||||
|
type IRenameConstituentaDTO,
|
||||||
type IRSFormDTO,
|
type IRSFormDTO,
|
||||||
type IRSFormUploadDTO,
|
type IRSFormUploadDTO,
|
||||||
|
type ISubstitutionsDTO,
|
||||||
|
type IUpdateConstituentaDTO,
|
||||||
schemaConstituentaBasics,
|
schemaConstituentaBasics,
|
||||||
schemaCstCreatedResponse,
|
schemaConstituentaCreatedResponse,
|
||||||
schemaExpressionParse,
|
schemaExpressionParse,
|
||||||
schemaProduceStructureResponse,
|
schemaProduceStructureResponse,
|
||||||
schemaRSForm
|
schemaRSForm
|
||||||
|
@ -64,17 +64,17 @@ export const rsformsApi = {
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
|
|
||||||
cstCreate: ({ itemID, data }: { itemID: number; data: ICstCreateDTO }) =>
|
createConstituenta: ({ itemID, data }: { itemID: number; data: ICreateConstituentaDTO }) =>
|
||||||
axiosPost<ICstCreateDTO, ICstCreatedResponse>({
|
axiosPost<ICreateConstituentaDTO, IConstituentaCreatedResponse>({
|
||||||
schema: schemaCstCreatedResponse,
|
schema: schemaConstituentaCreatedResponse,
|
||||||
endpoint: `/api/rsforms/${itemID}/create-cst`,
|
endpoint: `/api/rsforms/${itemID}/create-cst`,
|
||||||
request: {
|
request: {
|
||||||
data: data,
|
data: data,
|
||||||
successMessage: response => infoMsg.newConstituent(response.new_cst.alias)
|
successMessage: response => infoMsg.newConstituent(response.new_cst.alias)
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
cstUpdate: ({ itemID, data }: { itemID: number; data: ICstUpdateDTO }) =>
|
updateConstituenta: ({ itemID, data }: { itemID: number; data: IUpdateConstituentaDTO }) =>
|
||||||
axiosPatch<ICstUpdateDTO, IConstituentaBasicsDTO>({
|
axiosPatch<IUpdateConstituentaDTO, IConstituentaBasicsDTO>({
|
||||||
schema: schemaConstituentaBasics,
|
schema: schemaConstituentaBasics,
|
||||||
endpoint: `/api/rsforms/${itemID}/update-cst`,
|
endpoint: `/api/rsforms/${itemID}/update-cst`,
|
||||||
request: {
|
request: {
|
||||||
|
@ -82,7 +82,7 @@ export const rsformsApi = {
|
||||||
successMessage: infoMsg.changesSaved
|
successMessage: infoMsg.changesSaved
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
cstDelete: ({ itemID, data }: { itemID: number; data: IConstituentaList }) =>
|
deleteConstituents: ({ itemID, data }: { itemID: number; data: IConstituentaList }) =>
|
||||||
axiosPatch<IConstituentaList, IRSFormDTO>({
|
axiosPatch<IConstituentaList, IRSFormDTO>({
|
||||||
schema: schemaRSForm,
|
schema: schemaRSForm,
|
||||||
endpoint: `/api/rsforms/${itemID}/delete-multiple-cst`,
|
endpoint: `/api/rsforms/${itemID}/delete-multiple-cst`,
|
||||||
|
@ -91,17 +91,17 @@ export const rsformsApi = {
|
||||||
successMessage: infoMsg.constituentsDestroyed(data.items.length)
|
successMessage: infoMsg.constituentsDestroyed(data.items.length)
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
cstRename: ({ itemID, data }: { itemID: number; data: ICstRenameDTO }) =>
|
renameConstituenta: ({ itemID, data }: { itemID: number; data: IRenameConstituentaDTO }) =>
|
||||||
axiosPatch<ICstRenameDTO, ICstCreatedResponse>({
|
axiosPatch<IRenameConstituentaDTO, IConstituentaCreatedResponse>({
|
||||||
schema: schemaCstCreatedResponse,
|
schema: schemaConstituentaCreatedResponse,
|
||||||
endpoint: `/api/rsforms/${itemID}/rename-cst`,
|
endpoint: `/api/rsforms/${itemID}/rename-cst`,
|
||||||
request: {
|
request: {
|
||||||
data: data,
|
data: data,
|
||||||
successMessage: infoMsg.changesSaved
|
successMessage: infoMsg.changesSaved
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
cstSubstitute: ({ itemID, data }: { itemID: number; data: ICstSubstitutionsDTO }) =>
|
substituteConstituents: ({ itemID, data }: { itemID: number; data: ISubstitutionsDTO }) =>
|
||||||
axiosPatch<ICstSubstitutionsDTO, IRSFormDTO>({
|
axiosPatch<ISubstitutionsDTO, IRSFormDTO>({
|
||||||
schema: schemaRSForm,
|
schema: schemaRSForm,
|
||||||
endpoint: `/api/rsforms/${itemID}/substitute`,
|
endpoint: `/api/rsforms/${itemID}/substitute`,
|
||||||
request: {
|
request: {
|
||||||
|
@ -109,8 +109,8 @@ export const rsformsApi = {
|
||||||
successMessage: infoMsg.substituteSingle
|
successMessage: infoMsg.substituteSingle
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
cstMove: ({ itemID, data }: { itemID: number; data: ICstMoveDTO }) =>
|
moveConstituents: ({ itemID, data }: { itemID: number; data: IMoveConstituentsDTO }) =>
|
||||||
axiosPatch<ICstMoveDTO, IRSFormDTO>({
|
axiosPatch<IMoveConstituentsDTO, IRSFormDTO>({
|
||||||
schema: schemaRSForm,
|
schema: schemaRSForm,
|
||||||
endpoint: `/api/rsforms/${itemID}/move-cst`,
|
endpoint: `/api/rsforms/${itemID}/move-cst`,
|
||||||
request: { data: data }
|
request: { data: data }
|
||||||
|
|
|
@ -56,19 +56,19 @@ export interface IRSFormUploadDTO {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Represents {@link IConstituenta} data, used in creation process. */
|
/** Represents {@link IConstituenta} data, used in creation process. */
|
||||||
export type ICstCreateDTO = z.infer<typeof schemaCstCreate>;
|
export type ICreateConstituentaDTO = z.infer<typeof schemaCreateConstituenta>;
|
||||||
|
|
||||||
/** Represents data response when creating {@link IConstituenta}. */
|
/** Represents data response when creating {@link IConstituenta}. */
|
||||||
export type ICstCreatedResponse = z.infer<typeof schemaCstCreatedResponse>;
|
export type IConstituentaCreatedResponse = z.infer<typeof schemaConstituentaCreatedResponse>;
|
||||||
|
|
||||||
/** Represents data, used in updating persistent attributes in {@link IConstituenta}. */
|
/** Represents data, used in updating persistent attributes in {@link IConstituenta}. */
|
||||||
export type ICstUpdateDTO = z.infer<typeof schemaCstUpdate>;
|
export type IUpdateConstituentaDTO = z.infer<typeof schemaUpdateConstituenta>;
|
||||||
|
|
||||||
/** Represents data, used in renaming {@link IConstituenta}. */
|
/** Represents data, used in renaming {@link IConstituenta}. */
|
||||||
export type ICstRenameDTO = z.infer<typeof schemaCstRename>;
|
export type IRenameConstituentaDTO = z.infer<typeof schemaRenameConstituenta>;
|
||||||
|
|
||||||
/** Represents data, used in ordering a list of {@link IConstituenta}. */
|
/** Represents data, used in ordering a list of {@link IConstituenta}. */
|
||||||
export interface ICstMoveDTO {
|
export interface IMoveConstituentsDTO {
|
||||||
items: number[];
|
items: number[];
|
||||||
move_to: number; // Note: 0-base index
|
move_to: number; // Note: 0-base index
|
||||||
}
|
}
|
||||||
|
@ -77,7 +77,7 @@ export interface ICstMoveDTO {
|
||||||
export type IProduceStructureResponse = z.infer<typeof schemaProduceStructureResponse>;
|
export type IProduceStructureResponse = z.infer<typeof schemaProduceStructureResponse>;
|
||||||
|
|
||||||
/** Represents data, used in merging single {@link IConstituenta}. */
|
/** Represents data, used in merging single {@link IConstituenta}. */
|
||||||
export type ICstSubstitute = z.infer<typeof schemaCstSubstitute>;
|
export type ISubstituteConstituents = z.infer<typeof schemaSubstituteConstituents>;
|
||||||
|
|
||||||
/** Represents input data for inline synthesis. */
|
/** Represents input data for inline synthesis. */
|
||||||
export type IInlineSynthesisDTO = z.infer<typeof schemaInlineSynthesis>;
|
export type IInlineSynthesisDTO = z.infer<typeof schemaInlineSynthesis>;
|
||||||
|
@ -90,7 +90,7 @@ export interface ICheckConstituentaDTO {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Represents data, used in merging multiple {@link IConstituenta}. */
|
/** Represents data, used in merging multiple {@link IConstituenta}. */
|
||||||
export type ICstSubstitutionsDTO = z.infer<typeof schemaCstSubstitutions>;
|
export type ISubstitutionsDTO = z.infer<typeof schemaSubstitutions>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents Constituenta list.
|
* Represents Constituenta list.
|
||||||
|
@ -322,7 +322,7 @@ export const schemaVersionCreatedResponse = z.strictObject({
|
||||||
schema: schemaRSForm
|
schema: schemaRSForm
|
||||||
});
|
});
|
||||||
|
|
||||||
export const schemaCstCreate = schemaConstituentaBasics
|
export const schemaCreateConstituenta = schemaConstituentaBasics
|
||||||
.pick({
|
.pick({
|
||||||
cst_type: true,
|
cst_type: true,
|
||||||
alias: true,
|
alias: true,
|
||||||
|
@ -336,12 +336,12 @@ export const schemaCstCreate = schemaConstituentaBasics
|
||||||
insert_after: z.number().nullable()
|
insert_after: z.number().nullable()
|
||||||
});
|
});
|
||||||
|
|
||||||
export const schemaCstCreatedResponse = z.strictObject({
|
export const schemaConstituentaCreatedResponse = z.strictObject({
|
||||||
new_cst: schemaConstituentaBasics,
|
new_cst: schemaConstituentaBasics,
|
||||||
schema: schemaRSForm
|
schema: schemaRSForm
|
||||||
});
|
});
|
||||||
|
|
||||||
export const schemaCstUpdate = z.strictObject({
|
export const schemaUpdateConstituenta = z.strictObject({
|
||||||
target: z.number(),
|
target: z.number(),
|
||||||
item_data: z.strictObject({
|
item_data: z.strictObject({
|
||||||
convention: z.string().optional(),
|
convention: z.string().optional(),
|
||||||
|
@ -352,7 +352,7 @@ export const schemaCstUpdate = z.strictObject({
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
export const schemaCstRename = z.strictObject({
|
export const schemaRenameConstituenta = z.strictObject({
|
||||||
target: z.number(),
|
target: z.number(),
|
||||||
alias: z.string(),
|
alias: z.string(),
|
||||||
cst_type: schemaCstType
|
cst_type: schemaCstType
|
||||||
|
@ -363,20 +363,20 @@ export const schemaProduceStructureResponse = z.strictObject({
|
||||||
schema: schemaRSForm
|
schema: schemaRSForm
|
||||||
});
|
});
|
||||||
|
|
||||||
export const schemaCstSubstitute = z.strictObject({
|
export const schemaSubstituteConstituents = z.strictObject({
|
||||||
original: z.number(),
|
original: z.number(),
|
||||||
substitution: z.number()
|
substitution: z.number()
|
||||||
});
|
});
|
||||||
|
|
||||||
export const schemaCstSubstitutions = z.strictObject({
|
export const schemaSubstitutions = z.strictObject({
|
||||||
substitutions: z.array(schemaCstSubstitute).min(1, { message: errorMsg.emptySubstitutions })
|
substitutions: z.array(schemaSubstituteConstituents).min(1, { message: errorMsg.emptySubstitutions })
|
||||||
});
|
});
|
||||||
|
|
||||||
export const schemaInlineSynthesis = z.strictObject({
|
export const schemaInlineSynthesis = z.strictObject({
|
||||||
receiver: z.number(),
|
receiver: z.number(),
|
||||||
source: z.number().nullable(),
|
source: z.number().nullable(),
|
||||||
items: z.array(z.number()),
|
items: z.array(z.number()),
|
||||||
substitutions: z.array(schemaCstSubstitute)
|
substitutions: z.array(schemaSubstituteConstituents)
|
||||||
});
|
});
|
||||||
|
|
||||||
export const schemaRSErrorDescription = z.strictObject({
|
export const schemaRSErrorDescription = z.strictObject({
|
||||||
|
|
|
@ -5,14 +5,14 @@ import { useUpdateTimestamp } from '@/features/library/backend/use-update-timest
|
||||||
import { KEYS } from '@/backend/configuration';
|
import { KEYS } from '@/backend/configuration';
|
||||||
|
|
||||||
import { rsformsApi } from './api';
|
import { rsformsApi } from './api';
|
||||||
import { type ICstCreateDTO } from './types';
|
import { type ICreateConstituentaDTO } from './types';
|
||||||
|
|
||||||
export const useCstCreate = () => {
|
export const useCreateConstituenta = () => {
|
||||||
const client = useQueryClient();
|
const client = useQueryClient();
|
||||||
const { updateTimestamp } = useUpdateTimestamp();
|
const { updateTimestamp } = useUpdateTimestamp();
|
||||||
const mutation = useMutation({
|
const mutation = useMutation({
|
||||||
mutationKey: [KEYS.global_mutation, rsformsApi.baseKey, 'create-cst'],
|
mutationKey: [KEYS.global_mutation, rsformsApi.baseKey, 'create-cst'],
|
||||||
mutationFn: rsformsApi.cstCreate,
|
mutationFn: rsformsApi.createConstituenta,
|
||||||
onSuccess: data => {
|
onSuccess: data => {
|
||||||
client.setQueryData(rsformsApi.getRSFormQueryOptions({ itemID: data.schema.id }).queryKey, data.schema);
|
client.setQueryData(rsformsApi.getRSFormQueryOptions({ itemID: data.schema.id }).queryKey, data.schema);
|
||||||
updateTimestamp(data.schema.id);
|
updateTimestamp(data.schema.id);
|
||||||
|
@ -28,7 +28,7 @@ export const useCstCreate = () => {
|
||||||
onError: () => client.invalidateQueries()
|
onError: () => client.invalidateQueries()
|
||||||
});
|
});
|
||||||
return {
|
return {
|
||||||
cstCreate: (data: { itemID: number; data: ICstCreateDTO }) =>
|
createConstituenta: (data: { itemID: number; data: ICreateConstituentaDTO }) =>
|
||||||
mutation.mutateAsync(data).then(response => response.new_cst)
|
mutation.mutateAsync(data).then(response => response.new_cst)
|
||||||
};
|
};
|
||||||
};
|
};
|
|
@ -7,12 +7,12 @@ import { KEYS } from '@/backend/configuration';
|
||||||
import { rsformsApi } from './api';
|
import { rsformsApi } from './api';
|
||||||
import { type IConstituentaList } from './types';
|
import { type IConstituentaList } from './types';
|
||||||
|
|
||||||
export const useCstDelete = () => {
|
export const useDeleteConstituents = () => {
|
||||||
const client = useQueryClient();
|
const client = useQueryClient();
|
||||||
const { updateTimestamp } = useUpdateTimestamp();
|
const { updateTimestamp } = useUpdateTimestamp();
|
||||||
const mutation = useMutation({
|
const mutation = useMutation({
|
||||||
mutationKey: [KEYS.global_mutation, rsformsApi.baseKey, 'delete-multiple-cst'],
|
mutationKey: [KEYS.global_mutation, rsformsApi.baseKey, 'delete-multiple-cst'],
|
||||||
mutationFn: rsformsApi.cstDelete,
|
mutationFn: rsformsApi.deleteConstituents,
|
||||||
onSuccess: data => {
|
onSuccess: data => {
|
||||||
client.setQueryData(rsformsApi.getRSFormQueryOptions({ itemID: data.id }).queryKey, data);
|
client.setQueryData(rsformsApi.getRSFormQueryOptions({ itemID: data.id }).queryKey, data);
|
||||||
updateTimestamp(data.id);
|
updateTimestamp(data.id);
|
||||||
|
@ -28,6 +28,6 @@ export const useCstDelete = () => {
|
||||||
onError: () => client.invalidateQueries()
|
onError: () => client.invalidateQueries()
|
||||||
});
|
});
|
||||||
return {
|
return {
|
||||||
cstDelete: (data: { itemID: number; data: IConstituentaList }) => mutation.mutateAsync(data)
|
deleteConstituents: (data: { itemID: number; data: IConstituentaList }) => mutation.mutateAsync(data)
|
||||||
};
|
};
|
||||||
};
|
};
|
|
@ -5,14 +5,14 @@ import { useUpdateTimestamp } from '@/features/library/backend/use-update-timest
|
||||||
import { KEYS } from '@/backend/configuration';
|
import { KEYS } from '@/backend/configuration';
|
||||||
|
|
||||||
import { rsformsApi } from './api';
|
import { rsformsApi } from './api';
|
||||||
import { type ICstMoveDTO } from './types';
|
import { type IMoveConstituentsDTO } from './types';
|
||||||
|
|
||||||
export const useCstMove = () => {
|
export const useMoveConstituents = () => {
|
||||||
const client = useQueryClient();
|
const client = useQueryClient();
|
||||||
const { updateTimestamp } = useUpdateTimestamp();
|
const { updateTimestamp } = useUpdateTimestamp();
|
||||||
const mutation = useMutation({
|
const mutation = useMutation({
|
||||||
mutationKey: [KEYS.global_mutation, rsformsApi.baseKey, 'move-cst'],
|
mutationKey: [KEYS.global_mutation, rsformsApi.baseKey, 'move-cst'],
|
||||||
mutationFn: rsformsApi.cstMove,
|
mutationFn: rsformsApi.moveConstituents,
|
||||||
onSuccess: data => {
|
onSuccess: data => {
|
||||||
client.setQueryData(rsformsApi.getRSFormQueryOptions({ itemID: data.id }).queryKey, data);
|
client.setQueryData(rsformsApi.getRSFormQueryOptions({ itemID: data.id }).queryKey, data);
|
||||||
updateTimestamp(data.id);
|
updateTimestamp(data.id);
|
||||||
|
@ -20,6 +20,6 @@ export const useCstMove = () => {
|
||||||
onError: () => client.invalidateQueries()
|
onError: () => client.invalidateQueries()
|
||||||
});
|
});
|
||||||
return {
|
return {
|
||||||
cstMove: (data: { itemID: number; data: ICstMoveDTO }) => mutation.mutateAsync(data)
|
moveConstituents: (data: { itemID: number; data: IMoveConstituentsDTO }) => mutation.mutateAsync(data)
|
||||||
};
|
};
|
||||||
};
|
};
|
|
@ -5,14 +5,14 @@ import { useUpdateTimestamp } from '@/features/library/backend/use-update-timest
|
||||||
import { KEYS } from '@/backend/configuration';
|
import { KEYS } from '@/backend/configuration';
|
||||||
|
|
||||||
import { rsformsApi } from './api';
|
import { rsformsApi } from './api';
|
||||||
import { type ICstRenameDTO } from './types';
|
import { type IRenameConstituentaDTO } from './types';
|
||||||
|
|
||||||
export const useCstRename = () => {
|
export const useRenameConstituenta = () => {
|
||||||
const client = useQueryClient();
|
const client = useQueryClient();
|
||||||
const { updateTimestamp } = useUpdateTimestamp();
|
const { updateTimestamp } = useUpdateTimestamp();
|
||||||
const mutation = useMutation({
|
const mutation = useMutation({
|
||||||
mutationKey: [KEYS.global_mutation, rsformsApi.baseKey, 'rename-cst'],
|
mutationKey: [KEYS.global_mutation, rsformsApi.baseKey, 'rename-cst'],
|
||||||
mutationFn: rsformsApi.cstRename,
|
mutationFn: rsformsApi.renameConstituenta,
|
||||||
onSuccess: data => {
|
onSuccess: data => {
|
||||||
client.setQueryData(rsformsApi.getRSFormQueryOptions({ itemID: data.schema.id }).queryKey, data.schema);
|
client.setQueryData(rsformsApi.getRSFormQueryOptions({ itemID: data.schema.id }).queryKey, data.schema);
|
||||||
updateTimestamp(data.schema.id);
|
updateTimestamp(data.schema.id);
|
||||||
|
@ -28,6 +28,6 @@ export const useCstRename = () => {
|
||||||
onError: () => client.invalidateQueries()
|
onError: () => client.invalidateQueries()
|
||||||
});
|
});
|
||||||
return {
|
return {
|
||||||
cstRename: (data: { itemID: number; data: ICstRenameDTO }) => mutation.mutateAsync(data)
|
renameConstituenta: (data: { itemID: number; data: IRenameConstituentaDTO }) => mutation.mutateAsync(data)
|
||||||
};
|
};
|
||||||
};
|
};
|
|
@ -5,14 +5,14 @@ import { useUpdateTimestamp } from '@/features/library/backend/use-update-timest
|
||||||
import { KEYS } from '@/backend/configuration';
|
import { KEYS } from '@/backend/configuration';
|
||||||
|
|
||||||
import { rsformsApi } from './api';
|
import { rsformsApi } from './api';
|
||||||
import { type ICstSubstitutionsDTO } from './types';
|
import { type ISubstitutionsDTO } from './types';
|
||||||
|
|
||||||
export const useCstSubstitute = () => {
|
export const useSubstituteConstituents = () => {
|
||||||
const client = useQueryClient();
|
const client = useQueryClient();
|
||||||
const { updateTimestamp } = useUpdateTimestamp();
|
const { updateTimestamp } = useUpdateTimestamp();
|
||||||
const mutation = useMutation({
|
const mutation = useMutation({
|
||||||
mutationKey: [KEYS.global_mutation, rsformsApi.baseKey, 'substitute-cst'],
|
mutationKey: [KEYS.global_mutation, rsformsApi.baseKey, 'substitute-cst'],
|
||||||
mutationFn: rsformsApi.cstSubstitute,
|
mutationFn: rsformsApi.substituteConstituents,
|
||||||
onSuccess: data => {
|
onSuccess: data => {
|
||||||
client.setQueryData(rsformsApi.getRSFormQueryOptions({ itemID: data.id }).queryKey, data);
|
client.setQueryData(rsformsApi.getRSFormQueryOptions({ itemID: data.id }).queryKey, data);
|
||||||
updateTimestamp(data.id);
|
updateTimestamp(data.id);
|
||||||
|
@ -28,6 +28,6 @@ export const useCstSubstitute = () => {
|
||||||
onError: () => client.invalidateQueries()
|
onError: () => client.invalidateQueries()
|
||||||
});
|
});
|
||||||
return {
|
return {
|
||||||
cstSubstitute: (data: { itemID: number; data: ICstSubstitutionsDTO }) => mutation.mutateAsync(data)
|
substituteConstituents: (data: { itemID: number; data: ISubstitutionsDTO }) => mutation.mutateAsync(data)
|
||||||
};
|
};
|
||||||
};
|
};
|
|
@ -5,14 +5,14 @@ import { useUpdateTimestamp } from '@/features/library/backend/use-update-timest
|
||||||
import { KEYS } from '@/backend/configuration';
|
import { KEYS } from '@/backend/configuration';
|
||||||
|
|
||||||
import { rsformsApi } from './api';
|
import { rsformsApi } from './api';
|
||||||
import { type ICstUpdateDTO } from './types';
|
import { type IUpdateConstituentaDTO } from './types';
|
||||||
|
|
||||||
export const useCstUpdate = () => {
|
export const useUpdateConstituenta = () => {
|
||||||
const client = useQueryClient();
|
const client = useQueryClient();
|
||||||
const { updateTimestamp } = useUpdateTimestamp();
|
const { updateTimestamp } = useUpdateTimestamp();
|
||||||
const mutation = useMutation({
|
const mutation = useMutation({
|
||||||
mutationKey: [KEYS.global_mutation, rsformsApi.baseKey, 'update-cst'],
|
mutationKey: [KEYS.global_mutation, rsformsApi.baseKey, 'update-cst'],
|
||||||
mutationFn: rsformsApi.cstUpdate,
|
mutationFn: rsformsApi.updateConstituenta,
|
||||||
onSuccess: (_, variables) => {
|
onSuccess: (_, variables) => {
|
||||||
updateTimestamp(variables.itemID);
|
updateTimestamp(variables.itemID);
|
||||||
|
|
||||||
|
@ -24,6 +24,6 @@ export const useCstUpdate = () => {
|
||||||
onError: () => client.invalidateQueries()
|
onError: () => client.invalidateQueries()
|
||||||
});
|
});
|
||||||
return {
|
return {
|
||||||
cstUpdate: (data: { itemID: number; data: ICstUpdateDTO }) => mutation.mutateAsync(data)
|
updateConstituenta: (data: { itemID: number; data: IUpdateConstituentaDTO }) => mutation.mutateAsync(data)
|
||||||
};
|
};
|
||||||
};
|
};
|
|
@ -14,7 +14,7 @@ import { cn } from '@/components/utils';
|
||||||
import { NoData } from '@/components/view';
|
import { NoData } from '@/components/view';
|
||||||
import { errorMsg } from '@/utils/labels';
|
import { errorMsg } from '@/utils/labels';
|
||||||
|
|
||||||
import { type ICstSubstitute } from '../backend/types';
|
import { type ISubstituteConstituents } from '../backend/types';
|
||||||
import { type IConstituenta, type IRSForm } from '../models/rsform';
|
import { type IConstituenta, type IRSForm } from '../models/rsform';
|
||||||
|
|
||||||
import { BadgeConstituenta } from './badge-constituenta';
|
import { BadgeConstituenta } from './badge-constituenta';
|
||||||
|
@ -29,10 +29,10 @@ interface IMultiSubstitution {
|
||||||
}
|
}
|
||||||
|
|
||||||
interface PickSubstitutionsProps extends Styling {
|
interface PickSubstitutionsProps extends Styling {
|
||||||
value: ICstSubstitute[];
|
value: ISubstituteConstituents[];
|
||||||
onChange: (newValue: ICstSubstitute[]) => void;
|
onChange: (newValue: ISubstituteConstituents[]) => void;
|
||||||
|
|
||||||
suggestions?: ICstSubstitute[];
|
suggestions?: ISubstituteConstituents[];
|
||||||
|
|
||||||
rows?: number;
|
rows?: number;
|
||||||
allowSelfSubstitution?: boolean;
|
allowSelfSubstitution?: boolean;
|
||||||
|
@ -75,7 +75,7 @@ export function PickSubstitutions({
|
||||||
const [deleteRight, setDeleteRight] = useState(true);
|
const [deleteRight, setDeleteRight] = useState(true);
|
||||||
const toggleDelete = () => setDeleteRight(prev => !prev);
|
const toggleDelete = () => setDeleteRight(prev => !prev);
|
||||||
|
|
||||||
const [ignores, setIgnores] = useState<ICstSubstitute[]>([]);
|
const [ignores, setIgnores] = useState<ISubstituteConstituents[]>([]);
|
||||||
const filteredSuggestions =
|
const filteredSuggestions =
|
||||||
suggestions?.filter(
|
suggestions?.filter(
|
||||||
item => !ignores.find(ignore => ignore.original === item.original && ignore.substitution === item.substitution)
|
item => !ignores.find(ignore => ignore.original === item.original && ignore.substitution === item.substitution)
|
||||||
|
@ -122,7 +122,7 @@ export function PickSubstitutions({
|
||||||
if (!leftCst || !rightCst) {
|
if (!leftCst || !rightCst) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const newSubstitution: ICstSubstitute = {
|
const newSubstitution: ISubstituteConstituents = {
|
||||||
original: deleteRight ? rightCst.id : leftCst.id,
|
original: deleteRight ? rightCst.id : leftCst.id,
|
||||||
substitution: deleteRight ? leftCst.id : rightCst.id
|
substitution: deleteRight ? leftCst.id : rightCst.id
|
||||||
};
|
};
|
||||||
|
|
|
@ -7,32 +7,36 @@ import { ModalForm } from '@/components/modal';
|
||||||
import { useDialogsStore } from '@/stores/dialogs';
|
import { useDialogsStore } from '@/stores/dialogs';
|
||||||
import { errorMsg } from '@/utils/labels';
|
import { errorMsg } from '@/utils/labels';
|
||||||
|
|
||||||
import { type IConstituentaBasicsDTO, type ICstCreateDTO, schemaCstCreate } from '../../backend/types';
|
import {
|
||||||
import { useCstCreate } from '../../backend/use-cst-create';
|
type IConstituentaBasicsDTO,
|
||||||
|
type ICreateConstituentaDTO,
|
||||||
|
schemaCreateConstituenta
|
||||||
|
} from '../../backend/types';
|
||||||
|
import { useCreateConstituenta } from '../../backend/use-create-constituenta';
|
||||||
import { type IRSForm } from '../../models/rsform';
|
import { type IRSForm } from '../../models/rsform';
|
||||||
import { validateNewAlias } from '../../models/rsform-api';
|
import { validateNewAlias } from '../../models/rsform-api';
|
||||||
|
|
||||||
import { FormCreateCst } from './form-create-cst';
|
import { FormCreateCst } from './form-create-cst';
|
||||||
|
|
||||||
export interface DlgCreateCstProps {
|
export interface DlgCreateCstProps {
|
||||||
initial: ICstCreateDTO;
|
initial: ICreateConstituentaDTO;
|
||||||
schema: IRSForm;
|
schema: IRSForm;
|
||||||
onCreate: (data: IConstituentaBasicsDTO) => void;
|
onCreate: (data: IConstituentaBasicsDTO) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function DlgCreateCst() {
|
export function DlgCreateCst() {
|
||||||
const { initial, schema, onCreate } = useDialogsStore(state => state.props as DlgCreateCstProps);
|
const { initial, schema, onCreate } = useDialogsStore(state => state.props as DlgCreateCstProps);
|
||||||
const { cstCreate } = useCstCreate();
|
const { createConstituenta: cstCreate } = useCreateConstituenta();
|
||||||
|
|
||||||
const methods = useForm<ICstCreateDTO>({
|
const methods = useForm<ICreateConstituentaDTO>({
|
||||||
resolver: zodResolver(schemaCstCreate),
|
resolver: zodResolver(schemaCreateConstituenta),
|
||||||
defaultValues: { ...initial }
|
defaultValues: { ...initial }
|
||||||
});
|
});
|
||||||
const alias = useWatch({ control: methods.control, name: 'alias' });
|
const alias = useWatch({ control: methods.control, name: 'alias' });
|
||||||
const cst_type = useWatch({ control: methods.control, name: 'cst_type' });
|
const cst_type = useWatch({ control: methods.control, name: 'cst_type' });
|
||||||
const isValid = validateNewAlias(alias, cst_type, schema);
|
const isValid = validateNewAlias(alias, cst_type, schema);
|
||||||
|
|
||||||
function onSubmit(data: ICstCreateDTO) {
|
function onSubmit(data: ICreateConstituentaDTO) {
|
||||||
return cstCreate({ itemID: schema.id, data }).then(onCreate);
|
return cstCreate({ itemID: schema.id, data }).then(onCreate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ import { BadgeHelp } from '@/features/help/components';
|
||||||
|
|
||||||
import { TextArea, TextInput } from '@/components/input';
|
import { TextArea, TextInput } from '@/components/input';
|
||||||
|
|
||||||
import { CstType, type ICstCreateDTO } from '../../backend/types';
|
import { CstType, type ICreateConstituentaDTO } from '../../backend/types';
|
||||||
import { RSInput } from '../../components/rs-input';
|
import { RSInput } from '../../components/rs-input';
|
||||||
import { SelectCstType } from '../../components/select-cst-type';
|
import { SelectCstType } from '../../components/select-cst-type';
|
||||||
import { type IRSForm } from '../../models/rsform';
|
import { type IRSForm } from '../../models/rsform';
|
||||||
|
@ -24,7 +24,7 @@ export function FormCreateCst({ schema }: FormCreateCstProps) {
|
||||||
register,
|
register,
|
||||||
control,
|
control,
|
||||||
formState: { errors }
|
formState: { errors }
|
||||||
} = useFormContext<ICstCreateDTO>();
|
} = useFormContext<ICreateConstituentaDTO>();
|
||||||
const [forceComment, setForceComment] = useState(false);
|
const [forceComment, setForceComment] = useState(false);
|
||||||
|
|
||||||
const cst_type = useWatch({ control, name: 'cst_type' });
|
const cst_type = useWatch({ control, name: 'cst_type' });
|
||||||
|
|
|
@ -11,8 +11,13 @@ import { ModalForm } from '@/components/modal';
|
||||||
import { TabLabel, TabList, TabPanel, Tabs } from '@/components/tabs';
|
import { TabLabel, TabList, TabPanel, Tabs } from '@/components/tabs';
|
||||||
import { useDialogsStore } from '@/stores/dialogs';
|
import { useDialogsStore } from '@/stores/dialogs';
|
||||||
|
|
||||||
import { CstType, type IConstituentaBasicsDTO, type ICstCreateDTO, schemaCstCreate } from '../../backend/types';
|
import {
|
||||||
import { useCstCreate } from '../../backend/use-cst-create';
|
CstType,
|
||||||
|
type IConstituentaBasicsDTO,
|
||||||
|
type ICreateConstituentaDTO,
|
||||||
|
schemaCreateConstituenta
|
||||||
|
} from '../../backend/types';
|
||||||
|
import { useCreateConstituenta } from '../../backend/use-create-constituenta';
|
||||||
import { type IRSForm } from '../../models/rsform';
|
import { type IRSForm } from '../../models/rsform';
|
||||||
import { generateAlias, validateNewAlias } from '../../models/rsform-api';
|
import { generateAlias, validateNewAlias } from '../../models/rsform-api';
|
||||||
import { FormCreateCst } from '../dlg-create-cst/form-create-cst';
|
import { FormCreateCst } from '../dlg-create-cst/form-create-cst';
|
||||||
|
@ -36,10 +41,10 @@ export type TabID = (typeof TabID)[keyof typeof TabID];
|
||||||
|
|
||||||
export function DlgCstTemplate() {
|
export function DlgCstTemplate() {
|
||||||
const { schema, onCreate, insertAfter } = useDialogsStore(state => state.props as DlgCstTemplateProps);
|
const { schema, onCreate, insertAfter } = useDialogsStore(state => state.props as DlgCstTemplateProps);
|
||||||
const { cstCreate } = useCstCreate();
|
const { createConstituenta: cstCreate } = useCreateConstituenta();
|
||||||
|
|
||||||
const methods = useForm<ICstCreateDTO>({
|
const methods = useForm<ICreateConstituentaDTO>({
|
||||||
resolver: zodResolver(schemaCstCreate),
|
resolver: zodResolver(schemaCreateConstituenta),
|
||||||
defaultValues: {
|
defaultValues: {
|
||||||
cst_type: CstType.TERM,
|
cst_type: CstType.TERM,
|
||||||
insert_after: insertAfter ?? null,
|
insert_after: insertAfter ?? null,
|
||||||
|
@ -57,7 +62,7 @@ export function DlgCstTemplate() {
|
||||||
|
|
||||||
const [activeTab, setActiveTab] = useState<TabID>(TabID.TEMPLATE);
|
const [activeTab, setActiveTab] = useState<TabID>(TabID.TEMPLATE);
|
||||||
|
|
||||||
function onSubmit(data: ICstCreateDTO) {
|
function onSubmit(data: ICreateConstituentaDTO) {
|
||||||
return cstCreate({ itemID: schema.id, data }).then(onCreate);
|
return cstCreate({ itemID: schema.id, data }).then(onCreate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ import { IconAccept, IconRemove, IconReset } from '@/components/icons';
|
||||||
import { NoData } from '@/components/view';
|
import { NoData } from '@/components/view';
|
||||||
import { useDialogsStore } from '@/stores/dialogs';
|
import { useDialogsStore } from '@/stores/dialogs';
|
||||||
|
|
||||||
import { type ICstCreateDTO } from '../../backend/types';
|
import { type ICreateConstituentaDTO } from '../../backend/types';
|
||||||
import { PickConstituenta } from '../../components/pick-constituenta';
|
import { PickConstituenta } from '../../components/pick-constituenta';
|
||||||
import { RSInput } from '../../components/rs-input';
|
import { RSInput } from '../../components/rs-input';
|
||||||
import { type IConstituenta } from '../../models/rsform';
|
import { type IConstituenta } from '../../models/rsform';
|
||||||
|
@ -23,7 +23,7 @@ const argumentsHelper = createColumnHelper<IArgumentValue>();
|
||||||
|
|
||||||
export function TabArguments() {
|
export function TabArguments() {
|
||||||
const { schema } = useDialogsStore(state => state.props as DlgCstTemplateProps);
|
const { schema } = useDialogsStore(state => state.props as DlgCstTemplateProps);
|
||||||
const { control } = useFormContext<ICstCreateDTO>();
|
const { control } = useFormContext<ICreateConstituentaDTO>();
|
||||||
const { args, onChangeArguments } = useTemplateContext();
|
const { args, onChangeArguments } = useTemplateContext();
|
||||||
const definition = useWatch({ control, name: 'definition_formal' });
|
const definition = useWatch({ control, name: 'definition_formal' });
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ import { useFormContext } from 'react-hook-form';
|
||||||
|
|
||||||
import { useDialogsStore } from '@/stores/dialogs';
|
import { useDialogsStore } from '@/stores/dialogs';
|
||||||
|
|
||||||
import { type ICstCreateDTO } from '../../backend/types';
|
import { type ICreateConstituentaDTO } from '../../backend/types';
|
||||||
import { type IConstituenta } from '../../models/rsform';
|
import { type IConstituenta } from '../../models/rsform';
|
||||||
import { generateAlias } from '../../models/rsform-api';
|
import { generateAlias } from '../../models/rsform-api';
|
||||||
import { type IArgumentValue } from '../../models/rslang';
|
import { type IArgumentValue } from '../../models/rslang';
|
||||||
|
@ -16,7 +16,7 @@ import { TemplateContext } from './template-context';
|
||||||
|
|
||||||
export const TemplateState = ({ children }: React.PropsWithChildren) => {
|
export const TemplateState = ({ children }: React.PropsWithChildren) => {
|
||||||
const { schema } = useDialogsStore(state => state.props as DlgCstTemplateProps);
|
const { schema } = useDialogsStore(state => state.props as DlgCstTemplateProps);
|
||||||
const { setValue } = useFormContext<ICstCreateDTO>();
|
const { setValue } = useFormContext<ICreateConstituentaDTO>();
|
||||||
const [templateID, setTemplateID] = useState<number | null>(null);
|
const [templateID, setTemplateID] = useState<number | null>(null);
|
||||||
const [args, setArguments] = useState<IArgumentValue[]>([]);
|
const [args, setArguments] = useState<IArgumentValue[]>([]);
|
||||||
const [prototype, setPrototype] = useState<IConstituenta | null>(null);
|
const [prototype, setPrototype] = useState<IConstituenta | null>(null);
|
||||||
|
|
|
@ -7,7 +7,7 @@ import { ModalForm } from '@/components/modal';
|
||||||
import { useDialogsStore } from '@/stores/dialogs';
|
import { useDialogsStore } from '@/stores/dialogs';
|
||||||
import { prefixes } from '@/utils/constants';
|
import { prefixes } from '@/utils/constants';
|
||||||
|
|
||||||
import { useCstDelete } from '../../backend/use-cst-delete';
|
import { useDeleteConstituents } from '../../backend/use-delete-constituents';
|
||||||
import { type IRSForm } from '../../models/rsform';
|
import { type IRSForm } from '../../models/rsform';
|
||||||
|
|
||||||
import { ListConstituents } from './list-constituents';
|
import { ListConstituents } from './list-constituents';
|
||||||
|
@ -20,7 +20,7 @@ export interface DlgDeleteCstProps {
|
||||||
|
|
||||||
export function DlgDeleteCst() {
|
export function DlgDeleteCst() {
|
||||||
const { selected, schema, afterDelete } = useDialogsStore(state => state.props as DlgDeleteCstProps);
|
const { selected, schema, afterDelete } = useDialogsStore(state => state.props as DlgDeleteCstProps);
|
||||||
const { cstDelete } = useCstDelete();
|
const { deleteConstituents: cstDelete } = useDeleteConstituents();
|
||||||
|
|
||||||
const [expandOut, setExpandOut] = useState(false);
|
const [expandOut, setExpandOut] = useState(false);
|
||||||
const expansion: number[] = schema.graph.expandAllOutputs(selected);
|
const expansion: number[] = schema.graph.expandAllOutputs(selected);
|
||||||
|
|
|
@ -15,7 +15,7 @@ import { useGenerateLexeme } from '../../backend/cctext/use-generate-lexeme';
|
||||||
import { useInflectText } from '../../backend/cctext/use-inflect-text';
|
import { useInflectText } from '../../backend/cctext/use-inflect-text';
|
||||||
import { useIsProcessingCctext } from '../../backend/cctext/use-is-processing-cctext';
|
import { useIsProcessingCctext } from '../../backend/cctext/use-is-processing-cctext';
|
||||||
import { useParseText } from '../../backend/cctext/use-parse-text';
|
import { useParseText } from '../../backend/cctext/use-parse-text';
|
||||||
import { useCstUpdate } from '../../backend/use-cst-update';
|
import { useUpdateConstituenta } from '../../backend/use-update-constituenta';
|
||||||
import { SelectMultiGrammeme } from '../../components/select-multi-grammeme';
|
import { SelectMultiGrammeme } from '../../components/select-multi-grammeme';
|
||||||
import { type Grammeme, type IWordForm, supportedGrammemes } from '../../models/language';
|
import { type Grammeme, type IWordForm, supportedGrammemes } from '../../models/language';
|
||||||
import { parseGrammemes, wordFormEquals } from '../../models/language-api';
|
import { parseGrammemes, wordFormEquals } from '../../models/language-api';
|
||||||
|
@ -30,7 +30,7 @@ export interface DlgEditWordFormsProps {
|
||||||
|
|
||||||
export function DlgEditWordForms() {
|
export function DlgEditWordForms() {
|
||||||
const { itemID, target } = useDialogsStore(state => state.props as DlgEditWordFormsProps);
|
const { itemID, target } = useDialogsStore(state => state.props as DlgEditWordFormsProps);
|
||||||
const { cstUpdate } = useCstUpdate();
|
const { updateConstituenta: cstUpdate } = useUpdateConstituenta();
|
||||||
|
|
||||||
const isProcessing = useIsProcessingCctext();
|
const isProcessing = useIsProcessingCctext();
|
||||||
const { inflectText } = useInflectText();
|
const { inflectText } = useInflectText();
|
||||||
|
|
|
@ -9,8 +9,8 @@ import { TextInput } from '@/components/input';
|
||||||
import { ModalForm } from '@/components/modal';
|
import { ModalForm } from '@/components/modal';
|
||||||
import { useDialogsStore } from '@/stores/dialogs';
|
import { useDialogsStore } from '@/stores/dialogs';
|
||||||
|
|
||||||
import { type CstType, type ICstRenameDTO, schemaCstRename } from '../backend/types';
|
import { type CstType, type IRenameConstituentaDTO, schemaRenameConstituenta } from '../backend/types';
|
||||||
import { useCstRename } from '../backend/use-cst-rename';
|
import { useRenameConstituenta } from '../backend/use-rename-constituenta';
|
||||||
import { SelectCstType } from '../components/select-cst-type';
|
import { SelectCstType } from '../components/select-cst-type';
|
||||||
import { type IConstituenta, type IRSForm } from '../models/rsform';
|
import { type IConstituenta, type IRSForm } from '../models/rsform';
|
||||||
import { generateAlias, validateNewAlias } from '../models/rsform-api';
|
import { generateAlias, validateNewAlias } from '../models/rsform-api';
|
||||||
|
@ -22,10 +22,10 @@ export interface DlgRenameCstProps {
|
||||||
|
|
||||||
export function DlgRenameCst() {
|
export function DlgRenameCst() {
|
||||||
const { schema, target } = useDialogsStore(state => state.props as DlgRenameCstProps);
|
const { schema, target } = useDialogsStore(state => state.props as DlgRenameCstProps);
|
||||||
const { cstRename } = useCstRename();
|
const { renameConstituenta: cstRename } = useRenameConstituenta();
|
||||||
|
|
||||||
const { register, setValue, handleSubmit, control } = useForm<ICstRenameDTO>({
|
const { register, setValue, handleSubmit, control } = useForm<IRenameConstituentaDTO>({
|
||||||
resolver: zodResolver(schemaCstRename),
|
resolver: zodResolver(schemaRenameConstituenta),
|
||||||
defaultValues: {
|
defaultValues: {
|
||||||
target: target.id,
|
target: target.id,
|
||||||
alias: target.alias,
|
alias: target.alias,
|
||||||
|
@ -36,7 +36,7 @@ export function DlgRenameCst() {
|
||||||
const cst_type = useWatch({ control, name: 'cst_type' });
|
const cst_type = useWatch({ control, name: 'cst_type' });
|
||||||
const isValid = alias !== target.alias && validateNewAlias(alias, cst_type, schema);
|
const isValid = alias !== target.alias && validateNewAlias(alias, cst_type, schema);
|
||||||
|
|
||||||
function onSubmit(data: ICstRenameDTO) {
|
function onSubmit(data: IRenameConstituentaDTO) {
|
||||||
return cstRename({ itemID: schema.id, data: data });
|
return cstRename({ itemID: schema.id, data: data });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,33 +9,33 @@ import { ErrorField } from '@/components/input';
|
||||||
import { ModalForm } from '@/components/modal';
|
import { ModalForm } from '@/components/modal';
|
||||||
import { useDialogsStore } from '@/stores/dialogs';
|
import { useDialogsStore } from '@/stores/dialogs';
|
||||||
|
|
||||||
import { type ICstSubstitutionsDTO, schemaCstSubstitutions } from '../backend/types';
|
import { type ISubstitutionsDTO, schemaSubstitutions } from '../backend/types';
|
||||||
import { useCstSubstitute } from '../backend/use-cst-substitute';
|
import { useSubstituteConstituents } from '../backend/use-substitute-constituents';
|
||||||
import { PickSubstitutions } from '../components/pick-substitutions';
|
import { PickSubstitutions } from '../components/pick-substitutions';
|
||||||
import { type IRSForm } from '../models/rsform';
|
import { type IRSForm } from '../models/rsform';
|
||||||
|
|
||||||
export interface DlgSubstituteCstProps {
|
export interface DlgSubstituteCstProps {
|
||||||
schema: IRSForm;
|
schema: IRSForm;
|
||||||
onSubstitute: (data: ICstSubstitutionsDTO) => void;
|
onSubstitute: (data: ISubstitutionsDTO) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function DlgSubstituteCst() {
|
export function DlgSubstituteCst() {
|
||||||
const { onSubstitute, schema } = useDialogsStore(state => state.props as DlgSubstituteCstProps);
|
const { onSubstitute, schema } = useDialogsStore(state => state.props as DlgSubstituteCstProps);
|
||||||
const { cstSubstitute } = useCstSubstitute();
|
const { substituteConstituents: cstSubstitute } = useSubstituteConstituents();
|
||||||
|
|
||||||
const {
|
const {
|
||||||
handleSubmit,
|
handleSubmit,
|
||||||
control,
|
control,
|
||||||
formState: { errors, isValid }
|
formState: { errors, isValid }
|
||||||
} = useForm<ICstSubstitutionsDTO>({
|
} = useForm<ISubstitutionsDTO>({
|
||||||
resolver: zodResolver(schemaCstSubstitutions),
|
resolver: zodResolver(schemaSubstitutions),
|
||||||
defaultValues: {
|
defaultValues: {
|
||||||
substitutions: []
|
substitutions: []
|
||||||
},
|
},
|
||||||
mode: 'onChange'
|
mode: 'onChange'
|
||||||
});
|
});
|
||||||
|
|
||||||
function onSubmit(data: ICstSubstitutionsDTO) {
|
function onSubmit(data: ISubstitutionsDTO) {
|
||||||
return cstSubstitute({ itemID: schema.id, data: data }).then(() => onSubstitute(data));
|
return cstSubstitute({ itemID: schema.id, data: data }).then(() => onSubstitute(data));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
export {
|
export {
|
||||||
CstType,
|
CstType,
|
||||||
type ICstSubstitute,
|
type ISubstituteConstituents as ICstSubstitute,
|
||||||
type IRSFormDTO,
|
type IRSFormDTO,
|
||||||
type IVersionCreatedResponse,
|
type IVersionCreatedResponse,
|
||||||
ParsingStatus,
|
ParsingStatus,
|
||||||
|
|
|
@ -17,13 +17,13 @@ import { promptUnsaved } from '@/utils/utils';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
CstType,
|
CstType,
|
||||||
type ICstUpdateDTO,
|
|
||||||
type IExpressionParseDTO,
|
type IExpressionParseDTO,
|
||||||
|
type IUpdateConstituentaDTO,
|
||||||
ParsingStatus,
|
ParsingStatus,
|
||||||
schemaCstUpdate
|
schemaUpdateConstituenta
|
||||||
} from '../../../backend/types';
|
} from '../../../backend/types';
|
||||||
import { useCstUpdate } from '../../../backend/use-cst-update';
|
|
||||||
import { useMutatingRSForm } from '../../../backend/use-mutating-rsform';
|
import { useMutatingRSForm } from '../../../backend/use-mutating-rsform';
|
||||||
|
import { useUpdateConstituenta } from '../../../backend/use-update-constituenta';
|
||||||
import { RefsInput } from '../../../components/refs-input';
|
import { RefsInput } from '../../../components/refs-input';
|
||||||
import { labelCstTypification, labelTypification } from '../../../labels';
|
import { labelCstTypification, labelTypification } from '../../../labels';
|
||||||
import { type IConstituenta, type IRSForm } from '../../../models/rsform';
|
import { type IConstituenta, type IRSForm } from '../../../models/rsform';
|
||||||
|
@ -50,9 +50,9 @@ export function FormConstituenta({ disabled, id, toggleReset, schema, activeCst,
|
||||||
control,
|
control,
|
||||||
reset,
|
reset,
|
||||||
formState: { isDirty }
|
formState: { isDirty }
|
||||||
} = useForm<ICstUpdateDTO>({ resolver: zodResolver(schemaCstUpdate) });
|
} = useForm<IUpdateConstituentaDTO>({ resolver: zodResolver(schemaUpdateConstituenta) });
|
||||||
|
|
||||||
const { cstUpdate } = useCstUpdate();
|
const { updateConstituenta: cstUpdate } = useUpdateConstituenta();
|
||||||
const showTypification = useDialogsStore(state => state.showShowTypeGraph);
|
const showTypification = useDialogsStore(state => state.showShowTypeGraph);
|
||||||
const showEditTerm = useDialogsStore(state => state.showEditWordForms);
|
const showEditTerm = useDialogsStore(state => state.showEditWordForms);
|
||||||
const showRenameCst = useDialogsStore(state => state.showRenameCst);
|
const showRenameCst = useDialogsStore(state => state.showRenameCst);
|
||||||
|
@ -104,7 +104,7 @@ export function FormConstituenta({ disabled, id, toggleReset, schema, activeCst,
|
||||||
return () => setIsModified(false);
|
return () => setIsModified(false);
|
||||||
}, [isDirty, activeCst, setIsModified]);
|
}, [isDirty, activeCst, setIsModified]);
|
||||||
|
|
||||||
function onSubmit(data: ICstUpdateDTO) {
|
function onSubmit(data: IUpdateConstituentaDTO) {
|
||||||
return cstUpdate({ itemID: schema.id, data }).then(() => reset({ ...data }));
|
return cstUpdate({ itemID: schema.id, data }).then(() => reset({ ...data }));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ import clsx from 'clsx';
|
||||||
|
|
||||||
import { HelpTopic } from '@/features/help';
|
import { HelpTopic } from '@/features/help';
|
||||||
import { BadgeHelp } from '@/features/help/components';
|
import { BadgeHelp } from '@/features/help/components';
|
||||||
import { useVersionRestore } from '@/features/library/backend/use-version-restore';
|
import { useRestoreVersion } from '@/features/library/backend/use-restore-version';
|
||||||
|
|
||||||
import { MiniButton } from '@/components/control';
|
import { MiniButton } from '@/components/control';
|
||||||
import { IconNewVersion, IconUpload, IconVersions } from '@/components/icons';
|
import { IconNewVersion, IconUpload, IconVersions } from '@/components/icons';
|
||||||
|
@ -22,7 +22,7 @@ interface ToolbarVersioningProps {
|
||||||
|
|
||||||
export function ToolbarVersioning({ blockReload, className }: ToolbarVersioningProps) {
|
export function ToolbarVersioning({ blockReload, className }: ToolbarVersioningProps) {
|
||||||
const { isModified } = useModificationStore();
|
const { isModified } = useModificationStore();
|
||||||
const { versionRestore } = useVersionRestore();
|
const { restoreVersion: versionRestore } = useRestoreVersion();
|
||||||
const { schema, isMutable, isContentEditable, navigateVersion, activeVersion, selected } = useRSEdit();
|
const { schema, isMutable, isContentEditable, navigateVersion, activeVersion, selected } = useRSEdit();
|
||||||
|
|
||||||
const showCreateVersion = useDialogsStore(state => state.showCreateVersion);
|
const showCreateVersion = useDialogsStore(state => state.showCreateVersion);
|
||||||
|
|
|
@ -15,9 +15,9 @@ import { PARAMETER, prefixes } from '@/utils/constants';
|
||||||
import { promptText } from '@/utils/labels';
|
import { promptText } from '@/utils/labels';
|
||||||
import { promptUnsaved } from '@/utils/utils';
|
import { promptUnsaved } from '@/utils/utils';
|
||||||
|
|
||||||
import { CstType, type IConstituentaBasicsDTO, type ICstCreateDTO } from '../../backend/types';
|
import { CstType, type IConstituentaBasicsDTO, type ICreateConstituentaDTO } from '../../backend/types';
|
||||||
import { useCstCreate } from '../../backend/use-cst-create';
|
import { useCreateConstituenta } from '../../backend/use-create-constituenta';
|
||||||
import { useCstMove } from '../../backend/use-cst-move';
|
import { useMoveConstituents } from '../../backend/use-move-constituents';
|
||||||
import { useRSFormSuspense } from '../../backend/use-rsform';
|
import { useRSFormSuspense } from '../../backend/use-rsform';
|
||||||
import { type IConstituenta } from '../../models/rsform';
|
import { type IConstituenta } from '../../models/rsform';
|
||||||
import { generateAlias } from '../../models/rsform-api';
|
import { generateAlias } from '../../models/rsform-api';
|
||||||
|
@ -59,8 +59,8 @@ export const RSEditState = ({
|
||||||
|
|
||||||
const activeCst = selected.length === 0 ? null : schema.cstByID.get(selected[selected.length - 1])!;
|
const activeCst = selected.length === 0 ? null : schema.cstByID.get(selected[selected.length - 1])!;
|
||||||
|
|
||||||
const { cstCreate } = useCstCreate();
|
const { createConstituenta: cstCreate } = useCreateConstituenta();
|
||||||
const { cstMove } = useCstMove();
|
const { moveConstituents: cstMove } = useMoveConstituents();
|
||||||
const { deleteItem } = useDeleteItem();
|
const { deleteItem } = useDeleteItem();
|
||||||
|
|
||||||
const showCreateCst = useDialogsStore(state => state.showCreateCst);
|
const showCreateCst = useDialogsStore(state => state.showCreateCst);
|
||||||
|
@ -206,7 +206,7 @@ export const RSEditState = ({
|
||||||
|
|
||||||
function createCst(type: CstType | null, skipDialog: boolean, definition?: string) {
|
function createCst(type: CstType | null, skipDialog: boolean, definition?: string) {
|
||||||
const targetType = type ?? activeCst?.cst_type ?? CstType.BASE;
|
const targetType = type ?? activeCst?.cst_type ?? CstType.BASE;
|
||||||
const data: ICstCreateDTO = {
|
const data: ICreateConstituentaDTO = {
|
||||||
insert_after: activeCst?.id ?? null,
|
insert_after: activeCst?.id ?? null,
|
||||||
cst_type: targetType,
|
cst_type: targetType,
|
||||||
alias: generateAlias(targetType, schema),
|
alias: generateAlias(targetType, schema),
|
||||||
|
|
Loading…
Reference in New Issue
Block a user