Esempio n. 1
0
        public override void Update(ProgressContext context)
        {
            lock (_lock)
            {
                var hasStartedTasks = false;
                var updates         = new List <(string, double)>();

                foreach (var task in context.GetTasks())
                {
                    if (!task.IsStarted || task.IsFinished)
                    {
                        continue;
                    }

                    hasStartedTasks = true;

                    if (TryAdvance(task.Id, task.Percentage))
                    {
                        updates.Add((task.Description, task.Percentage));
                    }
                }

                // Got started tasks but no updates for 30 seconds?
                if (hasStartedTasks && updates.Count == 0 && (DateTime.Now - _lastUpdate) > TimeSpan.FromSeconds(30))
                {
                    foreach (var task in context.GetTasks())
                    {
                        updates.Add((task.Description, task.Percentage));
                    }
                }

                if (updates.Count > 0)
                {
                    _lastUpdate = DateTime.Now;
                }

                _renderable = BuildTaskGrid(updates);
            }
        }
        public override void Update(ProgressContext context)
        {
            lock (_lock)
            {
                if (!_stopwatch.IsRunning)
                {
                    _stopwatch.Start();
                }

                var renderContext = new RenderContext(_console.Profile.Encoding, _console.Profile.Capabilities.Legacy);

                var delta = _stopwatch.Elapsed - _lastUpdate;
                _lastUpdate = _stopwatch.Elapsed;

                var grid = new Grid();
                for (var columnIndex = 0; columnIndex < _columns.Count; columnIndex++)
                {
                    var column = new GridColumn().PadRight(1);

                    var columnWidth = _columns[columnIndex].GetColumnWidth(renderContext);
                    if (columnWidth != null)
                    {
                        column.Width = columnWidth;
                    }

                    if (_columns[columnIndex].NoWrap)
                    {
                        column.NoWrap();
                    }

                    // Last column?
                    if (columnIndex == _columns.Count - 1)
                    {
                        column.PadRight(0);
                    }

                    grid.AddColumn(column);
                }

                // Add rows
                foreach (var task in context.GetTasks())
                {
                    var columns = _columns.Select(column => column.Render(renderContext, task, delta));
                    grid.AddRow(columns.ToArray());
                }

                _live.SetRenderable(new Padder(grid, new Padding(0, 1)));
            }
        }
Esempio n. 3
0
        public override void Update(ProgressContext context)
        {
            lock (_lock)
            {
                var task = context.GetTasks().SingleOrDefault();
                if (task != null)
                {
                    // Not same description?
                    if (_lastStatus != task.Description)
                    {
                        _lastStatus = task.Description;
                        _renderable = new Markup(task.Description + Environment.NewLine);
                        return;
                    }
                }

                _renderable = null;
                return;
            }
        }