Esempio n. 1
0
        public void PagingWorks()
        {
            CreateTable(database);

            var reader   = new DataStoreReader(database);
            var provider = new PagedDataProvider(reader, "Current", "Report",
                                                 null,
                                                 null,
                                                 null,
                                                 2);

            Assert.AreEqual(3, provider.ColumnCount);
            Assert.AreEqual("SimulationName", provider.GetCellContents(0, 0));
            Assert.AreEqual("Col1", provider.GetCellContents(1, 0));
            Assert.AreEqual("Col2", provider.GetCellContents(2, 0));
            Assert.AreEqual(9, provider.RowCount);
            Assert.AreEqual(2, provider.NumHeadingRows);
            Assert.AreEqual("g", provider.GetCellContents(1, 1));
            Assert.AreEqual("1", provider.GetCellContents(1, 2));
            Assert.AreEqual("2", provider.GetCellContents(1, 3));
            Assert.AreEqual("3", provider.GetCellContents(1, 4));
            Assert.AreEqual("4", provider.GetCellContents(1, 5));
            Assert.AreEqual("5", provider.GetCellContents(1, 6));
            Assert.AreEqual("6", provider.GetCellContents(1, 7));
            Assert.AreEqual("7", provider.GetCellContents(1, 8));
        }
Esempio n. 2
0
        /**
         * Treat edge cases (1, 2, before last, last) separately, and the rest generically
         */
        private void SetPageLinks(int pageIndex)
        {
            lnkPageA.Enabled = lnkPageB.Enabled = lnkPageC.Enabled = lnkPageD.Enabled = lnkPageE.Enabled = true;
            lnkPageA.Visible = true;
            lnkPageB.Visible = true;
            lnkPageC.Visible = (PagedDataProvider.GetRecordCount(DataSetId) > 2 * PageSize);
            lnkPageD.Visible = (PagedDataProvider.GetRecordCount(DataSetId) > 3 * PageSize);
            lnkPageE.Visible = (PagedDataProvider.GetRecordCount(DataSetId) > 4 * PageSize);
            int pageCount = GetPageCount(PagedDataProvider.GetRecordCount(DataSetId));

            //Edge cases: 1, 2, last one and before last one
            if (pageIndex == 1)
            {
                SetPageLinksForPage1();
            }
            else if (pageIndex == 2)
            {
                SetPageLinksForPage2();
            }
            else if (pageIndex == pageCount)
            {
                SetPageLinksForLastPage(pageCount);
            }
            else if (pageIndex == pageCount - 1)
            {
                SetPageLinksForPageBeforeLast(pageCount);
            }
            else //General case: center page selected
            {
                SetPageLinksForInnerPage(pageIndex);
            }
        }
Esempio n. 3
0
        /**
         * Read the page from the provider, set the sort mode, and update all of the pagination links
         * If page 1 is selected, don't show "First" and "Previous" links.
         * If last page selected, don't show "Next" and "Last" links.
         * If a page has no data, don't set a link to it.
         */
        public void SelectPage(int pageIndex)
        {
            _currentPageIndex = pageIndex;
            dgv.DataSource    = PagedDataProvider.GetPage(DataSetId, pageIndex, PageSize);
            foreach (DataGridViewColumn col in dgv.Columns)
            {
                col.SortMode = DefaultColumnSortMode;
            }
            SetPageDescription(GetPageDescription(pageIndex, PagedDataProvider.GetRecordCount(DataSetId)));
            int pageCount = GetPageCount(PagedDataProvider.GetRecordCount(DataSetId));

            if (PagedDataProvider.GetRecordCount(DataSetId) > PageSize)
            {
                lnkFirstPage.Visible    = (pageIndex != 1);
                lnkPreviousPage.Visible = (pageIndex != 1);
                SetPageLinks(pageIndex);
                lnkNextPage.Visible = (pageIndex != pageCount);
                lnkLastPage.Visible = (pageIndex != pageCount);
            }
            else
            {
                lnkFirstPage.Visible    = lnkLastPage.Visible = false;
                lnkPreviousPage.Visible = lnkNextPage.Visible = false;
                lnkPageA.Visible        = lnkPageB.Visible = lnkPageC.Visible = lnkPageD.Visible = lnkPageE.Visible = false;
            }
        }
