fixe form builder
This commit is contained in:
parent
c19e4c684e
commit
0dbc04f09b
28 changed files with 99 additions and 80 deletions
|
@ -14,6 +14,7 @@ export enum FolderStructure {
|
|||
datasets = "datasets",
|
||||
behaviorTrees = "behavior_trees",
|
||||
robots = "robots",
|
||||
scenes = "scenes",
|
||||
}
|
||||
|
||||
export class UploadCadFileToProjectScenario extends CallbackStrategyWithFileUpload {
|
||||
|
|
|
@ -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([])
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -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 });
|
||||
|
|
9
ui/src/core/ui/form_builder/p.json
Normal file
9
ui/src/core/ui/form_builder/p.json
Normal file
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
|
||||
"params": [
|
||||
{
|
||||
"name": "default",
|
||||
"value": "default"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
import { HttpRepository } from "../../../../core/repository/core_http_repository";
|
||||
|
||||
export class TrajectoryHttpRepository extends HttpRepository {}
|
|
@ -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));
|
|
@ -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();
|
|
@ -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();
|
|
@ -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));
|
|
@ -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",
|
|
@ -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));
|
|
@ -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;
|
||||
}
|
|
@ -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> {
|
|||
)
|
||||
);
|
||||
}
|
||||
|
|
@ -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";
|
|
@ -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));
|
|
@ -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",
|
|
@ -0,0 +1,3 @@
|
|||
import { HttpRepository } from "../../../../../core/repository/core_http_repository";
|
||||
|
||||
export class TrajectoryHttpRepository extends HttpRepository {}
|
|
@ -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() {
|
|
@ -1,4 +1,4 @@
|
|||
import { Result } from "../../../../core/helper/result";
|
||||
import { Result } from "../../../../../core/helper/result";
|
||||
|
||||
|
||||
export class TrajectoryViewModel {
|
|
@ -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));
|
|
@ -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",
|
||||
}
|
|
@ -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/";
|
||||
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
))}
|
||||
|
|
|
@ -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());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue