/// <summary> /// Notifier for the ToolWindow to inform backtest has finished /// </summary> /// <param name="projectId">Target project id</param> /// <param name="backtestStatus">Backtest current status</param> public void BacktestFinished(int projectId, Api.Backtest backtestStatus) { var window = _package.FindToolWindow(typeof(ToolWindow1), 0, false); // Only notify if the toolWindow was open if (window != null) { var windowController = (ToolWindow1Control)window.Content; windowController.BacktestFinished(projectId, backtestStatus); } }
/// <summary> /// Updates backtest Progress in the backtest data grid (UI) /// </summary> /// <param name="projectId">Target project id</param> /// <param name="backtestStatus">Backtest current status</param> public void BacktestStatusUpdated(int projectId, Api.Backtest backtestStatus) { var selectedItem = projectNameBox.SelectedItem as ProjectNameDialog.ComboboxItem; // Verify the backtest is from the selected project if (selectedItem?.ProjectId == projectId) { foreach (DataGridItem item in _dataGridCollection) { if (item.BacktestId == backtestStatus.BacktestId) { item.Progress = backtestStatus.Progress; break; } } } }
/// <summary> /// Creates new backtest, row, in the backtest data grid (UI) /// </summary> /// <param name="projectId">Target project id</param> /// <param name="backtestStatus">Backtest current status</param> public void BacktestCreated(int projectId, Api.Backtest backtestStatus) { var selectedItem = projectNameBox.SelectedItem as ProjectNameDialog.ComboboxItem; // Verify the backtest is from the selected project if (selectedItem?.ProjectId == projectId) { _dataGridCollection.Insert(0, new DataGridItem { Name = backtestStatus.Name, Progress = 0, ProjectId = projectId, BacktestId = backtestStatus.BacktestId, Date = backtestStatus.Created, Status = DataGridItem.BacktestInProgress }); } }
/// <summary> /// Updates backtest Status and Progress in the backtest data grid (UI) /// </summary> /// <param name="projectId">Target project id</param> /// <param name="backtestStatus">Backtest current status</param> public void BacktestFinished(int projectId, Api.Backtest backtestStatus) { var selectedItem = projectNameBox.SelectedItem as ProjectNameDialog.ComboboxItem; // Verify the backtest is from the selected project if (selectedItem?.ProjectId == projectId) { foreach (DataGridItem item in _dataGridCollection) { if (item.BacktestId == backtestStatus.BacktestId) { var success = string.IsNullOrEmpty(backtestStatus.Error) && string.IsNullOrEmpty(backtestStatus.StackTrace); item.Status = success ? DataGridItem.BacktestSucceeded : DataGridItem.BacktestFailed; item.Progress = backtestStatus.Progress; break; } } } }
private void SendForBacktestingCallback(object sender, EventArgs e) { ExecuteOnProject(sender, (selectedProjectId, selectedProjectName, files) => { var fileNames = files.Select(f => f.FileName).ToList(); VsUtils.DisplayInStatusBar(this.ServiceProvider, "Uploading files to server ..."); UploadFilesToServer(selectedProjectId, files); VsUtils.DisplayInStatusBar(this.ServiceProvider, "Compiling project ..."); var compileStatus = CompileProjectOnServer(selectedProjectId); if (compileStatus.State == Api.CompileState.BuildError) { VsUtils.DisplayInStatusBar(this.ServiceProvider, "Compile error."); VsUtils.ShowMessageBox(this.ServiceProvider, "Compile Error", "Error when compiling project."); return; } VsUtils.DisplayInStatusBar(this.ServiceProvider, "Backtesting project ..."); Api.Backtest backtest = BacktestProjectOnServer(selectedProjectId, compileStatus.CompileId); // Errors are not being transfered in response, so client can't tell if the backtest failed or not. // This response error handling code will not work but should. /* if (backtest.Errors.Count != 0) { * VsUtils.DisplayInStatusBar(this.ServiceProvider, "Backtest error."); * showMessageBox("Backtest Error", "Error when backtesting project."); * return; * }*/ VsUtils.DisplayInStatusBar(this.ServiceProvider, "Backtest complete."); var projectUrl = string.Format( CultureInfo.CurrentCulture, "https://www.quantconnect.com/terminal/#open/{0}", selectedProjectId ); Process.Start(projectUrl); }); }