fixe form builder

This commit is contained in:
IDONTSUDO 2024-10-05 14:16:28 +03:00
parent c19e4c684e
commit 0dbc04f09b
28 changed files with 99 additions and 80 deletions

View file

@ -14,6 +14,7 @@ export enum FolderStructure {
datasets = "datasets",
behaviorTrees = "behavior_trees",
robots = "robots",
scenes = "scenes",
}
export class UploadCadFileToProjectScenario extends CallbackStrategyWithFileUpload {

View file

@ -9,7 +9,17 @@ import { ExecProcessUseCase } from "../../../core/usecases/exec_process_usecase"
export class CreateRobotScenario extends CallbackStrategyWithValidationModel<RobotModel> {
validationModel: RobotModel = new RobotModel();
call = async (model: RobotModel): ResponseBase => {
return Result.ok([]);
};
call = async (model: RobotModel): ResponseBase => (
await new SearchManyDataBaseModelUseCase<IProjectModel>(ProjectDBModel).call(
{ isActive: true },
"is dont active projects"
)
).map(async (projectModel) => {
const { rootDir } = projectModel[0];
rootDir + '/robots/'
return Result.ok([])
});
}

View file

@ -90,7 +90,8 @@ export class FormViewModel {
return;
}
try {
return JSON.parse(result.replaceAll("\n", "").replaceAll("\\", "").replaceAll("/", ""));
return JSON.parse(result.replace(/[^\x00-\x7F]/g, "").replaceAll("\n", "").replaceAll("\\", "").replaceAll("/", ""));
} catch (error) {
console.log("ERROR: FormViewModel json() " + result);
}
@ -159,8 +160,6 @@ export class FormViewModel {
}
}
// if(inputResult instanceof Array) console.log(inputResult.map((el) => JSON.parse(el)))
if (inputResult instanceof Array)
inputResult = JSON.stringify(inputResult.map((el) => JSON.parse(el.replace(/[^\x00-\x7F]/g, ""))));
operations.push({ regExp: new RegExp("\\${" + element.name + ".*?}"), result: inputResult });

View file

@ -0,0 +1,9 @@
{
"params": [
{
"name": "default",
"value": "default"
}
]
}

View file

@ -1,3 +0,0 @@
import { HttpRepository } from "../../../../core/repository/core_http_repository";
export class TrajectoryHttpRepository extends HttpRepository {}

View file

