fix date format

This commit is contained in:
DismissedLight
2023-09-17 17:54:02 +08:00
parent 68a6af9341
commit fb496497bf
4 changed files with 282 additions and 247 deletions

View File

@@ -244,7 +244,7 @@
<value>尚未刷新</value> <value>尚未刷新</value>
</data> </data>
<data name="ModelEntityDailyNoteRefreshTimeFormat" xml:space="preserve"> <data name="ModelEntityDailyNoteRefreshTimeFormat" xml:space="preserve">
<value>刷新于 {0:yyyy/MM/dd HH:mm:ss}</value> <value>刷新于 {0:yyyy.MM.dd HH:mm:ss}</value>
</data> </data>
<data name="ModelEntitySpiralAbyssScheduleFormat" xml:space="preserve"> <data name="ModelEntitySpiralAbyssScheduleFormat" xml:space="preserve">
<value>第 {0} 期</value> <value>第 {0} 期</value>
@@ -834,7 +834,7 @@
<value>在读取游戏进程内存时遇到问题:无法读取到指定地址的有效值</value> <value>在读取游戏进程内存时遇到问题:无法读取到指定地址的有效值</value>
</data> </data>
<data name="ServiceHutaoUserGachaLogExpiredAt" xml:space="preserve"> <data name="ServiceHutaoUserGachaLogExpiredAt" xml:space="preserve">
<value>祈愿记录上传服务有效期至\n{0:yyyy-MM-dd HH:mm:ss}</value> <value>祈愿记录上传服务有效期至\n{0:yyyy.MM.dd HH:mm:ss}</value>
</data> </data>
<data name="ServiceMetadataFileNotFound" xml:space="preserve"> <data name="ServiceMetadataFileNotFound" xml:space="preserve">
<value>无法找到缓存的元数据文件</value> <value>无法找到缓存的元数据文件</value>

View File

