webstudio/ui/src/features/create_pipeline/presentation/create_pipeline_screen.tsx

64 lines
2.4 KiB
TypeScript
Raw Normal View History

2023-11-10 12:06:40 +03:00
import * as React from "react";
2023-11-10 21:43:57 +03:00
import { Row, Button } from "antd";
2023-11-10 12:06:40 +03:00
import { LoadPage } from "../../../core/ui/pages/load_page";
2023-11-10 12:06:40 +03:00
import { observer } from "mobx-react-lite";
2023-11-10 21:43:57 +03:00
import { Icon, List } from "../../../core/ui/list/list";
2023-11-16 00:40:35 +03:00
import { CreateTriggerScreenPath } from "../../create_trigger/presentation/create_trigger_screen";
import { CreateProcessScreenPath } from "../../create_process/presentation/create_process_screen";
import { CreatePipelineStore } from "./create_pipeline_store";
import { CreatePipelineRepository } from "../data/create_pipeline_repository";
2023-11-10 12:06:40 +03:00
export const CreatePipelineScreenPath = "/create_pipeline";
export const CreatePipelineScreen: React.FunctionComponent = observer(() => {
const [createPipelineStore] = React.useState(() => new CreatePipelineStore(new CreatePipelineRepository()));
React.useEffect(() => {}, [createPipelineStore]);
2023-11-10 12:06:40 +03:00
return (
<>
<LoadPage
largeText={"Create pipeline"}
isError={createPipelineStore.isError}
isLoading={createPipelineStore.isLoading}
children={
<>
<Row>
<List
headers={"process"}
2023-11-16 00:40:35 +03:00
link={{ path: CreateProcessScreenPath, text: "create process" }}
2023-11-10 12:06:40 +03:00
values={createPipelineStore.processModels.map((el) => {
2023-11-10 21:43:57 +03:00
return { text: el.description, id: el._id };
2023-11-10 12:06:40 +03:00
})}
2023-11-10 21:43:57 +03:00
onClick={(e) => createPipelineStore.addProcess(e.text, e.id!)}
icon={Icon.add}
2023-11-10 12:06:40 +03:00
/>
<div style={{ flexGrow: "1" }}>
<Button onClick={() => createPipelineStore.createPipeline()}>Save result</Button>
2023-11-10 12:06:40 +03:00
<List
headers="new pipeline"
2023-11-10 21:43:57 +03:00
values={createPipelineStore.pipelineViewModels}
icon={Icon.delete}
onClick={(_e, index) => {
createPipelineStore.filterPipelineViewModel(index);
}}
2023-11-10 12:06:40 +03:00
/>
</div>
<List
headers="triggers"
2023-11-16 00:40:35 +03:00
link={{ path: CreateTriggerScreenPath, text: "create trigger" }}
2023-11-10 12:06:40 +03:00
values={createPipelineStore.triggersModels.map((el) => {
2023-11-10 21:43:57 +03:00
return { text: el.description, id: el._id };
2023-11-10 12:06:40 +03:00
})}
2023-11-10 21:43:57 +03:00
onClick={(e) => createPipelineStore.addTrigger(e.text, e.id!)}
icon={Icon.add}
2023-11-10 12:06:40 +03:00
/>
</Row>
</>
}
/>
</>
);
});