예제 #1
0
        private void radioGroup1_SelectedIndexChanged(object sender, EventArgs e)
        {
            int            iValue     = Convert.ToInt32(rgViewMode.EditValue);
            TimeColumnInfo infoColumn = GetColumnInfo(gridView.FocusedColumn);

            _LastSelectedTime = -1;
            if (infoColumn != null)
            {
                _LastSelectedTime = infoColumn.FromTime;
            }
            _LastSelectedRowHandle = gridView.FocusedRowHandle;
            if (iValue == 0)
            {
                CurrentView = DailyViewStyle.View15;
            }
            else
            if (iValue == 1)
            {
                CurrentView = DailyViewStyle.View30;
            }
            else
            if (iValue == 2)
            {
                CurrentView = DailyViewStyle.View60;
            }

            MakeVisibleSelectedTime();
            _LastSelectedTime      = -1;
            _LastSelectedRowHandle = -1;
        }
예제 #2
0
        public void BuildColumns()
        {
            gridView.BeginDataUpdate();
            try
            {
                DeleteColumns();
                GridColumn column = null;

                int iStep = (int)m_currentView;

                int iMax = Utills.MinutesInDay;

                int iCount  = iMax / iStep;
                int iHour   = 0;
                int iMinute = 0;
                m_columnsInfo = new TimeColumnInfo[iCount];

                for (int i = 0; i < iCount; i++)
                {
                    column         = gridView.Columns.Add();
                    column.Name    = "gcHour_" + i;
                    column.Caption = TextParser.BuildColumnCaption(iHour, iMinute, iStep);
                    //String.Format("{0}:{1}", iHour.ToString("00"), iMinute.ToString("00"));
                    column.MinWidth = 40;
                    column.Visible  = true;
                    //column.VisibleIndex = i;// 1 + i;
                    column.Width = 45;

                    //column.AppearanceHeader.Options.UseTextOptions = true;
                    column.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
                    column.AppearanceHeader.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
                    //column.AppearanceHeader.TextOptions.WordWrap = DevExpress.Utils.WordWrap.NoWrap;
                    column.OptionsColumn.ReadOnly  = true;
                    column.OptionsColumn.AllowEdit = false;
                    column.SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Custom;
                    column.SummaryItem.Tag         = i;


                    m_columnsInfo[i] = new TimeColumnInfo(iHour * 60 + iMinute, iHour * 60 + iMinute + iStep, true);
                    column.Tag       = m_columnsInfo[i];
                    m_columnsDiction[m_columnsInfo[i]] = column;

                    iMinute += iStep;
                    if (iMinute == 60)
                    {
                        iHour++;
                        iMinute = 0;
                    }
                }
                PrepareColumnsView();
            }
            finally
            {
                gridView.EndDataUpdate();
            }
        }
예제 #3
0
        private void DrawHourlyFooter(TimeColumnInfo columnInfo, DevExpress.XtraGrid.Views.Grid.FooterCellCustomDrawEventArgs e)
        {
            int        value         = (m_dailyView != null) ? m_dailyView.GetTotals(columnInfo.FromTime, CurrentView) : 0;
            RectangleF oldClipBounds = e.Graphics.ClipBounds;
            Rectangle  newClipBounds = Rectangle.Round(oldClipBounds);

            newClipBounds.Height = e.Bounds.Height * 2 + 1;

            DevExpress.Utils.Paint.Clipping        clip   = null;
            System.Drawing.Drawing2D.GraphicsState GState = null;
            bool bClipping = false;

            try
            {
                if (newClipBounds.Height > oldClipBounds.Height)// if need change clip region
                {
                    GState          = e.Graphics.Save();
                    e.Graphics.Clip = new System.Drawing.Region(newClipBounds);
                    clip            = new DevExpress.Utils.Paint.Clipping();
                    clip.SetClipAPI(new GraphicsInfoArgs(e.Cache, newClipBounds), newClipBounds);
                    bClipping = true;
                }

                e.Info.Appearance.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
                e.Info.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;

                e.Info.DisplayText = DateTimeHelper.IntTimeToStr(value);
                e.Painter.DrawObject(e.Info);


                Rectangle oldBounds = e.Info.Bounds;
                string    oldText   = e.Info.DisplayText;
                e.Info.Bounds      = new Rectangle(e.Info.Bounds.Left, e.Info.Bounds.Bottom + 1, e.Info.Bounds.Width, e.Info.Bounds.Height);
                e.Info.DisplayText = FooterHoursAsString(value);


                e.Painter.DrawObject(e.Info);
                e.Info.Bounds      = oldBounds;
                e.Info.DisplayText = oldText;
            }
            finally
            {
                if (bClipping)
                {
                    clip.RestoreClipAPI(e.Graphics);
                    e.Graphics.Restore(GState);
                    e.Graphics.SetClip(oldClipBounds);
                    GState = null;
                    clip   = null;
                }
            }
            e.Handled = true;
        }
