Setup Test UI and Added Prototype DataGrid
This commit is contained in:
		@@ -11,5 +11,6 @@
 | 
				
			|||||||
  
 | 
					  
 | 
				
			||||||
    <Application.Styles>
 | 
					    <Application.Styles>
 | 
				
			||||||
        <FluentTheme />
 | 
					        <FluentTheme />
 | 
				
			||||||
 | 
					        <StyleInclude Source="avares://Avalonia.Controls.DataGrid/Themes/Fluent.xaml"/>
 | 
				
			||||||
    </Application.Styles>
 | 
					    </Application.Styles>
 | 
				
			||||||
</Application>
 | 
					</Application>
 | 
				
			||||||
@@ -2,7 +2,7 @@
 | 
				
			|||||||
using System.Globalization;
 | 
					using System.Globalization;
 | 
				
			||||||
using CSV = CsvHelper.Configuration.Attributes;
 | 
					using CSV = CsvHelper.Configuration.Attributes;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace net.nehmer.sa.model;
 | 
					namespace net.nehmer.sa.Model;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class Planet
 | 
					public class Planet
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,7 +3,7 @@ using System;
 | 
				
			|||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
using System.Numerics;
 | 
					using System.Numerics;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace net.nehmer.sa.model;
 | 
					namespace net.nehmer.sa.Model;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class StarsDatabase(string DbPath) : DbContext
 | 
					public class StarsDatabase(string DbPath) : DbContext
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,12 @@
 | 
				
			|||||||
using System;
 | 
					using System;
 | 
				
			||||||
using Avalonia;
 | 
					using Avalonia;
 | 
				
			||||||
using Avalonia.ReactiveUI;
 | 
					
 | 
				
			||||||
 | 
					using Microsoft.EntityFrameworkCore;
 | 
				
			||||||
 | 
					using CsvHelper.Configuration;
 | 
				
			||||||
 | 
					using CsvHelper;
 | 
				
			||||||
 | 
					using net.nehmer.sa.Model;
 | 
				
			||||||
 | 
					using System.Globalization;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace net.nehmer.sa;
 | 
					namespace net.nehmer.sa;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -10,16 +16,49 @@ sealed class Program
 | 
				
			|||||||
    // SynchronizationContext-reliant code before AppMain is called: things aren't initialized
 | 
					    // SynchronizationContext-reliant code before AppMain is called: things aren't initialized
 | 
				
			||||||
    // yet and stuff might break.
 | 
					    // yet and stuff might break.
 | 
				
			||||||
    [STAThread]
 | 
					    [STAThread]
 | 
				
			||||||
    public static void Main(string[] args) => BuildAvaloniaApp()
 | 
					    public static void Main(string[] args) 
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        // __createTestData();
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        BuildAvaloniaApp()
 | 
				
			||||||
        .StartWithClassicDesktopLifetime(args);
 | 
					        .StartWithClassicDesktopLifetime(args);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Avalonia configuration, don't remove; also used by visual designer.
 | 
					    // Avalonia configuration, don't remove; also used by visual designer.
 | 
				
			||||||
    public static AppBuilder BuildAvaloniaApp()
 | 
					    public static AppBuilder BuildAvaloniaApp()
 | 
				
			||||||
        => AppBuilder.Configure<App>()
 | 
					        => AppBuilder.Configure<App>()
 | 
				
			||||||
            .UsePlatformDetect()
 | 
					            .UsePlatformDetect()
 | 
				
			||||||
            .WithInterFont()
 | 
					            .WithInterFont()
 | 
				
			||||||
            .LogToTrace()
 | 
					            .LogToTrace();
 | 
				
			||||||
            .UseReactiveUI();
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static void __createTestData ()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        using var db = new StarsDatabase("stars.sqlite");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        db.Database.EnsureDeleted();
 | 
				
			||||||
 | 
					        db.Database.EnsureCreated();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Note: This sample requires the database to be created before running.
 | 
				
			||||||
 | 
					        Console.WriteLine($"Database path: {db.DbPath}.");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        var config = CsvConfiguration.FromAttributes<Planet>(CultureInfo.InvariantCulture);
 | 
				
			||||||
 | 
					        config.Delimiter = "\t";
 | 
				
			||||||
 | 
					        config.Escape = '\0';
 | 
				
			||||||
 | 
					        config.MissingFieldFound = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        using (var reader = new StreamReader("/home/torben/goingth/GOINGTH.p1", System.Text.Encoding.Latin1))
 | 
				
			||||||
 | 
					        using (var csv = new CsvReader(reader, config))
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            List<Planet> records = csv.GetRecords<Planet>().ToList();
 | 
				
			||||||
 | 
					            foreach (Planet p in records)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                db.Add(p);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            db.SaveChanges();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,12 +23,12 @@
 | 
				
			|||||||
    <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.7" />
 | 
					    <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.7" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <PackageReference Include="Avalonia" Version="11.0.10" />
 | 
					    <PackageReference Include="Avalonia" Version="11.0.10" />
 | 
				
			||||||
 | 
					    <PackageReference Include="Avalonia.Controls.DataGrid" Version="11.0.10" />
 | 
				
			||||||
    <PackageReference Include="Avalonia.Desktop" Version="11.0.10" />
 | 
					    <PackageReference Include="Avalonia.Desktop" Version="11.0.10" />
 | 
				
			||||||
    <PackageReference Include="Avalonia.Themes.Fluent" Version="11.0.10" />
 | 
					    <PackageReference Include="Avalonia.Themes.Fluent" Version="11.0.10" />
 | 
				
			||||||
    <PackageReference Include="Avalonia.Fonts.Inter" Version="11.0.10" />
 | 
					    <PackageReference Include="Avalonia.Fonts.Inter" Version="11.0.10" />
 | 
				
			||||||
    <!--Condition below is needed to remove Avalonia.Diagnostics package from build output in Release configuration.-->
 | 
					    <!--Condition below is needed to remove Avalonia.Diagnostics package from build output in Release configuration.-->
 | 
				
			||||||
    <PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="11.0.10" />
 | 
					    <PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="11.0.10" />
 | 
				
			||||||
    <PackageReference Include="Avalonia.ReactiveUI" Version="11.0.10" />
 | 
					 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
