mirror of
				https://github.com/nsnail/spectre.console.git
				synced 2025-11-04 10:35:27 +08:00 
			
		
		
		
	Add live display support
This commit also adds functionality to LiveRenderable that should fix some problems related to vertical overflow. Closes #316 Closes #415
This commit is contained in:
		
				
					committed by
					
						
						Phil Scott
					
				
			
			
				
	
			
			
			
						parent
						
							5d68020abb
						
					
				
				
					commit
					3dea412785
				
			
							
								
								
									
										15
									
								
								examples/Console/Live/Live.csproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								examples/Console/Live/Live.csproj
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
			
		||||
<Project Sdk="Microsoft.NET.Sdk">
 | 
			
		||||
 | 
			
		||||
  <PropertyGroup>
 | 
			
		||||
    <OutputType>Exe</OutputType>
 | 
			
		||||
    <TargetFramework>net5.0</TargetFramework>
 | 
			
		||||
    <ExampleTitle>Live</ExampleTitle>
 | 
			
		||||
    <ExampleDescription>Demonstrates how to do live updates.</ExampleDescription>
 | 
			
		||||
    <ExampleGroup>Misc</ExampleGroup>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <ProjectReference Include="..\..\Shared\Shared.csproj" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
 | 
			
		||||
</Project>
 | 
			
		||||
							
								
								
									
										108
									
								
								examples/Console/Live/Program.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										108
									
								
								examples/Console/Live/Program.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,108 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Threading;
 | 
			
		||||
 | 
			
		||||
