/// <summary> /// Method called from the view. Generate a report from a set of selected configurations once /// all conditions are fulfilled. /// </summary> public void MakeReport() { Task.Run(() => { StartLongOperation(); // Execute the Query string batchFilename = LoadedBatch; LoadedBatch = "Running query"; List <TrackGroup> queryResultTracks = null; List <Report> queryReports = null; try { Query.Execute(LoggedExperiments, OnExperimentalUnitProcessed, out queryResultTracks, out queryReports); } catch (Exception ex) { string exception = ex.ToString(); } //Clone the query LogQueryViewModel clonedQuery = Serialiazer.Clone(Query); //Create and add to list the result of the query LogQueryResultViewModel result = new LogQueryResultViewModel(queryResultTracks, queryReports, clonedQuery); LogQueryResults.Add(result); //set this last result as selected SelectedLogQueryResult = LogQueryResults[LogQueryResults.Count - 1]; LoadedBatch = batchFilename; EndLongOperation(); }); }
/// <summary> /// Close a tab (report view) and remove it from the list of reports. /// </summary> /// <param name="result">The report to be removed</param> public void Close(LogQueryResultViewModel result) { LogQueryResults.Remove(result); if (LogQueryResults.Count > 0) { SelectedLogQueryResult = LogQueryResults[0]; } else { SelectedLogQueryResult = null; } }
/// <summary> /// Method called from the view. This clear every list and field. Should be called when /// we load a new experiment if one is already loaded or when we hit the delete button /// from the view. /// </summary> public void ClearReportViewer() { ExperimentalUnits.Clear(); LoggedExperiments.Clear(); LogQueryResults.Clear(); NotifyOfPropertyChange(() => VariablesLoaded); NotifyOfPropertyChange(() => ForksLoaded); Query = new LogQueryViewModel(); //Add the listening function to the LogQuery object with all the parameters Query.PropertyChanged += OnChildPropertyChanged; LogsLoaded = false; ForksLoaded = false; }
/// <summary> /// Loads a report previously saved from the Reports window /// </summary> /// <param name="reportFileName">File where the report was saved using SaveReports()</param> public void LoadReport(string reportFileName) { int numQueriesRead = Files.LoadReport(reportFileName, out string readBatchFilename, out BindableCollection <LogQueryResultViewModel> readQueries); if (numQueriesRead > 0) { ClearReportViewer(); LoadExperimentBatch(readBatchFilename); LoadedBatch = readBatchFilename; LogQueryResults.AddRange(readQueries); if (LogQueryResults.Count > 0) { SelectedLogQueryResult = LogQueryResults[0]; } } }