private ChartConfiguration CreateServerConfiguration(
            int monitorCommandId,
            FrequencyTypes frequency,
            int agentGroupId)
        {
            var charts = (new MonitorDb()).GetChart(
                monitorCommandId,
                frequency,
                agentGroupId);

            //var unitStr = GetUnitString(frequency);
            if ((charts?.Count ?? 0) == 0)
            {
                lblEmptyData.Visible = true;
                return(null);
            }

            var dataSets = new List <DataSetItem>();

            try
            {
                for (int i = 0; i < charts.Count; i++)
                {
                    var chart       = charts[i];
                    var colorCount  = LibChart.Util.GetColors().Count;
                    var dataSetItem = new DataSetItem()
                    {
                        Label           = chart.AgentName,
                        Data            = chart.ReverseChartPointValues,
                        BorderWidth     = 1,
                        BackgroundColor = LibChart.Util.GetColors(i % colorCount),
                        BorderColor     = LibChart.Util.GetColors()[i % colorCount],
                        Fill            = false
                    };
                    dataSets.Add(dataSetItem);
                }

                var unit = _monitorCommands
                           .Find(x => x.MonitorCommandId == monitorCommandId).Unit;
                var xAxesCallback = GetxAxesCallback(frequency);
                var units         = GetMaxUnits(frequency);
                var xAxesTicks    = new Ticks()
                {
                    Display       = true,
                    BeginAtZero   = true,
                    Max           = units,
                    MaxTicksLimit = 12,
                    Callback      = (new JRaw(xAxesCallback))
                };

                var xAxesTicksItem = new TicksItem()
                {
                    ticks = xAxesTicks
                };


                var yAxesCallback = $@"function (value, index, values) {{
                                        return value + ' {unit}';
                                    }}";

                var yAxesTicks = new Ticks()
                {
                    Callback = new JRaw(yAxesCallback)
                };

                var yAxesTicksItem = new TicksItem()
                {
                    ticks = yAxesTicks
                };

                var chartConfig = new ChartConfiguration
                {
                    Type = ChartType.line.GetChartType(),
                    Data =
                    {
                        Labels   = charts[0]
                                   .ReverseChartPointMinutes
                                   .ConvertAll <string>(x => x.ToString()),
                        Datasets = dataSets
                    },
                    Options =
                    {
                        SpanGaps = true,
                        Title    =
                        {
                            Text  = ddlMonitorCommands.SelectedItem.Text
                        },
                        Scales    = new Scales()
                        {
                            XAxes = new List <TicksItem>()
                            {
                                xAxesTicksItem
                            },
                            YAxes = new List <TicksItem>()
                            {
                                yAxesTicksItem
                            }
                        }
                    }
                };
                return(chartConfig);
            }
            catch (Exception ex)
            {
                throw new Exception($"Exception:{ex.Message}");
            }
        }
        private ChartConfiguration CreateServerConfiguration(int monitorCommandId, FrequencyTypes frequency)
        {
            var charts = (new MonitorDb()).GetChart(monitorCommandId, frequency, -1);

            if ((charts?.Count ?? 0) == 0)
            {
                return(null);
            }
            var unit = _monitorCommands
                       .Find(x => x.MonitorCommandId == monitorCommandId).Unit;
            var dataSets = new List <DataSetItem>();

            for (var i = 0; i < charts.Count; i++)
            {
                var chart       = charts[i];
                var colorCount  = LibChart.Util.GetColors().Count;
                var dataSetItem = new DataSetItem()
                {
                    Label           = chart.AgentName,
                    Data            = chart.ReverseChartPointValues,
                    BorderWidth     = 1,
                    BackgroundColor = LibChart.Util.GetColors(i % colorCount),
                    BorderColor     = LibChart.Util.GetColors()[i % colorCount],
                    Fill            = false
                };
                dataSets.Add(dataSetItem);
            }

            var xAxesCallback = @"function (value, index, values) {
                                        if (value > 0) { value = -1 * value;}
                                        return value + ' min';
                                    }";

            var xAxesTicks = new Ticks()
            {
                Display       = true,
                BeginAtZero   = true,
                Max           = 24,
                MaxTicksLimit = 12,
                Callback      = (new JRaw(xAxesCallback))
            };

            var xAxesTicksItem = new TicksItem()
            {
                ticks = xAxesTicks
            };


            var yAxesCallback = $@"function (value, index, values) {{
                                        return value + ' {unit}';
                                    }}";

            var yAxesTicks = new Ticks()
            {
                Callback = new JRaw(yAxesCallback)
            };

            var yAxesTicksItem = new TicksItem()
            {
                ticks = yAxesTicks
            };

            var chartConfig = new ChartConfiguration
            {
                Type = ChartType.line.GetChartType(),
                Data =
                {
                    Labels   = charts[0]
                               .ChartPointMinutes
                               .ConvertAll <string>(x => x.ToString()),
                    Datasets = dataSets
                },
                Options =
                {
                    Title     =
                    {
                        Text  = ddlMonitorCommands.SelectedItem.Text
                    },
                    Scales    = new Scales()
                    {
                        XAxes = new List <TicksItem>()
                        {
                            xAxesTicksItem
                        },
                        YAxes = new List <TicksItem>()
                        {
                            yAxesTicksItem
                        }
                    }
                }
            };

            return(chartConfig);
        }