Ejemplo n.º 1
0
        public void Init()
        {
            List <string> ids = controlConstructScheme.Sequence.ControlConstructIds;

            foreach (string id in ids)
            {
                QuestionConstruct questionConstructModel = controlConstructScheme.FindQuestionConstruct(id);
                if (questionConstructModel != null)
                {
                    QuestionVM question = StudyUnit.FindQuestion(questionConstructModel.QuestionId);
                    Debug.Assert(question != null, "Question not found id=" + questionConstructModel.QuestionId);
                    QuestionConstructVM questionConstruct = new QuestionConstructVM(questionConstructModel, question);
                    InitConstruct(questionConstruct);
                    constructModels.Add(questionConstructModel);
                    constructs.Add(questionConstruct);
                    continue;
                }
                QuestionGroupConstruct questionGroupConstructModel = controlConstructScheme.FindQuestionGroupConstruct(id);
                if (questionGroupConstructModel != null)
                {
                    QuestionGroupVM          questionGroup          = StudyUnit.FindQuestionGroup(questionGroupConstructModel.QuestionGroupId);
                    QuestionGroupConstructVM questionGroupConstruct = new QuestionGroupConstructVM(questionGroupConstructModel, questionGroup);
                    InitConstruct(questionGroupConstruct);
                    constructModels.Add(questionGroupConstructModel);
                    constructs.Add(questionGroupConstruct);
                    continue;
                }
                Statement statementModel = controlConstructScheme.FindStatement(id);
                if (statementModel != null)
                {
                    StatementVM statement = new StatementVM(statementModel);
                    InitConstruct(statement);
                    constructModels.Add(statementModel);
                    constructs.Add(statement);
                    continue;
                }
                IfThenElse ifThenElseModel = controlConstructScheme.FindIfThenElse(id);
                if (ifThenElseModel != null)
                {
                    IfThenElseVM ifThenElse = new IfThenElseVM(ifThenElseModel);
                    InitConstruct(ifThenElse);
                    constructModels.Add(ifThenElseModel);
                    constructs.Add(ifThenElse);
                }
            }

            List <QuestionConstructVM> questionConstructs = QuestionConstructs;

            foreach (ConstructVM construct in constructs)
            {
                if (construct is IfThenElseVM)
                {
                    IfThenElseVM ifThenElse = (IfThenElseVM)construct;
                    ifThenElse.ThenConstructs = ThenConstructs;
                }
            }
            modelSyncher = new ModelSyncher <ConstructVM, IConstruct>(this, constructs, constructModels);
            InitTitle();
        }
Ejemplo n.º 2
0
        private void AddQuestionGroup()
        {
            ObservableCollection <QuestionGroupVM> questionGroups = StudyUnit.QuestionGroups;
            SelectObjectWindowVM <QuestionGroupVM> vm             = new SelectObjectWindowVM <QuestionGroupVM>(questionGroups);
            QuestionGroupVM questionGroup = SelectObjectWindow.Select(Resources.SelectQuestionGroup, vm) as QuestionGroupVM;//Select Question Group

            if (questionGroup != null)
            {
                InsertQuestionGroupConstruct(questionGroup, true);
            }
        }
Ejemplo n.º 3
0
        public void InsertQuestionGroupConstruct(QuestionGroupVM questionGroup, bool manualOperation)
        {
            ConstructVM construct = ConstructVM.FindByQuestionGroupId(constructs, questionGroup.Id);

            if (construct != null)
            {
                if (manualOperation)
                {
                    MessageBox.Show(Resources.AlreadySelectedQuestionGroup); //This question group is already selected
                }
                return;
            }
            QuestionGroupConstruct questionGroupConstructModel = new QuestionGroupConstruct();

            questionGroupConstructModel.QuestionGroupId = questionGroup.Id;
            questionGroupConstructModel.No = ControlConstructScheme.QUESTION_GROUP_NO_PREFIX + (ConstructUtils.QuestionGroupConstructCount(constructs) + 1);
            QuestionGroupConstructVM questionGroupConstruct = new QuestionGroupConstructVM(questionGroupConstructModel, questionGroup);

            InsertConstruct(questionGroupConstruct, manualOperation);
        }
Ejemplo n.º 4
0
 public QuestionGroupConstructVM(QuestionGroupConstruct questionGroupConstruct, QuestionGroupVM questionGroup)
     : base(questionGroupConstruct)
 {
     Debug.Assert(questionGroupConstruct != null);
     Debug.Assert(questionGroup != null);
     this.questionGroupConstruct = questionGroupConstruct;
     this.questionGroup          = questionGroup;
 }
