diff --git a/server/src/features/skills/model/skills_database_model.ts b/server/src/features/skills/model/skills_database_model.ts index 1c447a2..578ee22 100644 --- a/server/src/features/skills/model/skills_database_model.ts +++ b/server/src/features/skills/model/skills_database_model.ts @@ -1,5 +1,4 @@ import { Schema, model } from "mongoose"; -import { Launch } from "../../../core/models/skill_model"; export interface ISkillsModel {} @@ -10,6 +9,9 @@ export const SkillsSchema = new Schema({ Module: { type: Schema.Types.Mixed, }, + Settings:{ + type:Schema.Types.Mixed, + }, BTAction: { type: Schema.Types.Mixed, }, diff --git a/ui/src/core/model/form_builder_validation_model.tsx b/ui/src/core/model/form_builder_validation_model.tsx index 0cf3fb8..f616eec 100644 --- a/ui/src/core/model/form_builder_validation_model.tsx +++ b/ui/src/core/model/form_builder_validation_model.tsx @@ -4,7 +4,8 @@ import { datasetFormMockContext, datasetFormMockResult, defaultFormValue } from import { DependencyViewModel } from "./skill_model"; import { ValidationModel } from "./validation_model"; import { FormType } from "./form"; - +import makeAutoObservable from "mobx-store-inheritance"; + export class FormBuilderValidationModel extends ValidationModel implements DependencyViewModel { @IsNotEmpty() @IsString() @@ -16,6 +17,7 @@ export class FormBuilderValidationModel extends ValidationModel implements Depen public output: any; constructor(context: string, result: string, form: string[], output: string) { super(); + makeAutoObservable(this); this.context = context; this.result = result; this.form = form; @@ -28,20 +30,14 @@ export class FormBuilderValidationModel extends ValidationModel implements Depen formBuilderValidationModel.result.isEmpty() && formBuilderValidationModel.form.isEmpty(); - static datasetEmpty() { - return new FormBuilderValidationModel(datasetFormMockContext, datasetFormMockResult, [], defaultFormValue); - } - static empty() { - return new FormBuilderValidationModel("", "", [], ""); - } - static emptyTest() { - return new FormBuilderValidationModel(``, ``, [], defaultFormValue); - } - static creteDataSetTest() { - return new FormBuilderValidationModel(``, scene, [], ""); - } - static vision(): FormBuilderValidationModel { - return new FormBuilderValidationModel( + static datasetEmpty = () => + new FormBuilderValidationModel(datasetFormMockContext, datasetFormMockResult, [], defaultFormValue); + static empty = () => new FormBuilderValidationModel("", "", [], ""); + static emptyTest = () => new FormBuilderValidationModel(``, ``, [], defaultFormValue); + static creteDataSetTest = () => new FormBuilderValidationModel(``, scene, [], ""); + static emptySimple = () => new FormBuilderValidationModel("", simpleFormBuilder, [], ""); + static vision = () => + new FormBuilderValidationModel( `ENUM PRETRAIN = "true","false";`, `{ "numberOfEpochs": \${numberOfEpochs:number:10}, @@ -51,9 +47,11 @@ export class FormBuilderValidationModel extends ValidationModel implements Depen [], "" ); - } } export const scene = `{ "center_shell": [\${CENTER_SHELL_1:number:0}, \${CENTER_SHELL_2:number:0}, \${CENTER_SHELL_3:number:0}], "scene":\${:OBJECT:{"details": []} }`; +export const simpleFormBuilder = `{ + "center_shell": [\${CENTER_SHELL_1:number:0}, \${CENTER_SHELL_2:number:0}, \${CENTER_SHELL_3:number:0}] +}`; diff --git a/ui/src/core/model/skill_model.ts b/ui/src/core/model/skill_model.ts index 5ef57b0..913b690 100644 --- a/ui/src/core/model/skill_model.ts +++ b/ui/src/core/model/skill_model.ts @@ -248,12 +248,15 @@ export class SkillModel extends ValidationModel implements ISkill { topicsOut: TopicViewModel[] = []; @Type(() => Launch) Launch: Launch; + @Type(() => FormBuilderValidationModel) + Settings: FormBuilderValidationModel; static empty() { const skillModel = new SkillModel(); skillModel.BTAction = []; skillModel.SkillPackage = SkillPackage.empty(); skillModel.Module = Module.empty(); skillModel.Launch = Launch.empty(); + skillModel.Settings = FormBuilderValidationModel.empty(); return skillModel; } public static isEmpty(skill: SkillModel): Result { diff --git a/ui/src/core/ui/input/input.tsx b/ui/src/core/ui/input/input.tsx index 7dccf93..3969f20 100644 --- a/ui/src/core/ui/input/input.tsx +++ b/ui/src/core/ui/input/input.tsx @@ -15,6 +15,7 @@ interface IInputProps extends IStyle { error?: string; type?: CoreInputType; trim?: boolean; + styleContentEditable?: React.CSSProperties; } export const CoreInput = (props: IInputProps) => { @@ -50,19 +51,22 @@ export const CoreInput = (props: IInputProps) => {
{ let val = e.currentTarget.innerText; diff --git a/ui/src/features/skills/skills_screen.tsx b/ui/src/features/skills/skills_screen.tsx index 232c28f..fa648c8 100644 --- a/ui/src/features/skills/skills_screen.tsx +++ b/ui/src/features/skills/skills_screen.tsx @@ -9,12 +9,13 @@ import { btDependencyFormBuilder } from "../behavior_tree_builder/presentation/u import { CoreButton } from "../../core/ui/button/button"; import { CoreSelect } from "../../core/ui/select/select"; import { useStore } from "../../core/helper/use_store"; +import { FormBuilder } from "../../core/ui/form_builder/form_builder"; +import { ButtonV2 } from "../../core/ui/button/button_v2"; export const SkillsScreenPath = "/skills"; export const SkillsScreen = observer(() => { const store = useStore(SkillsStore); - return ( <>
@@ -125,6 +126,37 @@ export const SkillsScreen = observer(() => { store.updateForm({ Launch: Object.assign(store.viewModel.Launch, { executable: text }) }) } /> + + store.updateForm({ Settings: Object.assign(store.viewModel.Settings, { result: text }) }) + } + /> + + store.updateForm({ Settings: Object.assign(store.viewModel.Settings, { context: text }) }) + } + /> + (store.formBuilderModal = true)} /> + + store.updateForm({ Settings: form })} + /> + store.handleFormBuilderModalCancel} /> + { store.updateForm({ BTAction: store.viewModel.BTAction.replacePropIndex({ type: text }, index) }) } /> - + { store.saveNewSkill()} />
+ (store.selectParam = undefined)} @@ -224,4 +257,3 @@ export const SkillsScreen = observer(() => { ); }); - \ No newline at end of file diff --git a/ui/src/features/skills/skills_store.ts b/ui/src/features/skills/skills_store.ts index 7a48be6..480ec45 100644 --- a/ui/src/features/skills/skills_store.ts +++ b/ui/src/features/skills/skills_store.ts @@ -20,11 +20,12 @@ export class SkillsStore extends UiDrawerFormState { }; skills: SkillModel[]; skillsHttpRepository: SkillsHttpRepository = new SkillsHttpRepository(); - + formBuilderModal: boolean = false; constructor() { super(DrawersSkills); makeAutoObservable(this); } + handleFormBuilderModalCancel = () => (this.formBuilderModal = false); init = async (navigate?: NavigateFunction | undefined) => { this.mapOk("skills", this.skillsHttpRepository.getAllSkills()); };