Add DetailsUri property to CampaignItem and Add VIEW SITE button in campaign details when the DetailsUri exists

This commit is contained in:
Christian Arenas 2017-07-05 13:38:19 +02:00
parent ae8d38bdf6
commit 34e2e19269
3 changed files with 91 additions and 31 deletions

View File

@ -15,5 +15,7 @@
public DateTime To { get; set; } public DateTime To { get; set; }
public string PictureUri { get; set; } public string PictureUri { get; set; }
public string DetailsUri { get; set; }
} }
} }

View File

@ -5,10 +5,13 @@
using Models.Marketing; using Models.Marketing;
using Services.Marketing; using Services.Marketing;
using Base; using Base;
using System.Windows.Input;
using Xamarin.Forms;
public class CampaignDetailsViewModel : ViewModelBase public class CampaignDetailsViewModel : ViewModelBase
{ {
private CampaignItem _campaign; private CampaignItem _campaign;
private bool _isDetailsSite;
private readonly ICampaignService _campaignService; private readonly ICampaignService _campaignService;
public CampaignDetailsViewModel(ICampaignService campaignService) public CampaignDetailsViewModel(ICampaignService campaignService)
@ -26,6 +29,16 @@
} }
} }
public bool IsDetailsSite
{
get => _isDetailsSite;
set
{
_isDetailsSite = value;
RaisePropertyChanged(() => IsDetailsSite);
}
}
public override async Task InitializeAsync(object navigationData) public override async Task InitializeAsync(object navigationData)
{ {
if (navigationData is int) if (navigationData is int)
@ -38,5 +51,12 @@
IsBusy = false; IsBusy = false;
} }
} }
public ICommand EnableDetailsSiteCommand => new Command(EnableDetailsSite);
private void EnableDetailsSite()
{
IsDetailsSite = true;
}
} }
} }

View File

@ -54,10 +54,18 @@
Value="Center" /> Value="Center" />
</Style> </Style>
<Style x:Key="CampaignAvailabilityButtonStyle" <Style x:Key="CampaignViewSiteButtonStyle"
TargetType="{x:Type Grid}"> TargetType="{x:Type Button}">
<Setter Property="TextColor"
Value="{StaticResource WhiteColor}" />
<Setter Property="BackgroundColor" <Setter Property="BackgroundColor"
Value="{StaticResource LightGreenColor}" /> Value="{StaticResource LightGreenColor}" />
</Style>
<Style x:Key="CampaignAvailabilityBannerStyle"
TargetType="{x:Type Grid}">
<Setter Property="BackgroundColor"
Value="{StaticResource GrayColor}" />
<Setter Property="Padding" <Setter Property="Padding"
Value="12" /> Value="12" />
<Setter Property="VerticalOptions" <Setter Property="VerticalOptions"
@ -69,44 +77,62 @@
</Style> </Style>
</ResourceDictionary> </ResourceDictionary>
</ContentPage.Resources> </ContentPage.Resources>
<Grid <Grid>
ColumnSpacing="0"
RowSpacing="0">
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/> <RowDefinition Height="*"/>
<RowDefinition Height="60" /> <RowDefinition Height="60" />
</Grid.RowDefinitions> </Grid.RowDefinitions>
<StackLayout
HeightRequest="50"
Grid.Column="0"
Grid.Row="0"
IsVisible="{Binding Campaign.DetailsUri,
Converter={StaticResource StringNullOrEmptyBoolConverter}}">
<Button
BackgroundColor="{StaticResource LightGreenColor}"
Command="{Binding EnableDetailsSiteCommand}"
Text="VIEW SITE"
Style="{StaticResource CampaignViewSiteButtonStyle}">
</Button>
</StackLayout>
<Grid
ColumnSpacing="0"
RowSpacing="0"
Grid.Row="1" >
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<!-- CAMPAIGN DETAILS --> <!-- CAMPAIGN DETAILS -->
<ScrollView> <ScrollView>
<StackLayout> <StackLayout>
<Grid> <Grid>
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="1" />
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
<RowDefinition Height="*" /> <RowDefinition Height="*" />
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Grid
Grid.Row="0"
BackgroundColor="Gray"/>
<Image <Image
Grid.Row="1" Grid.Row="0"
Source="{Binding Campaign.PictureUri, Converter={StaticResource ImageConverter}}" Source="{Binding Campaign.PictureUri, Converter={StaticResource ImageConverter}}"
Style="{StaticResource CampaignImageStyle}"/> Style="{StaticResource CampaignImageStyle}"/>
<Label <Label
Grid.Row="2" Grid.Row="1"
Text="{Binding Campaign.Name}" Text="{Binding Campaign.Name}"
Style="{StaticResource CampaignTitleStyle}"/> Style="{StaticResource CampaignTitleStyle}"/>
<Label <Label
Grid.Row="3" Grid.Row="2"
Text="{Binding Campaign.Description}" Text="{Binding Campaign.Description}"
Style="{StaticResource CampaignDescriptionStyle}"/> Style="{StaticResource CampaignDescriptionStyle}"/>
</Grid> </Grid>
</StackLayout> </StackLayout>
</ScrollView> </ScrollView>
</Grid>
<Grid <Grid
Grid.Row="1" Style="{StaticResource CampaignAvailabilityBannerStyle}"
Style="{StaticResource CampaignAvailabilityButtonStyle}"> Grid.Row="2">
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
@ -121,6 +147,18 @@
Style="{StaticResource CampaignAvailabilityDescriptionStyle}"/> Style="{StaticResource CampaignAvailabilityDescriptionStyle}"/>
</Grid> </Grid>
<AbsoluteLayout
Grid.Column="0"
Grid.Row="0"
Grid.RowSpan="3"
IsVisible="{Binding IsDetailsSite}">
<WebView
Source="{Binding Campaign.DetailsUri}"
AbsoluteLayout.LayoutBounds="0, 0, 1, 1"
AbsoluteLayout.LayoutFlags="All">
</WebView>
</AbsoluteLayout>
<!-- INDICATOR --> <!-- INDICATOR -->
<ActivityIndicator <ActivityIndicator
Grid.Row="0" Grid.Row="0"