|
4 | 4 | Track the Progress of one or more Tasks (like downloading multiple files in |
5 | 5 | parallel). |
6 | 6 |
|
| 7 | +## Sample Progress Tracking |
| 8 | + |
| 9 | +<img src="images/demo.gif" width="640px"/> |
| 10 | + |
| 11 | +A demonstration of all the capabilities can be found here: |
| 12 | +[../cmd/demo-progress](../cmd/demo-progress) |
| 13 | + |
| 14 | +## Features |
| 15 | + |
| 16 | +### Core Tracking |
| 17 | + |
7 | 18 | - Track one or more Tasks at the same time |
| 19 | + - Support for both determinate (with Total) and indeterminate (without Total) |
| 20 | + trackers |
| 21 | + - Error tracking with `MarkAsErrored()` for failed tasks |
| 22 | + - ETA (Estimated Time of Arrival) calculation for each tracker |
| 23 | + - Speed calculation (items/bytes per second) with customizable formatters |
| 24 | + - Overall progress tracker that aggregates progress across all trackers |
| 25 | + |
| 26 | +### Tracker Management |
| 27 | + |
8 | 28 | - Dynamically add one or more Task Trackers while `Render()` is in progress |
| 29 | + - Sort trackers by Message, Percentage, or Value (ascending/descending) |
| 30 | + - Tracker options |
| 31 | + - `DeferStart` - Delay tracker start until manually triggered |
| 32 | + - `RemoveOnCompletion` - Hide tracker when done instead of showing completion |
| 33 | + - `AutoStopDisabled` - Prevent auto-completion when value exceeds total |
| 34 | + |
| 35 | +### Display & Rendering |
| 36 | + |
9 | 37 | - Choose to have the Writer auto-stop the Render when no more Trackers are |
10 | 38 | in queue, or manually stop using `Stop()` |
11 | 39 | - Redirect output to an io.Writer object (like os.StdOut) |
| 40 | + - Pinned messages that stay visible above all trackers |
| 41 | + - Log messages during rendering that appear temporarily |
| 42 | + - Automatic terminal width detection to prevent line wrapping |
| 43 | + - Flexible tracker positioning (left or right of message) |
| 44 | + - Configurable update frequency for smooth rendering |
| 45 | + |
| 46 | +### Customization & Styling |
| 47 | + |
12 | 48 | - Completely customizable styles |
13 | 49 | - Many ready-to-use styles: [style.go](style.go) |
| 50 | + - `StyleDefault` - ASCII characters |
| 51 | + - `StyleBlocks` - UNICODE Block Drawing characters |
| 52 | + - `StyleCircle` - UNICODE Circle runes |
| 53 | + - `StyleRhombus` - UNICODE Rhombus runes |
14 | 54 | - Colorize various parts of the Tracker using `StyleColors` |
15 | 55 | - Customize how Trackers get rendered using `StyleOptions` |
| 56 | + - Control visibility of components (ETA, Speed, Time, Value, etc.) |
| 57 | + - Custom renderers for determinate and indeterminate progress bars |
| 58 | + - Multiple indeterminate indicator animations |
| 59 | + - Moving back and forth |
| 60 | + - Moving left to right |
| 61 | + - Moving right to left |
| 62 | + - Dominoes effect |
| 63 | + - Pac-Man chomping animation |
| 64 | + - Colored variants |
16 | 65 |
|
17 | | -A demonstration of all the capabilities can be found here: |
18 | | -[../cmd/demo-progress](../cmd/demo-progress) |
19 | | - |
20 | | -## Sample Progress Tracking |
21 | | - |
22 | | -<img src="images/demo.gif" width="640px"/> |
23 | | - |
24 | | -# TODO |
| 66 | +### Units & Formatting |
25 | 67 |
|
26 | | - - Optimize CPU and Memory Usage |
| 68 | + - Built-in unit formatters |
| 69 | + - `UnitsDefault` - Regular numbers (K, M, B, T, Q notation) |
| 70 | + - `UnitsBytes` - Storage units (B, KB, MB, GB, TB, PB) |
| 71 | + - `UnitsCurrencyDollar` - Dollar amounts ($x.yzK, etc.) |
| 72 | + - `UnitsCurrencyEuro` - Euro amounts (₠x.yzK, etc.) |
| 73 | + - `UnitsCurrencyPound` - Pound amounts (£x.yzK, etc.) |
0 commit comments