StockLocationSelectionPage.xaml 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <mobile:MobilePage xmlns:local="clr-namespace:PRS.Mobile" 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:ui="clr-namespace:XF.Material.Forms.UI;assembly=XF.Material"
  7. x:Class="PRS.Mobile.StockLocationSelectionPage"
  8. Title="Select Location"
  9. x:DataType="local:StockLocationSelectionViewModel"
  10. >
  11. <mobile:MobilePage.BindingContext>
  12. <local:StockLocationSelectionViewModel x:Name="_viewmodel" />
  13. </mobile:MobilePage.BindingContext>
  14. <mobile:MobilePage.Resources>
  15. <mobile:StringWithDefaultValueConverter x:Key="WarehouseConverter" Default="(All Warehouses)" />
  16. <mobile:StringWithDefaultValueConverter x:Key="AreaConverter" Default="(All Areas)" />
  17. <mobile:BooleanToGridLengthConverter x:Key="MultiSelectColumnWidth" TrueValue="*" FalseValue="0.0" />
  18. <mobile:BoolToIntegerConverter x:Key="AddColumnConverter" TrueValue="1" FalseValue="0"/>
  19. <mobile:StringWithDefaultValueConverter x:Key="JobNumberConverter" Default="--"/>
  20. <mobile:BooleanToColorConverter x:Key="CurrentStockTakesConverter" TrueColor="Yellow" FalseColor="{StaticResource Theme.Background}" />
  21. <local:StockLocationLastStockTakeConverter x:Key="LastStockTakeConverter" x:Name="_lastStockTakeConverter" />
  22. <local:StockLocationStockTakeStatusConverter x:Key="StockTakeStatusConverter" x:Name="_stockTakeStatusConverter" />
  23. <local:StockLocationStockTakeColorConverter x:Key="StockTakeColorConverter" x:Name="_stockTakeColorConverter" />
  24. <mobile:BooleanToBooleanConverter x:Key="NotTrue" Invert="True" />
  25. <mobile:BooleanMatcher x:Key="MatchAll" Type="All" Value="True" />
  26. <DataTemplate x:Key="LocationTemplate" x:DataType="local:StockLocationShell">
  27. <ViewCell>
  28. <mobile:MobileCard
  29. IsClickable="True"
  30. Clicked="Location_Selected"
  31. BackgroundColor="{Binding ., Converter={StaticResource StockTakeColorConverter}}"
  32. HeightRequest="40"
  33. Margin="0,0,0,5"
  34. Padding="4">
  35. <mobile:MobileCard.Content>
  36. <Grid RowSpacing="5">
  37. <Grid.RowDefinitions>
  38. <RowDefinition Height="*"/>
  39. <RowDefinition Height="Auto" />
  40. </Grid.RowDefinitions>
  41. <Grid.ColumnDefinitions>
  42. <ColumnDefinition Width="Auto"/>
  43. <ColumnDefinition Width="100"/>
  44. <ColumnDefinition Width="*" />
  45. <ColumnDefinition Width="100"/>
  46. </Grid.ColumnDefinitions>
  47. <Image
  48. Grid.Row="0"
  49. Grid.RowSpan="2"
  50. Grid.Column="0"
  51. Source="notification"
  52. Margin="0,0,5,0"
  53. Aspect="AspectFit"
  54. VerticalOptions="Center"
  55. HorizontalOptions="Center"
  56. IsVisible="{Binding ., Converter={StaticResource StockTakeStatusConverter}}"/>
  57. <views:DockLayout
  58. Grid.Row="0"
  59. Grid.Column="1"
  60. Grid.ColumnSpan="3"
  61. HorizontalOptions="Fill">
  62. <Label
  63. views:DockLayout.Dock="Left"
  64. Text="{Binding Code}"
  65. FontSize="Micro"
  66. TextColor="{StaticResource Theme.OnBackground}"
  67. VerticalTextAlignment="Center"/>
  68. <Label
  69. views:DockLayout.Dock="Left"
  70. Text=" : "
  71. FontSize="Micro"
  72. TextColor="{StaticResource Theme.OnBackground}"
  73. VerticalTextAlignment="Center"/>
  74. <Label
  75. views:DockLayout.Dock="Left"
  76. Text="{Binding Description}"
  77. FontSize="Micro"
  78. TextColor="{StaticResource Theme.OnBackground}"
  79. VerticalTextAlignment="Center"/>
  80. <Label
  81. views:DockLayout.Dock="Left"
  82. Text="{Binding ., Converter={StaticResource LastStockTakeConverter}}"
  83. FontSize="Micro"
  84. TextColor="{StaticResource Theme.OnBackground}"
  85. HorizontalTextAlignment="End"
  86. VerticalTextAlignment="Center"
  87. />
  88. </views:DockLayout>
  89. <Label
  90. Grid.Row="1"
  91. Grid.Column="1"
  92. Text="{Binding JobNumber, Converter={StaticResource JobNumberConverter}, StringFormat='Job : {0}'}"
  93. FontSize="Micro"
  94. TextColor="{StaticResource Theme.OnBackground}"
  95. HorizontalTextAlignment="Start"
  96. VerticalTextAlignment="Center"
  97. />
  98. <views:DockLayout
  99. Grid.Row="1"
  100. Grid.Column="2"
  101. HorizontalOptions="Center">
  102. <Label
  103. views:DockLayout.Dock="Right"
  104. Text="{Binding AreaCode}"
  105. FontSize="Micro"
  106. TextColor="{StaticResource Theme.OnBackground}"
  107. VerticalTextAlignment="Center"/>
  108. <Label
  109. views:DockLayout.Dock="Right"
  110. Text=" / "
  111. FontSize="Micro"
  112. TextColor="{StaticResource Theme.OnBackground}"
  113. VerticalTextAlignment="Center"/>
  114. <Label
  115. views:DockLayout.Dock="Right"
  116. Text="{Binding WarehouseCode}"
  117. FontSize="Micro"
  118. TextColor="{StaticResource Theme.OnBackground}"
  119. VerticalTextAlignment="Center"/>
  120. </views:DockLayout>
  121. <Label
  122. Grid.Row="1"
  123. Grid.Column="3"
  124. Text="{Binding Holdings, StringFormat='Items : {0}'}"
  125. FontSize="Micro"
  126. TextColor="{StaticResource Theme.OnBackground}"
  127. HorizontalTextAlignment="End"
  128. VerticalTextAlignment="Center"/>
  129. </Grid>
  130. </mobile:MobileCard.Content>
  131. </mobile:MobileCard>
  132. </ViewCell>
  133. </DataTemplate>
  134. </mobile:MobilePage.Resources>
  135. <mobile:MobilePage.PrimaryMenu>
  136. <mobile:MobileMenuButton x:Name="OK" Image="tick" Clicked="OK_OnClicked" IsVisible="{Binding MultiSelect}"/>
  137. <mobile:MobileMenuButton Image="plus" Clicked="AddLocation_Clicked">
  138. <mobile:MobileMenuButton.IsVisible>
  139. <MultiBinding Converter="{StaticResource MatchAll}">
  140. <Binding Path="MultiSelect" Converter="{StaticResource NotTrue}"/>
  141. <Binding Path="AddVisible" />
  142. </MultiBinding>
  143. </mobile:MobileMenuButton.IsVisible>
  144. </mobile:MobileMenuButton>
  145. </mobile:MobilePage.PrimaryMenu>
  146. <mobile:MobilePage.PageContent>
  147. <views:DockLayout>
  148. <mobile:MobileTabStrip
  149. x:Name="_tabStrip"
  150. views:DockLayout.Dock="Bottom"
  151. SelectionChanged="_tabStrip_OnSelectionChanged"
  152. Margin="5,0,5,0">
  153. <mobile:MobileTabStrip.Items>
  154. <mobile:MobileTabStripItem Text="Favourites" />
  155. <mobile:MobileTabStripItem Text="All" />
  156. </mobile:MobileTabStrip.Items>
  157. </mobile:MobileTabStrip>
  158. <Grid
  159. Padding="5"
  160. RowSpacing="5"
  161. ColumnSpacing="0"
  162. views:DockLayout.Dock="Top">
  163. <Grid.ColumnDefinitions>
  164. <ColumnDefinition Width="*"/>
  165. <ColumnDefinition Width="{Binding MultiSelect, Converter={StaticResource MultiSelectColumnWidth}}"/>
  166. </Grid.ColumnDefinitions>
  167. <Grid.RowDefinitions>
  168. <RowDefinition Height="*"/>
  169. </Grid.RowDefinitions>
  170. <mobile:MobilePageStack
  171. x:Name="_pageStack"
  172. Grid.Row="0"
  173. Grid.Column="0">
  174. <mobile:MobilePageStack.Items>
  175. <mobile:MobilePageStackItem x:Name="Favourites">
  176. <mobile:MobilePageStackItem.Content>
  177. <mobile:MobileListView
  178. x:Name="_favourites"
  179. views:DockLayout.Dock="Top"
  180. Margin="0,5,0,0"
  181. ItemsSource="{Binding Favourites}"
  182. PullToRefresh="{Binding PullToRefresh}"
  183. ShowRecordCount="{Binding PullToRefresh}"
  184. LastUpdated="{Binding LastUpdated}"
  185. ItemTemplate="{StaticResource LocationTemplate}"
  186. RefreshRequested="MobileListView_OnRefreshRequested">
  187. </mobile:MobileListView>
  188. </mobile:MobilePageStackItem.Content>
  189. </mobile:MobilePageStackItem>
  190. <mobile:MobilePageStackItem x:Name="All">
  191. <mobile:MobilePageStackItem.Content>
  192. <views:DockLayout>
  193. <mobile:MobileButton
  194. x:Name="Warehouse"
  195. views:DockLayout.Dock="Top"
  196. Text="{Binding Warehouse.Description, Converter={StaticResource WarehouseConverter}}"
  197. Clicked="Warehouse_Clicked"/>
  198. <mobile:MobileButton
  199. x:Name="Area"
  200. views:DockLayout.Dock="Top"
  201. Margin="0,5,0,0"
  202. Text="{Binding Area.Description, Converter={StaticResource AreaConverter}}"
  203. Clicked="Area_Clicked"/>
  204. <Grid
  205. views:DockLayout.Dock="Top"
  206. Margin="0,5,0,0"
  207. HeightRequest="{Binding Source={x:Reference Warehouse}, Path=Height}"
  208. ColumnSpacing="0">
  209. <Grid.ColumnDefinitions>
  210. <ColumnDefinition Width="*"/>
  211. <ColumnDefinition Width="Auto"/>
  212. </Grid.ColumnDefinitions>
  213. <mobile:MobileCard
  214. Grid.Column="0"
  215. BackgroundColor="{Binding Source={x:Reference Search}, Path=BackgroundColor}"
  216. Padding="10,1">
  217. <mobile:MobileEntry
  218. x:Name="Search"
  219. TextChanged="Search_OnTextChanged"
  220. Placeholder="Search..." />
  221. </mobile:MobileCard>
  222. <mobile:MobileCard
  223. Grid.Column="1"
  224. Margin="5,0,0,0"
  225. IsVisible="{Binding DisplayStockTakeInfo}"
  226. BackgroundColor="{Binding CurrentStockTakesOnly, Converter={StaticResource CurrentStockTakesConverter}}"
  227. IsClickable="True"
  228. Clicked="CurrentStockTakes_Clicked"
  229. WidthRequest="{Binding Source={x:Reference Warehouse}, Path=Height}">
  230. <Image
  231. Source="notification"
  232. Margin="2"
  233. Aspect="AspectFit"
  234. VerticalOptions="Center"
  235. HorizontalOptions="Center"/>
  236. </mobile:MobileCard>
  237. </Grid>
  238. <mobile:MobileListView
  239. x:Name="_locations"
  240. views:DockLayout.Dock="Top"
  241. Margin="0,5,0,0"
  242. ItemsSource="{Binding Locations}"
  243. ItemTemplate="{StaticResource LocationTemplate}"
  244. PullToRefresh="{Binding PullToRefresh, Mode=TwoWay}"
  245. ShowRecordCount="{Binding PullToRefresh, Mode=TwoWay}"
  246. LastUpdated="{Binding LastUpdated, Mode=TwoWay}"
  247. RefreshRequested="MobileListView_OnRefreshRequested">
  248. </mobile:MobileListView>
  249. </views:DockLayout>
  250. </mobile:MobilePageStackItem.Content>
  251. </mobile:MobilePageStackItem>
  252. </mobile:MobilePageStack.Items>
  253. </mobile:MobilePageStack>
  254. <mobile:MobileMenuButton
  255. Grid.Row="0"
  256. Grid.Column="{Binding MultiSelect, Converter={StaticResource AddColumnConverter}}"
  257. Image="plus"
  258. HeightRequest="40"
  259. WidthRequest="40"
  260. Margin="0,0,10,10"
  261. VerticalOptions="End"
  262. HorizontalOptions="End"
  263. Clicked="AddLocation_Clicked">
  264. <mobile:MobileMenuButton.IsVisible>
  265. <MultiBinding Converter="{StaticResource MatchAll}">
  266. <Binding Path="MultiSelect"/>
  267. <Binding Path="AddVisible" />
  268. </MultiBinding>
  269. </mobile:MobileMenuButton.IsVisible>
  270. </mobile:MobileMenuButton>
  271. <views:DockLayout
  272. Grid.Row="0"
  273. Grid.Column="1"
  274. IsVisible="{Binding MultiSelect}"
  275. Margin="5,0,0,0">
  276. <mobile:MobileCard
  277. views:DockLayout.Dock="Top"
  278. BackgroundColor="{StaticResource Theme.Background}"
  279. HeightRequest="30">
  280. <Label
  281. Text="Selected"
  282. TextColor="{StaticResource Theme.OnBackground}"
  283. FontSize="Small"
  284. FontAttributes="Bold"
  285. HorizontalTextAlignment="Center"
  286. VerticalTextAlignment="Center" />
  287. </mobile:MobileCard>
  288. <mobile:MobileListView
  289. views:DockLayout.Dock="Top"
  290. Margin="0,5,0,5"
  291. ItemsSource="{Binding Selected}"
  292. ItemTemplate="{StaticResource LocationTemplate}"
  293. />
  294. </views:DockLayout>
  295. </Grid>
  296. </views:DockLayout>
  297. </mobile:MobilePage.PageContent>
  298. </mobile:MobilePage>