20220510_191_upperpc/AutomaticApp/ViewModels/LogViewModel.cs

126 lines
4.0 KiB
C#
Raw Normal View History

2023-07-27 02:57:34 +00:00
using AutomaticApp.Common;
using AutomaticApp.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
namespace AutomaticApp.ViewModels
{
/// <summary>
/// 系统日志数据记录
/// </summary>
internal class LogViewModel : NotifyBase
{
string Save_Path = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"数据记录\";
public static ErrorMessageModel ErrorMessageModel { get; set; } = new ErrorMessageModel();
private DateTime selectedDate;
public DateTime SelectedDate
{
get { return selectedDate; }
set { selectedDate = value; this.DoNotify(); }
}
int pageNum = 0;
List<string> logs = new List<string>();
private int totalPage;
public int TotalPage
{
get { return totalPage; }
set { totalPage = value; this.DoNotify(); }
}
private string logMsg;
public string LogMsg
{
get { return logMsg; }
set { logMsg = value; this.DoNotify(); }
}
public CommandBase ReadTxtLogCommand { get; set; }//读取日志信息
public CommandBase ForwordLogCommand { get; set; }//读取日志信息
public CommandBase NextLogCommand { get; set; }//读取日志信息
public LogViewModel()
{
SelectedDate = DateTime.Now;
ReadTxtLog(null);
this.ReadTxtLogCommand = new CommandBase();
this.ReadTxtLogCommand.DoExcute = new Action<object>(ReadTxtLog);
this.ReadTxtLogCommand.DoCanExcute = new Func<object, bool>((o) => true);
this.ForwordLogCommand = new CommandBase();
this.ForwordLogCommand.DoExcute = new Action<object>(ForwordLog);
this.ForwordLogCommand.DoCanExcute = new Func<object, bool>((o) => true);
this.NextLogCommand = new CommandBase();
this.NextLogCommand.DoExcute = new Action<object>(NextLog);
this.NextLogCommand.DoCanExcute = new Func<object, bool>((o) => true);
}
public void ReadTxtLog(object o)
{
//设置当前页为1
pageNum = 1;
logs = tools.ReadFromTXT("解析数据.txt", Save_Path + SelectedDate.ToString("yyyy_MM_dd") + @"\").Split("\r\n").ToList();
ErrorMessageModel._MessageCon = "";
if (logs.Count < 100)
{
TotalPage = 1;
for (int i = 0; i < logs.Count; i++)
{
ErrorMessageModel._MessageCon += logs[i] + "\r\n";
}
}
else
{
TotalPage = (int)Math.Ceiling((double)logs.Count / 100);
for (int i = 0; i < 100; i++)
{
ErrorMessageModel._MessageCon += logs[i] + "\r\n";
}
}
LogMsg = string.Format("共计{0}页,当前第{1}页", TotalPage, pageNum);
}
public void ForwordLog(object o)
{
if (pageNum == 1)
return;
pageNum -= 1;
ErrorMessageModel._MessageCon = "";
for (int i = 0; i < 100; i++)
{
ErrorMessageModel._MessageCon += logs[i + (pageNum - 1) * 100] + "\r\n";
}
LogMsg = string.Format("共计{0}页,当前第{1}页", TotalPage, pageNum);
}
public void NextLog(object o)
{
if (pageNum == Math.Ceiling((double)logs.Count / 100))
return;
pageNum += 1;
ErrorMessageModel._MessageCon = "";
for (int i = 0; i < ((pageNum == Math.Ceiling((double)logs.Count / 100)) ? (logs.Count - (pageNum - 1) * 100) : 100); i++)
{
ErrorMessageModel._MessageCon += logs[i + (pageNum - 1) * 100] + "\r\n";
}
LogMsg = string.Format("共计{0}页,当前第{1}页", TotalPage, pageNum);
}
}
}