예제 #4
0
        private void gridView_CustomDrawFooterCell(object sender, DevExpress.XtraGrid.Views.Grid.FooterCellCustomDrawEventArgs e)
        {
            TimeColumnInfo columnInfo = e.Column.Tag as TimeColumnInfo;

            if (columnInfo != null)
            {
                DrawHourlyFooter(columnInfo, e);
            }
            else if (e.Column == gc_Employee /*|| e.Column == gc_HWGR*/)
            {
                DrawHeaderFooter(e);
            }
            else if (e.Column == gc_AllreadyPlannedWorkingHours)
            {
                DrawAllreadyPlannedFooterCells(e);
            }
        }
예제 #5
0
        private void mi_MarkAsAbsence_Click(object sender, EventArgs e)
        {
            using (FormSelectAbsence formSelectAbsence = new FormSelectAbsence())
            {
                formSelectAbsence.IsPlanning = true;
                formSelectAbsence.Absences   = Context.Absences.ToList;
                StoreDay sd = Context.StoreDays[ViewDate];
                formSelectAbsence.ShowTimePanel = false;
                formSelectAbsence.SetDayInfo(sd.OpenTime, sd.CloseTime, Context.StoreDays.AvgDayInWeek);


                if (formSelectAbsence.Execute())
                {
                    if (gridView.SelectedRowsCount == 1)
                    {
                        EmployeeDayView dayView = GetEmployeeDayView(); //m_dailyView.GetByEmployeeId(empl.EmployeeId);
                        TimeColumnInfo  info    = null;

                        GridCell[] cells = gridView.GetSelectedCells();

                        if (dayView != null && cells != null && cells.Length > 0)
                        {
                            foreach (GridCell cell in cells)
                            {
                                info = GetColumnInfo(cell.Column);
                                if (info != null)
                                {
                                    dayView.SetAbsence(formSelectAbsence.SelectedAbsence, info.FromTime, info.ToTime);
                                }
                            }
                            if (dayView.Modified)
                            {
                                Context.Modified = true;
                            }
                            UpdateEmployeePlanningDays();
                        }
                    }
                }
            }
        }
예제 #6
0
        private void gridViewHalfHour_CustomDrawCell(object sender, RowCellCustomDrawEventArgs e)
        {
            // if cell focused or selected do nothing
            if (gridView.IsCellSelected(e.RowHandle, e.Column) && e.Column.Tag != null)// != gc_Employee)
            {
                e.Appearance.BackColor = Color.Gold;
                e.Handled = false;
                return;
            }

            // if is not hour column return
            if (e.Column.Tag == null)
            {
                //e.Handled = false;
                DrawFixedCells(e);
                return;
            }



            StoreDay storeday = Context.StoreDays[Context.ViewDate];

            TimeColumnInfo infoColumn = GetColumnInfo(e.Column);

            if (infoColumn == null)
            {
                return;
            }

            EmployeeDayView dayView = GetEmployeeDayView(e.RowHandle);

            if (dayView == null)
            {
                return;
            }
            int index = infoColumn.FromTime / 15;

            Painters.DrawDailyViewCell(e, index, CurrentView, storeday, dayView);
        }
예제 #7
0
        private void gridControl_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            if (ReadOnly)
            {
                return;
            }

            GridHitInfo info = gridView.CalcHitInfo(e.X, e.Y);

            if (info.InRow)
            {
                TimeColumnInfo timeinfo = GetColumnInfo(info.Column);

                if (timeinfo != null)
                {
                    EmployeeDayView dayView = GetEmployeeDayView();

                    if (dayView != null)
                    {
                        if (dayView.IsBuzyByTimeRange(timeinfo.FromTime, timeinfo.ToTime))
                        {
                            dayView.RemoveWorkingTime(timeinfo.FromTime, timeinfo.ToTime);
                        }
                        else
                        {
                            dayView.AddWorkingTime(timeinfo.FromTime, timeinfo.ToTime);
                        }

                        if (dayView.Modified)
                        {
                            Context.Modified = true;
                        }

                        UpdateEmployeePlanningDays();
                    }
                }
            }
        }
