コード例 #1
0
        public void GoToNextQuestion()
        {
            _currentQuestionIndex++;

            if (_currentQuestionIndex > _questions.Length - 1)
            {
                _currentQuestionIndex = 0;
            }

            _currentButtons.ForEach(b => Destroy(b.gameObject));
            _currentButtons.Clear();

            var questionData = _questions[_currentQuestionIndex];

            _currentQuestion = questionData.ConvertToQuestion();
            var answers = _currentQuestion.GetAnswers();

            foreach (var answer in answers)
            {
                CreateButtonForAnswer(answer);
            }

            _currentQuestion.OnAnswerFailed  += OnAnswerFailed;
            _currentQuestion.OnAnswerSuccess += OnAnswerSuccess;

            _questionNameText.text  = _currentQuestion.QuestName;
            _questionDescrText.text = _currentQuestion.QuestDescription;
            _questionImage.sprite   = questionData.QuestSprite;
        }
コード例 #2
0
        /// <summary>
        /// Renders the drop down list.
        /// </summary>
        /// <param name="question">The question.</param>
        /// <param name="style">The style.</param>
        /// <param name="defaultOptionText">The text for the default option (signifying no choice).</param>
        /// <returns>
        /// A control containing the question and answer choice(s).
        /// </returns>
        private static Control RenderDropDownList(IQuestion question, string style, string defaultOptionText)
        {
            var ddl = new DropDownList();

            if (string.IsNullOrEmpty(style))
            {
                ddl.CssClass = CssClassAnswerVertical;
            }
            else
            {
                ddl.Attributes.Add("style", style);
            }

            ddl.Items.Add(new ListItem(defaultOptionText, string.Empty));

            ddl.Attributes.Add("RelationshipKey", question.RelationshipKey.ToString());
            ddl.ID = question.RelationshipKey.ToString();
            foreach (IAnswer answer in question.GetAnswers())
            {
                var li = new ListItem(answer.Text, answer.Text);
                li.Attributes.Add("RelationshipKey", answer.RelationshipKey.ToString());
                ddl.Items.Add(li);

                // preselect the answer, if needed
                if (question.Responses != null)
                {
                    if (string.Equals(question.FindResponse(answer).AnswerValue, answer.Text))
                    {
                        li.Selected = true;
                    }
                }
            }

            return(ddl);
        }
コード例 #3
0
        /// <summary>
        /// Renders the horizontal option buttons.
        /// </summary>
        /// <param name="question">The question.</param>
        /// <param name="style">The style.</param>
        /// <returns>A control containing the question and answer choice(s).</returns>
        private static Control RenderHorizontalOptionButtons(IQuestion question, string style)
        {
            var rbl = new RadioButtonList
            {
                RepeatColumns   = question.GetAnswers().Count,
                RepeatDirection = RepeatDirection.Horizontal,
                RepeatLayout    = RepeatLayout.Table,
                ID = question.RelationshipKey.ToString()
            };

            if (string.IsNullOrEmpty(style))
            {
                rbl.CssClass = CssClassAnswerHorizontal;
            }
            else
            {
                rbl.Attributes.Add("style", style);
            }

            rbl.Attributes.Add("RelationshipKey", question.RelationshipKey.ToString());

            foreach (IAnswer answer in question.GetAnswers())
            {
                // 1 to skip the blank entry
                var li = new ListItem(answer.Text, answer.Text);
                li.Attributes.Add("RelationshipKey", answer.RelationshipKey.ToString());
                rbl.Items.Add(li);

                // preselect answer, if needed
                if (question.Responses != null)
                {
                    if (string.Equals(answer.Text, question.FindResponse(answer).AnswerValue, StringComparison.InvariantCultureIgnoreCase))
                    {
                        li.Selected = true;
                    }
                }
            }

            return(rbl);
        }
