public override void Initialize(LogRepository repository) { _repository = repository; Text = "Category"; var from = DateTime.Now.AddHours(-6).Date.AddHours(6); var to = from.AddDays(1); _ignoreDateValueChanged = true; _fromDate.Value = from.Date; _fromTime.Value = _fromTime.MinDate.Add(from.TimeOfDay); _toDate.Value = to.Date; _toTime.Value = _toTime.MinDate.Add(to.TimeOfDay); _ignoreDateValueChanged = false; _colorMap = new Dictionary <string, Color>(); _classifier = new BayesianClassifier(); var logs = _repository.GetClassified().ToList(); foreach (var log in logs) { Teach(log); } var categoryMenuItems = logs.Select(log => log.Category) .Distinct() .OrderBy(category => category) .Reverse() .Select(category => { var color = GenerateColor(_colorMap.Count); _colorMap.Add(category, color); var menuItem = new ToolStripMenuItem { Text = category, BackColor = color }; menuItem.Click += CommonCategoryMenuItemClick; return(menuItem); }); foreach (var menuItem in categoryMenuItems) { _contextMenuStrip.Items.Insert(0, menuItem); } _grid.AutoGenerateColumns = false; RefreshGrid(); }
public override void Selected() { foreach (string item in _processList.Items) { if (_processList.CheckedItems.Contains(item)) { if (!_checkedProcesses.Contains(item)) { _checkedProcesses.Add(item); } } else { if (_checkedProcesses.Contains(item)) { _checkedProcesses.Remove(item); } } } foreach (string item in _captionList.Items) { if (_captionList.CheckedItems.Contains(item)) { if (!_checkedCaptions.Contains(item)) { _checkedCaptions.Add(item); } } else { if (_checkedCaptions.Contains(item)) { _checkedCaptions.Remove(item); } } } foreach (string item in _categoryList.Items) { if (_categoryList.CheckedItems.Contains(item)) { if (!_checkedCategories.Contains(item)) { _checkedCategories.Add(item); } } else { if (_checkedCategories.Contains(item)) { _checkedCategories.Remove(item); } } } _processList.Items.Clear(); _captionList.Items.Clear(); _categoryList.Items.Clear(); var from = _fromDate.Value.Date.Add(_fromTime.Value.TimeOfDay); var to = _toDate.Value.Date.Add(_toTime.Value.TimeOfDay); using (_repository.OpenConnection()) { foreach (var item in _repository.GetDistinctProcesses(from, to)) { _processList.Items.Add(item, _checkedProcesses.Contains(item)); } foreach (var item in _repository.GetDistinctCaptions(from, to)) { _captionList.Items.Add(item, _checkedCaptions.Contains(item)); } _classifier = new BayesianClassifier(); var logs = _repository.GetClassified().ToList(); foreach (var log in logs) { _classifier.Teach($"{log.Process} {log.Caption}", log.Category); } foreach (var item in logs.Select(log => log.Category).Distinct().OrderBy(category => category)) { _categoryList.Items.Add(item, _checkedCaptions.Contains(item)); } } RefreshGraph(); }