Пример #1
0
        String getProgramsPerDay(ScheduleDataset.Channel channel, DateTime from, DateTime to)
        {
            StringBuilder sb = new StringBuilder();

            foreach (var i in getDaysForPerChannelMode(from, to))
            {
                var    slots        = new List <ScheduleDataset.Slot>();
                double totalMinutes = 24 * 60;
                if (this.programsWithChId.ContainsKey(channel.id))
                {
                    foreach (var j in this.programsWithChId[channel.id])
                    {
                        if (j.endAt <= i || (i + TimeSpan.FromHours(24)) <= j.startAt)
                        {
                            continue;
                        }
                        double scrollOffset = Math.Max((j.startAt - i).TotalMinutes, 0);
                        double scrollHeight = (j.endAt - j.startAt).TotalMinutes;
                        scrollHeight = Math.Min(scrollHeight, totalMinutes - scrollOffset);
                        var add = new Tuple <ScheduleDataset.Slot, double, double>(j, scrollOffset, scrollHeight);
                        slots.Add(j);
                    }
                    slots.Sort((a, b) => {
                        return(a.startAt < b.startAt ? -1 : 1);
                    });
                }
                sb.AppendLine($"<td>\n\n{getOneChannel(slots, i, i + TimeSpan.FromHours(24))}\n\n</td>\n");
            }
            return("<table><tr>\n" + sb.ToString() + "\n</tr></table>");
        }
Пример #2
0
        public void saveHtml(String outPath, ScheduleDataset.Channel saveChannel)
        {
            DateTime firstProgramTime = DateTime.Now, finalProgramTime = DateTime.Now;

            foreach (var i in this.programsWithChId[saveChannel.id])
            {
                firstProgramTime = i.startAt < firstProgramTime ? i.startAt : firstProgramTime;
                finalProgramTime = finalProgramTime < i.endAt ? i.endAt : finalProgramTime;
            }
            //0分0秒に合わせる
            firstProgramTime = firstProgramTime.AddMinutes(firstProgramTime.Minute * -1);
            firstProgramTime = firstProgramTime.AddSeconds(firstProgramTime.Second * -1);
            firstProgramTime = firstProgramTime.AddMilliseconds(firstProgramTime.Millisecond * -1);
            finalProgramTime = finalProgramTime.AddHours(1);
            finalProgramTime = finalProgramTime.AddMinutes(finalProgramTime.Minute * -1);
            finalProgramTime = finalProgramTime.AddSeconds(finalProgramTime.Second * -1);
            finalProgramTime = finalProgramTime.AddMilliseconds(finalProgramTime.Millisecond * -1);
            String val;

            System.Reflection.Assembly myAssembly = System.Reflection.Assembly.GetExecutingAssembly();
            using (System.IO.StreamReader sr = new System.IO.StreamReader(myAssembly.GetManifestResourceStream("abema_onair_schedule.Resources.outHtml.txt"), System.Text.Encoding.UTF8)) {
                val = sr.ReadToEnd();
            }
            val = val.Replace("<!--ALL-CHANNELS-->", JsonConvert.SerializeObject(this.allChannelIds, Formatting.None));
            val = val.Replace("<!--THIS-FILE-CONTAIN-CHANNELS-->", JsonConvert.SerializeObject(new List <ChannelAndId> {
                new ChannelAndId {
                    ChannelId = saveChannel.id, ChannelName = saveChannel.name
                }
            }, Formatting.None));
            val = val.Replace("<!--HEADERH-->", getHeaderHAllDay(firstProgramTime, finalProgramTime));
            val = val.Replace("<!--HEADERV-->", getHeaderVOneDay());
            val = val.Replace("<!--MAIN-->", getProgramsPerDay(saveChannel, firstProgramTime, finalProgramTime));
            val = val.Replace("<!--CH-COUNT -->", getDaysForPerChannelMode(firstProgramTime, finalProgramTime).Count.ToString());
            val = val.Replace("<!--FIRST-DATE-UNIX-SEC-->", new DateTimeOffset(new DateTime(2000, 1, 1, ScheduleHtml.StartHour, 0, 0)).ToUnixTimeSeconds().ToString());
            val = val.Replace("<!--FINAL-DATE-UNIX-SEC-->", new DateTimeOffset(new DateTime(2000, 1, 2, ScheduleHtml.StartHour, 0, 0)).ToUnixTimeSeconds().ToString());
            System.IO.File.WriteAllText(outPath, val);
        }