comprehensive update

1) remove unused components: camera view (due it causes segmentation faults), compute resources and all related, illuminator controller (due in useless without camera view), image storage service, temperature and humidity service
2) database schema - reduce tables references, features storing in records themselves in compressed form, add records creation and editing date and time, add separator comment column
3) analysis - rework of pipeline and ui, now database storing only raw data and all display values calculated from it
4) lights service - add reconnection if disconnected
5) add width and height command line arguments
6) fix some typos and other issues
This commit is contained in:
2026-06-29 15:13:29 +03:00
parent caee9fafd5
commit 72ae26eee7
74 changed files with 5219 additions and 4248 deletions
@@ -14,7 +14,7 @@
<Grid Background="{StaticResource MainBackground}">
<!-- Основная форма -->
<Grid IsEnabled="{Binding !MenuOpened}">
<Grid IsEnabled="{Binding CanInteract}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" /> <!-- Кнопка "Удалить" -->
@@ -51,8 +51,8 @@
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" /> <!-- Кнопка меню -->
<ColumnDefinition Width="*" /> <!-- Информация -->
<ColumnDefinition Width="*" /> <!-- Информация -->
<ColumnDefinition Width="*" /> <!-- Информация -->
<ColumnDefinition Width="*" /> <!-- Информация -->
</Grid.ColumnDefinitions>
<Grid.ColumnSpacing>5</Grid.ColumnSpacing>
@@ -101,12 +101,12 @@
<Grid.ColumnSpacing>5</Grid.ColumnSpacing>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" /> <!-- Id (подпись) | Uuid (подпись) -->
<RowDefinition Height="Auto" /> <!-- Id (поле ) | Uuid (поле ) -->
<RowDefinition Height="Auto" /> <!-- Id (подпись) | Uuid (подпись) -->
<RowDefinition Height="Auto" /> <!-- Id (поле ) | Uuid (поле ) -->
<RowDefinition Height="Auto" /> <!-- SampleName (подпись) | BrandComboBox (подпись) -->
<RowDefinition Height="Auto" /> <!-- SampleName (поле ) | BrandComboBox (поле ) -->
<RowDefinition Height="Auto" /> <!-- SamplingDateTime (подпись) | SamplingPlace (подпись) -->
<RowDefinition Height="Auto" /> <!-- SamplingDateTime (поле ) | SamplingPlace (поле ) -->
<RowDefinition Height="Auto" /> <!-- SamplingDateTime (подпись) | SamplingPlace (подпись) -->
<RowDefinition Height="Auto" /> <!-- SamplingDateTime (поле ) | SamplingPlace (поле ) -->
<RowDefinition Height="*" /> <!-- Пустое пространство -->
</Grid.RowDefinitions>
@@ -126,7 +126,7 @@
Grid.Row="1"
IsReadOnly="True"
PlaceholderText="ИД"
Text="{Binding SelectedId}"
Text="{Binding Record.Id}"
/>
<!-- Uuid (подпись) -->
<TextBlock
@@ -142,7 +142,7 @@
Grid.Row="1"
IsReadOnly="True"
PlaceholderText="Уникальный ИД"
Text="{Binding SelectedUuid}"
Text="{Binding Record.Uuid}"
/>
<!-- SampleName (подпись) -->
<TextBlock
@@ -156,7 +156,7 @@
Grid.Row="3"
Grid.Column="0"
Classes="singleline"
Text="{Binding SelectedSampleName}"
Text="{Binding Record.SampleName}"
PlaceholderText="Название пробы"
/>
<!-- BrandComboBox (подпись) -->
@@ -180,7 +180,7 @@
<ComboBox.ItemTemplate>
<DataTemplate x:DataType="vm:SampleCalibrationViewModel+BrandComboBoxItemViewModel">
<TextBlock
HorizontalAlignment="Center"
HorizontalAlignment="Left"
VerticalAlignment="Center"
>
<Run Text="{Binding Id, StringFormat='[{0}] '}" />
@@ -204,7 +204,7 @@
Grid.Column="0"
Grid.Row="5"
PlaceholderText="Дата и время отбора пробы"
Text="{Binding SelectedSamplingDateTime, Converter={StaticResource DateTimeConverter}}"
Text="{Binding Record.SamplingDateTime, Converter={StaticResource DateTimeConverter}}"
/>
<!-- SamplingPlace (подпись) -->
<TextBlock
@@ -219,7 +219,7 @@
Grid.Column="1"
Grid.Row="5"
PlaceholderText="Место отбора пробы"
Text="{Binding SelectedSamplingPlace}"
Text="{Binding Record.SamplingPlace}"
/>
</Grid>
@@ -258,7 +258,7 @@
Grid.Row="1"
Increment="0.0001"
PlaceholderText="Фактический расход смеси (кг/т | гр/кг)"
Value="{Binding SelectedMixtureActualRate}"
Value="{Binding Record.MixtureActualRate}"
/>
<!-- MeasuredContent (подпись) -->
<TextBlock
@@ -274,7 +274,7 @@
Grid.Row="1"
Increment="0.0001"
PlaceholderText="Измеренное содержание смеси (кг/т | гр/кг)"
Value="{Binding SelectedMeasuredContent}"
Value="{Binding Record.MeasuredContent}"
/>
<!-- SampleComment (подпись) -->
<TextBlock
@@ -290,7 +290,7 @@
Grid.ColumnSpan="2"
Grid.Row="3"
PlaceholderText="Дополнительная информация о пробе"
Text="{Binding SelectedSampleComment}"
Text="{Binding Record.SampleComment}"
/>
</Grid>
@@ -363,15 +363,14 @@
<core:ZoomPanImage
Background="Black"
HorizontalAlignment="Stretch"
ImageSource="{Binding SelectedImage.Image}"
IsVisible="{Binding SelectedImage.IsLoading, Converter={x:Static BoolConverters.Not}}"
ImageSource="{Binding Record.Image.Image}"
VerticalAlignment="Stretch"
>
<core:ZoomPanImage.IsVisible>
<MultiBinding Converter="{x:Static BoolConverters.And}">
<Binding Converter="{x:Static ObjectConverters.IsNotNull}" Path="SelectedImage.Data" />
<Binding Converter="{x:Static BoolConverters.Not}" Path="SelectedImage.IsLoading" />
<Binding Converter="{x:Static StringConverters.IsNotNullOrEmpty}" Path="Record.Image.Data" />
<Binding Converter="{x:Static BoolConverters.Not}" Path="Record.Image.IsLoading" />
<Binding Converter="{x:Static BoolConverters.Not}" Path="ImagesIsCapturing" />
</MultiBinding>
</core:ZoomPanImage.IsVisible>
@@ -379,11 +378,11 @@
</core:ZoomPanImage>
<!-- Оверлей "Изображение загружается" -->
<StackPanel HorizontalAlignment="Stretch" VerticalAlignment="Center" >
<StackPanel HorizontalAlignment="Stretch" VerticalAlignment="Center" >
<StackPanel.IsVisible>
<MultiBinding Converter="{x:Static BoolConverters.And}">
<Binding Path="SelectedImage.IsLoading" />
<Binding Path="Record.Image.IsLoading" />
<Binding Converter="{x:Static BoolConverters.Not}" Path="ImagesIsCapturing" />
</MultiBinding>
</StackPanel.IsVisible>
@@ -402,8 +401,8 @@
>
<TextBlock.IsVisible>
<MultiBinding Converter="{x:Static BoolConverters.And}">
<Binding Converter="{x:Static ObjectConverters.IsNull}" Path="SelectedImage.Data" />
<Binding Converter="{x:Static BoolConverters.Not}" Path="SelectedImage.IsLoading" />
<Binding Converter="{x:Static StringConverters.IsNullOrEmpty}" Path="Record.Image.Data" />
<Binding Converter="{x:Static BoolConverters.Not}" Path="Record.Image.IsLoading" />
<Binding Converter="{x:Static BoolConverters.Not}" Path="ImagesIsCapturing" />
</MultiBinding>
</TextBlock.IsVisible>
@@ -417,8 +416,8 @@
<StackPanel.IsVisible>
<MultiBinding Converter="{x:Static BoolConverters.And}">
<Binding Converter="{x:Static ObjectConverters.IsNull}" Path="SelectedImage.Data" />
<Binding Converter="{x:Static BoolConverters.Not}" Path="SelectedImage.IsLoading" />
<Binding Converter="{x:Static StringConverters.IsNullOrEmpty}" Path="Record.Image.Data" />
<Binding Converter="{x:Static BoolConverters.Not}" Path="Record.Image.IsLoading" />
<Binding Path="ImagesIsCapturing" />
</MultiBinding>
</StackPanel.IsVisible>
@@ -433,18 +432,20 @@
<!-- Кнопка "Получить изображения" -->
<Button
Command="{Binding CaptureImageCommand}"
Grid.Row="1"
HorizontalAlignment="Stretch"
Command="{Binding CaptureImageCommand}"
IsVisible="{Binding !ImagesIsCapturing}"
>
<TextBlock Text="Получить изображения"/>
</Button>
<!-- Кнопка "Отменить съёмку" -->
<Button
Command="{Binding CancelImageCapturingCommand}"
Grid.Row="1"
HorizontalAlignment="Stretch"
Command="{Binding CancelImageCapturingCommand}"
IsVisible="{Binding ImagesIsCapturing}"
>
<TextBlock Text="Отменить съёмку"/>
</Button>