I have a Q&A flow like the following:
The basic idea is that depending on the answer chosen for a question, a different question will be asked next.
I am currently representing this Q&A flow with the following JavaScript object:
var QAndAObj = {
1: {
question: 'Question 1',
answers: [
{
answerText: 'Answer 1-1',
nextQuestion: 2
},
{
answerText: 'Answer 1-2',
nextQuestion: 3
}
]
},
2: {
question: 'Question 2',
answers: [
{
answerText: 'Answer 2-1',
nextQuestion: 3
},
{
answerText: 'Answer 2-2',
nextQuestion: null
}
]
},
3: {
question: 'Question 3',
answers: [
{
answerText: 'Answer 3-1',
nextQuestion: 4
},
{
answerText: 'Answer 3-2',
nextQuestion: null
},
{
answerText: 'Answer 3-3',
nextQuestion: null
}
]
},
4: {
question: 'Question 4',
answers: [
{
answerText: 'Answer 4-1',
nextQuestion: null
},
{
answerText: 'Answer 4-2',
nextQuestion: null
}
]
}
};
To show the user a progress bar, I'd like to be able to calculate the longest and shortest paths through the question flow.
My initial thought was to write a recursive function like the following to go down each possible path in the flow:
function recurse(node) {
for (var i = 0; i < node.answers.length; i++) {
if (node.answers[i].nextQuestion) {
recurse(QAndAObj[node.answers[i].nextQuestion]);
}
}
}
The above function does allow me to hit each node in the flow, but I'm not sure how to calculate the longest and shortest paths through the flow.
Any help/advice/code would be greatly appreciated.
Thank you very much.