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))); } }
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; } }