diff --git a/src/Angor/Avalonia/AngorApp/AngorApp.csproj b/src/Angor/Avalonia/AngorApp/AngorApp.csproj index 70f1a57a..0d45d7b5 100644 --- a/src/Angor/Avalonia/AngorApp/AngorApp.csproj +++ b/src/Angor/Avalonia/AngorApp/AngorApp.csproj @@ -23,6 +23,7 @@ All + @@ -33,5 +34,4 @@ - diff --git a/src/Angor/Avalonia/AngorApp/App.axaml b/src/Angor/Avalonia/AngorApp/App.axaml index f9e12a89..dd5e0909 100644 --- a/src/Angor/Avalonia/AngorApp/App.axaml +++ b/src/Angor/Avalonia/AngorApp/App.axaml @@ -2,7 +2,7 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:AngorApp" x:Class="AngorApp.App" - RequestedThemeVariant="Default"> + RequestedThemeVariant="Light"> @@ -13,10 +13,11 @@ + - + diff --git a/src/Angor/Avalonia/AngorApp/Controls/MiscConverters.cs b/src/Angor/Avalonia/AngorApp/Controls/MiscConverters.cs index fd54ebbb..20bad5b3 100644 --- a/src/Angor/Avalonia/AngorApp/Controls/MiscConverters.cs +++ b/src/Angor/Avalonia/AngorApp/Controls/MiscConverters.cs @@ -1,6 +1,8 @@ using AngorApp.Sections.Shell; using Avalonia; using Avalonia.Data.Converters; +using Humanizer; +using Humanizer.DateTimeHumanizeStrategy; using Projektanker.Icons.Avalonia; using Separator = AngorApp.Sections.Shell.Separator; @@ -33,4 +35,9 @@ public static class MiscConverters public static readonly FuncValueConverter IsActivatable = new(sectionBase => sectionBase is not Separator); public static readonly FuncValueConverter IsPrimaryToDock = new(isPrimary => isPrimary ? Dock.Top : Dock.Bottom); + public static readonly FuncValueConverter TimeLeft = new(offset => + { + Humanizer.Configuration.Configurator.DateTimeHumanizeStrategy = new DefaultDateTimeHumanizeStrategy(); + return offset.Humanize(dateToCompareAgainst: DateTimeOffset.Now); + }); } \ No newline at end of file diff --git a/src/Angor/Avalonia/AngorApp/Sections/Browse/Details/IProjectDetailsViewModel.cs b/src/Angor/Avalonia/AngorApp/Sections/Browse/Details/IProjectDetailsViewModel.cs index 9d7a4700..72f0d202 100644 --- a/src/Angor/Avalonia/AngorApp/Sections/Browse/Details/IProjectDetailsViewModel.cs +++ b/src/Angor/Avalonia/AngorApp/Sections/Browse/Details/IProjectDetailsViewModel.cs @@ -6,4 +6,13 @@ public interface IProjectDetailsViewModel : IProject string ShortDescription { get; } object Icon { get; } object Picture { get; } + public IEnumerable Stages { get; } +} + +public class Stage +{ + public int Index { get; set; } + public double Weight { get; set; } + public DateTimeOffset ReleaseDate { get; set; } + public decimal Amount { get; set; } } \ No newline at end of file diff --git a/src/Angor/Avalonia/AngorApp/Sections/Browse/Details/ProjectDetailsView.axaml b/src/Angor/Avalonia/AngorApp/Sections/Browse/Details/ProjectDetailsView.axaml index cb471ee6..f658e93e 100644 --- a/src/Angor/Avalonia/AngorApp/Sections/Browse/Details/ProjectDetailsView.axaml +++ b/src/Angor/Avalonia/AngorApp/Sections/Browse/Details/ProjectDetailsView.axaml @@ -3,9 +3,9 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:details="clr-namespace:AngorApp.Sections.Browse.Details" - xmlns:angorApp="clr-namespace:AngorApp" xmlns:controls="clr-namespace:AngorApp.Controls" xmlns:a="https://github.com/projektanker/icons.avalonia" + xmlns:z="clr-namespace:Zafiro.Avalonia.Controls.SlimDataGrid;assembly=Zafiro.Avalonia" mc:Ignorable="d" d:DesignWidth="1200" x:Class="AngorApp.Sections.Browse.Details.ProjectDetailsView" x:DataType="details:IProjectDetailsViewModel" ClipToBounds="False"> @@ -13,18 +13,12 @@ - - - - - - @@ -50,6 +44,17 @@ + + + + + + + + + + + diff --git a/src/Angor/Avalonia/AngorApp/Sections/Browse/Details/ProjectDetailsViewModel.cs b/src/Angor/Avalonia/AngorApp/Sections/Browse/Details/ProjectDetailsViewModel.cs index 9bc8f599..32f8a8d6 100644 --- a/src/Angor/Avalonia/AngorApp/Sections/Browse/Details/ProjectDetailsViewModel.cs +++ b/src/Angor/Avalonia/AngorApp/Sections/Browse/Details/ProjectDetailsViewModel.cs @@ -6,4 +6,5 @@ public class ProjectDetailsViewModel(Project project) : ReactiveObject, IProject public string ShortDescription => project.ShortDescription; public object Icon => project.Icon; public object Picture => project.Picture; + public IEnumerable Stages { get; } } \ No newline at end of file diff --git a/src/Angor/Avalonia/AngorApp/Sections/Browse/Details/ProjectDetailsViewModelDesign.cs b/src/Angor/Avalonia/AngorApp/Sections/Browse/Details/ProjectDetailsViewModelDesign.cs index 02ee7fb4..dab5882c 100644 --- a/src/Angor/Avalonia/AngorApp/Sections/Browse/Details/ProjectDetailsViewModelDesign.cs +++ b/src/Angor/Avalonia/AngorApp/Sections/Browse/Details/ProjectDetailsViewModelDesign.cs @@ -12,4 +12,12 @@ public ProjectDetailsViewModelDesign() public string ShortDescription { get; } = "Test Project"; public object Icon { get; } public object Picture { get; } + + public IEnumerable Stages { get; } = + [ + new() { ReleaseDate = DateTimeOffset.Now.Date.AddDays(1), Amount = new decimal(0.1), Index = 1, Weight = 0.25d }, + new() { ReleaseDate = DateTimeOffset.Now.Add(TimeSpan.FromDays(20)), Amount = new decimal(0.4), Index = 2, Weight = 0.25d }, + new() { ReleaseDate = DateTimeOffset.Now.Add(TimeSpan.FromDays(40)), Amount = new decimal(0.3), Index = 3, Weight = 0.25d }, + new() { ReleaseDate = DateTimeOffset.Now.Add(TimeSpan.FromDays(60)), Amount = new decimal(0.2), Index = 4, Weight = 0.25d }, + ]; } \ No newline at end of file diff --git a/src/Angor/Avalonia/AngorApp/Sections/Wallet/WalletView.axaml b/src/Angor/Avalonia/AngorApp/Sections/Wallet/WalletView.axaml index 75786aa4..e54cd61c 100644 --- a/src/Angor/Avalonia/AngorApp/Sections/Wallet/WalletView.axaml +++ b/src/Angor/Avalonia/AngorApp/Sections/Wallet/WalletView.axaml @@ -4,19 +4,26 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:i="https://github.com/projektanker/icons.avalonia" xmlns:controls="clr-namespace:AngorApp.Controls" + xmlns:wallet="clr-namespace:AngorApp.Sections.Wallet" + xmlns:z="clr-namespace:Zafiro.Avalonia.Controls.SlimDataGrid;assembly=Zafiro.Avalonia" mc:Ignorable="d" d:DesignWidth="800" - x:Class="AngorApp.Sections.Wallet.WalletView" ClipToBounds="False"> + x:Class="AngorApp.Sections.Wallet.WalletView" ClipToBounds="False" x:DataType="wallet:IWalletViewModel"> + + + + + + + + - + - - + - - - ADDRESS - AMOUNT - PATH - UTXO COUNT - VIEW RAW JSON - - - + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Angor/Avalonia/AngorApp/Sections/Wallet/WalletViewModel.cs b/src/Angor/Avalonia/AngorApp/Sections/Wallet/WalletViewModel.cs index b9293ea8..a2a10dc0 100644 --- a/src/Angor/Avalonia/AngorApp/Sections/Wallet/WalletViewModel.cs +++ b/src/Angor/Avalonia/AngorApp/Sections/Wallet/WalletViewModel.cs @@ -1,5 +1,57 @@ +using System.Collections.ObjectModel; + namespace AngorApp.Sections.Wallet; -public class WalletViewModel : ReactiveObject +public class WalletViewModel : ReactiveObject, IWalletViewModel +{ + public IWallet Wallet { get; set; } +} + +public interface IWalletViewModel +{ + public IWallet Wallet { get; set; } +} + +public class WalletViewModelDesign : IWalletViewModel +{ + public IWallet Wallet { get; set; } = new WalletDesign(); +} + +public class WalletDesign : IWallet +{ + public IEnumerable History { get; } = + [ + new TransactionDesign() { Address = "someaddress1", Amount = 0.0001m, UtxoCount = 12, Path = "path", ViewRawJson = "json"}, + new TransactionDesign() { Address = "someaddress2", Amount = 0.0003m, UtxoCount = 15, Path = "path", ViewRawJson = "json"}, + new TransactionDesign() { Address = "someaddress3", Amount = 0.0042m, UtxoCount = 15, Path = "path", ViewRawJson = "json"}, + new TransactionDesign() { Address = "someaddress4", Amount = 0.00581m, UtxoCount = 15, Path = "path", ViewRawJson = "json"}, + ]; +} + +public class TransactionDesign : ITransaction +{ + public string Address { get; set; } + public decimal Amount { get; set; } + public string Path { get; set; } + public int UtxoCount { get; set; } + public string ViewRawJson { get; set; } +} + +public interface IWallet +{ + public IEnumerable History { get; } +} + +public class WalletModel : IWallet +{ + public IEnumerable History { get; } +} + +public interface ITransaction { + public string Address { get; } + public decimal Amount { get; } + public string Path { get; } + public int UtxoCount { get; } + public string ViewRawJson { get; } } \ No newline at end of file diff --git a/src/Angor/Avalonia/AngorApp/Styles.axaml b/src/Angor/Avalonia/AngorApp/Styles.axaml index 78e7b933..27b1e4fb 100644 --- a/src/Angor/Avalonia/AngorApp/Styles.axaml +++ b/src/Angor/Avalonia/AngorApp/Styles.axaml @@ -1,7 +1,7 @@ + xmlns:avalonia="https://github.com/projektanker/icons.avalonia" + xmlns:z="clr-namespace:Zafiro.Avalonia.Controls.SlimDataGrid;assembly=Zafiro.Avalonia"> #F5FDFF @@ -24,6 +24,21 @@ + + + + + + + + + + + + + + + @@ -36,8 +51,6 @@ - - diff --git a/src/Angor/Avalonia/Directory.Packages.props b/src/Angor/Avalonia/Directory.Packages.props index 086480c7..76b0c6a5 100644 --- a/src/Angor/Avalonia/Directory.Packages.props +++ b/src/Angor/Avalonia/Directory.Packages.props @@ -20,10 +20,11 @@ + - + \ No newline at end of file