From 13914a04f979954f17fbdff8656f5a71a005db72 Mon Sep 17 00:00:00 2001 From: Ivan <8611739+IRBorisov@users.noreply.github.com> Date: Mon, 21 Apr 2025 20:35:40 +0300 Subject: [PATCH] F: Implementing block UI pt1 --- .../apps/oss/serializers/data_access.py | 4 +- .../frontend/src/app/application-layout.tsx | 2 +- rsconcept/frontend/src/app/global-dialogs.tsx | 7 + .../{global-Loader.tsx => global-loader1.tsx} | 0 .../frontend/src/app/mutation-errors.tsx | 20 ++- rsconcept/frontend/src/components/icons.tsx | 1 + .../src/components/tabs/tab-label.tsx | 8 +- .../frontend/src/features/oss/backend/api.ts | 5 +- .../src/features/oss/backend/oss-loader.ts | 10 +- .../features/oss/components/pick-contents.tsx | 156 ++++++++++++++++++ .../features/oss/components/select-block.tsx | 28 ++++ .../dlg-create-block/dlg-create-block.tsx | 107 ++++++++++++ .../oss/dialogs/dlg-create-block/index.tsx | 1 + .../dlg-create-block/tab-block-card.tsx | 52 ++++++ .../dlg-create-block/tab-block-children.tsx | 39 +++++ .../dlg-create-operation.tsx | 16 +- .../tab-input-operation.tsx | 30 +++- .../tab-synthesis-operation.tsx | 30 +++- .../oss/dialogs/dlg-delete-operation.tsx | 4 +- .../dlg-edit-operation/dlg-edit-operation.tsx | 28 +++- .../dlg-edit-operation/tab-operation.tsx | 39 +++-- rsconcept/frontend/src/features/oss/labels.ts | 29 ++-- .../src/features/oss/models/oss-api.ts | 89 +++++++--- .../src/features/oss/models/oss-layout.ts | 10 +- .../frontend/src/features/oss/models/oss.ts | 3 + .../oss-page/editor-oss-card/oss-stats.tsx | 12 +- .../editor-oss-graph/graph/block-node.tsx | 19 ++- .../editor-oss-graph/graph/node-core.tsx | 14 ++ .../oss-page/editor-oss-graph/oss-flow.tsx | 85 ++++++++-- .../editor-oss-graph/toolbar-oss-graph.tsx | 32 +++- .../editor-oss-graph/use-get-layout.tsx | 7 +- .../src/features/oss/stores/oss-graph.ts | 6 + rsconcept/frontend/src/stores/dialogs.ts | 53 +++--- 33 files changed, 803 insertions(+), 143 deletions(-) rename rsconcept/frontend/src/app/{global-Loader.tsx => global-loader1.tsx} (100%) create mode 100644 rsconcept/frontend/src/features/oss/components/pick-contents.tsx create mode 100644 rsconcept/frontend/src/features/oss/components/select-block.tsx create mode 100644 rsconcept/frontend/src/features/oss/dialogs/dlg-create-block/dlg-create-block.tsx create mode 100644 rsconcept/frontend/src/features/oss/dialogs/dlg-create-block/index.tsx create mode 100644 rsconcept/frontend/src/features/oss/dialogs/dlg-create-block/tab-block-card.tsx create mode 100644 rsconcept/frontend/src/features/oss/dialogs/dlg-create-block/tab-block-children.tsx diff --git a/rsconcept/backend/apps/oss/serializers/data_access.py b/rsconcept/backend/apps/oss/serializers/data_access.py index 45957698..ac038843 100644 --- a/rsconcept/backend/apps/oss/serializers/data_access.py +++ b/rsconcept/backend/apps/oss/serializers/data_access.py @@ -198,7 +198,9 @@ class UpdateOperationSerializer(serializers.Serializer): 'target': msg.operationNotInOSS() }) - if 'parent' in attrs['item_data'] and attrs['item_data']['parent'].oss_id != oss.pk: + if 'parent' in attrs['item_data'] and \ + attrs['item_data']['parent'] is not None and \ + attrs['item_data']['parent'].oss_id != oss.pk: raise serializers.ValidationError({ 'parent': msg.parentNotInOSS() }) diff --git a/rsconcept/frontend/src/app/application-layout.tsx b/rsconcept/frontend/src/app/application-layout.tsx index 433adedc..9bee20b8 100644 --- a/rsconcept/frontend/src/app/application-layout.tsx +++ b/rsconcept/frontend/src/app/application-layout.tsx @@ -9,7 +9,7 @@ import { useDialogsStore } from '@/stores/dialogs'; import { NavigationState } from './navigation/navigation-context'; import { Footer } from './footer'; import { GlobalDialogs } from './global-dialogs'; -import { GlobalLoader } from './global-Loader'; +import { GlobalLoader } from './global-loader1'; import { ToasterThemed } from './global-toaster'; import { GlobalTooltips } from './global-tooltips'; import { MutationErrors } from './mutation-errors'; diff --git a/rsconcept/frontend/src/app/global-dialogs.tsx b/rsconcept/frontend/src/app/global-dialogs.tsx index 6893984f..9b62de62 100644 --- a/rsconcept/frontend/src/app/global-dialogs.tsx +++ b/rsconcept/frontend/src/app/global-dialogs.tsx @@ -113,6 +113,11 @@ const DlgUploadRSForm = React.lazy(() => const DlgGraphParams = React.lazy(() => import('@/features/rsform/dialogs/dlg-graph-params').then(module => ({ default: module.DlgGraphParams })) ); +const DlgCreateBlock = React.lazy(() => + import('@/features/oss/dialogs/dlg-create-block').then(module => ({ + default: module.DlgCreateBlock + })) +); export const GlobalDialogs = () => { const active = useDialogsStore(state => state.active); @@ -127,6 +132,8 @@ export const GlobalDialogs = () => { return ; case DialogType.CREATE_OPERATION: return ; + case DialogType.CREATE_BLOCK: + return ; case DialogType.DELETE_CONSTITUENTA: return ; case DialogType.EDIT_EDITORS: diff --git a/rsconcept/frontend/src/app/global-Loader.tsx b/rsconcept/frontend/src/app/global-loader1.tsx similarity index 100% rename from rsconcept/frontend/src/app/global-Loader.tsx rename to rsconcept/frontend/src/app/global-loader1.tsx diff --git a/rsconcept/frontend/src/app/mutation-errors.tsx b/rsconcept/frontend/src/app/mutation-errors.tsx index beb83acb..bbaa47e0 100644 --- a/rsconcept/frontend/src/app/mutation-errors.tsx +++ b/rsconcept/frontend/src/app/mutation-errors.tsx @@ -1,3 +1,5 @@ +import clsx from 'clsx'; + import { useMutationErrors } from '@/backend/use-mutation-errors'; import { Button } from '@/components/control'; import { DescribeError } from '@/components/info-error'; @@ -20,9 +22,23 @@ export function MutationErrors() { return (
-
+

Ошибка при обработке

-
+