Skip to content
This repository was archived by the owner on Jun 13, 2024. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion src/components/containers/ParamListContainer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,6 @@ const ParamListContainer = ({
return (
<>
{paramList.parameters.map((parameter, index) => {
console.log(subtypes[parameter.type](parameter));
return (
<Fragment key={index}>
{matrix ? (
Expand Down
87 changes: 66 additions & 21 deletions src/state/Store.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -442,22 +442,76 @@ const Actions: StoreActions = {
),
});
}),
// TODO: refactor and handle by DefinitionStore
updateWorkflowElement: action((state, payload) => {
const workflowDef = state.definitions.workflows[state.selectedWorkflowId];
const workflow = workflowDef.value;
const wf = workflowDef.value;
const newName = payload.data.parameters?.name || payload.data.name;
const changedName = newName !== payload.data.name;

setWorkflowDefinition(state, workflow.name, {
const elements = wf.elements.map((element) => {
if (element.id === payload.id) {
return {
...element,
...payload,
id: newName,
};
} else if (element.type === 'requires' && changedName) {
const connection = element as Connection;

if (connection.source === payload.id) {
return {
...element,
source: newName,
sourceHandle: `${newName}_source`,
};
} else if (connection.target === payload.id) {
return {
...element,
target: newName,
targetHandle: `${newName}_target`,
};
}
}

return element;
});

// TODO: optimize this
const jobs = wf.jobs.map((staged) => {
if (staged.name === payload.id) {
return payload.data;
}

if (staged.parameters?.requires && changedName) {
const requires = staged.parameters.requires.map((req) => {
if (req === payload.id) {
return newName;
} else {
return req;
}
});

if (staged instanceof workflow.WorkflowJob) {
return new workflow.WorkflowJob(staged.job, {
...staged.parameters,
requires,
});
}

return new workflow.WorkflowJobApproval(staged.name, {
...staged.parameters,
requires,
});
}

return staged;
});

setWorkflowDefinition(state, wf.name, {
...workflowDef,

value: new WorkflowStage(
workflow.name,
workflow.id,
workflow.jobs,
workflow.when,
workflow.elements.map((e) =>
e.id === payload.id ? { ...e, data: payload.data } : e,
),
),
value: new WorkflowStage(wf.name, wf.id, jobs, wf.when, elements),
});
}),

Expand Down Expand Up @@ -663,15 +717,6 @@ const Actions: StoreActions = {
state.config = payload.generate();
}),
generateConfig: action((state, payload) => {
const stages = Object.values(state.definitions.workflows);
const workflows = stages.map((stage) => {
const jobs = stage.value.elements
.filter((element) => element.type === JobMapping.key)
.map((element) => element.data);

return new Workflow(stage.value.name, jobs);
});

const defs = state.definitions;
// This is a merged config preview. TODO: Refactor merging process.
const merge = (cur: any, update: any) =>
Expand Down Expand Up @@ -701,7 +746,7 @@ const Actions: StoreActions = {
const config = new Config(
false,
merge(defArrays.jobs, payloadArrays?.jobs),
workflows,
merge(defArrays.workflows, payloadArrays?.workflows),
merge(defArrays.executors, payloadArrays?.executors),
merge(defArrays.commands, payloadArrays?.commands),
parameterList,
Expand Down