Some checks failed
Build and Publish Docker Image / build-and-push (push) Has been cancelled
- Implemented CreateInstanceView for creating new instances. - Added HostsView for managing SSH hosts with CRUD operations. - Created InstancesView for displaying and managing instances. - Developed LogsView for viewing operation logs. - Introduced SecretsView for managing secrets associated with hosts. - Established SettingsView for configuring application settings. - Created MainWindow as the main application window with navigation. - Added app manifest and configuration files for logging and settings.
99 lines
5.2 KiB
XML
99 lines
5.2 KiB
XML
<UserControl xmlns="https://github.com/avaloniaui"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:vm="using:OTSSignsOrchestrator.Desktop.ViewModels"
|
|
x:Class="OTSSignsOrchestrator.Desktop.Views.InstancesView"
|
|
x:DataType="vm:InstancesViewModel">
|
|
|
|
<DockPanel>
|
|
<!-- Toolbar -->
|
|
<StackPanel DockPanel.Dock="Top" Spacing="8" Margin="0,0,0,12">
|
|
<StackPanel Orientation="Horizontal" Spacing="8">
|
|
<ComboBox ItemsSource="{Binding AvailableHosts}"
|
|
SelectedItem="{Binding SelectedSshHost}"
|
|
PlaceholderText="Select SSH Host..."
|
|
Width="250">
|
|
<ComboBox.ItemTemplate>
|
|
<DataTemplate>
|
|
<TextBlock Text="{Binding Label}" />
|
|
</DataTemplate>
|
|
</ComboBox.ItemTemplate>
|
|
</ComboBox>
|
|
<Button Content="List Remote Stacks" Command="{Binding RefreshRemoteStacksCommand}" />
|
|
<Button Content="Inspect" Command="{Binding InspectInstanceCommand}" />
|
|
<Button Content="Delete" Command="{Binding DeleteInstanceCommand}" />
|
|
<Button Content="Refresh" Command="{Binding LoadInstancesCommand}" />
|
|
</StackPanel>
|
|
|
|
<StackPanel Orientation="Horizontal" Spacing="8">
|
|
<TextBox Text="{Binding FilterText}" Watermark="Filter by name..." Width="250" />
|
|
<Button Content="Search" Command="{Binding LoadInstancesCommand}" />
|
|
</StackPanel>
|
|
</StackPanel>
|
|
|
|
<!-- Status -->
|
|
<TextBlock DockPanel.Dock="Bottom" Text="{Binding StatusMessage}" Margin="0,8,0,0"
|
|
FontSize="12" Foreground="#a6adc8" />
|
|
|
|
<!-- Services panel (shown when inspecting) -->
|
|
<Border DockPanel.Dock="Right" Width="350"
|
|
IsVisible="{Binding SelectedServices.Count}"
|
|
Background="#1e1e2e" CornerRadius="8" Padding="12" Margin="12,0,0,0">
|
|
<StackPanel Spacing="4">
|
|
<TextBlock Text="Stack Services" FontWeight="SemiBold" Margin="0,0,0,8" />
|
|
<ItemsControl ItemsSource="{Binding SelectedServices}">
|
|
<ItemsControl.ItemTemplate>
|
|
<DataTemplate>
|
|
<Border Background="#313244" CornerRadius="4" Padding="8" Margin="0,2">
|
|
<StackPanel Spacing="2">
|
|
<TextBlock Text="{Binding Name}" FontWeight="SemiBold" />
|
|
<TextBlock Text="{Binding Image}" FontSize="11" Foreground="#a6adc8" />
|
|
<TextBlock Text="{Binding Replicas, StringFormat='Replicas: {0}'}"
|
|
FontSize="11" Foreground="#a6adc8" />
|
|
</StackPanel>
|
|
</Border>
|
|
</DataTemplate>
|
|
</ItemsControl.ItemTemplate>
|
|
</ItemsControl>
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<!-- Remote stacks panel -->
|
|
<Border DockPanel.Dock="Bottom" MaxHeight="200"
|
|
IsVisible="{Binding RemoteStacks.Count}"
|
|
Background="#1e1e2e" CornerRadius="8" Padding="12" Margin="0,8,0,0">
|
|
<StackPanel Spacing="4">
|
|
<TextBlock Text="Remote Stacks" FontWeight="SemiBold" />
|
|
<ItemsControl ItemsSource="{Binding RemoteStacks}">
|
|
<ItemsControl.ItemTemplate>
|
|
<DataTemplate>
|
|
<TextBlock>
|
|
<Run Text="{Binding Name}" FontWeight="SemiBold" />
|
|
<Run Text="{Binding ServiceCount, StringFormat=' ({0} services)'}"
|
|
Foreground="#a6adc8" />
|
|
</TextBlock>
|
|
</DataTemplate>
|
|
</ItemsControl.ItemTemplate>
|
|
</ItemsControl>
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<!-- Instance list -->
|
|
<DataGrid ItemsSource="{Binding Instances}"
|
|
SelectedItem="{Binding SelectedInstance}"
|
|
AutoGenerateColumns="False"
|
|
IsReadOnly="True"
|
|
GridLinesVisibility="Horizontal"
|
|
CanUserResizeColumns="True">
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn Header="Stack" Binding="{Binding StackName}" Width="120" />
|
|
<DataGridTextColumn Header="Customer" Binding="{Binding CustomerName}" Width="120" />
|
|
<DataGridTextColumn Header="Status" Binding="{Binding Status}" Width="80" />
|
|
<DataGridTextColumn Header="Server" Binding="{Binding CmsServerName}" Width="150" />
|
|
<DataGridTextColumn Header="Port" Binding="{Binding HostHttpPort}" Width="60" />
|
|
<DataGridTextColumn Header="Host" Binding="{Binding SshHost.Label}" Width="120" />
|
|
<DataGridTextColumn Header="Created" Binding="{Binding CreatedAt, StringFormat='{}{0:g}'}" Width="140" />
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
</DockPanel>
|
|
</UserControl>
|