Files
jeon 096111e983 feat: 06-17 신규 작업본 반영 (개발사양서/기능검토/승인원/Source 등 추가)
.claude/ 제외(.gitignore 추가). 기존 초기커밋(5a96a69) 위에 신규·수정·이동분 커밋.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 07:54:58 +09:00

95 lines
8.1 KiB
XML

<Window x:Class="ErvDashboard.HystWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="공기질 센서 히스테리시스" SizeToContent="WidthAndHeight"
ResizeMode="NoResize" WindowStartupLocation="CenterOwner"
Background="{StaticResource AppBg}" FontFamily="Segoe UI, Malgun Gothic">
<Border Style="{StaticResource Card}" Margin="10">
<StackPanel>
<TextBlock Text="공기질 센서 히스테리시스 — 모드(프리셋)별 오염단계 임계 + 데드밴드" Style="{StaticResource CardTitle}"/>
<TextBlock Text="오염단계 0~4(좋음·보통·나쁨·매우나쁨·최악). 각 값은 해당 단계의 상한(이하). 4단계(최악)는 3단계 상한 초과." Style="{StaticResource FieldLabel}" Margin="0,0,0,4"/>
<TextBlock Text="활성 프리셋 선택 (선택한 프리셋의 임계/데드밴드 표시·수정)" Style="{StaticResource FieldLabel}" Margin="0,0,0,4"/>
<StackPanel x:Name="PresetPanel" Orientation="Horizontal" Margin="0,0,0,14"/>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="128"/>
<ColumnDefinition Width="72"/>
<ColumnDefinition Width="72"/>
<ColumnDefinition Width="72"/>
<ColumnDefinition Width="72"/>
</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"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="1" Text="CO2" TextAlignment="Center" Style="{StaticResource FieldLabel}"/>
<TextBlock Grid.Row="0" Grid.Column="2" Text="PM2.5" TextAlignment="Center" Style="{StaticResource FieldLabel}"/>
<TextBlock Grid.Row="0" Grid.Column="3" Text="PM10" TextAlignment="Center" Style="{StaticResource FieldLabel}"/>
<TextBlock Grid.Row="0" Grid.Column="4" Text="VOC" TextAlignment="Center" Style="{StaticResource FieldLabel}"/>
<TextBlock Grid.Row="1" Grid.Column="0" Text="0단계(좋음)" VerticalAlignment="Center" Style="{StaticResource FieldValue}" FontWeight="Bold" Foreground="{StaticResource Accent}"/>
<TextBox x:Name="TCo2_1" Grid.Row="1" Grid.Column="1" Margin="3,2" Padding="4,3" TextAlignment="Right"/>
<TextBox x:Name="TPm25_1" Grid.Row="1" Grid.Column="2" Margin="3,2" Padding="4,3" TextAlignment="Right"/>
<TextBox x:Name="TPm10_1" Grid.Row="1" Grid.Column="3" Margin="3,2" Padding="4,3" TextAlignment="Right"/>
<TextBox x:Name="TVoc_1" Grid.Row="1" Grid.Column="4" Margin="3,2" Padding="4,3" TextAlignment="Right"/>
<TextBlock Grid.Row="2" Grid.Column="0" Text="1단계(보통)" VerticalAlignment="Center" Style="{StaticResource FieldValue}" FontWeight="Bold" Foreground="{StaticResource Good}"/>
<TextBox x:Name="TCo2_2" Grid.Row="2" Grid.Column="1" Margin="3,2" Padding="4,3" TextAlignment="Right"/>
<TextBox x:Name="TPm25_2" Grid.Row="2" Grid.Column="2" Margin="3,2" Padding="4,3" TextAlignment="Right"/>
<TextBox x:Name="TPm10_2" Grid.Row="2" Grid.Column="3" Margin="3,2" Padding="4,3" TextAlignment="Right"/>
<TextBox x:Name="TVoc_2" Grid.Row="2" Grid.Column="4" Margin="3,2" Padding="4,3" TextAlignment="Right"/>
<TextBlock Grid.Row="3" Grid.Column="0" Text="2단계(나쁨)" VerticalAlignment="Center" Style="{StaticResource FieldValue}" FontWeight="Bold" Foreground="#CA8A04"/>
<TextBox x:Name="TCo2_3" Grid.Row="3" Grid.Column="1" Margin="3,2" Padding="4,3" TextAlignment="Right"/>
<TextBox x:Name="TPm25_3" Grid.Row="3" Grid.Column="2" Margin="3,2" Padding="4,3" TextAlignment="Right"/>
<TextBox x:Name="TPm10_3" Grid.Row="3" Grid.Column="3" Margin="3,2" Padding="4,3" TextAlignment="Right"/>
<TextBox x:Name="TVoc_3" Grid.Row="3" Grid.Column="4" Margin="3,2" Padding="4,3" TextAlignment="Right"/>
<TextBlock Grid.Row="4" Grid.Column="0" Text="3단계(매우나쁨)" VerticalAlignment="Center" Style="{StaticResource FieldValue}" FontWeight="Bold" Foreground="{StaticResource Bad}"/>
<TextBox x:Name="TCo2_4" Grid.Row="4" Grid.Column="1" Margin="3,2" Padding="4,3" TextAlignment="Right"/>
<TextBox x:Name="TPm25_4" Grid.Row="4" Grid.Column="2" Margin="3,2" Padding="4,3" TextAlignment="Right"/>
<TextBox x:Name="TPm10_4" Grid.Row="4" Grid.Column="3" Margin="3,2" Padding="4,3" TextAlignment="Right"/>
<TextBox x:Name="TVoc_4" Grid.Row="4" Grid.Column="4" Margin="3,2" Padding="4,3" TextAlignment="Right"/>
<TextBlock Grid.Row="5" Grid.Column="0" Text="4단계(최악)" VerticalAlignment="Center" Style="{StaticResource FieldValue}" FontWeight="Bold" Foreground="{StaticResource Bad}"/>
<Border Grid.Row="5" Grid.Column="1" Margin="3,2" Background="{StaticResource CardBg}" BorderBrush="{StaticResource CardBorder}" BorderThickness="1">
<TextBlock x:Name="MCo2" TextAlignment="Right" Padding="4,3" Foreground="{StaticResource TextPrimary}"/>
</Border>
<Border Grid.Row="5" Grid.Column="2" Margin="3,2" Background="{StaticResource CardBg}" BorderBrush="{StaticResource CardBorder}" BorderThickness="1">
<TextBlock x:Name="MPm25" TextAlignment="Right" Padding="4,3" Foreground="{StaticResource TextPrimary}"/>
</Border>
<Border Grid.Row="5" Grid.Column="3" Margin="3,2" Background="{StaticResource CardBg}" BorderBrush="{StaticResource CardBorder}" BorderThickness="1">
<TextBlock x:Name="MPm10" TextAlignment="Right" Padding="4,3" Foreground="{StaticResource TextPrimary}"/>
</Border>
<Border Grid.Row="5" Grid.Column="4" Margin="3,2" Background="{StaticResource CardBg}" BorderBrush="{StaticResource CardBorder}" BorderThickness="1">
<TextBlock x:Name="MVoc" TextAlignment="Right" Padding="4,3" Foreground="{StaticResource TextPrimary}"/>
</Border>
<TextBlock Grid.Row="6" Grid.Column="0" Text="히스(하강)" VerticalAlignment="Center" Style="{StaticResource FieldValue}" FontWeight="Bold"/>
<TextBox x:Name="DCo2" Grid.Row="6" Grid.Column="1" Margin="3,2" Padding="4,3" TextAlignment="Right"/>
<TextBox x:Name="DPm25" Grid.Row="6" Grid.Column="2" Margin="3,2" Padding="4,3" TextAlignment="Right"/>
<TextBox x:Name="DPm10" Grid.Row="6" Grid.Column="3" Margin="3,2" Padding="4,3" TextAlignment="Right"/>
<TextBox x:Name="DVoc" Grid.Row="6" Grid.Column="4" Margin="3,2" Padding="4,3" TextAlignment="Right"/>
</Grid>
<StackPanel Orientation="Horizontal" Margin="0,14,0,0">
<Button Content="읽어오기" Width="90" Style="{StaticResource FlatButton}" Click="Read_Click"
ToolTip="ERV에서 통신으로 읽은 현재 값을 표에 불러옵니다(편집 내용은 버려짐)."/>
<Button Content="프리셋" Width="90" Style="{StaticResource FlatButton}" Click="PresetDefault_Click"
ToolTip="사양서 기본값을 표에 불러옵니다. ERV로 보내려면 '변경'을 누르세요."/>
<Button Content="변경" Width="90" Style="{StaticResource FlatButton}" Click="Apply_Click"
ToolTip="표의 값을 ERV로 전송합니다."/>
<Button Content="닫기" Width="90" Style="{StaticResource FlatButton}" Click="Close_Click"/>
</StackPanel>
</StackPanel>
</Border>
</Window>