public ActionResult Details(string webRoute) { const string sql = @"SELECT [Id], [Started], [DurationMilliseconds], [DurationMillisecondsInSql], [HasSqlTimings], [HasDuplicateSqlTimings] FROM [MiniProfilers] WHERE [MiniProfilers].[Name] = @WebRoute ORDER BY [MiniProfilers].[Started] DESC;"; IEnumerable <dynamic> data; using (DbConnection conn = GetOpenConnection()) { data = conn.Query(sql, new { WebRoute = webRoute }); } var dt = new DataTable(); dt.Columns.Add("Id", typeof(String)).Caption = "Id"; dt.Columns.Add("Started", typeof(String)).Caption = "Started"; dt.Columns.Add("DurationMilliseconds", typeof(Double)).Caption = "Duration (ms)"; dt.Columns.Add("DurationMillisecondsInSql", typeof(Double)).Caption = "Duration - Sql (ms)"; dt.Columns.Add("HasSqlTimings", typeof(bool)).Caption = "Has Sql?"; dt.Columns.Add("HasDuplicateSqlTimings", typeof(bool)).Caption = "Has Duplicate Sql?"; foreach (var row in data) { dt.Rows.Add(new object[] { row.Id, row.Started.ToString(), row.DurationMilliseconds, row.DurationMillisecondsInSql, row.HasSqlTimings, row.HasDuplicateSqlTimings }); } var googleDt = new Bortosky.Google.Visualization.GoogleDataTable(dt); return(Content(googleDt.GetJson(), "application/json")); }
public ActionResult Details(string webRoute) { const string sql = @"SELECT [Id], [Started], [DurationMilliseconds], [DurationMillisecondsInSql], [HasSqlTimings], [HasDuplicateSqlTimings] FROM [MiniProfilers] WHERE [MiniProfilers].[Name] = @WebRoute ORDER BY [MiniProfilers].[Started] DESC;"; IEnumerable<dynamic> data; using (DbConnection conn = GetOpenConnection()) { data = conn.Query(sql, new { WebRoute = webRoute }); } var dt = new DataTable(); dt.Columns.Add("Id", typeof(String)).Caption = "Id"; dt.Columns.Add("Started", typeof(String)).Caption = "Started"; dt.Columns.Add("DurationMilliseconds", typeof(Double)).Caption = "Duration (ms)"; dt.Columns.Add("DurationMillisecondsInSql", typeof(Double)).Caption = "Duration - Sql (ms)"; dt.Columns.Add("HasSqlTimings", typeof(bool)).Caption = "Has Sql?"; dt.Columns.Add("HasDuplicateSqlTimings", typeof(bool)).Caption = "Has Duplicate Sql?"; foreach (var row in data) { dt.Rows.Add(new object[] { row.Id, row.Started.ToString(), row.DurationMilliseconds, row.DurationMillisecondsInSql, row.HasSqlTimings, row.HasDuplicateSqlTimings }); } var googleDt = new Bortosky.Google.Visualization.GoogleDataTable(dt); return Content(googleDt.GetJson(), "application/json"); }
public ViewControllerData VisualiseSchema(IList <FilterCriteria> filter, DataSetSchema schema, int pageNumber, int pageSize, string chartType, string xAxis, string yAxis, string yAxisAggregate) { if (String.IsNullOrEmpty(xAxis)) { return(new ViewControllerData()); } var criteria = _dataSetDetailSqlRepo.ConvertToVisualSchemaCriteria(_repository.DbConnectionString, filter, schema, chartType, xAxis, yAxis, yAxisAggregate, pageNumber, pageSize); var data = _dataSetDetailSqlRepo.ExecuteQueryVisualiseSchema(criteria); int count = Convert.ToInt32(data.Tables[1].Rows[0].ItemArray[0]); var totalPages = (count / pageSize); if ((count % pageSize) > 0) { totalPages++; } //Get Google Visualisation Json DataTable var dataTable = data.Tables[0]; var dataGraph = new Bortosky.Google.Visualization.GoogleDataTable(dataTable); return(new ViewControllerData { DataGraph = dataGraph.GetJson(), CurrentPage = pageNumber, TotalPages = totalPages == 0 ? 1 : totalPages, HasNegativeValues = (Convert.ToInt32(data.Tables[2].Rows[0].ItemArray[0]) > 0) }); }
/// /// <param name="client"></param> /// <param name="stationId"></param> /// <param name="year"></param> /// <param name="month"></param> /// <param name="day"></param> /// <param name="days"></param> /// <param name="stream"></param> private void SerializeTemperatureData(TemperatureServiceReference.TemperatureServiceSoapClient client, string stationId, int year, int month, int day, int days, Stream stream) { TemperatureDataSet ds = new TemperatureDataSet(); TemperatureServiceReference.GetTemperaturesByDayResult res = client.GetTemperaturesByDay(stationId, year, month, day, days); foreach (TemperatureServiceReference.DateRangeType dt in res) ds.TemperatureTable.AddTemperatureTableRow(DateTime.Parse(dt.RangeDate), dt.Range.Maximum, dt.Range.Minimum); Bortosky.Google.Visualization.GoogleDataTable g = new Bortosky.Google.Visualization.GoogleDataTable(ds.TemperatureTable); g.SetGoogleDateType("TempDate", Bortosky.Google.Visualization.GoogleDateType.Date); g.WriteJson(stream); }
/// <summary> /// Trying to use this option from here out! /// </summary> /// <param name="PageControl"></param> /// <param name="dt"></param> /// <param name="CHARTTYPE"></param> internal void RegisterGVIScriptsEx(BaseWebControl PageControl, DataTable dt, GOOGLECHART CHARTTYPE) { string JAVASCRIPT = jscode3; //if (CHARTTYPE == GOOGLECHART.CHAP_TIMELINE) // JAVASCRIPT = jschap; string options,formatter = string.Empty; string imagereplace = string.Empty; List<string> events = RenderGVIEvents(PageControl); if (PageControl is IGoogleTableFormatterControl) formatter = RenderFormatter((IGoogleTableFormatterControl)PageControl); if (this.BindingDataTable != null) { ((EventHandler)this.BindingDataTable)(this, EventArgs.Empty); } JAVASCRIPT = JAVASCRIPT.Replace("{formatter}", formatter); if (!string.IsNullOrEmpty(PageControl.QueryString) && PageControl.QueryString.StartsWith("~")) { PageControl.QueryString = PageControl.Page.ResolveUrl(PageControl.QueryString); JAVASCRIPT = JAVASCRIPT.Replace("{QueryString}", PageControl.QueryString); } else { JAVASCRIPT = JAVASCRIPT.Replace("{QueryString}", PageControl.QueryString); } imagereplace = RenderSetImage(PageControl); JAVASCRIPT = JAVASCRIPT.Replace("{SETIMAGEFOR}", imagereplace); // Check if manual override for Chart option is in effect if ((PageControl.GviOptionsOverride != null) && (!string.IsNullOrEmpty(PageControl.GviOptionsOverride.ToString()))) options = PageControl.GviOptionsOverride.ToString(); else options = RenderGVIConfigOptions(PageControl); // the name of the control being bound and over-written string ctlid = PageControl.ClientID; if (!string.IsNullOrEmpty(PageControl.OverrideElementId)) ctlid = PageControl.OverrideElementId; // interpolate the options into the canned Javascript string optionsJscode = string.Format(JAVASCRIPT, ctlid, options, dic[CHARTTYPE].FirstOrDefault(), dic[CHARTTYPE].LastOrDefault(), string.Join("\n",events.ToArray()), dic[CHARTTYPE].FirstOrDefault().UpperCaseFirst() ); // add version information onto each ChartJavascript string build = string.Format("v{0}.{1}.{2}.{3}", System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.Major, System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.MajorRevision, System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.Minor, System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.MinorRevision); optionsJscode = optionsJscode.Replace("{ver}", build); // load the datatable... if (dt == null) throw new Exception(string.Format("Unable to create visualization '{0}' with an empty DataTable ", this.GetType().FullName)); Bortosky.Google.Visualization.GoogleDataTable gdt = new Bortosky.Google.Visualization.GoogleDataTable(dt); optionsJscode = optionsJscode.Replace("__DATATABLE__", PageControl.PostProcessData( gdt.GetJson())); /* * This allows you to manipulate the data * var formatter = new google.visualization.NumberFormat({prefix: '$'}); * formatter.format(data, 1); // Apply formatter to second column */ if (!string.IsNullOrEmpty(PageControl.GviFormatterHook)) optionsJscode = optionsJscode.Replace("/*FORMATTERS*/", string.Format("{0}(chart, data);", PageControl.GviFormatterHook)); PageControl.Page.ClientScript.RegisterStartupScript(this.GetType(), "function_" + ctlid, optionsJscode, true); //RenderSetImage(PageControl); //string datatableoutput = TransformDataTable.ToGoogleDataTable(dt); //PageControl.Page.ClientScript.RegisterStartupScript(this.GetType(), "vis_" + ctlid, string.Format("var data_{0} = function() {{ {1} }}", ctlid, datatableoutput), true); }
/// <summary> /// Trying to use this option from here out! /// </summary> /// <param name="PageControl"></param> /// <param name="dt"></param> /// <param name="CHARTTYPE"></param> internal void RegisterGVIScriptsEx(BaseWebControl PageControl, DataTable dt, GOOGLECHART CHARTTYPE) { string JAVASCRIPT = jscode3; //if (CHARTTYPE == GOOGLECHART.CHAP_TIMELINE) // JAVASCRIPT = jschap; string options, formatter = string.Empty; string imagereplace = string.Empty; List <string> events = RenderGVIEvents(PageControl); if (PageControl is IGoogleTableFormatterControl) { formatter = RenderFormatter((IGoogleTableFormatterControl)PageControl); } if (this.BindingDataTable != null) { ((EventHandler)this.BindingDataTable)(this, EventArgs.Empty); } JAVASCRIPT = JAVASCRIPT.Replace("{formatter}", formatter); if (!string.IsNullOrEmpty(PageControl.QueryString) && PageControl.QueryString.StartsWith("~")) { PageControl.QueryString = PageControl.Page.ResolveUrl(PageControl.QueryString); JAVASCRIPT = JAVASCRIPT.Replace("{QueryString}", PageControl.QueryString); } else { JAVASCRIPT = JAVASCRIPT.Replace("{QueryString}", PageControl.QueryString); } imagereplace = RenderSetImage(PageControl); JAVASCRIPT = JAVASCRIPT.Replace("{SETIMAGEFOR}", imagereplace); // Check if manual override for Chart option is in effect if ((PageControl.GviOptionsOverride != null) && (!string.IsNullOrEmpty(PageControl.GviOptionsOverride.ToString()))) { options = PageControl.GviOptionsOverride.ToString(); } else { options = RenderGVIConfigOptions(PageControl); } // the name of the control being bound and over-written string ctlid = PageControl.ClientID; if (!string.IsNullOrEmpty(PageControl.OverrideElementId)) { ctlid = PageControl.OverrideElementId; } // interpolate the options into the canned Javascript string optionsJscode = string.Format(JAVASCRIPT, ctlid, options, dic[CHARTTYPE].FirstOrDefault(), dic[CHARTTYPE].LastOrDefault(), string.Join("\n", events.ToArray()), dic[CHARTTYPE].FirstOrDefault().UpperCaseFirst() ); // add version information onto each ChartJavascript string build = string.Format("v{0}.{1}.{2}.{3}", System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.Major, System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.MajorRevision, System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.Minor, System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.MinorRevision); optionsJscode = optionsJscode.Replace("{ver}", build); // load the datatable... if (dt == null) { throw new Exception(string.Format("Unable to create visualization '{0}' with an empty DataTable ", this.GetType().FullName)); } Bortosky.Google.Visualization.GoogleDataTable gdt = new Bortosky.Google.Visualization.GoogleDataTable(dt); optionsJscode = optionsJscode.Replace("__DATATABLE__", PageControl.PostProcessData(gdt.GetJson())); /* * This allows you to manipulate the data * var formatter = new google.visualization.NumberFormat({prefix: '$'}); * formatter.format(data, 1); // Apply formatter to second column */ if (!string.IsNullOrEmpty(PageControl.GviFormatterHook)) { optionsJscode = optionsJscode.Replace("/*FORMATTERS*/", string.Format("{0}(chart, data);", PageControl.GviFormatterHook)); } PageControl.Page.ClientScript.RegisterStartupScript(this.GetType(), "function_" + ctlid, optionsJscode, true); //RenderSetImage(PageControl); //string datatableoutput = TransformDataTable.ToGoogleDataTable(dt); //PageControl.Page.ClientScript.RegisterStartupScript(this.GetType(), "vis_" + ctlid, string.Format("var data_{0} = function() {{ {1} }}", ctlid, datatableoutput), true); }