public String buildTwoDimensionalChart(chartTypeEnum chartType, DataTable dataTable, String[] columns) { DataTable finalDataTable = dataTable.GetSubColumnTable(-1, columns); chartFeatures features = chartFeatures.transposeTable | chartFeatures.withoutHtml; String chartCode = BuildChart(chartType, features, finalDataTable, ChartSize); return(chartCode); }
/// <summary> /// Builds the chart. /// </summary> /// <param name="chartType">Type of the chart.</param> /// <param name="features">The features.</param> /// <param name="data">The data.</param> /// <param name="size">The size.</param> /// <param name="typesForSeries">The types for series.</param> /// <returns></returns> public String BuildChart(chartTypeEnum chartType, chartFeatures features, DataTable data, chartSizeEnum size, chartTypeEnum typesForSeries = chartTypeEnum.none) { List <chartFeatures> featureList = features.getEnumListFromFlags <chartFeatures>(); if (!featureList.Contains(chartFeatures.withoutHtml)) { features |= chartFeatures.withoutHtml; } String js = chartTools.buildChart(chartType, features, data, size, typesForSeries, "{0}"); return(shortcodeTool.Create(js, "", null)); }
public String buildOneDimensionalChart(chartTypeEnum chartType, String title, Dictionary <String, Double> source, String labelColumnName = "Label", String valueColumnName = "Value", String valueColumnFormat = "") { DataTable finalDataTable = new DataTable(); // dataTable.GetSubColumnTable(-1, columns); finalDataTable.SetTitle(title); DataColumn labelColumn = finalDataTable.Columns.Add(labelColumnName.getCleanPropertyName(), typeof(String)).SetHeading(labelColumnName); DataColumn valueColumn = finalDataTable.Columns.Add(valueColumnName.getCleanPropertyName(), typeof(Double)).SetFormat(valueColumnFormat); foreach (var pair in source) { var dr = finalDataTable.NewRow(); dr[labelColumn] = pair.Key; dr[valueColumn] = pair.Value; } chartFeatures features = chartFeatures.transposeTable | chartFeatures.withoutHtml; String chartCode = BuildChart(chartType, features, finalDataTable, ChartSize); return(chartCode); }
/// <summary> /// Builds the chart string for <c>C3js</c> rendering /// </summary> /// <param name="chartType">Type of chart to create.</param> /// <param name="features">Used features</param> /// <param name="data">Data table</param> /// <param name="size">The size.</param> /// <param name="typesForSeries">The types for series.</param> /// <param name="obj_id">The object identifier.</param> /// <returns></returns> public static string buildChart(chartTypeEnum chartType, chartFeatures features, DataTable data, chartSizeEnum size, chartTypeEnum typesForSeries = chartTypeEnum.none, String obj_id = "") { //if (features != chartFeatures.none) //{ // features |= chartFeatures.bindto; //} PropertyCollection pc = new PropertyCollection(); if (obj_id.isNullOrEmpty()) { obj_id = data.TableName.getCleanPropertyName(); } pc.Add(chartDataColumnEnum.chart_bindto, obj_id); pc.Add(chartDataColumnEnum.chart_type, chartType.ToString()); switch (size) { case chartSizeEnum.big500x1000: pc.Add(chartDataColumnEnum.chart_height, 500); pc.Add(chartDataColumnEnum.chart_width, 1000); break; case chartSizeEnum.half300x500: pc.Add(chartDataColumnEnum.chart_height, 300); pc.Add(chartDataColumnEnum.chart_width, 500); break; case chartSizeEnum.mid300x1000: pc.Add(chartDataColumnEnum.chart_height, 300); pc.Add(chartDataColumnEnum.chart_width, 1000); break; case chartSizeEnum.mini200x380: pc.Add(chartDataColumnEnum.chart_height, 200); pc.Add(chartDataColumnEnum.chart_width, 380); break; default: pc.Add(chartDataColumnEnum.chart_height, 300); pc.Add(chartDataColumnEnum.chart_width, 1000); break; } string output_t = masterTemplate; if (!features.HasFlag(chartFeatures.withoutHtml)) { output_t = wrapTemplate.Replace("{{{" + nameof(chartDataColumnEnum.chart_wrap) + "}}}", output_t); } if (features.HasFlag(chartFeatures.skipFirstRow)) { data.Rows.RemoveAt(0); } string dataInsert = ""; if (features.HasFlag(chartFeatures.transposeTable)) { dataInsert = data.buildDataInsertHorizontaly(); } else { dataInsert = data.buildDataInsertVertically(); } string innerInsert = ""; List <chartTypeEnum> ts = typesForSeries.getEnumListFromFlags <chartTypeEnum>(); int d = 2; foreach (chartTypeEnum t in ts) { if (t != chartTypeEnum.none) { innerInsert += "data" + d.ToString() + ": '" + t.ToString() + "', " + Environment.NewLine; } d++; } string typesLine = @"types: { {{{chart_types}}} } ".Replace("{{{" + chartDataColumnEnum.chart_types + "}}}", innerInsert); if (typesForSeries != chartTypeEnum.none) { innerInsert = typesLine; } List <chartFeatures> ls = features.getEnumListFromFlags <chartFeatures>(); foreach (chartFeatures ch in ls) { if (featureTemplates.ContainsKey(ch)) { innerInsert = innerInsert.add(featureTemplates[ch], "," + Environment.NewLine); } } pc.Add(chartDataColumnEnum.chart_inner, innerInsert); pc.Add(chartDataColumnEnum.chart_data, dataInsert); string filename = obj_id.add("csv", "."); pc.add(chartDataColumnEnum.chart_url, filename); string output = output_t.applyToContent(false, pc); return(output); }