Form navigation

If you have questions or if you want to share your opinion about Aware IM post your message on this forum
Post Reply
idpSteve
Posts: 201
Joined: Thu Jul 27, 2017 6:13 am
Location: Johannesburg, South Africa
Contact:

Form navigation

Post by idpSteve »

Hi all.

I've been struggling with something for a while now, and would love any opinions/ideas/help.

I've got an object with a bunch of children objects. When viewing the child object from the list of children on a form of the parent I can use the 'Next form' and 'Previous form' buttons to navigate between children. While I've come across a quite specific bug, this works well overall.

A bit more about my specific case:

I have a survey. This survey has a list of questions. I view the survey object for a specific user. On this survey object form I show the children, using a custom display. I show only 1 child per page, and hide the paging bar. In my custom display I show only some text, saying 'Begin survey now'. When the user clicks on the survey question (the child object, which they just see as a box saying 'Begin survey now') they see a form of the question object, and can navigate to the next question using a 'Next form' button. This all works well.

I now need for this user to be able to resume answering questions if they are interrupted. They should still be able to navigate backwards to the previous already answered questions. Using my current method, they 'see' the first question (they see it as a box that says 'Begin survey now') and when they click on this question they edit it using the answer form, but it is always the first question.

I'm not sure if this makes sense, please ask if I've been a bit unclear. Also please see images attached of the process.

Many thanks for taking the time to read this, and I look forward to any replies!
Attachments
child form.png
child form.png (40.38 KiB) Viewed 4805 times
parent form.png
parent form.png (32.61 KiB) Viewed 4805 times
kklosson
Posts: 1628
Joined: Sun Nov 23, 2008 3:19 pm
Location: Virginia

Re: Form navigation

Post by kklosson »

Sorry, I can't help but I hit this wall as well. I wanted my users to be able to save (or even force a save) as they completed a questionnaire but they were always returned to the first tab of the form. I had to scrap the whole approach and go to a standard form display because saving was the most important consideration.
V8.8
MySQL, AWS EC2, S3
PDFtk Toolkit
tford
Posts: 4238
Joined: Sat Mar 10, 2007 6:44 pm

Re: Form navigation

Post by tford »

I built a survey process a couple years ago where 400+ students answered 20+ objective questions about each of their classes (let's say 6 classes per student).

Key BOs:
1) QuestionMaster - this BO holds the questions to be answered by each student (but not the answers). For simplicity sake, let's say there are 20 instances of this BO.

2) QandA - If 400 students are evaluating 6 classes with 20 questions each, there would be 48,000 instances of this BO. These "shell" QandA instances are all built ahead of time from info in a StudentClass BO (StudentClass would have 400 x 6 = 2,400 instances in this case).

QandA key attributes:
1) Answer - Plain Text with Radio Button presentation. Static choices: 1) Strongly Agree 2) Disagree 3) Agree 4) Strongly agree 5) No basis for opinion
2) AnsweredYN - default = No

A couple of key rules on QandA BO:
1) If QandA.AnsweredYN WAS CHANGED TO 'Yes' Then
QandA.TS_Answered=CURRENT_TIMESTAMP

2) If (QandA.Answer IS DEFINED) THEN
QandA.AnsweredYN='Yes'
ELSE IF (QandA.Answer=UNDEFINED AND QandA.Question.Type='Agree / Disagree buttons') THEN
QandA.AnsweredYN='No'
QandA.TS_Answered=''
ELSE IF LoggedInSystemUser.AccessLevel='Student' AND QandA.Question.Type='Open Response'
THEN QandA.AnsweredYN='Yes'

3) If QandA.Answer='1-Strongly Disagree' Then
QandA.AnswerNbr=SystemSettings.Weight_1_StronglyDisagree
Else If QandA.Answer='2-Disagree' Then
QandA.AnswerNbr=SystemSettings.Weight_2_Disagree
Else If QandA.Answer='3-Agree' Then
QandA.AnswerNbr=SystemSettings.Weight_3_Agree
Else If QandA.Answer='4-Strongly Agree' Then
QandA.AnswerNbr=SystemSettings.Weight_4_StronglyAgree


Process:
1) WHen a student logs in they are presented with a list of their classes. One by one, they chose a class to complete a survey for.
2) As a class if chosen, this key process drives displaying questions for the student to answer

If COUNT QandA WHERE (QandA.StudentClass=LoggedInStudent.Chosen_StudentClass AND QandA.AnsweredYN='No')>0 Then
FIND QandA WHERE QandA.StudentClass=LoggedInStudent.Chosen_StudentClass AND QandA.AnsweredYN='No' ORDER BY QandA.QuestionSortValue TAKE BEST 1
One_Student_One_Class_Answer_S_1_by_1_a
Else
FIND StudentClass WHERE StudentClass=LoggedInStudent.Chosen_StudentClass
StudentClass.Status_Answers='Done'
DISPLAY PERSPECTIVE Student

===================

Not sure if this is enough to help you craft a new paradigm for your survey. It's a complicated process, but in the end it can be done and done very effectively.
Tom - V8.8 build 3137 - MySql / PostGres
Post Reply