コード例 #4
0
        /// <summary>
        /// Renders the check box list.
        /// </summary>
        /// <param name="question">The question.</param>
        /// <param name="readOnly">if set to <c>true</c> [read only].</param>
        /// <param name="style">The style.</param>
        /// <param name="limitReachedErrorFormat">The <see cref="string.Format(System.IFormatProvider,string,object[])"/>-style message for when the maximum number of options has been exceeded</param>
        /// <returns>A control containing the question and answer choice(s).</returns>
        private static Control RenderCheckBoxList(IQuestion question, bool readOnly, string style, string limitReachedErrorFormat)
        {
            var container = new HtmlGenericControl("SPAN")
            {
                ID = "CheckBoxSpan" + question.QuestionId
            };

            if (string.IsNullOrEmpty(style))
            {
                container.Attributes["class"] = CssClassAnswerVertical;
            }
            else
            {
                container.Attributes.Add("style", style);
            }

            if (question.SelectionLimit > 0)
            {
                // TODO: Localize limit reached text
                var limitDiv = new HtmlGenericControl("DIV");
                limitDiv.Attributes["class"] = "limit-reached";
                limitDiv.InnerText           = string.Format(CultureInfo.CurrentCulture, limitReachedErrorFormat, question.SelectionLimit);
                limitDiv.Style.Add("display", "none");
                container.Controls.Add(limitDiv);
            }

            foreach (IAnswer answer in question.GetAnswers())
            {
                var cb = new CheckBox();
                cb.Attributes.Add("RelationshipKey", answer.RelationshipKey.ToString());
                cb.ID      = answer.RelationshipKey.ToString();
                cb.Enabled = !readOnly;
                cb.Text    = answer.FormattedText;
                container.Controls.Add(cb);

                // preselect answer, if needed
                if (question.Responses != null)
                {
                    if (string.Equals(question.FindResponse(answer).AnswerValue, bool.TrueString, StringComparison.InvariantCultureIgnoreCase))
                    {
                        cb.Checked = true;
                    }
                }

                if (question.SelectionLimit > 0)
                {
                    cb.Attributes.Add(HtmlTextWriterAttribute.Onclick.ToString(), "return CheckSelectedCount(this);");
                }
            }

            return(container);
        }
コード例 #5
0
        public string Format(IQuestion question)
        {
            string message = "";

            message += "<b>" + question.Question + "</b><br/>";

            foreach (object answer in question.GetAnswers())
            {
                message += answer + "<br/>";
            }

            message += "<br/>";

            return(message);
        }
コード例 #6
0
ファイル: Utility.cs プロジェクト: krishna23456/Engage-Survey
        /// <summary>
        /// Renders the vertical option buttons.
        /// </summary>
        /// <param name="question">The question.</param>
        /// <param name="style">The style.</param>
        /// <returns>A control containing the question and answer choice(s).</returns>
        private static Control RenderVerticalOptionButtons(IQuestion question, string style)
        {
            var rbl = new RadioButtonList
                          {
                                  RepeatColumns = 1,
                                  RepeatDirection = RepeatDirection.Vertical,
                                  RepeatLayout = RepeatLayout.Table,
                                  ID = question.RelationshipKey.ToString()
                          };
            rbl.Attributes.Add("RelationshipKey", question.RelationshipKey.ToString());

            if (string.IsNullOrEmpty(style))
            {
                rbl.CssClass = CssClassAnswerVertical;
            }
            else
            {
                rbl.Attributes.Add("style", style);
            }

            foreach (IAnswer answer in question.GetAnswers())
            {
                //// 1 to skip the blank entry
                var li = new ListItem(answer.Text, answer.Text);
                li.Attributes.Add("RelationshipKey", answer.RelationshipKey.ToString());
                rbl.Items.Add(li);

                // preselect answer, if needed
                if (question.Responses != null)
                {
                    if (string.Equals(answer.Text, question.FindResponse(answer).AnswerValue, StringComparison.InvariantCultureIgnoreCase))
                    {
                        li.Selected = true;
                    }
                }
            }

            return rbl;
        }
