/// <summary> /// Tentatively add a new view of the specified type to the current page /// </summary> /// <param name="chartType"></param> /// <returns></returns> ResultsViewProps AddTentativeNewView(ResultsViewType viewType) { int intVal, max; DialogResult = DialogResult.OK; // close the selection menu Hide(); SessionManager.ActivateShell(); ResultsViewProps view = AddViewHelper.AddTentativeNewView(viewType, Qm.Query, Qrc); return(view); }
/// <summary> /// Add a new results page with a view of the specified type /// </summary> /// <param name="query"></param> /// <param name="viewType"></param> /// <returns></returns> public static void AddNewPageAndView( Query query, ResultsViewType viewType, string viewSubtype, out ResultsPage page, out ResultsViewProps view) { page = AddNewPage(query); view = ResultsViewProps.NewResultsView(query, page, viewType, viewSubtype); // create the view & add to page return; }
/// <summary> /// SetupQueryPagesAndViews /// </summary> /// <param name="query"></param> /// <returns></returns> public void SetupQueryPagesAndViews( Query query, ResultsViewType tableViewType) { QueryTable qt; ResultsPage page; ResultsViewProps view; ResultsViewType viewType; string name, title; bool createdTableView = false; int pi; List <ResultsPage> oldPages = query.ResultsPages.Pages; // existing pages List <ResultsPage> newPages = query.ResultsPages.Pages = new List <ResultsPage>(); // clear ResultsPages new pages built here // Build/Copy views on data retrieved by the Mobius QE if (query.RetrievesMobiusData) // if query retrieves data from Mobius then replace the existing table view with the specified type { AddNewPageAndView(query, tableViewType, null, out page, out view); // basic table view goes first page.Name = view.Name = "TableView"; page.Title = view.Title = "Table View"; if (tableViewType == ResultsViewType.Table) // if regular grid table views add other views on Mobius QE data { for (int opi = 1; opi < oldPages.Count; opi++) { ResultsPage op = oldPages[opi]; //if (op.Views.Count > 0 && op.Views[0].IsSpotfireUrlDrivenVisualization) continue; // Spotfire link view added later, not here newPages.Add(op); } } } return; }
/// <summary> /// Run Query & return any error message /// </summary> /// <param name="query"></param> /// <param name="rf"></param> /// <param name="browseExistingResults">If true browse existing results</param> /// <returns>Command command or an error message</command></returns> public static string RunQuery2( Query query, ResultsFormat rf, bool browseExistingResults = false) { QueryManager qm = null; DataTableMx dt; QueryTable qt = null; QueryColumn qc; MetaTable mt; MetaColumn mc; QueryExec qex; ResultsFormatter rfmtr; Query modifiedQuery = null; DialogResult dr; bool success; int ti, ci, count; if (query == null) { throw new Exception("Null Query"); } qm = query.QueryManager as QueryManager; if (qm == null || !qm.ContainsRenderedResults()) { browseExistingResults = false; } if (ToolHelper.IsOldToolQuery(query) && !browseExistingResults) { return(ToolHelper.RunOldToolQuery(query)); } //if (query.FirstView == null) //{ ResultsViewType tableViewType = ResultsViewType.Table; if (rf.OutputDestination == OutputDest.Html) { tableViewType = ResultsViewType.HtmlTable; } //} //CheckForConnectionLeaks(); // do routine check for connection leaks (disabled for now) // Build/update the QueryManager as needed (including the QueryExec) if running the query rather than just browsing existing results if (!browseExistingResults) // initialize QueryManager { query.SetupQueryPagesAndViews(tableViewType); // adjust views as necessary to match query qm = BuildQueryManager(query, rf); } // Attempt to display already retrieved data in memory or in cached results file else { if (qm != null) { if (qm.QueryExec == null) // create QueryExec if not defined { qex = new QueryExec(qm); } if (qm.ResultsFormatter == null) // create ResultsFormatter if not defined { rfmtr = new ResultsFormatter(qm); } } else { qm = BuildQueryManager(query, rf); } if (Lex.IsDefined(query.ResultsDataTableFileName)) // get data from file { DataTableManager.LoadDataTableFromFile(query); } else // should have data in DataTable already { DataTableManager.ValidateExistingDataTable(query); } if (qm.DataTableManager != null && qm.QueryExec != null) { qm.QueryExec.ResultsKeys = qm.DataTableManager.ResultsKeys; // have data in memory already } } if (rf.OutputDestination == OutputDest.WinForms && rf.SessionOutputFormContext) { // save qm and query if this is a runquery from the main window QueriesControl.Instance.CurrentBrowseQuery = query; // save ref to the query being browsed } if (rf.SessionOutputFormContext) // if not a popup then update main status bar { qm.StatusBarManager = SessionManager.Instance.StatusBarManager; } LastQEx = qm.QueryExec; // keep track of last QueryExec SetupRunQuery: bool saveHitList = (rf.SessionOutputFormContext && !browseExistingResults); // if popup or browsing existing results don't change hitlist qex = qm.QueryExec; string response = qex.RunQuery3(rf, saveHitList, browseExistingResults); // run the query if (qex.ResultsKeys != null && qex.ResultsKeys.Count > 0 && // save in history list if normal query that resulted in hits !query.Preview && !MqlUtil.SingleStepExecution(query) && !browseExistingResults && rf.OutputDestination == OutputDest.WinForms) { CidList keyList = new CidList(qex.ResultsKeys); AddToHistoryList(query, keyList); // use original query } if (response != "" && !response.ToLower().StartsWith("command")) { return(response); } else if (Lex.EndsWith(response, "refetch")) // data to be retrieved has changed, redo fetch part of query { if (!query.Preview) // use current keys if not preview { query.ResultKeys = qex.QueryEngine.GetKeys(); } goto SetupRunQuery; } //else if (response == "") response = "Command EditQuery"; //if (rf.OutputDestination == OutputDest.Grid) //{ // QbUtil.SetMode(QueryMode.Build); // back to build mode // QbUtil.RenderQuery(QbUtil.Qt); //} return(response); }
/// <summary> /// Tentatively add a new view of the specified type to the current page /// </summary> /// <param name="viewType"></param> /// <param name="query"></param> /// <param name="qrc"></param> /// <returns></returns> private static ResultsViewProps AddTentativeNewView( ResultsViewModel rvm) { ResultsPage rp; DialogResult dr; int intVal, max; ResultsViewType viewType = rvm.ViewType; string viewSubtype = rvm.ViewSubtype; string viewTitle = rvm.Title; Query query = rvm.Query; QueryResultsControl qrc = rvm.QueryResultsControl as QueryResultsControl; LastAddedViewType = viewType; int pi = qrc.CurrentPageIndex; if (pi < 0 || // add a page if no pages query.Root.ResultsPages.Pages[pi].Views.Count > 0) // or (for now) already a view on the current page { rp = ResultsPages.AddNewPage(query); pi = query.Root.ResultsPages.Pages.Count - 1; qrc.AddResultsPageTabPage(rp); } ResultsPage page = query.ResultsPages[pi]; ResultsViewProps view = page.AddNewView(rvm); if (view == null) { throw new Exception("Failed to add new view: " + viewType); } //view.CustomViewTypeImageName = rvm.CustomViewTypeImageName; // (should already be set) if (Lex.IsDefined(viewTitle) && Lex.Ne(viewTitle, viewType.ToString())) { view.Title = page.AddSequentialSuffixToTitle(viewTitle, query.ResultsPages); // set custom title (sequentially-numbered) if defined } qrc.SetCurrentPageTabTitleAndImage(); dr = view.ShowInitialViewSetupDialog(); if (dr != DialogResult.OK) { RemoveTentativeView(view, qrc); return(null); // not added } qrc.ConfigureResultsPage(page); // render the default view in the current page dr = view.ShowInitialViewPropertiesDialog(); if (dr == DialogResult.OK) { //view.ConfigureRenderingControl(); // be sure it's configured (not a good idea, adds overhead) qrc.SetCurrentPageTabTitleAndImage(); // update tab title & image accordingly return(view); } else // cancelled, remove view { RemoveTentativeView(view, qrc); return(null); // not added } }