Пример #1
0
		private PageGroupGenerator(MMUnit mmUnitSource, RingPlayerDb targetPlayerDb)
			{
			MMUnitSource = mmUnitSource;
			TargetPlayerDb = targetPlayerDb;
			}
Пример #2
0
		double CreateScheduledPagesFromMMUnit(MMUnit mmunit, double relativeStartSecond, 
			ref List<PageSchedule> lastInsertedSchedules, MMSlot slot)
			{
			PageGroup pageGroup = PageGroupGenerator.GetOrCreatePageGroup(mmunit, TargetDb);

			Guid pageGroupScheduledId = Guid.NewGuid();
			TimeSpan currentStartTime = TimeSpan.FromSeconds(relativeStartSecond);

			Page[] pages = pageGroup.Pages.OrderBy(x => x.SortOrder).ToArray();
			for (int i = 0; i < pages.Length; i++)
				{
				Page page = pages[i];

				if (currentStartTime > TimeSpan.FromDays(1))
					continue;

				PageSchedule pageSchedule = TargetDb.PageSchedules.NewRow();
				pageSchedule.Id = Guid.NewGuid();
				pageSchedule.StartTime = TargetDate.Date.Add(currentStartTime);
				pageSchedule.DiagnosticText = $"{pageGroup.Name} Seite {i + 1}";
				pageSchedule.PageGroupScheduleId = pageGroupScheduledId;
				pageSchedule.Page = page;
				pageSchedule.RingMetaData = TargetRing;
				pageSchedule.SlotId = slot.Id;

				currentStartTime = currentStartTime.Add(TimeSpan.FromSeconds((double)pageSchedule.Page.ExpectedDuration));
				pageSchedule.Table.Rows.Add(pageSchedule);

				if (lastInsertedSchedules != null)
					lastInsertedSchedules.Add(pageSchedule);
				}
			if (pageGroup.DurationInSeconds == 0)
				Debug.WriteLine($"Duration = 0 Beitrag SchreenGroup {pageGroup.Name} ({pageGroup.Id})");

			return currentStartTime.TotalSeconds;
			}
Пример #3
0
		public static PageGroup GetOrCreatePageGroup(MMUnit source, RingPlayerDb targetDb)
			{
			return new PageGroupGenerator(source, targetDb).Generate();
			}
Пример #4
0
	    public PageGroup GeneratePageGroup(MMUnit mmUnit, RingMetaData ring)
		    {
		    return PageGroupGenerator.GetOrCreatePageGroup(mmUnit, ring.DataSet);
		    }