pschelpdesk/HetznerServer/Views/ServerView.axaml
2024-12-13 21:12:09 +01:00

146 lines
8.4 KiB
XML

<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"
xmlns:materialIcons="clr-namespace:Material.Icons.Avalonia;assembly=Material.Icons.Avalonia"
xmlns:vm="clr-namespace:PSCHelpdesk.Plugins.HetznerServer.ViewModels"
xmlns:converter="clr-namespace:PSCHelpdesk.Plugins.HetznerServer.Converter"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="PSCHelpdesk.Plugins.HetznerServer.Views.ServerView"
xmlns:v="clr-namespace:PSCHelpdesk.Plugins.HetznerServer.Views"
x:DataType="vm:ServerViewModel"
Name="Servers">
<Design.DataContext>
<vm:ServerViewModel></vm:ServerViewModel>
</Design.DataContext>
<UserControl.Resources>
<converter:StatusConverter x:Key="StatusConverter"></converter:StatusConverter>
<converter:DateTimeConverter x:Key="DateTimeConverter"></converter:DateTimeConverter>
</UserControl.Resources>
<Grid ColumnDefinitions="*,4,*">
<Grid Grid.Column="0" Margin="20" RowDefinitions="Auto,Auto,*">
<StackPanel Grid.Row="0" Margin="0 0 0 5">
<TextBlock Margin="0 5" >Suchtext</TextBlock>
<TextBox Text="{Binding SearchText}"></TextBox>
</StackPanel>
<StackPanel Orientation="Horizontal" Grid.Row="1" Margin="0 0 0 5">
<Button Content="ReScan" Command="{Binding ReScan}"></Button>
<Button Content="Apt Upgrade" Command="{Binding AptUpdate}"></Button>
<Button Content="Reboot" Command="{Binding Reboot}"></Button>
<!-- <TextBox Grid.Row="1" Text="{Binding Json}"></TextBox>-->
</StackPanel>
<DataGrid Grid.Row="2" ItemsSource="{Binding Server}"
AutoGenerateColumns="False" IsReadOnly="True"
GridLinesVisibility="All" CanUserReorderColumns="True"
CanUserResizeColumns="True"
BorderThickness="1" BorderBrush="Gray"
x:Name="ServerTable">
<DataGrid.Styles>
<Style Selector="DataGridCell.status">
<Setter Property="Foreground" Value="{Binding Status, Converter={StaticResource StatusConverter}}" />
</Style>
<Style Selector="DataGridCell.lastBackup">
<Setter Property="Foreground" Value="{Binding BackupLastModified, Converter={StaticResource DateTimeConverter}}" />
</Style>
</DataGrid.Styles>
<Interaction.Behaviors>
<EventTriggerBehavior EventName="SelectionChanged">
<InvokeCommandAction Command="{Binding SelectionChanged}" PassEventArgsToCommand="true"></InvokeCommandAction>
</EventTriggerBehavior>
</Interaction.Behaviors>
<DataGrid.Columns>
<DataGridTemplateColumn Header="Select Server">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox HorizontalAlignment="Center" IsChecked="{Binding IsChecked}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Width="30" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<materialIcons:MaterialIcon Foreground="{Binding IsGoodColor}" Kind="{Binding IsGoodIcon}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Has Restart">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox HorizontalAlignment="Center" IsChecked="{Binding IsRestartAlways}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Has Need Restart">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox HorizontalAlignment="Center" IsChecked="{Binding HasNeedRestart}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Width="75" Header="Id" Binding="{Binding ServerId}"/>
<DataGridTemplateColumn Header="Name">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox HorizontalAlignment="Left" Text="{Binding Name}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Width="60" Header="Status" Binding="{Binding Status}" CellStyleClasses="status" />
<DataGridTextColumn Width="45" Header="Type" Binding="{Binding Type}" />
<DataGridTemplateColumn Header="IpV4">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox HorizontalAlignment="Left" Text="{Binding Ipv4}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Width="*" Header="IpV6" Binding="{Binding Ipv6}" />
<DataGridTextColumn Header="Datum"
Binding="{Binding Datum}"
Width="80" />
<DataGridTextColumn Header="Re"
Binding="{Binding Release}"
Width="35" />
<DataGridTextColumn Header="Last Backup"
Binding="{Binding BackupLastModified}"
Width="*"
CellStyleClasses="lastBackup"/>
<DataGridTemplateColumn Width="*" Header="">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Background="#232323"
Click="openSSH"
Content="Open SSH"
Foreground="White" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Width="*" Header="">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
Background="#232323"
Click="openSCP"
Content="Open SCP"
Foreground="White" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
<GridSplitter Grid.Column="1" Background="Black" ResizeDirection="Columns"/>
<StackPanel Grid.Column="2" Margin="5 0">
<v:ServerDetailView></v:ServerDetailView>
</StackPanel>
</Grid>
</UserControl>