Avalonia Start
This commit is contained in:
@@ -71,7 +71,7 @@ namespace LaDOSE.Api.Controllers
|
||||
});
|
||||
}
|
||||
|
||||
//[AllowAnonymous]
|
||||
[AllowAnonymous]
|
||||
[HttpPost("register")]
|
||||
public IActionResult Register([FromBody]ApplicationUser userDto)
|
||||
{
|
||||
|
||||
@@ -40,11 +40,6 @@ namespace LaDOSE.Api
|
||||
public void ConfigureServices(IServiceCollection services)
|
||||
{
|
||||
//Fix Gentoo Issue.
|
||||
|
||||
var MySqlServer = this.Configuration["MySql:Server"];
|
||||
var MySqlDatabase = this.Configuration["MySql:Database"];
|
||||
var MySqlUser = this.Configuration["MySql:User"];
|
||||
var MySqlPassword = this.Configuration["MySql:Password"];
|
||||
if (Convert.ToBoolean(this.Configuration["FixGentoo"]))
|
||||
{
|
||||
try
|
||||
|
||||
11
LaDOSE.Src/LaDOSE.DesktopApp.Avalonia/App.axaml
Normal file
11
LaDOSE.Src/LaDOSE.DesktopApp.Avalonia/App.axaml
Normal file
@@ -0,0 +1,11 @@
|
||||
<Application xmlns="https://github.com/avaloniaui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
x:Class="LaDOSE.DesktopApp.Avalonia.App"
|
||||
xmlns:local="using:LaDOSE.DesktopApp.Avalonia"
|
||||
RequestedThemeVariant="Dark">
|
||||
<!-- "Default" ThemeVariant follows system theme variant. "Dark" or "Light" are other available options. -->
|
||||
<Application.Styles>
|
||||
<FluentTheme />
|
||||
<StyleInclude Source="avares://Avalonia.Controls.DataGrid/Themes/Fluent.xaml"/>
|
||||
</Application.Styles>
|
||||
</Application>
|
||||
33
LaDOSE.Src/LaDOSE.DesktopApp.Avalonia/App.axaml.cs
Normal file
33
LaDOSE.Src/LaDOSE.DesktopApp.Avalonia/App.axaml.cs
Normal file
@@ -0,0 +1,33 @@
|
||||
using Avalonia;
|
||||
using Avalonia.Controls.ApplicationLifetimes;
|
||||
using Avalonia.Markup.Xaml;
|
||||
using LaDOSE.DesktopApp.Avalonia.ViewModels;
|
||||
using LaDOSE.DesktopApp.Avalonia.Views;
|
||||
using ReactiveUI;
|
||||
using Splat;
|
||||
|
||||
namespace LaDOSE.DesktopApp.Avalonia;
|
||||
|
||||
public partial class App : Application
|
||||
{
|
||||
public override void Initialize()
|
||||
{
|
||||
AvaloniaXamlLoader.Load(this);
|
||||
Locator.CurrentMutable.Register(() => new GamesView(), typeof(IViewFor<GamesViewModel>));
|
||||
Locator.CurrentMutable.Register(() => new InfoView(), typeof(IViewFor<InfoViewModel>));
|
||||
Locator.CurrentMutable.Register(() => new TournamentResultView(), typeof(IViewFor<TournamentResultViewModel>));
|
||||
}
|
||||
|
||||
public override void OnFrameworkInitializationCompleted()
|
||||
{
|
||||
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
|
||||
{
|
||||
desktop.MainWindow = new MainWindow
|
||||
{
|
||||
DataContext = new MainWindowViewModel(),
|
||||
};
|
||||
}
|
||||
|
||||
base.OnFrameworkInitializationCompleted();
|
||||
}
|
||||
}
|
||||
BIN
LaDOSE.Src/LaDOSE.DesktopApp.Avalonia/Assets/avalonia-logo.ico
Normal file
BIN
LaDOSE.Src/LaDOSE.DesktopApp.Avalonia/Assets/avalonia-logo.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 172 KiB |
@@ -0,0 +1,33 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<BuiltInComInteropSupport>true</BuiltInComInteropSupport>
|
||||
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Models\"/>
|
||||
<AvaloniaResource Include="Assets\**"/>
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
<ItemGroup>
|
||||
<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.Themes.Fluent" 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.-->
|
||||
<PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="11.0.10"/>
|
||||
<PackageReference Include="Avalonia.ReactiveUI" Version="11.0.10"/>
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\LaDOSE.DTO\LaDOSE.DTO.csproj" />
|
||||
<ProjectReference Include="..\LaDOSE.REST\LaDOSE.REST.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
53
LaDOSE.Src/LaDOSE.DesktopApp.Avalonia/Program.cs
Normal file
53
LaDOSE.Src/LaDOSE.DesktopApp.Avalonia/Program.cs
Normal file
@@ -0,0 +1,53 @@
|
||||
using Avalonia;
|
||||
using Avalonia.ReactiveUI;
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using LaDOSE.REST;
|
||||
using Splat;
|
||||
// using Xilium.CefGlue;
|
||||
// using Xilium.CefGlue.Common;
|
||||
// using Avalonia.Visuals;
|
||||
namespace LaDOSE.DesktopApp.Avalonia;
|
||||
|
||||
sealed class Program
|
||||
{
|
||||
|
||||
|
||||
// Initialization code. Don't use any Avalonia, third-party APIs or any
|
||||
// SynchronizationContext-reliant code before AppMain is called: things aren't initialized
|
||||
// yet and stuff might break.
|
||||
[STAThread]
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
RegisterDependencies(Locator.CurrentMutable, Locator.Current);
|
||||
BuildAvaloniaApp()
|
||||
.StartWithClassicDesktopLifetime(args);
|
||||
}
|
||||
|
||||
private static void RegisterDependencies(IMutableDependencyResolver currentMutable, IReadonlyDependencyResolver current)
|
||||
{
|
||||
currentMutable.RegisterLazySingleton<RestService>(()=>
|
||||
{
|
||||
var restService = new RestService();
|
||||
restService.Connect(new Uri("http://localhost:5000"),"dev","dev");
|
||||
return restService;
|
||||
});
|
||||
}
|
||||
|
||||
// Avalonia configuration, don't remove; also used by visual designer.
|
||||
public static AppBuilder BuildAvaloniaApp()
|
||||
=> AppBuilder
|
||||
.Configure<App>()
|
||||
.UsePlatformDetect()
|
||||
.WithInterFont()
|
||||
.LogToTrace()
|
||||
.AfterSetup(_ =>
|
||||
{
|
||||
// CefRuntimeLoader.Initialize(new CefSettings()
|
||||
// {
|
||||
// WindowlessRenderingEnabled = true,
|
||||
// NoSandbox = true,
|
||||
// });
|
||||
})
|
||||
.UseReactiveUI();
|
||||
}
|
||||
BIN
LaDOSE.Src/LaDOSE.DesktopApp.Avalonia/Resources/64x64.png
Normal file
BIN
LaDOSE.Src/LaDOSE.DesktopApp.Avalonia/Resources/64x64.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.1 KiB |
343
LaDOSE.Src/LaDOSE.DesktopApp.Avalonia/Resources/css.css
Normal file
343
LaDOSE.Src/LaDOSE.DesktopApp.Avalonia/Resources/css.css
Normal file
@@ -0,0 +1,343 @@
|
||||
body {
|
||||
color: #efefef;
|
||||
background-color: #141415;
|
||||
}
|
||||
|
||||
|
||||
|
||||
:root {
|
||||
--breakpoint-xs: 0;
|
||||
--breakpoint-sm: 576px;
|
||||
--breakpoint-md: 768px;
|
||||
--breakpoint-lg: 992px;
|
||||
--breakpoint-xl: 1200px;
|
||||
}
|
||||
|
||||
.table {
|
||||
width: 100%;
|
||||
margin-bottom: 1rem;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.table th,
|
||||
.table td {
|
||||
padding: 0.75rem;
|
||||
vertical-align: top;
|
||||
border-top: 1px solid #dee2e6;
|
||||
}
|
||||
|
||||
.table thead th {
|
||||
vertical-align: bottom;
|
||||
border-bottom: 2px solid #dee2e6;
|
||||
}
|
||||
|
||||
.table tbody + tbody {
|
||||
border-top: 2px solid #dee2e6;
|
||||
}
|
||||
|
||||
.table .table {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.table-sm th,
|
||||
.table-sm td {
|
||||
padding: 0.3rem;
|
||||
}
|
||||
|
||||
.table-bordered {
|
||||
border: 1px solid #dee2e6;
|
||||
}
|
||||
|
||||
.table-bordered th,
|
||||
.table-bordered td {
|
||||
border: 1px solid #dee2e6;
|
||||
}
|
||||
|
||||
.table-bordered thead th,
|
||||
.table-bordered thead td {
|
||||
border-bottom-width: 2px;
|
||||
}
|
||||
|
||||
.table-borderless th,
|
||||
.table-borderless td,
|
||||
.table-borderless thead th,
|
||||
.table-borderless tbody + tbody {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.table-striped tbody tr:nth-of-type(odd) {
|
||||
background-color: rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
.table-hover tbody tr:hover {
|
||||
background-color: rgba(0, 0, 0, 0.075);
|
||||
}
|
||||
|
||||
.table-primary,
|
||||
.table-primary > th,
|
||||
.table-primary > td {
|
||||
background-color: #b8daff;
|
||||
}
|
||||
|
||||
.table-hover .table-primary:hover {
|
||||
background-color: #9fcdff;
|
||||
}
|
||||
|
||||
.table-hover .table-primary:hover > td,
|
||||
.table-hover .table-primary:hover > th {
|
||||
background-color: #9fcdff;
|
||||
}
|
||||
|
||||
.table-secondary,
|
||||
.table-secondary > th,
|
||||
.table-secondary > td {
|
||||
background-color: #d6d8db;
|
||||
}
|
||||
|
||||
.table-hover .table-secondary:hover {
|
||||
background-color: #c8cbcf;
|
||||
}
|
||||
|
||||
.table-hover .table-secondary:hover > td,
|
||||
.table-hover .table-secondary:hover > th {
|
||||
background-color: #c8cbcf;
|
||||
}
|
||||
|
||||
.table-success,
|
||||
.table-success > th,
|
||||
.table-success > td {
|
||||
background-color: #c3e6cb;
|
||||
}
|
||||
|
||||
.table-hover .table-success:hover {
|
||||
background-color: #b1dfbb;
|
||||
}
|
||||
|
||||
.table-hover .table-success:hover > td,
|
||||
.table-hover .table-success:hover > th {
|
||||
background-color: #b1dfbb;
|
||||
}
|
||||
|
||||
.table-info,
|
||||
.table-info > th,
|
||||
.table-info > td {
|
||||
background-color: #bee5eb;
|
||||
}
|
||||
|
||||
.table-hover .table-info:hover {
|
||||
background-color: #abdde5;
|
||||
}
|
||||
|
||||
.table-hover .table-info:hover > td,
|
||||
.table-hover .table-info:hover > th {
|
||||
background-color: #abdde5;
|
||||
}
|
||||
|
||||
.table-warning,
|
||||
.table-warning > th,
|
||||
.table-warning > td {
|
||||
background-color: #ffeeba;
|
||||
}
|
||||
|
||||
.table-hover .table-warning:hover {
|
||||
background-color: #ffe8a1;
|
||||
}
|
||||
|
||||
.table-hover .table-warning:hover > td,
|
||||
.table-hover .table-warning:hover > th {
|
||||
background-color: #ffe8a1;
|
||||
}
|
||||
|
||||
.table-danger,
|
||||
.table-danger > th,
|
||||
.table-danger > td {
|
||||
background-color: #f5c6cb;
|
||||
}
|
||||
|
||||
.table-hover .table-danger:hover {
|
||||
background-color: #f1b0b7;
|
||||
}
|
||||
|
||||
.table-hover .table-danger:hover > td,
|
||||
.table-hover .table-danger:hover > th {
|
||||
background-color: #f1b0b7;
|
||||
}
|
||||
|
||||
.table-light,
|
||||
.table-light > th,
|
||||
.table-light > td {
|
||||
background-color: #fdfdfe;
|
||||
}
|
||||
|
||||
.table-hover .table-light:hover {
|
||||
background-color: #ececf6;
|
||||
}
|
||||
|
||||
.table-hover .table-light:hover > td,
|
||||
.table-hover .table-light:hover > th {
|
||||
background-color: #ececf6;
|
||||
}
|
||||
|
||||
.table-dark,
|
||||
.table-dark > th,
|
||||
.table-dark > td {
|
||||
background-color: #c6c8ca;
|
||||
}
|
||||
|
||||
.table-hover .table-dark:hover {
|
||||
background-color: #b9bbbe;
|
||||
}
|
||||
|
||||
.table-hover .table-dark:hover > td,
|
||||
.table-hover .table-dark:hover > th {
|
||||
background-color: #b9bbbe;
|
||||
}
|
||||
|
||||
.table-active,
|
||||
.table-active > th,
|
||||
.table-active > td {
|
||||
background-color: rgba(0, 0, 0, 0.075);
|
||||
}
|
||||
|
||||
.table-hover .table-active:hover {
|
||||
background-color: rgba(0, 0, 0, 0.075);
|
||||
}
|
||||
|
||||
.table-hover .table-active:hover > td,
|
||||
.table-hover .table-active:hover > th {
|
||||
background-color: rgba(0, 0, 0, 0.075);
|
||||
}
|
||||
|
||||
.table .thead-dark th {
|
||||
color: #fff;
|
||||
background-color: #212529;
|
||||
border-color: #32383e;
|
||||
}
|
||||
|
||||
.table .thead-light th {
|
||||
color: #495057;
|
||||
background-color: #e9ecef;
|
||||
border-color: #dee2e6;
|
||||
}
|
||||
|
||||
.table-dark {
|
||||
color: #fff;
|
||||
background-color: #212529;
|
||||
}
|
||||
|
||||
.table-dark th,
|
||||
.table-dark td,
|
||||
.table-dark thead th {
|
||||
border-color: #32383e;
|
||||
}
|
||||
|
||||
.table-dark.table-bordered {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.table-dark.table-striped tbody tr:nth-of-type(odd) {
|
||||
background-color: rgba(255, 255, 255, 0.05);
|
||||
}
|
||||
|
||||
.table-dark.table-hover tbody tr:hover {
|
||||
background-color: rgba(255, 255, 255, 0.075);
|
||||
}
|
||||
|
||||
@media (max-width: 575.98px) {
|
||||
.table-responsive-sm {
|
||||
display: block;
|
||||
width: 100%;
|
||||
overflow-x: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
-ms-overflow-style: -ms-autohiding-scrollbar;
|
||||
}
|
||||
|
||||
.table-responsive-sm > .table-bordered {
|
||||
border: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.table-responsive-md {
|
||||
display: block;
|
||||
width: 100%;
|
||||
overflow-x: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
-ms-overflow-style: -ms-autohiding-scrollbar;
|
||||
}
|
||||
|
||||
.table-responsive-md > .table-bordered {
|
||||
border: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.table-responsive-lg {
|
||||
display: block;
|
||||
width: 100%;
|
||||
overflow-x: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
-ms-overflow-style: -ms-autohiding-scrollbar;
|
||||
}
|
||||
|
||||
.table-responsive-lg > .table-bordered {
|
||||
border: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1199.98px) {
|
||||
.table-responsive-xl {
|
||||
display: block;
|
||||
width: 100%;
|
||||
overflow-x: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
-ms-overflow-style: -ms-autohiding-scrollbar;
|
||||
}
|
||||
|
||||
.table-responsive-xl > .table-bordered {
|
||||
border: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.table-responsive {
|
||||
display: block;
|
||||
width: 100%;
|
||||
overflow-x: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
-ms-overflow-style: -ms-autohiding-scrollbar;
|
||||
}
|
||||
|
||||
.table-responsive > .table-bordered {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.table {
|
||||
border-collapse: collapse !important;
|
||||
}
|
||||
|
||||
.table td,
|
||||
.table th {
|
||||
/*background-color: #fff !important;*/
|
||||
}
|
||||
|
||||
.table-bordered th,
|
||||
.table-bordered td {
|
||||
border: 1px solid #dee2e6 !important;
|
||||
}
|
||||
|
||||
.table-dark {
|
||||
color: #fff;
|
||||
background-color: #212529
|
||||
}
|
||||
|
||||
.table-dark th,
|
||||
.table-dark td,
|
||||
.table-dark thead th,
|
||||
.table-dark tbody + tbody {
|
||||
border-color: #dee2e6;
|
||||
}
|
||||
|
||||
.table .thead-dark th {
|
||||
color: inherit;
|
||||
border-color: #dee2e6;
|
||||
}
|
||||
24
LaDOSE.Src/LaDOSE.DesktopApp.Avalonia/Utils/BaseViewModel.cs
Normal file
24
LaDOSE.Src/LaDOSE.DesktopApp.Avalonia/Utils/BaseViewModel.cs
Normal file
@@ -0,0 +1,24 @@
|
||||
using System.ComponentModel;
|
||||
using System.Runtime.CompilerServices;
|
||||
using ReactiveUI;
|
||||
|
||||
namespace LaDOSE.DesktopApp.Avalonia.Utils;
|
||||
|
||||
public abstract class BaseViewModel : ReactiveObject, IRoutableViewModel,INotifyPropertyChanged
|
||||
{
|
||||
|
||||
public event PropertyChangedEventHandler? PropertyChanged;
|
||||
protected void RaisePropertyChanged([CallerMemberName] string? propertyName = null)
|
||||
{
|
||||
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
||||
}
|
||||
|
||||
protected BaseViewModel(IScreen hostScreen, string? urlPathSegment)
|
||||
{
|
||||
UrlPathSegment = urlPathSegment;
|
||||
HostScreen = hostScreen;
|
||||
}
|
||||
|
||||
public string? UrlPathSegment { get; }
|
||||
public IScreen HostScreen { get; }
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace LaDOSE.DesktopApp.Utils
|
||||
namespace LaDOSE.DesktopApp.Avalonia.Utils
|
||||
{
|
||||
public static class CustomListExtension
|
||||
{
|
||||
@@ -0,0 +1,86 @@
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Runtime.CompilerServices;
|
||||
using LaDOSE.DesktopApp.Avalonia.Utils;
|
||||
using LaDOSE.DesktopApp.Avalonia.ViewModels;
|
||||
using LaDOSE.DTO;
|
||||
using LaDOSE.REST;
|
||||
using ReactiveUI;
|
||||
using Splat;
|
||||
|
||||
namespace LaDOSE.DesktopApp.Avalonia.ViewModels
|
||||
{
|
||||
public class GamesViewModel : BaseViewModel
|
||||
{
|
||||
|
||||
public string DisplayName => "Games";
|
||||
|
||||
private GameDTO _currentGame;
|
||||
private List<GameDTO> _games;
|
||||
private RestService RestService { get; set; }
|
||||
public GamesViewModel(IScreen screen): base(screen,"Games")
|
||||
{
|
||||
this.RestService = Locator.Current.GetService<RestService>();
|
||||
this.Games=new List<GameDTO>();
|
||||
OnInitialize();
|
||||
}
|
||||
|
||||
void OnInitialize()
|
||||
{
|
||||
LoadGames();
|
||||
this.CurrentGame = Games.First();
|
||||
}
|
||||
|
||||
public void LoadGames()
|
||||
{
|
||||
var gameDtos = this.RestService.GetGames().OrderBy(e=>e.Order).ToList();
|
||||
this.Games = gameDtos;
|
||||
RaisePropertyChanged(nameof(this.Games));
|
||||
}
|
||||
|
||||
public List<GameDTO> Games
|
||||
{
|
||||
get => _games;
|
||||
set
|
||||
{
|
||||
_games = value;
|
||||
RaisePropertyChanged(nameof(this.Games));
|
||||
}
|
||||
}
|
||||
|
||||
public GameDTO CurrentGame
|
||||
{
|
||||
get => _currentGame;
|
||||
set
|
||||
{
|
||||
_currentGame = value;
|
||||
RaisePropertyChanged(nameof(this.CurrentGame));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void Update()
|
||||
{
|
||||
this.RestService.UpdateGame(this.CurrentGame);
|
||||
LoadGames();
|
||||
|
||||
}
|
||||
public void AddGame()
|
||||
{
|
||||
var item = new GameDTO();
|
||||
this.RestService.UpdateGame(item);
|
||||
LoadGames();
|
||||
}
|
||||
public void DeleteGame()
|
||||
{
|
||||
|
||||
this.RestService.DeleteGame(this.CurrentGame.Id);
|
||||
LoadGames();
|
||||
}
|
||||
|
||||
public bool CanDeleteGame => CurrentGame != null;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
using System.ComponentModel;
|
||||
using ReactiveUI;
|
||||
|
||||
namespace LaDOSE.DesktopApp.Avalonia.ViewModels;
|
||||
|
||||
public class InfoViewModel: ReactiveObject, IRoutableViewModel,INotifyPropertyChanged
|
||||
{
|
||||
|
||||
public InfoViewModel(IScreen screen)
|
||||
{
|
||||
HostScreen = screen;
|
||||
}
|
||||
|
||||
public string? UrlPathSegment => "Info";
|
||||
public IScreen HostScreen { get; }
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
using Avalonia;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Controls.ApplicationLifetimes;
|
||||
|
||||
namespace LaDOSE.DesktopApp.Avalonia.ViewModels;
|
||||
|
||||
public class MainWindowViewModel : Window
|
||||
{
|
||||
public RoutedViewHostViewModel RoutedViewViewHost { get; } = new();
|
||||
|
||||
public void CloseApp()
|
||||
{
|
||||
if (Application.Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime)
|
||||
((IClassicDesktopStyleApplicationLifetime)Application.Current.ApplicationLifetime).Shutdown();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
using System.ComponentModel;
|
||||
using System.Runtime.CompilerServices;
|
||||
using LaDOSE.DesktopApp.Avalonia.Utils;
|
||||
using ReactiveUI;
|
||||
|
||||
namespace LaDOSE.DesktopApp.Avalonia.ViewModels;
|
||||
|
||||
public class RoutedViewHostViewModel : ReactiveObject, IScreen, INotifyPropertyChanged
|
||||
{
|
||||
public event PropertyChangedEventHandler? PropertyChanged;
|
||||
protected void RaisePropertyChanged([CallerMemberName] string? propertyName = null)
|
||||
{
|
||||
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
||||
}
|
||||
|
||||
private string _current;
|
||||
|
||||
public RoutedViewHostViewModel()
|
||||
{
|
||||
Games = new GamesViewModel(this);
|
||||
Info = new InfoViewModel(this);
|
||||
Tournament = new TournamentResultViewModel(this);
|
||||
Router.Navigate.Execute(Tournament);
|
||||
Current = "Tournament";
|
||||
|
||||
}
|
||||
|
||||
public string Current
|
||||
{
|
||||
get => _current;
|
||||
set
|
||||
{
|
||||
_current = value;
|
||||
RaisePropertyChanged(nameof(Current));
|
||||
}
|
||||
}
|
||||
|
||||
public RoutingState Router { get; } = new();
|
||||
public GamesViewModel Games { get; }
|
||||
public InfoViewModel Info { get; }
|
||||
|
||||
public TournamentResultViewModel Tournament { get; }
|
||||
|
||||
|
||||
public void ShowGames()
|
||||
{
|
||||
Router.Navigate.Execute(Games);
|
||||
Current = "Games";
|
||||
}
|
||||
|
||||
public void ShowInfo()
|
||||
{
|
||||
Router.Navigate.Execute(Info);
|
||||
Current = "Info";
|
||||
}
|
||||
public void ShowTournament()
|
||||
{
|
||||
Router.Navigate.Execute(Tournament);
|
||||
Current = "Tournament";
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,4 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Data;
|
||||
@@ -8,19 +7,19 @@ using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Forms;
|
||||
using LaDOSE.DesktopApp.Utils;
|
||||
using Avalonia.Collections;
|
||||
using Avalonia.Controls;
|
||||
using LaDOSE.DesktopApp.Avalonia.Utils;
|
||||
using LaDOSE.DTO;
|
||||
using LaDOSE.REST;
|
||||
using SaveFileDialog = Microsoft.Win32.SaveFileDialog;
|
||||
using Screen = Caliburn.Micro.Screen;
|
||||
using ReactiveUI;
|
||||
using Splat;
|
||||
|
||||
namespace LaDOSE.DesktopApp.ViewModels
|
||||
namespace LaDOSE.DesktopApp.Avalonia.ViewModels
|
||||
{
|
||||
public class TournamentResultViewModel : Screen
|
||||
public class TournamentResultViewModel : BaseViewModel
|
||||
{
|
||||
public override string DisplayName => "Tournament Result";
|
||||
public string DisplayName => "Tournament Result";
|
||||
|
||||
private RestService RestService { get; set; }
|
||||
//Dictionary<string, Dictionary<int, int>> _computedResult;
|
||||
@@ -28,13 +27,7 @@ namespace LaDOSE.DesktopApp.ViewModels
|
||||
#region Properties
|
||||
|
||||
private string css = string.Empty;
|
||||
|
||||
//"strong { font-weight: 700;} ". +
|
||||
// "a { color: #ff9024;}"+
|
||||
// "body { color: #efefef;background-color: #141415; }" +
|
||||
// ""+
|
||||
// "a:hover, .entry-meta span a:hover, .comments-link a:hover, body.coldisplay2 #front-columns a:active {color: #cb5920;}"+
|
||||
// "tr td { border: 1px dashed #3D3D3D;} ";
|
||||
|
||||
private String _selectRegex;
|
||||
|
||||
public String SelectRegex
|
||||
@@ -43,7 +36,7 @@ namespace LaDOSE.DesktopApp.ViewModels
|
||||
set
|
||||
{
|
||||
_selectRegex = value;
|
||||
NotifyOfPropertyChange(() => SelectRegex);
|
||||
RaisePropertyChanged(nameof(SelectRegex));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,7 +48,7 @@ namespace LaDOSE.DesktopApp.ViewModels
|
||||
set
|
||||
{
|
||||
_selectEventRegex = value;
|
||||
NotifyOfPropertyChange(() => SelectEventRegex);
|
||||
RaisePropertyChanged(nameof(SelectEventRegex));
|
||||
}
|
||||
}
|
||||
private string _slug;
|
||||
@@ -65,7 +58,7 @@ namespace LaDOSE.DesktopApp.ViewModels
|
||||
set
|
||||
{
|
||||
_slug = value;
|
||||
NotifyOfPropertyChange(() => Slug);
|
||||
RaisePropertyChanged(nameof(Slug));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,34 +80,34 @@ namespace LaDOSE.DesktopApp.ViewModels
|
||||
set
|
||||
{
|
||||
_htmlContent = value;
|
||||
NotifyOfPropertyChange(() => HtmlContent);
|
||||
NotifyOfPropertyChange(() => Html);
|
||||
RaisePropertyChanged(nameof(HtmlContent));
|
||||
RaisePropertyChanged(nameof(Html));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private DateTime _from;
|
||||
private DateTimeOffset _from;
|
||||
|
||||
public DateTime From
|
||||
public DateTimeOffset From
|
||||
{
|
||||
get { return _from; }
|
||||
set
|
||||
{
|
||||
_from = value;
|
||||
NotifyOfPropertyChange(() => From);
|
||||
RaisePropertyChanged(nameof(From));
|
||||
}
|
||||
}
|
||||
|
||||
private DateTime _to;
|
||||
private DateTimeOffset _to;
|
||||
|
||||
public DateTime To
|
||||
public DateTimeOffset To
|
||||
{
|
||||
get { return _to; }
|
||||
set
|
||||
{
|
||||
_to = value;
|
||||
NotifyOfPropertyChange(() => To);
|
||||
RaisePropertyChanged(nameof(To));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -130,7 +123,7 @@ namespace LaDOSE.DesktopApp.ViewModels
|
||||
set
|
||||
{
|
||||
_results = value;
|
||||
NotifyOfPropertyChange(() => Results);
|
||||
RaisePropertyChanged(nameof(Results));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -142,7 +135,7 @@ namespace LaDOSE.DesktopApp.ViewModels
|
||||
set
|
||||
{
|
||||
_selectedEvents = value;
|
||||
NotifyOfPropertyChange(() => SelectedEvents);
|
||||
RaisePropertyChanged(nameof(SelectedEvents));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -154,7 +147,7 @@ namespace LaDOSE.DesktopApp.ViewModels
|
||||
set
|
||||
{
|
||||
_selectedTournaments = value;
|
||||
NotifyOfPropertyChange(() => SelectedTournaments);
|
||||
RaisePropertyChanged(nameof(SelectedTournaments));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -175,7 +168,7 @@ namespace LaDOSE.DesktopApp.ViewModels
|
||||
SelectedGameResult = new ObservableCollection<ResultDTO>(resultForGame);
|
||||
}
|
||||
|
||||
NotifyOfPropertyChange(() => SelectedGame);
|
||||
RaisePropertyChanged(nameof(SelectedGame));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -187,12 +180,13 @@ namespace LaDOSE.DesktopApp.ViewModels
|
||||
set
|
||||
{
|
||||
_selectedGameResult = value;
|
||||
NotifyOfPropertyChange(() => SelectedGameResult);
|
||||
RaisePropertyChanged(nameof(SelectedGameResult));
|
||||
}
|
||||
}
|
||||
|
||||
private String _first;
|
||||
private DataTable _gridDataTable;
|
||||
private string _error;
|
||||
|
||||
public String First
|
||||
{
|
||||
@@ -200,65 +194,62 @@ namespace LaDOSE.DesktopApp.ViewModels
|
||||
set
|
||||
{
|
||||
_first = value;
|
||||
NotifyOfPropertyChange(() => First);
|
||||
RaisePropertyChanged(nameof(First));
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
public TournamentResultViewModel(RestService restService)
|
||||
public TournamentResultViewModel(IScreen hostScreen):base(hostScreen,"Tournament")
|
||||
{
|
||||
this.RestService = restService;
|
||||
this.RestService = Locator.Current.GetService<RestService>();;
|
||||
_selectedTournaments = new ObservableCollection<TournamentDTO>();
|
||||
_selectedEvents = new ObservableCollection<EventDTO>();
|
||||
Tournaments = new List<TournamentDTO>();
|
||||
Events = new List<EventDTO>();
|
||||
|
||||
OnInitialize();
|
||||
}
|
||||
|
||||
|
||||
protected override void OnInitialize()
|
||||
protected void OnInitialize()
|
||||
{
|
||||
var manifestResourceStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("LaDOSE.DesktopApp.Resources.css.css");
|
||||
using (var sr = new StreamReader(manifestResourceStream))
|
||||
{
|
||||
this.css = sr.ReadToEnd();
|
||||
}
|
||||
// var manifestResourceStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("LaDOSE.DesktopApp.Resources.css.css");
|
||||
// using (var sr = new StreamReader(manifestResourceStream))
|
||||
// {
|
||||
// this.css = sr.ReadToEnd();
|
||||
// }
|
||||
|
||||
|
||||
this.To = DateTime.Now;
|
||||
this.From = DateTime.Now.AddMonths(-1);
|
||||
this.To = new DateTimeOffset(DateTime.Now);
|
||||
this.From = new DateTimeOffset(DateTime.Now.AddMonths(-1));
|
||||
this.SelectRegex = "Ranking";
|
||||
this.SelectEventRegex = @"Ranking #10\d{2}";
|
||||
this.Slug = "ranking-1001";
|
||||
|
||||
LoadTournaments();
|
||||
LoadEvents();
|
||||
base.OnInitialize();
|
||||
}
|
||||
|
||||
public void LoadTournaments()
|
||||
{
|
||||
WpfUtil.Await(() =>
|
||||
{
|
||||
var tournamentDtos = this.RestService
|
||||
.GetTournaments(new TimeRangeDTO() {From = this.From, To = this.To}).ToList();
|
||||
this.Tournaments = tournamentDtos;
|
||||
|
||||
// var tournamentDtos = this.RestService
|
||||
// .GetTournaments(new TimeRangeDTO() {From = this.From, To = this.To}).ToList();
|
||||
// this.Tournaments = tournamentDtos;
|
||||
|
||||
NotifyOfPropertyChange("Tournaments");
|
||||
});
|
||||
RaisePropertyChanged(nameof(Tournaments));
|
||||
|
||||
}
|
||||
|
||||
public void LoadEvents()
|
||||
{
|
||||
WpfUtil.Await(() =>
|
||||
{
|
||||
|
||||
var eventsDtos = this.RestService
|
||||
.GetAllEvents().ToList();
|
||||
this.Events = eventsDtos;
|
||||
|
||||
NotifyOfPropertyChange("Events");
|
||||
});
|
||||
RaisePropertyChanged(nameof(Events));
|
||||
|
||||
}
|
||||
|
||||
public DataTable GridDataTable
|
||||
@@ -267,44 +258,61 @@ namespace LaDOSE.DesktopApp.ViewModels
|
||||
set
|
||||
{
|
||||
_gridDataTable = value;
|
||||
NotifyOfPropertyChange(() => GridDataTable);
|
||||
RaisePropertyChanged(nameof(GridDataTable));
|
||||
RaisePropertyChanged(nameof(GridDataTableView));
|
||||
}
|
||||
}
|
||||
public DataView GridDataTableView
|
||||
{
|
||||
get
|
||||
{
|
||||
DataView gridDataTableView = _gridDataTable?.AsDataView();
|
||||
return gridDataTableView;
|
||||
}
|
||||
}
|
||||
|
||||
public void Select()
|
||||
{
|
||||
WpfUtil.Await(() =>
|
||||
{
|
||||
|
||||
var tournamentsIds = SelectedEvents.Select(e => e.Id).ToList();
|
||||
var resultsDto = this.RestService.GetResults(tournamentsIds);
|
||||
this.Results = resultsDto;
|
||||
ComputeDataGrid();
|
||||
ComputeHtml();
|
||||
});
|
||||
|
||||
}
|
||||
public void GetSmash()
|
||||
{
|
||||
WpfUtil.Await(() =>
|
||||
{
|
||||
|
||||
|
||||
var resultsDto = this.RestService.ParseSmash(Slug);
|
||||
if (!resultsDto)
|
||||
{
|
||||
MessageBox.Show("Fail");
|
||||
Error = "Error getting Smash";
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public string Error
|
||||
{
|
||||
get => _error;
|
||||
set
|
||||
{
|
||||
if (value == _error) return;
|
||||
_error = value;
|
||||
RaisePropertyChanged();
|
||||
}
|
||||
}
|
||||
|
||||
public void GetChallonge()
|
||||
{
|
||||
WpfUtil.Await(() =>
|
||||
{
|
||||
|
||||
var ids = SelectedTournaments.Select(e => e.ChallongeId).ToList();
|
||||
var resultsDto = this.RestService.ParseChallonge(ids);
|
||||
if (!resultsDto)
|
||||
{
|
||||
MessageBox.Show("Fail");
|
||||
Error = "Fail";
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void UpdateEvent()
|
||||
@@ -329,14 +337,14 @@ namespace LaDOSE.DesktopApp.ViewModels
|
||||
var selectedTournaments = this.Tournaments.Where(e => Regex.IsMatch(e.Name, this.SelectRegex)).ToList();
|
||||
this.SelectedTournaments.Clear();
|
||||
if (selectedTournaments.Count > 0)
|
||||
selectedTournaments.ForEach(e => this.SelectedTournaments.AddUI(e));
|
||||
selectedTournaments.ForEach(e => this.SelectedTournaments.Add(e));
|
||||
}
|
||||
public void SelectEvent()
|
||||
{
|
||||
var selectedEvents = this.Events.Where(e => Regex.IsMatch(e.Name, this.SelectEventRegex)).ToList();
|
||||
this.SelectedEvents.Clear();
|
||||
if (selectedEvents.Count > 0)
|
||||
selectedEvents.ForEach(e => this.SelectedEvents.AddUI(e));
|
||||
selectedEvents.ForEach(e => this.SelectedEvents.Add(e));
|
||||
}
|
||||
//This could be simplified the Dictionary was for a previous usage, but i m too lazy to rewrite it.
|
||||
private void ComputeDataGrid()
|
||||
@@ -367,7 +375,7 @@ namespace LaDOSE.DesktopApp.ViewModels
|
||||
{
|
||||
var resultsGame = Results.Games[j];
|
||||
var points = GetPlayerPoint(resultsParticipent, resultsGame.Id);
|
||||
dataRow[resultsGame.Name.Replace('.', ' ')] = points!=0?(object) points:DBNull.Value;
|
||||
dataRow[resultsGame.Name.Replace('.', ' ')] = points!=0?points:0;
|
||||
total += points;
|
||||
}
|
||||
dataRow["Total"] = total;
|
||||
@@ -389,33 +397,33 @@ namespace LaDOSE.DesktopApp.ViewModels
|
||||
|
||||
private void ExportToCSV()
|
||||
{
|
||||
if (this.GridDataTable != null)
|
||||
{
|
||||
var dataTable = this.GridDataTable.DefaultView.ToTable();
|
||||
SaveFileDialog sfDialog = new SaveFileDialog()
|
||||
{
|
||||
Filter = "Csv Files (*.csv)|*.csv|All Files (*.*)|*.*",
|
||||
AddExtension = true
|
||||
};
|
||||
if (sfDialog.ShowDialog() == true)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
IEnumerable<string> columnNames = dataTable.Columns.Cast<DataColumn>()
|
||||
.Select(column => column.ColumnName);
|
||||
sb.AppendLine(string.Join(";", columnNames));
|
||||
|
||||
foreach (DataRow row in dataTable.Rows)
|
||||
{
|
||||
//EXCEL IS A BITCH
|
||||
IEnumerable<string> fields = row.ItemArray.Select(field =>
|
||||
string.Concat("\"", field.ToString().Replace("\"", "\"\""), "\""));
|
||||
sb.AppendLine(string.Join(";", fields));
|
||||
}
|
||||
|
||||
File.WriteAllText(sfDialog.FileName, sb.ToString());
|
||||
}
|
||||
}
|
||||
// if (this.GridDataTable != null)
|
||||
// {
|
||||
// var dataTable = this.GridDataTable.DefaultView.ToTable();
|
||||
// SaveFileDialog sfDialog = new SaveFileDialog()
|
||||
// {
|
||||
// Filter = "Csv Files (*.csv)|*.csv|All Files (*.*)|*.*",
|
||||
// AddExtension = true
|
||||
// };
|
||||
// if (sfDialog.ShowDialog() == true)
|
||||
// {
|
||||
// StringBuilder sb = new StringBuilder();
|
||||
//
|
||||
// IEnumerable<string> columnNames = dataTable.Columns.Cast<DataColumn>()
|
||||
// .Select(column => column.ColumnName);
|
||||
// sb.AppendLine(string.Join(";", columnNames));
|
||||
//
|
||||
// foreach (DataRow row in dataTable.Rows)
|
||||
// {
|
||||
// //EXCEL IS A BITCH
|
||||
// IEnumerable<string> fields = row.ItemArray.Select(field =>
|
||||
// string.Concat("\"", field.ToString().Replace("\"", "\"\""), "\""));
|
||||
// sb.AppendLine(string.Join(";", fields));
|
||||
// }
|
||||
//
|
||||
// File.WriteAllText(sfDialog.FileName, sb.ToString());
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
private void ComputeHtml()
|
||||
@@ -483,7 +491,7 @@ namespace LaDOSE.DesktopApp.ViewModels
|
||||
}
|
||||
public void CopyHtml()
|
||||
{
|
||||
System.Windows.Clipboard.SetText(this.HtmlContent);
|
||||
// System.Windows.Clipboard.SetText(this.HtmlContent);
|
||||
}
|
||||
|
||||
private int GetPlayerPoint(string name, int gameid)
|
||||
82
LaDOSE.Src/LaDOSE.DesktopApp.Avalonia/Views/GamesView.axaml
Normal file
82
LaDOSE.Src/LaDOSE.DesktopApp.Avalonia/Views/GamesView.axaml
Normal file
@@ -0,0 +1,82 @@
|
||||
<UserControl xmlns="https://github.com/avaloniaui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
||||
x:Class="LaDOSE.DesktopApp.Avalonia.Views.GamesView"
|
||||
xmlns:vm="using:LaDOSE.DesktopApp.Avalonia.ViewModels"
|
||||
x:DataType="vm:GamesViewModel"
|
||||
>
|
||||
<Grid Row="4" Column="1">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"></RowDefinition>
|
||||
<RowDefinition Height="*"></RowDefinition>
|
||||
<RowDefinition Height="*"></RowDefinition>
|
||||
<RowDefinition Height="Auto"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<Button Grid.Row="0" x:Name="LoadGames" Command="{Binding LoadGames}" >Load Games</Button>
|
||||
|
||||
<ListBox Grid.Row="1" ItemsSource="{Binding Games}" x:Name="GamesListView" SelectedItem="{Binding CurrentGame}">
|
||||
<ListBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Label Content="{Binding Order}"></Label>
|
||||
<Label> - </Label>
|
||||
<Label Content="{Binding Name}"></Label>
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</ListBox.ItemTemplate>
|
||||
|
||||
</ListBox>
|
||||
<Grid Grid.Row="2">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"></RowDefinition>
|
||||
<RowDefinition Height="Auto"></RowDefinition>
|
||||
<RowDefinition Height="Auto"></RowDefinition>
|
||||
<RowDefinition Height="Auto"></RowDefinition>
|
||||
<RowDefinition Height="Auto"></RowDefinition>
|
||||
<RowDefinition Height="Auto"></RowDefinition>
|
||||
<RowDefinition Height="Auto"></RowDefinition>
|
||||
<RowDefinition Height="Auto"></RowDefinition>
|
||||
<RowDefinition Height="*"></RowDefinition>
|
||||
<RowDefinition Height="Auto"></RowDefinition>
|
||||
|
||||
</Grid.RowDefinitions>
|
||||
<Button Grid.Row="0" Grid.Column="0" x:Name="AddGame" Command="{Binding AddGame}">Add Game</Button>
|
||||
|
||||
<Button Grid.Row="0" Grid.Column="1" x:Name="DeleteGame" Command="{Binding DeleteGame}">Delete Game</Button>
|
||||
<Label Grid.Row="1" Grid.Column="0">Id</Label>
|
||||
<TextBox Grid.Row="1" Grid.Column="1" Text="{Binding Path=CurrentGame.Id,Mode=TwoWay}" IsReadOnly="True"></TextBox>
|
||||
|
||||
<Label Grid.Row="2" Grid.Column="0">Name</Label>
|
||||
<TextBox Grid.Row="2" Grid.Column="1" Text="{Binding Path=CurrentGame.Name,Mode=TwoWay}" ></TextBox>
|
||||
|
||||
<Label Grid.Row="3" Grid.Column="0">Order</Label>
|
||||
<TextBox Grid.Row="3" Grid.Column="1" Text="{Binding Path=CurrentGame.Order,Mode=TwoWay}">
|
||||
<!-- <i:Interaction.Behaviors> -->
|
||||
<!-- <behaviors:TextBoxInputRegExBehaviour RegularExpression="^\d+$" MaxLength="9" EmptyValue="0"> -->
|
||||
<!-- -->
|
||||
<!-- </behaviors:TextBoxInputRegExBehaviour> -->
|
||||
<!-- </i:Interaction.Behaviors> -->
|
||||
</TextBox>
|
||||
<Label Grid.Row="4" Grid.Column="0">LongName</Label>
|
||||
<TextBox Grid.Row="4" Grid.Column="1" Text="{Binding Path=CurrentGame.LongName,Mode=TwoWay}" ></TextBox>
|
||||
|
||||
<Label Grid.Row="5" Grid.Column="0">WpTag</Label>
|
||||
<TextBox Grid.Row="5" Grid.Column="1" Text="{Binding Path=CurrentGame.WordPressTag,Mode=TwoWay}" ></TextBox>
|
||||
<Label Grid.Row="6" Grid.Column="0">WpTagOs</Label>
|
||||
<TextBox Grid.Row="6" Grid.Column="1" Text="{Binding Path=CurrentGame.WordPressTagOs,Mode=TwoWay}" ></TextBox>
|
||||
<Label Grid.Row="7" Grid.Column="0">SmashId</Label>
|
||||
<TextBox Grid.Row="7" Grid.Column="1" Text="{Binding Path=CurrentGame.SmashId,Mode=TwoWay}">
|
||||
|
||||
</TextBox>
|
||||
|
||||
<Button Grid.Row="9" Grid.ColumnSpan="2" x:Name="Update" Command="{Binding Update}">Update</Button>
|
||||
|
||||
</Grid>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,23 @@
|
||||
using Avalonia;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Markup.Xaml;
|
||||
using LaDOSE.DesktopApp.Avalonia.ViewModels;
|
||||
using ReactiveUI;
|
||||
|
||||
namespace LaDOSE.DesktopApp.Avalonia.Views;
|
||||
|
||||
public partial class GamesView : UserControl,IViewFor<GamesViewModel>
|
||||
{
|
||||
public GamesView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
object? IViewFor.ViewModel
|
||||
{
|
||||
get => ViewModel;
|
||||
set => ViewModel = (GamesViewModel?)value;
|
||||
}
|
||||
|
||||
public GamesViewModel? ViewModel { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
<UserControl xmlns="https://github.com/avaloniaui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
||||
x:Class="LaDOSE.DesktopApp.Avalonia.Views.InfoView">
|
||||
<Decorator x:Name="browserWrapper"/>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,24 @@
|
||||
using Avalonia;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Markup.Xaml;
|
||||
using LaDOSE.DesktopApp.Avalonia.ViewModels;
|
||||
using ReactiveUI;
|
||||
|
||||
namespace LaDOSE.DesktopApp.Avalonia.Views;
|
||||
|
||||
public partial class InfoView : UserControl, IViewFor<InfoViewModel>
|
||||
{
|
||||
// private AvaloniaCefBrowser browser;
|
||||
public InfoView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
object? IViewFor.ViewModel
|
||||
{
|
||||
get => ViewModel;
|
||||
set => ViewModel = (InfoViewModel?)value;
|
||||
}
|
||||
|
||||
public InfoViewModel? ViewModel { get; set; }
|
||||
}
|
||||
52
LaDOSE.Src/LaDOSE.DesktopApp.Avalonia/Views/MainWindow.axaml
Normal file
52
LaDOSE.Src/LaDOSE.DesktopApp.Avalonia/Views/MainWindow.axaml
Normal file
@@ -0,0 +1,52 @@
|
||||
<Window xmlns="https://github.com/avaloniaui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:vm="using:LaDOSE.DesktopApp.Avalonia.ViewModels"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:reactiveUi="http://reactiveui.net"
|
||||
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
||||
x:Class="LaDOSE.DesktopApp.Avalonia.Views.MainWindow"
|
||||
x:DataType="vm:MainWindowViewModel"
|
||||
Icon="/Assets/avalonia-logo.ico"
|
||||
Title="LaDOSE.DesktopApp.Avalonia">
|
||||
|
||||
<Design.DataContext>
|
||||
<!-- This only sets the DataContext for the previewer in an IDE,
|
||||
to set the actual DataContext for runtime, set the DataContext property in code (look at App.axaml.cs) -->
|
||||
<vm:MainWindowViewModel/>
|
||||
</Design.DataContext>
|
||||
|
||||
<Grid Row="4" Column="1">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"></RowDefinition>
|
||||
<RowDefinition Height="*"></RowDefinition>
|
||||
<RowDefinition Height="Auto"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<Menu Grid.Row="0" DockPanel.Dock="Top">
|
||||
<MenuItem Header="_File">
|
||||
<MenuItem Header="_Events" Command="{Binding RoutedViewViewHost.ShowTournament}">
|
||||
</MenuItem>
|
||||
<MenuItem Header="_Games" Command="{Binding RoutedViewViewHost.ShowGames}" >
|
||||
</MenuItem>
|
||||
<MenuItem Header="_Tournaments">
|
||||
</MenuItem>
|
||||
<MenuItem Header="_EventPlayers">
|
||||
</MenuItem>
|
||||
<MenuItem Header="_Info" Command="{Binding RoutedViewViewHost.ShowInfo}" />
|
||||
<MenuItem Header="_Close" Command="{Binding CloseApp}" />
|
||||
</MenuItem>
|
||||
</Menu>
|
||||
|
||||
<TabControl Grid.Row="1" TabStripPlacement="Left">
|
||||
<TabItem Header="{Binding Path=RoutedViewViewHost.Current}">
|
||||
<DockPanel DataContext="{Binding RoutedViewViewHost}">
|
||||
<reactiveUi:RoutedViewHost Router="{Binding Router}"/>
|
||||
</DockPanel>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
<StackPanel Grid.Row="2" Orientation="Horizontal">
|
||||
<TextBlock> User : </TextBlock>
|
||||
<TextBlock Margin="5,0,0,0"></TextBlock>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Window>
|
||||
@@ -0,0 +1,12 @@
|
||||
using Avalonia.Controls;
|
||||
|
||||
namespace LaDOSE.DesktopApp.Avalonia.Views;
|
||||
|
||||
public partial class MainWindow : Window
|
||||
{
|
||||
public MainWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,212 @@
|
||||
<UserControl xmlns="https://github.com/avaloniaui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
||||
x:Class="LaDOSE.DesktopApp.Avalonia.Views.TournamentResultView"
|
||||
xmlns:vm="using:LaDOSE.DesktopApp.Avalonia.ViewModels"
|
||||
x:DataType="vm:TournamentResultViewModel"
|
||||
>
|
||||
<Grid Row="2" Column="1">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="2*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid Row="0" Column="0">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid Row="0" Column="0">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<StackPanel Grid.Row="0" Orientation="Horizontal" Margin="0,0,0,5">
|
||||
<Label>Date :</Label>
|
||||
<StackPanel Orientation="Horizontal" Width="210">
|
||||
<DatePicker SelectedDate="{Binding From}" Width="100" BorderBrush="{x:Null}">
|
||||
</DatePicker>
|
||||
|
||||
<DatePicker SelectedDate="{Binding To}" Width="100" Margin="5,0,5,0" BorderBrush="{x:Null}">
|
||||
</DatePicker>
|
||||
</StackPanel>
|
||||
|
||||
<Label>Usefull :</Label>
|
||||
<Button Padding="5,0,5,0" x:Name="SelectMonth" Command="{Binding SelectMonth}">Month</Button>
|
||||
<Button Padding="5,0,5,0" Margin="5,0,5,0" x:Name="SelectYear" Command="{Binding SelectYear}">Year</Button>
|
||||
|
||||
</StackPanel>
|
||||
<Button Grid.Row="1" x:Name="LoadTournaments" Command="{Binding LoadTournaments}">Update</Button>
|
||||
<ListBox Grid.Row="2" ItemsSource="{Binding Tournaments}" x:Name="TournamentList" Margin="0,0,0,5"
|
||||
IsTextSearchEnabled="True" TextSearch.Text="Name"
|
||||
SelectedItems="{Binding SelectedTournaments}"
|
||||
SelectionMode="Multiple">
|
||||
<ListBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Margin="5,0,0,0" Text="{Binding Name}" />
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</ListBox.ItemTemplate>
|
||||
|
||||
</ListBox>
|
||||
<DockPanel Grid.Row="3" Dock="Left">
|
||||
<Label>Select :</Label>
|
||||
<TextBox Width="200" Text="{Binding SelectRegex}"></TextBox>
|
||||
<Button Padding="5,0,5,0" Margin="5,0,5,0" x:Name="SelectRegexp" Command="{Binding SelectRegexp}">Select</Button>
|
||||
<Button Padding="5,0,5,0" Margin="5,0,5,0" x:Name="GetChallonge" Command="{Binding GetChallonge}">Import</Button>
|
||||
</DockPanel>
|
||||
|
||||
</Grid>
|
||||
<Grid Row="0" Column="1">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<StackPanel Grid.Row="0" Grid.Column="0" Orientation="Horizontal" Margin="0,0,0,6">
|
||||
<Label> Smash Slug :</Label>
|
||||
<TextBox Width="200" Text="{Binding Slug}"></TextBox>
|
||||
<Button Margin="5,0,5,0" x:Name="GetSmash" Command="{Binding GetSmash}" >Import Smash Event</Button>
|
||||
</StackPanel>
|
||||
|
||||
<Button Grid.Row="1" x:Name="UpdateEvent" Command="{Binding UpdateEvent}">Update Event</Button>
|
||||
|
||||
<ListBox Grid.Row="2" ItemsSource="{Binding Events}" Margin="0,0,0,5"
|
||||
IsTextSearchEnabled="True" TextSearch.Text="Name" SelectionMode="Multiple"
|
||||
SelectedItems="{Binding SelectedEvents}">
|
||||
<ListBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Text="{Binding Id}" />
|
||||
<TextBlock Margin="5,0,0,0" Text="{Binding Name}" />
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</ListBox.ItemTemplate>
|
||||
|
||||
</ListBox>
|
||||
<DockPanel Grid.Row="3" Dock="Left">
|
||||
<Label>Select :</Label>
|
||||
<TextBox Width="200" Text="{Binding SelectEventRegex}"></TextBox>
|
||||
<Button Padding="5,0,5,0" Margin="5,0,5,0" x:Name="SelectEvent" Command="{Binding SelectEvent}">Select</Button>
|
||||
</DockPanel>
|
||||
</Grid>
|
||||
</Grid>
|
||||
|
||||
<Grid Row="3">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="2*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<!--<DockPanel Grid.Row="0" Grid.ColumnSpan="3" Dock="Left">
|
||||
<Label>Select :</Label>
|
||||
<TextBox Width="200" Text="{Binding SelectRegex}"></TextBox>
|
||||
<Button Padding="5,0,5,0" Margin="5,0,5,0" x:Name="SelectRegexp">Select</Button>
|
||||
<Button x:Name="Select" >Get Tournaments Result</Button>
|
||||
</DockPanel>-->
|
||||
<Button x:Name="Select" Grid.ColumnSpan="3" Command="{Binding Select}">Get Tournaments Result</Button>
|
||||
|
||||
|
||||
<StackPanel Grid.Row="1" Grid.ColumnSpan="3" Orientation="Horizontal">
|
||||
<TextBlock> Game :</TextBlock>
|
||||
<TextBlock Margin="5,0,0,0" Text="{Binding Results.Games.Count}" />
|
||||
|
||||
</StackPanel>
|
||||
<ListBox Grid.Row="2" ItemsSource="{Binding Results.Games}" Margin="5,5,5,5"
|
||||
IsTextSearchEnabled="True" TextSearch.Text="Name"
|
||||
SelectedItem="{Binding SelectedGame}">
|
||||
<ListBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Text="{Binding Id}" />
|
||||
<TextBlock Margin="5,0,0,0" Text="{Binding Name}" />
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</ListBox.ItemTemplate>
|
||||
|
||||
</ListBox>
|
||||
<StackPanel Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="3" Orientation="Horizontal">
|
||||
<TextBlock> Participents :</TextBlock>
|
||||
<TextBlock Margin="5,0,0,0" Text="{Binding Results.Participents.Count}" />
|
||||
|
||||
</StackPanel>
|
||||
<ListBox Grid.Row="2" Grid.Column="1" ItemsSource="{Binding Results.Participents}" Margin="5,5,5,5"
|
||||
IsTextSearchEnabled="True" TextSearch.Text="Name">
|
||||
<ListBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Margin="5,0,0,0" Text="{Binding Name}" />
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</ListBox.ItemTemplate>
|
||||
|
||||
</ListBox>
|
||||
|
||||
<TabControl Grid.Row="2" Grid.Column="2">
|
||||
<TabItem Header="Result">
|
||||
<DataGrid x:Name="DataGrid" PropertyChanged="DataGrid_OnPropertyChanged" ItemsSource="{Binding GridDataTableView}" CanUserSortColumns="True" BorderThickness="1" BorderBrush="Gray"/>
|
||||
</TabItem>
|
||||
<TabItem Header="By Game">
|
||||
<DockPanel>
|
||||
|
||||
<StackPanel Orientation="Horizontal" DockPanel.Dock="Top">
|
||||
<TextBlock> Total :</TextBlock>
|
||||
<TextBlock Text="{Binding SelectedGameResult.Count}" />
|
||||
</StackPanel>
|
||||
<ListBox ItemsSource="{Binding SelectedGameResult}" Margin="5,5,5,5"
|
||||
IsTextSearchEnabled="True" TextSearch.Text="Name" DockPanel.Dock="Top">
|
||||
<ListBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Margin="5,0,0,0" Text="{Binding Player}" />
|
||||
<TextBlock Margin="5,0,0,0" Text="{Binding Point}" />
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</ListBox.ItemTemplate>
|
||||
|
||||
</ListBox>
|
||||
|
||||
</DockPanel>
|
||||
</TabItem>
|
||||
<TabItem Header="HTML">
|
||||
<DockPanel>
|
||||
<Button x:Name="CopyHtml" DockPanel.Dock="Top" Command="{Binding CopyHtml}">Copy HTML to clipboard</Button>
|
||||
<TextBox Text="{Binding Html}" />
|
||||
</DockPanel>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
|
||||
<Button Grid.Row="4" Grid.ColumnSpan="3" x:Name="Export" Command="{Binding Export}">Export</Button>
|
||||
|
||||
</Grid>
|
||||
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,56 @@
|
||||
|
||||
using System.Data;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using Avalonia;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Data;
|
||||
using LaDOSE.DesktopApp.Avalonia.ViewModels;
|
||||
using ReactiveUI;
|
||||
|
||||
namespace LaDOSE.DesktopApp.Avalonia.Views
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for ShellView.xaml
|
||||
/// </summary>
|
||||
public partial class TournamentResultView : UserControl, IViewFor<TournamentResultViewModel>
|
||||
{
|
||||
public TournamentResultView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
|
||||
object? IViewFor.ViewModel
|
||||
{
|
||||
get => ViewModel;
|
||||
set => ViewModel = (TournamentResultViewModel)value;
|
||||
}
|
||||
|
||||
public TournamentResultViewModel? ViewModel { get; set; }
|
||||
|
||||
private void DataGrid_OnPropertyChanged(object? sender, AvaloniaPropertyChangedEventArgs e)
|
||||
{
|
||||
if (e.Property.Name == "ItemsSource")
|
||||
{
|
||||
Trace.WriteLine("Changed Binding");
|
||||
|
||||
var grid = (sender as DataGrid);
|
||||
grid.Columns.Clear();
|
||||
var data = ViewModel.GridDataTable;
|
||||
|
||||
foreach (DataColumn? view in data.Columns)
|
||||
{
|
||||
|
||||
grid.Columns.Add(new DataGridTextColumn()
|
||||
{
|
||||
Header = view.ColumnName,
|
||||
CanUserSort = true,
|
||||
Binding = new Binding($"Row.ItemArray[{view.Ordinal}]")
|
||||
});
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
18
LaDOSE.Src/LaDOSE.DesktopApp.Avalonia/app.manifest
Normal file
18
LaDOSE.Src/LaDOSE.DesktopApp.Avalonia/app.manifest
Normal file
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<!-- This manifest is used on Windows only.
|
||||
Don't remove it as it might cause problems with window transparency and embedded controls.
|
||||
For more details visit https://learn.microsoft.com/en-us/windows/win32/sbscs/application-manifests -->
|
||||
<assemblyIdentity version="1.0.0.0" name="LaDOSE.DesktopApp.Avalonia.Desktop"/>
|
||||
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<!-- A list of the Windows versions that this application has been tested on
|
||||
and is designed to work with. Uncomment the appropriate elements
|
||||
and Windows will automatically select the most compatible environment. -->
|
||||
|
||||
<!-- Windows 10 -->
|
||||
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
|
||||
</application>
|
||||
</compatibility>
|
||||
</assembly>
|
||||
@@ -11,7 +11,7 @@
|
||||
<OutputType>WinExe</OutputType>
|
||||
<RootNamespace>LaDOSE.DesktopApp</RootNamespace>
|
||||
<AssemblyName>LaDOSE.DesktopApp</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
|
||||
<TargetFrameworkVersion>v4.7</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
@@ -71,27 +71,6 @@
|
||||
<OutputPath>bin\x64\Release\</OutputPath>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Caliburn.Micro, Version=3.2.0.0, Culture=neutral, PublicKeyToken=8e5891231f2ed21f, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Caliburn.Micro.Core.3.2.0\lib\net45\Caliburn.Micro.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Caliburn.Micro.Platform, Version=3.2.0.0, Culture=neutral, PublicKeyToken=8e5891231f2ed21f, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Caliburn.Micro.3.2.0\lib\net45\Caliburn.Micro.Platform.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Caliburn.Micro.Platform.Core, Version=3.2.0.0, Culture=neutral, PublicKeyToken=8e5891231f2ed21f, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Caliburn.Micro.3.2.0\lib\net45\Caliburn.Micro.Platform.Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="CefSharp, Version=103.0.120.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\CefSharp.Common.103.0.120\lib\net452\CefSharp.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="CefSharp.Core, Version=103.0.120.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\CefSharp.Common.103.0.120\lib\net452\CefSharp.Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="CefSharp.Wpf, Version=103.0.120.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\CefSharp.Wpf.103.0.120\lib\net452\CefSharp.Wpf.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="RestSharp, Version=106.11.4.0, Culture=neutral, PublicKeyToken=598062e77f915f75, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\RestSharp.106.11.4\lib\net452\RestSharp.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Data" />
|
||||
@@ -101,9 +80,6 @@
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Web.Extensions" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Caliburn.Micro.3.2.0\lib\net45\System.Windows.Interactivity.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Core" />
|
||||
@@ -126,8 +102,6 @@
|
||||
<Compile Include="Behaviors\TextBoxInputRegExBehaviour.cs" />
|
||||
<Compile Include="Behaviors\MultiSelectorBehaviours.cs" />
|
||||
<Compile Include="Bootstrapper.cs" />
|
||||
<Compile Include="Themes\LeftMarginMultiplierConverter.cs" />
|
||||
<Compile Include="Themes\TreeViewItemExtensions.cs" />
|
||||
<Compile Include="Utils\CustomEqualityCompare.cs" />
|
||||
<Compile Include="Utils\PhpSerialize.cs" />
|
||||
<Compile Include="UserControls\BookingUserControl.xaml.cs">
|
||||
@@ -163,10 +137,6 @@
|
||||
<DependentUpon>App.xaml</DependentUpon>
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Page Include="Themes\Styles.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="UserControls\BookingUserControl.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
@@ -214,7 +184,6 @@
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
|
||||
namespace DarkBlendTheme
|
||||
{
|
||||
public class LeftMarginMultiplierConverter : IValueConverter
|
||||
{
|
||||
public double Length { get; set; }
|
||||
|
||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
var item = value as TreeViewItem;
|
||||
if (item == null)
|
||||
return new Thickness(0);
|
||||
|
||||
return new Thickness(Length * item.GetDepth(), 0, 0, 0);
|
||||
}
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,38 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Media;
|
||||
|
||||
namespace DarkBlendTheme
|
||||
{
|
||||
public static class TreeViewItemExtensions
|
||||
{
|
||||
public static int GetDepth(this TreeViewItem item)
|
||||
{
|
||||
TreeViewItem parent;
|
||||
while ((parent = GetParent(item)) != null)
|
||||
{
|
||||
return GetDepth(parent) + 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
private static TreeViewItem GetParent(TreeViewItem item)
|
||||
{
|
||||
var parent = VisualTreeHelper.GetParent(item);
|
||||
|
||||
while (!(parent is TreeViewItem || parent is TreeView))
|
||||
{
|
||||
if (parent == null) return null;
|
||||
parent = VisualTreeHelper.GetParent(parent);
|
||||
}
|
||||
return parent as TreeViewItem;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Caliburn.Micro" version="3.2.0" targetFramework="net461" />
|
||||
<package id="Caliburn.Micro.Core" version="3.2.0" targetFramework="net461" />
|
||||
<package id="cef.redist.x64" version="103.0.12" targetFramework="net461" />
|
||||
<package id="cef.redist.x86" version="103.0.12" targetFramework="net461" />
|
||||
<package id="CefSharp.Common" version="103.0.120" targetFramework="net461" />
|
||||
<package id="CefSharp.Wpf" version="103.0.120" targetFramework="net461" />
|
||||
<package id="RestSharp" version="106.11.4" targetFramework="net461" />
|
||||
<package id="WPFThemes.DarkBlend" version="1.0.8" targetFramework="net461" />
|
||||
</packages>
|
||||
@@ -24,7 +24,10 @@ namespace LaDOSE.REST
|
||||
|
||||
public event EventHandler<UpdatedJwtEventHandler> UpdatedJwtEvent;
|
||||
|
||||
public RestService() { }
|
||||
public RestService()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void Connect(Uri url, string user, string password)
|
||||
@@ -36,7 +39,7 @@ namespace LaDOSE.REST
|
||||
#if DEBUG
|
||||
options.MaxTimeout = Int32.MaxValue;
|
||||
#endif
|
||||
options.Authenticator = new JwtAuthenticator("token");
|
||||
options.Authenticator = new JwtAuthenticator(token);
|
||||
});
|
||||
|
||||
this.username = user;
|
||||
|
||||
@@ -23,6 +23,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LaDOSE.REST", "LaDOSE.REST\
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LinuxTest", "LinuxTest\LinuxTest.csproj", "{0EFA533F-9657-40CE-A3A5-F4E3C6E649B1}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LaDOSE.DesktopApp.Avalonia", "LaDOSE.DesktopApp.Avalonia\LaDOSE.DesktopApp.Avalonia.csproj", "{1A3C654A-2730-42DA-B714-187169965A31}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
@@ -57,6 +59,10 @@ Global
|
||||
{0EFA533F-9657-40CE-A3A5-F4E3C6E649B1}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{0EFA533F-9657-40CE-A3A5-F4E3C6E649B1}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{0EFA533F-9657-40CE-A3A5-F4E3C6E649B1}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{1A3C654A-2730-42DA-B714-187169965A31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{1A3C654A-2730-42DA-B714-187169965A31}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{1A3C654A-2730-42DA-B714-187169965A31}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1A3C654A-2730-42DA-B714-187169965A31}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
||||
Reference in New Issue
Block a user