protected void BuildFourPictures(List <Concept> headerItems, List <Concept> fourPictureItems, List <Concept> footerItems)
        {
            if (exercise != null && exercise.OptionItems != null && exercise.OptionItems.Count > 0 && fourPictureItems.Count < 4)
            {
                fourPictureItems.AddRange(exercise.OptionItems.PickRandomItems(4 - fourPictureItems.Count).Select(item => { item.IsOption = true; return(item); }));
            }

            if (Lesson.OptionItems != null && Lesson.OptionItems.Count > 0 && fourPictureItems.Count < 4)
            {
                fourPictureItems.AddRange(Lesson.OptionItems.PickRandomItems(4 - fourPictureItems.Count).Select(item => { item.IsOption = true; return(item); }));
            }

            fourPictureItems.ForEach(c => {
                if (c is IResizeable)
                {
                    (c as IResizeable).Size = (IsSmallHeight() ? 100 : 120);
                }
            });

            fourPictureItems.Shuffle();

            if (exercise == null)
            {
                exercise = new SelectConceptExercise();
            }
            exercise.TaskItems = new List <List <Concept> >();
            if (headerItems != null && headerItems.Count > 0)
            {
                exercise.TaskItems.Add(headerItems);
                exercise.TaskItems.Add(new List <Concept>()
                {
                    new Models.Space()
                });
            }
            exercise.TaskItems.Add(fourPictureItems.GetRange(0, 2));
            exercise.TaskItems.Add(fourPictureItems.GetRange(2, 2));
            if (footerItems != null && footerItems.Count > 0)
            {
                exercise.TaskItems.Add(new List <Concept>()
                {
                    new Models.Space(15, 8)
                });
                exercise.TaskItems.Add(footerItems);
            }
        }
예제 #2
0
        protected override void TransformTaskItems()
        {
            var selectConcept = Lesson.DeepCopy();

            var fröhlich  = selectConcept.NamedConcepts["fröhlich"];
            var traurig   = selectConcept.NamedConcepts["traurig"];
            var weinend   = selectConcept.NamedConcepts["weinend"];
            var wütend    = selectConcept.NamedConcepts["wütend"];
            var angeekelt = selectConcept.NamedConcepts["angeekelt"];
            var lachend   = selectConcept.NamedConcepts["lachend"];
            var zufrieden = selectConcept.NamedConcepts["zufrieden"];

            var concepts = new List <Concept>();

            var random = new Random();

            switch (random.Next(0, 7))
            {
            case 0:
                AddToConcepts(concepts, fröhlich, traurig.Concat(angeekelt.Concat(weinend)).ToList());
                break;

            case 1:
                AddToConcepts(concepts, traurig, wütend.Concat(angeekelt.Concat(lachend)).ToList());
                break;

            case 2:
                AddToConcepts(concepts, weinend, zufrieden.Concat(lachend.Concat(fröhlich)).ToList());
                break;

            case 3:
                AddToConcepts(concepts, wütend, traurig.Concat(fröhlich.Concat(lachend)).ToList());
                break;

            case 4:
                AddToConcepts(concepts, angeekelt, wütend.Concat(zufrieden.Concat(weinend)).ToList());
                break;

            case 5:
                AddToConcepts(concepts, lachend, traurig.Concat(wütend.Concat(zufrieden)).ToList());
                break;

            case 6:
                AddToConcepts(concepts, zufrieden, weinend.Concat(fröhlich.Concat(angeekelt)).ToList());
                break;
            }

            if (exercise == null)
            {
                exercise = new SelectConceptExercise();
            }
            exercise.TaskItems = new List <List <Concept> >();
            int letterCount = 0;
            var row         = new List <Concept>();

            foreach (var concept in concepts)
            {
                var word = concept as Word;
                word.ShowAsPlainText = true;
                if (letterCount + word.Text.Length > LettersPerRow)
                {
                    exercise.TaskItems.Add(row);
                    letterCount = 0;
                    row         = new List <Concept>();
                }

                letterCount += word.Text.Length;
                row.Add(word);
            }
            exercise.TaskItems.Add(row);

            Lesson.LeftAlignItems = Enumerable.Repeat <bool>(true, exercise.TaskItems.Count).ToArray();
        }
