fix: fix arranger error

This commit is contained in:
2025-09-07 16:31:07 +08:00
parent 2982583048
commit f72b244b90
7 changed files with 309 additions and 301 deletions

View File

@ -9,108 +9,108 @@ using System.Windows;
namespace HFUTCourseSimulation {
public static class ImageExport {
//public static class ImageExport {
public static readonly int WeekHeaderHeight = 50;
public static readonly int BodyCellWidth = 150;
public static readonly int BodyCellHeight = 80;
public static readonly int HeaderCellHeight = 40;
public static readonly int LeftCellWidth = 25;
public static readonly int Blank = 20;
// public static readonly int WeekHeaderHeight = 50;
// public static readonly int BodyCellWidth = 150;
// public static readonly int BodyCellHeight = 80;
// public static readonly int HeaderCellHeight = 40;
// public static readonly int LeftCellWidth = 25;
// public static readonly int Blank = 20;
static Dictionary<int, string> weekDict = new Dictionary<int, string>() {
{0, "星期一"},
{1, "星期二"},
{2, "星期三"},
{3, "星期四"},
{4, "星期五"},
{5, "星期六"},
{6, "星期日"}
};
// static Dictionary<int, string> weekDict = new Dictionary<int, string>() {
// {0, "星期一"},
// {1, "星期二"},
// {2, "星期三"},
// {3, "星期四"},
// {4, "星期五"},
// {5, "星期六"},
// {6, "星期日"}
// };
public static bool Export(DateTime startDate, int weekCount, string file) {
// public static bool Export(DateTime startDate, int weekCount, string file) {
var simuCore = new SimulationCore(startDate, weekCount);
simuCore.Generate();
if (simuCore.ErrorList.Count != 0) return false;
// var simuCore = new SimulationCore(startDate, weekCount);
// simuCore.Generate();
// if (simuCore.ErrorList.Count != 0) return false;
//define size
int weekPerLine = (int)Math.Sqrt(weekCount) + 1;
// //define size
// int weekPerLine = (int)Math.Sqrt(weekCount) + 1;
var weekWidth = (Blank + LeftCellWidth + 7 * BodyCellWidth);
var weekHeight = (Blank + WeekHeaderHeight + HeaderCellHeight + 11 * BodyCellHeight);
var img = new Bitmap(Blank + weekPerLine * weekWidth, Blank + (weekCount / weekPerLine + (weekCount % weekPerLine == 0 ? 0 : 1)) * weekHeight);
var graphics = Graphics.FromImage(img);
// var weekWidth = (Blank + LeftCellWidth + 7 * BodyCellWidth);
// var weekHeight = (Blank + WeekHeaderHeight + HeaderCellHeight + 11 * BodyCellHeight);
// var img = new Bitmap(Blank + weekPerLine * weekWidth, Blank + (weekCount / weekPerLine + (weekCount % weekPerLine == 0 ? 0 : 1)) * weekHeight);
// var graphics = Graphics.FromImage(img);
//declare graphics value
var background = new SolidBrush(Color.White);
var headerBrush = new SolidBrush(Color.Gray);
var textBrush = new SolidBrush(Color.Black);
Brush cellBrush;
var textFont = new Font("Microsoft YaHei UI", 12);
// //declare graphics value
// var background = new SolidBrush(Color.White);
// var headerBrush = new SolidBrush(Color.Gray);
// var textBrush = new SolidBrush(Color.Black);
// Brush cellBrush;
// var textFont = new Font("Microsoft YaHei UI", 12);
var textMargin = graphics.MeasureString("测试字符", textFont).Height;
// var textMargin = graphics.MeasureString("测试字符", textFont).Height;
//overlay all background
graphics.FillRectangle(background, 0, 0, Blank + weekPerLine * weekWidth, Blank + (weekCount / weekPerLine + (weekCount % weekPerLine == 0 ? 0 : 1)) * weekHeight);
// //overlay all background
// graphics.FillRectangle(background, 0, 0, Blank + weekPerLine * weekWidth, Blank + (weekCount / weekPerLine + (weekCount % weekPerLine == 0 ? 0 : 1)) * weekHeight);
//output each week
for (int i = 0; i < weekCount; i++) {
//generate week data
var weekData = simuCore.Render(i + 1);
// //output each week
// for (int i = 0; i < weekCount; i++) {
// //generate week data
// var weekData = simuCore.Render(i + 1);
//get start position
var top = Blank + (i / weekPerLine) * weekHeight;
var left = Blank + (i % weekPerLine) * weekWidth;
graphics.TranslateTransform(left, top);
// //get start position
// var top = Blank + (i / weekPerLine) * weekHeight;
// var left = Blank + (i % weekPerLine) * weekWidth;
// graphics.TranslateTransform(left, top);
//draw week head
graphics.DrawString($"教学周:{weekData.WeekIndex}", textFont, textBrush, 0, 0);
//move transform
graphics.TranslateTransform(0, WeekHeaderHeight);
// //draw week head
// graphics.DrawString($"教学周:{weekData.WeekIndex}", textFont, textBrush, 0, 0);
// //move transform
// graphics.TranslateTransform(0, WeekHeaderHeight);
//draw header
graphics.FillRectangle(headerBrush, 0, 0, weekWidth - Blank, HeaderCellHeight);
graphics.FillRectangle(headerBrush, 0, 0, LeftCellWidth, weekHeight - WeekHeaderHeight - Blank);
//draw header text
for (int j = 0; j < 7; j++) {
graphics.DrawString(weekDict[j], textFont, textBrush, LeftCellWidth + j * BodyCellWidth, 0);
graphics.DrawString(weekData.WeekDate[j], textFont, textBrush, LeftCellWidth + j * BodyCellWidth, textMargin);
}
//draw left text
for (int j = 0; j < 11; j++) {
graphics.DrawString((j + 1).ToString(), textFont, textBrush, 0, HeaderCellHeight + j * BodyCellHeight);
}
// //draw header
// graphics.FillRectangle(headerBrush, 0, 0, weekWidth - Blank, HeaderCellHeight);
// graphics.FillRectangle(headerBrush, 0, 0, LeftCellWidth, weekHeight - WeekHeaderHeight - Blank);
// //draw header text
// for (int j = 0; j < 7; j++) {
// graphics.DrawString(weekDict[j], textFont, textBrush, LeftCellWidth + j * BodyCellWidth, 0);
// graphics.DrawString(weekData.WeekDate[j], textFont, textBrush, LeftCellWidth + j * BodyCellWidth, textMargin);
// }
// //draw left text
// for (int j = 0; j < 11; j++) {
// graphics.DrawString((j + 1).ToString(), textFont, textBrush, 0, HeaderCellHeight + j * BodyCellHeight);
// }
//move transform
graphics.TranslateTransform(LeftCellWidth, HeaderCellHeight);
foreach(var courses in weekData.CourseList) {
var cellx = courses.Start.week - 1;
var celly = courses.Start.index - 1;
//background
cellBrush = new SolidBrush(Util.ColorTrans.ToWinformColor(courses.BkColor));
graphics.FillRectangle(cellBrush, cellx * BodyCellWidth, celly * BodyCellHeight, BodyCellWidth, BodyCellHeight * courses.Span);
// //move transform
// graphics.TranslateTransform(LeftCellWidth, HeaderCellHeight);
// foreach(var courses in weekData.CourseList) {
// var cellx = courses.Start.week - 1;
// var celly = courses.Start.index - 1;
// //background
// cellBrush = new SolidBrush(Util.ColorTrans.ToWinformColor(courses.BkColor));
// graphics.FillRectangle(cellBrush, cellx * BodyCellWidth, celly * BodyCellHeight, BodyCellWidth, BodyCellHeight * courses.Span);
//draw text
var rect = new RectangleF(cellx * BodyCellWidth, celly * BodyCellHeight, BodyCellWidth, celly * BodyCellHeight);
graphics.DrawString(courses.Name, textFont, textBrush, rect);
var thisTextMargin = graphics.MeasureString(courses.Name, textFont, BodyCellWidth).Height;
graphics.DrawString(courses.Desc, textFont, textBrush, cellx * BodyCellWidth, celly * BodyCellHeight + thisTextMargin);
}
// //draw text
// var rect = new RectangleF(cellx * BodyCellWidth, celly * BodyCellHeight, BodyCellWidth, celly * BodyCellHeight);
// graphics.DrawString(courses.Name, textFont, textBrush, rect);
// var thisTextMargin = graphics.MeasureString(courses.Name, textFont, BodyCellWidth).Height;
// graphics.DrawString(courses.Desc, textFont, textBrush, cellx * BodyCellWidth, celly * BodyCellHeight + thisTextMargin);
// }
//reset
graphics.TranslateTransform(-LeftCellWidth, -HeaderCellHeight);
graphics.TranslateTransform(0, -WeekHeaderHeight);
graphics.TranslateTransform(-left, -top);
}
// //reset
// graphics.TranslateTransform(-LeftCellWidth, -HeaderCellHeight);
// graphics.TranslateTransform(0, -WeekHeaderHeight);
// graphics.TranslateTransform(-left, -top);
// }
System.IO.File.Delete(file);
img.Save(file, ImageFormat.Png);
img.Dispose();
return true;
}
// System.IO.File.Delete(file);
// img.Save(file, ImageFormat.Png);
// img.Dispose();
// return true;
// }
}
//}
}

View File

@ -187,14 +187,13 @@ namespace HFUTCourseSimulation.Kernel {
const char DASH = '-';
// 分析文本组成,决定其整数集合类型
// 如果包含DASH则肯定是Range否则按Individual处理
// 比如只有一项的Individual是没有COMMA的
IntegerCollectionKind kind;
if (s.Contains(COMMA)) {
kind = IntegerCollectionKind.Individual;
} else if (s.Contains(DASH)) {
if (s.Contains(DASH)) {
kind = IntegerCollectionKind.Range;
} else {
reporter.Error($"{field_name}的值“{s}”无法被解析");
return null;
kind = IntegerCollectionKind.Individual;
}
// 根据整数集合类型,决定分割用字符
@ -322,15 +321,17 @@ namespace HFUTCourseSimulation.Kernel {
lessons.Add(current_lesson);
current_lesson = null;
}
// 然后设置当前课程
var this_course = semester.courses[this_course_index];
current_lesson = new Data.Presentation.Lesson() {
name = this_course.name,
description = this_course.description,
color = this_course.color,
startIndex = index,
indexSpan = 1
};
// 然后如果当前有课程,就设置当前课程
if (this_course_index >= 0) {
var this_course = semester.courses[this_course_index];
current_lesson = new Data.Presentation.Lesson() {
name = this_course.name,
description = this_course.description,
color = this_course.color,
startIndex = index,
indexSpan = 1
};
}
} else {
// 课程未曾发生改变,如果当前有课程,我们只需要单纯地自增其节次跨度
if (previous_course_index >= 0) {

View File

@ -55,7 +55,7 @@ namespace HFUTCourseSimulation.Kernel.Data.Built {
private int _start, _end;
public IEnumerator<int> GetEnumerator() {
return Enumerable.Range(_start, _end).GetEnumerator();
return Enumerable.Range(_start, _end - _start + 1).GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator() {
return GetEnumerator();

View File

@ -29,6 +29,7 @@
<MenuItem x:Name="uiMenuQuit" Header="退出" Click="uiMenuQuit_Click"/>
</MenuItem>
<MenuItem Header="输出" Padding="5">
<MenuItem x:Name="uiMenuCheck" Header="检查" Click="uiMenuCheck_Click"/>
<MenuItem x:Name="uiMenuSimulator" Header="实时模拟" Click="uiMenuSimulator_Click"/>
<MenuItem x:Name="uiMenuRender" Header="导出为图片" Click="uiMenuRender_Click"/>
</MenuItem>

View File

@ -237,6 +237,12 @@ namespace HFUTCourseSimulation {
this.Close();
}
private void uiMenuCheck_Click(object sender, RoutedEventArgs e) {
var semester = CurrentSemester.ToStorage();
var reporter = new Kernel.Reporter();
var rv = Kernel.Arranger.Arrange(semester, reporter);
}
private void uiMenuSimulator_Click(object sender, RoutedEventArgs e) {
//var win = new Simulation();
//win.ShowDialog();

View File

@ -18,44 +18,44 @@ namespace HFUTCourseSimulation {
/// </summary>
public partial class Simulation : Window {
SimulationCore simulationKernel;
//SimulationCore simulationKernel;
public Simulation() {
InitializeComponent();
//init colums and rows
for (int i = 0; i < 11; i++) {
var rows = new RowDefinition();
rows.Height = new GridLength(1, GridUnitType.Star);
this.uiArrangeGrid.RowDefinitions.Add(rows);
}
////init colums and rows
//for (int i = 0; i < 11; i++) {
// var rows = new RowDefinition();
// rows.Height = new GridLength(1, GridUnitType.Star);
// this.uiArrangeGrid.RowDefinitions.Add(rows);
//}
for (int i = 0; i < 7; i++) {
var colums = new ColumnDefinition();
colums.Width = new GridLength(1, GridUnitType.Star);
this.uiArrangeGrid.ColumnDefinitions.Add(colums);
}
//for (int i = 0; i < 7; i++) {
// var colums = new ColumnDefinition();
// colums.Width = new GridLength(1, GridUnitType.Star);
// this.uiArrangeGrid.ColumnDefinitions.Add(colums);
//}
try {
originDate = DateTime.Parse(General.GeneralSheet.StartDate);
weekCount = General.GeneralSheet.WeekCount;
} catch (Exception) {
MessageBox.Show("周数或日期转换错误,请关闭窗口", "错误", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK);
this.uiArrangeError.IsEnabled = false;
this.uiBtnNext.IsEnabled = false;
this.uiBtnPre.IsEnabled = false;
return;
}
//try {
// originDate = DateTime.Parse(General.GeneralSheet.StartDate);
// weekCount = General.GeneralSheet.WeekCount;
//} catch (Exception) {
// MessageBox.Show("周数或日期转换错误,请关闭窗口", "错误", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK);
// this.uiArrangeError.IsEnabled = false;
// this.uiBtnNext.IsEnabled = false;
// this.uiBtnPre.IsEnabled = false;
// return;
//}
simulationKernel = new SimulationCore(originDate, weekCount);
simulationKernel.Generate();
//refresh error list
this.uiArrangeError.Items.Clear();
foreach (var item in simulationKernel.ErrorList) {
this.uiArrangeError.Items.Add(item);
}
currentWeek = 1;
this.RenderGrid(simulationKernel.Render(currentWeek));
//simulationKernel = new SimulationCore(originDate, weekCount);
//simulationKernel.Generate();
////refresh error list
//this.uiArrangeError.Items.Clear();
//foreach (var item in simulationKernel.ErrorList) {
// this.uiArrangeError.Items.Add(item);
//}
//currentWeek = 1;
//this.RenderGrid(simulationKernel.Render(currentWeek));
}
@ -64,67 +64,67 @@ namespace HFUTCourseSimulation {
DateTime originDate;
void RenderGrid(RenderWeek weekRes) {
//set date
uiWeek.Text = weekRes.WeekIndex.ToString();
uiWeek1.Text = weekRes.WeekDate[0];
uiWeek2.Text = weekRes.WeekDate[1];
uiWeek3.Text = weekRes.WeekDate[2];
uiWeek4.Text = weekRes.WeekDate[3];
uiWeek5.Text = weekRes.WeekDate[4];
uiWeek6.Text = weekRes.WeekDate[5];
uiWeek7.Text = weekRes.WeekDate[6];
////set date
//uiWeek.Text = weekRes.WeekIndex.ToString();
//uiWeek1.Text = weekRes.WeekDate[0];
//uiWeek2.Text = weekRes.WeekDate[1];
//uiWeek3.Text = weekRes.WeekDate[2];
//uiWeek4.Text = weekRes.WeekDate[3];
//uiWeek5.Text = weekRes.WeekDate[4];
//uiWeek6.Text = weekRes.WeekDate[5];
//uiWeek7.Text = weekRes.WeekDate[6];
//remove all old grid
this.uiArrangeGrid.Children.Clear();
////remove all old grid
//this.uiArrangeGrid.Children.Clear();
//generate new
foreach (var item in weekRes.CourseList) {
var warp = new Border();
warp.Background = new SolidColorBrush(item.BkColor);
warp.CornerRadius = new CornerRadius(5);
Grid.SetRowSpan(warp, item.Span);
var nGrid = new Grid();
nGrid.ToolTip = item.Desc;
var courseName = new TextBlock();
courseName.VerticalAlignment = VerticalAlignment.Center;
courseName.Text = item.Name;
nGrid.Children.Add(courseName);
warp.Child = nGrid;
////generate new
//foreach (var item in weekRes.CourseList) {
// var warp = new Border();
// warp.Background = new SolidColorBrush(item.BkColor);
// warp.CornerRadius = new CornerRadius(5);
// Grid.SetRowSpan(warp, item.Span);
// var nGrid = new Grid();
// nGrid.ToolTip = item.Desc;
// var courseName = new TextBlock();
// courseName.VerticalAlignment = VerticalAlignment.Center;
// courseName.Text = item.Name;
// nGrid.Children.Add(courseName);
// warp.Child = nGrid;
Grid.SetRow(warp, item.Start.index - 1);
Grid.SetColumn(warp, item.Start.week - 1);
// Grid.SetRow(warp, item.Start.index - 1);
// Grid.SetColumn(warp, item.Start.week - 1);
this.uiArrangeGrid.Children.Add(warp);
}
// this.uiArrangeGrid.Children.Add(warp);
//}
}
private void uiBtnPre_Click(object sender, RoutedEventArgs e) {
if (currentWeek == 1) {
MessageBox.Show("已经是第一周了", "错误", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK);
return;
}
//if (currentWeek == 1) {
// MessageBox.Show("已经是第一周了", "错误", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK);
// return;
//}
currentWeek--;
this.RenderGrid(simulationKernel.Render(currentWeek));
//currentWeek--;
//this.RenderGrid(simulationKernel.Render(currentWeek));
}
private void uiBtnNext_Click(object sender, RoutedEventArgs e) {
if (currentWeek == weekCount) {
MessageBox.Show("已经是最后一周了", "错误", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK);
return;
}
//if (currentWeek == weekCount) {
// MessageBox.Show("已经是最后一周了", "错误", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK);
// return;
//}
currentWeek++;
this.RenderGrid(simulationKernel.Render(currentWeek));
//currentWeek++;
//this.RenderGrid(simulationKernel.Render(currentWeek));
}
private void uiArrangeError_MouseDoubleClick(object sender, MouseButtonEventArgs e) {
if (this.uiArrangeError.SelectedIndex < 0) {
MessageBox.Show("未选择任何项", "错误", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK);
return;
}
//if (this.uiArrangeError.SelectedIndex < 0) {
// MessageBox.Show("未选择任何项", "错误", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK);
// return;
//}
MessageBox.Show(this.simulationKernel.ErrorList[this.uiArrangeError.SelectedIndex], "错误详情", MessageBoxButton.OK, MessageBoxImage.Information, MessageBoxResult.OK);
//MessageBox.Show(this.simulationKernel.ErrorList[this.uiArrangeError.SelectedIndex], "错误详情", MessageBoxButton.OK, MessageBoxImage.Information, MessageBoxResult.OK);
}
}
}

View File

@ -6,156 +6,156 @@ using System.Threading.Tasks;
using System.Windows.Media;
namespace HFUTCourseSimulation {
public class SimulationCore {
//public class SimulationCore {
public SimulationCore(DateTime startDate, int weekCount) {
this.weekCount = weekCount;
this.originDate = startDate;
}
// public SimulationCore(DateTime startDate, int weekCount) {
// this.weekCount = weekCount;
// this.originDate = startDate;
// }
Dictionary<Vector3, SimulationItem> itemDict = new Dictionary<Vector3, SimulationItem>();
public List<string> ErrorList { get; } = new List<string>();
// Dictionary<Vector3, SimulationItem> itemDict = new Dictionary<Vector3, SimulationItem>();
// public List<string> ErrorList { get; } = new List<string>();
//List<Grid> uiList = new List<Grid>();
// //List<Grid> uiList = new List<Grid>();
DateTime originDate;
int weekCount;
//int currentWeek;
// DateTime originDate;
// int weekCount;
// //int currentWeek;
public void Generate() {
//pre-generate
foreach (var item in General.GeneralSheet.Courses) {
foreach (var inner in item.Schedule) {
var weekRes = GetArrange(inner.Week);
var dayRes = GetArrange(inner.Day);
var indexRes = GetArrange(inner.Index);
// public void Generate() {
// //pre-generate
// foreach (var item in General.GeneralSheet.Courses) {
// foreach (var inner in item.Schedule) {
// var weekRes = GetArrange(inner.Week);
// var dayRes = GetArrange(inner.Day);
// var indexRes = GetArrange(inner.Index);
foreach (var weekItem in weekRes) {
foreach (var dayItem in dayRes) {
foreach (var indexItem in indexRes) {
var vectorCache = new Vector3(weekItem, dayItem, indexItem);
if (this.itemDict.Keys.Contains(vectorCache)) {
ErrorList.Add($"课程冲突:无法将{item.Name}安排到 {weekItem}周,星期{dayItem},第{indexItem}节。因为此处已被{itemDict[vectorCache].Name}占据");
} else {
itemDict.Add(vectorCache, new SimulationItem() { Name = item.Name, Desc = item.Description, BkColor = Util.ColorTrans.ToWpfColor(item.BkColor) });
}
}
}
}
// foreach (var weekItem in weekRes) {
// foreach (var dayItem in dayRes) {
// foreach (var indexItem in indexRes) {
// var vectorCache = new Vector3(weekItem, dayItem, indexItem);
// if (this.itemDict.Keys.Contains(vectorCache)) {
// ErrorList.Add($"课程冲突:无法将{item.Name}安排到 {weekItem}周,星期{dayItem},第{indexItem}节。因为此处已被{itemDict[vectorCache].Name}占据");
// } else {
// itemDict.Add(vectorCache, new SimulationItem() { Name = item.Name, Desc = item.Description, BkColor = Util.ColorTrans.ToWpfColor(item.BkColor) });
// }
// }
// }
// }
}
}
}
// }
// }
// }
List<int> GetArrange(string str) {
var res = new List<int>();
try {
if (str.Contains('-')) {
var strSp = str.Split('-');
int start = int.Parse(strSp[0]), end = int.Parse(strSp[1]);
for (int i = start; i <= end; i++) {
res.Add(i);
}
// List<int> GetArrange(string str) {
// var res = new List<int>();
// try {
// if (str.Contains('-')) {
// var strSp = str.Split('-');
// int start = int.Parse(strSp[0]), end = int.Parse(strSp[1]);
// for (int i = start; i <= end; i++) {
// res.Add(i);
// }
} else if (str.Contains(',')) {
var strSp = str.Split(',');
foreach (var item in strSp) {
res.Add(int.Parse(item));
}
} else {
res.Add(int.Parse(str));
}
} catch (Exception) {
ErrorList.Add("解析错误:" + str);
}
// } else if (str.Contains(',')) {
// var strSp = str.Split(',');
// foreach (var item in strSp) {
// res.Add(int.Parse(item));
// }
// } else {
// res.Add(int.Parse(str));
// }
// } catch (Exception) {
// ErrorList.Add("解析错误:" + str);
// }
return res;
}
// return res;
// }
public RenderWeek Render(int currentWeek) {
//remove all old grid
var result = new RenderWeek();
result.WeekDate = new List<string>();
// public RenderWeek Render(int currentWeek) {
// //remove all old grid
// var result = new RenderWeek();
// result.WeekDate = new List<string>();
//update date
//comput start date
result.WeekIndex = currentWeek;
var pointer = originDate;
pointer = pointer.AddDays(7 * (currentWeek - 1));
result.WeekDate.Add($"{pointer.Month}/{pointer.Day}");
pointer = pointer.AddDays(1);
result.WeekDate.Add($"{pointer.Month}/{pointer.Day}");
pointer = pointer.AddDays(1);
result.WeekDate.Add($"{pointer.Month}/{pointer.Day}");
pointer = pointer.AddDays(1);
result.WeekDate.Add($"{pointer.Month}/{pointer.Day}");
pointer = pointer.AddDays(1);
result.WeekDate.Add($"{pointer.Month}/{pointer.Day}");
pointer = pointer.AddDays(1);
result.WeekDate.Add($"{pointer.Month}/{pointer.Day}");
pointer = pointer.AddDays(1);
result.WeekDate.Add($"{pointer.Month}/{pointer.Day}");
// //update date
// //comput start date
// result.WeekIndex = currentWeek;
// var pointer = originDate;
// pointer = pointer.AddDays(7 * (currentWeek - 1));
// result.WeekDate.Add($"{pointer.Month}/{pointer.Day}");
// pointer = pointer.AddDays(1);
// result.WeekDate.Add($"{pointer.Month}/{pointer.Day}");
// pointer = pointer.AddDays(1);
// result.WeekDate.Add($"{pointer.Month}/{pointer.Day}");
// pointer = pointer.AddDays(1);
// result.WeekDate.Add($"{pointer.Month}/{pointer.Day}");
// pointer = pointer.AddDays(1);
// result.WeekDate.Add($"{pointer.Month}/{pointer.Day}");
// pointer = pointer.AddDays(1);
// result.WeekDate.Add($"{pointer.Month}/{pointer.Day}");
// pointer = pointer.AddDays(1);
// result.WeekDate.Add($"{pointer.Month}/{pointer.Day}");
result.CourseList = new List<SimulationRenderItem>();
//create grid
var query = (from item in itemDict.Keys
where item.teachingweek == currentWeek
select item).ToList();
// result.CourseList = new List<SimulationRenderItem>();
// //create grid
// var query = (from item in itemDict.Keys
// where item.teachingweek == currentWeek
// select item).ToList();
while (query.Count != 0) {
var core = query[0];
var data = itemDict[core];
// while (query.Count != 0) {
// var core = query[0];
// var data = itemDict[core];
int length = 1;
//check below
if (core.index != 1 && query.Contains(core + new Vector3(0, 0, -1))) {
if (itemDict[core + new Vector3(0, 0, -1)].Name == data.Name) {
//if below have. jump this->move this to the end
query.RemoveAt(0);
query.Add(core);
continue;
}
}
// int length = 1;
// //check below
// if (core.index != 1 && query.Contains(core + new Vector3(0, 0, -1))) {
// if (itemDict[core + new Vector3(0, 0, -1)].Name == data.Name) {
// //if below have. jump this->move this to the end
// query.RemoveAt(0);
// query.Add(core);
// continue;
// }
// }
//check follow
while (true) {
if (query.Contains(core + new Vector3(0, 0, length)) && itemDict[core + new Vector3(0, 0, length)].Name == data.Name) {
query.Remove(core + new Vector3(0, 0, length));
length++;
} else break;
}
// //check follow
// while (true) {
// if (query.Contains(core + new Vector3(0, 0, length)) && itemDict[core + new Vector3(0, 0, length)].Name == data.Name) {
// query.Remove(core + new Vector3(0, 0, length));
// length++;
// } else break;
// }
//create
result.CourseList.Add(new SimulationRenderItem() { Name = data.Name, Desc = data.Desc, BkColor = data.BkColor, Start = core, Span = length });
/*
var warp = new Border();
warp.Background = new SolidColorBrush(Colors.LightBlue);
warp.CornerRadius = new CornerRadius(5);
Grid.SetRowSpan(warp, length);
var nGrid = new Grid();
nGrid.ToolTip = data.Desc;
var courseName = new TextBlock();
courseName.VerticalAlignment = VerticalAlignment.Center;
courseName.Text = data.Name;
nGrid.Children.Add(courseName);
warp.Child = nGrid;
// //create
// result.CourseList.Add(new SimulationRenderItem() { Name = data.Name, Desc = data.Desc, BkColor = data.BkColor, Start = core, Span = length });
// /*
// var warp = new Border();
// warp.Background = new SolidColorBrush(Colors.LightBlue);
// warp.CornerRadius = new CornerRadius(5);
// Grid.SetRowSpan(warp, length);
// var nGrid = new Grid();
// nGrid.ToolTip = data.Desc;
// var courseName = new TextBlock();
// courseName.VerticalAlignment = VerticalAlignment.Center;
// courseName.Text = data.Name;
// nGrid.Children.Add(courseName);
// warp.Child = nGrid;
Grid.SetRow(warp, core.index - 1);
Grid.SetColumn(warp, core.week - 1);
// Grid.SetRow(warp, core.index - 1);
// Grid.SetColumn(warp, core.week - 1);
this.uiArrangeGrid.Children.Add(warp);
*/
// this.uiArrangeGrid.Children.Add(warp);
// */
//remove first item
query.RemoveAt(0);
}
// //remove first item
// query.RemoveAt(0);
// }
return result;
}
// return result;
// }
}
//}