private void CreateEvent(CalendarEvent ev, CalendarGrid calendarGrid) { var eventDateDifference = (int)(ev.DateTimeTo - ev.DateTimeFrom).TotalDays + 1; var eventTitle = ev.Title; var totalSpan = eventDateDifference; for (int i = 0; i < eventDateDifference; i++) { var currentDay = ev.DateTimeFrom.AddDays(i); var calendarCell = calendarGrid[currentDay]; if (calendarCell == null) { break; } var rowTitle = GetRowTitle(i, eventTitle, calendarCell); int span = 0; if (!string.IsNullOrWhiteSpace(rowTitle)) { span = GetSpan(calendarCell, totalSpan); totalSpan -= span; } calendarCell.CellRows.AddRow(ev.Id, rowTitle, ev.Description, span); } }
private void InitializeComponent() { this.layoutPanel = new TableLayoutPanel(); this.calendarGrid = new CalendarGrid(); this.settingLayoutPanel = new TableLayoutPanel(); this.btnBuildCalendar = new Button(); this.btnSetHoliday = new Button(); this.settingLayoutPanel.SuspendLayout(); this.layoutPanel.SuspendLayout(); this.SuspendLayout(); settingLayoutPanel.RowCount = 5; settingLayoutPanel.ColumnCount = 2; settingLayoutPanel.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single; settingLayoutPanel.Dock = DockStyle.Fill; settingLayoutPanel.Controls.Add(btnBuildCalendar, 0, 0); settingLayoutPanel.Controls.Add(btnSetHoliday, 1, 0); btnBuildCalendar.Text = "插入日历"; btnBuildCalendar.Size = new Size(100, 30); btnSetHoliday.Text = "设置假期"; btnSetHoliday.Size = new Size(100, 30); this.layoutPanel.RowCount = 1; this.layoutPanel.ColumnCount = 2; this.layoutPanel.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single; this.layoutPanel.Dock = DockStyle.Fill; this.layoutPanel.Controls.Add(this.calendarGrid, 0, 0); this.layoutPanel.Controls.Add(settingLayoutPanel, 1, 0); this.Text = "日历"; this.Size = new Size(800, 500); this.MinimizeBox = false; this.MaximizeBox = false; this.FormBorderStyle = FormBorderStyle.FixedSingle; this.StartPosition = FormStartPosition.CenterParent; this.ShowIcon = false; this.Load += new EventHandler(CalendarForm_Load); this.Controls.Add(this.layoutPanel); this.settingLayoutPanel.ResumeLayout(false); this.settingLayoutPanel.PerformLayout(); this.layoutPanel.ResumeLayout(false); this.layoutPanel.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); }
public CalendarGrid AddEvents(List <CalendarEvent> calendarEvents) { var calendarGrid = new CalendarGrid(_calendarDays); if (calendarEvents == null || calendarEvents.Count == 0) { return(calendarGrid); } var columns = new List <List <CalendarEvent> >(); DateTime?lastEventEnding = null; foreach (var ev in calendarEvents.OrderBy(ev => ev.DateTimeFrom).ThenBy(ev => ev.DateTimeTo)) { if (ev.DateTimeFrom > _calendarDays.Last()) { return(calendarGrid); } if (ev.DateTimeTo < _calendarDays.First()) { return(calendarGrid); } // Just add without worry if (!lastEventEnding.HasValue || ev.DateTimeFrom > lastEventEnding) { CreateEvent(ev, calendarGrid); } else { CreateOverlappingEvents(ev, calendarGrid); } if (lastEventEnding == null || ev.DateTimeTo > lastEventEnding.Value) { lastEventEnding = ev.DateTimeTo; } } return(calendarGrid); }
public Task <bool> Populate() { Dictionary <string, string> userAliasMap = null; try { userAliasMap = CalendarManager.ResolveUserAccounts(UserDataResolver, CalendarProviderConfig.TeamList); if ((userAliasMap == null) || !userAliasMap.Any()) { throw new InvalidOperationException("no user account data found."); } } catch (Exception ex) { TraceTool.Instance.Value.TraceException(ex); LastErrors.Add(HtmlTools.GetHtmlError(ex.Message)); return(Task.FromResult(false)); } try { var userAccounts = userAliasMap.Select(kvp => kvp.Key).ToList(); var cInfoList = CalendarManager.ResolveCalendarData(CalendarDataProvider, CalendarGridConfig.StartDate, userAccounts).ToList(); CalendarGrid.Populate(cInfoList, userAliasMap.Keys.Select(strUser => new CalendarResource { Name = userAliasMap[strUser], Email = strUser }).ToList()); } catch (Exception ex) { TraceTool.Instance.Value.TraceException(ex); LastErrors.Add(HtmlTools.GetHtmlError(ex.Message)); return(Task.FromResult(false)); } return(Task.FromResult(true)); }
public void ConfigureGrid(CalendarGridConfig calendarGridConfig) { CalendarGrid.Configure(calendarGridConfig); }