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);
        }
Esempio n. 4
0
        /// <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);
        }