示例#1
0
        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);
        }