示例#1
0
        public StatisticsSection(ImageProvider imageProvider, ILogNameProvider nameProvider)
        {
            specializations = new SpecializationStatistics(imageProvider);
            encounters      = new EncounterStatistics(nameProvider);

            var tabs = new TabControl();

            tabs.Pages.Add(new TabPage {
                Text = "Encounters", Content = encounters, Padding = new Padding(10)
            });
            tabs.Pages.Add(new TabPage {
                Text = "Specializations", Content = specializations, Padding = new Padding(10)
            });
            Content = tabs;
        }
示例#2
0
        public GameDataCollecting(LogList logList, LogCache logCache, ApiData apiData, LogDataProcessor logProcessor,
                                  UploadProcessor uploadProcessor, ImageProvider imageProvider, ILogNameProvider nameProvider)
        {
            var gatherButton = new Button {
                Text = "Collect data"
            };
            var cancelButton = new Button {
                Text = "Cancel"
            };
            var exportSpeciesButton = new Button {
                Text = "Export species data to csv"
            };
            var exportSkillsButton = new Button {
                Text = "Export skill data to csv"
            };
            var progressBar   = new ProgressBar();
            var progressLabel = new Label {
                Text = ""
            };
            var speciesGridView = new GridView <SpeciesData>();
            var skillGridView   = new GridView <SkillData>();

            var dataTabs = new TabControl();

            dataTabs.Pages.Add(new TabPage {
                Text = "Species", Content = speciesGridView
            });
            dataTabs.Pages.Add(new TabPage {
                Text = "Skills", Content = skillGridView
            });

            BeginVertical(new Padding(5), new Size(5, 5));
            {
                AddCentered(
                    "Collects a list of all different agent species and skills found in logs (uses current filters).");
                AddCentered("Requires all logs to be processed again as this data is not cached.");
                BeginCentered(spacing: new Size(5, 5));
                {
                    AddRow(gatherButton, cancelButton);
                }
                EndCentered();
                BeginCentered(spacing: new Size(5, 5));
                {
                    AddRow(progressBar);
                    AddRow(progressLabel);
                }
                EndCentered();

                BeginHorizontal(true);
                Add(dataTabs);
                EndHorizontal();
                BeginCentered(spacing: new Size(5, 5));
                {
                    AddRow(exportSpeciesButton, exportSkillsButton);
                }
                EndCentered();
            }
            EndVertical();

            speciesGridView.Columns.Add(new GridColumn
            {
                HeaderText = "Species ID",
                DataCell   = new TextBoxCell()
                {
                    Binding = new DelegateBinding <SpeciesData, string>(x => x.SpeciesId.ToString())
                }
            });
            speciesGridView.Columns.Add(new GridColumn
            {
                HeaderText = "Name",
                DataCell   = new TextBoxCell()
                {
                    Binding = new DelegateBinding <SpeciesData, string>(x => x.Name)
                }
            });
            speciesGridView.Columns.Add(new GridColumn
            {
                HeaderText = "Times seen",
                DataCell   = new TextBoxCell()
                {
                    Binding = new DelegateBinding <SpeciesData, string>(x => x.Logs.Count.ToString())
                }
            });

            var speciesLogsColumn = new GridColumn
            {
                HeaderText = "Logs",
                DataCell   = new TextBoxCell()
                {
                    Binding = new DelegateBinding <SpeciesData, string>(x => "Click me to open log list"),
                }
            };

            speciesGridView.Columns.Add(speciesLogsColumn);

            speciesGridView.CellClick += (sender, args) =>
            {
                if (args.GridColumn == speciesLogsColumn)
                {
                    if (args.Item is SpeciesData speciesData)
                    {
                        var form = new Form
                        {
                            Content = new LogList(logCache, apiData, logProcessor, uploadProcessor, imageProvider,
                                                  nameProvider)
                            {
                                DataStore = new FilterCollection <LogData>(speciesData.Logs)
                            },
                            Width  = 900,
                            Height = 700,
                            Title  = $"arcdps Log Manager: logs containing species {speciesData.Name} (ID {speciesData.SpeciesId})"
                        };
                        form.Show();
                    }
                }
            };

            skillGridView.Columns.Add(new GridColumn
            {
                HeaderText = "Skill ID",
                DataCell   = new TextBoxCell()
                {
                    Binding = new DelegateBinding <SkillData, string>(x => x.SkillId.ToString())
                }
            });
            skillGridView.Columns.Add(new GridColumn
            {
                HeaderText = "Name",
                DataCell   = new TextBoxCell()
                {
                    Binding = new DelegateBinding <SkillData, string>(x => x.Name)
                }
            });
            skillGridView.Columns.Add(new GridColumn
            {
                HeaderText = "Times seen",
                DataCell   = new TextBoxCell()
                {
                    Binding = new DelegateBinding <SkillData, string>(x => x.Logs.Count.ToString())
                }
            });
            var skillLogsColumn = new GridColumn
            {
                HeaderText = "Logs",
                DataCell   = new TextBoxCell()
                {
                    Binding = new DelegateBinding <SkillData, string>(x => "Click me to open log list"),
                }
            };

            skillGridView.Columns.Add(skillLogsColumn);

            skillGridView.CellClick += (sender, args) =>
            {
                if (args.GridColumn == skillLogsColumn)
                {
                    if (args.Item is SkillData skillData)
                    {
                        var form = new Form
                        {
                            Content = new LogList(logCache, apiData, logProcessor, uploadProcessor, imageProvider,
                                                  nameProvider)
                            {
                                DataStore = new FilterCollection <LogData>(skillData.Logs)
                            },
                            Width  = 900,
                            Height = 700,
                            Title  = $"arcdps Log Manager: logs containing skill {skillData.Name} (ID {skillData.SkillId})"
                        };
                        form.Show();
                    }
                }
            };

            var speciesSorter = new GridViewSorter <SpeciesData>(speciesGridView);
            var skillSorter   = new GridViewSorter <SkillData>(skillGridView);

            speciesSorter.EnableSorting();
            skillSorter.EnableSorting();

            cancelButton.Click += (sender, args) => cancellationTokenSource?.Cancel();
            gatherButton.Click += (sender, args) =>
                                  GatherData(logList, progressBar, progressLabel, speciesGridView, skillGridView, speciesSorter,
                                             skillSorter);
            exportSkillsButton.Click += (sender, args) =>
                                        SaveToCsv(skillGridView.DataStore ?? Enumerable.Empty <SkillData>());
            exportSpeciesButton.Click += (sender, args) =>
                                         SaveToCsv(speciesGridView.DataStore ?? Enumerable.Empty <SpeciesData>());
        }