Esempio n. 4
0
        public void PagingWithSimulationColumnandRowFilterWorks()
        {
            CreateTable(database);

            var reader   = new DataStoreReader(database);
            var provider = new PagedDataProvider(reader, "Current", "Report",
                                                 new string[] { "Sim1" },
                                                 "Col1,Col2",
                                                 "Col1 > 2",
                                                 2);

            Assert.AreEqual(3, provider.ColumnCount);
            Assert.AreEqual("SimulationName", provider.GetCellContents(0, 0));
            Assert.AreEqual("Col1", provider.GetCellContents(1, 0));
            Assert.AreEqual("Col2", provider.GetCellContents(2, 0));
            Assert.AreEqual(3, provider.RowCount);
            Assert.AreEqual(2, provider.NumHeadingRows);
            Assert.AreEqual("g", provider.GetCellContents(1, 1));
            Assert.IsNull(provider.GetCellContents(2, 1));
            Assert.AreEqual("10", provider.GetCellContents(2, 2));
        }
Esempio n. 5
0
        public void PagingWithColumnFilterWorks()
        {
            CreateTable(database);

            var reader   = new DataStoreReader(database);
            var provider = new PagedDataProvider(reader, "Current", "Report",
                                                 null,
                                                 "Col2",
                                                 null,
                                                 2);

            Assert.AreEqual(2, provider.ColumnCount);
            Assert.AreEqual("SimulationName", provider.GetCellContents(0, 0));
            Assert.AreEqual("Col2", provider.GetCellContents(1, 0));
            Assert.AreEqual(8, provider.RowCount);
            Assert.AreEqual(1, provider.NumHeadingRows);
            Assert.AreEqual("8", provider.GetCellContents(1, 1));
            Assert.AreEqual("9", provider.GetCellContents(1, 2));
            Assert.AreEqual("10", provider.GetCellContents(1, 3));
            Assert.AreEqual("11", provider.GetCellContents(1, 4));
            Assert.AreEqual("12", provider.GetCellContents(1, 5));
            Assert.AreEqual("13", provider.GetCellContents(1, 6));
            Assert.AreEqual("14", provider.GetCellContents(1, 7));
        }
Esempio n. 6
0
        /// <summary>Populate the grid control with data.</summary>
        public void PopulateGrid()
        {
            if (!string.IsNullOrEmpty(tableDropDown.SelectedValue))
            {
                // Note that the filter contains the zone filter and experiment filter but not simulation filter.
                IEnumerable <string> simulationNames = null;
                if (ExperimentFilter != null)
                {
                    // fixme: this makes some serious assumptions about how the query is generated in the data store layer...
                    simulationNames = ExperimentFilter.GenerateSimulationDescriptions().Select(s => s.Name);
                }
                else if (SimulationFilter == null)
                {
                    simulationNames = null;
                }
                else
                {
                    simulationNames = new string[] { SimulationFilter.Name }
                };

                string filter = rowFilterEditBox.Text;
                if (ZoneFilter != null)
                {
                    // More assumptions about column names
                    filter = AppendToFilter(filter, $"[Zone] = '{ZoneFilter.Name}'");
                }

                // Create sheet control
                if (tableDropDown.SelectedValue != null)
                {
                    try
                    {
                        // Cleanup existing sheet instances before creating new ones.
                        CleanupSheet();

                        dataProvider = new PagedDataProvider(dataStore.Reader,
                                                             checkpointDropDown.SelectedValue,
                                                             tableDropDown.SelectedValue,
                                                             simulationNames,
                                                             columnFilterEditBox.Text,
                                                             filter);
                        dataProvider.PagingStart += (sender, args) => explorerPresenter.MainPresenter.ShowWaitCursor(true);
                        dataProvider.PagingEnd   += (sender, args) => explorerPresenter.MainPresenter.ShowWaitCursor(false);

                        sheet = new SheetWidget()
                        {
                            DataProvider        = dataProvider,
                            NumberFrozenRows    = dataProvider.NumHeadingRows,
                            NumberFrozenColumns = dataProvider.NumPriorityColumns
                        };
#if NETFRAMEWORK
                        sheet.RowHeight = 20;
#endif

                        cellSelector = new SingleCellSelect(sheet);
                        var scrollbars = new SheetScrollBars(sheet);
                        sheet.CellPainter = new DefaultCellPainter(sheet, sheetSelection: cellSelector);

                        sheetContainer.Add(scrollbars.MainWidget);
                        statusLabel.Text = $"Number of rows: {dataProvider.RowCount - dataProvider.NumHeadingRows}";
                    }
                    catch (Exception err)
                    {
                        explorerPresenter.MainPresenter.ShowError(err.ToString());
                    }
                }
            }
        }
Esempio n. 7
0
        /**
         * Go to last page
         */
        private void lnkLastPage_LinkClicked(object sender, EventArgs e)
        {
            int pageCount = GetPageCount(PagedDataProvider.GetRecordCount(DataSetId));

            SelectPage(pageCount);
        }