Ejemplo n.º 5
0
        protected override void WriteBody(Body body)
        {
            ObservableCollection <ConstructVM> constructs = controlConstructScheme.Constructs;

            foreach (ConstructVM construct in constructs)
            {
                if (construct is QuestionConstructVM)
                {
                    //Export Question
                    QuestionConstructVM questionConstruct = (QuestionConstructVM)construct;

                    //Title
                    string    text      = questionConstruct.No + ". " + questionConstruct.Text;
                    Paragraph paragraph = CreateMidashi1Paragraph(text);
                    body.Append(paragraph);
                    paragraph = CreateEmptyParagraph();
                    body.Append(paragraph);


                    //Layout
                    QuestionVM question = questionConstruct.Question;
                    if (question.IsResponseTypeChoices)
                    {
                        WriteChoicesResponse(body, question);
                    }
                    else if (question.IsResponseTypeFree)
                    {
                        WriteFreeResponse(body, question);
                    }
                    else if (question.IsResponseTypeDateTime)
                    {
                        WriteDateTimeResponse(body, question);
                    }
                    else if (question.IsResponseTypeNumber)
                    {
                        WriteNumerResponse(body, question);
                    }
                    paragraph = CreateEmptyParagraph();
                    body.Append(paragraph);
                }
                else if (construct is StatementVM)
                {
                    //Export description
                    StatementVM statement = (StatementVM)construct;
                    Paragraph   paragraph = CreateParagraph(statement.Text);
                    body.Append(paragraph);
                    paragraph = CreateEmptyParagraph();
                    body.Append(paragraph);
                }
                else if (construct is QuestionGroupConstructVM)
                {
                    //Export Question Group


                    QuestionGroupConstructVM questionGroupConstruct = (QuestionGroupConstructVM)construct;
                    QuestionGroupVM          questionGroup          = questionGroupConstruct.QuestionGroup;

                    string    text      = questionGroupConstruct.No + ". " + questionGroupConstruct.Title;
                    Paragraph paragraph = CreateParagraph(text);
                    body.Append(paragraph);
                    paragraph = CreateEmptyParagraph();
                    body.Append(paragraph);

                    WriteQuestionGroupResponse(body, questionGroup);
                    paragraph = CreateEmptyParagraph();
                    body.Append(paragraph);
                }
            }
        }
Ejemplo n.º 6
0
        private void WriteQuestionGroupResponse(Body body, QuestionGroupVM questionGroup)
        {
            ICollection <QuestionVM> questions = questionGroup.Questions;

            if (questions.Count == 0)
            {
                return;
            }

            Table table = CreateFilledTable(true, true);

            if (questionGroup.Orientation == QuestionGroupOrientation.Row)
            {
                //If horizontal (Categories are horizontally arranged)
                QuestionVM    firstQuestion      = questions.First();
                List <CodeVM> codes              = GetValidCodes(firstQuestion.Response.Codes);
                int           firstQuestionCount = codes.Count;

                TableRow tableRow = null;
                if (questionGroup.Sentence == QuestionGroupSentence.Top)
                {
                    //header rows
                    tableRow = new TableRow();
                    table.Append(tableRow);
                    tableRow.Append(CreateBorderCell(0));
                    foreach (CodeVM code in codes)
                    {
                        tableRow.Append(CreateBorderCell(code.Label));
                    }
                }

                foreach (QuestionVM question in questions)
                {
                    tableRow = new TableRow();
                    table.Append(tableRow);
                    //Question first
                    tableRow.Append(CreateBorderCell(question.Title));
                    //cell after
                    codes = GetValidCodes(question.Response.Codes);
                    foreach (CodeVM code in codes)
                    {
                        List <string> contents = new List <string>();
                        contents.Add(code.Value);
                        if (questionGroup.Sentence == QuestionGroupSentence.EachCell)
                        {
                            contents.Add(code.Label);
                        }
                        tableRow.Append(CreateCenterCell(contents));
                    }
                    int diff = firstQuestionCount - codes.Count;
                    if (diff > 0)
                    {
                        for (int i = 0; i < diff; i++)
                        {
                            tableRow.Append(CreateBorderCell(0));
                        }
                    }
                }
            }
            else
            {
                //In the case of column-wise

                //header rows
                TableRow tableRow = new TableRow();
                table.Append(tableRow);
                if (questionGroup.Sentence == QuestionGroupSentence.Top)
                {
                    tableRow.Append(CreateBorderCell(0));
                }

                //Questin Text
                foreach (QuestionVM question in questions)
                {
                    tableRow.Append(CreateBorderCell(question.Title));
                }

                QuestionVM    firstQuestion      = questions.First();
                List <CodeVM> codes              = GetValidCodes(firstQuestion.Response.Codes);
                int           firstQuestionCount = codes.Count;

                int codeIndex = 0;
                foreach (CodeVM code in codes)
                {
                    tableRow = new TableRow();
                    table.Append(tableRow);

                    //Category
                    if (questionGroup.Sentence == QuestionGroupSentence.Top)
                    {
                        tableRow.Append(CreateBorderCell(code.Label));
                    }

                    foreach (QuestionVM question in questions)
                    {
                        List <CodeVM> questionCodes = GetValidCodes(question.Response.Codes);
                        if (codeIndex < questionCodes.Count)
                        {
                            List <string> contents = new List <string>();
                            contents.Add(questionCodes[codeIndex].Value);
                            if (questionGroup.Sentence == QuestionGroupSentence.EachCell)
                            {
                                contents.Add(questionCodes[codeIndex].Label);
                            }
                            tableRow.Append(CreateCenterCell(contents));
                        }
                        else
                        {
                            tableRow.Append(CreateBorderCell(0));
                        }
                    }
                    codeIndex++;
                }
            }

            body.Append(table);
        }