Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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;
        }
Пример #3
0
/// <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;
        }
Пример #4
0
        /// <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);
        }
Пример #5
0
        /// <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
            }
        }