예제 #3
0
        protected override void TransformTaskItems()
        {
            var selectConcept = Lesson.DeepCopy();

            var artDef       = selectConcept.NamedConcepts["ArtDef"];
            var artUndef     = selectConcept.NamedConcepts["ArtUndef"];
            var persPronSing = selectConcept.NamedConcepts["PersPronSing"];
            var persPronPlu  = selectConcept.NamedConcepts["PersPronPlu"];
            var nounSing     = selectConcept.NamedConcepts["NounSing"];
            var nounPlu      = selectConcept.NamedConcepts["NounPlu"];
            var verbPres     = selectConcept.NamedConcepts["VerbPres"];
            var verbPast     = selectConcept.NamedConcepts["VerbPast"];

            var concepts = new List <Concept>();

            var random = new Random();

            switch (random.Next(0, 8))
            {
            case 0:
                AddToConcepts(concepts, artDef, artUndef.Concat(persPronSing.Concat(nounSing)).ToList());
                break;

            case 1:
                AddToConcepts(concepts, artUndef, artDef.Concat(persPronSing.Concat(nounPlu)).ToList());
                break;

            case 2:
                AddToConcepts(concepts, persPronSing, artUndef.Concat(persPronPlu.Concat(nounSing)).ToList());
                break;

            case 3:
                AddToConcepts(concepts, persPronPlu, artDef.Concat(persPronPlu.Concat(nounPlu)).ToList());
                break;

            case 4:
                AddToConcepts(concepts, nounSing, verbPres.Concat(nounPlu.Concat(persPronSing)).ToList());
                break;

            case 5:
                AddToConcepts(concepts, nounPlu, verbPast.Concat(nounSing.Concat(artUndef)).ToList());
                break;

            case 6:
                AddToConcepts(concepts, verbPres, nounPlu.Concat(verbPast.Concat(persPronPlu)).ToList());
                break;

            case 7:
                AddToConcepts(concepts, verbPast, nounSing.Concat(verbPres.Concat(artDef)).ToList());
                break;
            }

            if (exercise == null)
            {
                exercise = new SelectConceptExercise();
            }
            exercise.TaskItems = new List <List <Concept> >();
            int letterCount = 0;
            var row         = new List <Concept>();

            foreach (var concept in concepts)
            {
                var word = concept as Word;
                word.ShowAsPlainText = true;
                if (letterCount + word.Text.Length > LettersPerRow)
                {
                    exercise.TaskItems.Add(row);
                    letterCount = 0;
                    row         = new List <Concept>();
                }

                letterCount += word.Text.Length;
                row.Add(word);
            }
            exercise.TaskItems.Add(row);

            Lesson.LeftAlignItems = Enumerable.Repeat <bool>(true, exercise.TaskItems.Count).ToArray();
        }
        protected override void TransformTaskItems()
        {
            exercise = exercise.DeepCopy();

            bool headerFlag = true;
            bool fpFlag     = false;
            List <List <Concept> > headerItems      = new List <List <Concept> >();
            List <Concept>         fourPictureItems = new List <Concept>();
            List <List <Concept> > footerItems      = new List <List <Concept> >();

            foreach (var conceptGroup in exercise.TaskItems)
            {
                fpFlag = false;
                foreach (var concept in conceptGroup)
                {
                    if (concept.Tag != null && concept.Tag.Equals("FP"))
                    {
                        fourPictureItems.Add(concept);
                        headerFlag = false;
                        fpFlag     = true;
                    }
                }
                if (!fpFlag)
                {
                    if (headerFlag)
                    {
                        headerItems.Add(conceptGroup);
                    }
                    else
                    {
                        footerItems.Add(conceptGroup);
                    }
                }
            }

            if (exercise != null && exercise.OptionItems != null && exercise.OptionItems.Count > 0 && fourPictureItems.Count < 4)
            {
                fourPictureItems.AddRange(exercise.OptionItems.PickRandomItems(4 - fourPictureItems.Count).Select(item => { item.IsOption = true; return(item); }));
            }

            if (Lesson.OptionItems != null && Lesson.OptionItems.Count > 0 && fourPictureItems.Count < 4)
            {
                fourPictureItems.AddRange(Lesson.OptionItems.PickRandomItems(4 - fourPictureItems.Count).Select(item => { item.IsOption = true; return(item); }));
            }

            fourPictureItems.ForEach(c => {
                if (c is IResizeable)
                {
                    // (c as IResizeable).Size = ((headerItems.Count > 2 && footerItems.Count > 0) || IsSmallHeight() ? 100 : 120);
                    (c as IResizeable).Size = (IsSmallHeight() ? 100 : 120);
                }
            });

            fourPictureItems.Shuffle();

            if (exercise == null)
            {
                exercise = new SelectConceptExercise();
            }
            exercise.TaskItems = new List <List <Concept> >();

            // Add header lines
            foreach (var headerLine in headerItems)
            {
                exercise.TaskItems.Add(headerLine);
            }
            exercise.TaskItems.Add(new List <Concept>()
            {
                new Models.Space()
            });

            // Add four pictures cards
            exercise.TaskItems.Add(fourPictureItems.GetRange(0, 2));
            exercise.TaskItems.Add(fourPictureItems.GetRange(2, 2));

            // Add footer lines
            exercise.TaskItems.Add(new List <Concept>()
            {
                new Models.Space(15, 8)
            });
            foreach (var footerLine in footerItems)
            {
                exercise.TaskItems.Add(footerLine);
            }
        }