namespace Spectre.Console.Examples
 | 
			
		||||
{
 | 
			
		||||
    public static class Program
 | 
			
		||||
    {
 | 
			
		||||
        public static void Main()
 | 
			
		||||
        {
 | 
			
		||||
            var table = new Table().Centered();
 | 
			
		||||
 | 
			
		||||
            // Animate
 | 
			
		||||
            AnsiConsole.Live(table)
 | 
			
		||||
                .AutoClear(false)
 | 
			
		||||
                .Overflow(VerticalOverflow.Ellipsis)
 | 
			
		||||
                .Cropping(VerticalOverflowCropping.Top)
 | 
			
		||||
                .Start(ctx =>
 | 
			
		||||
                {
 | 
			
		||||
                    void Update(int delay, Action action)
 | 
			
		||||
                    {
 | 
			
		||||
                        action();
 | 
			
		||||
                        ctx.Refresh();
 | 
			
		||||
                        Thread.Sleep(delay);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    // Columns
 | 
			
		||||
                    Update(230, () => table.AddColumn("Release date"));
 | 
			
		||||
                    Update(230, () => table.AddColumn("Title"));
 | 
			
		||||
                    Update(230, () => table.AddColumn("Budget"));
 | 
			
		||||
                    Update(230, () => table.AddColumn("Opening Weekend"));
 | 
			
		||||
                    Update(230, () => table.AddColumn("Box office"));
 | 
			
		||||
 | 
			
		||||
                    // Rows
 | 
			
		||||
                    Update(70, () => table.AddRow("May 25, 1977", "[yellow]Star Wars[/] [grey]Ep.[/] [u]IV[/]", "$11,000,000", "$1,554,475", "$775,398,007"));
 | 
			
		||||
                    Update(70, () => table.AddRow("May 21, 1980", "[yellow]Star Wars[/] [grey]Ep.[/] [u]V[/]", "$18,000,000", "$4,910,483", "$547,969,004"));
 | 
			
		||||
                    Update(70, () => table.AddRow("May 25, 1983", "[yellow]Star Wars[/] [grey]Ep.[/] [u]VI[/]", "$32,500,000", "$23,019,618", "$475,106,177"));
 | 
			
		||||
                    Update(70, () => table.AddRow("May 19, 1999", "[yellow]Star Wars[/] [grey]Ep.[/] [u]I[/]", "$115,000,000", "$64,810,870", "$1,027,044,677"));
 | 
			
		||||
                    Update(70, () => table.AddRow("May 16, 2002", "[yellow]Star Wars[/] [grey]Ep.[/] [u]II[/]", "$115,000,000", "$80,027,814", "$649,436,358"));
 | 
			
		||||
                    Update(70, () => table.AddRow("May 19, 2005", "[yellow]Star Wars[/] [grey]Ep.[/] [u]III[/]", "$113,000,000", "$108,435,841", "$850,035,635"));
 | 
			
		||||
                    Update(70, () => table.AddRow("Dec 18, 2015", "[yellow]Star Wars[/] [grey]Ep.[/] [u]VII[/]", "$245,000,000", "$247,966,675", "$2,068,223,624"));
 | 
			
		||||
                    Update(70, () => table.AddRow("Dec 15, 2017", "[yellow]Star Wars[/] [grey]Ep.[/] [u]VIII[/]", "$317,000,000", "$220,009,584", "$1,333,539,889"));
 | 
			
		||||
                    Update(70, () => table.AddRow("Dec 20, 2019", "[yellow]Star Wars[/] [grey]Ep.[/] [u]IX[/]", "$245,000,000", "$177,383,864", "$1,074,114,248"));
 | 
			
		||||
                    Update(70, () => table.AddRow("May 25, 1977", "[yellow]Star Wars[/] [grey]Ep.[/] [u]IV[/]", "$11,000,000", "$1,554,475", "$775,398,007"));
 | 
			
		||||
                    Update(70, () => table.AddRow("May 21, 1980", "[yellow]Star Wars[/] [grey]Ep.[/] [u]V[/]", "18,000,000", "$4,910,483", "$547,969,004"));
 | 
			
		||||
                    Update(70, () => table.AddRow("May 25, 1983", "[yellow]Star Wars[/] [grey]Ep.[/] [u]VI[/]", "$32,500,000", "$23,019,618", "$475,106,177"));
 | 
			
		||||
                    Update(70, () => table.AddRow("May 19, 1999", "[yellow]Star Wars[/] [grey]Ep.[/] [u]I[/]", "$115,000,000", "$64,810,870", "$1,027,044,677"));
 | 
			
		||||
                    Update(70, () => table.AddRow("May 16, 2002", "[yellow]Star Wars[/] [grey]Ep.[/] [u]II[/]", "$115,000,000", "$80,027,814", "$649,436,358"));
 | 
			
		||||
                    Update(70, () => table.AddRow("May 19, 2005", "[yellow]Star Wars[/] [grey]Ep.[/] [u]III[/]", "$113,000,000", "$108,435,841", "$850,035,635"));
 | 
			
		||||
                    Update(70, () => table.AddRow("Dec 18, 2015", "[yellow]Star Wars[/] [grey]Ep.[/] [u]VII[/]", "$245,000,000", "$247,966,675", "$2,068,223,624"));
 | 
			
		||||
                    Update(70, () => table.AddRow("Dec 15, 2017", "[yellow]Star Wars[/] [grey]Ep.[/] [u]VIII[/]", "$317,000,000", "$220,009,584", "$1,333,539,889"));
 | 
			
		||||
                    Update(70, () => table.AddRow("Dec 20, 2019", "[yellow]Star Wars[/] [grey]Ep.[/] [u]IX[/]", "$245,000,000", "$177,383,864", "$1,074,114,248"));
 | 
			
		||||
                    Update(70, () => table.AddRow("May 25, 1977", "[yellow]Star Wars[/] [grey]Ep.[/] [u]IV[/]", "$11,000,000", "$1,554,475", "$775,398,007"));
 | 
			
		||||
                    Update(70, () => table.AddRow("May 21, 1980", "[yellow]Star Wars[/] [grey]Ep.[/] [u]V[/]", "18,000,000", "$4,910,483", "$547,969,004"));
 | 
			
		||||
                    Update(70, () => table.AddRow("May 25, 1983", "[yellow]Star Wars[/] [grey]Ep.[/] [u]VI[/]", "$32,500,000", "$23,019,618", "$475,106,177"));
 | 
			
		||||
                    Update(70, () => table.AddRow("May 19, 1999", "[yellow]Star Wars[/] [grey]Ep.[/] [u]I[/]", "$115,000,000", "$64,810,870", "$1,027,044,677"));
 | 
			
		||||
                    Update(70, () => table.AddRow("May 16, 2002", "[yellow]Star Wars[/] [grey]Ep.[/] [u]II[/]", "$115,000,000", "$80,027,814", "$649,436,358"));
 | 
			
		||||
                    Update(70, () => table.AddRow("May 19, 2005", "[yellow]Star Wars[/] [grey]Ep.[/] [u]III[/]", "$113,000,000", "$108,435,841", "$850,035,635"));
 | 
			
		||||
                    Update(70, () => table.AddRow("Dec 18, 2015", "[yellow]Star Wars[/] [grey]Ep.[/] [u]VII[/]", "$245,000,000", "$247,966,675", "$2,068,223,624"));
 | 
			
		||||
                    Update(70, () => table.AddRow("Dec 15, 2017", "[yellow]Star Wars[/] [grey]Ep.[/] [u]VIII[/]", "$317,000,000", "$220,009,584", "$1,333,539,889"));
 | 
			
		||||
                    Update(70, () => table.AddRow("Dec 20, 2019", "[yellow]Star Wars[/] [grey]Ep.[/] [u]IX[/]", "$245,000,000", "$177,383,864", "$1,074,114,248"));
 | 
			
		||||
                    Update(70, () => table.AddRow("May 25, 1977", "[yellow]Star Wars[/] [grey]Ep.[/] [u]IV[/]", "$11,000,000", "$1,554,475", "$775,398,007"));
 | 
			
		||||
                    Update(70, () => table.AddRow("May 21, 1980", "[yellow]Star Wars[/] [grey]Ep.[/] [u]V[/]", "18,000,000", "$4,910,483", "$547,969,004"));
 | 
			
		||||
                    Update(70, () => table.AddRow("May 25, 1983", "[yellow]Star Wars[/] [grey]Ep.[/] [u]VI[/]", "$32,500,000", "$23,019,618", "$475,106,177"));
 | 
			
		||||
                    Update(70, () => table.AddRow("May 19, 1999", "[yellow]Star Wars[/] [grey]Ep.[/] [u]I[/]", "$115,000,000", "$64,810,870", "$1,027,044,677"));
 | 
			
		||||
                    Update(70, () => table.AddRow("May 16, 2002", "[yellow]Star Wars[/] [grey]Ep.[/] [u]II[/]", "$115,000,000", "$80,027,814", "$649,436,358"));
 | 
			
		||||
                    Update(70, () => table.AddRow("May 19, 2005", "[yellow]Star Wars[/] [grey]Ep.[/] [u]III[/]", "$113,000,000", "$108,435,841", "$850,035,635"));
 | 
			
		||||
                    Update(70, () => table.AddRow("Dec 18, 2015", "[yellow]Star Wars[/] [grey]Ep.[/] [u]VII[/]", "$245,000,000", "$247,966,675", "$2,068,223,624"));
 | 
			
		||||
                    Update(70, () => table.AddRow("Dec 15, 2017", "[yellow]Star Wars[/] [grey]Ep.[/] [u]VIII[/]", "$317,000,000", "$220,009,584", "$1,333,539,889"));
 | 
			
		||||
                    Update(70, () => table.AddRow("Dec 20, 2019", "[yellow]Star Wars[/] [grey]Ep.[/] [u]IX[/]", "$245,000,000", "$177,383,864", "$1,074,114,248"));
 | 
			
		||||
 | 
			
		||||
                    // Column footer
 | 
			
		||||
                    Update(230, () => table.Columns[2].Footer("$1,633,000,000"));
 | 
			
		||||
                    Update(230, () => table.Columns[3].Footer("$928,119,224"));
 | 
			
		||||
                    Update(400, () => table.Columns[4].Footer("$10,318,030,576"));
 | 
			
		||||
 | 
			
		||||
                    // Column alignment
 | 
			
		||||
                    Update(230, () => table.Columns[2].RightAligned());
 | 
			
		||||
                    Update(230, () => table.Columns[3].RightAligned());
 | 
			
		||||
                    Update(400, () => table.Columns[4].RightAligned());
 | 
			
		||||
 | 
			
		||||
                    // Column titles
 | 
			
		||||
                    Update(70, () => table.Columns[0].Header("[bold]Release date[/]"));
 | 
			
		||||
                    Update(70, () => table.Columns[1].Header("[bold]Title[/]"));
 | 
			
		||||
                    Update(70, () => table.Columns[2].Header("[red bold]Budget[/]"));
 | 
			
		||||
                    Update(70, () => table.Columns[3].Header("[green bold]Opening Weekend[/]"));
 | 
			
		||||
                    Update(400, () => table.Columns[4].Header("[blue bold]Box office[/]"));
 | 
			
		||||
 | 
			
		||||
                    // Footers
 | 
			
		||||
                    Update(70, () => table.Columns[2].Footer("[red bold]$1,633,000,000[/]"));
 | 
			
		||||
                    Update(70, () => table.Columns[3].Footer("[green bold]$928,119,224[/]"));
 | 
			
		||||
                    Update(400, () => table.Columns[4].Footer("[blue bold]$10,318,030,576[/]"));
 | 
			
		||||
 | 
			
		||||
                    // Title
 | 
			
		||||
                    Update(500, () => table.Title("Star Wars Movies"));
 | 
			
		||||
                    Update(400, () => table.Title("[[ [yellow]Star Wars Movies[/] ]]"));
 | 
			
		||||
 | 
			
		||||
                    // Borders
 | 
			
		||||
                    Update(230, () => table.BorderColor(Color.Yellow));
 | 
			
		||||
                    Update(230, () => table.MinimalBorder());
 | 
			
		||||
                    Update(230, () => table.SimpleBorder());
 | 
			
		||||
                    Update(230, () => table.SimpleHeavyBorder());
 | 
			
		||||
 | 
			
		||||
                    // Caption
 | 
			
		||||
                    Update(400, () => table.Caption("[[ [blue]THE END[/] ]]"));
 | 
			
		||||
                });
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -4,11 +4,7 @@ namespace Spectre.Console.Examples
 | 
			
		||||
    {
 | 
			
		||||
        public static void Main()
 | 
			
		||||
        {
 | 
			
		||||
            // Create the table.
 | 
			
		||||
            var table = CreateTable();
 | 
			
		||||
 | 
			
		||||
            // Render the table.
 | 
			
		||||
            AnsiConsole.Render(table);
 | 
			
		||||
            AnsiConsole.Render(CreateTable());
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private static Table CreateTable()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user