@@ -10,6 +10,7 @@
xmlns:shcb="using:Snap.Hutao.Control.Behavior" xmlns:shcb="using:Snap.Hutao.Control.Behavior"
xmlns:shci="using:Snap.Hutao.Control.Image" xmlns:shci="using:Snap.Hutao.Control.Image"
xmlns:shcm="using:Snap.Hutao.Control.Markup" xmlns:shcm="using:Snap.Hutao.Control.Markup"
xmlns:shct="using:Snap.Hutao.Control.Text"
xmlns:shvc="using:Snap.Hutao.View.Control" xmlns:shvc="using:Snap.Hutao.View.Control"
xmlns:shvs="using:Snap.Hutao.ViewModel.SpiralAbyss" xmlns:shvs="using:Snap.Hutao.ViewModel.SpiralAbyss"
d:DataContext="{d:DesignInstance shvs:SpiralAbyssRecordViewModel}" d:DataContext="{d:DesignInstance shvs:SpiralAbyssRecordViewModel}"
@@ -25,7 +26,7 @@
Grid.Row="1" Grid.Row="1"
DisplayMode="Inline" DisplayMode="Inline"
IsPaneOpen="True" IsPaneOpen="True"
OpenPaneLength="120" OpenPaneLength="256"
PaneBackground="Transparent" PaneBackground="Transparent"
Visibility="{Binding SelectedView, Converter={StaticResource EmptyObjectToVisibilityConverter}}"> Visibility="{Binding SelectedView, Converter={StaticResource EmptyObjectToVisibilityConverter}}">
<SplitView.Pane> <SplitView.Pane>
@@ -35,14 +36,29 @@
SelectedItem="{Binding SelectedView, Mode=TwoWay}"> SelectedItem="{Binding SelectedView, Mode=TwoWay}">
<ListView.ItemTemplate> <ListView.ItemTemplate>
<DataTemplate> <DataTemplate>
<StackPanel Margin="0,6">
<TextBlock Text="{Binding Entity.Schedule}"/> <TextBlock Text="{Binding Entity.Schedule}"/>
<TextBlock
Opacity="0.7"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{Binding TimeFormatted}"/>
</StackPanel>
</DataTemplate> </DataTemplate>
</ListView.ItemTemplate> </ListView.ItemTemplate>
</ListView> </ListView>
</SplitView.Pane> </SplitView.Pane>
<SplitView.Content> <SplitView.Content>
<Grid> <Grid>
<Pivot> <Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Rectangle
Grid.Row="0"
Height="{ThemeResource AppBarThemeCompactHeight}"
VerticalAlignment="Top"
Fill="{ThemeResource CardBackgroundFillColorDefaultBrush}"/>
<Pivot Grid.RowSpan="2">
<Pivot.RightHeader> <Pivot.RightHeader>
<CommandBar Grid.Row="0" DefaultLabelPosition="Right"> <CommandBar Grid.Row="0" DefaultLabelPosition="Right">
<AppBarButton <AppBarButton
@@ -53,56 +69,26 @@
Command="{Binding RefreshCommand}" Command="{Binding RefreshCommand}"
Icon="{shcm:FontIcon Glyph=&#xE72C;}" Icon="{shcm:FontIcon Glyph=&#xE72C;}"
Label="{shcm:ResourceString Name=ViewSpiralAbyssRefresh}"/> Label="{shcm:ResourceString Name=ViewSpiralAbyssRefresh}"/>
</CommandBar> <AppBarButton Icon="{shcm:FontIcon Glyph=&#xE8A1;}" Label="{shcm:ResourceString Name=ViewSpiralAbyssStatistics}">
</Pivot.RightHeader> <AppBarButton.Flyout>
<PivotItem DataContext="{Binding SelectedView}" Header="{shcm:ResourceString Name=ViewSpiralAbyssStatistics}"> <Flyout>
<ScrollViewer> <Flyout.FlyoutPresenterStyle>
<Grid> <Style BasedOn="{StaticResource DefaultFlyoutPresenterStyle}" TargetType="FlyoutPresenter">
<Setter Property="MaxWidth" Value="1920"/>
</Style>
</Flyout.FlyoutPresenterStyle>
<Grid ColumnSpacing="6" DataContext="{Binding SelectedView}">
<Grid.Resources> <Grid.Resources>
<x:Double x:Key="SettingsCardWrapThreshold">0</x:Double> <x:Double x:Key="SettingsCardWrapThreshold">0</x:Double>
<x:Double x:Key="SettingsCardWrapNoIconThreshold">0</x:Double> <x:Double x:Key="SettingsCardWrapNoIconThreshold">0</x:Double>
<x:Double x:Key="SettingsCardMinHeight">0</x:Double> <x:Double x:Key="SettingsCardMinHeight">0</x:Double>
</Grid.Resources> </Grid.Resources>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="286"/> <ColumnDefinition Width="305"/>
<ColumnDefinition Width="286"/> <ColumnDefinition Width="225"/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<StackPanel
Grid.Column="0"
Margin="16,0,8,16"
Spacing="{StaticResource SettingsCardSpacing}">
<cwc:SettingsCard Content="{Binding MaxFloor}" Header="{shcm:ResourceString Name=ViewSpiralAbyssMaxFloor}"/>
<cwc:SettingsCard Content="{Binding TotalBattleTimes}" Header="{shcm:ResourceString Name=ViewSpiralAbyssBattleTimes}"/>
<cwc:SettingsCard Content="{Binding TotalStar}" Header="{shcm:ResourceString Name=ViewSpiralAbyssTotalStar}"/>
<StackPanel Grid.Column="0" Spacing="{StaticResource SettingsCardSpacing}">
<TextBlock
Margin="1,6,0,5"
Style="{StaticResource SettingsSectionHeaderTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewSpiralAbyssReveal}"/>
<ItemsControl HorizontalAlignment="Left" ItemsSource="{Binding Reveals}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<cwc:UniformGrid ColumnSpacing="16" Columns="4"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<shvc:BottomTextControl Text="{Binding Value}">
<shvc:ItemIcon
Width="52"
Height="52"
Icon="{Binding Icon}"
Quality="{Binding Quality}"/>
</shvc:BottomTextControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
<StackPanel Grid.Column="1" Spacing="{StaticResource SettingsCardSpacing}">
<cwc:SettingsCard Header="{shcm:ResourceString Name=ViewSpiralAbyssDefeat}"> <cwc:SettingsCard Header="{shcm:ResourceString Name=ViewSpiralAbyssDefeat}">
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
<TextBlock <TextBlock
@@ -173,11 +159,55 @@
</StackPanel> </StackPanel>
</cwc:SettingsCard> </cwc:SettingsCard>
</StackPanel> </StackPanel>
<StackPanel Grid.Column="1" Spacing="{StaticResource SettingsCardSpacing}">
<cwc:SettingsCard Content="{Binding MaxFloor}" Header="{shcm:ResourceString Name=ViewSpiralAbyssMaxFloor}"/>
<cwc:SettingsCard Content="{Binding TotalBattleTimes}" Header="{shcm:ResourceString Name=ViewSpiralAbyssBattleTimes}"/>
<cwc:SettingsCard Content="{Binding TotalStar}" Header="{shcm:ResourceString Name=ViewSpiralAbyssTotalStar}"/>
<TextBlock
Margin="1,6,0,5"
Style="{StaticResource SettingsSectionHeaderTextBlockStyle}"
Text="{shcm:ResourceString Name=ViewSpiralAbyssReveal}"/>
<ItemsControl HorizontalAlignment="Left" ItemsSource="{Binding Reveals}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<cwc:UniformGrid ColumnSpacing="3" Columns="4"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<shvc:BottomTextControl Text="{Binding Value}">
<shvc:ItemIcon
Width="52"
Height="52"
Icon="{Binding Icon}"
Quality="{Binding Quality}"/>
</shvc:BottomTextControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</Grid> </Grid>
</ScrollViewer> </Flyout>
</PivotItem> </AppBarButton.Flyout>
</AppBarButton>
</CommandBar>
</Pivot.RightHeader>
<PivotItem DataContext="{Binding SelectedView}" Header="{shcm:ResourceString Name=ViewSpiralAbyssDetail}"> <PivotItem DataContext="{Binding SelectedView}" Header="{shcm:ResourceString Name=ViewSpiralAbyssDetail}">
<ScrollViewer VerticalAlignment="Top" HorizontalScrollBarVisibility="Auto"> <ScrollViewer VerticalAlignment="Top">
<StackPanel>
<TextBlock
Margin="16,16,0,0"
Style="{ThemeResource SubtitleTextBlockStyle}"
Text="{Binding BlessingName}"/>
<ItemsControl Margin="16,0,16,0" ItemsSource="{Binding Blessings}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<shct:DescriptionTextBlock Description="{Binding}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<ItemsControl <ItemsControl
Margin="16,16,0,0" Margin="16,16,0,0"
ItemsPanel="{StaticResource HorizontalStackPanelTemplate}" ItemsPanel="{StaticResource HorizontalStackPanelTemplate}"
@@ -290,6 +320,8 @@
</DataTemplate> </DataTemplate>
</ItemsControl.ItemTemplate> </ItemsControl.ItemTemplate>
</ItemsControl> </ItemsControl>
</StackPanel>
</ScrollViewer> </ScrollViewer>
</PivotItem> </PivotItem>
</Pivot> </Pivot>

