Esempio n. 1
0
        public void ShowCourseEntry(string courseName)
        {
            ScheduleCheck();
            if (!Schedule.Contains(courseName))
            {
                IO.WriteLine($"课程 {courseName} 不存在!", OutputType.Error);
                return;
            }

            IO.WriteLine(Suit.CreateContentArray((courseName, null), ($"\t{(Schedule[courseName].EnableNotification ? "启用通知" : "关闭通知")}", IO.ColorSetting.ErrorColor)));
            IO.AppendWriteLinePrefix();
            foreach (var item in Schedule[courseName])
            {
                IO.WriteLine(Suit.CreateContentArray(($"{item.DayOfWeek.ToFriendlyName()}\t", IO.ColorSetting.InformationColor, null),
                                                     ($"{item.CourseTime.ToFriendlyName()}\t", IO.ColorSetting.InformationColor, null),
                                                     ($"{(item.IsLab ? "实验" : "    ")}\t", IO.ColorSetting.InformationColor, null),
                                                     ($"{(item.IsLongCourse ? "两届连上" : "        ")}\t", IO.ColorSetting.InformationColor, null)
                                                     ));
                IO.AppendWriteLinePrefix();
                IO.WriteLine("周\t教室\t老师", OutputType.ListTitle);
                foreach (var(i, cell) in item)
                {
                    IO.WriteLine($"{i}\t{cell.Location}\t{cell.Teacher}");
                }

                IO.SubtractWriteLinePrefix();
            }

            IO.SubtractWriteLinePrefix();
        }
Esempio n. 2
0
 public string Status()
 {
     IO.WriteLine($"{LogRes.LogFileAt}: ");
     IO.AppendWriteLinePrefix();
     IO.WriteLine(_logger.FilePath, OutputType.MobileSuitInfo);
     IO.SubtractWriteLinePrefix();
     IO.WriteLine($"{LogRes.Dynamic}: ");
     IO.AppendWriteLinePrefix();
     IO.WriteLine(
         _logger.EnableLogQuery
             ? LogRes.On
             : LogRes.Off, OutputType.MobileSuitInfo);
     IO.SubtractWriteLinePrefix();
     return(_logger.FilePath);
 }
Esempio n. 3
0
        /// <inheritdoc/>
        public override void SuitShowUsage()
        {
            IO.WriteLine("用法:");
            IO.AppendWriteLinePrefix();
            IO.WriteLine("快速使用:");
            IO.AppendWriteLinePrefix();
            IO.WriteLine(Suit.CreateContentArray(
                             ("HRSchedule ", IO.ColorSetting.InformationColor),
                             ("-i <输入xls> ", IO.ColorSetting.AllOkColor),
                             ("-o <输出ics>", IO.ColorSetting.ErrorColor)
                             ));
            IO.WriteLine("可用选项:", OutputType.Prompt);
            IO.AppendWriteLinePrefix();
            IO.WriteLine(Suit.CreateContentArray(
                             ("--disable-week-index", IO.ColorSetting.InformationColor),
                             ("\t关闭周数显示", IO.ColorSetting.ErrorColor)
                             ));
            IO.WriteLine(Suit.CreateContentArray(
                             ("--enable-notification", IO.ColorSetting.InformationColor),
                             ("\t启用通知", IO.ColorSetting.AllOkColor)
                             ));
            IO.WriteLine(Suit.CreateContentArray(
                             ("-t <提醒提前的分钟数>", IO.ColorSetting.InformationColor),
                             ("\t设定通知时间(默认25)", IO.ColorSetting.AllOkColor)
                             ));
            IO.WriteLine(Suit.CreateContentArray(
                             ("-m <源日期>[:<目标>]", IO.ColorSetting.InformationColor),
                             ("\t日期映射,支持多个-m", IO.ColorSetting.AllOkColor)
                             ));
            IO.SubtractWriteLinePrefix();

            IO.WriteLine("一般使用:");
            IO.AppendWriteLinePrefix();
            IO.WriteLine(Suit.CreateContentArray(
                             ("输入\"", null),
                             ("HRSchedule", IO.ColorSetting.InformationColor),
                             ("\"启动程序,之后输入\"", null),
                             ("Ls", IO.ColorSetting.InformationColor),
                             ("\"查看所有可用指令", null)));
            IO.SubtractWriteLinePrefix();
            IO.SubtractWriteLinePrefix();
            IO.SubtractWriteLinePrefix();
            Environment.Exit(0);
        }
Esempio n. 4
0
        public void Init()
        {
            IO.WriteLine("课表尚未初始化,您可以:", OutputType.ListTitle);
            IO.AppendWriteLinePrefix();
            //IO.WriteLine("0. 自动导入(默认)");
            IO.WriteLine("1. 手动导入XLS(默认)");
            IO.WriteLine("2. 手动导入JSON");
            IO.WriteLine("3. 创建新的课表");
            IO.WriteLine("其它. 退出");
            IO.SubtractWriteLinePrefix();
            if (int.TryParse(IO.ReadLine("选择", "1", null), out var o))
            {
                switch (o)
                {
                //case 0:
                //    Auto();
                //    break;
                case 1:
                    LoadXls(IO.ReadLine("Xls位置") ?? "");
                    break;

                case 2:
                    LoadJson(IO.ReadLine("Json位置") ?? "");
                    break;

                case 3:
                    New();
                    break;

                default:
                    Environment.Exit(0);
                    break;
                }
            }
            else
            {
                Environment.Exit(0);
            }
        }
