private async void btMakeMap_Click(object sender, EventArgs e)
        {
            string[] selectedProfiles = checkedListBoxProfiles.CheckedItems.Cast <string>().ToArray();
            if (selectedProfiles.Length == 0)
            {
                MessageBox.Show("Select at least one profile");
                return;
            }

            string name   = tbName.Text;
            var    labels = _controller.State.Labels.Where(t => selectedProfiles.Contains(t.ProfileName)).ToArray();

            if (labels.Length < 2)
            {
                MessageBox.Show("Selected profiles contain less than 2 labels, not enough labels");
                return;
            }
            Job = new ProcessMapJob()
            {
                Labels  = labels.Select(t => t._id).ToArray(),
                LogName = _controller.State.Info.Name,
                MapName = name,
                Id      = Guid.NewGuid(),
                MapId   = Guid.NewGuid()
            };

            await ApiBoundary.AddProcessMapJob(Job);

            tabControl.SelectTab(1);
            jobWaiter.SetJobs(new Guid[] { Job.Id });
            jobWaiter.Start();
            jobWaiter.onAllJobsCompleted += JobWaiterOnOnAllJobsCompleted;
            //timerCheckStatus.Start();
        }
Beispiel #2
0
        private async void LogImportDialog_Load(object sender, EventArgs e)
        {
            var list = await ApiBoundary.GetFiles();

            cbFiles.Items.Clear();
            cbFiles.Items.AddRange(list.Cast <object>().ToArray());
        }
        private async void comboBoxFieldName_SelectedIndexChanged(object sender, EventArgs e)
        {
            dgv.DataSource = null;
            EnableProgress(true);

            var selectedName = comboBoxFieldName.SelectedItem.ToString();

            field = selectedName;
            var distinctValues = await ApiBoundary.GetDistinctFieldValues(_controller.State.Info.Name, selectedName);

            if (distinctValues == null)
            {
                MessageBox.Show("Too much values of given field, cannot enumerate");
                EnableProgress(false);
                return;
            }
            Array.Sort(distinctValues);
            GroupingValues = new List <GroupingValue>();
            for (int i = 0; i < distinctValues.Length; i++)
            {
                var dv = distinctValues[i];
                var gv = new GroupingValue()
                {
                    Value      = dv,
                    Name       = $"{selectedName} = {dv}",
                    Text       = dv,
                    GroupIndex = i
                };
                GroupingValues.Add(gv);
            }

            dgv.DataSource     = GroupingValues;
            tbProfileName.Text = "Autolabeled " + selectedName;
            EnableProgress(false);
        }
        private async void ProcessMapForm_Load(object sender, EventArgs e)
        {
            _map = await ApiBoundary.GetMap(_controller.State.Info.Name, _mapId);

            Text = _controller.State.Info.Name + " - " + _map.Name + " - Process Map";
            FillGraph();
        }
Beispiel #5
0
        private async void btCacheAll_Click(object sender, EventArgs e)
        {
            var labelsToCache = _state.Labels.Where(ProfileFilter).Where(t => !t.HasCache).ToList();

            if (labelsToCache.Count == 0)
            {
                MessageBox.Show("Nothing to cache");
                return;
            }
            List <Guid> guids = new List <Guid>();

            foreach (var label in labelsToCache)
            {
                var job = new CacheLabelJob()
                {
                    LabelId = label._id,
                    LogName = _controller.State.Info.Name
                };
                guids.Add(job.Id);
                await ApiBoundary.AddCacheLabelJob(job);
            }

            //MessageBox.Show($"Added {labelsToCache.Count} cache jobs, wait and do not click this button again");
            JobWaiterForm form = new JobWaiterForm(guids.ToArray());

            form.jobWaiter.onAllJobsCompleted += async delegate
            {
                await _controller.LoadLabels();

                RefreshDataInAdapter();
            };
            form.Show();
        }
        public async Task LoadLabels()
        {
            var labels = await ApiBoundary.GetLabels(_state.Info.Name);

            _state.Labels = labels.ToList();

            profileSelector.Refresh();
        }
        private async void LabelGenerateForm_Load(object sender, EventArgs e)
        {
            EnableProgress(true);
            var fields = await ApiBoundary.GetFieldNames(_controller.State.Info.Name);

            comboBoxFieldName.Items.AddRange(fields);
            comboBoxFieldName.Enabled = true;
            EnableProgress(false);
        }
