Beispiel #1
0
        private string _GetResultForA3()
        {
            string result = "<h2>Уровень разработки в кластере</h2><table border=\"1\"><tr><th>Кластер</th>";

            foreach (var key in _results.Select(d => d.Key).Distinct().OrderBy(d => d).Skip(1))
            {
                result += $"<th>{key.ToString("MMMM yyyy")}</th>";
            }
            result += "</tr>";

            var scale = FuzzyScaleRepository.ForA3();

            foreach (var pair in _temporaryResults)
            {
                result += $"<tr><td>{Helpers.ClasterHelper.GetFullName(pair.Key)}</td>";
                foreach (var item in pair.Value.OrderBy(d => d.Month).Skip(1).Select((value, index) => new { index, value }))
                {
                    var beforeItem = pair.Value[item.index];

                    var value    = item.value.A3_Value - beforeItem.A3_Value;
                    var absValue = Math.Abs(value);

                    var stringValue = string.Empty;

                    var scaleValue = scale.GetAccessory((decimal)value);

                    if (scaleValue.Name == "P33")
                    {
                        stringValue = "стабильность";
                    }
                    else if (scaleValue.Name == "P35")
                    {
                        stringValue = "сильный рост";
                    }
                    else if (scaleValue.Name == "P31")
                    {
                        stringValue = "сильное падение";
                    }
                    else if (scaleValue.Name == "P34")
                    {
                        stringValue = "слабый рост";
                    }
                    else if (scaleValue.Name == "P32")
                    {
                        stringValue = "слабое падение";
                    }
                    else
                    {
                        throw new ArgumentException();
                    }

                    int cValueCount = 0, allCnt = 0;
                    for (int i = 0; i < item.value.A3_Values.Count(); i++)
                    {
                        try
                        {
                            var cValue      = item.value.A3_Values[i] - beforeItem.A3_Values[i];
                            var csacleValue = scale.GetAccessory((decimal)cValue);
                            if (scaleValue.Name == csacleValue.Name)
                            {
                                cValueCount++;
                            }
                            allCnt++;
                        }
                        catch
                        {
                        }
                    }
                    var tendation = "распределено равномерно";
                    if (1.0 * cValueCount / allCnt > 0.5)
                    {
                        tendation = "типичная тенденция";
                    }

                    result += $"<td>{stringValue}<br/><small>(с.и.: {scaleValue.Value:0.00})<br/>{tendation}</small></td>";
                }
                result += "</tr>";
            }

            result += "</table>";
            return(result);
        }
Beispiel #2
0
        private void graphA3Panel_Paint(object sender, PaintEventArgs e)
        {
            var scale = FuzzyScaleRepository.ForA3();

            DrawGraph(scale, e.Graphics);
        }