/// <summary> /// Proceeds the axis. /// </summary> /// <param name="row">The row.</param> /// <param name="systemName">Name of the system.</param> /// <param name="axis">The axis.</param> /// <param name="startDate">The start date.</param> /// <param name="endDate">The end date.</param> /// <param name="rowsCount">The rows count.</param> /// <param name="value">The value.</param> protected void ProceedAxis(DataRow row, string systemName, ChartAxis axis, DateTime startDate, DateTime endDate, int rowsCount, ref double value) { if (row[systemName] is DateTime) { value = ((DateTime)row[systemName]).ToOADate(); axis.AutoScale = true; if (rowsCount == 1) { axis.AutoScale = false; axis.MinValue = value; axis.MaxValue = value; } axis.IsZeroBased = false; axis.Appearance.ValueFormat = ChartValueFormat.ShortDate; axis.Appearance.CustomFormat = "dd.MM.yy"; axis.Appearance.LabelAppearance.RotationAngle = 90; if ((endDate - startDate).Days <= 7) { axis.AutoScale = false; axis.MinValue = startDate.ToOADate(); axis.MaxValue = endDate.AddDays(-1).ToOADate(); } } else if (row[systemName] is int || row[systemName] is double || row[systemName] is decimal) { axis.Appearance.LabelAppearance.RotationAngle = 0; value = double.Parse(row[systemName].ToString()); if (systemName == "Period" && (endDate - startDate).Days == 1) { axis.AutoScale = false; axis.MinValue = 0; axis.MaxValue = 23; axis.Appearance.LabelAppearance.RotationAngle = 90; } axis.IsZeroBased = true; axis.Appearance.ValueFormat = ChartValueFormat.None; axis.Appearance.CustomFormat = ""; } else { axis.AutoScale = false; axis.Appearance.LabelAppearance.RotationAngle = 90; var text = (string.IsNullOrEmpty(row[systemName].ToString()) ? "Не определено" : row[systemName].ToString()); if (!axis.Items.Any(o => o.TextBlock.Text == text)) { var chartAxisItem = new ChartAxisItem(string.IsNullOrEmpty(row[systemName].ToString()) ? "Не определено" : row[systemName].ToString()); axis.AddItem(chartAxisItem); } axis.IsZeroBased = true; axis.Appearance.ValueFormat = ChartValueFormat.None; axis.Appearance.CustomFormat = ""; var item = axis.Items.SingleOrDefault(o => o.TextBlock.Text == text); item.Value = axis.Items.IndexOf(item); value = (double)item.Value; } }