Esempio n. 5
0
        public string Find(LogFilter filter)
        {
            var logsToShow =
                (from l in _logger.LogMem.AsParallel()
                 where l.TimeStamp >= filter.Start
                 where l.TimeStamp <= filter.End
                 where Regex.IsMatch(l.Type, filter.TypeRegex)
                 where Regex.IsMatch(l.Message, filter.MessageRegex)
                 orderby l.TimeStamp
                 select l).ToList();

            var i = 1;

            foreach (var e in logsToShow)
            {
                IO.WriteLine("(" + i + ") " + e.Type, OutputType.ListTitle);

                IO.AppendWriteLinePrefix();
                IO.WriteLine($"{LogRes.Time}: ");

                IO.AppendWriteLinePrefix();
                IO.WriteLine(e.TimeStamp.ToString("yyMMdd HH:mm:ss", CultureInfo.InvariantCulture), OutputType.MobileSuitInfo);
                IO.SubtractWriteLinePrefix();

                IO.WriteLine($"{LogRes.Info}: ");

                IO.AppendWriteLinePrefix();
                var message = e.Message.Split("\n");
                foreach (var m in message)
                {
                    IO.WriteLine(m, OutputType.CustomInfo);
                }
                IO.SubtractWriteLinePrefix();
                IO.SubtractWriteLinePrefix();
                i++;
            }

            return($"{logsToShow.Count}/{_logger.LogMem.Count}");
        }
Esempio n. 6
0
        public void New()
        {
            if (!(int.TryParse(
                      IO.ReadLine("输入年份", "1", null), out var year) &&
                  year >= 2020 && year <= 2021))
            {
                IO.WriteLine("无效输入。", OutputType.Error);
                return;
            }
            IO.WriteLine("选择学期:", OutputType.ListTitle);
            IO.AppendWriteLinePrefix();
            IO.WriteLine("0. 春(默认)");
            IO.WriteLine("1. 夏");
            IO.WriteLine("2. 秋");
            IO.SubtractWriteLinePrefix();
            if (!int.TryParse(
                    IO.ReadLine("", "0", null), out var s) || s > 2 || s < 0)
            {
                IO.WriteLine("无效输入。", OutputType.Error);
                return;
            }

            Schedule = new ScheduleEntity(year, (Semester)s);
        }
Esempio n. 7
0
        public void Show()
        {
            ScheduleCheck();
            if (Schedule is null)
            {
                return;
            }
            var maxWeek = Schedule.MaxWeek;

            IO.WriteLine("课表:");
            IO.WriteLine(Suit.CreateContentArray(
                             ("通知:\t", null),
                             ($"{(Schedule.EnableNotification == null ? $"?\t提前{Schedule.NotificationTime}分钟" : (bool)Schedule.EnableNotification ? $"启用\t提前{Schedule.NotificationTime}分钟" : "关闭")}",
                              Schedule.EnableNotification == null ? IO.ColorSetting.CustomInformationColor : (bool)Schedule.EnableNotification ? IO.ColorSetting.AllOkColor : IO.ColorSetting.ErrorColor))
                         , OutputType.Prompt);
            IO.WriteLine(Suit.CreateContentArray(
                             ("周数:\t", null),

                             ($"{(Schedule.DisableWeekIndex ? "关闭" : "开启")}", Schedule.DisableWeekIndex ? IO.ColorSetting.ErrorColor : IO.ColorSetting.AllOkColor)), OutputType.Prompt);
            IO.AppendWriteLinePrefix();
            var outList = new List <(string, ConsoleColor?)>
            {
                ("\t周二\t三四节\t实验\t", Console.BackgroundColor)
            };

            for (var i = 1; i <= maxWeek; i++)
            {
                outList.Add(($"{i} ".PadLeft(3, '0').PadLeft(4, ' '), null));
            }

            IO.WriteLine(outList, OutputType.ListTitle);
            foreach (var course in Schedule)
            {
                IO.WriteLine(course.CourseName, OutputType.CustomInfo);
                IO.AppendWriteLinePrefix();
                foreach (var item in course)
                {
                    var subOutList = new List <(string, ConsoleColor?, ConsoleColor?)>
                    {
                        ($"{item.DayOfWeek.ToFriendlyName()}\t", IO.ColorSetting.InformationColor, null),
                        ($"{item.CourseTime.ToFriendlyName()}\t", IO.ColorSetting.InformationColor, null),
                        ($"{(item.IsLab?"实验":"    ")}\t", IO.ColorSetting.InformationColor, null)
                    };
                    for (var i = 1; i <= maxWeek; i++)
                    {
                        subOutList.Add((" ", null, null));
                        if (string.IsNullOrEmpty(item[i].Name))
                        {
                            subOutList.Add(("  ", null, IO.ColorSetting.AllOkColor));
                        }
                        else
                        {
                            subOutList.Add(("  ", null, IO.ColorSetting.ErrorColor));
                        }
                        subOutList.Add((" ", null, null));
                    }
                    IO.WriteLine(subOutList);
                }
                IO.SubtractWriteLinePrefix();
            }
            IO.SubtractWriteLinePrefix();
            IO.WriteLine("日期映射:", OutputType.Prompt);
            IO.AppendWriteLinePrefix();
            foreach (var item in Schedule.DateMap)
            {
                IO.WriteLine(Suit.CreateContentArray(
                                 (item.Key.ToShortDateString(), IO.ColorSetting.InformationColor),
                                 (" -> ", null),
                                 (item.Value == null ? "停课" : ((DateTime)item.Value).ToShortDateString(), IO.ColorSetting.InformationColor)));
            }
            IO.SubtractWriteLinePrefix();
        }