コード例 #1
0
        public async Task <List <RenderedSlide> > RenderProject(Project project, IProgress <int> progress)
        {
            List <RenderedSlide> slides = new List <RenderedSlide>();

            try
            {
                await Task.Run(() =>
                {
                    SlideRenderer sr = new SlideRenderer(project);

                    progress.Report(0);

                    int completedslidecount = 0;

                    Parallel.ForEach(project.Slides, new ParallelOptions()
                    {
                        MaxDegreeOfParallelism = 4
                    }, (Slide s) =>
                    {
                        slides.Add(sr.RenderSlide(s, Messages));
                        Interlocked.Increment(ref completedslidecount);
                        int prog = (int)(completedslidecount / (double)project.Slides.Count * 100);
                        progress.Report(prog);
                    });
                });
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Master Renderer Exception");
            }


            return(slides.OrderBy(s => s.Number).ToList());
        }
コード例 #2
0
        public void RendersYaml()
        {
            const string frontMatter = "title: Pass";
            const string markdown    = "# Pass";
            var          target      = new SlideRenderer();
            var          actual      = target.Render(frontMatter, markdown);

            Assert.Equal("Pass", actual.Metadata["title"]);
        }
コード例 #3
0
        public void LeavesArbitraryTags()
        {
            const string frontMatter = "title: Pass";
            const string markdown    = "<sub>2</sub><script>hack();</script>";
            var          target      = new SlideRenderer();
            var          actual      = target.Render(frontMatter, markdown);

            Assert.Equal("<p><sub>2</sub>&lt;script&gt;hack();&lt;/script&gt;</p>", actual.Html.Trim());
        }
コード例 #4
0
        public void DisablesScriptTags()
        {
            const string frontMatter = "title: Pass";
            const string markdown    = "<script>hack();</script>";
            var          target      = new SlideRenderer();
            var          actual      = target.Render(frontMatter, markdown);

            Assert.Equal("&lt;script&gt;hack();&lt;/script&gt;", actual.Html.Trim());
        }
コード例 #5
0
        public void RendersH1Tag()
        {
            const string frontMatter = "title: Pass";
            const string markdown    = "# Pass";
            var          target      = new SlideRenderer();
            var          actual      = target.Render(frontMatter, markdown);

            Assert.Equal("<h1>Pass</h1>", actual.Html.Trim());
        }
コード例 #6
0
 public void OneTimeSetUp()
 {
     Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory);
     videoAnnotationsClient = Mock.Of <IUlearnVideoAnnotationsClient>();
     slideRenderer          = new SlideRenderer(videoAnnotationsClient, null, null, null);
     loader         = new XmlSlideLoader();
     courseSettings = new CourseSettings(CourseSettings.DefaultSettings);
     courseSettings.Scoring.Groups.Add("ScoringGroup1", new ScoringGroup {
         Id = "ScoringGroup1"
     });
     unit = new Unit(UnitSettings.CreateByTitle("Unit title", courseSettings), new DirectoryInfo(testDataDirectory));
 }
コード例 #7
0
 public ExerciseStatisticsController(IWebCourseManager courseManager, IUserSolutionsRepo userSolutionsRepo, UlearnDb db, IUsersRepo usersRepo,
                                     IUserSolutionsRepo solutionsRepo, IUserQuizzesRepo userQuizzesRepo, IVisitsRepo visitsRepo, IGroupsRepo groupsRepo,
                                     SlideRenderer slideRenderer, ICourseRolesRepo courseRolesRepo, ICoursesRepo coursesRepo)
     : base(courseManager, db, usersRepo)
 {
     this.coursesRepo       = coursesRepo;
     this.courseRolesRepo   = courseRolesRepo;
     this.userSolutionsRepo = userSolutionsRepo;
     this.solutionsRepo     = solutionsRepo;
     this.userQuizzesRepo   = userQuizzesRepo;
     this.visitsRepo        = visitsRepo;
     this.groupsRepo        = groupsRepo;
     this.slideRenderer     = slideRenderer;
 }
コード例 #8
0
 public CoursesController(IWebCourseManager courseManager, UlearnDb db, ICoursesRepo coursesRepo,
                          IUsersRepo usersRepo, ICourseRolesRepo courseRolesRepo, IUnitsRepo unitsRepo, IUserSolutionsRepo solutionsRepo,
                          IUserQuizzesRepo userQuizzesRepo, IVisitsRepo visitsRepo, IGroupsRepo groupsRepo, IGroupMembersRepo groupMembersRepo,
                          IGroupAccessesRepo groupAccessesRepo, SlideRenderer slideRenderer, ITempCoursesRepo tempCoursesRepo)
     : base(courseManager, db, usersRepo)
 {
     this.coursesRepo       = coursesRepo;
     this.courseRolesRepo   = courseRolesRepo;
     this.unitsRepo         = unitsRepo;
     this.solutionsRepo     = solutionsRepo;
     this.userQuizzesRepo   = userQuizzesRepo;
     this.visitsRepo        = visitsRepo;
     this.groupsRepo        = groupsRepo;
     this.groupMembersRepo  = groupMembersRepo;
     this.groupAccessesRepo = groupAccessesRepo;
     this.slideRenderer     = slideRenderer;
     this.tempCoursesRepo   = tempCoursesRepo;
 }