You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

159 lines
6.4 KiB

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
{
/// <summary>
/// ProgramgroupView.xaml 的交互逻辑
/// </summary>
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();
}
}
}