1
0
2025-05-21 11:20:11 +08:00

120 lines
8.2 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:u="https://irihi.tech/ursa"
xmlns:vm="using:Flawless.Client.ViewModels"
xmlns:lvc="using:LiveChartsCore.SkiaSharpView.Avalonia"
xmlns:views="clr-namespace:Flawless.Client.Views"
x:DataType="vm:RepositoryViewModel"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="Flawless.Client.Views.RepositoryPage.RepoSettingPageView">
<TabControl TabStripPlacement="Left">
<TabItem Header="Members">
<StackPanel Width="600" Orientation="Vertical" HorizontalAlignment="Left" Margin="6">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Spacing="8">
<u:IconButton Icon="{StaticResource SemiIconPlus}" Content="Add User"
IsVisible="{Binding Repository.OwnByCurrentUser}"
Command="{Binding AddMemberFromServerAsyncCommand}"/>
<u:IconButton Icon="{StaticResource SemiIconRefresh}" Content="Refresh"
Command="{Binding RefreshRepositoryRoleInfoAsyncCommand}" />
</StackPanel>
<ScrollViewer HorizontalAlignment="Stretch">
<ItemsControl ItemsSource="{Binding Repository.Members}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid ColumnDefinitions="Auto, *, Auto" Margin="0 16" VerticalAlignment="Center">
<StackPanel Grid.Column="0" Spacing="6" Orientation="Horizontal">
<Label FontSize="16" VerticalContentAlignment="Center" Content="{Binding Username}"/>
<Label VerticalContentAlignment="Center" Classes="Blue"
Theme="{StaticResource TagLabel}" Content="{Binding Role}"/>
</StackPanel>
<StackPanel Grid.Column="2" Spacing="8" IsVisible="{Binding CanEdit}" Orientation="Horizontal">
<u:IconButton Icon="{StaticResource SemiIconEdit}"
Command="{Binding $parent[ItemsControl].((vm:RepositoryViewModel)DataContext).ModifyMemberFromServerAsyncCommand}"
CommandParameter="{Binding .}"/>
<u:IconButton Classes="Danger" Icon="{StaticResource SemiIconExit}"
Command="{Binding $parent[ItemsControl].((vm:RepositoryViewModel)DataContext).DeleteMemberFromServerAsyncCommand}"
CommandParameter="{Binding .}"/>
</StackPanel>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>
</StackPanel>
</TabItem>
<TabItem Header="Admin Area" IsVisible="{Binding IsOwnerRole}">
<ScrollViewer Width="600" HorizontalAlignment="Left" Margin="6">
<u:Form HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<u:FormItem Label="Repository Description">
<TextBox Classes="TextArea" HorizontalAlignment="Stretch">
<TextBox.KeyBindings>
<KeyBinding Gesture="Enter"></KeyBinding>
</TextBox.KeyBindings>
</TextBox>
</u:FormItem>
<u:FormItem Label="Delete Repository">
<Button HorizontalAlignment="Stretch" Classes="Danger" Content="Yes I Want to Delete this Repository"
Command="{Binding DeleteRepositoryBothServerAndLocalCommand}"/>
</u:FormItem>
<u:FormItem Label="Webhook" IsVisible="{Binding ShowWebHook}">
<StackPanel>
<StackPanel Orientation="Horizontal" Spacing="10">
<u:IconButton Content="Refresh" Icon="{StaticResource SemiIconRefresh}"
Command="{Binding RefreshWebhooksCommand}"/>
<u:IconButton Content="Add" Icon="{StaticResource SemiIconPlus}"
Command="{Binding AddWebhookCommand}"
IsVisible="{Binding IsOwnerRole}"/>
</StackPanel>
<DataGrid ItemsSource="{Binding Repository.Webhooks}"
IsReadOnly="True"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="URL" Binding="{Binding TargetUrl}"/>
<DataGridCheckBoxColumn Header="Active" Binding="{Binding Active}"/>
<DataGridTextColumn Header="Type" Binding="{Binding EventType}"/>
<DataGridTemplateColumn IsVisible="{Binding IsOwnerRole}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Button Content="Toggle Activate"
Command="{Binding $parent[views:RepositoryView].((vm:RepositoryViewModel)DataContext).ToggleWebhookCommand}"
CommandParameter="{Binding}"/>
<Button Content="Toggle Activate"
Command="{Binding $parent[views:RepositoryView].((vm:RepositoryViewModel)DataContext).DeleteWebhookCommand}"
CommandParameter="{Binding}"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</StackPanel>
</u:FormItem>
</u:Form>
</ScrollViewer>
</TabItem>
<TabItem Header="Statics" IsVisible="{Binding IsOwnerRole}">
<ScrollViewer Width="600" HorizontalAlignment="Left" Margin="6">
<StackPanel Spacing="16" HorizontalAlignment="Stretch">
<StackPanel Orientation="Horizontal" Spacing="10">
<u:IconButton Content="Refresh" Icon="{StaticResource SemiIconRefresh}"
Command="{Binding RefreshStatisticDataCommand}"/>
</StackPanel>
<StackPanel HorizontalAlignment="Stretch" Orientation="Vertical">
<Label>Every Day Commits</Label>
<lvc:CartesianChart Series="{Binding ByDay, Mode=TwoWay}" XAxes="{Binding XAxesByDay, Mode=TwoWay}">
</lvc:CartesianChart>
</StackPanel>
<StackPanel HorizontalAlignment="Stretch" Orientation="Vertical">
<Label>Depot Sizes</Label>
<TreeDataGrid Source="{Binding Depots}"/>
</StackPanel>
</StackPanel>
</ScrollViewer>
</TabItem>
</TabControl>
</UserControl>