private List <HistoryEntry> FilterHistory(Predicate <HistoryEntry> where) { if (last_he != null) { DateTime startdateutc = startDateTime.Checked ? EDDConfig.Instance.ConvertTimeToUTCFromSelected(startDateTime.Value) : new DateTime(1980, 1, 1); DateTime enddateutc = endDateTime.Checked ? EDDConfig.Instance.ConvertTimeToUTCFromSelected(endDateTime.Value) : new DateTime(8999, 1, 1); return(HistoryList.FilterBefore(discoveryform.history.EntryOrder(), last_he, (x) => ((DateTime.Compare(x.EventTimeUTC, startdateutc) >= 0 && DateTime.Compare(x.EventTimeUTC, enddateutc) <= 0) && where (x)))); } else { return(new List <HistoryEntry>()); } }
private void showFactionSystemDetailToolStripMenuItem_Click(object sender, EventArgs e) { if (dataGridViewFactions.RightClickRow >= 0) { FactionStatistics fs = dataGridViewFactions.Rows[dataGridViewFactions.RightClickRow].Tag as FactionStatistics; var dgvpanel = new ExtendedControls.ExtPanelDataGridViewScrollWithDGV <BaseUtils.DataGridViewColumnHider>(); dgvpanel.DataGrid.CreateTextColumns("System".T(EDTx.UserControlModules_System), 100, 5, "System Address".T(EDTx.UserControlFactions_SystemAddress), 60, 5, "Missions".T(EDTx.UserControlMissions_MPlural), 50, 5, "+Influence".T(EDTx.UserControlFactions_colInfluence), 50, 5, // these align with columns of main view, with same names "Commds +".T(EDTx.UserControlFactions_CBought), 50, 5, "Commds -".T(EDTx.UserControlFactions_CSold), 50, 5, "Mats +".T(EDTx.UserControlFactions_MBought), 50, 5, "Mats -".T(EDTx.UserControlFactions_MSold), 50, 5, "Bounties".T(EDTx.UserControlFactions_BountiesPlural), 50, 5, "Rewards".T(EDTx.UserControlFactions_RewardsPlural), 60, 5, "Bonds".T(EDTx.UserControlFactions_BondsPlural), 50, 5, "Rewards".T(EDTx.UserControlFactions_RewardsPlural), 60, 5); dgvpanel.DataGrid.SortCompare += (s, ev) => { if (ev.Column.Index >= 1) { ev.SortDataGridViewColumnNumeric(); } }; dgvpanel.DataGrid.RowHeadersVisible = false; dgvpanel.DataGrid.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; for (int col = 1; col < dgvpanel.DataGrid.ColumnCount - 1; col++) { dgvpanel.DataGrid.Columns[col].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; } DGVLoadColumnLayout(dgvpanel.DataGrid, "ShowSystemDetail"); var systems = new List <SystemInfo>(); foreach (var si in fs.Systems.Values) { string systemName = null; if (last_he != null) { foreach (var he in HistoryList.FilterBefore(discoveryform.history.EntryOrder(), last_he, (x) => x.System.SystemAddress == si.SystemAddress)) { systemName = he.System.Name; break; } } systems.Add(new SystemInfo { Name = systemName, Address = si.SystemAddress, Missions = si.Missions, Influence = si.Influence }); } var list = FilterHistory((x) => (x.journalEntry is IStatsJournalEntryMatCommod && x.StationFaction == fs.Name) || (x.journalEntry is IStatsJournalEntryBountyOrBond && (x.journalEntry as IStatsJournalEntryBountyOrBond).HasFaction(fs.Name))); foreach (var he in list) { SystemInfo si = systems.Find(x => (he.System.SystemAddress != null && x.Address == he.System.SystemAddress) || (he.System.Name != null && x.Name == he.System.Name)); if (si == null) { si = new SystemInfo { Name = he.System.Name, Address = he.System.SystemAddress }; systems.Add(si); } if (he.journalEntry is IStatsJournalEntryMatCommod) { var items = (he.journalEntry as IStatsJournalEntryMatCommod).ItemsList; foreach (var i in items) { if (he.journalEntry.EventTypeID == JournalTypeEnum.MaterialTrade) { if (i.Count > 0) { si.AddMaterialsBought(i.Count); } else if (i.Count < 0) { si.AddMaterialsSold(i.Count); } } else { if (i.Count > 0) { si.AddCommoditiesBought(i.Count); } else if (i.Count < 0) { si.AddCommoditiesSold(i.Count); } } } } else { if (he.journalEntry.EventTypeID == JournalTypeEnum.Bounty) { si.AddBounties(1); si.AddBountyRewardsValue((he.journalEntry as IStatsJournalEntryBountyOrBond).FactionReward(fs.Name)); } else if (he.journalEntry.EventTypeID == JournalTypeEnum.FactionKillBond) { si.AddKillBonds(1); si.AddBondsRewardsValue((he.journalEntry as IStatsJournalEntryBountyOrBond).FactionReward(fs.Name)); } } } foreach (var system in systems) { object[] rowobj = { system.Name, system.Address, system.Missions?.ToString("N0"), system.Influence?.ToString("N0"), system.CommoditiesBought?.ToString("N0"), system.CommoditiesSold?.ToString("N0"), system.MaterialsBought?.ToString("N0"), system.MaterialsSold?.ToString("N0"), system.Bounties?.ToString("N0"), system.BountyRewardsValue?.ToString("N0"), system.KillBonds?.ToString("N0"), system.BondsRewardsValue?.ToString("N0") }; var row = dgvpanel.DataGrid.RowTemplate.Clone() as DataGridViewRow; row.CreateCells(dgvpanel.DataGrid, rowobj); dgvpanel.DataGrid.Rows.Add(row); } ExtendedControls.ConfigurableForm f = new ExtendedControls.ConfigurableForm(); f.Add(new ExtendedControls.ConfigurableForm.Entry(dgvpanel, "Grid", "", new System.Drawing.Point(3, 30), new System.Drawing.Size(960, 400), null) { anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top | AnchorStyles.Bottom }); f.AddOK(new Point(960 - 100, 460), "OK", anchor: AnchorStyles.Right | AnchorStyles.Bottom); f.InstallStandardTriggers(); f.AllowResize = true; f.ShowDialogCentred(FindForm(), FindForm().Icon, "Systems Detail for ".T(EDTx.UserControlFactions_SystemsDetailFor) + fs.Name, closeicon: true); DGVSaveColumnLayout(dgvpanel.DataGrid, "ShowSystemDetail"); } }
private void showFactionSystemDetailToolStripMenuItem_Click(object sender, EventArgs e) { if (dataGridViewFactions.RightClickRow >= 0) { FactionStatistics fs = dataGridViewFactions.Rows[dataGridViewFactions.RightClickRow].Tag as FactionStatistics; var dgvpanel = new ExtendedControls.ExtPanelDataGridViewScrollWithDGV <BaseUtils.DataGridViewColumnControl>(); dgvpanel.DataGrid.CreateTextColumns("System".T(EDTx.UserControlModules_System), 100, 5, "System Address".T(EDTx.UserControlFactions_SystemAddress), 60, 5, "Missions".T(EDTx.UserControlMissions_MPlural), 50, 5, "+Influence".T(EDTx.UserControlFactions_colInfluence), 50, 5, // these align with columns of main view, with same names "Commds +".T(EDTx.UserControlFactions_CBought), 50, 5, "Commds -".T(EDTx.UserControlFactions_CSold), 50, 5, "Mats +".T(EDTx.UserControlFactions_MBought), 50, 5, "Mats -".T(EDTx.UserControlFactions_MSold), 50, 5, "Bounties".T(EDTx.UserControlFactions_BountiesPlural), 50, 5, "Rewards".T(EDTx.UserControlFactions_RewardsPlural), 60, 5, "Bonds".T(EDTx.UserControlFactions_BondsPlural), 50, 5, "Rewards".T(EDTx.UserControlFactions_RewardsPlural), 60, 5, "Cartographic Value".T(EDTx.UserControlFactions_CartoValue), 60, 5); dgvpanel.DataGrid.SortCompare += (s, ev) => { if (ev.Column.Index >= 1) { ev.SortDataGridViewColumnNumeric(); } }; dgvpanel.DataGrid.RowHeadersVisible = false; dgvpanel.DataGrid.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; for (int col = 1; col < dgvpanel.DataGrid.ColumnCount - 1; col++) { dgvpanel.DataGrid.Columns[col].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; } DGVLoadColumnLayout(dgvpanel.DataGrid, "ShowSystemDetail"); // systems to present var systems = new List <SystemInfo>(); // look thru the influence systems and add it to the list of systems foreach (var si in fs.SystemsWithInfluence.Values) { string systemName = null; if (last_he != null) { foreach (var he in HistoryList.FilterBefore(discoveryform.history.EntryOrder(), last_he, (x) => x.System.SystemAddress == si.SystemAddress)) { systemName = he.System.Name; break; } } systems.Add(new SystemInfo { Name = systemName, Address = si.SystemAddress, Missions = si.Missions, Influence = si.Influence }); } // find all the history entries with faction, taking into account start/end date, and last_he position var list = FilterHistory((x) => (x.journalEntry is IStatsJournalEntryMatCommod && x.StationFaction == fs.Name) || // he's with changes in stats due to MatCommod trading (x.journalEntry is IStatsJournalEntryBountyOrBond && (x.journalEntry as IStatsJournalEntryBountyOrBond).HasFaction(fs.Name)) || // he's with Bountry/bond ((x.journalEntry.EventTypeID == JournalTypeEnum.SellExplorationData || x.journalEntry.EventTypeID == JournalTypeEnum.MultiSellExplorationData) && x.StationFaction == fs.Name) // he's for exploration ); foreach (var he in list) { SystemInfo si = systems.Find(x => // do we have this previous entry? (he.System.SystemAddress != null && x.Address == he.System.SystemAddress) || (he.System.Name != null && x.Name == he.System.Name)); if (si == null) // no, add it to the system list { si = new SystemInfo { Name = he.System.Name, Address = he.System.SystemAddress }; systems.Add(si); } if (he.journalEntry is IStatsJournalEntryMatCommod) // is this a material or commodity trade? { var items = (he.journalEntry as IStatsJournalEntryMatCommod).ItemsList; foreach (var i in items) { if (he.journalEntry.EventTypeID == JournalTypeEnum.MaterialTrade) // material trade is only counter for mats { if (i.Count > 0) { si.AddMaterialsBought(i.Count); } else if (i.Count < 0) { si.AddMaterialsSold(-i.Count); } } else { // all others are commds if (i.Count > 0) { si.AddCommoditiesBought(i.Count); } else { si.AddCommoditiesSold(-i.Count); // value is negative, invert } } } } else { // System.Diagnostics.Debug.WriteLine($"Faction {fs.Name} Journal entry {he.journalEntry.EventTypeStr} {he.System.Name}"); if (he.journalEntry.EventTypeID == JournalTypeEnum.Bounty) { si.AddBounties(1); si.AddBountyRewardsValue((he.journalEntry as IStatsJournalEntryBountyOrBond).FactionReward(fs.Name)); } else if (he.journalEntry.EventTypeID == JournalTypeEnum.FactionKillBond) { si.AddKillBonds(1); si.AddBondsRewardsValue((he.journalEntry as IStatsJournalEntryBountyOrBond).FactionReward(fs.Name)); } else if (he.journalEntry.EventTypeID == JournalTypeEnum.SellExplorationData) { si.AddCartographicValue((he.journalEntry as EliteDangerousCore.JournalEvents.JournalSellExplorationData).TotalEarnings); } else if (he.journalEntry.EventTypeID == JournalTypeEnum.MultiSellExplorationData) { si.AddCartographicValue((he.journalEntry as EliteDangerousCore.JournalEvents.JournalMultiSellExplorationData).TotalEarnings); } } } foreach (var system in systems) { object[] rowobj = { system.Name, system.Address, system.Missions?.ToString("N0"), system.Influence?.ToString("N0"), system.CommoditiesBought?.ToString("N0"), system.CommoditiesSold?.ToString("N0"), system.MaterialsBought?.ToString("N0"), system.MaterialsSold?.ToString("N0"), system.Bounties?.ToString("N0"), system.BountyRewardsValue?.ToString("N0"), system.KillBonds?.ToString("N0"), system.BondsRewardsValue?.ToString("N0"), system.CartographicValue?.ToString("N0"), }; var row = dgvpanel.DataGrid.RowTemplate.Clone() as DataGridViewRow; row.CreateCells(dgvpanel.DataGrid, rowobj); dgvpanel.DataGrid.Rows.Add(row); } ExtendedControls.ConfigurableForm f = new ExtendedControls.ConfigurableForm(); f.Add(new ExtendedControls.ConfigurableForm.Entry(dgvpanel, "Grid", "", new System.Drawing.Point(3, 30), new System.Drawing.Size(960, 400), null) { anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top | AnchorStyles.Bottom }); f.AddOK(new Point(960 - 100, 460), "OK", anchor: AnchorStyles.Right | AnchorStyles.Bottom); f.InstallStandardTriggers(); f.AllowResize = true; f.ShowDialogCentred(FindForm(), FindForm().Icon, "Systems Detail for ".T(EDTx.UserControlFactions_SystemsDetailFor) + fs.Name, closeicon: true); DGVSaveColumnLayout(dgvpanel.DataGrid, "ShowSystemDetail"); } }