WIP estimate
This commit is contained in:
parent
be289e45e1
commit
3b57246f80
22 changed files with 407 additions and 52 deletions
|
|
@ -43,6 +43,7 @@
|
||||||
<Compile Include="Attributes\CurrencyAttribute.cs" />
|
<Compile Include="Attributes\CurrencyAttribute.cs" />
|
||||||
<Compile Include="Attributes\DisplayAttribute.cs" />
|
<Compile Include="Attributes\DisplayAttribute.cs" />
|
||||||
<Compile Include="Behaviors\EmailValidatorBehavior.cs" />
|
<Compile Include="Behaviors\EmailValidatorBehavior.cs" />
|
||||||
|
<Compile Include="Behaviors\IntegerEntryBehavior.cs" />
|
||||||
<Compile Include="Behaviors\MaxLengthValidator.cs" />
|
<Compile Include="Behaviors\MaxLengthValidator.cs" />
|
||||||
<Compile Include="Behaviors\DecimalValidatorBehavior.cs" />
|
<Compile Include="Behaviors\DecimalValidatorBehavior.cs" />
|
||||||
<Compile Include="Behaviors\PickerBehavior.cs" />
|
<Compile Include="Behaviors\PickerBehavior.cs" />
|
||||||
|
|
@ -58,6 +59,15 @@
|
||||||
<Compile Include="Model\Social\Messaging\ChatStatus.cs" />
|
<Compile Include="Model\Social\Messaging\ChatStatus.cs" />
|
||||||
<Compile Include="Model\Social\Messaging\PrivateMessage.cs" />
|
<Compile Include="Model\Social\Messaging\PrivateMessage.cs" />
|
||||||
<Compile Include="Model\UI\PageState.cs" />
|
<Compile Include="Model\UI\PageState.cs" />
|
||||||
|
<Compile Include="Pages\EstimatePages\EstimatesClientPage.xaml.cs">
|
||||||
|
<DependentUpon>EstimatesClientPage.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Pages\EstimatePages\EstimatesProviderPage.xaml.cs">
|
||||||
|
<DependentUpon>EstimatesProviderPage.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Pages\EstimatePages\ViewEstimatePage.xaml.cs">
|
||||||
|
<DependentUpon>ViewEstimatePage.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="Pages\UserProfile\UserFiles.xaml.cs">
|
<Compile Include="Pages\UserProfile\UserFiles.xaml.cs">
|
||||||
<DependentUpon>UserFiles.xaml</DependentUpon>
|
<DependentUpon>UserFiles.xaml</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
|
@ -79,7 +89,7 @@
|
||||||
<Compile Include="Pages\DocSigning.xaml.cs">
|
<Compile Include="Pages\DocSigning.xaml.cs">
|
||||||
<DependentUpon>DocSigning.xaml</DependentUpon>
|
<DependentUpon>DocSigning.xaml</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="ViewModels\Signing\EstimateSignaturePad.cs" />
|
<Compile Include="ViewModels\Signing\DocSigningViewModel.cs" />
|
||||||
<Compile Include="ViewModels\Signing\SignaturePadConfigViewModel.cs" />
|
<Compile Include="ViewModels\Signing\SignaturePadConfigViewModel.cs" />
|
||||||
<Compile Include="ViewModels\UserProfile\UserProfileViewModel.cs" />
|
<Compile Include="ViewModels\UserProfile\UserProfileViewModel.cs" />
|
||||||
<Compile Include="ViewModels\UserProfile\DirectoryInfoViewModel.cs" />
|
<Compile Include="ViewModels\UserProfile\DirectoryInfoViewModel.cs" />
|
||||||
|
|
@ -110,16 +120,16 @@
|
||||||
<Compile Include="Interfaces\IBillingLine.cs" />
|
<Compile Include="Interfaces\IBillingLine.cs" />
|
||||||
<Compile Include="Interfaces\IEstimate.cs" />
|
<Compile Include="Interfaces\IEstimate.cs" />
|
||||||
<Compile Include="Pages\BlogPages\BlogPage.cs" />
|
<Compile Include="Pages\BlogPages\BlogPage.cs" />
|
||||||
<Compile Include="Pages\Estimate\BookQueriesPage.xaml.cs">
|
<Compile Include="Pages\EstimatePages\BookQueriesPage.xaml.cs">
|
||||||
<DependentUpon>BookQueriesPage.xaml</DependentUpon>
|
<DependentUpon>BookQueriesPage.xaml</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="Pages\Estimate\BookQueryPage.xaml.cs">
|
<Compile Include="Pages\EstimatePages\BookQueryPage.xaml.cs">
|
||||||
<DependentUpon>BookQueryPage.xaml</DependentUpon>
|
<DependentUpon>BookQueryPage.xaml</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="Pages\ChatPage.xaml.cs">
|
<Compile Include="Pages\ChatPage.xaml.cs">
|
||||||
<DependentUpon>ChatPage.xaml</DependentUpon>
|
<DependentUpon>ChatPage.xaml</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="Pages\Estimate\EditBillingLinePage.xaml.cs">
|
<Compile Include="Pages\EstimatePages\EditBillingLinePage.xaml.cs">
|
||||||
<DependentUpon>EditBillingLinePage.xaml</DependentUpon>
|
<DependentUpon>EditBillingLinePage.xaml</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="Pages\UserProfile\DashboardPage.xaml.cs">
|
<Compile Include="Pages\UserProfile\DashboardPage.xaml.cs">
|
||||||
|
|
@ -170,7 +180,7 @@
|
||||||
<Compile Include="Model\Auth\Tokens.cs" />
|
<Compile Include="Model\Auth\Tokens.cs" />
|
||||||
<Compile Include="Model\Auth\User.cs" />
|
<Compile Include="Model\Auth\User.cs" />
|
||||||
<Compile Include="Model\Workflow\Estimate.cs" />
|
<Compile Include="Model\Workflow\Estimate.cs" />
|
||||||
<Compile Include="Pages\Estimate\EditEstimatePage.xaml.cs">
|
<Compile Include="Pages\EstimatePages\EditEstimatePage.xaml.cs">
|
||||||
<DependentUpon>EditEstimatePage.xaml</DependentUpon>
|
<DependentUpon>EditEstimatePage.xaml</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="Pages\Oooops\HomePage.xaml.cs">
|
<Compile Include="Pages\Oooops\HomePage.xaml.cs">
|
||||||
|
|
@ -336,7 +346,7 @@
|
||||||
</Reference>
|
</Reference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<EmbeddedResource Include="Pages\Estimate\BookQueryPage.xaml">
|
<EmbeddedResource Include="Pages\EstimatePages\BookQueryPage.xaml">
|
||||||
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
|
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
|
|
@ -348,19 +358,19 @@
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<EmbeddedResource Include="Pages\Estimate\EditEstimatePage.xaml">
|
<EmbeddedResource Include="Pages\EstimatePages\EditEstimatePage.xaml">
|
||||||
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
|
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<EmbeddedResource Include="Pages\Estimate\BookQueriesPage.xaml">
|
<EmbeddedResource Include="Pages\EstimatePages\BookQueriesPage.xaml">
|
||||||
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
|
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<EmbeddedResource Include="Pages\Estimate\EditBillingLinePage.xaml">
|
<EmbeddedResource Include="Pages\EstimatePages\EditBillingLinePage.xaml">
|
||||||
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
|
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
|
|
@ -450,6 +460,24 @@
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<EmbeddedResource Include="Pages\EstimatePages\EstimatesProviderPage.xaml">
|
||||||
|
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</EmbeddedResource>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<EmbeddedResource Include="Pages\EstimatePages\EstimatesClientPage.xaml">
|
||||||
|
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</EmbeddedResource>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<EmbeddedResource Include="Pages\EstimatePages\ViewEstimatePage.xaml">
|
||||||
|
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</EmbeddedResource>
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
|
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
|
||||||
<Import Project="..\..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets" Condition="Exists('..\..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets')" />
|
<Import Project="..\..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets" Condition="Exists('..\..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets')" />
|
||||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,22 @@
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
|
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||||
|
xmlns:signature="clr-namespace:SignaturePad.Forms;assembly=SignaturePad.Forms"
|
||||||
|
xmlns:views="clr-namespace:BookAStar.Views;assembly=BookAStar"
|
||||||
x:Class="BookAStar.ViewModels.Signing.DocSigning">
|
x:Class="BookAStar.ViewModels.Signing.DocSigning">
|
||||||
<Label Text="{Binding MainText}" VerticalOptions="Center" HorizontalOptions="Center" />
|
<StackLayout>
|
||||||
|
<views:MarkdownView x:Name="mdView"
|
||||||
|
Editable="False"
|
||||||
|
HorizontalOptions="FillAndExpand"
|
||||||
|
Markdown="{Binding Document}"
|
||||||
|
VerticalOptions="Start" />
|
||||||
|
<signature:SignaturePadView x:Name="padView"
|
||||||
|
HeightRequest="150" WidthRequest="240"
|
||||||
|
BackgroundColor="White"
|
||||||
|
CaptionText="Caption This" CaptionTextColor="Black"
|
||||||
|
ClearText="Clear Me!" ClearTextColor="Red"
|
||||||
|
PromptText="Prompt Here" PromptTextColor="Red"
|
||||||
|
SignatureLineColor="Aqua" StrokeColor="Black" StrokeWidth="2" />
|
||||||
|
<Button Clicked="OnGetStats" Text="Get Signature Stats" />
|
||||||
|
</StackLayout>
|
||||||
</ContentPage>
|
</ContentPage>
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
using System;
|
using SignaturePad.Forms;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
@ -14,5 +15,45 @@ namespace BookAStar.ViewModels.Signing
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
}
|
}
|
||||||
|
private async void OnGetStats(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
var points = padView.Points.ToArray();
|
||||||
|
var image = await padView.GetImageStreamAsync(SignatureImageFormat.Png);
|
||||||
|
|
||||||
|
var pointCount = points.Count();
|
||||||
|
var imageSize = image.Length / 1000;
|
||||||
|
var linesCount = points.Count(p => p == Point.Zero) + (points.Length > 0 ? 1 : 0);
|
||||||
|
|
||||||
|
image.Dispose();
|
||||||
|
|
||||||
|
await DisplayAlert("Stats", $"The signature has {linesCount} lines or {pointCount} points, and is {imageSize:#,###.0}KB (in memory) when saved as a PNG.", "Cool");
|
||||||
|
}
|
||||||
|
private async void OnChangeTheme(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
var action = await DisplayActionSheet("Change Theme", "Cancel", null, "White", "Black", "Aqua");
|
||||||
|
switch (action)
|
||||||
|
{
|
||||||
|
case "White":
|
||||||
|
padView.BackgroundColor = Color.White;
|
||||||
|
padView.StrokeColor = Color.Black;
|
||||||
|
padView.ClearTextColor = Color.Black;
|
||||||
|
padView.ClearText = "Clear Markers";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "Black":
|
||||||
|
padView.BackgroundColor = Color.Black;
|
||||||
|
padView.StrokeColor = Color.White;
|
||||||
|
padView.ClearTextColor = Color.White;
|
||||||
|
padView.ClearText = "Clear Chalk";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "Aqua":
|
||||||
|
padView.BackgroundColor = Color.Aqua;
|
||||||
|
padView.StrokeColor = Color.Red;
|
||||||
|
padView.ClearTextColor = Color.Black;
|
||||||
|
padView.ClearText = "Clear The Aqua";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,8 @@
|
||||||
</Style>
|
</Style>
|
||||||
</ResourceDictionary>
|
</ResourceDictionary>
|
||||||
</ContentPage.Resources>
|
</ContentPage.Resources>
|
||||||
|
<ContentPage.Content>
|
||||||
|
|
||||||
<ScrollView>
|
<ScrollView>
|
||||||
<StackLayout Padding="10,10,10,10" x:Name="mainLayout">
|
<StackLayout Padding="10,10,10,10" x:Name="mainLayout">
|
||||||
<ListView RefreshCommand="{Binding RefreshQueries}" IsPullToRefreshEnabled="True"
|
<ListView RefreshCommand="{Binding RefreshQueries}" IsPullToRefreshEnabled="True"
|
||||||
|
|
@ -48,7 +49,7 @@
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout Orientation="Vertical" HorizontalOptions="FillAndExpand">
|
<StackLayout Orientation="Vertical" HorizontalOptions="FillAndExpand">
|
||||||
<Label LineBreakMode="WordWrap" Text="{Binding Location.Address}"/>
|
<Label LineBreakMode="WordWrap" Text="{Binding Location.Address}"/>
|
||||||
<Label Text="{Binding Previsionnal}"/>
|
<Label Text="{Binding Previsionnal}" />
|
||||||
<Label Text="{Binding Id}" HorizontalTextAlignment="End"/>
|
<Label Text="{Binding Id}" HorizontalTextAlignment="End"/>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
|
|
@ -59,5 +60,6 @@
|
||||||
</ListView>
|
</ListView>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
|
|
||||||
|
</ContentPage.Content>
|
||||||
</ContentPage>
|
</ContentPage>
|
||||||
|
|
@ -27,7 +27,13 @@
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout Orientation="Vertical" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" >
|
<StackLayout Orientation="Vertical" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" >
|
||||||
<maps:Map x:Name="map" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"></maps:Map>
|
<maps:Map x:Name="map" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"></maps:Map>
|
||||||
<Button Text="{Binding EditEstimateButtonText}" Clicked="OnEditEstimate" VerticalOptions="End"/>
|
<StackLayout Orientation="Horizontal">
|
||||||
|
<Button Text="{x:Static local:Strings.ViewEstimate}"
|
||||||
|
BorderRadius="10" BorderWidth="2" BorderColor="Aqua" x:Name ="btn"
|
||||||
|
IsEnabled="{Binding EstimationDone}"
|
||||||
|
Clicked="OnViewEstimate" Image="exclam.png"/>
|
||||||
|
<Button Text="{Binding EditEstimateButtonText}" Clicked="OnEditEstimate" />
|
||||||
|
</StackLayout>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</ContentPage>
|
</ContentPage>
|
||||||
|
|
@ -1,13 +1,14 @@
|
||||||
using System;
|
using System;
|
||||||
|
using System.Linq;
|
||||||
using Xamarin.Forms;
|
using Xamarin.Forms;
|
||||||
using Xamarin.Forms.Maps;
|
using Xamarin.Forms.Maps;
|
||||||
|
|
||||||
namespace BookAStar.Pages
|
namespace BookAStar.Pages
|
||||||
{
|
{
|
||||||
using Data;
|
using Data;
|
||||||
|
using EstimatePages;
|
||||||
using Model;
|
using Model;
|
||||||
using Model.Workflow;
|
using Model.Workflow;
|
||||||
using System.Linq;
|
|
||||||
using ViewModels.EstimateAndBilling;
|
using ViewModels.EstimateAndBilling;
|
||||||
|
|
||||||
public partial class BookQueryPage : ContentPage
|
public partial class BookQueryPage : ContentPage
|
||||||
|
|
@ -71,23 +72,31 @@ namespace BookAStar.Pages
|
||||||
{
|
{
|
||||||
DataManager.Current.Contacts.Merge(BookQuery.Client);
|
DataManager.Current.Contacts.Merge(BookQuery.Client);
|
||||||
DataManager.Current.Contacts.SaveEntity();
|
DataManager.Current.Contacts.SaveEntity();
|
||||||
estimateToEdit = new Estimate()
|
estimateToEdit = new Estimate
|
||||||
{
|
{
|
||||||
ClientId = BookQuery.Client.UserId,
|
ClientId = BookQuery.Client.UserId,
|
||||||
CommandId = BookQuery.Id,
|
CommandId = BookQuery.Id,
|
||||||
OwnerId = MainSettings.CurrentUser.Id,
|
OwnerId = MainSettings.CurrentUser.Id,
|
||||||
Id = 0,
|
Id = 0
|
||||||
Description = "# **Hello Estimate!**"
|
|
||||||
};
|
};
|
||||||
editEstimateViewModel = new EditEstimateViewModel(estimateToEdit, LocalState.New);
|
editEstimateViewModel = new EditEstimateViewModel(estimateToEdit);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
editEstimateViewModel = new EditEstimateViewModel(estimateToEdit, LocalState.UpToDate);
|
editEstimateViewModel = new EditEstimateViewModel(estimateToEdit);
|
||||||
|
|
||||||
DataManager.Current.EstimationCache.Add(editEstimateViewModel);
|
DataManager.Current.EstimationCache.Add(editEstimateViewModel);
|
||||||
}
|
}
|
||||||
App.NavigationService.NavigateTo<EditEstimatePage>(true,
|
App.NavigationService.NavigateTo<EditEstimatePage>(true,
|
||||||
editEstimateViewModel);
|
editEstimateViewModel);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnViewEstimate(object sender, EventArgs ev)
|
||||||
|
{
|
||||||
|
var bookQueryViewModel = (BookQueryViewModel) BindingContext;
|
||||||
|
App.NavigationService.NavigateTo<ViewEstimatePage>(true,
|
||||||
|
new EditEstimateViewModel(bookQueryViewModel.Estimate));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnSizeAllocated(double width, double height)
|
protected override void OnSizeAllocated(double width, double height)
|
||||||
|
|
@ -50,9 +50,6 @@
|
||||||
<behaviors:EditorMaxLengthValidator x:Name="descriptionValidator" MaxLength="512" />
|
<behaviors:EditorMaxLengthValidator x:Name="descriptionValidator" MaxLength="512" />
|
||||||
</Editor.Behaviors>
|
</Editor.Behaviors>
|
||||||
</Editor>
|
</Editor>
|
||||||
<Image HorizontalOptions="End" Style="{Binding Source={x:Reference descriptionValidator},
|
|
||||||
Path=IsValid,
|
|
||||||
Converter={StaticResource boolToStyleImage}}" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
|
|
||||||
<Label Text="Durée de la prestation"
|
<Label Text="Durée de la prestation"
|
||||||
|
|
@ -77,8 +74,19 @@
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
|
|
||||||
<Label Text="Quantité facturée" Style="{StaticResource InputLabelStyle}"></Label>
|
<Label Text="Quantité facturée" Style="{StaticResource InputLabelStyle}"></Label>
|
||||||
|
<StackLayout Orientation="Horizontal">
|
||||||
<Entry Text="{Binding Count, Mode=TwoWay}" Placeholder="Quantité" Keyboard="Numeric"
|
<Entry Text="{Binding Count, Mode=TwoWay}" Placeholder="Quantité" Keyboard="Numeric"
|
||||||
Style="{StaticResource BigEntry}"/>
|
Style="{StaticResource BigEntry}">
|
||||||
|
<Entry.Behaviors>
|
||||||
|
<behaviors:IntegerEntryBehavior x:Name="countValidator" Min="0" Max="10" />
|
||||||
|
</Entry.Behaviors>
|
||||||
|
</Entry>
|
||||||
|
<Image x:Name="countSuccessErrorImage"
|
||||||
|
Style="{Binding Source={x:Reference countValidator},
|
||||||
|
Path=IsValid,
|
||||||
|
Converter={StaticResource boolToStyleImage}}" />
|
||||||
|
</StackLayout>
|
||||||
|
|
||||||
<Label Text="Prix unitaire" Style="{StaticResource InputLabelStyle}"></Label>
|
<Label Text="Prix unitaire" Style="{StaticResource InputLabelStyle}"></Label>
|
||||||
<StackLayout Orientation="Horizontal">
|
<StackLayout Orientation="Horizontal">
|
||||||
<Entry Text="{Binding UnitaryCostText, Mode=TwoWay}" Placeholder="Prix"
|
<Entry Text="{Binding UnitaryCostText, Mode=TwoWay}" Placeholder="Prix"
|
||||||
|
|
@ -15,6 +15,7 @@
|
||||||
</Style>
|
</Style>
|
||||||
</ResourceDictionary>
|
</ResourceDictionary>
|
||||||
</ContentPage.Resources>
|
</ContentPage.Resources>
|
||||||
|
<ContentPage.Content>
|
||||||
<ScrollView>
|
<ScrollView>
|
||||||
<StackLayout Padding="10,10,10,10" x:Name="mainLayout">
|
<StackLayout Padding="10,10,10,10" x:Name="mainLayout">
|
||||||
<Grid MinimumHeightRequest="12">
|
<Grid MinimumHeightRequest="12">
|
||||||
|
|
@ -77,4 +78,5 @@
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
|
</ContentPage.Content>
|
||||||
</ContentPage>
|
</ContentPage>
|
||||||
|
|
@ -50,8 +50,7 @@ namespace BookAStar.Pages
|
||||||
DataManager.Current.EstimationCache.SaveEntity();
|
DataManager.Current.EstimationCache.SaveEntity();
|
||||||
})};
|
})};
|
||||||
App.NavigationService.NavigateTo<EditBillingLinePage>(
|
App.NavigationService.NavigateTo<EditBillingLinePage>(
|
||||||
true,
|
true, lineView );
|
||||||
new object[] { lineView } );
|
|
||||||
}
|
}
|
||||||
protected void OnEditLine(object sender, ItemTappedEventArgs e)
|
protected void OnEditLine(object sender, ItemTappedEventArgs e)
|
||||||
{
|
{
|
||||||
|
|
@ -65,8 +64,7 @@ namespace BookAStar.Pages
|
||||||
};
|
};
|
||||||
lineView.PropertyChanged += LineView_PropertyChanged;
|
lineView.PropertyChanged += LineView_PropertyChanged;
|
||||||
App.NavigationService.NavigateTo<EditBillingLinePage>(
|
App.NavigationService.NavigateTo<EditBillingLinePage>(
|
||||||
true,
|
true, lineView );
|
||||||
new object[] { lineView });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void LineView_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
|
private void LineView_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||||
|
x:Class="BookAStar.Pages.EstimatesClientPage">
|
||||||
|
|
||||||
|
<Label Text="{Binding MainText}" VerticalOptions="Center" HorizontalOptions="Center" />
|
||||||
|
</ContentPage>
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
using Xamarin.Forms;
|
||||||
|
|
||||||
|
namespace BookAStar.Pages
|
||||||
|
{
|
||||||
|
public partial class EstimatesClientPage : ContentPage
|
||||||
|
{
|
||||||
|
public EstimatesClientPage()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||||
|
x:Class="BookAStar.Pages.EstimatesProviderPage">
|
||||||
|
|
||||||
|
<ScrollView>
|
||||||
|
<StackLayout Padding="10,10,10,10" x:Name="mainLayout">
|
||||||
|
<ListView RefreshCommand="{Binding RefreshCommand}" IsPullToRefreshEnabled="True"
|
||||||
|
ItemsSource="{Binding Estimates}" x:Name="estimates" ItemTapped="OnViewDetail" HasUnevenRows="true" RowHeight="80">
|
||||||
|
<ListView.ItemTemplate HeightRequest="80" VerticalOptions="StartAndExpand">
|
||||||
|
<DataTemplate>
|
||||||
|
<ViewCell>
|
||||||
|
<ViewCell.View>
|
||||||
|
<StackLayout Orientation="Horizontal" Padding="10,10,10,10" VerticalOptions="StartAndExpand">
|
||||||
|
<StackLayout Orientation="Vertical"
|
||||||
|
HeightRequest="80" VerticalOptions="StartAndExpand">
|
||||||
|
|
||||||
|
<StackLayout Orientation="Vertical" >
|
||||||
|
<Image Source="{Binding Client.Avatar}" />
|
||||||
|
<Label Text="{Binding Client.UserName}"
|
||||||
|
Style="{StaticResource labelStyle}"></Label>
|
||||||
|
</StackLayout>
|
||||||
|
|
||||||
|
<Label LineBreakMode="WordWrap" Text="{Binding EventDate, StringFormat='{0:dddd d MMMM à HH:mm}'}" FontSize="12" FontFamily="Italic"/>
|
||||||
|
</StackLayout>
|
||||||
|
<StackLayout Orientation="Vertical" HorizontalOptions="FillAndExpand">
|
||||||
|
<Label LineBreakMode="WordWrap" Text="{Binding Location.Address}"/>
|
||||||
|
<Label Text="{Binding Previsionnal}"/>
|
||||||
|
<Label Text="{Binding Id}" HorizontalTextAlignment="End"/>
|
||||||
|
</StackLayout>
|
||||||
|
</StackLayout>
|
||||||
|
</ViewCell.View>
|
||||||
|
</ViewCell>
|
||||||
|
</DataTemplate>
|
||||||
|
</ListView.ItemTemplate>
|
||||||
|
</ListView>
|
||||||
|
</StackLayout>
|
||||||
|
</ScrollView>
|
||||||
|
|
||||||
|
</ContentPage>
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
using Xamarin.Forms;
|
||||||
|
|
||||||
|
namespace BookAStar.Pages
|
||||||
|
{
|
||||||
|
using Model.Workflow;
|
||||||
|
using ViewModels.EstimateAndBilling;
|
||||||
|
|
||||||
|
public partial class EstimatesProviderPage : ContentPage
|
||||||
|
{
|
||||||
|
public EstimatesProviderPage()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnViewDetail(object sender, ItemTappedEventArgs e)
|
||||||
|
{
|
||||||
|
Estimate data = e.Item as Estimate;
|
||||||
|
App.NavigationService.NavigateTo<EditEstimatePage>(
|
||||||
|
true,
|
||||||
|
new EditEstimateViewModel(data));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,79 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||||
|
x:Class="BookAStar.Pages.EstimatePages.ViewEstimatePage"
|
||||||
|
xmlns:views="clr-namespace:BookAStar.Views;assembly=BookAStar"
|
||||||
|
xmlns:local="clr-namespace:BookAStar;assembly=BookAStar"
|
||||||
|
Style="{StaticResource PageStyle}">
|
||||||
|
<ContentPage.Resources>
|
||||||
|
<ResourceDictionary>
|
||||||
|
<Style TargetType="Label">
|
||||||
|
<Setter Property="Style" Value="{StaticResource ContentLabelStyle}" />
|
||||||
|
</Style>
|
||||||
|
<Style TargetType="Button">
|
||||||
|
<Setter Property="Style" Value="{StaticResource ButtonStyle}" />
|
||||||
|
</Style>
|
||||||
|
</ResourceDictionary>
|
||||||
|
</ContentPage.Resources>
|
||||||
|
<ContentPage.Content>
|
||||||
|
<ScrollView>
|
||||||
|
<StackLayout Padding="10,10,10,10" x:Name="mainLayout">
|
||||||
|
<Grid MinimumHeightRequest="12">
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="*" />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
<ColumnDefinition Width="2*" />
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<Label Grid.Row="0" Grid.Column="0" Text="{Binding Client.UserName}" ></Label>
|
||||||
|
<Label Grid.Row="0" Grid.Column="1" Text="{Binding Query.Location.Address}" ></Label>
|
||||||
|
<Label Grid.Row="0" Grid.Column="2" Text="{Binding Query.EventDate, StringFormat='{0:dddd d MMMM yyyy à hh:mm}'}" ></Label>
|
||||||
|
</Grid>
|
||||||
|
|
||||||
|
<Label Text="{Binding Title}" />
|
||||||
|
|
||||||
|
<Label Text="{Binding Description}" />
|
||||||
|
|
||||||
|
<views:MarkdownView x:Name="mdview"
|
||||||
|
HorizontalOptions="FillAndExpand"
|
||||||
|
Markdown="{Binding Description}"
|
||||||
|
/>
|
||||||
|
<ListView x:Name="billListView" ItemsSource="{Binding Bill}"
|
||||||
|
MinimumHeightRequest="40" HasUnevenRows="true" VerticalOptions="FillAndExpand"
|
||||||
|
HeightRequest="40" >
|
||||||
|
<ListView.ItemTemplate>
|
||||||
|
<DataTemplate >
|
||||||
|
<ViewCell>
|
||||||
|
<ViewCell.View>
|
||||||
|
<Grid MinimumHeightRequest="12">
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="*" />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
<ColumnDefinition Width="30" />
|
||||||
|
<ColumnDefinition Width="90" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<Label Text="{Binding Description}"
|
||||||
|
Grid.Row="0" Grid.Column="0" ></Label>
|
||||||
|
<Label Text="{Binding Duration, StringFormat=\{0\}}"
|
||||||
|
Grid.Row="0" Grid.Column="1" ></Label>
|
||||||
|
<Label Text="{Binding Count}"
|
||||||
|
Grid.Row="0" Grid.Column="2" ></Label>
|
||||||
|
<Label Text="{Binding UnitaryCost}"
|
||||||
|
Grid.Row="0" Grid.Column="3"
|
||||||
|
FontFamily="Monospace"></Label>
|
||||||
|
</Grid>
|
||||||
|
</ViewCell.View>
|
||||||
|
</ViewCell>
|
||||||
|
</DataTemplate>
|
||||||
|
</ListView.ItemTemplate>
|
||||||
|
</ListView>
|
||||||
|
<Label FormattedText="{Binding FormattedTotal}"/>
|
||||||
|
</StackLayout>
|
||||||
|
</ScrollView>
|
||||||
|
</ContentPage.Content>
|
||||||
|
</ContentPage>
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
using Xamarin.Forms;
|
||||||
|
|
||||||
|
namespace BookAStar.Pages.EstimatePages
|
||||||
|
{
|
||||||
|
using ViewModels.EstimateAndBilling;
|
||||||
|
|
||||||
|
public partial class ViewEstimatePage : ContentPage
|
||||||
|
{
|
||||||
|
public ViewEstimatePage(EditEstimateViewModel model)
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
billListView.ItemSelected += (sender, e) => {
|
||||||
|
((ListView)sender).SelectedItem = null;
|
||||||
|
};
|
||||||
|
BindingContext = model;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
36
BookAStar/BookAStar/Strings.Designer.cs
generated
36
BookAStar/BookAStar/Strings.Designer.cs
generated
|
|
@ -61,6 +61,24 @@ namespace BookAStar {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Recherche une chaîne localisée semblable à Faire un devis.
|
||||||
|
/// </summary>
|
||||||
|
public static string DoEstimate {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("DoEstimate", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Recherche une chaîne localisée semblable à Editer le devis.
|
||||||
|
/// </summary>
|
||||||
|
public static string EditEstimate {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("EditEstimate", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Recherche une chaîne localisée semblable à Star.
|
/// Recherche une chaîne localisée semblable à Star.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -97,15 +115,6 @@ namespace BookAStar {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Recherche une chaîne localisée semblable à sc.
|
|
||||||
/// </summary>
|
|
||||||
public static string String1 {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("String1", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Recherche une chaîne localisée semblable à Incontournable.
|
/// Recherche une chaîne localisée semblable à Incontournable.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -123,5 +132,14 @@ namespace BookAStar {
|
||||||
return ResourceManager.GetString("TwoStars", resourceCulture);
|
return ResourceManager.GetString("TwoStars", resourceCulture);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Recherche une chaîne localisée semblable à Voir le devis.
|
||||||
|
/// </summary>
|
||||||
|
public static string ViewEstimate {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("ViewEstimate", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -117,6 +117,12 @@
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<data name="DoEstimate" xml:space="preserve">
|
||||||
|
<value>Faire un devis</value>
|
||||||
|
</data>
|
||||||
|
<data name="EditEstimate" xml:space="preserve">
|
||||||
|
<value>Editer le devis</value>
|
||||||
|
</data>
|
||||||
<data name="FiveStars" xml:space="preserve">
|
<data name="FiveStars" xml:space="preserve">
|
||||||
<value>Star</value>
|
<value>Star</value>
|
||||||
<comment>Da star, da one</comment>
|
<comment>Da star, da one</comment>
|
||||||
|
|
@ -131,13 +137,13 @@
|
||||||
<data name="OneStar" xml:space="preserve">
|
<data name="OneStar" xml:space="preserve">
|
||||||
<value>Étoile montante</value>
|
<value>Étoile montante</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="String1" xml:space="preserve">
|
|
||||||
<value>sc</value>
|
|
||||||
</data>
|
|
||||||
<data name="ThreeStars" xml:space="preserve">
|
<data name="ThreeStars" xml:space="preserve">
|
||||||
<value>Incontournable</value>
|
<value>Incontournable</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TwoStars" xml:space="preserve">
|
<data name="TwoStars" xml:space="preserve">
|
||||||
<value>À ne manquer sous aucun prétexte</value>
|
<value>À ne manquer sous aucun prétexte</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="ViewEstimate" xml:space="preserve">
|
||||||
|
<value>Voir le devis</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|
@ -9,11 +9,14 @@ namespace BookAStar.ViewModels.EstimateAndBilling
|
||||||
using Interfaces;
|
using Interfaces;
|
||||||
using Model;
|
using Model;
|
||||||
using Model.Social;
|
using Model.Social;
|
||||||
|
using Model.Workflow;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
class BookQueryViewModel : ViewModel, IBookQueryData
|
class BookQueryViewModel : ViewModel, IBookQueryData
|
||||||
{
|
{
|
||||||
public BookQueryViewModel()
|
public BookQueryViewModel()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
public BookQueryViewModel(BookQueryData data)
|
public BookQueryViewModel(BookQueryData data)
|
||||||
{
|
{
|
||||||
|
|
@ -44,11 +47,28 @@ namespace BookAStar.ViewModels.EstimateAndBilling
|
||||||
return DataManager.Current.EstimationCache.LocalGet(this.Id);
|
return DataManager.Current.EstimationCache.LocalGet(this.Id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public Estimate Estimate { get
|
||||||
|
{
|
||||||
|
return DataManager.Current.Estimates.FirstOrDefault(
|
||||||
|
e=>e.Query.Id == Id
|
||||||
|
);
|
||||||
|
} }
|
||||||
|
|
||||||
|
|
||||||
|
public bool EstimationDone
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Estimate != null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public string EditEstimateButtonText
|
public string EditEstimateButtonText
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return DraftEstimate != null ? "Editer le devis" : "Faire un devis" ;
|
return DraftEstimate != null ?
|
||||||
|
Strings.EditEstimate : Strings.DoEstimate;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -23,10 +23,9 @@ namespace BookAStar.ViewModels.EstimateAndBilling
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="data"></param>
|
/// <param name="data"></param>
|
||||||
/// <param name="localState"></param>
|
/// <param name="localState"></param>
|
||||||
public EditEstimateViewModel(Estimate data, LocalState localState )
|
public EditEstimateViewModel(Estimate data)
|
||||||
{
|
{
|
||||||
Data = data;
|
Data = data;
|
||||||
State = localState;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Bill_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
|
private void Bill_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
|
||||||
|
|
@ -65,19 +64,20 @@ namespace BookAStar.ViewModels.EstimateAndBilling
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
string newDesc;
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
|
private string description;
|
||||||
public string Description
|
public string Description
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return Data.Description;
|
return description;
|
||||||
}
|
}
|
||||||
|
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
SetProperty<string>(ref newDesc, value, "Description");
|
SetProperty<string>(ref description, value);
|
||||||
Data.Description = newDesc;
|
Data.Description = description;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -87,7 +87,7 @@ namespace BookAStar.ViewModels.EstimateAndBilling
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return Data.Title;
|
return title;
|
||||||
}
|
}
|
||||||
|
|
||||||
set
|
set
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,11 @@ using XLabs.Forms.Mvvm;
|
||||||
|
|
||||||
namespace BookAStar.ViewModels.Signing
|
namespace BookAStar.ViewModels.Signing
|
||||||
{
|
{
|
||||||
class EstimateSignaturePad: ViewModel
|
class DocSigningViewModel: ViewModel
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The doc to sign, in Markdown format
|
||||||
|
/// </summary>
|
||||||
|
public string Document { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue