コード例 #1
0
        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();
        }
コード例 #2
0
        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();
        }