/
kochkatech
/
Queue
Обзор
Документация
Войти
/
kochkatech
/
Queue
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
dev
src/Queue.Admin/Views/ScreensView.xaml
72 строки
5 KB
kochkareal
feat: вкладка "Экраны" в Admin — запуск/управление табло и АРМ оператора
27 июл 2026, 21:26
27 июл 2026, 21:26
62e41f9
Код
Авторство
О чём код?
<UserControl x:Class="Queue.Admin.Views.ScreensView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:conv="clr-namespace:Queue.Admin.Converters"> <UserControl.Resources> <conv:KioskButtonTextConverter x:Key="KioskButtonTextConverter" /> <conv:NullToVisibilityConverter x:Key="NullToVisibilityConverter" /> <conv:RunningStatusConverter x:Key="RunningStatusConverter" /> <conv:StoppedStatusConverter x:Key="StoppedStatusConverter" /> </UserControl.Resources> <Grid Margin="24"> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="*" /> </Grid.RowDefinitions> <TextBlock Grid.Row="0" Text="Экраны" Style="{StaticResource HeaderTextStyle}" Margin="0,0,0,4" /> <TextBlock Grid.Row="1" Text="Запуск и управление Табло очереди и АРМ оператора на этой машине — для локального тестирования (в реальной эксплуатации каждый модуль запускается на своём ПК, см. docs/architecture.md)." Style="{StaticResource SubLabelTextStyle}" TextWrapping="Wrap" MaxWidth="700" Margin="0,0,0,16" /> <StackPanel Grid.Row="2" Orientation="Horizontal" Margin="0,0,0,16"> <Button Content="Добавить табло" Command="{Binding LaunchDisplayCommand}" Margin="0,0,8,0" ToolTip="Откроет Queue.Display оконным (не в киоске) — можно перетащить на нужный монитор" /> <Button Content="Добавить рабочее место" Command="{Binding LaunchOperatorCommand}" ToolTip="Откроет Queue.OperatorApp обычным окном" /> </StackPanel> <DataGrid Grid.Row="3" ItemsSource="{Binding Items}" AutoGenerateColumns="False" IsReadOnly="True" CanUserAddRows="False" GridLinesVisibility="Horizontal"> <DataGrid.Columns> <DataGridTextColumn Header="Тип" Binding="{Binding TypeDisplay}" Width="180" /> <DataGridTextColumn Header="Статус" Binding="{Binding Status}" Width="120" /> <DataGridTextColumn Header="Запущено" Binding="{Binding LaunchedAt, StringFormat=HH:mm:ss}" Width="100" /> <DataGridTemplateColumn Header="Режим табло" Width="150"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <Button Content="{Binding IsKiosk, Converter={StaticResource KioskButtonTextConverter}}" Command="{Binding DataContext.ToggleKioskCommand, RelativeSource={RelativeSource AncestorType=UserControl}}" CommandParameter="{Binding}" Visibility="{Binding PipeHandle, Converter={StaticResource NullToVisibilityConverter}}" IsEnabled="{Binding Status, Converter={StaticResource RunningStatusConverter}}" Padding="8,4" /> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGridTemplateColumn Header="" Width="Auto"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <Button Content="Остановить" Padding="8,4" Background="Transparent" Foreground="#D32F2F" Command="{Binding DataContext.StopCommand, RelativeSource={RelativeSource AncestorType=UserControl}}" CommandParameter="{Binding}" Visibility="{Binding Status, Converter={StaticResource RunningStatusConverter}}" /> <Button Content="Перезапустить" Padding="8,4" Margin="0,0,4,0" Command="{Binding DataContext.RestartCommand, RelativeSource={RelativeSource AncestorType=UserControl}}" CommandParameter="{Binding}" Visibility="{Binding Status, Converter={StaticResource StoppedStatusConverter}}" /> <Button Content="Убрать" Padding="8,4" Background="Transparent" Foreground="Gray" Command="{Binding DataContext.RemoveCommand, RelativeSource={RelativeSource AncestorType=UserControl}}" CommandParameter="{Binding}" Visibility="{Binding Status, Converter={StaticResource StoppedStatusConverter}}" /> </StackPanel> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> </DataGrid.Columns> </DataGrid> </Grid> </UserControl>