</Project>
 | 
					</Project>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,8 +1,13 @@
 | 
				
			|||||||
namespace net.nehmer.sa.ViewModels;
 | 
					using System.Collections.ObjectModel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class MainWindowViewModel : ViewModelBase
 | 
					namespace net.nehmer.sa.ViewModels;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public partial class MainWindowViewModel : ViewModelBase
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#pragma warning disable CA1822 // Mark members as static
 | 
					#pragma warning disable CA1822 // Mark members as static
 | 
				
			||||||
    public string Greeting => "Welcome to Stars Assistant!";
 | 
					    public string Greeting => "Welcome to Stars Assistant!";
 | 
				
			||||||
#pragma warning restore CA1822 // Mark members as static
 | 
					#pragma warning restore CA1822 // Mark members as static
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public ObservableCollection<PlanetViewModel> Planets { get; } = PlanetViewModel.LoadAll();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										26
									
								
								Stars Assistant/ViewModels/PlanetViewModel.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								Stars Assistant/ViewModels/PlanetViewModel.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
				
			|||||||
 | 
					using System.Collections.ObjectModel;
 | 
				
			||||||
 | 
					using net.nehmer.sa.Model;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace net.nehmer.sa.ViewModels;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public partial class PlanetViewModel(Planet planet) : ViewModelBase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public static ObservableCollection<PlanetViewModel> LoadAll() {
 | 
				
			||||||
 | 
					        var context = new StarsDatabase("stars.sqlite");
 | 
				
			||||||
 | 
					        var result = new ObservableCollection<PlanetViewModel>();
 | 
				
			||||||
 | 
					        foreach (Planet planet in context.Planets.ToList())
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var vm = new PlanetViewModel(planet);
 | 
				
			||||||
 | 
					            result.Add(vm);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return result;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private readonly Planet planet = planet;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public string Name => planet.Name;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public string Owner => planet.Owner ?? String.Empty;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int Value => planet.Value ?? 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
using ReactiveUI;
 | 
					using CommunityToolkit.Mvvm.ComponentModel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace net.nehmer.sa.ViewModels;
 | 
					namespace net.nehmer.sa.ViewModels;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class ViewModelBase : ReactiveObject
 | 
					public class ViewModelBase : ObservableObject
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,6 +27,26 @@
 | 
				
			|||||||
            <TextBox Grid.Row="1"  Grid.Column="1" Margin="0 5" Text="0" Name="fahrenheit"/>
 | 
					            <TextBox Grid.Row="1"  Grid.Column="1" Margin="0 5" Text="0" Name="fahrenheit"/>
 | 
				
			||||||
            <Button Grid.Row="2" Grid.Column="1" Margin="0 5" Click="ButtonClicked">Calculate</Button>
 | 
					            <Button Grid.Row="2" Grid.Column="1" Margin="0 5" Click="ButtonClicked">Calculate</Button>
 | 
				
			||||||
        </Grid>
 | 
					        </Grid>
 | 
				
			||||||
 | 
					        <DataGrid Margin="20" ItemsSource="{Binding Planets}"   
 | 
				
			||||||
 | 
					            AutoGenerateColumns="True" IsReadOnly="True" 
 | 
				
			||||||
 | 
					            GridLinesVisibility="All"
 | 
				
			||||||
 | 
					            BorderThickness="1" BorderBrush="Gray">
 | 
				
			||||||
 | 
					        </DataGrid>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <!-- ScrollViewer>
 | 
				
			||||||
 | 
					            <ItemsControl ItemsSource="{Binding Planets}">
 | 
				
			||||||
 | 
					                <ItemsControl.ItemTemplate>
 | 
				
			||||||
 | 
					                    <DataTemplate DataType="vm:PlanetViewModel">
 | 
				
			||||||
 | 
					                        <Grid ColumnDefinitions="200, 100, 50">
 | 
				
			||||||
 | 
					                            <TextBlock Grid.Column="0" Text="{Binding Name}"/>
 | 
				
			||||||
 | 
					                            <TextBlock Grid.Column="1" Text="{Binding Owner}"/>
 | 
				
			||||||
 | 
					                            <TextBlock Grid.Column="2" Text="{Binding Value}"/>
 | 
				
			||||||
 | 
					                        </Grid>
 | 
				
			||||||
 | 
					                    </DataTemplate>
 | 
				
			||||||
 | 
					                </ItemsControl.ItemTemplate>
 | 
				
			||||||
 | 
					            </ItemsControl>
 | 
				
			||||||
 | 
					        </ScrollViewer-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  </StackPanel>
 | 
					  </StackPanel>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
</Window>
 | 
					</Window>
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user