Beispiel #8
0
        private async void cbFiles_SelectedIndexChanged(object sender, EventArgs e)
        {
            var fields = await ApiBoundary.GetHeaders(cbFiles.SelectedItem.ToString());

            cbGroupingField.SelectedIndex = -1;
            cbGroupingField.Items.Clear();
            cbGroupingField.Items.AddRange(fields);
            cbTimeField.Items.AddRange(fields);
        }
Beispiel #9
0
        private async void checkTimer_Tick(object sender, EventArgs e)
        {
            checkTimer.Stop();
            _jobInfos.Clear();
            foreach (var jobId in _jobIds)
            {
                var info = await ApiBoundary.GetJobInfo(jobId);

                _jobInfos.Add(info);
            }

            int finishedCount = _jobInfos.Count(t => !IsJobPendingOrActive(t));

            lbStatus.Text = MakeLabel();
            if (_jobInfos.Count > 1)
            {
                progressBar1.Value = finishedCount * 100 / _jobIds.Length;
            }
            else
            {
                var info = JobInfos[0];
                if (info.Progress == null)
                {
                    progressBar1.Style = ProgressBarStyle.Marquee;
                }
                else
                {
                    progressBar1.Style = ProgressBarStyle.Blocks;
                    if (info.Progress.TotalStagesCount > 0)
                    {
                        progressBar1.Value = info.Progress.CurrentStagePercentage;
                    }
                    else
                    {
                        progressBar1.Value = info.Progress.OverallProgress;
                    }
                }
            }

            if (finishedCount == _jobIds.Length)
            {
                //all jobs done
                onAllJobsCompleted?.Invoke();
                progressBar1.Style = ProgressBarStyle.Blocks;
            }
            else
            {
                checkTimer.Start();
            }
        }
        private async void buttonCreate_Click(object sender, EventArgs e)
        {
            var selected = new List <string>(checkedListBoxValues.CheckedItems.Cast <string>());

            if (selected.Count < 2)
            {
                MessageBox.Show("Select at least two values, each value will represent one node in process map");
                return;
            }

            var mapName = tbMapName.Text;

            if (string.IsNullOrEmpty(mapName))
            {
                MessageBox.Show("Enter map name");
                return;
            }

            var profileName = $"_map_{mapName}_autogenerated";
            var fieldName   = selectedField;
            var labels      = selected.Select(t => MakeLabel(fieldName, t, profileName)).ToList();

            foreach (var logLabel in labels)
            {
                await _controller.AddLabel(logLabel);
            }
            Job = new ProcessMapJob()
            {
                Labels  = labels.Select(t => t._id).ToArray(),
                LogName = _controller.State.Info.Name,
                MapName = mapName,
                Id      = Guid.NewGuid(),
                MapId   = Guid.NewGuid()
            };

            await ApiBoundary.AddProcessMapJob(Job);

            JobWaiterForm form = new JobWaiterForm(Job.Id);
            var           res  = form.ShowDialog();

            if (res == DialogResult.OK)
            {
                btOpenMap.Enabled = true;
            }
            else
            {
                Close();
            }
        }
        public async void OpenNewLog(string name)
        {
            var info = await ApiBoundary.GetLogInfo(name);

            _state.Info = info;
            _state.Pos  = 0;

            //_state.Labels = labels.ToList();
            await LoadLabels();

            //refresh views
            //MessageBox.Show(JsonConvert.SerializeObject(info, Formatting.Indented));
            _form.Text = info.Name + " - LogExplorer";
            mainView.Refresh();
            profileSelector.Refresh();
            LoadLazyLogIfNeeded();
        }
