In the code below, I am not able to save the selected values. If i am selecting multiple values for a single question than I am getting below error-
"Interface Definition: Expression evaluation error at function a!forEach [line 19]: Error in a!forEach() expression during iteration 2: Expression evaluation error at function a!checkboxField [line 27]: Rule 'l' has 1 parameters, but instead passed 2 parameters."
I had highlighted the code where the code needs some correction. NOTE- This code worked perfectly fine for a!RadiobuttonField() but not able to save values while using a!CheckBoxField()
a!localVariables( local!question: /*calling QE rule to fetch the questions*/ local!option: /*calling QE rule to fetch the options*/ local!numberOfAnswers: 4, local!correctAnswer: /*calling QE rule to fetch the correct Answer*/ local!selectedAnswer: rule!MWJ_MultiCorrectOption_SelectedAnswer(), ///// this code is written below. ),
{ a!sectionLayout( label: "", contents: { a!forEach( items: local!question, expression: a!localVariables( local!currentQuestion: fv!index, { a!columnsLayout( columns: { a!columnLayout( contents: a!checkboxField( choiceLabels: { a!forEach( items: enumerate(local!numberOfAnswers), expression: index( split(stripwith(local!option, "[]ZYWX:"), ","), if( local!currentQuestion = 0, fv!index, fv!index + local!numberOfAnswers * (local!currentQuestion - 1) ) ) ) }, choiceValues: { a!forEach( items: enumerate(local!numberOfAnswers), expression: index( split(local!option, ","), if( local!currentQuestion = 0, fv!item, fv!index + local!numberOfAnswers * (local!currentQuestion - 1) ) ) ) }, label: fv!index & ". " & fv!item, labelPosition: "ABOVE", value: local!selectedAnswer.SelectedAnswer[local!currentQuestion], saveInto: a!save( local!selectedAnswer.SelectedAnswer[local!currentQuestion], save!value ), validations: {} ) ) }, alignVertical: "TOP" ),
------------------------------------------------------------------------------------
rule!MWJ_MultiCorrectOption_SelectedAnswer(),
a!localVariables( local!count:count(split(rule!MWJ_multiCorrect_fetchQuestion(),";")), local!selectedAnswer: a!forEach( items:enumerate(local!count), expression:
a!map( SelectedAnswer:null, DummyAnswer:null )), local!selectedAnswer,)
Discussion posts and replies are publicly visible
I suggest to follow a structured problem solving approach. Reduce the code to the bare working/non-working minimum to understand what is going wrong. Then fix it and build back up to the final solution.
I tried this same using a!map and it also worked perfectly fine.
a!localVariables( local!InputData: { a!map( Questions:"What is CDT", Options:{ "a", "b", "c", "d" }, Selected:null, CorrectAnswers:"b" ), a!map( Questions:"What is expression", Options:{ "e", "f", "g", "h" }, Selected:null, CorrectAnswers:"g" ), a!map( Questions:"What is Interface", Options:{ "i", "j", "k", "l" }, Selected:null, CorrectAnswers:"k" ) }, local!SelectedAnswers:local!InputData.selectedAnswers, /*local!CorrectAnswer:local!InputData.CorrectAnswers,*/ /*local!Results:{intersection(local!CorrectAnswer,local!SelectedAnswers)},*/ /*local!Score:length(local!Results),*/ { a!sectionLayout( label: "Quize Paper", contents: { a!forEach( items:local!InputData, expression: { a!checkboxField( choiceLabels: fv!item.Options, choiceValues: fv!item.Options, label: fv!item.Questions, labelPosition: "ABOVE", value:fv!item.selectedAnswers, saveInto: { a!save(fv!item.selectedAnswers,save!value) }, choiceLayout: "STACKED", validations: {} ) } ) } ), a!richTextDisplayField( labelPosition: "COLLAPSED", value: { /*local!Score*/ } ) } )
I don't see any error for the above code, other than having no context of the answer.
I understand. The difference between a radiobuttonfield and a checkboxfield is, that checkboxes always return a list. That might break same related logic in your code.
Yes correct. thats why am saving the selected values using a!map() in rule rule!MWJ_QE_MultiCorrectOption_SelectedAnswer() to return a list. But still not able to save the selected values.
a!localVariables( local!count:count(split(rule!MWJ_qe_multiCorrect_fetchQuestion(),";")), local!selectedAnswer: a!forEach( items:enumerate(local!count), expression: a!map( /*Question:local!question[fv!index],*/ SelectedAnswer:null, DummyAnswer:null )), local!selectedAnswer, )
Yeah, well .... I agree, but when you say "not able to save the selected values", I think the issue is more with what happens AFTER the value is saved.