示例#1
0
        /// <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;
            }
        }