コード例 #1
0
ファイル: CalendarEvents.cs プロジェクト: Majunga/Food
        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);
            }
        }
コード例 #2
0
ファイル: CalendarForm.cs プロジェクト: renkaifei/StockWorm
        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();
        }
コード例 #3
0
ファイル: CalendarEvents.cs プロジェクト: Majunga/Food
        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);
        }
コード例 #4
0
        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));
        }
コード例 #5
0
 public void ConfigureGrid(CalendarGridConfig calendarGridConfig)
 {
     CalendarGrid.Configure(calendarGridConfig);
 }