Created
August 20, 2019 10:51
-
-
Save soumyasankarduttagit/f43c6c2e085b00381acff27fa83c5149 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Text; | |
using System.Collections; | |
using System.Collections.Generic; | |
namespace FusionCharts.Charts | |
{ | |
/// <summary> | |
/// Contains static methods to render FusionCharts in the Page. | |
/// </summary> | |
public class Chart : ICloneable | |
{ | |
private Hashtable __CONFIG__ = null; | |
private static Hashtable __PARAMMAP__ = null; | |
private string events = ""; | |
//private string message = ""; | |
/// <summary> | |
/// User configurable chart parameter list | |
/// </summary> | |
public enum ChartParameter | |
{ | |
chartType, | |
chartId, | |
chartWidth, | |
chartHeight, | |
dataFormat, | |
dataSource, | |
renderAt, | |
bgColor, | |
bgOpacity | |
} | |
/// <summary> | |
/// List of supported data formats | |
/// </summary> | |
public enum DataFormat | |
{ | |
json, | |
jsonurl, | |
xml, | |
xmlurl, | |
csv | |
} | |
#region constructor methods | |
/// <summary> | |
/// Chart constructor | |
/// Chart configuration parameters can be supplyed to the constructor also. | |
/// </summary> | |
public Chart() | |
{ | |
__INIT(); | |
} | |
/// <summary> | |
/// Chart constructor | |
/// </summary> | |
/// <param name="chartType">The type of chart that you intend to plot</param> | |
public Chart(string chartType) | |
{ | |
__INIT(); | |
SetChartParameter("type", chartType); | |
} | |
/// <summary> | |
/// Chart constructor | |
/// </summary> | |
/// <param name="chartType">The type of chart that you intend to plot</param> | |
/// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> | |
public Chart(string chartType, string chartId) | |
{ | |
__INIT(); | |
SetChartParameter("type", chartType); | |
SetChartParameter("id", chartId); | |
} | |
/// <summary> | |
/// Chart constructor | |
/// </summary> | |
/// <param name="chartType">The type of chart that you intend to plot</param> | |
/// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> | |
/// <param name="chartWidth">Intended width for the chart (in pixels)</param> | |
public Chart(string chartType, string chartId, string chartWidth) | |
{ | |
__INIT(); | |
SetChartParameter("type", chartType); | |
SetChartParameter("id", chartId); | |
SetChartParameter("width", chartWidth); | |
} | |
/// <summary> | |
/// Chart constructor | |
/// </summary> | |
/// <param name="chartType">The type of chart that you intend to plot</param> | |
/// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> | |
/// <param name="chartWidth">Intended width for the chart (in pixels)</param> | |
/// <param name="chartHeight">Intended height for the chart (in pixels)</param> | |
public Chart(string chartType, string chartId, string chartWidth, string chartHeight) | |
{ | |
__INIT(); | |
SetChartParameter("type", chartType); | |
SetChartParameter("id", chartId); | |
SetChartParameter("width", chartWidth); | |
SetChartParameter("height", chartHeight); | |
} | |
/// <summary> | |
/// Chart constructor | |
/// </summary> | |
/// <param name="chartType">The type of chart that you intend to plot</param> | |
/// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> | |
/// <param name="chartWidth">Intended width for the chart (in pixels)</param> | |
/// <param name="chartHeight">Intended height for the chart (in pixels)</param> | |
/// <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> | |
public Chart(string chartType, string chartId, string chartWidth, string chartHeight, string dataFormat) | |
{ | |
__INIT(); | |
SetChartParameter("type", chartType); | |
SetChartParameter("dataFormat", dataFormat); | |
SetChartParameter("id", chartId); | |
SetChartParameter("width", chartWidth); | |
SetChartParameter("height", chartHeight); | |
} | |
/// <summary> | |
/// Chart constructor | |
/// </summary> | |
/// <param name="chartType">The type of chart that you intend to plot</param> | |
/// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> | |
/// <param name="chartWidth">Intended width for the chart (in pixels)</param> | |
/// <param name="chartHeight">Intended height for the chart (in pixels)</param> | |
/// <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> | |
/// <param name="dataSource">Data for the chart</param> | |
public Chart(string chartType, string chartId, string chartWidth, string chartHeight, string dataFormat, string dataSource) | |
{ | |
__INIT(); | |
SetChartParameter("type", chartType); | |
SetChartParameter("dataFormat", dataFormat); | |
SetData(dataSource); | |
SetChartParameter("id", chartId); | |
SetChartParameter("width", chartWidth); | |
SetChartParameter("height", chartHeight); | |
} | |
/// <summary> | |
/// Chart constructor | |
/// </summary> | |
/// <param name="chartType">The type of chart that you intend to plot</param> | |
/// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> | |
/// <param name="chartWidth">Intended width for the chart (in pixels)</param> | |
/// <param name="chartHeight">Intended height for the chart (in pixels)</param> | |
/// <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> | |
/// <param name="dataSource">Data for the chart</param> | |
/// <param name="bgColor">Background color of the chart container</param> | |
public Chart(string chartType, string chartId, string chartWidth, string chartHeight, string dataFormat, string dataSource, | |
string bgColor) | |
{ | |
__INIT(); | |
SetChartParameter("type", chartType); | |
SetChartParameter("dataFormat", dataFormat); | |
SetData(dataSource); | |
SetChartParameter("id", chartId); | |
SetChartParameter("width", chartWidth); | |
SetChartParameter("height", chartHeight); | |
SetChartParameter("containerBackgroundColor", bgColor); | |
} | |
/// <summary> | |
/// Chart constructor | |
/// </summary> | |
/// <param name="chartType">The type of chart that you intend to plot</param> | |
/// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> | |
/// <param name="chartWidth">Intended width for the chart (in pixels)</param> | |
/// <param name="chartHeight">Intended height for the chart (in pixels)</param> | |
/// <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> | |
/// <param name="dataSource">Data for the chart</param> | |
/// <param name="bgColor">Back-ground-color of the chart container</param> | |
/// <param name="bgOpacity">Background opacity of the chart container</param> | |
public Chart(string chartType, string chartId, string chartWidth, string chartHeight, string dataFormat, string dataSource, | |
string bgColor, string bgOpacity) | |
{ | |
__INIT(); | |
SetChartParameter("type", chartType); | |
SetChartParameter("dataFormat", dataFormat); | |
SetData(dataSource); | |
SetChartParameter("id", chartId); | |
SetChartParameter("width", chartWidth); | |
SetChartParameter("height", chartHeight); | |
SetChartParameter("containerBackgroundColor", bgColor); | |
SetChartParameter("containerBackgroundOpacity", bgOpacity); | |
} | |
public Chart(string chartType, string chartId, string chartWidth, string chartHeight, string dataFormat, TimeSeries timeSeries) | |
{ | |
__INIT(); | |
SetChartParameter("type", chartType); | |
SetChartParameter("dataFormat", dataFormat); | |
SetChartParameter("dataSource", timeSeries); | |
SetChartParameter("id", chartId); | |
SetChartParameter("width", chartWidth); | |
SetChartParameter("height", chartHeight); | |
} | |
#endregion | |
#region RenderALL methods | |
/// <summary> | |
/// Generate html code for rendering chart | |
/// This function assumes that you've already included the FusionCharts JavaScript class in your page | |
/// </summary> | |
/// <returns>JavaScript + HTML code required to embed a chart</returns> | |
private string RenderChartALL() | |
{ | |
TimeSeries timeSeries = null; | |
string dataSource = GetChartParameter("dataSource"); | |
if (dataSource.Equals("FusionCharts.Charts.TimeSeries", StringComparison.OrdinalIgnoreCase)) | |
{ | |
timeSeries = GetChartParameter<TimeSeries>("dataSource"); | |
} | |
string dataFormat = GetChartParameter("dataFormat"); | |
string chartId = GetChartParameter("id"); | |
string renderAt = GetChartParameter("renderAt"); | |
StringBuilder builder = new StringBuilder(); | |
builder.AppendFormat("<!-- Using ASP.NET FusionCharts Wrapper and JavaScript rendering --><!-- START Script Block for Chart {0} -->" + Environment.NewLine, chartId); | |
// if the user has provided renderAt then assume that the HTML container is already present in the page. | |
if (renderAt.Trim().Length == 0) | |
{ | |
renderAt = chartId + "_div"; | |
// Now create the container div also. | |
builder.AppendFormat("<div id='{0}' >" + Environment.NewLine, renderAt); | |
builder.Append("Chart..." + Environment.NewLine); | |
builder.Append("</div>" + Environment.NewLine); | |
} | |
string chartConfigJSON = fc_encodeJSON(GetConfigurationGroup("params"), true, timeSeries); | |
builder.Append("<script type=\"text/javascript\">" + Environment.NewLine); | |
builder.Append("FusionCharts && FusionCharts.ready(function () {" + Environment.NewLine); | |
if (timeSeries != null) | |
{ | |
builder.AppendLine(timeSeries.GetDataStore()); | |
} | |
builder.AppendFormat("if (FusionCharts(\"{0}\") ) FusionCharts(\"{0}\").dispose();\n", chartId); | |
builder.AppendFormat("var chart_{0} = new FusionCharts({1}).render();" + Environment.NewLine, chartId, chartConfigJSON); | |
builder.Append(events); | |
builder.Append("});" + Environment.NewLine); | |
builder.Append("</script>" + Environment.NewLine); | |
builder.AppendFormat("<!-- END Script Block for Chart {0} -->" + Environment.NewLine, chartId); | |
return builder.ToString(); | |
} | |
#endregion | |
#region Public Methods | |
/// <summary> | |
/// public method to attach event from client side | |
/// </summary> | |
/// <param name="eventName"></param> | |
/// <param name="funcName"></param> | |
public void AddEvent(string eventName, string funcName) | |
{ | |
string eventHTML; | |
string chartId = GetChartParameter("id"); | |
eventHTML = string.Format("FusionCharts(\"{0}\").addEventListener(\"{1}\",{2});" + Environment.NewLine, chartId, eventName, funcName); | |
events += eventHTML; | |
} | |
/// <summary> | |
/// public method to add attributes for message customization | |
/// </summary> | |
/// <param name="messageAttribute"></param> | |
/// <param name="messageAttributeValue"></param> | |
public void AddMessage(string messageAttribute, string messageAttributeValue) | |
{ | |
string messageHTML; | |
messageHTML = string.Format("{0}:\"{1}\",", messageAttribute, messageAttributeValue); | |
SetChartParameter("message", messageHTML); | |
} | |
/// <summary> | |
/// Public method to clone an exiting FusionCharts instance | |
/// To make the chartId unique, this function will add "_clone" as suffix in the clone chart's Id. | |
/// </summary> | |
public object Clone() | |
{ | |
Chart ChartClone = new Chart(); | |
ChartClone.__CONFIG__ = (Hashtable)this.__CONFIG__.Clone(); | |
ChartClone.SetChartParameter("id", ((Hashtable)ChartClone.__CONFIG__["params"])["id"].ToString() + "_clone"); | |
return ChartClone; | |
} | |
/// <summary> | |
/// Public method to generate html code for rendering chart | |
/// This function assumes that you've already included the FusionCharts JavaScript class in your page | |
/// </summary> | |
/// <returns>JavaScript + HTML code required to embed a chart</returns> | |
public string Render() | |
{ | |
return RenderChartALL(); | |
} | |
/// <summary> | |
/// Public method to generate html code for rendering chart | |
/// This function assumes that you've already included the FusionCharts JavaScript class in your page | |
/// </summary> | |
/// <param name="chartType">The type of chart that you intend to plot</param> | |
/// <returns>JavaScript + HTML code required to embed a chart</returns> | |
public string Render(string chartType) | |
{ | |
SetChartParameter("type", chartType); | |
return RenderChartALL(); | |
} | |
/// <summary> | |
/// Public method to generate html code for rendering chart | |
/// This function assumes that you've already included the FusionCharts JavaScript class in your page | |
/// </summary> | |
/// <param name="chartType">The type of chart that you intend to plot</param> | |
/// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> | |
/// <returns>JavaScript + HTML code required to embed a chart</returns> | |
public string Render(string chartType, string chartId) | |
{ | |
SetChartParameter("type", chartType); | |
SetChartParameter("id", chartId); | |
return RenderChartALL(); | |
} | |
/// <summary> | |
/// Public method to generate html code for rendering chart | |
/// This function assumes that you've already included the FusionCharts JavaScript class in your page | |
/// </summary> | |
/// <param name="chartType">The type of chart that you intend to plot</param> | |
/// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> | |
/// <param name="chartWidth">Intended width for the chart (in pixels)</param> | |
/// <returns>JavaScript + HTML code required to embed a chart</returns> | |
public string Render(string chartType, string chartId, string chartWidth) | |
{ | |
SetChartParameter("type", chartType); | |
SetChartParameter("id", chartId); | |
SetChartParameter("width", chartWidth); | |
return RenderChartALL(); | |
} | |
/// <summary> | |
/// Public method to generate html code for rendering chart | |
/// This function assumes that you've already included the FusionCharts JavaScript class in your page | |
/// </summary> | |
/// <param name="chartType">The type of chart that you intend to plot</param> | |
/// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> | |
/// <param name="chartWidth">Intended width for the chart (in pixels)</param> | |
/// <param name="chartHeight">Intended height for the chart (in pixels)</param> | |
/// <returns>JavaScript + HTML code required to embed a chart</returns> | |
public string Render(string chartType, string chartId, string chartWidth, string chartHeight) | |
{ | |
SetChartParameter("type", chartType); | |
SetChartParameter("id", chartId); | |
SetChartParameter("width", chartWidth); | |
SetChartParameter("height", chartHeight); | |
return RenderChartALL(); | |
} | |
/// <summary> | |
/// Public method to generate html code for rendering chart | |
/// This function assumes that you've already included the FusionCharts JavaScript class in your page | |
/// </summary> | |
/// <param name="chartType">The type of chart that you intend to plot</param> | |
/// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> | |
/// <param name="chartWidth">Intended width for the chart (in pixels)</param> | |
/// <param name="chartHeight">Intended height for the chart (in pixels)</param> | |
/// <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> | |
/// <returns>JavaScript + HTML code required to embed a chart</returns> | |
public string Render(string chartType, string chartId, string chartWidth, string chartHeight, string dataFormat) | |
{ | |
SetChartParameter("type", chartType); | |
SetChartParameter("dataFormat", dataFormat); | |
SetChartParameter("id", chartId); | |
SetChartParameter("width", chartWidth); | |
SetChartParameter("height", chartHeight); | |
return RenderChartALL(); | |
} | |
/// <summary> | |
/// Public method to generate html code for rendering chart | |
/// This function assumes that you've already included the FusionCharts JavaScript class in your page | |
/// </summary> | |
/// <param name="chartType">The type of chart that you intend to plot</param> | |
/// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> | |
/// <param name="chartWidth">Intended width for the chart (in pixels)</param> | |
/// <param name="chartHeight">Intended height for the chart (in pixels)</param> | |
/// <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> | |
/// <param name="dataSource">Data for the chart</param> | |
/// <returns>JavaScript + HTML code required to embed a chart</returns> | |
public string Render(string chartType, string chartId, string chartWidth, string chartHeight, string dataFormat, string dataSource) | |
{ | |
SetChartParameter("type", chartType); | |
SetChartParameter("dataFormat", dataFormat); | |
SetData(dataSource); | |
SetChartParameter("id", chartId); | |
SetChartParameter("width", chartWidth); | |
SetChartParameter("height", chartHeight); | |
return RenderChartALL(); | |
} | |
/// <summary> | |
/// Public method to generate html code for rendering chart | |
/// This function assumes that you've already included the FusionCharts JavaScript class in your page | |
/// </summary> | |
/// <param name="chartType">The type of chart that you intend to plot</param> | |
/// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> | |
/// <param name="chartWidth">Intended width for the chart (in pixels)</param> | |
/// <param name="chartHeight">Intended height for the chart (in pixels)</param> | |
/// <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> | |
/// <param name="dataSource">Data for the chart</param> | |
/// <param name="bgColor">Background color of the chart container</param> | |
/// <returns>JavaScript + HTML code required to embed a chart</returns> | |
public string Render(string chartType, string chartId, string chartWidth, string chartHeight, string dataFormat, string dataSource, | |
string bgColor) | |
{ | |
SetChartParameter("type", chartType); | |
SetChartParameter("dataFormat", dataFormat); | |
SetData(dataSource); | |
SetChartParameter("id", chartId); | |
SetChartParameter("width", chartWidth); | |
SetChartParameter("height", chartHeight); | |
SetChartParameter("containerBackgroundColor", bgColor); | |
return RenderChartALL(); | |
} | |
/// <summary> | |
/// Public method to generate html code for rendering chart | |
/// This function assumes that you've already included the FusionCharts JavaScript class in your page | |
/// </summary> | |
/// <param name="chartType">The type of chart that you intend to plot</param> | |
/// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> | |
/// <param name="chartWidth">Intended width for the chart (in pixels)</param> | |
/// <param name="chartHeight">Intended height for the chart (in pixels)</param> | |
/// <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> | |
/// <param name="dataSource">Data for the chart</param> | |
/// <param name="bgColor">Background color of the chart container</param> | |
/// <param name="bgOpacity">Background opacity of the chart container</param> | |
/// <returns>JavaScript + HTML code required to embed a chart</returns> | |
public string Render(string chartType, string chartId, string chartWidth, string chartHeight, string dataFormat, string dataSource, | |
string bgColor, string bgOpacity) | |
{ | |
SetChartParameter("type", chartType); | |
SetChartParameter("dataFormat", dataFormat); | |
SetData(dataSource); | |
SetChartParameter("id", chartId); | |
SetChartParameter("width", chartWidth); | |
SetChartParameter("height", chartHeight); | |
SetChartParameter("containerBackgroundColor", bgColor); | |
SetChartParameter("containerBackgroundOpacity", bgOpacity); | |
return RenderChartALL(); | |
} | |
/// <summary> | |
/// SetChartParameter sets various configurations of a FusionCharts instance | |
/// </summary> | |
/// <param name="param">Name of chart parameter</param> | |
/// <param name="value">Value of chart parameter</param> | |
public void SetChartParameter(ChartParameter param, object value) | |
{ | |
SetChartParameter(__PARAMMAP__[param.ToString()].ToString(), value); | |
} | |
/// <summary> | |
/// GetChartParameter returns the value of a parameter of a FusionCharts instance | |
/// </summary> | |
/// <param name="param">Name of chart parameter</param> | |
/// <returns>String</returns> | |
public string GetChartParameter(ChartParameter param) | |
{ | |
return GetChartParameter(__PARAMMAP__[param.ToString()].ToString()); | |
} | |
/// <summary> | |
/// This method to set the data for the chart | |
/// </summary> | |
/// <param name="dataSource">Data for the chart</param> | |
public void SetData(string dataSource) | |
{ | |
SetChartParameter("dataSource", dataSource); | |
} | |
/// <summary> | |
/// This method to set the data for the chart | |
/// </summary> | |
/// <param name="dataSource">Data for the chart</param> | |
/// <param name="dataFormat">Data format. e.g. json, jsonurl, csv, xml, xmlurl</param> | |
public void SetData(string dataSource, DataFormat format) | |
{ | |
SetChartParameter("dataSource", dataSource); | |
SetChartParameter("dataFormat", format.ToString()); | |
} | |
#endregion | |
#region Helper Private Methods | |
/// <summary> | |
/// SetConfiguration sets various configurations of FusionCharts | |
/// It takes configuration names as first parameter and its value a second parameter | |
/// There are config groups which can contain common configuration names. All config names in all groups gets set with this value | |
/// unless group is specified explicitly | |
/// </summary> | |
/// <param name="setting">Name of configuration</param> | |
/// <param name="value">Value of configuration</param> | |
private void SetChartParameter(string setting, object value) | |
{ | |
if (((Hashtable)__CONFIG__["params"]).ContainsKey(setting)) | |
{ | |
if (setting.Equals("message", StringComparison.InvariantCultureIgnoreCase)) | |
{ | |
((Hashtable)__CONFIG__["params"])[setting] += value.ToString(); | |
} | |
else | |
{ | |
((Hashtable)__CONFIG__["params"])[setting] = value; | |
} | |
} | |
} | |
private void SetParamsMap() | |
{ | |
if (__PARAMMAP__ == null) | |
{ | |
__PARAMMAP__ = new Hashtable(StringComparer.InvariantCultureIgnoreCase); | |
__PARAMMAP__["chartType"] = "type"; | |
__PARAMMAP__["chartId"] = "id"; | |
__PARAMMAP__["chartWidth"] = "width"; | |
__PARAMMAP__["chartHeight"] = "height"; | |
__PARAMMAP__["message"] = "message"; | |
__PARAMMAP__["dataFormat"] = "dataFormat"; | |
__PARAMMAP__["dataSource"] = "dataSource"; | |
__PARAMMAP__["renderAt"] = "renderAt"; | |
__PARAMMAP__["bgColor"] = "containerBackgroundColor"; | |
__PARAMMAP__["bgOpacity"] = "containerBackgroundOpacity"; | |
} | |
} | |
private void __INIT() | |
{ | |
__CONFIG__ = new Hashtable(StringComparer.InvariantCultureIgnoreCase); | |
Hashtable param = new Hashtable(StringComparer.InvariantCultureIgnoreCase); | |
param["type"] = ""; | |
param["width"] = ""; | |
param["height"] = ""; | |
param["message"] = ""; | |
param["renderAt"] = ""; | |
param["dataSource"] = ""; | |
param["dataFormat"] = ""; | |
param["id"] = Guid.NewGuid().ToString().Replace("-", "_"); | |
param["containerBackgroundColor"] = ""; | |
param["containerBackgroundOpacity"] = ""; | |
__CONFIG__["params"] = param; | |
param = null; | |
SetParamsMap(); | |
} | |
/// <summary> | |
/// Transform the meaning of boolean value in integer value | |
/// </summary> | |
/// <param name="value">true/false value to be transformed</param> | |
/// <returns>1 if the value is true, 0 if the value is false</returns> | |
private static int boolToNum(bool value) | |
{ | |
return value ? 1 : 0; | |
} | |
private T GetChartParameter<T>(string setting) | |
{ | |
if (((Hashtable)__CONFIG__["params"]).ContainsKey(setting)) | |
{ | |
object result = ((Hashtable)__CONFIG__["params"])[setting]; | |
return (T)Convert.ChangeType(result, typeof(T)); | |
} | |
return (T)Convert.ChangeType(null, typeof(T)); ; | |
} | |
private string GetChartParameter(string setting) | |
{ | |
if (((Hashtable)__CONFIG__["params"]).ContainsKey(setting)) | |
{ | |
return ((Hashtable)__CONFIG__["params"])[setting].ToString(); | |
} | |
return null; | |
} | |
private string fc_encodeJSON(Hashtable json, bool enclosed, TimeSeries timeSeries) | |
{ | |
string strjson = "", Key = "", Value = ""; | |
foreach (DictionaryEntry ds in json) | |
{ | |
if (ds.Value.ToString().Trim() != "") | |
{ | |
Key = ds.Key.ToString(); | |
Value = ds.Value.ToString(); | |
// If this is not the dataSource then convert the value as JavaScript string | |
if (Key.ToLower().Equals("datasource")) | |
{ | |
if (timeSeries == null) | |
{// Remove new line char from the dataSource | |
Value.Replace("\n\r", ""); | |
// detect if non-JSON format then wrap with quot '"' | |
if (!(Value.StartsWith("{") && Value.EndsWith("}"))) | |
{ | |
Value = "\"" + Value + "\""; | |
} | |
strjson = strjson + Environment.NewLine + "\"" + Key + "\" : " + Value + ", "; | |
} | |
else | |
{ | |
strjson = strjson + Environment.NewLine + "\"" + Key + "\" : " + timeSeries.GetDataSource() + ", "; | |
} | |
} | |
else if (Key.ToLower().Equals("message")) | |
{ | |
strjson = strjson + Environment.NewLine + Value; | |
} | |
else | |
{ | |
Value = "\"" + Value + "\""; | |
strjson = strjson + Environment.NewLine + "\"" + Key + "\" : " + Value + ", "; | |
} | |
} | |
else if (ds.Key.ToString().Equals("renderAt")) | |
{ | |
strjson = strjson + Environment.NewLine + "\"renderAt\" : \"" + ((Hashtable)json)["id"].ToString() + "_div\", "; | |
} | |
} | |
// remove ending comma | |
if (strjson.EndsWith(",")) strjson = strjson.Remove(strjson.Length - 1); | |
if (enclosed == true) | |
{ | |
strjson = "{" + strjson + Environment.NewLine + "}"; | |
} | |
return strjson; | |
} | |
private Hashtable GetConfigurationGroup(string setting) | |
{ | |
if (__CONFIG__.ContainsKey(setting)) | |
{ | |
return (Hashtable)__CONFIG__[setting]; | |
} | |
return null; | |
} | |
#endregion | |
} | |
#region TimeSeries chart | |
public class TimeSeries | |
{ | |
private List<KeyValuePair<string, string>> attributes = new List<KeyValuePair<string, string>>(); | |
private FusionTable fusionTableObject = null; | |
public TimeSeries(FusionTable fusionTable) | |
{ | |
this.fusionTableObject = fusionTable; | |
} | |
public void AddAttribute(string Key, string Value) | |
{ | |
attributes.Add(new KeyValuePair<string, string>(Key, Value)); | |
} | |
public string GetDataSource() | |
{ | |
StringBuilder sb = new StringBuilder(); | |
foreach (KeyValuePair<string, string> attrib in attributes) | |
{ | |
sb.Append(string.Format("{0}:{1},{2}", attrib.Key, attrib.Value, Environment.NewLine)); | |
} | |
sb.Append(string.Format("{0}:{1}{2}", "data", "fusionTable", Environment.NewLine)); | |
return "{" + Environment.NewLine + sb.ToString() + Environment.NewLine + "}"; | |
} | |
public string GetDataStore() | |
{ | |
return fusionTableObject.GetDataTable(); | |
} | |
} | |
public class FusionTable | |
{ | |
public enum OrderBy | |
{ | |
ASC = 0, | |
DESC = 1 | |
} | |
public enum FilterType | |
{ | |
Equals = 0, | |
Greater = 1, | |
GreaterEquals = 2, | |
Less = 3, | |
LessEquals = 4, | |
Between = 5 | |
} | |
private StringBuilder stringBuilder = null; | |
public FusionTable(string schema, string data) | |
{ | |
this.stringBuilder = new StringBuilder(); | |
stringBuilder.AppendLine("let schema = " + schema + ";"); | |
stringBuilder.AppendLine("let data = " + data + ";"); | |
stringBuilder.AppendLine("let fusionDataStore = new FusionCharts.DataStore();"); | |
stringBuilder.AppendLine("let fusionTable = fusionDataStore.createDataTable(data, schema);"); | |
} | |
public void Select(params string[] columnName) | |
{ | |
if (columnName.Length > 0) | |
{ | |
string columns = string.Format("'{0}'", string.Join("', '", columnName)); | |
stringBuilder.AppendLine("fusionTable = fusionTable.query(FusionCharts.DataStore.Operators.select([" + columns + "]));"); | |
} | |
} | |
public void Sort(String columnName, OrderBy columnOrderBy) | |
{ | |
string data = string.Format("{{column: '{0}', order: '{1}'}}", columnName, columnOrderBy.Equals(OrderBy.ASC) ? "asc" : "desc"); | |
string sortedData = string.Format("sort([{0}])", data); | |
stringBuilder.AppendLine("fusionTable = fusionTable.query(" + sortedData + ");"); | |
} | |
public string CreateFilter(FilterType filterType, String columnName, params object[] values) | |
{ | |
string fx = filterType.ToString(); | |
fx = char.ToLower(fx[0]) + fx.Substring(1); | |
string filter = string.Empty; | |
switch (filterType) | |
{ | |
case FilterType.Equals: | |
filter = string.Format("FusionCharts.DataStore.Operators.{0}('{1}', '{2}')", fx, columnName, values[0].ToString()); | |
break; | |
case FilterType.Between: | |
if (values.Length > 1) | |
{ | |
filter = string.Format("FusionCharts.DataStore.Operators.{0}('{1}', {2}, {3})", fx, columnName, values[0], values[1]); | |
} | |
break; | |
default: | |
filter = string.Format("FusionCharts.DataStore.Operators.{0}('{1}', {2})", fx, columnName, values[0]); | |
break; | |
} | |
return filter; | |
} | |
public void ApplyFilter(String filter) | |
{ | |
if (!string.IsNullOrEmpty(filter)) | |
{ | |
stringBuilder.AppendLine("fusionTable = fusionTable.query(" + filter + ");"); | |
} | |
} | |
public void ApplyFilterByCondition(String filter) | |
{ | |
if (!string.IsNullOrEmpty(filter)) | |
{ | |
stringBuilder.AppendLine("fusionTable = fusionTable.query(" + filter + ");"); | |
} | |
} | |
public void Pipe(params string[] filters) | |
{ | |
if (filters.Length > 0) | |
{ | |
string columns = string.Format("'{0}'", string.Join(", ", filters)); | |
stringBuilder.AppendLine("fusionTable = fusionTable.query(FusionCharts.DataStore.Operators.pipe(" + columns + "));"); | |
} | |
} | |
public string GetDataTable() | |
{ | |
return stringBuilder.ToString(); | |
} | |
} | |
#endregion | |
} | |
namespace InfoSoftGlobal | |
{ | |
/// <summary> | |
/// Contains static methods to render FusionCharts in the Page. | |
/// | |
/// @version: v3.2.2.2 | |
/// @date: 15 August 2012 | |
/// | |
/// </summary> | |
public class FusionCharts | |
{ | |
//private static Hashtable __CONFIG__ = new Hashtable(new CaseInsensitiveHashCodeProvider(), new CaseInsensitiveComparer()); | |
private static Hashtable __CONFIG__ = new Hashtable(StringComparer.InvariantCultureIgnoreCase); | |
private static bool __CONFIG__Initialized = false; | |
#region RenderALL methods | |
/// <summary> | |
/// Generate html code for rendering chart | |
/// This function assumes that you've already included the FusionCharts JavaScript class in your page | |
/// </summary> | |
/// <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> | |
/// <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> | |
/// <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> | |
/// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> | |
/// <param name="chartWidth">Intended width for the chart (in pixels)</param> | |
/// <param name="chartHeight">Intended height for the chart (in pixels)</param> | |
/// <param name="debugMode">Whether to start the chart in debug mode</param> | |
/// <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> | |
/// <param name="allowTransparent">Whether allowTransparent chart (true / false)</param> | |
/// <param name="bgColor">Back Ground Color</param> | |
/// <param name="scaleMode">Set Scale Mode</param> | |
/// <param name="language">Set SWF file Language</param> | |
/// <returns>JavaScript + HTML code required to embed a chart</returns> | |
private static string RenderChartALL(string chartSWF, string dataUrl, string dataStr, string chartId, string chartWidth, string chartHeight, | |
bool debugMode, bool registerWithJS, bool allowTransparent, string bgColor, string scaleMode, string language) | |
{ | |
__INIT(); | |
// Creating a local copy of global Configuration. | |
Hashtable __CONFIGCLONE__ = (Hashtable)__CONFIG__.Clone(); | |
// string dataprovider_js_code; | |
SetConfiguration(ref __CONFIGCLONE__, "debugMode", boolToNum(debugMode)); | |
SetConfiguration(ref __CONFIGCLONE__, "registerWithJS", boolToNum(true)); | |
// setup debug mode js parameter | |
int debugMode_js_param = boolToNum(debugMode); | |
// setup register with js js parameter | |
int registerWithJS_js_param = boolToNum(true); | |
string dataFormat = GetConfiguration(ref __CONFIGCLONE__, "dataFormat"); | |
dataFormat = (dataFormat == "" ? "xml" + (dataStr == "" ? "url" : "") : dataFormat + (dataStr == "" ? "url" : "")); | |
if (GetConfiguration(ref __CONFIGCLONE__, "renderAt") == "") SetConfiguration(ref __CONFIGCLONE__, "renderAt", chartId + "Div"); | |
string wmode = GetConfiguration(ref __CONFIGCLONE__, "wMode"); | |
if (wmode.Trim() == "" || wmode == null) | |
{ | |
wmode = allowTransparent ? "transparent" : "opaque"; | |
} | |
SetConfiguration(ref __CONFIGCLONE__, "swfUrl", chartSWF); | |
SetConfiguration(ref __CONFIGCLONE__, "dataFormat", dataFormat); | |
SetConfiguration(ref __CONFIGCLONE__, "id", chartId); | |
SetConfiguration(ref __CONFIGCLONE__, "width", chartWidth); | |
SetConfiguration(ref __CONFIGCLONE__, "height", chartHeight); | |
SetConfiguration(ref __CONFIGCLONE__, "wMode", wmode); | |
SetConfiguration(ref __CONFIGCLONE__, "bgColor", bgColor); | |
SetConfiguration(ref __CONFIGCLONE__, "scaleMode", scaleMode); | |
SetConfiguration(ref __CONFIGCLONE__, "lang", language); | |
string dataSource = (dataStr == "" ? dataUrl : dataStr.Replace("\n\r", "")); | |
string dataSourceJSON = "\"dataSource\" : " + (dataFormat == "json" ? dataSource : "\"" + dataSource + "\""); | |
string chartConfigJSON = "{" + fc_encodeJSON(GetConfigurationGroup(ref __CONFIGCLONE__, "params"), false) + "," + dataSourceJSON + "}"; | |
StringBuilder builder = new StringBuilder(); | |
builder.AppendFormat("<!-- Using ASP.NET FusionCharts v3.2.2.1 Wrapper and JavaScript rendering --><!-- START Script Block for Chart {0} -->" + Environment.NewLine, chartId); | |
builder.AppendFormat("<div id='{0}Div' >" + Environment.NewLine, chartId); | |
builder.Append("Chart." + Environment.NewLine); | |
builder.Append("</div>" + Environment.NewLine); | |
builder.Append("<script type=\"text/javascript\">" + Environment.NewLine); | |
builder.AppendFormat("if (FusionCharts && FusionCharts(\"{0}\") ) FusionCharts(\"{0}\").dispose();\n", chartId); | |
builder.AppendFormat("var chart_{0} = new FusionCharts({1}).render();", chartId, chartConfigJSON); | |
builder.Append("</script>" + Environment.NewLine); | |
builder.AppendFormat("<!-- END Script Block for Chart {0} -->" + Environment.NewLine, chartId); | |
// Re-Initializing... | |
__fc__initialize__(); | |
__CONFIGCLONE__ = null; | |
return builder.ToString(); | |
} | |
/// <summary> | |
/// Renders the HTML code for the chart. This | |
/// method does NOT embed the chart using JavaScript class. Instead, it uses | |
/// direct HTML embedding. So, if you see the charts on IE 6 (or above), you'll | |
/// see the "Click to activate..." message on the chart. | |
/// </summary> | |
/// <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> | |
/// <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> | |
/// <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> | |
/// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> | |
/// <param name="chartWidth">Intended width for the chart (in pixels)</param> | |
/// <param name="chartHeight">Intended height for the chart (in pixels)</param> | |
/// <param name="debugMode">Whether to start the chart in debug mode</param> | |
/// <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> | |
/// <param name="allowTransparent">Whether allowTransparent chart (true / false)</param> | |
/// <param name="bgColor">Back Ground Color</param> | |
/// <param name="scaleMode">Set Scale Mode</param> | |
/// <param name="language">Set SWF file Language</param> | |
/// <returns></returns> | |
private static string RenderChartHTMLALL(string chartSWF, string dataUrl, string dataStr, string chartId, string chartWidth, string chartHeight, | |
bool debugMode, bool registerWithJS, bool allowTransparent, string bgColor, string scaleMode, string language) | |
{ | |
__INIT(); | |
// Creating a local copy of global Configuration. | |
Hashtable __CONFIGCLONE__ = (Hashtable)__CONFIG__.Clone(); | |
string wmode = GetConfiguration(ref __CONFIGCLONE__, "wMode"); | |
if (wmode.Trim() == "" || wmode == null) | |
{ | |
wmode = allowTransparent ? "transparent" : "opaque"; | |
} | |
SetConfiguration(ref __CONFIGCLONE__, "data", chartSWF); | |
SetConfiguration(ref __CONFIGCLONE__, "movie", chartSWF); | |
SetConfiguration(ref __CONFIGCLONE__, "dataURL", dataUrl); | |
SetConfiguration(ref __CONFIGCLONE__, "dataXML", dataStr); | |
SetConfiguration(ref __CONFIGCLONE__, "DOMId", chartId); | |
SetConfiguration(ref __CONFIGCLONE__, "id", chartId); | |
SetConfiguration(ref __CONFIGCLONE__, "width", chartWidth); | |
SetConfiguration(ref __CONFIGCLONE__, "chartWidth", chartWidth); | |
SetConfiguration(ref __CONFIGCLONE__, "height", chartHeight); | |
SetConfiguration(ref __CONFIGCLONE__, "chartHeight", chartHeight); | |
SetConfiguration(ref __CONFIGCLONE__, "debugMode", boolToNum(debugMode)); | |
SetConfiguration(ref __CONFIGCLONE__, "registerWithJS", boolToNum(true)); | |
SetConfiguration(ref __CONFIGCLONE__, "wMode", wmode); | |
SetConfiguration(ref __CONFIGCLONE__, "bgColor", bgColor); | |
SetConfiguration(ref __CONFIGCLONE__, "scaleMode", scaleMode); | |
SetConfiguration(ref __CONFIGCLONE__, "lang", language); | |
string strFlashVars = FC_Transform(GetConfigurationGroup(ref __CONFIGCLONE__, "fvars"), "&{key}={value}", true); | |
SetConfiguration(ref __CONFIGCLONE__, "flashvars", strFlashVars); | |
string strObjectNode = FC_Transform(GetConfigurationGroup(ref __CONFIGCLONE__, "object"), " {key}=\"{value}\"", true); | |
string strObjectParamsNode = FC_Transform(GetConfigurationGroup(ref __CONFIGCLONE__, "objparams"), "\t<param name=\"{key}\" value=\"{value}\">\n", true); | |
StringBuilder htmlcodes = new StringBuilder(); | |
htmlcodes.AppendFormat("<!-- Using ASP.NET FusionCharts v3.2.2.1 Wrapper --><!-- START HTML Code Block for Chart {0} -->\n", chartId); | |
htmlcodes.AppendFormat("<object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' {0}>\n", strObjectNode); | |
htmlcodes.Append(strObjectParamsNode + Environment.NewLine); | |
htmlcodes.AppendFormat("<!--[if !IE]>-->\n<object type='application/x-shockwave-flash' {0}>\n{1}</object>\n<!--<![endif]-->\n</object>\n", strObjectNode, strObjectParamsNode); | |
htmlcodes.AppendFormat("<!-- END HTML Code Block for Chart {0} -->\n", chartId); | |
// Re-Initializing... | |
__fc__initialize__(); | |
return htmlcodes.ToString(); | |
} | |
#endregion | |
/// <summary> | |
/// Generate html code for rendering chart | |
/// This function assumes that you've already included the FusionCharts JavaScript class in your page | |
/// </summary> | |
/// <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> | |
/// <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> | |
/// <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> | |
/// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> | |
/// <param name="chartWidth">Intended width for the chart (in pixels)</param> | |
/// <param name="chartHeight">Intended height for the chart (in pixels)</param> | |
/// <param name="debugMode">Whether to start the chart in debug mode</param> | |
/// <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> | |
/// <returns>JavaScript + HTML code required to embed a chart</returns> | |
[Obsolete("")] | |
public static string RenderChart(string chartSWF, string dataUrl, string dataStr, string chartId, string chartWidth, string chartHeight, bool debugMode, bool registerWithJS) | |
{ | |
return RenderChartALL(chartSWF, dataUrl, dataStr, chartId, chartWidth, chartHeight, debugMode, registerWithJS, false, "", "noScale", "EN"); | |
} | |
/// <summary> | |
/// Generate html code for rendering chart | |
/// This function assumes that you've already included the FusionCharts JavaScript class in your page | |
/// </summary> | |
/// <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> | |
/// <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> | |
/// <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> | |
/// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> | |
/// <param name="chartWidth">Intended width for the chart (in pixels)</param> | |
/// <param name="chartHeight">Intended height for the chart (in pixels)</param> | |
/// <param name="debugMode">Whether to start the chart in debug mode</param> | |
/// <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> | |
/// <param name="allowTransparent">Whether allowTransparent chart (true / false)</param> | |
/// <returns>JavaScript + HTML code required to embed a chart</returns> | |
[Obsolete("")] | |
public static string RenderChart(string chartSWF, string dataUrl, string dataStr, string chartId, string chartWidth, string chartHeight, bool debugMode, bool registerWithJS, bool allowTransparent) | |
{ | |
return RenderChartALL(chartSWF, dataUrl, dataStr, chartId, chartWidth, chartHeight, debugMode, registerWithJS, allowTransparent, "", "noScale", "EN"); | |
} | |
/// <summary> | |
/// Generate html code for rendering chart | |
/// This function assumes that you've already included the FusionCharts JavaScript class in your page | |
/// </summary> | |
/// <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> | |
/// <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> | |
/// <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> | |
/// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> | |
/// <param name="chartWidth">Intended width for the chart (in pixels)</param> | |
/// <param name="chartHeight">Intended height for the chart (in pixels)</param> | |
/// <param name="debugMode">Whether to start the chart in debug mode</param> | |
/// <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> | |
/// <param name="allowTransparent">Whether allowTransparent chart (true / false)</param> | |
/// <param name="bgColor">Back Ground Color</param> | |
/// <param name="scaleMode">Set Scale Mode</param> | |
/// <param name="language">Set SWF file Language</param> | |
/// <returns>JavaScript + HTML code required to embed a chart</returns> | |
[Obsolete("")] | |
public static string RenderChart(string chartSWF, string dataUrl, string dataStr, string chartId, string chartWidth, string chartHeight, bool debugMode, bool registerWithJS, bool allowTransparent, string bgColor, string scaleMode, string language) | |
{ | |
return RenderChartALL(chartSWF, dataUrl, dataStr, chartId, chartWidth, chartHeight, debugMode, registerWithJS, allowTransparent, bgColor, scaleMode, language); | |
} | |
/// <summary> | |
/// Renders the HTML code for the chart. This | |
/// method does NOT embed the chart using JavaScript class. Instead, it uses | |
/// direct HTML embedding. So, if you see the charts on IE 6 (or above), you'll | |
/// see the "Click to activate..." message on the chart. | |
/// </summary> | |
/// <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> | |
/// <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> | |
/// <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> | |
/// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> | |
/// <param name="chartWidth">Intended width for the chart (in pixels)</param> | |
/// <param name="chartHeight">Intended height for the chart (in pixels)</param> | |
/// <param name="debugMode">Whether to start the chart in debug mode</param> | |
/// <returns></returns> | |
[Obsolete("")] | |
public static string RenderChartHTML(string chartSWF, string dataUrl, string dataStr, string chartId, string chartWidth, string chartHeight, bool debugMode) | |
{ | |
return RenderChartHTMLALL(chartSWF, dataUrl, dataStr, chartId, chartWidth, chartHeight, debugMode, false, false, "", "noScale", "EN"); | |
} | |
/// <summary> | |
/// Renders the HTML code for the chart. This | |
/// method does NOT embed the chart using JavaScript class. Instead, it uses | |
/// direct HTML embedding. So, if you see the charts on IE 6 (or above), you'll | |
/// see the "Click to activate..." message on the chart. | |
/// </summary> | |
/// <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> | |
/// <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> | |
/// <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> | |
/// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> | |
/// <param name="chartWidth">Intended width for the chart (in pixels)</param> | |
/// <param name="chartHeight">Intended height for the chart (in pixels)</param> | |
/// <param name="debugMode">Whether to start the chart in debug mode</param> | |
/// <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> | |
/// <returns></returns> | |
[Obsolete("")] | |
public static string RenderChartHTML(string chartSWF, string dataUrl, string dataStr, string chartId, string chartWidth, string chartHeight, bool debugMode, bool registerWithJS) | |
{ | |
return RenderChartHTMLALL(chartSWF, dataUrl, dataStr, chartId, chartWidth, chartHeight, debugMode, registerWithJS, false, "", "noScale", "EN"); | |
} | |
/// <summary> | |
/// Renders the HTML code for the chart. This | |
/// method does NOT embed the chart using JavaScript class. Instead, it uses | |
/// direct HTML embedding. So, if you see the charts on IE 6 (or above), you'll | |
/// see the "Click to activate..." message on the chart. | |
/// </summary> | |
/// <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> | |
/// <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> | |
/// <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> | |
/// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> | |
/// <param name="chartWidth">Intended width for the chart (in pixels)</param> | |
/// <param name="chartHeight">Intended height for the chart (in pixels)</param> | |
/// <param name="debugMode">Whether to start the chart in debug mode</param> | |
/// <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> | |
/// <param name="allowTransparent">Whether allowTransparent chart (true / false)</param> | |
/// <returns></returns> | |
[Obsolete("")] | |
public static string RenderChartHTML(string chartSWF, string dataUrl, string dataStr, string chartId, string chartWidth, string chartHeight, bool debugMode, bool registerWithJS, bool allowTransparent) | |
{ | |
return RenderChartHTMLALL(chartSWF, dataUrl, dataStr, chartId, chartWidth, chartHeight, debugMode, registerWithJS, allowTransparent, "", "noScale", "EN"); | |
} | |
/// <summary> | |
/// Renders the HTML code for the chart. This | |
/// method does NOT embed the chart using JavaScript class. Instead, it uses | |
/// direct HTML embedding. So, if you see the charts on IE 6 (or above), you'll | |
/// see the "Click to activate..." message on the chart. | |
/// </summary> | |
/// <param name="chartSWF">SWF File Name (and Path) of the chart which you intend to plot</param> | |
/// <param name="dataUrl">If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)</param> | |
/// <param name="dataStr">If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)</param> | |
/// <param name="chartId">Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.</param> | |
/// <param name="chartWidth">Intended width for the chart (in pixels)</param> | |
/// <param name="chartHeight">Intended height for the chart (in pixels)</param> | |
/// <param name="debugMode">Whether to start the chart in debug mode</param> | |
/// <param name="registerWithJS">Whether to ask chart to register itself with JavaScript</param> | |
/// <param name="allowTransparent">Whether allowTransparent chart (true / false)</param> | |
/// <param name="bgColor">Back Ground Color</param> | |
/// <param name="scaleMode">Set Scale Mode</param> | |
/// <param name="language">Set SWF file Language</param> | |
/// <returns></returns> | |
[Obsolete("")] | |
public static string RenderChartHTML(string chartSWF, string dataUrl, string dataStr, string chartId, string chartWidth, string chartHeight, bool debugMode, bool registerWithJS, bool allowTransparent, string bgColor, string scaleMode, string language) | |
{ | |
return RenderChartHTMLALL(chartSWF, dataUrl, dataStr, chartId, chartWidth, chartHeight, debugMode, registerWithJS, allowTransparent, bgColor, scaleMode, language); | |
} | |
/// <summary> | |
/// encodes the dataURL before it's served to FusionCharts | |
/// If you have parameters in your dataURL, you'll necessarily need to encode it | |
/// </summary> | |
/// <param name="dataUrl">dataURL to be fed to chart</param> | |
/// <param name="noCacheStr">Whether to add aditional string to URL to disable caching of data</param> | |
/// <returns>Encoded dataURL, ready to be consumed by FusionCharts</returns> | |
[Obsolete("")] | |
public static string EncodeDataURL(string dataUrl, bool noCacheStr) | |
{ | |
string result = dataUrl; | |
if (noCacheStr) | |
{ | |
result += (dataUrl.IndexOf("?") != -1) ? "&" : "?"; | |
//Replace : in time with _, as FusionCharts cannot handle : in URLs | |
result += "FCCurrTime=" + DateTime.Now.ToString().Replace(":", "_"); | |
} | |
return System.Web.HttpUtility.UrlEncode(result); | |
} | |
/// <summary> | |
/// Enables Print Manager for Mozilla browsers | |
/// This function returns a small JavaScript snippet which can be added to ClientScript's RegisterClientScriptBlock method | |
/// </summary> | |
/// <example>ClientScript.RegisterClientScriptBlock(Page.GetType(), "", FusionCharts.enableFCPrintManager());</example> | |
/// <returns>String with the JavaScript code</returns> | |
[Obsolete("")] | |
public static string EnablePrintManager() | |
{ | |
string strHTML = "<script type=\"text/javascript\"><!--\n if(FusionCharts && FusionCharts.printManager) FusionCharts.printManager.enabled(true);\n// --></script>"; | |
return (strHTML); | |
} | |
private static void __INIT() | |
{ | |
if (__CONFIG__Initialized == false) | |
{ | |
__fc__initialize__(); | |
__fc__initstatic__(); | |
__CONFIG__Initialized = true; | |
} | |
} | |
/// <summary> | |
/// Sets the dataformat to be provided to charts (json/xml) | |
/// </summary> | |
/// <param name="format">Data format. Default is 'xml'. Other format is 'json'</param> | |
[Obsolete("")] | |
public static void SetDataFormat(string format) | |
{ | |
__INIT(); | |
if (format.Trim().Length == 0) | |
{ | |
format = "xml"; | |
} | |
// Stores the dataformat in global configuration store | |
SetConfiguration("dataFormat", format); | |
} | |
/// <summary> | |
/// Sets renderer type (flash/javascript) | |
/// </summary> | |
/// <param name="renderer"> Name of the renderer. Default is 'flash'. Other possibility is 'javascript'</param> | |
[Obsolete("")] | |
public static void SetRenderer(string renderer) | |
{ | |
__INIT(); | |
if (renderer.Trim().Length == 0) | |
{ | |
renderer = "flash"; | |
} | |
// stores the renderer name in global configuration store | |
SetConfiguration("renderer", renderer); | |
} | |
/// <summary> | |
/// Explicitely sets window mode (window[detault]/transpatent/opaque) | |
/// </summary> | |
/// <param name="mode">Name of the mode. Default is 'window'. Other possibilities are 'transparent'/'opaque'</param> | |
[Obsolete("")] | |
public static void SetWindowMode(string mode) | |
{ | |
__INIT(); | |
SetConfiguration("wMode", mode); | |
} | |
/// <summary> | |
/// FC_SetConfiguration sets various configurations of FusionCharts | |
/// It takes configuration names as first parameter and its value a second parameter | |
/// There are config groups which can contain common configuration names. All config names in all groups gets set with this value | |
/// unless group is specified explicitly | |
/// </summary> | |
/// <param name="setting">Name of configuration</param> | |
/// <param name="value">Value of configuration</param> | |
[Obsolete("")] | |
public static void SetConfiguration(string setting, object value) | |
{ | |
foreach (DictionaryEntry de in __CONFIG__) | |
{ | |
if (((Hashtable)__CONFIG__[de.Key]).ContainsKey(setting)) | |
{ | |
((Hashtable)__CONFIG__[de.Key])[setting] = value; | |
} | |
} | |
} | |
/// <summary> | |
/// FC_SetConfiguration sets various configurations of FusionCharts | |
/// It takes configuration names as first parameter and its value a second parameter | |
/// There are config groups which can contain common configuration names. All config names in all groups gets set with this value | |
/// unless group is specified explicitly | |
/// </summary> | |
/// <param name="setting">Name of configuration</param> | |
/// <param name="value">Value of configuration</param> | |
private static void SetConfiguration(ref Hashtable __TEMPHASH__, string setting, object value) | |
{ | |
foreach (DictionaryEntry de in __TEMPHASH__) | |
{ | |
if (((Hashtable)__TEMPHASH__[de.Key]).ContainsKey(setting)) | |
{ | |
((Hashtable)__TEMPHASH__[de.Key])[setting] = value; | |
} | |
} | |
} | |
#region Helper Private Methods | |
private static string GetHTTP() | |
{ | |
//Checks for protocol type. | |
// string isHTTPS = HttpContext.Current.Request.ServerVariables["HTTPS"]; | |
//Checks browser type. | |
// bool isMSIE = HttpContext.Current.Request.ServerVariables["HTTP_USER_AGENT"].Contains("MSIE"); | |
//Protocol initially sets to http. | |
// string sHTTP = "http"; | |
// if (isHTTPS.ToLower() == "on") | |
// { | |
// sHTTP = "https"; | |
// } | |
// return sHTTP; | |
return " "; | |
} | |
/// <summary> | |
/// Transform the meaning of boolean value in integer value | |
/// </summary> | |
/// <param name="value">true/false value to be transformed</param> | |
/// <returns>1 if the value is true, 0 if the value is false</returns> | |
private static int boolToNum(bool value) | |
{ | |
return value ? 1 : 0; | |
} | |
private static void SetCONSTANTConfiguration(string setting, object value) | |
{ | |
((Hashtable)__CONFIG__["constants"])[setting] = value; | |
} | |
private static string GetConfiguration(string setting) | |
{ | |
foreach (DictionaryEntry de in __CONFIG__) | |
{ | |
if (((Hashtable)__CONFIG__[de.Key]).ContainsKey(setting)) | |
{ | |
return ((Hashtable)__CONFIG__[de.Key])[setting].ToString(); | |
} | |
} | |
return null; | |
} | |
private static string GetConfiguration(ref Hashtable __TEMPHASH__, string setting) | |
{ | |
foreach (DictionaryEntry de in __TEMPHASH__) | |
{ | |
if (((Hashtable)__TEMPHASH__[de.Key]).ContainsKey(setting)) | |
{ | |
return ((Hashtable)__TEMPHASH__[de.Key])[setting].ToString(); | |
} | |
} | |
return null; | |
} | |
private static Hashtable GetConfigurationGroup(string setting) | |
{ | |
if (__CONFIG__.ContainsKey(setting)) | |
{ | |
return (Hashtable)__CONFIG__[setting]; | |
} | |
return null; | |
} | |
private static Hashtable GetConfigurationGroup(ref Hashtable __TEMPHASH__, string setting) | |
{ | |
if (__TEMPHASH__.ContainsKey(setting)) | |
{ | |
return (Hashtable)__TEMPHASH__[setting]; | |
} | |
return null; | |
} | |
private static string FC_Transform(Hashtable arr, string tFormat, bool ignoreBlankValues) | |
{ | |
string converted = ""; | |
string Key = "", Value = ""; | |
foreach (DictionaryEntry ds in arr) | |
{ | |
if (ignoreBlankValues == true && ds.Value.ToString().Trim() == "") continue; | |
Key = ds.Key.ToString(); | |
Value = ds.Value.ToString(); | |
if (Key.ToLower().Equals("codebase")) | |
{ | |
Value = Value.Replace("http", GetHTTP()); | |
} | |
string TFApplied = tFormat.Replace("{key}", Key); | |
TFApplied = TFApplied.Replace("{value}", Value); | |
converted = converted + TFApplied; | |
} | |
return converted; | |
} | |
private static string fc_encodeJSON(Hashtable json, bool enclosed) | |
{ | |
string strjson = ""; | |
if (enclosed == true) strjson = "{"; | |
strjson = strjson + FC_Transform(json, "\"{key}\" : \"{value}\", ", true); | |
strjson = strjson.Trim(); | |
if (strjson.EndsWith(",")) strjson = strjson.Remove(strjson.Length - 1); | |
return strjson; | |
} | |
private static void __fc__initstatic__() | |
{ | |
Hashtable constant = new Hashtable(StringComparer.InvariantCultureIgnoreCase); | |
constant["scriptbaseUri"] = ""; | |
__CONFIG__["constants"] = constant; | |
constant = null; | |
} | |
private static void __fc__initialize__() | |
{ | |
__CONFIG__ = null; | |
__CONFIG__ = new Hashtable(StringComparer.InvariantCultureIgnoreCase); | |
Hashtable param = new Hashtable(StringComparer.InvariantCultureIgnoreCase); | |
param["swfUrl"] = ""; | |
param["width"] = ""; | |
param["height"] = ""; | |
param["renderAt"] = ""; | |
param["renderer"] = ""; | |
param["dataSource"] = ""; | |
param["dataFormat"] = ""; | |
param["id"] = ""; | |
param["lang"] = ""; | |
param["debugMode"] = ""; | |
param["registerWithJS"] = ""; | |
param["detectFlashVersion"] = ""; | |
param["autoInstallRedirect"] = ""; | |
param["wMode"] = ""; | |
param["scaleMode"] = ""; | |
param["menu"] = ""; | |
param["bgColor"] = ""; | |
param["quality"] = ""; | |
__CONFIG__["params"] = param; | |
Hashtable fvar = new Hashtable(StringComparer.InvariantCultureIgnoreCase); | |
fvar["dataURL"] = ""; | |
fvar["dataXML"] = ""; | |
fvar["chartWidth"] = ""; | |
fvar["chartHeight"] = ""; | |
fvar["DOMId"] = ""; | |
fvar["registerWithJS"] = "1"; | |
fvar["debugMode"] = "0"; | |
fvar["scaleMode"] = "noScale"; | |
fvar["lang"] = "EN"; | |
fvar["animation"] = "undefined"; | |
__CONFIG__["fvars"] = fvar; | |
Hashtable oBject = new Hashtable(StringComparer.InvariantCultureIgnoreCase); | |
oBject["height"] = ""; | |
oBject["width"] = ""; | |
oBject["id"] = ""; | |
oBject["lang"] = "EN"; | |
oBject["class"] = "FusionCharts"; | |
oBject["data"] = ""; | |
__CONFIG__["object"] = oBject; | |
Hashtable objparam = new Hashtable(StringComparer.InvariantCultureIgnoreCase); | |
objparam["movie"] = "noScale"; | |
objparam["scaleMode"] = "noScale"; | |
objparam["scale"] = ""; | |
objparam["wMode"] = ""; | |
objparam["allowScriptAccess"] = "always"; | |
objparam["quality"] = "best"; | |
objparam["FlashVars"] = ""; | |
objparam["bgColor"] = ""; | |
objparam["swLiveConnect"] = ""; | |
objparam["base"] = ""; | |
objparam["align"] = ""; | |
objparam["salign"] = ""; | |
objparam["menu"] = ""; | |
__CONFIG__["objparams"] = objparam; | |
Hashtable embeds = new Hashtable(StringComparer.InvariantCultureIgnoreCase); | |
embeds["height"] = ""; | |
embeds["width"] = ""; | |
embeds["id"] = ""; | |
embeds["src"] = ""; | |
embeds["flashvars"] = ""; | |
embeds["name"] = ""; | |
embeds["scaleMode"] = "noScale"; | |
embeds["wMode"] = ""; | |
embeds["bgColor"] = ""; | |
embeds["quality"] = "best"; | |
embeds["allowScriptAccess"] = "always"; | |
embeds["type"] = "application/x-shockwave-flash"; | |
embeds["pluginspage"] = "http://www.macromedia.com/go/getflashplayer"; | |
embeds["swLiveConnect"] = ""; | |
embeds["base"] = ""; | |
embeds["align"] = ""; | |
embeds["salign"] = ""; | |
embeds["scale"] = ""; | |
embeds["menu"] = ""; | |
__CONFIG__["embed"] = embeds; | |
param = null; | |
fvar = null; | |
oBject = null; | |
objparam = null; | |
embeds = null; | |
} | |
#endregion | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment