update banner view page binding
This commit is contained in:
parent
8a620196b5
commit
2bdc220a19
|
@ -29,6 +29,7 @@
|
|||
<NavigationViewItem Icon="Document" Content="Categories" x:Name="Categories" Tag="Categories" Background="{ThemeResource SystemAccentColor}"/>
|
||||
<NavigationViewItem Icon="Folder" Content="Files" x:Name="Files" Tag="Files" Background="{ThemeResource SystemAccentColor}"/>
|
||||
<NavigationViewItem Icon="People" Content="Users" x:Name="Users" Tag="Users" Background="{ThemeResource SystemAccentColor}"/>
|
||||
<NavigationViewItem Icon="OutlineStar" Content="Banner" x:Name="Banners" Tag="Banners" Background="{ThemeResource SystemAccentColor}"/>
|
||||
<NavigationViewItem Icon="Clock" Content="Logs" x:Name="Logs" Tag="Logs" Background="{ThemeResource SystemAccentColor}"/>
|
||||
</NavigationView.MenuItems>
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using System;
|
||||
using PCUT.Pages.BannerManagement;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
|
@ -53,6 +54,9 @@ namespace PCUT.Pages
|
|||
case "Users":
|
||||
ContentFrame.Navigate(typeof(UserListPage));
|
||||
break;
|
||||
case "Banners":
|
||||
ContentFrame.Navigate(typeof(BannerPage));
|
||||
break;
|
||||
case "Logs":
|
||||
ContentFrame.Navigate(typeof(LogInformationPage));
|
||||
break;
|
||||
|
|
|
@ -45,11 +45,12 @@
|
|||
Grid.Row="1"
|
||||
x:Name="Search"
|
||||
PlaceholderText="Search"
|
||||
Text="{Binding Pagination.SearchText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
||||
MinWidth="300" MaxHeight="32" CornerRadius="20"
|
||||
HorizontalAlignment="Right" VerticalAlignment="Center"/>
|
||||
</Grid>
|
||||
|
||||
<ListView Grid.Row="1" x:Name="BannerListView" IsItemClickEnabled="False">
|
||||
<ListView Grid.Row="1" x:Name="BannerListView" ItemsSource="{Binding FilteredBanners.Items}" IsItemClickEnabled="False">
|
||||
<ListView.ItemContainerStyle>
|
||||
<Style TargetType="ListViewItem">
|
||||
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
|
||||
|
@ -93,18 +94,18 @@
|
|||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="0.05*"/>
|
||||
<ColumnDefinition Width="0.25*"/>
|
||||
<ColumnDefinition Width="0.5*"/>
|
||||
<ColumnDefinition Width="0.2*"/>
|
||||
<ColumnDefinition Width="0.55*"/>
|
||||
<ColumnDefinition Width="0.2*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Border Grid.Column="0" BorderBrush="Black" BorderThickness="1,0,0,1">
|
||||
<TextBlock Text="{Binding DisplayId, Mode=OneWay}" Margin="10" Foreground="Black" TextWrapping="Wrap" HorizontalAlignment="Center"/>
|
||||
</Border>
|
||||
<Border Grid.Column="1" BorderBrush="Black" BorderThickness="1,0,0,1">
|
||||
<TextBlock Text="{Binding Name, Mode=OneWay}" Foreground="Black" TextWrapping="Wrap"/>
|
||||
<TextBlock Text="{Binding Name, Mode=OneWay}" Foreground="Black" TextWrapping="Wrap" HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||
</Border>
|
||||
<Border Grid.Column="2" BorderBrush="Black" BorderThickness="1,0,0,1">
|
||||
<TextBlock Text="{Binding Content , Mode=OneWay}" Foreground="Black" TextWrapping="Wrap"/>
|
||||
<TextBlock Text="{Binding Content , Mode=OneWay}" Foreground="Black" TextWrapping="Wrap" HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||
</Border>
|
||||
<Border Grid.Column="3" BorderBrush="Black" BorderThickness="1,0,1,1">
|
||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" >
|
||||
|
|
|
@ -1,9 +1,14 @@
|
|||
using PCUT.ViewModels;
|
||||
using Http.Core.Exceptions;
|
||||
using Http.Core.Extensions;
|
||||
using Http.Core;
|
||||
using PCUT.ViewModels;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices.WindowsRuntime;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Windows.Foundation;
|
||||
using Windows.Foundation.Collections;
|
||||
using Windows.UI.Xaml;
|
||||
|
@ -13,6 +18,7 @@ using Windows.UI.Xaml.Data;
|
|||
using Windows.UI.Xaml.Input;
|
||||
using Windows.UI.Xaml.Media;
|
||||
using Windows.UI.Xaml.Navigation;
|
||||
using static Http.Core.Constants.HttpConstants;
|
||||
|
||||
// The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=234238
|
||||
|
||||
|
@ -28,6 +34,7 @@ namespace PCUT.Pages.BannerManagement
|
|||
public BannerPage()
|
||||
{
|
||||
this.InitializeComponent();
|
||||
ViewModels = DataContext as BannerViewModel;
|
||||
}
|
||||
|
||||
protected override void OnNavigatedTo(NavigationEventArgs e)
|
||||
|
@ -37,27 +44,142 @@ namespace PCUT.Pages.BannerManagement
|
|||
|
||||
private void Page_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
|
||||
ViewModels.Pagination.Page = 1;
|
||||
}
|
||||
|
||||
protected override void OnNavigatedFrom(NavigationEventArgs e)
|
||||
{
|
||||
base.OnNavigatedFrom(e);
|
||||
ViewModels.Pagination.Dispose();
|
||||
}
|
||||
|
||||
private void AddBanner_Click(object sender, RoutedEventArgs e)
|
||||
private async void AddBanner_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
|
||||
var dialog = new BannerUpsertDialog();
|
||||
var result = await dialog.ShowAsync();
|
||||
if (result == ContentDialogResult.Primary)
|
||||
await ViewModels.Reload();
|
||||
}
|
||||
|
||||
private void EditBanner_Click(object sender, RoutedEventArgs e)
|
||||
private async void EditBanner_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
|
||||
if (sender is Button button && button.CommandParameter is string bannerId)
|
||||
{
|
||||
if (CanEdit())
|
||||
{
|
||||
var dialog = new BannerUpsertDialog(bannerId);
|
||||
var result = await dialog.ShowAsync();
|
||||
if (result == ContentDialogResult.Primary)
|
||||
await ViewModels.Reload();
|
||||
_editFlag = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void DeleteBanner_Click(object sender, RoutedEventArgs e)
|
||||
private static readonly object _editLock = new object();
|
||||
private static bool _editFlag = false;
|
||||
private bool CanEdit()
|
||||
{
|
||||
if (!Monitor.TryEnter(_editLock))
|
||||
return false;
|
||||
|
||||
try
|
||||
{
|
||||
if (_editFlag)
|
||||
return false;
|
||||
|
||||
_editFlag = true;
|
||||
return true;
|
||||
}
|
||||
finally
|
||||
{
|
||||
Monitor.Exit(_editLock);
|
||||
}
|
||||
}
|
||||
|
||||
private async void DeleteBanner_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (sender is Button button && button.CommandParameter is string bannerId)
|
||||
{
|
||||
if (CanDelete())
|
||||
{
|
||||
//Confirm diaglog before delete
|
||||
ContentDialog deleteDialog = new ContentDialog
|
||||
{
|
||||
Title = "Confirm Delete?",
|
||||
Content = "Are you sure want delete this banner?",
|
||||
PrimaryButtonText = "Delete",
|
||||
CloseButtonText = "Cancel"
|
||||
};
|
||||
deleteDialog.PrimaryButtonStyle = Application.Current.Resources["PrimaryDialogButton"] as Style;
|
||||
deleteDialog.CloseButtonStyle = Application.Current.Resources["CloseDialogButton"] as Style;
|
||||
|
||||
var result = await deleteDialog.ShowAsync();
|
||||
if (result == ContentDialogResult.Primary)
|
||||
{
|
||||
await DeleteBannerAsync(bannerId);
|
||||
}
|
||||
_deleteFlag = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static readonly object _deleteLock = new object();
|
||||
private static bool _deleteFlag = false;
|
||||
private bool CanDelete()
|
||||
{
|
||||
if (!Monitor.TryEnter(_deleteLock))
|
||||
return false;
|
||||
|
||||
try
|
||||
{
|
||||
if (_deleteFlag)
|
||||
return false;
|
||||
|
||||
_deleteFlag = true;
|
||||
return true;
|
||||
}
|
||||
finally
|
||||
{
|
||||
Monitor.Exit(_deleteLock);
|
||||
}
|
||||
}
|
||||
|
||||
private async Task DeleteBannerAsync(string bannerId)
|
||||
{
|
||||
using (var httpClient = HttpClientFactory.CreateClient(ClientNames.ApiClient))
|
||||
{
|
||||
try
|
||||
{
|
||||
var response = await httpClient.DeleteAsync(Api.BannerById.FormatRoute(bannerId));
|
||||
if (response.IsSuccessStatusCode)
|
||||
{
|
||||
await ShowDialog("Delete Success", "Banner Deleted!");
|
||||
await ViewModels.Reload();
|
||||
}
|
||||
else
|
||||
{
|
||||
await ShowDialog("Error!", "Can't delete banner");
|
||||
}
|
||||
}
|
||||
catch (Exception ex) when (!(ex is AppOutdatedException))
|
||||
{
|
||||
await ShowDialog("Error!", $"Got exception: {ex.Message}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private async Task ShowDialog(string title, string content)
|
||||
{
|
||||
ContentDialog dialog = new ContentDialog
|
||||
{
|
||||
Title = title,
|
||||
Content = content,
|
||||
CloseButtonText = "OK"
|
||||
};
|
||||
dialog.CloseButtonStyle = Application.Current.Resources["CloseDialogButton"] as Style;
|
||||
|
||||
await dialog.ShowAsync();
|
||||
}
|
||||
|
||||
private void btnFirst_Click(object sender, RoutedEventArgs e)
|
||||
|
|
Loading…
Reference in New Issue