All files / src/pages/VisProgPage/visualProgrammingUI/components PlanEditingFunctions.tsx

0% Statements 0/5
0% Branches 0/2
0% Functions 0/3
0% Lines 0/5

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35                                                                     
// This file is to avoid sharing both functions and components which eslint dislikes. :)
import type { GoalNode } from "../nodes/GoalNode"
import type { Goal, Plan } from "./Plan"
 
/**
 * Inserts a goal into a plan
 * @param plan: plan to insert goal into
 * @param goalNode: the goal node to insert into the plan.
 * @returns: a new plan with the goal inside.
 */
export function insertGoalInPlan(plan: Plan, goalNode: GoalNode): Plan {
    const planElement : Goal = {
        id: goalNode.id,
        type: "goal",
    }
 
    return {
        ...plan,
        steps: [...plan.steps, planElement],
    }
}
 
 
/**
 * Deletes a goal from  a plan
 * @param plan: plan to delete goal from
 * @param goalID: the goal node to delete.
 * @returns: a new plan with the goal removed.
 */
export function deleteGoalInPlanByID(plan: Plan, goalID: string) {
    const updatedPlan = {...plan,
        steps: plan.steps.filter((x) => x.id !== goalID)
    }
    return updatedPlan.steps.length == 0 ? undefined : updatedPlan
}