public String buildOneDimensionalChart <T>(chartTypeEnum chartType, String title, List <T> source, Func <T, String> label, Func <T, String> value, Func <T, String> color = null)
        {
            var fields = GetDefaultValues();

            fields.Add("title", title);

            //List<String> color_set = new List<string>() { "69D2E7", "#E0E4CC", "#F38630", "#96CE7F", "#CEBC17", "#CE4264" };
            circularSelector <String> color_selector = new circularSelector <String>("69D2E7", "#E0E4CC", "#F38630", "#96CE7F", "#CEBC17", "#CE4264");


            foreach (T item in source)
            {
                String label_str = label(item);
                String value_str = value(item);
                String color_str = "";
                if (color == null)
                {
                    color_str = color_selector.next();
                }
                else
                {
                    color_str = color(item);
                }
                fields["colors"] = fields["colors"].add(color_str, ",");
                fields["data"]   = fields["data"].add(value_str, ",");
                fields["labels"] = fields["labels"].add(label_str, ",");
            }
            stringTemplate template = new stringTemplate(chartTemplate[chartType]);

            return(template.applyToContent(fields));
        }
        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);
        }
Example #3
0
        public String buildTwoDimensionalChart(chartTypeEnum chartType, DataTable dataTable, params String[] columns)
        {
            JSONChartDataTool tool = new JSONChartDataTool();

            String data   = tool.DataToJ3CodeData(dataTable, columns);
            var    fields = GetDefaultValues();

            fields.Add("title", dataTable.GetTitle().getFilename());
            fields["data"] = data;
            stringTemplate template = new stringTemplate(chartTemplate[chartType]);

            return(template.applyToContent(fields));
        }
        /// <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 buildTwoDimensionalChart <T>(chartTypeEnum chartType, String title, List <T> source, Func <T, String> label, Func <T, String> color = null, params Func <T, String>[] value)
        {
            var fields = GetDefaultValues();

            fields.Add("title", title);

            //List<String> color_set = new List<string>() { "69D2E7", "#E0E4CC", "#F38630", "#96CE7F", "#CEBC17", "#CE4264" };

            List <String> value_str = new List <string>();

            foreach (var f in value)
            {
                value_str.Add("");//.Add(f(item));
            }


            foreach (T item in source)
            {
                String label_str = label(item);

                for (int i = 0; i < value.Length; i++)
                {
                    value_str[i] = value_str[i].add(value[i](item), ",");
                }

                //String value_str = value(item);
                String color_str = "";
                if (color == null)
                {
                    color_str = color_selector.next();
                }
                else
                {
                    color_str = color(item);
                }
                fields["colors"] = fields["colors"].add(color_str, ",");

                fields["labels"] = fields["labels"].add(label_str, ",");
            }

            foreach (var f in value_str)
            {
                fields["data"] = fields["data"].add(f, " next ");
            }



            stringTemplate template = new stringTemplate(chartTemplate[chartType]);

            return(template.applyToContent(fields));
        }
        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);
        }
Example #7
0
        public String buildOneDimensionalChart <T>(chartTypeEnum chartType, String title, Dictionary <String, Double> source)
        {
            var fields = GetDefaultValues();

            fields.Add("title", title);

            //List<String> color_set = new List<string>() { "69D2E7", "#E0E4CC", "#F38630", "#96CE7F", "#CEBC17", "#CE4264" };
            circularSelector <String> color_selector = new circularSelector <String>("69D2E7", "#E0E4CC", "#F38630", "#96CE7F", "#CEBC17", "#CE4264");


            foreach (var item in source)
            {
                String data = "columns: -:: ";

                String column = "-:: !" + item.Key + "!".add(item.Value.ToString(), ", ") + " ::-";

                fields["data"] = fields["data"].add(column, ", ");

                fields["data"] += " ::-";
            }
            stringTemplate template = new stringTemplate(chartTemplate[chartType]);

            return(template.applyToContent(fields));
        }
        /// <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);
        }
 public Charts()
 {
     InitializeComponent();
     _chartType = chartTypeEnum.monthByCategory;
 }
 private void chartType3_CheckedChanged(object sender, EventArgs e)
 {
     _chartType = chartTypeEnum.pieChart;
     drawChart();
 }
 private void chartType2_CheckedChanged(object sender, EventArgs e)
 {
     _chartType = chartTypeEnum.yearByCategory;
     drawChart();
 }
 private void radioButton1_CheckedChanged(object sender, EventArgs e)
 {
     _chartType = chartTypeEnum.monthByCategory;
     drawChart();
 }