SuperDesign/Source/开发辅助工具/Tools/UpLog/FrmUpdateLog.cs
zilinsoft 1f8c54fe38 - *.[改进]项目支持自动打包功能。
### RySmartEditor    V1.0.2501.2701
- *.[改进]FTP上传时限制300毫秒内只能刷新一次UI进度。
### SuperDesign    V3.0.2501.2701
- *.[新增]新增支持在线升级功能。
#### 项目功能->项目管理
- *.[新增]FTP上传文件列表和打包文件列表支持在软件里直接编辑。
- *.[改进]更新dll版本将比对版本号,只更新版本号更新或者更新日期更新的dll。
#### 项目功能->更新日志
- *.[新增]新增支持自动记录过的分组信息,然后可以进行选择快速插入。
- *.[新增]记录使用过的项目信息到总数据库,以方便总览。
- *.[改进]右键插入日志时直接对富文本框进行编辑,而不是替换内容,从而具备撤销功能。
- *.[改进]改进MD日志输出的样式设计。
- *.[修复]修复《确认日志覆盖》窗口里的按钮,随着窗口大小变化,按钮会错乱的BUG。
- *.[修复]修复双击日志列表显示日志时,针对本周的时间显示不正确的BUG。
- *.[修复]修复右键新增日志时,如果没有分组,插入的行可能不正确的BUG。
- *.[修复]修复设为开发日志后,鼠标指针变到文本开头的问题。
#### 网页抓取工具
- *.[新增]新增多个常用UA。
- *.[新增]切换Url时如果存在Cookie和Header时,则提示是否清空。
- *.[新增]保存记录时新增支持保存UA。
- *.[新增]Url列表支持图标展示。
2025-01-27 15:41:54 +08:00

145 lines
6.7 KiB
C#

using Newtonsoft.Json.Linq;
using ryCommon;
using ryControls.Controls;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Media;
using System.Xml.Linq;
using TheArtOfDev.HtmlRenderer.WinForms;
namespace SuperDesign.Tools
{
public partial class FrmUpdateLog : Form
{
public FrmUpdateLog()
{
InitializeComponent();
}
public void ShowLog(string LogJson)
{
try
{
JArray jarr = JArray.Parse(LogJson);
for (int i = 0; i < jarr.Count; i++)
{
var item = jarr[i];
var ProjectName = item.GetJsonValue("ProjectChsName", "");
if(ProjectName.Length==0)
{
ProjectName = item.GetJsonValue("ProjectName", "");
}
TabPage tab = new TabPage()
{
Text = ProjectName
};
Label label = new Label
{
Parent = tab,
Location = new Point(1, 4),
AutoSize = true,
Text = "版本号:" + item.GetJsonValue("VerStr", "")
};
var LogTime = item.GetJsonValue("LogTime", "");
var now_jarr = LogTime.Length==0? new JArray(): JArray.Parse(LogTime);
Dictionary<string, long> dict = new Dictionary<string, long>();
for (int j = 0; j < now_jarr.Count; j++)
{
var item_jarr = now_jarr[j];
dict[item_jarr.GetJsonValue("text", "")] = item_jarr.GetJsonValue("time", 0L);
}
var LogText_lines = item.GetJsonValue("LogText", "").Replace("\r", "\n").Replace("\n\n", "\n").Split('\n');
var LogText = "";
for (int l = 0; l < LogText_lines.Length; l++)
{
if (LogText_lines[l].Length == 0) { continue; }
if (LogText.Length > 0) { LogText += "<br />"; }
var line = "";
var log_line_n1 = "";
var n1_color = "";
var log_line_n2 = LogText_lines[l];
if(log_line_n2.StartsWith("*.[新增]"))
{
log_line_n1 = "*.[新增]";
n1_color = "blue";
log_line_n2 = log_line_n2.Substring(log_line_n1.Length);
}
else if (log_line_n2.StartsWith("*.[改进]"))
{
log_line_n1 = "*.[改进]";
n1_color = "green";
log_line_n2 = log_line_n2.Substring(log_line_n1.Length);
}
else if (log_line_n2.StartsWith("*.[修复]"))
{
log_line_n1 = "*.[修复]";
n1_color = "red";
log_line_n2 = log_line_n2.Substring(log_line_n1.Length);
}
line = (log_line_n1.Length==0?"":("<b><span color='"+ n1_color + "'>"+log_line_n1+"</span></b>"))+ System.Web.HttpUtility.HtmlEncode(log_line_n2);
if (dict.ContainsKey(LogText_lines[l]))
{
var dt = dict[LogText_lines[l]].ToDateTime();
var dt_str= dt.ToString("yyyy-MM-dd HH:mm");
if(dt.Date==DateTime.Now.Date)
{ dt_str = "今天 "+ dt.ToString("HH:mm"); }
else if (dt.Date.AddDays(1) == DateTime.Now.Date)
{ dt_str = "昨天 " + dt.ToString("HH:mm"); }
else
{
var index = (int)DateTime.Now.DayOfWeek;
index = index == 0 ? 7 : index;
//当前周的范围
DateTime retStartDay = DateTime.Now.Date.AddDays(-(index - 1));
if(dt >= retStartDay && dt < retStartDay.AddDays(7))
{
dt_str = "本" + dt.ToString("ddd HH:mm");
}
}
line += "<span color='red'>" + System.Web.HttpUtility.HtmlEncode("=>" + dt_str) + "</span>";
}
if(line.StartsWith("#### "))
{
line ="<br /><b>"+ line.Substring(5) + "</b>";
}
LogText += line;
}
HtmlPanel htmlPanel = new HtmlPanel
{
Parent = tab,
Font = new Font("微软雅黑", 21),
Dock = DockStyle.Fill,
Location = new Point(label.Left, label.Top + label.Height + 4),
Size = new Size(tab.ClientSize.Width, tab.ClientSize.Height - (label.Top + label.Height + 4)),
Anchor = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Bottom,
BaseStylesheet = "body { font:11pt Consolas }",
Text = "<body>" + LogText + "</body>"
};
//RichTextBox2 rich = new RichTextBox2
//{
// Parent = tab,
// Dock = DockStyle.Fill,
// Font = new Font("微软雅黑", 11),
// ReadOnly=true,
// BackColor=Color.White,
// ScrollBars= RichTextBoxScrollBars.Both,
// WordWrap=false,
// Location = new Point(label.Left, label.Top + label.Height + 4),
// Size = new Size(tab.ClientSize.Width, tab.ClientSize.Height - (label.Top + label.Height + 4)),
// Anchor = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Bottom,
// Text= LogText
//};
tabControl1.TabPages.Add(tab);
}
}
catch { }
}
}
}