<Page x:Class="XFEEDToolBox.Views.LogViewPage"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:live="using:XFEEDToolBox.Core.Presentation"
      xmlns:vm="using:XFEEDToolBox.ViewModels"
      xmlns:controls="using:XFEEDToolBox.Controls"
      SizeChanged="LogPageSizeChanged">
    <Page.Resources>
        <Style x:Key="LogRowStyle" TargetType="ListViewItem">
            <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
            <Setter Property="Padding" Value="0"/>
            <Setter Property="Margin" Value="0"/>
            <Setter Property="MinHeight" Value="72"/>
            <Setter Property="CornerRadius" Value="0"/>
        </Style>
        <DataTemplate x:Key="EventDetailsTemplate" x:DataType="vm:GameEventDetails">
            <StackPanel Spacing="20">
                <StackPanel Spacing="10">
                    <controls:BilingualText Text="{x:Bind Name}" Original="{x:Bind OriginalName}" FontSize="18" Foreground="{StaticResource AccentBrush}"/>
                    <TextBlock Text="{x:Bind Time}" Style="{StaticResource MutedText}" FontSize="12"/>
                </StackPanel>
                <Border Background="{StaticResource PanelAltBrush}" CornerRadius="8" Padding="14">
                    <TextBlock Text="{x:Bind Summary}" TextWrapping="Wrap" FontSize="13" LineHeight="21" IsTextSelectionEnabled="True"/>
                </Border>
                <ItemsControl ItemsSource="{x:Bind Fields}">
                    <ItemsControl.ItemTemplate>
                        <DataTemplate x:DataType="vm:GameEventDetailField">
                            <Grid Padding="0,7" ColumnSpacing="16">
                                <Grid.ColumnDefinitions><ColumnDefinition Width="100"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
                                <TextBlock Text="{x:Bind Label}" Style="{StaticResource MutedText}" FontSize="12"/>
                                <TextBlock Grid.Column="1" Text="{x:Bind Value}" TextWrapping="Wrap" FontSize="12" IsTextSelectionEnabled="True"/>
                            </Grid>
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                </ItemsControl>
                <StackPanel Spacing="6">
                    <TextBlock Text="来源文件" Style="{StaticResource TableHeader}"/>
                    <TextBlock Text="{x:Bind Source}" Style="{StaticResource MutedText}" FontSize="12" IsTextSelectionEnabled="True"/>
                </StackPanel>
                <Expander Header="原始 JSON" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch">
                    <TextBox Text="{x:Bind Json}" IsReadOnly="True" AcceptsReturn="True" TextWrapping="Wrap"
                             FontFamily="Consolas" FontSize="12" MinHeight="120" MaxHeight="360"/>
                </Expander>
            </StackPanel>
        </DataTemplate>
    </Page.Resources>
    <Grid RowSpacing="28" Padding="0,12,0,12">
        <Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="*"/></Grid.RowDefinitions>
        <StackPanel Spacing="10">
            <TextBlock Text="ACTIVITY LOG" Style="{StaticResource Eyebrow}"/>
            <TextBlock Text="运行日志" Style="{StaticResource PageTitle}"/>
            <TextBlock Text="查看游戏全部事件与工具箱运行记录。选择事件查看详情，支持搜索和历史分页。" Style="{StaticResource MutedText}"/>
        </StackPanel>
        <Pivot x:Name="LogTabs" Grid.Row="1">
            <PivotItem>
                <PivotItem.Header><TextBlock Text="游戏事件" FontSize="18" FontWeight="SemiBold"/></PivotItem.Header>
                <Grid x:Name="GameLogContent" Margin="0,24,0,0" RowSpacing="18">
                    <Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="*"/></Grid.RowDefinitions>
                    <Grid x:Name="GameLogToolbar" ColumnSpacing="12">
                        <Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition x:Name="EventTypeColumn" Width="200"/><ColumnDefinition x:Name="EventSortColumn" Width="148"/><ColumnDefinition Width="44"/></Grid.ColumnDefinitions>
                        <Grid>
                            <TextBox x:Name="GameLogSearch" PlaceholderText="搜索事件、星系、模块或内容…" MinHeight="44" Padding="40,10,12,10"
                                     Text="{x:Bind ViewModel.GameEventSearch,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" AutomationProperties.Name="搜索游戏事件"/>
                            <FontIcon Glyph="&#xE721;" FontSize="16" Margin="14,0,0,0" HorizontalAlignment="Left" VerticalAlignment="Center" Foreground="{StaticResource MutedBrush}" IsHitTestVisible="False"/>
                        </Grid>
                        <ComboBox x:Name="EventTypeFilter" Grid.Column="1" ItemsSource="{x:Bind ViewModel.GameEventTypes}"
                                  SelectedItem="{x:Bind ViewModel.GameEventType,Mode=TwoWay}" MinHeight="44" HorizontalAlignment="Stretch" AutomationProperties.Name="事件类型">
                            <ComboBox.ItemTemplate><DataTemplate x:DataType="vm:GameEventTypeOption"><TextBlock Text="{x:Bind Display}" TextTrimming="CharacterEllipsis"/></DataTemplate></ComboBox.ItemTemplate>
                        </ComboBox>
                        <ComboBox x:Name="EventSortFilter" Grid.Column="2" SelectedIndex="{x:Bind ViewModel.GameEventSortIndex,Mode=TwoWay}" MinHeight="44" HorizontalAlignment="Stretch" AutomationProperties.Name="时间排序">
                            <ComboBoxItem Content="最新在前"/><ComboBoxItem Content="最早在前"/>
                        </ComboBox>
                        <Button Grid.Column="3" Command="{x:Bind ViewModel.LatestGameLogCommand}" Width="44" Height="44" Padding="0"
                                ToolTipService.ToolTip="刷新并回到第一页" AutomationProperties.Name="刷新游戏事件"><FontIcon Glyph="&#xE72C;" FontSize="16"/></Button>
                    </Grid>
                    <Grid Grid.Row="1" MinHeight="20" ColumnSpacing="16">
                        <Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions>
                        <TextBlock Text="{x:Bind ViewModel.GameEventLogStatus,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="12" VerticalAlignment="Center"/>
                        <ProgressRing Grid.Column="1" Width="18" Height="18" IsActive="{x:Bind ViewModel.GameEventLogBusy,Mode=OneWay}" Visibility="{x:Bind ViewModel.GameEventLogBusy,Mode=OneWay,Converter={StaticResource BoolVisibility}}"/>
                    </Grid>
                    <Grid x:Name="EventWorkspace" Grid.Row="2" ColumnSpacing="24">
                        <Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition x:Name="EventDetailsColumn" Width="360"/></Grid.ColumnDefinitions>
                        <Border Background="{StaticResource PanelBrush}" BorderBrush="{StaticResource PanelStrokeBrush}" BorderThickness="1" CornerRadius="12">
                            <Grid>
                                <Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="*"/><RowDefinition Height="Auto"/></Grid.RowDefinitions>
                                <Grid Padding="24,14" ColumnSpacing="20" Background="{StaticResource PanelAltBrush}" CornerRadius="11,11,0,0">
                                    <Grid.ColumnDefinitions><ColumnDefinition Width="128"/><ColumnDefinition Width="160"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
                                    <TextBlock Text="时间" Style="{StaticResource TableHeader}"/>
                                    <TextBlock Grid.Column="1" Text="事件" Style="{StaticResource TableHeader}"/>
                                    <TextBlock Grid.Column="2" Text="内容" Style="{StaticResource TableHeader}"/>
                                </Grid>
                                <ListView x:Name="GameLogList" Grid.Row="1" ItemsSource="{x:Bind ViewModel.GameEventRows,Mode=OneWay}"
                                          ItemContainerStyle="{StaticResource LogRowStyle}" SelectionMode="Single" SelectionChanged="GameLogSelectionChanged"
                                          IsItemClickEnabled="True" ItemClick="OpenGameEvent" HorizontalContentAlignment="Stretch" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
                                    <ListView.Resources>
                                        <SolidColorBrush x:Key="ListViewItemBackgroundSelected" Color="#253344"/>
                                        <SolidColorBrush x:Key="ListViewItemBackgroundSelectedPointerOver" Color="#2D3C4E"/>
                                        <SolidColorBrush x:Key="ListViewItemSelectionIndicatorBrush" Color="#FFAE48"/>
                                    </ListView.Resources>
                                    <ListView.ItemTemplate>
                                        <DataTemplate x:DataType="live:GameEventLiveRow">
                                            <Grid Padding="24,14" MinHeight="72" ColumnSpacing="20" BorderBrush="{StaticResource PanelStrokeBrush}" BorderThickness="0,0,0,1">
                                                <Grid.ColumnDefinitions><ColumnDefinition Width="128"/><ColumnDefinition Width="160"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
                                                <TextBlock Text="{x:Bind TimeDisplay,Mode=OneWay}" Foreground="{StaticResource MutedBrush}" FontFamily="Consolas" FontSize="12" VerticalAlignment="Center"/>
                                                <controls:BilingualText Grid.Column="1" Text="{x:Bind Name,Mode=OneWay}" Original="{x:Bind OriginalName,Mode=OneWay}" Foreground="{StaticResource AccentBrush}" VerticalAlignment="Center"/>
                                                <TextBlock Grid.Column="2" Text="{x:Bind Summary,Mode=OneWay}" TextWrapping="Wrap" TextTrimming="CharacterEllipsis" MaxLines="2" FontSize="13" LineHeight="21" VerticalAlignment="Center"/>
                                            </Grid>
                                        </DataTemplate>
                                    </ListView.ItemTemplate>
                                </ListView>
                                <TextBlock x:Name="GameLogEmptyText" Grid.Row="1" Text="没有符合筛选条件的事件" Foreground="{StaticResource MutedBrush}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="24" TextWrapping="Wrap" Visibility="Collapsed" IsHitTestVisible="False"/>
                                <Grid Grid.Row="2" Padding="20,14" BorderBrush="{StaticResource PanelStrokeBrush}" BorderThickness="0,1,0,0" ColumnSpacing="12">
                                    <Grid.ColumnDefinitions><ColumnDefinition Width="Auto"/><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions>
                                    <Button Content="上一页" Command="{x:Bind ViewModel.PreviousGameLogPageCommand}" Padding="14,8"/>
                                    <TextBlock Grid.Column="1" Text="{x:Bind ViewModel.GameEventPageLabel,Mode=OneWay}" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="{StaticResource MutedBrush}" FontSize="12"/>
                                    <StackPanel Grid.Column="2" Orientation="Horizontal" Spacing="12">
                                        <Button x:Name="GameDetailsButton" Content="事件详情" Visibility="Collapsed" IsEnabled="{x:Bind ViewModel.HasGameEventDetails,Mode=OneWay}">
                                            <Button.Flyout>
                                                <Flyout x:Name="EventDetailsFlyout" Placement="TopEdgeAlignedRight">
                                                    <Flyout.FlyoutPresenterStyle><Style TargetType="FlyoutPresenter"><Setter Property="Padding" Value="22"/><Setter Property="CornerRadius" Value="12"/><Setter Property="Background" Value="{StaticResource PanelBrush}"/><Setter Property="MaxWidth" Value="520"/></Style></Flyout.FlyoutPresenterStyle>
                                                    <ScrollViewer x:Name="CompactEventDetails" Width="420" MaxHeight="540" Padding="0,0,12,0" HorizontalScrollBarVisibility="Disabled">
                                                        <ContentControl Content="{x:Bind ViewModel.SelectedGameEventDetail,Mode=OneWay}" ContentTemplate="{StaticResource EventDetailsTemplate}" HorizontalContentAlignment="Stretch"/>
                                                    </ScrollViewer>
                                                </Flyout>
                                            </Button.Flyout>
                                        </Button>
                                        <Button Content="下一页" Command="{x:Bind ViewModel.NextGameLogPageCommand}" Padding="14,8"/>
                                    </StackPanel>
                                </Grid>
                            </Grid>
                        </Border>
                        <Border x:Name="EventDetailsPanel" Grid.Column="1" Background="{StaticResource PanelBrush}" BorderBrush="{StaticResource PanelStrokeBrush}" BorderThickness="1" CornerRadius="12">
                            <Grid>
                                <Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="*"/></Grid.RowDefinitions>
                                <Grid Padding="22,16" BorderBrush="{StaticResource PanelStrokeBrush}" BorderThickness="0,0,0,1">
                                    <TextBlock Text="事件详情" FontSize="16" FontWeight="SemiBold" VerticalAlignment="Center"/>
                                    <Button HorizontalAlignment="Right" Padding="6" Background="Transparent" BorderThickness="0" Click="CopyEventJson" IsEnabled="{x:Bind ViewModel.HasGameEventDetails,Mode=OneWay}" ToolTipService.ToolTip="复制事件 JSON" AutomationProperties.Name="复制事件 JSON"><FontIcon Glyph="&#xE8C8;" FontSize="15"/></Button>
                                </Grid>
                                <ScrollViewer Grid.Row="1" Padding="22,22,30,22" HorizontalScrollBarVisibility="Disabled">
                                    <ContentControl Content="{x:Bind ViewModel.SelectedGameEventDetail,Mode=OneWay}" ContentTemplate="{StaticResource EventDetailsTemplate}" HorizontalContentAlignment="Stretch"/>
                                </ScrollViewer>
                                <TextBlock x:Name="EventDetailsEmptyText" Grid.Row="1" Text="选择一条事件查看详细内容" Style="{StaticResource MutedText}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="24"/>
                            </Grid>
                        </Border>
                    </Grid>
                </Grid>
            </PivotItem>
            <PivotItem>
                <PivotItem.Header><TextBlock Text="工具箱记录" FontSize="18" FontWeight="SemiBold"/></PivotItem.Header>
                <Grid Margin="0,24,0,0" RowSpacing="18">
                    <Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="*"/></Grid.RowDefinitions>
                    <TextBlock Text="最近 200 条记录 · 同一故障合并计数，保留首次与最近诊断 · 本机时区" Style="{StaticResource MutedText}" FontSize="12"/>
                    <Border Grid.Row="1" Background="{StaticResource PanelBrush}" BorderBrush="{StaticResource PanelStrokeBrush}" BorderThickness="1" CornerRadius="12">
                        <Grid>
                            <Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="*"/></Grid.RowDefinitions>
                            <Grid Padding="24,14" ColumnSpacing="24" Background="{StaticResource PanelAltBrush}" CornerRadius="11,11,0,0">
                                <Grid.ColumnDefinitions><ColumnDefinition Width="100"/><ColumnDefinition Width="120"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
                                <TextBlock Text="时间" Style="{StaticResource TableHeader}"/><TextBlock Grid.Column="1" Text="类型" Style="{StaticResource TableHeader}"/><TextBlock Grid.Column="2" Text="内容" Style="{StaticResource TableHeader}"/>
                            </Grid>
                            <ListView Grid.Row="1" ItemsSource="{x:Bind ViewModel.Activity,Mode=OneWay}" ItemContainerStyle="{StaticResource LogRowStyle}" SelectionMode="None" HorizontalContentAlignment="Stretch">
                                <ListView.ItemTemplate>
                                    <DataTemplate x:DataType="live:ActivityLiveRow">
                                        <Grid Padding="24,18" MinHeight="72" ColumnSpacing="24" BorderBrush="{StaticResource PanelStrokeBrush}" BorderThickness="0,0,0,1">
                                            <Grid.ColumnDefinitions><ColumnDefinition Width="100"/><ColumnDefinition Width="120"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
                                            <TextBlock Text="{x:Bind TimeDisplay,Mode=OneWay}" Foreground="{StaticResource MutedBrush}" FontFamily="Consolas" FontSize="12" VerticalAlignment="Center"/>
                                            <StackPanel Grid.Column="1" Spacing="5" VerticalAlignment="Center">
                                                <TextBlock Text="{x:Bind Kind,Mode=OneWay}" Foreground="{StaticResource AccentBrush}" FontSize="13"/>
                                                <TextBlock Text="{x:Bind SeverityDisplay,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="11"/>
                                            </StackPanel>
                                            <StackPanel Grid.Column="2" Spacing="5" VerticalAlignment="Center">
                                                <TextBlock Text="{x:Bind Message,Mode=OneWay}" TextWrapping="Wrap" FontSize="13" LineHeight="21" IsTextSelectionEnabled="True"/>
                                                <TextBlock Text="{x:Bind RepetitionDisplay,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="11" TextWrapping="Wrap"/>
                                                <Expander Header="诊断详情" Visibility="{x:Bind HasDiagnostic,Mode=OneWay,Converter={StaticResource BoolVisibility}}" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch">
                                                    <ScrollViewer MaxHeight="240" HorizontalScrollBarVisibility="Disabled">
                                                        <TextBlock Text="{x:Bind DiagnosticDisplay,Mode=OneWay}" FontFamily="Consolas" FontSize="11" TextWrapping="Wrap" IsTextSelectionEnabled="True"/>
                                                    </ScrollViewer>
                                                </Expander>
                                            </StackPanel>
                                        </Grid>
                                    </DataTemplate>
                                </ListView.ItemTemplate>
                            </ListView>
                        </Grid>
                    </Border>
                </Grid>
            </PivotItem>
        </Pivot>
    </Grid>
</Page>
