private void Display(HistoryList hl, bool disablesorting) { if (hl == null) // just for safety { return; } current_historylist = hl; Tuple <long, int> pos = CurrentGridPosByJID(); SortOrder sortorder = dataGridViewJournal.SortOrder; int sortcol = dataGridViewJournal.SortedColumn?.Index ?? -1; if (sortcol >= 0 && disablesorting) { dataGridViewJournal.Columns[sortcol].HeaderCell.SortGlyphDirection = SortOrder.None; sortcol = -1; } var filter = (TravelHistoryFilter)comboBoxJournalWindow.SelectedItem ?? TravelHistoryFilter.NoFilter; List <HistoryEntry> result = filter.Filter(hl); fdropdown = hl.Count() - result.Count(); result = HistoryList.FilterByJournalEvent(result, SQLiteDBClass.GetSettingString(DbFilterSave, "All"), out ftotalevents); result = FilterHelpers.FilterHistory(result, fieldfilter, discoveryform.Globals, out ftotalfilters); dataGridViewJournal.Rows.Clear(); rowsbyjournalid.Clear(); for (int ii = 0; ii < result.Count; ii++) //foreach (var item in result) { AddNewJournalRow(false, result[ii]); // for every one in filter, add a row. } StaticFilters.FilterGridView(dataGridViewJournal, textBoxFilter.Text); UpdateToolTipsForFilter(); int rowno = FindGridPosByJID(pos.Item1, true); if (rowno >= 0) { dataGridViewJournal.CurrentCell = dataGridViewJournal.Rows[rowno].Cells[pos.Item2]; // its the current cell which needs to be set, moves the row marker as well currentGridRow = (rowno!=-1) ? } dataGridViewJournal.Columns[0].HeaderText = EDDiscoveryForm.EDDConfig.DisplayUTC ? "Game Time" : "Time"; if (sortcol >= 0) { dataGridViewJournal.Sort(dataGridViewJournal.Columns[sortcol], (sortorder == SortOrder.Descending) ? ListSortDirection.Descending : ListSortDirection.Ascending); dataGridViewJournal.Columns[sortcol].HeaderCell.SortGlyphDirection = sortorder; } FireChangeSelection(); }
private void UpdateToolTipsForFilter() { string ms = string.Format(" showing {0} original {1}".T(EDTx.UserControlJournalGrid_TT1), dataGridViewJournal.Rows.Count, current_historylist?.Count() ?? 0); comboBoxJournalWindow.SetTipDynamically(toolTip, fdropdown > 0 ? string.Format("Filtered {0}".T(EDTx.UserControlJournalGrid_TTFilt1), fdropdown + ms) : "Select the entries by age, ".T(EDTx.UserControlJournalGrid_TTSelAge) + ms); toolTip.SetToolTip(buttonFilter, (ftotalevents > 0) ? string.Format("Filtered {0}".T(EDTx.UserControlJournalGrid_TTFilt2), ftotalevents + ms) : "Filter out entries based on event type, ".T(EDTx.UserControlJournalGrid_TTEvent) + ms); toolTip.SetToolTip(buttonField, (ftotalfilters > 0) ? string.Format("Total filtered out {0}".T(EDTx.UserControlJournalGrid_TTFilt3), ftotalfilters + ms) : "Filter out entries matching the field selection, ".T(EDTx.UserControlJournalGrid_TTTotal) + ms); }
private void Display(HistoryList hl, bool disablesorting) { if (hl == null) // just for safety { return; } loadcomplete = false; this.Cursor = Cursors.WaitCursor; buttonExtExcel.Enabled = buttonFilter.Enabled = buttonField.Enabled = comboBoxJournalWindow.Enabled = false; current_historylist = hl; Tuple <long, int> pos = CurrentGridPosByJID(); SortOrder sortorder = dataGridViewJournal.SortOrder; int sortcol = dataGridViewJournal.SortedColumn?.Index ?? -1; if (sortcol >= 0 && disablesorting) { dataGridViewJournal.Columns[sortcol].HeaderCell.SortGlyphDirection = SortOrder.None; sortcol = -1; } var filter = (TravelHistoryFilter)comboBoxJournalWindow.SelectedItem ?? TravelHistoryFilter.NoFilter; List <HistoryEntry> result = filter.Filter(hl); fdropdown = hl.Count() - result.Count(); result = HistoryList.FilterByJournalEvent(result, EliteDangerousCore.DB.UserDatabase.Instance.GetSettingString(DbFilterSave, "All"), out ftotalevents); result = FilterHelpers.FilterHistory(result, fieldfilter, discoveryform.Globals, out ftotalfilters); dataGridViewJournal.Rows.Clear(); rowsbyjournalid.Clear(); dataGridViewJournal.Columns[0].HeaderText = EDDiscoveryForm.EDDConfig.GetTimeTitle(); List <HistoryEntry[]> chunks = new List <HistoryEntry[]>(); int chunksize = 500; for (int i = 0; i < result.Count; i += chunksize, chunksize = 2000) { HistoryEntry[] chunk = new HistoryEntry[i + chunksize > result.Count ? result.Count - i : chunksize]; result.CopyTo(i, chunk, 0, chunk.Length); chunks.Add(chunk); } todo.Clear(); string filtertext = textBoxFilter.Text; System.Diagnostics.Stopwatch swtotal = new System.Diagnostics.Stopwatch(); swtotal.Start(); //int lrowno = 0; foreach (var chunk in chunks) { todo.Enqueue(() => { //System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch(); sw.Start(); List <DataGridViewRow> rowstoadd = new List <DataGridViewRow>(); foreach (var item in chunk) { var row = CreateHistoryRow(item, filtertext); if (row != null) { //row.Cells[2].Value = (lrowno++).ToString() + " " + item.Journalid + " " + (string)row.Cells[2].Value; rowstoadd.Add(row); } } dataGridViewJournal.Rows.AddRange(rowstoadd.ToArray()); // much faster to send in one chunk // System.Diagnostics.Debug.WriteLine("J Chunk Load in " + sw.ElapsedMilliseconds); if (dataGridViewJournal.MoveToSelection(rowsbyjournalid, ref pos, false, Columns.Event)) { FireChangeSelection(); } }); } todo.Enqueue(() => { System.Diagnostics.Debug.WriteLine(BaseUtils.AppTicks.TickCount + " JG TOTAL TIME " + swtotal.ElapsedMilliseconds); UpdateToolTipsForFilter(); if (dataGridViewJournal.MoveToSelection(rowsbyjournalid, ref pos, true, Columns.Event)) { FireChangeSelection(); } if (sortcol >= 0) { dataGridViewJournal.Sort(dataGridViewJournal.Columns[sortcol], (sortorder == SortOrder.Descending) ? ListSortDirection.Descending : ListSortDirection.Ascending); dataGridViewJournal.Columns[sortcol].HeaderCell.SortGlyphDirection = sortorder; } this.Cursor = Cursors.Default; buttonExtExcel.Enabled = buttonFilter.Enabled = buttonField.Enabled = comboBoxJournalWindow.Enabled = true; loadcomplete = true; }); todotimer.Start(); }
private void Display(HistoryList hl, bool disablesorting) { if (hl == null) // just for safety { return; } loadcomplete = false; this.Cursor = Cursors.WaitCursor; current_historylist = hl; Tuple <long, int> pos = CurrentGridPosByJID(); SortOrder sortorder = dataGridViewJournal.SortOrder; int sortcol = dataGridViewJournal.SortedColumn?.Index ?? -1; if (sortcol >= 0 && disablesorting) { dataGridViewJournal.Columns[sortcol].HeaderCell.SortGlyphDirection = SortOrder.None; sortcol = -1; } var filter = (TravelHistoryFilter)comboBoxJournalWindow.SelectedItem ?? TravelHistoryFilter.NoFilter; System.Diagnostics.Trace.WriteLine(BaseUtils.AppTicks.TickCountLap(this, true) + " JG " + displaynumber + " Load start"); List <HistoryEntry> result = filter.Filter(hl); fdropdown = hl.Count() - result.Count(); result = HistoryList.FilterByJournalEvent(result, SQLiteDBClass.GetSettingString(DbFilterSave, "All"), out ftotalevents); result = FilterHelpers.FilterHistory(result, fieldfilter, discoveryform.Globals, out ftotalfilters); dataGridViewJournal.Rows.Clear(); rowsbyjournalid.Clear(); dataGridViewJournal.Columns[0].HeaderText = EDDiscoveryForm.EDDConfig.DisplayUTC ? "Game Time".Tx() : "Time".Tx(); List <HistoryEntry[]> chunks = new List <HistoryEntry[]>(); for (int i = 0; i < result.Count; i += 1000) { HistoryEntry[] chunk = new HistoryEntry[i + 1000 > result.Count ? result.Count - i : 1000]; result.CopyTo(i, chunk, 0, chunk.Length); chunks.Add(chunk); } todo.Clear(); string filtertext = textBoxFilter.Text; foreach (var chunk in chunks) { todo.Enqueue(() => { dataViewScrollerPanel.Suspend(); foreach (var item in chunk) { var row = CreateHistoryRow(item, filtertext); if (row != null) { dataGridViewJournal.Rows.Add(row); } } dataViewScrollerPanel.Resume(); }); } todo.Enqueue(() => { UpdateToolTipsForFilter(); int rowno = FindGridPosByJID(pos.Item1, true); if (rowno >= 0) { dataGridViewJournal.CurrentCell = dataGridViewJournal.Rows[rowno].Cells[pos.Item2]; // its the current cell which needs to be set, moves the row marker as well currentGridRow = (rowno!=-1) ? } System.Diagnostics.Trace.WriteLine(BaseUtils.AppTicks.TickCountLap(this) + " JG " + displaynumber + " Load Finish"); if (sortcol >= 0) { dataGridViewJournal.Sort(dataGridViewJournal.Columns[sortcol], (sortorder == SortOrder.Descending) ? ListSortDirection.Descending : ListSortDirection.Ascending); dataGridViewJournal.Columns[sortcol].HeaderCell.SortGlyphDirection = sortorder; } FireChangeSelection(); this.Cursor = Cursors.Default; loadcomplete = true; }); todotimer.Start(); }
private void UpdateToolTipsForFilter() { string ms = " showing " + dataGridViewJournal.Rows.Count + " original " + (current_historylist?.Count() ?? 0); comboBoxJournalWindow.SetTipDynamically(toolTip, fdropdown > 0 ? ("Filtered " + fdropdown + ms) : "Select the entries by age, " + ms); toolTip.SetToolTip(buttonFilter, (ftotalevents > 0) ? ("Filtered " + ftotalevents + ms) : "Filter out entries based on event type, " + ms); toolTip.SetToolTip(buttonField, (ftotalfilters > 0) ? ("Total filtered out " + ftotalfilters + ms) : "Filter out entries matching the field selection, " + ms); }
private void Display(HistoryList hl, bool disablesorting) { if (hl == null) // just for safety { return; } this.Cursor = Cursors.WaitCursor; current_historylist = hl; Tuple <long, int> pos = CurrentGridPosByJID(); SortOrder sortorder = dataGridViewJournal.SortOrder; int sortcol = dataGridViewJournal.SortedColumn?.Index ?? -1; if (sortcol >= 0 && disablesorting) { dataGridViewJournal.Columns[sortcol].HeaderCell.SortGlyphDirection = SortOrder.None; sortcol = -1; } var filter = (TravelHistoryFilter)comboBoxJournalWindow.SelectedItem ?? TravelHistoryFilter.NoFilter; System.Diagnostics.Trace.WriteLine(BaseUtils.AppTicks.TickCount100 + " JG " + displaynumber + " Load start"); List <HistoryEntry> result = filter.Filter(hl); fdropdown = hl.Count() - result.Count(); result = HistoryList.FilterByJournalEvent(result, SQLiteDBClass.GetSettingString(DbFilterSave, "All"), out ftotalevents); result = FilterHelpers.FilterHistory(result, fieldfilter, discoveryform.Globals, out ftotalfilters); dataGridViewJournal.Rows.Clear(); rowsbyjournalid.Clear(); for (int ii = 0; ii < result.Count; ii++) //foreach (var item in result) { DataGridViewRow rw = CreateHistoryRow(result[ii], textBoxFilter.Text); if (rw != null) { dataGridViewJournal.Rows.Add(rw); } } UpdateToolTipsForFilter(); int rowno = FindGridPosByJID(pos.Item1, true); if (rowno >= 0) { dataGridViewJournal.CurrentCell = dataGridViewJournal.Rows[rowno].Cells[pos.Item2]; // its the current cell which needs to be set, moves the row marker as well currentGridRow = (rowno!=-1) ? } dataGridViewJournal.Columns[0].HeaderText = EDDiscoveryForm.EDDConfig.DisplayUTC ? "Game Time" : "Time"; System.Diagnostics.Trace.WriteLine(BaseUtils.AppTicks.TickCount100 + " JG " + displaynumber + " Load Finish"); if (sortcol >= 0) { dataGridViewJournal.Sort(dataGridViewJournal.Columns[sortcol], (sortorder == SortOrder.Descending) ? ListSortDirection.Descending : ListSortDirection.Ascending); dataGridViewJournal.Columns[sortcol].HeaderCell.SortGlyphDirection = sortorder; } FireChangeSelection(); this.Cursor = Cursors.Default; }