Beispiel #12
0
        private async void btCache_Click(object sender, EventArgs e)
        {
            var job = new CacheLabelJob()
            {
                LabelId = data._id,
                LogName = _controller.State.Info.Name
            };
            await ApiBoundary.AddCacheLabelJob(job);

            JobWaiterForm form = new JobWaiterForm(new Guid[] { job.Id });

            form.jobWaiter.onAllJobsCompleted += async delegate
            {
                await _controller.LoadLabels();

                RaiseOnDataDirty();
            };
            form.Show();

            //MessageBox.Show("Added job, you may continue to work, do not click this button again");
        }
        private async void LoadLazyLogIfNeeded(bool reallyNeeded = false)
        {
            if (State.Info == null)
            {
                return;
            }
            var posWas = State.Pos;
            await Task.Delay(50);

            if (posWas != State.Pos && !reallyNeeded)
            {
                return;
            }

            if (!State.Log.CoversWindow(State.Pos, State.Pos + State.TracesInView))
            {
                var data = await ApiBoundary.GetLogAtPos(State.Info.Name, State.Pos, State.TracesInView, State.Labels.Where(t => t.ProfileName == State.ActiveLabelProfile).Select(t => t._id).ToArray());

                State.Log.PushData(data);
                OnLazyLogLoaded();
            }
        }
        private async void comboBoxLabelField_SelectedIndexChanged(object sender, EventArgs e)
        {
            var selectedName = comboBoxLabelField.SelectedItem.ToString();

            selectedField = selectedName;
            var distinctValues = await ApiBoundary.GetDistinctFieldValues(_controller.State.Info.Name, selectedName);

            if (distinctValues == null)
            {
                MessageBox.Show("Too much values of given field, select another field");
                buttonCreate.Enabled = false;
                checkedListBoxValues.Items.Clear();
                return;
            }
            checkedListBoxValues.Items.Clear();
            checkedListBoxValues.Items.AddRange(distinctValues.Cast <object>().ToArray());
            for (int i = 0; i < checkedListBoxValues.Items.Count; i++)
            {
                checkedListBoxValues.SetItemChecked(i, true);
            }
            buttonCreate.Enabled = true;
        }
        private async void CreateProcessMapBasicForm_Load(object sender, EventArgs e)
        {
            fields = await ApiBoundary.GetFieldNames(_controller.State.Info.Name);

            comboBoxLabelField.Items.AddRange(fields.Cast <object>().ToArray());
        }
        public async Task UpdateLabel(LogLabel label)
        {
            await ApiBoundary.UpdateLabel(label, _state.Info.Name);

            await LoadLabels();
        }
Beispiel #17
0
        private async void btImport_Click(object sender, EventArgs e)
        {
            var fname   = cbFiles.SelectedItem.ToString();
            var logName = tbLogName.Text;

            if (string.IsNullOrWhiteSpace(logName))
            {
                MessageBox.Show("Enter name of the log");
                return;
            }
            var groupingField = cbGroupingField.SelectedItem?.ToString();

            if (groupingField == null)
            {
                MessageBox.Show("Select grouping field");
                return;
            }
            var groupingFieldType = cbGroupingFieldType.SelectedItem?.ToString();

            if (groupingFieldType == null)
            {
                MessageBox.Show("Select grouping field type");
                return;
            }
            var timeField = cbTimeField.SelectedItem?.ToString();

            if (timeField == null)
            {
                MessageBox.Show("Select time field");
                return;
            }
            var timeFieldType = cbTimeFieldType.SelectedItem?.ToString();

            if (timeFieldType == null)
            {
                MessageBox.Show("Select time field type");
                return;
            }

            if (tbDelimiter.Text.Length < 1)
            {
                MessageBox.Show("Enter delimiter character");
                return;
            }

            var delimiter = tbDelimiter.Text[0];

            var guid       = Guid.NewGuid();
            var importArgs = new ImportArgs()
            {
                JobID             = guid,
                LogName           = logName,
                FileName          = fname,
                GroupingField     = groupingField,
                GroupingFieldType = groupingFieldType,
                TimeField         = timeField,
                TimeFieldType     = timeFieldType,
                CsvDelimiter      = delimiter
            };
            await ApiBoundary.AddImportTask(importArgs);

            JobWaiterForm form = new JobWaiterForm(guid);

            form.ShowDialog();
            Close();
            //btJobsRefresh_Click(null, null);
        }
Beispiel #18
0
        private async void OpenMapDialog_Load(object sender, EventArgs e)
        {
            maps = await ApiBoundary.GetMapList(_logname);

            listBox1.Items.AddRange(maps.Select(t => t.Name).Cast <object>().ToArray());
        }