View File

@@ -14,10 +14,10 @@ namespace Snap.Hutao.ViewModel.SpiralAbyss;
/// 深渊视图 /// 深渊视图
/// </summary> /// </summary>
[HighQuality] [HighQuality]
internal sealed class SpiralAbyssView : IEntityOnly<SpiralAbyssEntry>, internal sealed class SpiralAbyssView : IEntityOnly<SpiralAbyssEntry?>,
IMappingFrom<SpiralAbyssView, SpiralAbyssEntry, SpiralAbyssMetadataContext> IMappingFrom<SpiralAbyssView, SpiralAbyssEntry, SpiralAbyssMetadataContext>
{ {
private readonly SpiralAbyssEntry entity; private readonly SpiralAbyssEntry? entity;
/// <summary> /// <summary>
/// 构造一个新的深渊视图 /// 构造一个新的深渊视图
@@ -25,16 +25,11 @@ internal sealed class SpiralAbyssView : IEntityOnly<SpiralAbyssEntry>,
/// <param name="entity">实体</param> /// <param name="entity">实体</param>
/// <param name="idAvatarMap">Id角色映射</param> /// <param name="idAvatarMap">Id角色映射</param>
private SpiralAbyssView(SpiralAbyssEntry entity, SpiralAbyssMetadataContext context) private SpiralAbyssView(SpiralAbyssEntry entity, SpiralAbyssMetadataContext context)
: this(context.IdScheduleMap[(uint)entity.ScheduleId], context)
{ {
this.entity = entity; this.entity = entity;
Web.Hoyolab.Takumi.GameRecord.SpiralAbyss.SpiralAbyss spiralAbyss = entity.SpiralAbyss;
TowerSchedule towerSchedule = context.IdScheduleMap[(uint)entity.ScheduleId];
TimeFormatted = $"{towerSchedule.Open:yyyy/MM/dd HH:mm:ss} - {towerSchedule.Close:yyyy/MM/dd HH:mm:ss}";
BlessingName = towerSchedule.BuffName;
Blessings = towerSchedule.Descriptions;
Web.Hoyolab.Takumi.GameRecord.SpiralAbyss.SpiralAbyss? spiralAbyss = entity.SpiralAbyss;
TotalBattleTimes = spiralAbyss.TotalBattleTimes; TotalBattleTimes = spiralAbyss.TotalBattleTimes;
TotalStar = spiralAbyss.TotalStar; TotalStar = spiralAbyss.TotalStar;
MaxFloor = spiralAbyss.MaxFloor; MaxFloor = spiralAbyss.MaxFloor;
@@ -47,7 +42,15 @@ internal sealed class SpiralAbyssView : IEntityOnly<SpiralAbyssEntry>,
Floors = spiralAbyss.Floors.Select(f => new FloorView(f, context.IdAvatarMap)).Reverse().ToList(); Floors = spiralAbyss.Floors.Select(f => new FloorView(f, context.IdAvatarMap)).Reverse().ToList();
} }
public SpiralAbyssEntry Entity { get => entity; } private SpiralAbyssView(TowerSchedule towerSchedule, SpiralAbyssMetadataContext context)
{
TimeFormatted = $"{towerSchedule.Open:yyyy.MM.dd HH:mm} - {towerSchedule.Close:yyyy.MM.dd HH:mm}";
BlessingName = towerSchedule.BuffName;
Blessings = towerSchedule.Descriptions;
}
public SpiralAbyssEntry? Entity { get => entity; }
public string TimeFormatted { get; } public string TimeFormatted { get; }
@@ -68,12 +71,12 @@ internal sealed class SpiralAbyssView : IEntityOnly<SpiralAbyssEntry>,
/// <summary> /// <summary>
/// 最深抵达 /// 最深抵达
/// </summary> /// </summary>
public string MaxFloor { get; } public string MaxFloor { get; } = default!;
/// <summary> /// <summary>
/// 出战次数 /// 出战次数
/// </summary> /// </summary>
public List<RankAvatar> Reveals { get; } public List<RankAvatar> Reveals { get; } = default!;
/// <summary> /// <summary>
/// 击破次数 /// 击破次数

View File

@@ -23,7 +23,7 @@ internal sealed class Announcement : UploadAnnouncement
/// </summary> /// </summary>
public long LastUpdateTime { get; set; } public long LastUpdateTime { get; set; }
public string UpdateTimeFormatted { get => $"{DateTimeOffset.FromUnixTimeSeconds(LastUpdateTime).ToLocalTime():yyyy-MM-dd HH:mm:ss}"; } public string UpdateTimeFormatted { get => $"{DateTimeOffset.FromUnixTimeSeconds(LastUpdateTime).ToLocalTime():yyyy.MM.dd HH:mm:ss}"; }
public ICommand? DismissCommand { get; set; } public ICommand? DismissCommand { get; set; }
} }