示例#3
0
 public LogFilters(ILogNameProvider nameProvider, params ILogFilter[] additionalFilters)
 {
     this.nameProvider      = nameProvider;
     this.additionalFilters = additionalFilters;
 }
示例#4
0
        public LogFilterPanel(ImageProvider imageProvider, ILogNameProvider logNameProvider, LogFilters filters)
        {
            this.logNameProvider = logNameProvider;
            Filters = filters;

            encounterFilterDropDown = new DropDown {
                SelectedKey = LogFilters.EncounterFilterAll
            };
            encounterFilterDropDown.SelectedKeyBinding.Bind(this, x => x.Filters.EncounterFilter);

            var successCheckBox = new CheckBox {
                Text = "Success"
            };

            successCheckBox.CheckedBinding.Bind(this, x => x.Filters.ShowSuccessfulLogs);
            var failureCheckBox = new CheckBox {
                Text = "Failure"
            };

            failureCheckBox.CheckedBinding.Bind(this, x => x.Filters.ShowFailedLogs);
            var unknownCheckBox = new CheckBox {
                Text = "Unknown"
            };

            unknownCheckBox.CheckedBinding.Bind(this, x => x.Filters.ShowUnknownLogs);

            var normalModeCheckBox = new CheckBox {
                Text = "Normal"
            };

            normalModeCheckBox.CheckedBinding.Bind(this, x => x.Filters.ShowNormalModeLogs);
            var challengeModeCheckBox = new CheckBox {
                Text = "CM"
            };

            challengeModeCheckBox.CheckedBinding.Bind(this, x => x.Filters.ShowChallengeModeLogs);

            var startDateTimePicker = new DateTimePicker {
                Mode = DateTimePickerMode.DateTime
            };

            startDateTimePicker.ValueBinding.Bind(this, x => x.Filters.MinDateTimeFilter);
            var endDateTimePicker = new DateTimePicker {
                Mode = DateTimePickerMode.DateTime
            };

            endDateTimePicker.ValueBinding.Bind(this, x => x.Filters.MaxDateTimeFilter);

            var lastDayButton = new Button {
                Text = "Last day"
            };

            lastDayButton.Click += (sender, args) =>
            {
                startDateTimePicker.Value = DateTime.Now - TimeSpan.FromDays(1);
                endDateTimePicker.Value   = DateTime.Now.Date.AddDays(1);
            };

            var allTimeButton = new Button {
                Text = "All time"
            };

            allTimeButton.Click += (sender, args) =>
            {
                startDateTimePicker.Value = LogFilters.GuildWars2ReleaseDate;
                endDateTimePicker.Value   = DateTime.Now.Date.AddDays(1);
            };

            var advancedFiltersButton = new Button {
                Text = "Advanced"
            };

            advancedFiltersButton.Click += (sender, args) =>
            {
                var form = new Form
                {
                    Title   = "Advanced filters - arcdps Log Manager",
                    Content = new AdvancedFilterPanel(imageProvider, filters)
                };
                form.Show();
            };

            var applyFilterButton = new Button {
                Text = "Apply"
            };

            applyFilterButton.Click += (sender, args) => { OnFiltersUpdated(); };

            BeginGroup("Filters", new Padding(5, 0, 5, 5));
            {
                BeginHorizontal();
                {
                    BeginVertical();
                    {
                        BeginVertical(spacing: new Size(4, 0));
                        {
                            BeginHorizontal();
                            {
                                BeginGroup("Encounter");
                                {
                                    Add(encounterFilterDropDown);
                                }
                                EndGroup();
                                BeginGroup("Result", new Padding(4, 0, 4, 2), spacing: new Size(4, 0));
                                {
                                    BeginHorizontal();
                                    {
                                        Add(successCheckBox);
                                        Add(failureCheckBox);
                                        Add(unknownCheckBox);
                                    }
                                    EndHorizontal();
                                }
                                EndGroup();
                                BeginGroup("Mode", new Padding(4, 0, 4, 2), spacing: new Size(4, 0));
                                {
                                    BeginHorizontal();
                                    {
                                        Add(normalModeCheckBox);
                                        Add(challengeModeCheckBox);
                                    }
                                    EndHorizontal();
                                }
                                EndGroup();
                                Add(null);
                            }
                            EndHorizontal();
                        }
                        EndBeginVertical(spacing: new Size(4, 0));
                        {
                            BeginGroup("Time", new Padding(4, 0, 4, 2), spacing: new Size(4, 0));
                            {
                                BeginHorizontal();
                                {
                                    Add(new Label
                                    {
                                        Text = "Between",
                                        VerticalAlignment = VerticalAlignment.Center
                                    });
                                    Add(startDateTimePicker);
                                    Add(new Label {
                                        Text = "and", VerticalAlignment = VerticalAlignment.Center
                                    });
                                    Add(endDateTimePicker);
                                    Add(lastDayButton);
                                    Add(allTimeButton);
                                }
                                EndHorizontal();
                            }
                            EndGroup();
                            Add(null);
                        }
                        EndVertical();
                    }
                    EndVertical();

                    Add(null, true);

                    BeginVertical(new Padding(5), new Size(0, 5));
                    {
                        Add(advancedFiltersButton);
                        Add(null, true);
                        Add(applyFilterButton);
                    }
                    EndVertical();
                }
                EndHorizontal();
            }
            EndGroup();
        }