コード例 #7
0
ファイル: Utility.cs プロジェクト: krishna23456/Engage-Survey
        /// <summary>
        /// Renders the drop down list.
        /// </summary>
        /// <param name="question">The question.</param>
        /// <param name="style">The style.</param>
        /// <param name="defaultOptionText">The text for the default option (signifying no choice).</param>
        /// <returns>
        /// A control containing the question and answer choice(s).
        /// </returns>
        private static Control RenderDropDownList(IQuestion question, string style, string defaultOptionText)
        {
            var ddl = new DropDownList();
            if (string.IsNullOrEmpty(style))
            {
                ddl.CssClass = CssClassAnswerVertical;
            }
            else
            {
                ddl.Attributes.Add("style", style);
            }

            ddl.Items.Add(new ListItem(defaultOptionText, string.Empty));

            ddl.Attributes.Add("RelationshipKey", question.RelationshipKey.ToString());
            ddl.ID = question.RelationshipKey.ToString();
            foreach (IAnswer answer in question.GetAnswers())
            {
                var li = new ListItem(answer.Text, answer.Text);
                li.Attributes.Add("RelationshipKey", answer.RelationshipKey.ToString());
                ddl.Items.Add(li);

                // preselect the answer, if needed
                if (question.Responses != null)
                {
                    if (string.Equals(question.FindResponse(answer).AnswerValue, answer.Text))
                    {
                        li.Selected = true;
                    }
                }
            }

            return ddl;
        }
コード例 #8
0
ファイル: Utility.cs プロジェクト: krishna23456/Engage-Survey
        /// <summary>
        /// Renders the check box list.
        /// </summary>
        /// <param name="question">The question.</param>
        /// <param name="readOnly">if set to <c>true</c> [read only].</param>
        /// <param name="style">The style.</param>
        /// <param name="limitReachedErrorFormat">The <see cref="string.Format(System.IFormatProvider,string,object[])"/>-style message for when the maximum number of options has been exceeded</param>
        /// <returns>A control containing the question and answer choice(s).</returns>
        private static Control RenderCheckBoxList(IQuestion question, bool readOnly, string style, string limitReachedErrorFormat)
        {
            var container = new HtmlGenericControl("SPAN") { ID = "CheckBoxSpan" + question.QuestionId };

            if (string.IsNullOrEmpty(style))
            {
                container.Attributes["class"] = CssClassAnswerVertical;
            }
            else
            {
                container.Attributes.Add("style", style);
            }

            if (question.SelectionLimit > 0)
            {
                // TODO: Localize limit reached text
                var limitDiv = new HtmlGenericControl("DIV");
                limitDiv.Attributes["class"] = "limit-reached";
                limitDiv.InnerText = string.Format(CultureInfo.CurrentCulture, limitReachedErrorFormat, question.SelectionLimit);
                limitDiv.Style.Add("display", "none");
                container.Controls.Add(limitDiv);
            }

            foreach (IAnswer answer in question.GetAnswers())
            {
                var cb = new CheckBox();
                cb.Attributes.Add("RelationshipKey", answer.RelationshipKey.ToString());
                cb.ID = answer.RelationshipKey.ToString();
                cb.Enabled = !readOnly;
                cb.Text = answer.FormattedText;
                container.Controls.Add(cb);

                // preselect answer, if needed
                if (question.Responses != null)
                {
                    if (string.Equals(question.FindResponse(answer).AnswerValue, bool.TrueString, StringComparison.InvariantCultureIgnoreCase))
                    {
                        cb.Checked = true;
                    }
                }

                if (question.SelectionLimit > 0)
                {
                    cb.Attributes.Add(HtmlTextWriterAttribute.Onclick.ToString(), "return CheckSelectedCount(this);");
                }
            }

            return container;
        }
コード例 #9
0
 public List <object> GetAnswers()
 {
     return(questionType.GetAnswers());
 }