/// <summary> /// /// </summary> /// <param name="element"></param> /// <param name="config"></param> /// <exception cref="NotImplementedException"></exception> public FusionChartWrapper(IChartElement element, IChartConfig config) { _element = element; _config = config??_config; _elementName = determineName(_element); _eltype = _elementName.To<FusionChartElementType>(); _charttype = config.Type.To<FusionChartType>(); }
/// <summary> /// Находит все атрибуты по указанному критерию /// </summary> /// <param name="chartType"></param> /// <param name="element"></param> /// <param name="name"></param> /// <returns></returns> public static IEnumerable <FusionChartAttributeDescriptor> FindAttributes(FusionChartType chartType = FusionChartType.None, FusionChartElementType element = FusionChartElementType.None, string name = null) { return(Attributes.Values.Where( _ => { if (chartType != FusionChartType.None) { if (0 == (_.Charts & chartType)) { return false; } } if (element != FusionChartElementType.None) { if (_.Element != element) { return false; } } if (!string.IsNullOrWhiteSpace(name)) { if (name.ToLower() != _.Name.ToLower()) { return false; } } return true; } )); }
/// <summary> /// Проверяет доступность атрибута для данного элемента в конфигурации /// </summary> /// <param name="name"></param> /// <param name="chartType"></param> /// <param name="elementType"></param> /// <param name="config"></param> /// <returns></returns> private static bool IsMatch(string name, FusionChartType chartType, FusionChartElementType elementType = FusionChartElementType.Chart, IChartConfig config = null) { var key = (elementType.ToString() + "_" + name).ToLower(); if (Attributes.ContainsKey(key)) { return 0 != (Attributes[key].Charts & chartType); } //custom attribute return true; }
/// <summary> /// /// </summary> /// <param name="element"></param> /// <param name="config"></param> /// <exception cref="NotImplementedException"></exception> public FusionChartWrapper(IChartElement element, IChartConfig config) { _element = element; _config = config ?? _config; _elementName = determineName(_element); _eltype = _elementName.To <FusionChartElementType>(); _charttype = config.Type.To <FusionChartType>(); }
/// <summary> /// Проверяет доступность атрибута для данного элемента в конфигурации /// </summary> /// <param name="name"></param> /// <param name="chartType"></param> /// <param name="elementType"></param> /// <param name="config"></param> /// <returns></returns> private static bool IsMatch(string name, FusionChartType chartType, FusionChartElementType elementType = FusionChartElementType.Chart, IChartConfig config = null) { var key = (elementType.ToString() + "_" + name).ToLower(); if (Attributes.ContainsKey(key)) { return(0 != (Attributes[key].Charts & chartType)); } //custom attribute return(true); }
/// <summary> /// Вычисляет укрупненную группу графика /// </summary> /// <param name="type"></param> /// <returns></returns> public static FusionChartGroupedType GetChartGroup(this FusionChartType type) { foreach (long g in Enum.GetValues(typeof(FusionChartGroupedType))) { if (0 != (g & (long)type)) { return((FusionChartGroupedType)g); } } throw new Exception("group not found"); }
/// <summary> /// 创建图形统计 /// </summary> /// <param name="title"></param> /// <param name="ds"></param> /// <param name="type">默认柱状</param> /// <returns></returns> public FusionChartHelper CreateFusionChartHelper(string title, DataSet ds, FusionChartType type = FusionChartType.MSColumn3D) { var help = new FusionChartHelper(type); help.SetDataSource(ds); help.ChartHeight = 580; help.ChartWidth = "100%"; help.Caption = title; //主标题,将显示在图形顶端 help.SubCaption = ""; //二级标题,将显示在主标题下方,没有不显示 help.BgColor = "e1f5ff"; //背景色 help.Decimals = 2; //显示小数位 help.IsFormatNumberScale = false; //是否格式化数字,如1000显示成1K; return(help); }
/// <summary> /// Находит все атрибуты по указанному критерию /// </summary> /// <param name="chartType"></param> /// <param name="element"></param> /// <param name="name"></param> /// <returns></returns> public static IEnumerable<FusionChartAttributeDescriptor> FindAttributes(FusionChartType chartType = FusionChartType.None, FusionChartElementType element = FusionChartElementType.None, string name = null) { return Attributes.Values.Where( _ => { if (chartType != FusionChartType.None) { if (0 == (_.Charts & chartType)) return false; } if (element != FusionChartElementType.None) { if (_.Element != element) return false; } if (!string.IsNullOrWhiteSpace(name)) { if (name.ToLower() != _.Name.ToLower()) return false; } return true; } ); }
/// <summary> /// 获取图表XML字符串(双轴) /// </summary> /// <param name="dt"></param> /// <param name="c"></param> /// <param name="llist"></param> /// <param name="slist"></param> /// <param name="chartType"></param> /// <returns></returns> public string GetXMLData(DataTable dt, chart c, IList <line> llist, IList <style> slist, FusionChartType chartType, IList <string> colors, string chartName, string chartWidth, string chartHeight, IList <string> countershaft, string isload = "") { GetFusionChartDataXML getXML = new GetFusionChartDataXML(); StringBuilder sb_XMLData = new StringBuilder(); colors = new List <string>(); while (colors.Count < dt.Columns.Count) { colors.Add("000080"); colors.Add("ff0000"); colors.Add("ff8901"); colors.Add("55FFFF"); colors.Add("00BF55"); colors.Add("FFBF00"); colors.Add("FFFF00"); colors.Add("FF9FFF"); colors.Add("00FB00"); colors.Add("FF9FFF"); colors.Add("FF9ooo"); colors.Add("EF9FFF"); colors.Add("5F9FFF"); colors.Add("000000"); colors.Add("55FFFF"); colors.Add("ffffff"); colors.Add("000080"); colors.Add("0ED1DC"); colors.Add("595959"); colors.Add("55FFFF"); colors.Add("00BF55"); colors.Add("FFBF00"); colors.Add("FFFF00"); colors.Add("FF9ooo"); colors.Add("EF9FFF"); colors.Add("5F9FFF"); colors.Add("000000"); colors.Add("000080"); colors.Add("ff0000"); colors.Add("595959"); colors.Add("55FFFF"); colors.Add("00BF55"); colors.Add("FFBF00"); colors.Add("FFFF00"); colors.Add("FF9FFF"); colors.Add("00FB00"); colors.Add("000080"); colors.Add("0ED1DC"); colors.Add("595959"); colors.Add("55FFFF"); colors.Add("00BF55"); colors.Add("FFBF00"); colors.Add("FFFF00"); colors.Add("FF9ooo"); colors.Add("EF9FFF"); colors.Add("5F9FFF"); } if (chartType == FusionChartType.MSColumn2D) { sb_XMLData.Append(getXML.GetFusionChartStartXML(c, chartName)); sb_XMLData.Append(getXML.GetFusionChartGeneralXML(dt, colors)); //sb_XMLData.Append(getXML.GetFusionChartTrendLinesXML(llist)); // sb_XMLData.Append(getXML.GetFusionChartStyleXML(slist)); sb_XMLData.Append(getXML.GetFusionChartEndXML()); return(RenderChart( "../Scripts/FusionChart/Swf/MSColumn2D.swf", "", sb_XMLData.ToString(), chartName, chartWidth, chartHeight, false, true )); } else if (chartType == FusionChartType.Doughnut2D) { sb_XMLData.Append(getXML.GetFusionChartStartXML(c, chartName)); sb_XMLData.Append(getXML.GetFusionChartSetXML(dt, colors)); sb_XMLData.Append(getXML.GetFusionChartStyleXML(slist)); sb_XMLData.Append(getXML.GetFusionChartEndXML()); return(RenderChart( "../Scripts/FusionChart/Swf/Doughnut2D.swf", "", sb_XMLData.ToString(), chartName, chartWidth, chartHeight, false, true )); } else if (chartType == FusionChartType.Pie2D) { sb_XMLData.Append(getXML.GetFusionChartStartXML(c, chartName)); sb_XMLData.Append(getXML.GetFusionChartSetXML(dt, colors)); sb_XMLData.Append(getXML.GetFusionChartStyleXML(slist)); sb_XMLData.Append(getXML.GetFusionChartEndXML()); if (!string.IsNullOrWhiteSpace(isload)) { return(sb_XMLData.ToString()); } else { return(RenderChart( "../Scripts/FusionChart/Swf/Pie2D.swf", "", sb_XMLData.ToString(), chartName, chartWidth, chartHeight, false, true )); } } else if (chartType == FusionChartType.AngularGauge) { sb_XMLData.Append(getXML.GetFusionChartStartXML(c, chartName)); sb_XMLData.Append(getXML.GetFusionChartGeneralXML(dt, colors)); sb_XMLData.Append(getXML.GetFusionChartTrendLinesXML(llist)); sb_XMLData.Append(getXML.GetFusionChartStyleXML(slist)); sb_XMLData.Append(getXML.GetFusionChartEndXML()); return(RenderChart( "../Scripts/FusionChart/Swf/AngularGauge.swf", "", sb_XMLData.ToString(), chartName, chartWidth, chartHeight, false, true )); } else if (chartType == FusionChartType.Bubble) { sb_XMLData.Append(getXML.GetFusionChartStartXML(c, chartName)); sb_XMLData.Append(getXML.GetFusionChartBubbleXML(dt)); sb_XMLData.Append(getXML.GetFusionChartStyleXML(slist)); sb_XMLData.Append(getXML.GetFusionChartEndXML()); return(RenderChart( "../Scripts/FusionChart/Swf/Bubble.swf", "", sb_XMLData.ToString(), chartName, chartWidth, chartHeight, false, true )); } else if (chartType == FusionChartType.Funnel) { sb_XMLData.Append(getXML.GetFusionChartStartXML(c, chartName)); sb_XMLData.Append(getXML.GetFusionChartSetXML(dt, colors)); //sb_XMLData.Append(getXML.GetFusionChartTrendLinesXML(llist)); // sb_XMLData.Append(getXML.GetFusionChartStyleXML(slist)); sb_XMLData.Append(getXML.GetFusionChartEndXML()); return(RenderChart( "../Scripts/FusionChart/Swf/Funnel.swf", "", sb_XMLData.ToString(), chartName, chartWidth, chartHeight, false, true )); } else if (chartType == FusionChartType.MSCombiDY2D) { sb_XMLData.Append(getXML.GetFusionChartStartXML(c, chartName)); sb_XMLData.Append(getXML.GetFusionChartGeneralXML(dt, colors, countershaft)); //sb_XMLData.Append(getXML.GetFusionChartStyleXML(slist)); sb_XMLData.Append(getXML.GetFusionChartEndXML()); return(RenderChart( "../Scripts/FusionChart/Swf/MSCombiDY2D.swf", "", sb_XMLData.ToString(), chartName, chartWidth, chartHeight, false, true )); } else if (chartType == FusionChartType.Line) { sb_XMLData.Append(getXML.GetFusionChartStartXML(c, chartName)); sb_XMLData.Append(getXML.GetFusionChartSetXML(dt, colors)); sb_XMLData.Append(getXML.GetFusionChartEndXML()); if (!string.IsNullOrWhiteSpace(isload)) { return(sb_XMLData.ToString()); } else { return(RenderChart( "../Scripts/FusionChart/Swf/Line.swf", "", sb_XMLData.ToString(), chartName, chartWidth, chartHeight, false, true )); } } else if (chartType == FusionChartType.Line2) { sb_XMLData.Append(getXML.GetFusionChartStartXML(c, chartName)); sb_XMLData.Append(getXML.GetFusionChartGeneralXML(dt, colors)); // sb_XMLData.Append(getXML.GetFusionChartTrendLinesXML(llist)); // sb_XMLData.Append(getXML.GetFusionChartStyleXML(slist)); sb_XMLData.Append(getXML.GetFusionChartEndXML()); if (!string.IsNullOrWhiteSpace(isload)) { return(sb_XMLData.ToString()); } else { return(RenderChart( "../Scripts/FusionChart/Swf/MSLine.swf", "", sb_XMLData.ToString(), chartName, chartWidth, chartHeight, false, true )); } } else if (chartType == FusionChartType.Pie3D) { sb_XMLData.Append(getXML.GetFusionChartStartXML(c, chartName)); sb_XMLData.Append(getXML.GetFusionChartSetXML(dt, colors)); sb_XMLData.Append(getXML.GetFusionChartStyleXML(slist)); sb_XMLData.Append(getXML.GetFusionChartEndXML()); if (!string.IsNullOrWhiteSpace(isload)) { return(sb_XMLData.ToString()); } else { return(RenderChart( "../Scripts/FusionChart/Swf/Pie3D.swf", "", sb_XMLData.ToString(), chartName, chartWidth, chartHeight, false, true )); } } return(""); }
/// <summary> /// /// </summary> /// <param name="dt"></param> /// <param name="c"></param> /// <param name="llist"></param> /// <param name="slist"></param> /// <param name="chartType"></param> /// <param name="colors"></param> /// <param name="chartName"></param> /// <param name="chartWidth"></param> /// <param name="chartHeight"></param> /// <returns></returns> public string GetXMLData(DataTable dt, chart c, IList <line> llist, IList <style> slist, FusionChartType chartType, IList <string> colors, string chartName, string chartWidth, string chartHeight, string isload = "") { IList <string> countershaft = new List <string>(); return(GetXMLData(dt, c, llist, slist, chartType, colors, chartName, chartWidth, chartHeight, countershaft, isload)); }
/// <summary> /// Проверить, что тип графика попадает в указанную группу /// </summary> /// <param name="fusionChartType">Тип графика</param> /// <param name="groupedType">Тип группы</param> /// <returns>Признак того, что представление графика попадает в указанную группу</returns> public static bool Is(this FusionChartType fusionChartType, FusionChartGroupedType groupedType) { return((fusionChartType & (FusionChartType)groupedType) == fusionChartType); }
/// <summary> /// Признак того, что график относится к стековым /// </summary> /// <param name="fusionChartType">Тип графика</param> /// <returns>Признак того, что график стековым</returns> public static bool IsStacked(this FusionChartType fusionChartType) { return(fusionChartType.Is(FusionChartGroupedType.Stacked)); }
/// <summary> /// Признак того, что график относится к комбинированным /// </summary> /// <param name="fusionChartType">Тип графика</param> /// <returns>Признак того, что график комбинированный</returns> public static bool IsCombined(this FusionChartType fusionChartType) { return(fusionChartType.Is(FusionChartGroupedType.Combination)); }
/// <summary> /// Установка типа графика в конфиг /// </summary> /// <param name="chartConfig">Представление конфига</param> /// <param name="type">Тип графика</param> /// <returns>Замыкание на конфиг</returns> public static IChartConfig SetChartType(this IChartConfig chartConfig, FusionChartType type) { chartConfig.Type = type.ToString(); return(chartConfig); }
/// <summary> /// Признак того, что график односерийный /// </summary> /// <param name="fusionChartType">Тип графика</param> /// <returns>Признак того, что график односерийный</returns> public static bool IsSingleSeries(this FusionChartType fusionChartType) { return(fusionChartType.Is(FusionChartGroupedType.SingleSeries)); }
/// <summary> /// Признак того, что график мультисерийный /// </summary> /// <param name="fusionChartType">Тип графика</param> /// <returns>Признак того, что график мультисерийный</returns> public static bool IsMultiserial(this FusionChartType fusionChartType) { return(fusionChartType.Is(FusionChartGroupedType.MultiSeries)); }