Skip to content

Commit

Permalink
[feat] 支持 AQI 颜色显示
Browse files Browse the repository at this point in the history
  • Loading branch information
zxbmmmmmmmmm committed Nov 30, 2024
1 parent a4e28be commit f5f81d8
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 10 deletions.
12 changes: 11 additions & 1 deletion FluentWeather.OpenMeteoProvider/Mappers/AirConditionMapper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ public static class AirConditionMapper
{
public static OpenMeteoAirCondition MapToOpenMeteoWeatherNow(this AirQualityItem item)
{
return new OpenMeteoAirCondition
var airCondition = new OpenMeteoAirCondition
{
CO = Math.Round((double)item.CarbonMonoxide!,2),
NO2 = Math.Round((double)item.CarbonMonoxide!,2),
Expand All @@ -18,6 +18,16 @@ public static OpenMeteoAirCondition MapToOpenMeteoWeatherNow(this AirQualityItem
SO2 = Math.Round((double)item.SulphurDioxide!, 2),
O3 = Math.Round((double)item.Ozone!, 2),
};
airCondition.AqiLevel = airCondition.Aqi switch
{
<= 50 => 0,
<= 100 => 1,
<= 150 => 2,
<= 200 => 3,
<= 300 => 4,
_ => 5,
};
return airCondition;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,19 @@ public static Brush SeverityColorToColor(SeverityColor? color)
_ => new SolidColorBrush(Colors.Red)
};
}

public static Brush AqiLevelToColor(int? level)
{
return level switch
{
0 => new SolidColorBrush(Colors.LawnGreen),
1 => new SolidColorBrush(Colors.Yellow),
2 => new SolidColorBrush(Colors.Orange),
3 => new SolidColorBrush(Colors.Red),
4 => new SolidColorBrush(Colors.Purple),
5 => new SolidColorBrush(Colors.DarkRed),
_ => new SolidColorBrush(Colors.Transparent)
};
}
/// <summary>
/// 根据应用设置自动转换温度
/// 此转换仅在UI层进行
Expand Down
29 changes: 22 additions & 7 deletions FluentWeather.Uwp/Pages/MainPage.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@
Duration="0:0:0.8" />
</animations:Implicit.ShowAnimations>
</Border>
<!--每日详情-->
<!-- 每日详情 -->
<local:DailyViewPage
x:Name="DailyView"
ui:VisualExtensions.NormalizedCenterPoint="0.5"
Expand Down Expand Up @@ -127,7 +127,7 @@

</animations:Implicit.ShowAnimations>

</local:DailyViewPage >
</local:DailyViewPage>
<RefreshContainer x:Name="MainContentContainer" ui:VisualExtensions.NormalizedCenterPoint="0.5">
<animations:Implicit.ShowAnimations>
<animations:ImplicitAnimationSet>
Expand Down Expand Up @@ -158,8 +158,9 @@
</core:EventTriggerBehavior>
<behaviors:SetParallaxViewSourceBehavior VerticalShift="64" />
</i:Interaction.Behaviors>
<ScrollViewer Margin="0,50,0,0"
<ScrollViewer
x:Name="MainScrollViewer"
Margin="0,50,0,0"
x:FieldModifier="Public"
Canvas.ZIndex="1"
VerticalScrollBarVisibility="Auto">
Expand Down Expand Up @@ -227,11 +228,18 @@
BorderBrush="Transparent"
Visibility="{x:Bind ViewModel.AirCondition, Converter={StaticResource NullToVisibilityConverter}}">
<StackPanel Orientation="Horizontal">
<Ellipse
Width="8"
Height="8"
Margin="0,2,4,0"
Visibility="{x:Bind ViewModel.AirCondition.AqiLevel,Converter={StaticResource NullToVisibilityConverter}}"
Fill="{x:Bind converters1:ConverterMethods.AqiLevelToColor(ViewModel.AirCondition.AqiLevel)}" Opacity="0.8"/>
<TextBlock FontSize="17" Foreground="{ThemeResource SystemControlForegroundBaseMediumBrush}">
<Run x:Uid="AirCondition" />
<Run Text="-" />
<Run Text="{x:Bind ViewModel.AirCondition.AqiCategory}" />
</TextBlock>

<FontIcon
FontSize="14"
Foreground="{ThemeResource SystemControlForegroundBaseMediumBrush}"
Expand Down Expand Up @@ -858,8 +866,11 @@


<!-- 历史天气 -->
<Grid Grid.Row="6" Visibility="{x:Bind GetHistoricalWeatherVisibility(ViewModel.CurrentGeolocation,app:Common.Settings.DefaultGeolocation),Mode=OneWay}" >
<controls1:HistoricalWeatherGauge Visibility="{x:Bind ViewModel.WeatherNow,Mode=OneWay,Converter={StaticResource NullToVisibilityConverter}}" HistoricalDailyWeather="{x:Bind ViewModel.HistoricalWeather,Mode=OneWay}" WeatherToday="{x:Bind ViewModel.WeatherToday,Mode=OneWay}"/>
<Grid Grid.Row="6" Visibility="{x:Bind GetHistoricalWeatherVisibility(ViewModel.CurrentGeolocation, app:Common.Settings.DefaultGeolocation), Mode=OneWay}">
<controls1:HistoricalWeatherGauge
HistoricalDailyWeather="{x:Bind ViewModel.HistoricalWeather, Mode=OneWay}"
Visibility="{x:Bind ViewModel.WeatherNow, Mode=OneWay, Converter={StaticResource NullToVisibilityConverter}}"
WeatherToday="{x:Bind ViewModel.WeatherToday, Mode=OneWay}" />
</Grid>
<controls:AdaptiveGridView
Grid.Row="7"
Expand Down Expand Up @@ -901,10 +912,14 @@
<behaviors:ListViewOpenFlyoutBehavior />
</i:Interaction.Behaviors>
</controls:AdaptiveGridView>
<ListView Grid.Row="8" Padding="0,16,0,0" ItemsSource="{x:Bind ViewModel.Announcements,Mode=OneWay}" SelectionMode="None">
<ListView
Grid.Row="8"
Padding="0,16,0,0"
ItemsSource="{x:Bind ViewModel.Announcements, Mode=OneWay}"
SelectionMode="None">
<ListView.ItemTemplate>
<DataTemplate x:DataType="models:Announcement">
<controls1:AnnouncementItem HorizontalAlignment="Center" Announcement="{x:Bind}"/>
<controls1:AnnouncementItem HorizontalAlignment="Center" Announcement="{x:Bind}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Expand Down
2 changes: 1 addition & 1 deletion FluentWeather.Uwp/ViewModels/RootPageViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ namespace FluentWeather.Uwp.ViewModels;
public sealed partial class RootPageViewModel:ObservableObject
{
[ObservableProperty]
private partial bool IsPaneOpen { get; set; }
public partial bool IsPaneOpen { get; set; }

[RelayCommand]
private void TogglePane()
Expand Down

0 comments on commit f5f81d8

Please sign in to comment.