/// <summary> /// Runs the current query against the configured connection and database. /// </summary> public override async Task ExecuteRequestAsync() { if (InfluxDbClient == null) { throw new Exception("No InfluxDB client available."); } // Reset the results count resultsCount = 0; // Get the database and the query var query = EditorText.Trim(); bool isAggregate = query.ToLower().Contains("group by"); // Clear the current results tabControl.Controls.Clear(); // Start timing... stopWatch.Restart(); // Execute the query var results = await InfluxDbClient.QueryAsync(Database, query); // Stop timing... stopWatch.Stop(); // If there are results if (results != null && results.Count() > 0) { var tabCount = 0; var tabLabel = isAggregate ? "Group" : "Results"; foreach (var result in results) { // Create a new tab page to hold the query results control var tab = new TabPage(string.Format("{0} {1}", tabLabel, ++tabCount)); // Create a new query results control var queryResultsControl = new QueryResultsControl(); queryResultsControl.InfluxDbClient = InfluxDbClient; queryResultsControl.Database = Database; queryResultsControl.Dock = DockStyle.Fill; tab.Controls.Add(queryResultsControl); // Add the tab to the control tabControl.TabPages.Add(tab); // Render the results and increment the global total resultsCount += queryResultsControl.UpdateResults(result); } } // Show stat results of query resultsLabel.Text = string.Format("results: {0}, response time: {1:0} ms", resultsCount, stopWatch.Elapsed.TotalMilliseconds); }