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); }
private void graphA3Panel_Paint(object sender, PaintEventArgs e) { var scale = FuzzyScaleRepository.ForA3(); DrawGraph(scale, e.Graphics); }