Support and logic for catalog question conditions

https://github.com/rancher/rancher/issues/13693
This commit is contained in:
loganhz 2018-05-30 14:19:19 +08:00
parent c440a88c65
commit b384603506
2 changed files with 18 additions and 12 deletions

View File

@ -61,7 +61,12 @@ export default Resource.extend({
const subquestions = get(q, 'subquestions'); const subquestions = get(q, 'subquestions');
if ( subquestions ) { if ( subquestions ) {
subquestions.forEach((subq) => { subquestions.forEach((subq) => {
if ( get(subq, 'showIf.length') > 0 ) {
subq.showIf = `${q.variable}=${q.showSubquestionIf}&&${subq.showIf}`;
} else {
subq.showIf = `${q.variable}=${q.showSubquestionIf}`; subq.showIf = `${q.variable}=${q.showSubquestionIf}`;
}
if ( q.group ) { if ( q.group ) {
subq.group = q.group; subq.group = q.group;
} }

View File

@ -27,18 +27,19 @@ export function evaluate(question, allQuestions) {
return true; return true;
} }
const showIf = question.showIf.trim(); const and = question.showIf.split('&&');
let variables = getVariables(showIf, '=');
const result = and.every((showIf) => {
showIf = showIf.trim();
const variables = getVariables(showIf, '=');
if ( variables ) { if ( variables ) {
const left = stringifyAnswer(getAnswer(variables.left, allQuestions)); const left = stringifyAnswer(getAnswer(variables.left, allQuestions));
const right = stringifyAnswer(variables.right); const right = stringifyAnswer(variables.right);
return left === right; return left === right;
} }
return false; return false;
});
return result;
} }
export function stringifyAnswer(answer) { export function stringifyAnswer(answer) {