Skip to content
Open
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 components/hooks/ProblemProvider/Problem.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ export function useProblem(url) {
const state = {};
[state.problemInfoMap] = useProblemInfoMap(url);
[state.problemNameMap] = useProblemNameMap(state.problemInfoMap);
[state.problemType, state.setProblemType] = useState("NPC");
[state.problemName, state.setProblemName] = useProblemName(state.problemNameMap);
[state.problemInstance, state.setProblemInstance] = useState("{{1,2,3},{1,2},GENERIC}"); // Careful about changing this value, the application boot up sequence is dependent on having a default value.
return state;
Expand Down
38 changes: 19 additions & 19 deletions components/hooks/ProblemProvider/Reducer.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@ const DEFAULT_CLIQUE_CHOSEN_REDUCTION_TYPE = "SipserReduceToCliqueStandard";
const DEFAULT_CLIQUE_CHOSEN_REDUCE_TO = "VERTEXCOVER";
const DEFAULT_VERTEXCOVER_CHOSEN_REDUCTION_TYPE = "sipserReduceToVC";

export function useReducer(url, problemName, problemType, problemInstance) {
export function useReducer(url, problemName, problemInstance) {
const state = {};
[state.reduceToOptions] = useReduceToOptions(url, problemName, problemType);
[state.reduceToOptions] = useReduceToOptions(url, problemName);
[state.chosenReduceTo, state.setChosenReduceTo] = useChosenReduceTo(problemName, state.reduceToOptions);
[state.reductionNameMap] = useReductionNameMap(url, problemName, state.chosenReduceTo);
[state.reductionTypeOptions] = useReductionTypeOptions(url, problemName, problemType, state.chosenReduceTo);
[state.reductionTypeOptions] = useReductionTypeOptions(url, problemName, state.chosenReduceTo);
[state.chosenReductionType, state.setChosenReductionType] = useChosenReductionType(
problemName,
state.chosenReduceTo,
Expand Down Expand Up @@ -84,42 +84,42 @@ function useReductionVisualization(url, chosenReduceTo) {
return [reductionVisualization, setReductionVisualization];
}

function useReduceToOptions(url, problemName, problemType) {
function useReduceToOptions(url, problemName) {
const [reduceToOptions, setReduceToOptions] = useState([]);

useEffect(() => {
(async () => {
setReduceToOptions(
(problemName && problemType ? (await requestReductionOptions(url, problemName, problemType)) ?? [] : []).sort()
(problemName ? (await requestReductionOptions(url, problemName)) ?? [] : []).sort()
);
})();
}, [problemName, problemType, url]);
}, [problemName, url]);

return [reduceToOptions, setReduceToOptions];
}

function useReductionTypeOptions(url, problemName, problemType, chosenReduceTo) {
function useReductionTypeOptions(url, problemName, chosenReduceTo) {
const [reductionTypeOptions, setReductionTypeOptions] = useState([]);

async function requestPreparedReductions(url, problemName, chosenReduceTo) {
const reductions = (await requestReductions(url, problemName, chosenReduceTo)) ?? [];
let path = "";
for (const reduction of reductions) {
path += reduction[0] + "-";
}
return path !== "" ? [path.slice(0, -1)] : [];
}

useEffect(() => {
(async () => {
setReductionTypeOptions(
(problemName && problemType && chosenReduceTo
? (await requestPreparedReductions(url, problemName, chosenReduceTo, problemType)) ?? []
(problemName && chosenReduceTo
? (await requestPreparedReductions(url, problemName, chosenReduceTo)) ?? []
Comment thread
github-advanced-security[bot] marked this conversation as resolved.
Fixed
: []
).sort()
);
})();
}, [problemType, chosenReduceTo, url, problemName]);

async function requestPreparedReductions(url, problemName, chosenReduceTo, problemType) {
const reductions = (await requestReductions(url, problemName, chosenReduceTo, problemType)) ?? [];
let path = "";
for (const reduction of reductions) {
path += reduction[0] + "-";
}
return path !== "" ? [path.slice(0, -1)] : [];
}
}, [chosenReduceTo, url, problemName]);

return [reductionTypeOptions, setReductionTypeOptions];
}
Expand Down
10 changes: 5 additions & 5 deletions components/hooks/ProblemProvider/Solver.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ import { useGenericInfo } from "../ProblemProvider";
import { requestInfo, requestSolvers } from "../../redux";
import React, { useEffect, useState, useRef } from "react";

export function useSolver(url, problemName, problemType, problemNameMap, problemInfoMap, problemInstance) {
export function useSolver(url, problemName, problemNameMap, problemInfoMap, problemInstance) {
const state = {};
/// Maps each problem name to its default solver name.
[state.defaultSolverMap] = useDefaultSolverMap(url, problemInfoMap);
[state.solverOptions] = useSolverOptions(url, problemName, problemType);
[state.solverOptions] = useSolverOptions(url, problemName);
[state.chosenSolver, state.setChosenSolver] = useChosenSolver(problemName, state.defaultSolverMap);
[state.solverNameMap] = useSolverNameMap(url, problemNameMap);
[state.solvedInstance, state.setSolvedInstance] = useSolvedInstance(problemInstance, state.chosenSolver);
Expand Down Expand Up @@ -86,14 +86,14 @@ function useDefaultSolverMap(url, problemInfoMap) {
return [defaultSolverMap, setDefaultSolverMap];
}

function useSolverOptions(url, problemName, problemType) {
function useSolverOptions(url, problemName) {
const [solverOptions, setSolverOptions] = useState([]);

useEffect(() => {
(async () => {
setSolverOptions(problemName && problemType ? (await requestSolvers(url, problemName, problemType)) ?? [] : []);
setSolverOptions(problemName ? (await requestSolvers(url, problemName)) ?? [] : []);
})();
}, [problemName, problemType, url]);
}, [problemName, url]);

return [solverOptions, setSolverOptions];
}
Expand Down
10 changes: 5 additions & 5 deletions components/hooks/ProblemProvider/Verifier.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ import { useGenericInfo } from "../ProblemProvider";
import { requestInfo, requestVerifiers } from "../../redux";
import React, { useEffect, useState, useRef } from "react";

export function useVerifier(url, problemName, problemType, problemNameMap, problemInfoMap) {
export function useVerifier(url, problemName, problemNameMap, problemInfoMap) {
const state = {};
[state.defaultVerifierMap] = useDefaultVerifierMap(url, problemInfoMap);
[state.verifierOptions] = useVerifierOptions(url, problemName, problemType);
[state.verifierOptions] = useVerifierOptions(url, problemName);
[state.chosenVerifier, state.setChosenVerifier] = useChosenVerifier(problemName, state.defaultVerifierMap);
[state.verifierNameMap] = useVerifierNameMap(url, problemNameMap);
return state;
Expand Down Expand Up @@ -45,16 +45,16 @@ function useDefaultVerifierMap(url, problemInfoMap) {
return [defaultVerifierMap, setDefaultVerifierMap];
}

function useVerifierOptions(url, problemName, problemType) {
function useVerifierOptions(url, problemName) {
const [verifierOptions, setVerifierOptions] = useState([]);

useEffect(() => {
(async () => {
setVerifierOptions(
problemName && problemType ? (await requestVerifiers(url, problemName, problemType)) ?? [] : []
problemName ? (await requestVerifiers(url, problemName)) ?? [] : []
);
})();
}, [problemName, problemType, url]);
}, [problemName, url]);

return [verifierOptions, setVerifierOptions];
}
Expand Down
10 changes: 5 additions & 5 deletions components/hooks/ProblemProvider/Visualization.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ import { useGenericInfo } from "../ProblemProvider";
import { requestInfo, requestVisualizations } from "../../redux";
import React, { useEffect, useState, useRef } from "react";

export function useVisualization(url, problemName, problemType, problemNameMap, problemInfoMap) {
export function useVisualization(url, problemName, problemNameMap, problemInfoMap) {
const state = {};
[state.defaultVisualizationMap] = useDefaultVisualizationMap(url, problemInfoMap);
[state.VisualizationOptions] = useVisualizationOptions(url, problemName, problemType);
[state.VisualizationOptions] = useVisualizationOptions(url, problemName);
[state.chosenVisualization, state.setChosenVisualization] = useChosenVisualization(problemName, state.defaultVisualizationMap);
[state.VisualizationNameMap] = useVisualizationNameMap(url, problemNameMap);
return state;
Expand Down Expand Up @@ -45,16 +45,16 @@ function useDefaultVisualizationMap(url, problemInfoMap) {
return [defaultVisualizationMap, setDefaultVisualizationMap];
}

function useVisualizationOptions(url, problemName, problemType) {
function useVisualizationOptions(url, problemName) {
const [VisualizationOptions, setVisualizationOptions] = useState([]);

useEffect(() => {
(async () => {
setVisualizationOptions(
problemName && problemType ? (await requestVisualizations(url, problemName, problemType)) ?? [] : []
problemName ? (await requestVisualizations(url, problemName)) ?? [] : []
);
})();
}, [problemName, problemType, url]);
}, [problemName, url]);

return [VisualizationOptions, setVisualizationOptions];
}
Expand Down
10 changes: 5 additions & 5 deletions components/hooks/ProblemProvider/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@ import { useVisualization} from "./Visualization";

export function useProblemProvider(url) {
const problem = useProblem(url);
const { problemName, problemType, problemNameMap, problemInfoMap, problemInstance } = problem;
const { problemName, problemNameMap, problemInfoMap, problemInstance } = problem;
return {
problem: problem,
reducer: useReducer(url, problemName, problemType, problemInstance),
solver: useSolver(url, problemName, problemType, problemNameMap, problemInfoMap, problemInstance),
verifier: useVerifier(url, problemName, problemType, problemNameMap, problemInfoMap),
visualization: useVisualization(url, problemName, problemType, problemNameMap, problemInfoMap),
reducer: useReducer(url, problemName, problemInstance),
solver: useSolver(url, problemName, problemNameMap, problemInfoMap, problemInstance),
verifier: useVerifier(url, problemName, problemNameMap, problemInfoMap),
visualization: useVisualization(url, problemName, problemNameMap, problemInfoMap),
};
}

Expand Down
20 changes: 10 additions & 10 deletions components/redux/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -271,9 +271,9 @@ export async function requestReductionInfo(url, apiCall) {
* @returns an array of problems that have implemented reductions from `problem`.
* @returns `undefined` on failure and logs the error.
*/
export async function requestReductionOptions(url, problem, problemType = "NPC") {
export async function requestReductionOptions(url, problem) {
return await fetchJson(
`${url}Navigation/NPC_NavGraph/availableReductions/?chosenProblem=${problem}&problemType=${problemType}`,
`${url}Navigation/NPC_NavGraph/availableReductions/?chosenProblem=${problem}`,
() => `${problem} REDUCTION OPTIONS REQUEST FAILED`
);
}
Expand Down Expand Up @@ -315,9 +315,9 @@ export async function requestProblemGenericInstance(url, problem, instance) {
* @returns an array of arrays of reductions implemented for reducing a problem to another problem.
* @returns `undefined` on failure and logs the error.
*/
export async function requestReductions(url, problemFrom, problemTo, problemType = "NPC") {
export async function requestReductions(url, problemFrom, problemTo) {
return await fetchJson(
`${url}Navigation/NPC_NavGraph/reductionPath/?reducingFrom=${problemFrom}&reducingTo=${problemTo}&problemType=${problemType}`,
`${url}Navigation/NPC_NavGraph/reductionPath/?reducingFrom=${problemFrom}&reducingTo=${problemTo}`,
() => `${problemFrom} TO ${problemTo} REDUCTIONS REQUEST FAILED`
);
}
Expand All @@ -338,9 +338,9 @@ export async function requestSolvedInstance(url, solver, instance) {
* @returns an array of solvers implemented for the `problem`.
* @returns `undefined` on failure and logs the error.
*/
export async function requestSolvers(url, problem, problemType = "NPC") {
export async function requestSolvers(url, problem) {
return await fetchJson(
`${url}Navigation/Problem_SolversRefactor/?chosenProblem=${problem}&problemType=${problemType}`,
`${url}Navigation/Problem_SolversRefactor/?chosenProblem=${problem}`,
() => `${problem} SOLVERS REQUEST FAILED`
);
}
Expand All @@ -349,9 +349,9 @@ export async function requestSolvers(url, problem, problemType = "NPC") {
* @returns an array of verifiers implemented for the `problem`.
* @returns `undefined` on failure and logs the error.
*/
export async function requestVerifiers(url, problem, problemType = "NPC") {
export async function requestVerifiers(url, problem) {
return await fetchJson(
`${url}Navigation/Problem_VerifiersRefactor/?chosenProblem=${problem}&problemType=${problemType}`,
`${url}Navigation/Problem_VerifiersRefactor/?chosenProblem=${problem}`,
() => `${problem} VERIFIERS REQUEST FAILED`
);
}
Expand Down Expand Up @@ -389,9 +389,9 @@ export async function requestVisualization(url, visualization, instance) {
* @returns an array of visualizations implemented for the `problem`.
* @returns `undefined` on failure and logs the error.
*/
export async function requestVisualizations(url, problem, problemType = "NPC") {
export async function requestVisualizations(url, problem) {
return await fetchJson(
`${url}Navigation/Problem_VisualizationsRefactor/?chosenProblem=${problem}&problemType=${problemType}`,
`${url}Navigation/Problem_VisualizationsRefactor/?chosenProblem=${problem}`,
() => `${problem} VISUALIZATIONS REQUEST FAILED`
);
}
Loading