fixed bug
This commit is contained in:
parent
15cb712c3d
commit
2f15b86a42
12 changed files with 167 additions and 89 deletions
|
@ -12,6 +12,9 @@ export const ArrayExtensions = () => {
|
||||||
}
|
}
|
||||||
if ([].atR === undefined) {
|
if ([].atR === undefined) {
|
||||||
Array.prototype.atR = function (index) {
|
Array.prototype.atR = function (index) {
|
||||||
|
if (index === undefined) {
|
||||||
|
return Result.error(undefined);
|
||||||
|
}
|
||||||
const result = this.at(index);
|
const result = this.at(index);
|
||||||
if (result) {
|
if (result) {
|
||||||
return Result.ok(result);
|
return Result.ok(result);
|
||||||
|
|
|
@ -29,7 +29,7 @@ declare global {
|
||||||
replacePropIndex(property: Partial<T>, index: number): T[];
|
replacePropIndex(property: Partial<T>, index: number): T[];
|
||||||
someR(predicate: (value: T) => boolean): Result<void, Array<T>>;
|
someR(predicate: (value: T) => boolean): Result<void, Array<T>>;
|
||||||
updateAll(value: Partial<T>): Array<T>;
|
updateAll(value: Partial<T>): Array<T>;
|
||||||
atR(index: number): Result<void, T>;
|
atR(index: number | undefined): Result<void, T>;
|
||||||
}
|
}
|
||||||
interface Date {
|
interface Date {
|
||||||
formatDate(): string;
|
formatDate(): string;
|
||||||
|
|
|
@ -1,12 +1,19 @@
|
||||||
import { IsNotEmpty, IsString } from "class-validator";
|
import { IsNotEmpty, IsString } from "class-validator";
|
||||||
import { BehaviorTreeBuilderStore } from "../../features/behavior_tree_builder/presentation/behavior_tree_builder_store";
|
import { BehaviorTreeBuilderStore } from "../../features/behavior_tree_builder/presentation/behavior_tree_builder_store";
|
||||||
import { datasetFormMockContext, datasetFormMockResult, defaultFormValue } from "../../features/dataset/dataset_model";
|
import {
|
||||||
|
datasetFormMockContext,
|
||||||
|
datasetFormMockResult,
|
||||||
|
defaultFormValue,
|
||||||
|
} from "../../features/dataset/dataset_model";
|
||||||
import { DependencyViewModel } from "./skill_model";
|
import { DependencyViewModel } from "./skill_model";
|
||||||
import { ValidationModel } from "./validation_model";
|
import { ValidationModel } from "./validation_model";
|
||||||
import { FormType } from "./form";
|
import { FormType } from "./form";
|
||||||
import makeAutoObservable from "mobx-store-inheritance";
|
import makeAutoObservable from "mobx-store-inheritance";
|
||||||
|
|
||||||
export class FormBuilderValidationModel extends ValidationModel implements DependencyViewModel {
|
export class FormBuilderValidationModel
|
||||||
|
extends ValidationModel
|
||||||
|
implements DependencyViewModel
|
||||||
|
{
|
||||||
@IsNotEmpty()
|
@IsNotEmpty()
|
||||||
@IsString()
|
@IsString()
|
||||||
public result: string;
|
public result: string;
|
||||||
|
@ -29,13 +36,22 @@ export class FormBuilderValidationModel extends ValidationModel implements Depen
|
||||||
formBuilderValidationModel.context.isEmpty() &&
|
formBuilderValidationModel.context.isEmpty() &&
|
||||||
formBuilderValidationModel.result.isEmpty() &&
|
formBuilderValidationModel.result.isEmpty() &&
|
||||||
formBuilderValidationModel.form.isEmpty();
|
formBuilderValidationModel.form.isEmpty();
|
||||||
|
static test = () =>
|
||||||
|
new FormBuilderValidationModel(ffContext, ff1Result, [], "");
|
||||||
static datasetEmpty = () =>
|
static datasetEmpty = () =>
|
||||||
new FormBuilderValidationModel(datasetFormMockContext, datasetFormMockResult, [], defaultFormValue);
|
new FormBuilderValidationModel(
|
||||||
|
datasetFormMockContext,
|
||||||
|
datasetFormMockResult,
|
||||||
|
[],
|
||||||
|
defaultFormValue
|
||||||
|
);
|
||||||
static empty = () => new FormBuilderValidationModel("", "", [], "");
|
static empty = () => new FormBuilderValidationModel("", "", [], "");
|
||||||
static emptyTest = () => new FormBuilderValidationModel(``, ``, [], defaultFormValue);
|
static emptyTest = () =>
|
||||||
static creteDataSetTest = () => new FormBuilderValidationModel(``, scene, [], "");
|
new FormBuilderValidationModel(``, ``, [], defaultFormValue);
|
||||||
static emptySimple = () => new FormBuilderValidationModel("", simpleFormBuilder, [], "");
|
static creteDataSetTest = () =>
|
||||||
|
new FormBuilderValidationModel(``, scene, [], "");
|
||||||
|
static emptySimple = () =>
|
||||||
|
new FormBuilderValidationModel("", simpleFormBuilder, [], "");
|
||||||
static vision = () =>
|
static vision = () =>
|
||||||
new FormBuilderValidationModel(
|
new FormBuilderValidationModel(
|
||||||
`ENUM PRETRAIN = "true","false";`,
|
`ENUM PRETRAIN = "true","false";`,
|
||||||
|
@ -55,3 +71,13 @@ export const scene = `{
|
||||||
export const simpleFormBuilder = `{
|
export const simpleFormBuilder = `{
|
||||||
"center_shell": [\${CENTER_SHELL_1:number:0}, \${CENTER_SHELL_2:number:0}, \${CENTER_SHELL_3:number:0}]
|
"center_shell": [\${CENTER_SHELL_1:number:0}, \${CENTER_SHELL_2:number:0}, \${CENTER_SHELL_3:number:0}]
|
||||||
}`;
|
}`;
|
||||||
|
export const ffContext = `type ITEM = {
|
||||||
|
"name": \${NAME:string:default},
|
||||||
|
"value": \${VALUE:string:default}
|
||||||
|
};
|
||||||
|
`;
|
||||||
|
|
||||||
|
export const ff1Result = `{
|
||||||
|
"empty":\${NAME:string:default},
|
||||||
|
"params": \${ITEM:Array<ITEM>:[]}
|
||||||
|
}`;
|
||||||
|
|
|
@ -21,7 +21,6 @@ export class ValidationModel {
|
||||||
if (error.constraints) result += Object.values(error.constraints).join(", ");
|
if (error.constraints) result += Object.values(error.constraints).join(", ");
|
||||||
return result;
|
return result;
|
||||||
});
|
});
|
||||||
console.log(message);
|
|
||||||
return Result.error(message.join(", \n"));
|
return Result.error(message.join(", \n"));
|
||||||
} else {
|
} else {
|
||||||
return Result.ok(this as unknown as T);
|
return Result.ok(this as unknown as T);
|
||||||
|
|
|
@ -141,5 +141,4 @@ export class CoreHttpRepository extends HttpRepository {
|
||||||
}
|
}
|
||||||
getAllScenes = () => this._jsonRequest<SceneModel[]>(HttpMethod.GET, "/scenes");
|
getAllScenes = () => this._jsonRequest<SceneModel[]>(HttpMethod.GET, "/scenes");
|
||||||
}
|
}
|
||||||
["", "", ""].map((el) => el.toLowerCase()).map((el) => el != "");
|
|
||||||
["", "", ""].map((el) => el.toLowerCase()).filter((el) => el != "");
|
|
|
@ -1,5 +1,9 @@
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import { FormViewModel, InputBuilderViewModel, InputType } from "./form_view_model";
|
import {
|
||||||
|
FormViewModel,
|
||||||
|
InputBuilderViewModel,
|
||||||
|
InputType,
|
||||||
|
} from "./form_view_model";
|
||||||
import { observer } from "mobx-react-lite";
|
import { observer } from "mobx-react-lite";
|
||||||
import { FormBuilderStore } from "./form_builder_store";
|
import { FormBuilderStore } from "./form_builder_store";
|
||||||
import { CoreSelect } from "../select/select";
|
import { CoreSelect } from "../select/select";
|
||||||
|
@ -46,7 +50,9 @@ export const FormBuilder = observer((props: IFormBuilder) => {
|
||||||
key={index}
|
key={index}
|
||||||
items={values}
|
items={values}
|
||||||
value={element.totalValue ?? element.defaultValue}
|
value={element.totalValue ?? element.defaultValue}
|
||||||
onChange={(value) => store.changeTotalValue(element.id, value)}
|
onChange={(value) =>
|
||||||
|
store.changeTotalValue(element.id, value)
|
||||||
|
}
|
||||||
label={element.name}
|
label={element.name}
|
||||||
style={{ margin: 20 }}
|
style={{ margin: 20 }}
|
||||||
/>
|
/>
|
||||||
|
@ -54,7 +60,10 @@ export const FormBuilder = observer((props: IFormBuilder) => {
|
||||||
}
|
}
|
||||||
if (element.type?.isEqual(InputType.ARRAY)) {
|
if (element.type?.isEqual(InputType.ARRAY)) {
|
||||||
return (
|
return (
|
||||||
<div key={index} style={{ border: "1px black solid", margin: 20 }}>
|
<div
|
||||||
|
key={index}
|
||||||
|
style={{ border: "1px black solid", margin: 20 }}
|
||||||
|
>
|
||||||
<div
|
<div
|
||||||
style={{
|
style={{
|
||||||
display: "flex",
|
display: "flex",
|
||||||
|
@ -78,51 +87,91 @@ export const FormBuilder = observer((props: IFormBuilder) => {
|
||||||
return (
|
return (
|
||||||
<div style={{ margin: 20 }}>
|
<div style={{ margin: 20 }}>
|
||||||
<div style={{ display: "flex" }}>
|
<div style={{ display: "flex" }}>
|
||||||
<CoreText text={(element.subType ?? "") + ` ${index}`} type={CoreTextType.medium} />
|
<CoreText
|
||||||
|
text={(element.subType ?? "") + ` ${index}`}
|
||||||
|
type={CoreTextType.medium}
|
||||||
|
/>
|
||||||
<Icon
|
<Icon
|
||||||
style={{ paddingLeft: 20 }}
|
style={{ paddingLeft: 20 }}
|
||||||
type="DeleteCircle"
|
type="DeleteCircle"
|
||||||
onClick={() => store.deleteTotalValueSubItem(element.id, index)}
|
onClick={() =>
|
||||||
|
store.deleteTotalValueSubItem(
|
||||||
|
element.id,
|
||||||
|
index
|
||||||
|
)
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{subArray.map((subSubArrayItem: InputBuilderViewModel, subIndex: number) => {
|
{subArray.map(
|
||||||
if (subSubArrayItem.type.isEqual(InputType.ENUM)) {
|
(
|
||||||
return (
|
subSubArrayItem: InputBuilderViewModel,
|
||||||
<>
|
subIndex: number
|
||||||
<CoreSelect
|
) => {
|
||||||
items={subSubArrayItem.values?.map((el) => String(el)) ?? []}
|
if (
|
||||||
value={subSubArrayItem.totalValue ?? subSubArrayItem.defaultValue}
|
subSubArrayItem.type.isEqual(
|
||||||
onChange={(value) => store.changeTotalSubValue(element.id, subIndex, value)}
|
InputType.ENUM
|
||||||
label={element.name}
|
)
|
||||||
style={{ margin: 5 }}
|
) {
|
||||||
/>
|
return (
|
||||||
</>
|
<>
|
||||||
);
|
<CoreSelect
|
||||||
}
|
items={
|
||||||
if (subSubArrayItem.type.isEqualMany([InputType.NUMBER, InputType.STRING]))
|
subSubArrayItem.values?.map(
|
||||||
return (
|
(el) => String(el)
|
||||||
<div>
|
) ?? []
|
||||||
<CoreInput
|
}
|
||||||
isFormBuilder={true}
|
value={
|
||||||
style={{ margin: 5 }}
|
subSubArrayItem.totalValue ??
|
||||||
onChange={(e) => {
|
subSubArrayItem.defaultValue
|
||||||
store.changeTotalSubValue(element.id, subIndex, e);
|
}
|
||||||
}}
|
onChange={(value) => console.log(subSubArrayItem.id)
|
||||||
validation={
|
}
|
||||||
subSubArrayItem.type.isEqual(InputType.NUMBER)
|
label={element.name}
|
||||||
? (el) => Number().isValid(el)
|
style={{ margin: 5 }}
|
||||||
: undefined
|
/>
|
||||||
}
|
</>
|
||||||
error="только числа"
|
);
|
||||||
value={subSubArrayItem.totalValue ?? subSubArrayItem.defaultValue}
|
}
|
||||||
label={subSubArrayItem.name}
|
if (
|
||||||
/>
|
subSubArrayItem.type.isEqualMany([
|
||||||
</div>
|
InputType.NUMBER,
|
||||||
);
|
InputType.STRING,
|
||||||
|
])
|
||||||
|
)
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<CoreInput
|
||||||
|
isFormBuilder={true}
|
||||||
|
style={{ margin: 5 }}
|
||||||
|
onChange={(e) =>
|
||||||
|
store.changeTotalSubValue(
|
||||||
|
element.id,
|
||||||
|
subIndex,
|
||||||
|
e,
|
||||||
|
index
|
||||||
|
)
|
||||||
|
}
|
||||||
|
validation={
|
||||||
|
subSubArrayItem.type.isEqual(
|
||||||
|
InputType.NUMBER
|
||||||
|
)
|
||||||
|
? (el) => Number().isValid(el)
|
||||||
|
: undefined
|
||||||
|
}
|
||||||
|
error="только числа"
|
||||||
|
value={
|
||||||
|
subSubArrayItem.totalValue ??
|
||||||
|
subSubArrayItem.defaultValue
|
||||||
|
}
|
||||||
|
label={subSubArrayItem.name}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
|
||||||
return <>Error</>;
|
return <>Error</>;
|
||||||
})}
|
}
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
})
|
})
|
||||||
|
@ -138,7 +187,11 @@ export const FormBuilder = observer((props: IFormBuilder) => {
|
||||||
<div>
|
<div>
|
||||||
<CoreInput
|
<CoreInput
|
||||||
isFormBuilder={true}
|
isFormBuilder={true}
|
||||||
validation={element.type.isEqual(InputType.NUMBER) ? (el) => Number().isValid(el) : undefined}
|
validation={
|
||||||
|
element.type.isEqual(InputType.NUMBER)
|
||||||
|
? (el) => Number().isValid(el)
|
||||||
|
: undefined
|
||||||
|
}
|
||||||
onChange={(e) => {
|
onChange={(e) => {
|
||||||
store.changeTotalValue(element.id, e);
|
store.changeTotalValue(element.id, e);
|
||||||
}}
|
}}
|
||||||
|
@ -153,7 +206,10 @@ export const FormBuilder = observer((props: IFormBuilder) => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{getFormBuilderComponents(
|
{getFormBuilderComponents(
|
||||||
element.name.replace(">", "").replace("<", "").replace("/", ""),
|
element.name
|
||||||
|
.replace(">", "")
|
||||||
|
.replace("<", "")
|
||||||
|
.replace("/", ""),
|
||||||
element.totalValue ?? element.defaultValue,
|
element.totalValue ?? element.defaultValue,
|
||||||
(text) => store.changeTotalValue(element.id, text)
|
(text) => store.changeTotalValue(element.id, text)
|
||||||
).fold(
|
).fold(
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
|
import clone from "just-clone";
|
||||||
import { makeAutoObservable } from "mobx";
|
import { makeAutoObservable } from "mobx";
|
||||||
import { FormViewModel } from "./form_view_model";
|
import { FormViewModel, InputBuilderViewModel } from "./form_view_model";
|
||||||
import { TypedEvent } from "../../helper/typed_event";
|
import { TypedEvent } from "../../helper/typed_event";
|
||||||
import { FormBuilderValidationModel } from "../../model/form_builder_validation_model";
|
import { FormBuilderValidationModel } from "../../model/form_builder_validation_model";
|
||||||
|
|
||||||
export class ChangerForm extends TypedEvent<FormBuilderValidationModel | undefined> {}
|
export class ChangerForm extends TypedEvent<FormBuilderValidationModel | undefined> {}
|
||||||
|
|
||||||
export class FormBuilderStore {
|
export class FormBuilderStore {
|
||||||
|
@ -15,30 +16,25 @@ export class FormBuilderStore {
|
||||||
this.changerForm = new ChangerForm();
|
this.changerForm = new ChangerForm();
|
||||||
}
|
}
|
||||||
|
|
||||||
changeTotalSubValue(id: string, subIndex: number, value: string) {
|
changeTotalSubValue(id: string, subIndex: number, value: string, arrayIndex: number | undefined = undefined) {
|
||||||
if (this.formViewModel?.inputs) {
|
if (this.formViewModel?.inputs) {
|
||||||
this.formViewModel.inputs = this.formViewModel?.inputs.map((el) => {
|
this.formViewModel.inputs = this.formViewModel?.inputs.map((el) => {
|
||||||
if (!el.id.isEqual(id)) {
|
if (!el.id.isEqual(id)) {
|
||||||
return el;
|
return el;
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
if (el.totalValue instanceof Array) {
|
if (el.totalValue instanceof Array) {
|
||||||
el.totalValue = el.totalValue.map((subElement) => {
|
el.totalValue.atR(arrayIndex).map((array) =>
|
||||||
if (subElement instanceof Array) {
|
array.atR(subIndex).map((element: InputBuilderViewModel) => {
|
||||||
subElement.map((subSubElement, i) => {
|
|
||||||
if (subIndex !== i) {
|
element.totalValue = value;
|
||||||
return subSubElement;
|
})
|
||||||
}
|
);
|
||||||
subSubElement.totalValue = value;
|
|
||||||
return subSubElement;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return subElement;
|
|
||||||
});
|
|
||||||
return el;
|
|
||||||
}
|
}
|
||||||
return el;
|
return el;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
this.changerForm.emit(this.formViewModel?.fromFormBuilderValidationModel());
|
this.changerForm.emit(this.formViewModel?.fromFormBuilderValidationModel());
|
||||||
}
|
}
|
||||||
|
@ -88,7 +84,7 @@ export class FormBuilderStore {
|
||||||
if (!(el.totalValue instanceof Array)) {
|
if (!(el.totalValue instanceof Array)) {
|
||||||
el.totalValue = [];
|
el.totalValue = [];
|
||||||
}
|
}
|
||||||
el.totalValue.push(el.values);
|
el.totalValue.push(clone(el.values as object));
|
||||||
return el;
|
return el;
|
||||||
});
|
});
|
||||||
this.changerForm.emit(this.formViewModel?.fromFormBuilderValidationModel());
|
this.changerForm.emit(this.formViewModel?.fromFormBuilderValidationModel());
|
||||||
|
|
|
@ -90,8 +90,13 @@ export class FormViewModel {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
|
return JSON.parse(
|
||||||
return JSON.parse(result.replace(/[^\x00-\x7F]/g, "").replaceAll("\n", "").replaceAll("\\", "").replaceAll("/", ""));
|
result
|
||||||
|
.replace(/[^\x00-\x7F]/g, "")
|
||||||
|
.replaceAll("\n", "")
|
||||||
|
.replaceAll("\\", "")
|
||||||
|
.replaceAll("/", "")
|
||||||
|
);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log("ERROR: FormViewModel json() " + result);
|
console.log("ERROR: FormViewModel json() " + result);
|
||||||
}
|
}
|
||||||
|
@ -128,7 +133,7 @@ export class FormViewModel {
|
||||||
element.totalValue.forEach((el) => {
|
element.totalValue.forEach((el) => {
|
||||||
const objectUnion = {};
|
const objectUnion = {};
|
||||||
let objectMapperResult = "";
|
let objectMapperResult = "";
|
||||||
if (el instanceof Array)
|
if (el instanceof Array) {
|
||||||
el.forEach((subElement) => {
|
el.forEach((subElement) => {
|
||||||
let subResult = subElement.totalValue ?? subElement.defaultValue;
|
let subResult = subElement.totalValue ?? subElement.defaultValue;
|
||||||
if (subElement.type.isEqualMany([InputType.STRING, InputType.ENUM])) {
|
if (subElement.type.isEqualMany([InputType.STRING, InputType.ENUM])) {
|
||||||
|
@ -141,6 +146,8 @@ export class FormViewModel {
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
objectUnion[subElement.name] = subResult;
|
objectUnion[subElement.name] = subResult;
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if (Object.keys(objectUnion).length !== 0) {
|
if (Object.keys(objectUnion).length !== 0) {
|
||||||
if (element.subType) {
|
if (element.subType) {
|
||||||
objectMapperResult = this.getTypeBody(element.subType);
|
objectMapperResult = this.getTypeBody(element.subType);
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
{
|
|
||||||
|
|
||||||
"params": [
|
|
||||||
{
|
|
||||||
"name": "default",
|
|
||||||
"value": "default"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
|
@ -45,13 +45,18 @@ export const FormBuilderForm = observer((props: IPropsForm<Partial<FormBuilderVa
|
||||||
) : (
|
) : (
|
||||||
<>
|
<>
|
||||||
<CoreInput
|
<CoreInput
|
||||||
|
style={{height:'100%'}}
|
||||||
|
|
||||||
value={store.viewModel.result}
|
value={store.viewModel.result}
|
||||||
label="Result"
|
label="Result"
|
||||||
|
styleContentEditable={{height:'100%'}}
|
||||||
onChange={(text) => store.updateForm({ result: text })}
|
onChange={(text) => store.updateForm({ result: text })}
|
||||||
/>
|
/>
|
||||||
<CoreInput
|
<CoreInput
|
||||||
|
style={{height:'100%'}}
|
||||||
value={store.viewModel.context}
|
value={store.viewModel.context}
|
||||||
label="Context"
|
label="Context"
|
||||||
|
styleContentEditable={{height:'100%'}}
|
||||||
onChange={(text) => store.updateForm({ context: text })}
|
onChange={(text) => store.updateForm({ context: text })}
|
||||||
/>
|
/>
|
||||||
<div style={{ width: 100 }}>
|
<div style={{ width: 100 }}>
|
||||||
|
|
|
@ -3,11 +3,11 @@ import { NavigateFunction } from "react-router-dom";
|
||||||
import { FormState, CoreError } from "../../../../../../core/store/base_store";
|
import { FormState, CoreError } from "../../../../../../core/store/base_store";
|
||||||
import { BehaviorTreeBuilderStore } from "../../../behavior_tree_builder_store";
|
import { BehaviorTreeBuilderStore } from "../../../behavior_tree_builder_store";
|
||||||
import { FormBuilderValidationModel } from "../../../../../../core/model/form_builder_validation_model";
|
import { FormBuilderValidationModel } from "../../../../../../core/model/form_builder_validation_model";
|
||||||
|
|
||||||
export class FormsFormBuilderStore extends FormState<FormBuilderValidationModel, CoreError> {
|
export class FormsFormBuilderStore extends FormState<FormBuilderValidationModel, CoreError> {
|
||||||
isBtScreen = false;
|
isBtScreen = false;
|
||||||
isModalOpen = false;
|
isModalOpen = false;
|
||||||
viewModel: FormBuilderValidationModel = FormBuilderValidationModel.datasetEmpty();
|
viewModel: FormBuilderValidationModel = FormBuilderValidationModel.empty();
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
makeAutoObservable(this);
|
makeAutoObservable(this);
|
||||||
|
|
|
@ -7,8 +7,6 @@ import { RouterProvider } from "react-router-dom";
|
||||||
import { router } from "./core/routers/routers";
|
import { router } from "./core/routers/routers";
|
||||||
import { configure } from "mobx";
|
import { configure } from "mobx";
|
||||||
import { ThemeStore } from "./core/store/theme_store";
|
import { ThemeStore } from "./core/store/theme_store";
|
||||||
import { FormBuilder } from "./core/ui/form_builder/form_builder";
|
|
||||||
import { FormBuilderValidationModel } from "./core/model/form_builder_validation_model";
|
|
||||||
|
|
||||||
configure({
|
configure({
|
||||||
enforceActions: "never",
|
enforceActions: "never",
|
||||||
|
@ -23,8 +21,6 @@ root.render(
|
||||||
<>
|
<>
|
||||||
<SocketListener>
|
<SocketListener>
|
||||||
<RouterProvider router={router} />
|
<RouterProvider router={router} />
|
||||||
|
|
||||||
|
|
||||||
</SocketListener>
|
</SocketListener>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue