Добавьте файлы проекта.

This commit is contained in:
Курнат Андрей
2026-04-04 10:52:30 +03:00
parent 9b34a92f15
commit 5a55bc5f4c
30 changed files with 3446 additions and 0 deletions

268
MainWindow.xaml Normal file
View File

@@ -0,0 +1,268 @@
<Window x:Class="CRAWLER.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
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"
Title="CRAWLER"
Height="920"
Width="1560"
MinHeight="760"
MinWidth="1240"
WindowState="Maximized"
Loaded="Window_Loaded">
<Window.Resources>
<Style x:Key="GhostGridSplitterStyle" TargetType="GridSplitter">
<Setter Property="Background" Value="Transparent" />
<Setter Property="BorderBrush" Value="Transparent" />
<Setter Property="BorderThickness" Value="0" />
<Setter Property="ShowsPreview" Value="True" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#D7DADF" />
<Setter Property="BorderBrush" Value="#BCC1C7" />
<Setter Property="BorderThickness" Value="1" />
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid Margin="12">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Border Grid.Row="0"
Margin="0,0,0,12"
Padding="12"
Background="{StaticResource AppPanelBrush}"
BorderBrush="{StaticResource AppBorderBrush}"
BorderThickness="1"
CornerRadius="4">
<DockPanel LastChildFill="False">
<StackPanel DockPanel.Dock="Left"
Orientation="Horizontal"
VerticalAlignment="Center">
<TextBlock Margin="0,0,8,0"
VerticalAlignment="Center"
FontWeight="SemiBold"
Text="Поиск" />
<TextBox Width="320"
Margin="0,0,10,0"
VerticalAlignment="Center"
KeyDown="SearchTextBox_KeyDown"
Text="{Binding SearchText, UpdateSourceTrigger=PropertyChanged}" />
<Button Margin="0,0,8,0"
Click="RefreshButton_Click"
Content="Обновить список" />
<TextBlock Margin="12,0,8,0"
VerticalAlignment="Center"
FontWeight="SemiBold"
Text="Страниц для сайта" />
<TextBox Width="64"
Margin="0,0,10,0"
VerticalAlignment="Center"
Text="{Binding PagesToScan, UpdateSourceTrigger=PropertyChanged}" />
<Button Margin="0,0,8,0"
Style="{StaticResource PrimaryActionButtonStyle}"
Click="SyncButton_Click"
Content="Обновить с сайта" />
</StackPanel>
<StackPanel DockPanel.Dock="Right"
Orientation="Horizontal"
HorizontalAlignment="Right">
<Button Margin="0,0,8,0"
Click="AddButton_Click"
Content="Добавить" />
<Button Margin="0,0,8,0"
Click="EditButton_Click"
Content="Изменить" />
<Button Click="DeleteButton_Click"
Content="Удалить" />
</StackPanel>
</DockPanel>
</Border>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2.2*" />
<ColumnDefinition Width="10" />
<ColumnDefinition Width="1.6*" />
</Grid.ColumnDefinitions>
<GroupBox Grid.Column="0" Header="Реестр средств измерений">
<Grid Margin="8">
<DataGrid x:Name="InstrumentGrid"
ItemsSource="{Binding Instruments}"
SelectedItem="{Binding SelectedSummary, Mode=TwoWay}"
IsReadOnly="True"
MouseDoubleClick="InstrumentGrid_MouseDoubleClick">
<DataGrid.Columns>
<DataGridTextColumn Width="120" Binding="{Binding RegistryNumber}" Header="Госреестр" />
<DataGridTextColumn Width="2*" Binding="{Binding Name}" Header="Наименование" />
<DataGridTextColumn Width="160" Binding="{Binding TypeDesignation}" Header="Тип" />
<DataGridTextColumn Width="2*" Binding="{Binding Manufacturer}" Header="Производитель" />
<DataGridTextColumn Width="120" Binding="{Binding VerificationInterval}" Header="МПИ" />
<DataGridTextColumn Width="110" Binding="{Binding SourceSystem}" Header="Источник" />
<DataGridTextColumn Width="140" Binding="{Binding UpdatedAt, StringFormat=dd.MM.yyyy HH:mm}" Header="Обновлено" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</GroupBox>
<GridSplitter Grid.Column="1"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
ResizeDirection="Columns"
ResizeBehavior="PreviousAndNext"
Style="{StaticResource GhostGridSplitterStyle}"
Cursor="SizeWE" />
<GroupBox Grid.Column="2" Header="Карточка записи">
<Grid Margin="8">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<DockPanel Grid.Row="0" Margin="0,0,0,8" LastChildFill="False">
<TextBlock DockPanel.Dock="Left"
FontSize="16"
FontWeight="SemiBold"
Text="{Binding SelectedInstrument.Name}" />
<Button DockPanel.Dock="Right"
Padding="8,4"
Click="OpenSourceButton_Click"
Content="Открыть источник" />
</DockPanel>
<TabControl Grid.Row="1">
<TabItem Header="Общее">
<ScrollViewer VerticalScrollBarVisibility="Auto">
<Grid Margin="8">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="180" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Margin="0,0,8,6" VerticalAlignment="Center" Text="Номер в госреестре" />
<TextBox Grid.Row="0" Grid.Column="1" Margin="0,0,0,6" IsReadOnly="True" Text="{Binding SelectedInstrument.RegistryNumber}" />
<TextBlock Grid.Row="1" Grid.Column="0" Margin="0,0,8,6" VerticalAlignment="Center" Text="Тип" />
<TextBox Grid.Row="1" Grid.Column="1" Margin="0,0,0,6" IsReadOnly="True" Text="{Binding SelectedInstrument.TypeDesignation}" />
<TextBlock Grid.Row="2" Grid.Column="0" Margin="0,0,8,6" VerticalAlignment="Center" Text="Производитель" />
<TextBox Grid.Row="2" Grid.Column="1" Margin="0,0,0,6" IsReadOnly="True" Text="{Binding SelectedInstrument.Manufacturer}" TextWrapping="Wrap" />
<TextBlock Grid.Row="3" Grid.Column="0" Margin="0,0,8,6" VerticalAlignment="Center" Text="МПИ" />
<TextBox Grid.Row="3" Grid.Column="1" Margin="0,0,0,6" IsReadOnly="True" Text="{Binding SelectedInstrument.VerificationInterval}" />
<TextBlock Grid.Row="4" Grid.Column="0" Margin="0,0,8,6" VerticalAlignment="Center" Text="Срок/зав. номер" />
<TextBox Grid.Row="4" Grid.Column="1" Margin="0,0,0,6" IsReadOnly="True" Text="{Binding SelectedInstrument.CertificateOrSerialNumber}" />
<TextBlock Grid.Row="5" Grid.Column="0" Margin="0,0,8,6" VerticalAlignment="Center" Text="Поверка партии" />
<TextBox Grid.Row="5" Grid.Column="1" Margin="0,0,0,6" IsReadOnly="True" Text="{Binding SelectedInstrument.AllowsBatchVerification}" />
<TextBlock Grid.Row="6" Grid.Column="0" Margin="0,0,8,6" VerticalAlignment="Center" Text="Периодическая поверка" />
<TextBox Grid.Row="6" Grid.Column="1" Margin="0,0,0,6" IsReadOnly="True" Text="{Binding SelectedInstrument.HasPeriodicVerification}" />
<TextBlock Grid.Row="7" Grid.Column="0" Margin="0,0,8,6" VerticalAlignment="Center" Text="Источник" />
<TextBox Grid.Row="7" Grid.Column="1" Margin="0,0,0,6" IsReadOnly="True" Text="{Binding SelectedInstrument.SourceSystem}" />
<TextBlock Grid.Row="8" Grid.Column="0" Margin="0,0,8,0" VerticalAlignment="Top" Text="Ссылка" />
<TextBox Grid.Row="8" Grid.Column="1" IsReadOnly="True" Text="{Binding SelectedInstrument.DetailUrl}" TextWrapping="Wrap" VerticalScrollBarVisibility="Auto" />
</Grid>
</ScrollViewer>
</TabItem>
<TabItem Header="Текстовые поля">
<ScrollViewer VerticalScrollBarVisibility="Auto">
<StackPanel Margin="8">
<TextBlock Margin="0,0,0,4" FontWeight="SemiBold" Text="Назначение" />
<TextBox Margin="0,0,0,10" IsReadOnly="True" MinHeight="60" Text="{Binding SelectedInstrument.Purpose}" TextWrapping="Wrap" AcceptsReturn="True" VerticalScrollBarVisibility="Auto" />
<TextBlock Margin="0,0,0,4" FontWeight="SemiBold" Text="Описание" />
<TextBox Margin="0,0,0,10" IsReadOnly="True" MinHeight="70" Text="{Binding SelectedInstrument.Description}" TextWrapping="Wrap" AcceptsReturn="True" VerticalScrollBarVisibility="Auto" />
<TextBlock Margin="0,0,0,4" FontWeight="SemiBold" Text="Программное обеспечение" />
<TextBox Margin="0,0,0,10" IsReadOnly="True" MinHeight="60" Text="{Binding SelectedInstrument.Software}" TextWrapping="Wrap" AcceptsReturn="True" VerticalScrollBarVisibility="Auto" />
<TextBlock Margin="0,0,0,4" FontWeight="SemiBold" Text="Метрологические и технические характеристики" />
<TextBox Margin="0,0,0,10" IsReadOnly="True" MinHeight="70" Text="{Binding SelectedInstrument.MetrologicalCharacteristics}" TextWrapping="Wrap" AcceptsReturn="True" VerticalScrollBarVisibility="Auto" />
<TextBlock Margin="0,0,0,4" FontWeight="SemiBold" Text="Комплектность" />
<TextBox Margin="0,0,0,10" IsReadOnly="True" MinHeight="60" Text="{Binding SelectedInstrument.Completeness}" TextWrapping="Wrap" AcceptsReturn="True" VerticalScrollBarVisibility="Auto" />
<TextBlock Margin="0,0,0,4" FontWeight="SemiBold" Text="Поверка" />
<TextBox Margin="0,0,0,10" IsReadOnly="True" MinHeight="60" Text="{Binding SelectedInstrument.Verification}" TextWrapping="Wrap" AcceptsReturn="True" VerticalScrollBarVisibility="Auto" />
<TextBlock Margin="0,0,0,4" FontWeight="SemiBold" Text="Нормативные и технические документы" />
<TextBox Margin="0,0,0,10" IsReadOnly="True" MinHeight="60" Text="{Binding SelectedInstrument.RegulatoryDocuments}" TextWrapping="Wrap" AcceptsReturn="True" VerticalScrollBarVisibility="Auto" />
<TextBlock Margin="0,0,0,4" FontWeight="SemiBold" Text="Заявитель" />
<TextBox Margin="0,0,0,10" IsReadOnly="True" MinHeight="60" Text="{Binding SelectedInstrument.Applicant}" TextWrapping="Wrap" AcceptsReturn="True" VerticalScrollBarVisibility="Auto" />
<TextBlock Margin="0,0,0,4" FontWeight="SemiBold" Text="Испытательный центр" />
<TextBox IsReadOnly="True" MinHeight="60" Text="{Binding SelectedInstrument.TestCenter}" TextWrapping="Wrap" AcceptsReturn="True" VerticalScrollBarVisibility="Auto" />
</StackPanel>
</ScrollViewer>
</TabItem>
<TabItem Header="PDF">
<Grid Margin="8">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<StackPanel Grid.Row="0"
Margin="0,0,0,8"
Orientation="Horizontal">
<Button Margin="0,0,8,0"
Click="AddPdfButton_Click"
Content="Добавить PDF вручную" />
<Button Margin="0,0,8,0"
Click="OpenAttachmentButton_Click"
Content="Открыть выбранный PDF" />
<Button Click="RemoveAttachmentButton_Click"
Content="Удалить привязку" />
</StackPanel>
<DataGrid x:Name="AttachmentGrid"
Grid.Row="1"
ItemsSource="{Binding SelectedInstrument.Attachments}"
IsReadOnly="True">
<DataGrid.Columns>
<DataGridTextColumn Width="160" Binding="{Binding Kind}" Header="Тип файла" />
<DataGridTextColumn Width="180" Binding="{Binding Title}" Header="Заголовок" />
<DataGridTextColumn Width="*" Binding="{Binding LocalPath}" Header="Локальный путь" />
<DataGridCheckBoxColumn Width="100" Binding="{Binding IsManual}" Header="Ручной" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</TabItem>
</TabControl>
</Grid>
</GroupBox>
</Grid>
<StatusBar Grid.Row="2" Margin="0,12,0,0">
<StatusBarItem>
<TextBlock Text="{Binding StatusText}" />
</StatusBarItem>
</StatusBar>
</Grid>
</Window>