QuickPickModule.xaml 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mobile:MobilePage xmlns="http://xamarin.com/schemas/2014/forms"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
  4. xmlns:mobile="clr-namespace:InABox.Mobile;assembly=InABox.Mobile.Shared"
  5. xmlns:views="http://xamarin.com/schemas/2020/toolkit"
  6. xmlns:local="clr-namespace:PRS.Mobile;assembly=PRS.Mobile"
  7. xmlns:forms="clr-namespace:ZXing.Net.Mobile.Forms;assembly=ZXing.Net.Mobile.Forms"
  8. x:Class="PRS.Mobile.QuickPickModule">
  9. <mobile:MobilePage.BindingContext>
  10. <local:QuickPickViewModel x:Name="_viewModel"/>
  11. </mobile:MobilePage.BindingContext>
  12. <mobile:MobilePage.Resources>
  13. <mobile:ByteArrayToImageSourceConverter x:Key="ByteArrayToImageSourceConverter" BlankIfEmpty="False"/>
  14. <mobile:StringWithDefaultValueConverter x:Key="DefaultToGeneralStock" Default="(General Stock)" />
  15. <mobile:DoubleCalculator x:Key="ScannerHeightCalculator" Type="Product" Constants="0.65"/>
  16. <mobile:IntToBooleanConverter x:Key="ItemsPageVisible" Value="0" Result="True" />
  17. <mobile:IntToBooleanConverter x:Key="SummaryPageVisible" Value="1" Result="True" />
  18. <mobile:BooleanMatcher x:Key="MatchAll" Type="All" Value="True" />
  19. <mobile:StringWithDefaultValueConverter x:Key="JobNameConverter" Default="(Select Job)" />
  20. <local:HoldingUnitCalculator x:Key="UnitCalculator" x:Name="UnitCalculator" />
  21. <!-- <mobile:GuidToBooleanConverter x:Key="GuidToBooleanConverter" EmptyValue="False"></mobile:GuidToBooleanConverter> -->
  22. <DataTemplate x:Key="_locationTemplate" x:Name="_locationTemplate" x:DataType="local:StockHoldingShell">
  23. <ViewCell>
  24. <mobile:MobileCard
  25. HeightRequest="50"
  26. IsClickable="True"
  27. Clicked="SelectFromHolding_Click"
  28. Margin="0,0,0,5"
  29. Padding="5,0,0,0"
  30. BackgroundColor="{StaticResource Theme.Surface}">
  31. <Grid RowSpacing="0" ColumnSpacing="0">
  32. <Grid.ColumnDefinitions>
  33. <ColumnDefinition Width="50"/>
  34. <ColumnDefinition Width="5"/>
  35. <ColumnDefinition Width="*"/>
  36. <ColumnDefinition Width="1"/>
  37. <ColumnDefinition Width="50"/>
  38. </Grid.ColumnDefinitions>
  39. <Grid.RowDefinitions>
  40. <RowDefinition Height="20"/>
  41. <RowDefinition Height="15"/>
  42. <RowDefinition Height="15"/>
  43. </Grid.RowDefinitions>
  44. <Image
  45. Grid.Row="0"
  46. Grid.Column="0"
  47. Grid.RowSpan="3"
  48. Margin="2"
  49. Source="{Binding Image, Converter={StaticResource ByteArrayToImageSourceConverter}}"/>
  50. <BoxView Grid.Row="0" Grid.RowSpan="3" Grid.Column="1" BackgroundColor="Gray" WidthRequest="1" HorizontalOptions="Start"/>
  51. <views:DockLayout
  52. Grid.Row="0"
  53. Grid.Column="2">
  54. <Label
  55. views:DockLayout.Dock="Right"
  56. FontSize="{StaticResource Theme.Text.Small.Size}"
  57. TextColor="{StaticResource Theme.OnSurface}"
  58. Margin="5,0,5,0"
  59. VerticalTextAlignment="Center"
  60. Text="{Binding LocationCode}"/>
  61. <Label
  62. views:DockLayout.Dock="Left"
  63. FontSize="{StaticResource Theme.Text.Small.Size}"
  64. TextColor="{StaticResource Theme.OnSurface}"
  65. VerticalTextAlignment="Center"
  66. Text="{Binding ProductName}"/>
  67. </views:DockLayout>
  68. <views:DockLayout
  69. Grid.Row="1"
  70. Grid.Column="2">
  71. <Label
  72. views:DockLayout.Dock="Right"
  73. FontSize="{StaticResource Theme.Text.Micro.Size}"
  74. TextColor="{StaticResource Theme.OnSurface}"
  75. Margin="5,0,5,0"
  76. VerticalTextAlignment="Center"
  77. Text="{Binding StyleDescription}"/>
  78. <Label
  79. views:DockLayout.Dock="Left"
  80. FontSize="{StaticResource Theme.Text.Micro.Size}"
  81. TextColor="{StaticResource Theme.OnSurface}"
  82. VerticalTextAlignment="Center"
  83. Text="{Binding DimensionsUnitSize}"/>
  84. </views:DockLayout>
  85. <Label
  86. Grid.Row="2"
  87. Grid.Column="2"
  88. FontSize="{StaticResource Theme.Text.Micro.Size}"
  89. TextColor="{StaticResource Theme.OnSurface}"
  90. VerticalTextAlignment="Center"
  91. Text="{Binding JobDisplay, Converter={StaticResource DefaultToGeneralStock}}"/>
  92. <BoxView Grid.Row="0" Grid.RowSpan="3" Grid.Column="3" BackgroundColor="Gray"/>
  93. <Label
  94. Grid.Row="0"
  95. Grid.RowSpan="3"
  96. Grid.Column="4"
  97. FontSize="{StaticResource Theme.Text.Header.Size}"
  98. TextColor="{StaticResource Theme.OnSurface}"
  99. VerticalTextAlignment="Center"
  100. HorizontalTextAlignment="Center"
  101. Text="{Binding ., Converter={StaticResource UnitCalculator}}"/>
  102. </Grid>
  103. </mobile:MobileCard>
  104. </ViewCell>
  105. </DataTemplate>
  106. <DataTemplate
  107. x:Key="_requisitionItemTemplate"
  108. x:DataType="local:RequisitionItemShell">
  109. <ViewCell>
  110. <mobile:MobileCard
  111. IsClickable="false"
  112. Margin="0,0,0,5"
  113. Padding="0"
  114. Background="LightYellow">
  115. <Grid ColumnSpacing="5">
  116. <Grid.ColumnDefinitions>
  117. <ColumnDefinition Width="40"/>
  118. <ColumnDefinition Width="1"/>
  119. <ColumnDefinition Width="50"/>
  120. <ColumnDefinition Width="1"/>
  121. <ColumnDefinition Width="*"/>
  122. <ColumnDefinition Width="1"/>
  123. <ColumnDefinition Width="60"/>
  124. </Grid.ColumnDefinitions>
  125. <mobile:MobileMenuButton
  126. Grid.Column="0"
  127. Image="trash"
  128. Clicked="DeleteRequisitionItem" />
  129. <BoxView Grid.Column="1" BackgroundColor="Gray"/>
  130. <Image
  131. Grid.Column="2"
  132. Source="{Binding Image, Converter={StaticResource ByteArrayToImageSourceConverter}}"
  133. HorizontalOptions="Center"
  134. VerticalOptions="Center"
  135. Margin="5,0,0,0"/>
  136. <BoxView Grid.Column="3" BackgroundColor="Gray"/>
  137. <Label
  138. Grid.Column="4"
  139. FontSize="Small"
  140. TextColor="Black"
  141. Text="{Binding Description}"
  142. VerticalTextAlignment="Center"
  143. />
  144. <BoxView Grid.Column="5" BackgroundColor="Gray"/>
  145. <Label
  146. Grid.Column="6"
  147. HorizontalOptions="Center"
  148. VerticalOptions="Center"
  149. Margin="0,0,5,0"
  150. FontSize="Small"
  151. TextColor="Black"
  152. Text="{Binding Quantity}"
  153. />
  154. </Grid>
  155. </mobile:MobileCard>
  156. </ViewCell>
  157. </DataTemplate>
  158. </mobile:MobilePage.Resources>
  159. <mobile:MobilePage.PrimaryMenu>
  160. <mobile:MobileMenuButton
  161. Image="plus" Clicked="AddHolding_Clicked">
  162. <mobile:MobileMenuButton.IsVisible>
  163. <MultiBinding Converter="{StaticResource MatchAll}">
  164. <Binding Path="IsLocation" />
  165. <Binding Source="{x:Reference _tabStrip}" Path="SelectedIndex" Converter="{StaticResource ItemsPageVisible}" />
  166. </MultiBinding>
  167. </mobile:MobileMenuButton.IsVisible>
  168. </mobile:MobileMenuButton>
  169. <mobile:MobileMenuButton Image="save" Clicked="SaveList_Click">
  170. <mobile:MobileMenuButton.IsVisible>
  171. <MultiBinding Converter="{StaticResource MatchAll}">
  172. <Binding Path="HasItems" />
  173. <Binding Source="{x:Reference _tabStrip}" Path="SelectedIndex" Converter="{StaticResource SummaryPageVisible}" />
  174. </MultiBinding>
  175. </mobile:MobileMenuButton.IsVisible>
  176. </mobile:MobileMenuButton>
  177. </mobile:MobilePage.PrimaryMenu>
  178. <mobile:MobilePage.PageContent>
  179. <views:DockLayout Margin="5">
  180. <mobile:MobileTabStrip
  181. views:DockLayout.Dock="Bottom"
  182. HeightRequest="50"
  183. x:Name="_tabStrip"
  184. SelectedIndex="0"
  185. Margin="0,5,0,0"
  186. SelectionChanged="_tabStrip_OnSelectionChanged">
  187. <mobile:MobileTabStrip.Items>
  188. <mobile:MobileTabStripItem Text="Location" />
  189. <mobile:MobileTabStripItem Text="Summary" />
  190. </mobile:MobileTabStrip.Items>
  191. </mobile:MobileTabStrip>
  192. <mobile:MobilePageStack
  193. views:DockLayout.Dock="Top"
  194. SelectedIndex="{Binding Source={x:Reference _tabStrip}, Path=SelectedIndex}">
  195. <mobile:MobilePageStack.Items>
  196. <mobile:MobilePageStackItem>
  197. <mobile:MobilePageStackItem.Content>
  198. <views:DockLayout>
  199. <mobile:MobileCard
  200. Padding="0"
  201. IsClippedToBounds="True"
  202. views:DockLayout.Dock="Top">
  203. <mobile:MobileCard.HeightRequest>
  204. <MultiBinding Converter="{StaticResource ScannerHeightCalculator}">
  205. <Binding Source="{RelativeSource AncestorType={x:Type local:QuickPickModule}}" Path="Width" />
  206. </MultiBinding>
  207. </mobile:MobileCard.HeightRequest>
  208. <Grid x:Name="scannerGrid">
  209. <Grid.RowDefinitions>
  210. <RowDefinition Height="*"/>
  211. <RowDefinition Height="21"/>
  212. <RowDefinition Height="4*"/>
  213. <RowDefinition Height="21"/>
  214. <RowDefinition Height="*"/>
  215. </Grid.RowDefinitions>
  216. <Grid.ColumnDefinitions>
  217. <ColumnDefinition Width="*"/>
  218. <ColumnDefinition Width="21"/>
  219. <ColumnDefinition Width="4*"/>
  220. <ColumnDefinition Width="21"/>
  221. <ColumnDefinition Width="*"/>
  222. </Grid.ColumnDefinitions>
  223. <forms:ZXingScannerView
  224. Grid.Row="0"
  225. Grid.Column="0"
  226. Grid.RowSpan="5"
  227. Grid.ColumnSpan="5"
  228. x:Name="_scanView"
  229. Background="Gray"
  230. OnScanResult="ScanView_OnScanResult"/>
  231. <Polyline Points="20,00 00,00 00,20" Grid.Row="1" Grid.Column="1" x:Name="topleft" Stroke="Red" StrokeThickness="2"/>
  232. <Polyline Points="00,00 20,00 20,20" Grid.Row="1" Grid.Column="3" x:Name="topright" Stroke="Red" StrokeThickness="2"/>
  233. <Polyline Points="20,00 20,20 00,20" Grid.Row="3" Grid.Column="3" x:Name="bottomright" Stroke="Red" StrokeThickness="2"/>
  234. <Polyline Points="20,20 00,20 00,00" Grid.Row="3" Grid.Column="1" x:Name="bottomleft" Stroke="Red" StrokeThickness="2"/>
  235. <Label
  236. Text="{Binding Title}"
  237. TextColor="White"
  238. BackgroundColor="Transparent"
  239. Grid.Row="4"
  240. Grid.Column="0"
  241. Grid.ColumnSpan="5"
  242. HorizontalTextAlignment="Center"
  243. VerticalTextAlignment="Center"/>
  244. </Grid>
  245. </mobile:MobileCard>
  246. <mobile:MobileListView
  247. views:DockLayout.Dock="Top"
  248. x:Name="_holdings"
  249. PullToRefresh="False"
  250. ShowRecordCount="False"
  251. Margin="0,5,0,0"
  252. ItemsSource="{Binding Holdings.Items}"
  253. ItemTemplate="{StaticResource _locationTemplate}"/>
  254. </views:DockLayout>
  255. </mobile:MobilePageStackItem.Content>
  256. </mobile:MobilePageStackItem>
  257. <mobile:MobilePageStackItem>
  258. <mobile:MobilePageStackItem.Content>
  259. <views:DockLayout>
  260. <mobile:MobileButton
  261. views:DockLayout.Dock="Top"
  262. x:Name="Job"
  263. Text="{Binding Job.DisplayName, Converter={StaticResource JobNameConverter}}"
  264. Clicked="SelectJob_Clicked"/>
  265. <mobile:MobileListView
  266. views:DockLayout.Dock="Top"
  267. x:Name="_requiItems"
  268. PullToRefresh="False"
  269. ShowRecordCount="False"
  270. Margin="0,5,0,0"
  271. ItemsSource="{Binding RequisitionItems.Items}"
  272. ItemTemplate="{StaticResource _requisitionItemTemplate}"/>
  273. </views:DockLayout>
  274. </mobile:MobilePageStackItem.Content>
  275. </mobile:MobilePageStackItem>
  276. </mobile:MobilePageStack.Items>
  277. </mobile:MobilePageStack>
  278. </views:DockLayout>
  279. </mobile:MobilePage.PageContent>
  280. </mobile:MobilePage>