예제 #8
0
        private void ProcessFixedTimeAbsence(Absence absence)
        {
            if (absence.Value > 0)
            {
                int count = (int)(absence.Value * 60);

                if (gridView.SelectedRowsCount == 1)
                {
                    EmployeeDayView dayView = GetEmployeeDayView();
                    TimeColumnInfo  info    = GetColumnInfo(gridView.FocusedColumn);

                    if (dayView != null && info != null)
                    {
                        dayView.SetAbsence(absence, info.FromTime, info.FromTime + count);
                        if (dayView.Modified)
                        {
                            Context.Modified = true;
                        }
                        UpdateEmployeePlanningDays();
                    }
                }
            }
        }
예제 #9
0
        private void ProcessCountAliquotAbsence(Absence absence)
        {
            if (absence.IsFixed)
            {
                if (gridView.SelectedRowsCount == 1)
                {
                    EmployeeDayView dayView = GetEmployeeDayView();

                    TimeColumnInfo info = GetColumnInfo(gridView.FocusedColumn);

                    if (dayView != null && info != null)
                    {
                        int count = DateTimeHelper.RoundToQuoter((short)((dayView.ContractHoursPerWeek / Context.StoreDays.AvgDayInWeek)));

                        dayView.SetAbsence(absence, info.FromTime, info.FromTime + count);
                        if (dayView.Modified)
                        {
                            Context.Modified = true;
                        }
                        UpdateEmployeePlanningDays();
                    }
                }
            }
        }
		private IEnumerable<OutputColumnInfo> GetColumnInfo()
		{
			var columnInfoList = new List<OutputColumnInfo>();
			var widths = GetColumnWidths();

			if (_data.ShowStation)
			{
				var columnInfo = new StationColumnInfo
				{
					Width = widths["station"],
					Index = (_data.DefaultColumnPositions ? OptionSet.DefaultPositionStation : _data.PositionStation) + 1
				};
				columnInfoList.Add(columnInfo);
			}
			if (_data.ShowProgram)
			{
				var columnInfo = new ProgramColumnInfo
				{
					Width = widths["program"],
					Index = (_data.DefaultColumnPositions ? OptionSet.DefaultPositionProgram : _data.PositionProgram) + 1
				};
				columnInfoList.Add(columnInfo);
			}
			if (_data.ShowDay)
			{
				var columnInfo = new DayColumnInfo
				{
					Width = widths["day"],
					Index = (_data.DefaultColumnPositions ? OptionSet.DefaultPositionDay : _data.PositionDay) + 1
				};
				columnInfoList.Add(columnInfo);
			}
			if (_data.ShowTime)
			{
				var columnInfo = new TimeColumnInfo
				{
					Width = widths["time"],
					Index = (_data.DefaultColumnPositions ? OptionSet.DefaultPositionTime : _data.PositionTime) + 1
				};
				columnInfoList.Add(columnInfo);
			}
			if (_data.ShowSpots)
			{
				var columnInfo = new SpotsColumnInfo(_data.SpotType)
				{
					Width = widths["spots"],
					Index = (_data.DefaultColumnPositions ? OptionSet.DefaultPositionSpots : _data.PositionSpots) + 1
				};
				columnInfoList.Add(columnInfo);
			}
			if (_data.ShowRate)
			{
				var columnInfo = new RateColumnInfo
				{
					Width = widths["rate"],
					Index = (_data.DefaultColumnPositions ? OptionSet.DefaultPositionRate : _data.PositionRate) + 1
				};
				columnInfoList.Add(columnInfo);
			}
			if (_data.ShowLenght)
			{
				var columnInfo = new LengthColumnInfo
				{
					Width = widths["length"],
					Index = (_data.DefaultColumnPositions ? OptionSet.DefaultPositionLenght : _data.PositionLenght) + 1
				};
				columnInfoList.Add(columnInfo);
			}
			if (_data.ShowCost)
			{
				var columnInfo = new CostColumnInfo
				{
					Width = widths["cost"],
					Index = (_data.DefaultColumnPositions ? OptionSet.DefaultPositionCost : _data.PositionCost) + 1
				};
				columnInfoList.Add(columnInfo);
			}
			return columnInfoList;
		}
예제 #11
0
        private void workingTimeToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (ReadOnly)
            {
                return;
            }

            EmployeeDayView dayView = GetEmployeeDayView();

            if (gridView.SelectedRowsCount == 1)
            {
                GridCell[] cells = gridView.GetSelectedCells();

                if (cells.Length > 1)
                {
                    bool ignore = false;
                    for (int i = 0; i < cells.Length; i++)
                    {
                        if (cells[i].Column.Tag == null)
                        {
                            ignore = true;
                        }
                    }
                    if (!ignore)
                    {
                        if (dayView != null)
                        {
                            foreach (GridCell cell in cells)
                            {
                                TimeColumnInfo infocolumn = GetColumnInfo(cell.Column);
                                if (infocolumn != null)
                                {
                                    dayView.AddWorkingTime(infocolumn.FromTime, infocolumn.ToTime);
                                }
                            }
                            if (dayView.Modified)
                            {
                                Context.Modified = true;
                            }
                        }

                        UpdateEmployeePlanningDays();
                    }
                }
                else
                {
                    if (cells != null && cells.Length == 1)
                    {
                        TimeColumnInfo info = GetColumnInfo(cells[0].Column);
                        StoreDay       sd   = Context.StoreDays[Context.ViewDate];
                        if (info != null)
                        {
                            using (FormEnterWorkingTime form = new FormEnterWorkingTime())
                            {
                                if (sd.OpenTime == 0)
                                {
                                    form.BeginTime = 9 * 60;
                                }
                                else
                                {
                                    form.BeginTime = sd.OpenTime;
                                }

                                form.EndTime = sd.CloseTime;
                                if (sd.CloseTime == 0)
                                {
                                    form.EndTime = 18 * 60;
                                }
                                else
                                {
                                    form.EndTime = sd.CloseTime;
                                }

                                form.BeginTime = info.FromTime;

                                if (form.ShowDialog() == DialogResult.OK)
                                {
                                    int bt = form.BeginTime;
                                    int et = form.EndTime;


                                    if (dayView != null)
                                    {
                                        dayView.AddWorkingTime(bt, et);
                                        if (dayView.Modified)
                                        {
                                            Context.Modified = true;
                                        }
                                    }

                                    UpdateEmployeePlanningDays();
                                }
                            }
                        }
                    }
                }
            }
        }
예제 #12
0
        private void gridView_MouseDown(object sender, MouseEventArgs e)
        {
            GridHitInfo info = gridView.CalcHitInfo(e.Location);

            if (e.Button == MouseButtons.Left && info.InColumn)
            {
                GridColumn column = info.Column;

                if (column == gc_HWGR || column == gc_Employee)
                {
                    column.SortMode = ColumnSortMode.DisplayText;
                    if (column.SortOrder == ColumnSortOrder.Ascending)
                    {
                        column.SortOrder = ColumnSortOrder.Descending;
                    }
                    else
                    {
                        column.SortOrder = ColumnSortOrder.Ascending;
                    }

                    if (column == gc_HWGR)
                    {
                        gridView.SortInfo.ClearAndAddRange(new GridColumnSortInfo[]
                        {
                            new GridColumnSortInfo(gc_HWGR, gc_HWGR.SortOrder),
                            new GridColumnSortInfo(gc_Employee, gc_Employee.SortOrder)
                        });
                    }
                    else
                    {
                        gridView.SortInfo.ClearAndAddRange(new GridColumnSortInfo[]
                        {
                            new GridColumnSortInfo(gc_Employee, gc_Employee.SortOrder),
                            new GridColumnSortInfo(gc_HWGR, gc_HWGR.SortOrder)
                        });
                    }
                }
            }
            if (e.Button == MouseButtons.Left && info.InRowCell)
            {
                if (selectedCell != null && selectedCell.Length > 1)
                {
                    if (selectedCell[0].RowHandle == info.RowHandle)
                    {
                        bool bOk = false;
                        foreach (GridCell cell in selectedCell)
                        {
                            if (cell.Column == info.Column)
                            {
                                bOk = true;
                                break;
                            }
                        }

                        if (bOk && !ReadOnly)
                        {
                            EmployeeDayView dayView    = GetEmployeeDayView(info.RowHandle); //m_dailyView.GetByEmployeeId(empl.EmployeeId);
                            TimeColumnInfo  columninfo = null;

                            if (dayView != null)
                            {
                                foreach (GridCell cell in selectedCell)
                                {
                                    columninfo = GetColumnInfo(cell.Column);
                                    if (columninfo != null)
                                    {
                                        dayView.AddWorkingTime(columninfo.FromTime, columninfo.ToTime);
                                    }
                                }
                                if (dayView.Modified)
                                {
                                    Context.Modified = true;
                                }
                                UpdateEmployeePlanningDays();
                            }
                            selectedCell = null;
                        }
                    }
                }
            }
        }