@ -1,12 +1,12 @@
import React from "react";
import { CoreButton } from "../../../../core/ui/button/button";
import { CoreButton } from "../../../../../core/ui/button/button";
import { IDefaultSceneManagerFormProps, isPreviewMode } from "../scene_manager_forms";
import { CoreInput } from "../../../../core/ui/input/input";
import { CoreText, CoreTextType } from "../../../../core/ui/text/text";
import { CoreSelect } from "../../../../core/ui/select/select";
import { CoreInput } from "../../../../../core/ui/input/input";
import { CoreText, CoreTextType } from "../../../../../core/ui/text/text";
import { CoreSelect } from "../../../../../core/ui/select/select";
import { CameraFormStore } from "./camera_store";
import { observer } from "mobx-react-lite";
import { CameraTypes } from "../../../../core/model/camera_model";
import { CameraTypes } from "../../../../../core/model/camera_model";
export const CameraForm = observer((props: IDefaultSceneManagerFormProps) => {
const [store] = React.useState(() => new CameraFormStore(props.store));

View file

@ -1,10 +1,10 @@
import makeAutoObservable from "mobx-store-inheritance";
import { NavigateFunction } from "react-router-dom";
import { FormState, CoreError } from "../../../../core/store/base_store";
import { FormState, CoreError } from "../../../../../core/store/base_store";
import { isPreviewMode } from "../scene_manager_forms";
import { CameraModel } from "../../../../core/model/camera_model";
import { CameraModel } from "../../../../../core/model/camera_model";
import { message } from "antd";
import { SceneBuilderStore } from "../../presentation/scene_builder_store";
import { SceneBuilderStore } from "../../scene_builder_store";
export class CameraFormStore extends FormState<CameraModel, CoreError> {
viewModel: CameraModel = CameraModel.empty();

View file

@ -1,6 +1,6 @@
import { NavigateFunction } from "react-router-dom";
import { FormState, CoreError } from "../../../../core/store/base_store";
import { LightModel } from "../../../../core/model/light_model";
import { FormState, CoreError } from "../../../../../core/store/base_store";
import { LightModel } from "../../../../../core/model/light_model";
export class LightStore extends FormState<LightModel, CoreError> {
viewModel: LightModel = LightModel.empty();

View file

@ -2,12 +2,12 @@ import React from "react";
import { observer } from "mobx-react-lite";
import { PointStore, PointStoreType } from "./point_store";
import { IDefaultSceneManagerFormProps } from "../scene_manager_forms";
import { CoreText, CoreTextType } from "../../../../core/ui/text/text";
import { CoreInput } from "../../../../core/ui/input/input";
import { CoreButton } from "../../../../core/ui/button/button";
import { CoreText, CoreTextType } from "../../../../../core/ui/text/text";
import { CoreInput } from "../../../../../core/ui/input/input";
import { CoreButton } from "../../../../../core/ui/button/button";
import { match } from "ts-pattern";
import { SpawnPositionTypesForm } from "../../presentation/components/spawn_position_types";
import { CoordsForm } from "../../presentation/components/coords_form";
import { SpawnPositionTypesForm } from "../../components/spawn_position_types";
import { CoordsForm } from "../../components/coords_form";
export const PointForm = observer((props: IDefaultSceneManagerFormProps) => {
const [store] = React.useState(() => new PointStore(props.store));

View file

@ -1,10 +1,10 @@
import makeAutoObservable from "mobx-store-inheritance";
import { NavigateFunction } from "react-router-dom";
import { PointModel } from "../../../../core/model/point_model";
import { FormState, CoreError } from "../../../../core/store/base_store";
import { SpawnPositionTypes } from "../../../../core/model/spawn_position_types";
import { PointModel } from "../../../../../core/model/point_model";
import { FormState, CoreError } from "../../../../../core/store/base_store";
import { SpawnPositionTypes } from "../../../../../core/model/spawn_position_types";
import { isPreviewMode } from "../scene_manager_forms";
import { SceneBuilderStore } from "../../presentation/scene_builder_store";
import { SceneBuilderStore } from "../../scene_builder_store";
export enum PointStoreType {
makeSceneSolidAndEditPosition = "makeSceneSolidAndEditPosition",

View file

@ -2,15 +2,15 @@ import React from "react";
import { observer } from "mobx-react-lite";
import { RobotFormStore, RobotStoreType } from "./robot_form_store";
import { IDefaultSceneManagerFormProps } from "../scene_manager_forms";
import { CoreText, CoreTextType } from "../../../../core/ui/text/text";
import { CoreInputNumber } from "../../../../core/ui/inputNumber/input_number";
import { CoreInput, CoreInputType } from "../../../../core/ui/input/input";
import { CoreText, CoreTextType } from "../../../../../core/ui/text/text";
import { CoreInputNumber } from "../../../../../core/ui/inputNumber/input_number";
import { CoreInput, CoreInputType } from "../../../../../core/ui/input/input";
import { match } from "ts-pattern";
import { CoreSelect } from "../../../../core/ui/select/select";
import { ToolTypes } from "../../../../core/model/robot_model";
import { CoreButton } from "../../../../core/ui/button/button";
import { SpawnPositionTypesForm } from "../../presentation/components/spawn_position_types";
import { CoordsForm } from "../../presentation/components/coords_form";
import { CoreSelect } from "../../../../../core/ui/select/select";
import { ToolTypes } from "../../../../../core/model/robot_model";
import { CoreButton } from "../../../../../core/ui/button/button";
import { SpawnPositionTypesForm } from "../../components/spawn_position_types";
import { CoordsForm } from "../../components/coords_form";
export const RobotForm = observer((props: IDefaultSceneManagerFormProps) => {
const [store] = React.useState(() => new RobotFormStore(props.store));

View file

@ -1,5 +1,5 @@
import { RobotModel } from "../../../../core/model/robot_model";
import { HttpMethod, HttpRepository } from "../../../../core/repository/core_http_repository";
import { RobotModel } from "../../../../../core/model/robot_model";
import { HttpMethod, HttpRepository } from "../../../../../core/repository/core_http_repository";
export interface RobotURL {
robotUrl: string;
}

View file

@ -1,11 +1,11 @@
import makeAutoObservable from "mobx-store-inheritance";
import { NavigateFunction } from "react-router-dom";
import { RobotFormHttpRepository } from "./robot_form_http_repository";
import { FormState, CoreError } from "../../../../core/store/base_store";
import { RobotModel } from "../../../../core/model/robot_model";
import { FormState, CoreError } from "../../../../../core/store/base_store";
import { RobotModel } from "../../../../../core/model/robot_model";
import { isPreviewMode } from "../scene_manager_forms";
import { message } from "antd";
import { SceneBuilderStore } from "../../presentation/scene_builder_store";
import { SceneBuilderStore } from "../../scene_builder_store";
export enum RobotStoreType {
previewRobot = "previewRobot",
@ -20,7 +20,7 @@ export class RobotFormStore extends FormState<RobotModel, CoreError> {
robotFormHttpRepository: RobotFormHttpRepository = new RobotFormHttpRepository();
spawnType: string;
listener: Function;
clickLister = (event: MouseEvent) =>
clickLister = (event: MouseEvent) => {
this.storeType.isEqualR(RobotStoreType.awaitMouseClick).map(() =>
this.sceneBuilderStore!.clickScene(event, this.sceneBuilderStore!.canvasOffsetX).map((vector3) => {
this.viewModel.position = vector3;
@ -32,6 +32,7 @@ export class RobotFormStore extends FormState<RobotModel, CoreError> {
this.sceneBuilderStore.visibleSaveButton();
})
);
};
selectSpawnType = (type: string) => {
this.spawnType = type;
@ -51,8 +52,7 @@ export class RobotFormStore extends FormState<RobotModel, CoreError> {
.isEqualR(RobotStoreType.previewRobot)
.map(
() => (
this.viewModel.update(this.sceneBuilderStore.coreThreeRepository!),
this.sceneBuilderStore.visibleSaveButton()
this.viewModel.update(this.sceneBuilderStore.coreThreeRepository!), this.sceneBuilderStore.visibleSaveButton()
)
);
createNewRobot = () =>
@ -88,4 +88,3 @@ export class RobotFormStore extends FormState<RobotModel, CoreError> {
)
);
}

View file

@ -1,6 +1,6 @@
import { Result } from "../../../core/helper/result";
import { SceneBuilderStore } from "../presentation/scene_builder_store";
import { SceneMangerStore } from "../../scene_manager/presentation/scene_manager_store";
import { Result } from "../../../../core/helper/result";
import { SceneBuilderStore } from "../scene_builder_store";
import { SceneMangerStore } from "../../../scene_manager/presentation/scene_manager_store";
import { CameraForm } from "./camera/camera_form";
import { LightForm } from "./light/light_form";
import { PointForm } from "./point/point_form";

View file

@ -1,13 +1,13 @@
import React from "react";
import { CoreText, CoreTextType } from "../../../../core/ui/text/text";
import { CoreText, CoreTextType } from "../../../../../core/ui/text/text";
import { IDefaultSceneManagerFormProps } from "../scene_manager_forms";
import { SolidBodyStore, SolidBodyStoreType } from "./solid_body_store";
import { observer } from "mobx-react-lite";
import { CoreButton } from "../../../../core/ui/button/button";
import { CoreButton } from "../../../../../core/ui/button/button";
import { match } from "ts-pattern";
import { SpawnPositionTypesForm } from "../../presentation/components/spawn_position_types";
import { CoreInput } from "../../../../core/ui/input/input";
import { CoordsForm } from "../../presentation/components/coords_form";
import { SpawnPositionTypesForm } from "../../components/spawn_position_types";
import { CoreInput } from "../../../../../core/ui/input/input";
import { CoordsForm } from "../../components/coords_form";
export const SolidBodyForm = observer((props: IDefaultSceneManagerFormProps) => {
const [store] = React.useState(() => new SolidBodyStore(props.store));

View file

@ -1,12 +1,12 @@
import makeAutoObservable from "mobx-store-inheritance";
import { FormState, CoreError } from "../../../../core/store/base_store";
import { CoreHttpRepository } from "../../../../core/repository/core_http_repository";
import { Parts } from "../../../details/details_http_repository";
import { FormState, CoreError } from "../../../../../core/store/base_store";
import { CoreHttpRepository } from "../../../../../core/repository/core_http_repository";
import { Parts } from "../../../../details/details_http_repository";
import { Vector2 } from "three";
import { SpawnPositionTypes } from "../../../../core/model/spawn_position_types";
import { SpawnPositionTypes } from "../../../../../core/model/spawn_position_types";
import { isPreviewMode } from "../scene_manager_forms";
import { SolidModel } from "../../../../core/model/solid_model";
import { SceneBuilderStore } from "../../presentation/scene_builder_store";
import { SolidModel } from "../../../../../core/model/solid_model";
import { SceneBuilderStore } from "../../scene_builder_store";
export enum SolidBodyStoreType {
selectBody = "selectBody",

View file

@ -0,0 +1,3 @@
import { HttpRepository } from "../../../../../core/repository/core_http_repository";
export class TrajectoryHttpRepository extends HttpRepository {}

View file

@ -2,7 +2,7 @@ import makeAutoObservable from "mobx-store-inheritance";
import { NavigateFunction } from "react-router-dom";
import { TrajectoryViewModel } from "./trajectory_view_model";
import { TrajectoryHttpRepository } from "./trajectory_http_repository";
import { FormState, CoreError } from "../../../../core/store/base_store";
import { FormState, CoreError } from "../../../../../core/store/base_store";
export class TrajectoryStore extends FormState<TrajectoryViewModel, CoreError> {
constructor() {

View file

@ -1,4 +1,4 @@
import { Result } from "../../../../core/helper/result";
import { Result } from "../../../../../core/helper/result";
export class TrajectoryViewModel {

View file

@ -2,8 +2,8 @@ import React from "react";
import { observer } from "mobx-react-lite";
import { ZoneStore } from "./zone_store";
import { IDefaultSceneManagerFormProps } from "../scene_manager_forms";
import { CoreText, CoreTextType } from "../../../../core/ui/text/text";
import { CoreInput } from "../../../../core/ui/input/input";
import { CoreText, CoreTextType } from "../../../../../core/ui/text/text";
import { CoreInput } from "../../../../../core/ui/input/input";
export const ZoneForm = observer((props: IDefaultSceneManagerFormProps) => {
const [store] = React.useState(() => new ZoneStore(props.store));

View file

@ -1,11 +1,11 @@
import makeAutoObservable from "mobx-store-inheritance";
import { NavigateFunction } from "react-router-dom";
import { ZoneModel } from "../../../../core/model/zone_model";
import { ZoneModel } from "../../../../../core/model/zone_model";
import { FormState, CoreError } from "../../../../core/store/base_store";
import { FormState, CoreError } from "../../../../../core/store/base_store";
import { isPreviewMode } from "../scene_manager_forms";
import { SceneMangerStore } from "../../../scene_manager/presentation/scene_manager_store";
import { SceneBuilderStore } from "../../presentation/scene_builder_store";
import { SceneMangerStore } from "../../../../scene_manager/presentation/scene_manager_store";
import { SceneBuilderStore } from "../../scene_builder_store";
export enum ZoneStoreType {
preview = "preview",
}

View file

@ -9,7 +9,7 @@ import { Icon } from "../../../core/ui/icons/icons";
import { MainPage } from "../../../core/ui/pages/main_page";
import { CoreText, CoreTextType } from "../../../core/ui/text/text";
import { SceneMode } from "../../scene_manager/model/scene_view";
import { sceneManagerForms } from "../forms/scene_manager_forms";
import { sceneManagerForms } from "./forms/scene_manager_forms";
export const SceneBuilderScreenPath = "/scene/builder/";

View file

@ -13,7 +13,7 @@ import { CoreThreeRepository } from "../../../core/repository/core_three_reposit
import { SceneModel } from "../../scene_manager/model/scene_model";
import { SceneMode } from "../../scene_manager/model/scene_view";
import { SceneViewModel } from "../../scene_manager/model/scene_view_model";
import { SceneManagerForms } from "../forms/scene_manager_forms";
import { SceneManagerForms } from "./forms/scene_manager_forms";
import { FormState } from "../../../core/store/base_store";
import { Result } from "../../../core/helper/result";
import { SceneBuilderHttpRepository } from "../data/scene_builder_repository";

View file

@ -1,10 +1,7 @@
import { Result } from "../../../core/helper/result";
import { HttpMethod, CoreHttpRepository } from "../../../core/repository/core_http_repository";
import { CoreError } from "../../../core/store/base_store";
import { SceneViewModel } from "../model/scene_view_model";
export class SceneHttpRepository extends CoreHttpRepository {
deleteScene = (sceneId:string) => this._jsonRequest(HttpMethod.DELETE, '/scenes', )
newScene = (sceneViewModel: SceneViewModel) =>
this._jsonRequest(HttpMethod.POST, "/scenes", sceneViewModel) as unknown as Promise<Result<CoreError, void>>;
deleteScene = (sceneId: string) => this._jsonRequest(HttpMethod.DELETE, `/scenes?id=${sceneId}`);
newScene = (sceneViewModel: SceneViewModel) => this._jsonRequest(HttpMethod.POST, "/scenes", sceneViewModel);
}

View file

@ -9,7 +9,7 @@ import { CoreButton } from "../../../core/ui/button/button";
import { CoreInput } from "../../../core/ui/input/input";
import { DrawersDataset } from "../../dataset/dataset_store";
import { Icon } from "../../../core/ui/icons/icons";
import { sceneManagerForms } from "../../scene_builder/forms/scene_manager_forms";
import { sceneManagerForms } from "../../scene_builder/presentation/forms/scene_manager_forms";
import { SceneMode } from "../model/scene_view";
import { useStore } from "../../../core/helper/use_store";
import { SceneBuilderScreenPath } from "../../scene_builder/presentation/scene_builder_screen";
@ -74,7 +74,12 @@ export const SceneManger = observer(() => {
textStyle={{ color: "black", textAlign: "center" }}
style={{ marginRight: 10, backgroundColor: "white", width: 126 }}
/>
<Icon style={{ height: 20 }} type={"DeleteCircle"} color="red" />
<Icon
style={{ height: 20 }}
type={"DeleteCircle"}
color="red"
onClick={() => store.clickDeleteScene(el._id as string)}
/>
</div>
</div>
))}

View file

@ -15,7 +15,6 @@ import { PointModel } from "../../../core/model/point_model";
import { RobotModel } from "../../../core/model/robot_model";
import { ZoneModel } from "../../../core/model/zone_model";
export enum DrawersSceneManager {
NewScene = "Новая сцена",
}
@ -48,7 +47,6 @@ export class SceneMangerStore extends UiDrawerFormState<SceneViewModel, HttpErro
this.sceneHttpRepository = new SceneHttpRepository();
}
createNewScene = () =>
this.viewModel.valid().fold(
async (s) => {
@ -72,8 +70,9 @@ export class SceneMangerStore extends UiDrawerFormState<SceneViewModel, HttpErro
errorHandingStrategy = (error: HttpError) =>
error.status.isEqualR(404).map(() => this.errors.push(new UiBaseError(`not found to project`)));
clickDeleteScene = async () => {
await this.messageHttp(this.sceneHttpRepository.deleteScene(this.activeSceneId), {
clickDeleteScene = async (sceneId: string) => {
console.log(sceneId)
await this.messageHttp(this.sceneHttpRepository.deleteScene(sceneId), {
successMessage: "сцена удалена",
});
this.mapOk("scenes", this.sceneHttpRepository.getAllScenes());