using LiveChartsCore; using SunlightCentralizedControlManagement_SCCM_.UserClass; using SunlightCentralizedControlManagement_SCCM_.WindowsView; using System; using System.Collections.Generic; using System.Data; using System.Data.Entity; using System.Data.SQLite; using System.Diagnostics.Eventing.Reader; using System.Linq; using System.Net; using System.Net.NetworkInformation; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Controls.Primitives; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.Drawing.Drawing2D; using System.Xml.Linq; using System.Drawing; using static SunlightCentralizedControlManagement_SCCM_.UserClass.SqliteHelper; using static SunlightCentralizedControlManagement_SCCM_.WindowsView.ViewStep; using static System.Windows.Forms.VisualStyles.VisualStyleElement; using SunlightCentralizedControlManagement_SCCM_.ViewModel; using LiveChartsCore.SkiaSharpView.WPF; using System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder; using nGantt.GanttChart; using nGantt; using nGantt.PeriodSplitter; using ScottPlot.TickGenerators.TimeUnits; using System.Runtime.Serialization; using System.Windows.Markup; namespace SunlightCentralizedControlManagement_SCCM_.View { /// /// ProgramgroupView.xaml 的交互逻辑 /// public partial class ProductionPlanningView : UserControl { public ProductionPlanningView() { InitializeComponent(); DataContext = new ProductionPlanningModel(); Sdatepicker.Language = XmlLanguage.GetLanguage(Configini.IniReadvalue("SYS", "Language")); } private readonly UserClass.IniFile.IniFiles Configini = new UserClass.IniFile.IniFiles(Convert.ToString(System.AppDomain.CurrentDomain.BaseDirectory) + "SCCM.ini"); private SQLiteHelper SQLiteHelpers = null; //定义数据库 private readonly string DBAddress = Environment.CurrentDirectory + "\\DataBase\\SCCM.db"; //数据库路径 private DateTime minDate; private DateTime maxDate; private void UserControl_Loaded(object sender, RoutedEventArgs e)//打开页面时的操作 { Sdatepicker.Text = DateTime.Now.ToString("yyyy/MM/dd"); minDate = DateTime.Now.Date; maxDate = minDate.AddDays(1); GanttChartNEW(); } private void GanttChartNEW() { GanttChart.ClearGantt(); GanttChart.Initialize(minDate, maxDate); var gridLineTimeLine = GanttChart.CreateTimeLine(new PeriodDaySplitter(minDate, maxDate), FormatDay); GanttChart.CreateTimeLine(new PeriodHourSplitter(minDate, maxDate), FormatHour); // Set the timeline to atatch gridlines to GanttChart.SetGridLinesTimeline(gridLineTimeLine, DetermineBackground); var rowgroup = GanttChart.CreateGanttRowGroup(); var row = GanttChart.CreateGanttRow(rowgroup, "GanttRow"); GanttChart.AddGanttTask(row, new GanttTask() { Start = DateTime.Parse("2024-12-30 00:30:00"), End = DateTime.Parse("2024-12-30 01:00:00"), Name = "GanttRow:"+"GanttTask 1", TaskProgressVisibility = System.Windows.Visibility.Hidden }); GanttChart.AddGanttTask(row, new GanttTask() { Start = DateTime.Parse("2024-12-30 06:00:00"), End = DateTime.Parse("2024-12-30 07:00:00"), Name = "GanttRow:"+"GanttTask 2" }); GanttChart.AddGanttTask(row, new GanttTask() { Start = DateTime.Parse("2024-12-30 10:00:00"), End = DateTime.Parse("2024-12-30 20:00:00"), Name = "GanttRow:"+"GanttTask 3" }); } private string FormatYear(Period period) { return period.Start.Year.ToString(); } private string FormatMonth(Period period) { return period.Start.Month.ToString(); } private string FormatDay(Period period) { return period.Start.Day.ToString(); } private string FormatDayName(Period period) { return period.Start.DayOfWeek.ToString(); } private string FormatHour(Period period) { return period.Start.Hour.ToString(); } private System.Windows.Media.Brush DetermineBackground(TimeLineItem timeLineItem) { if (timeLineItem.End.Date.DayOfWeek == DayOfWeek.Saturday || timeLineItem.End.Date.DayOfWeek == DayOfWeek.Sunday) return new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.LightBlue); else return new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Transparent); } private void ListViewItem_Quit(object sender, System.Windows.Input.MouseButtonEventArgs e)//退出事件 { } private void ListViewItem_edit(object sender, System.Windows.Input.MouseButtonEventArgs e)//编辑事件 { } private void ListViewItem_Insert(object sender, System.Windows.Input.MouseButtonEventArgs e)//插入事件 { } private void ListViewItem_Save(object sender, System.Windows.Input.MouseButtonEventArgs e)//保存事件 { } private void ListViewItem_Delete(object sender, System.Windows.Input.MouseButtonEventArgs e)//删除事件 { } private void ListViewItem_Before(object sender, MouseButtonEventArgs e)//前一天 { Sdatepicker.Text = DateTime.Parse(Sdatepicker.Text).AddDays(-1).ToString("yyyy/MM/dd"); } private void ListViewItem_Today(object sender, MouseButtonEventArgs e)//今天 { Sdatepicker.Text = DateTime.Now.ToString("yyyy/MM/dd"); } private void ListViewItem_DayAfter(object sender, MouseButtonEventArgs e)//后一天 { Sdatepicker.Text = DateTime.Parse(Sdatepicker.Text).AddDays(1).ToString("yyyy/MM/dd"); } private void Sdatepicker_SelectedDateChanged(object sender, SelectionChangedEventArgs e)//时间控件 { minDate = DateTime.Parse(sender.ToString()); maxDate = DateTime.Parse(sender.ToString()).AddDays(1); GanttChartNEW(); } } }