JobResourcePlanner.xaml 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353
  1. <UserControl x:Class="PRSDesktop.JobResourcePlanner"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  5. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  6. xmlns:local="clr-namespace:PRSDesktop"
  7. xmlns:Syncfusion="http://schemas.syncfusion.com/wpf"
  8. xmlns:dynamicGrid="clr-namespace:InABox.DynamicGrid;assembly=InABox.Wpf"
  9. mc:Ignorable="d"
  10. d:DesignHeight="800" d:DesignWidth="600">
  11. <UserControl.Resources>
  12. <Style x:Key="DateHeaderStyle" TargetType="{x:Type Syncfusion:GridHeaderCellControl}">
  13. <Setter Property="Background" Value="LightSkyBlue"/>
  14. <Setter Property="Foreground" Value="Black"/>
  15. <Setter Property="BorderBrush" Value="Black"/>
  16. <Setter Property="BorderThickness" Value="0.5,0.5,0.5,0.5"/>
  17. <Setter Property="HorizontalContentAlignment" Value="Center"/>
  18. <Setter Property="Padding" Value="5,3"/>
  19. <Setter Property="FontFamily" Value="Segoe UI"/>
  20. <Setter Property="FontSize" Value="14"/>
  21. <Setter Property="FontWeight" Value="Normal"/>
  22. <Setter Property="IsTabStop" Value="False"/>
  23. </Style>
  24. <Style x:Key="ContentHeaderStyle" TargetType="{x:Type Syncfusion:GridHeaderCellControl}">
  25. <Setter Property="Background" Value="LightSkyBlue"/>
  26. <Setter Property="Foreground" Value="Black"/>
  27. <Setter Property="BorderBrush" Value="Black"/>
  28. <Setter Property="BorderThickness" Value="0.5,0.5,0.5,0.5"/>
  29. <Setter Property="HorizontalContentAlignment" Value="Left"/>
  30. <Setter Property="Padding" Value="5,3"/>
  31. <Setter Property="FontFamily" Value="Segoe UI"/>
  32. <Setter Property="FontSize" Value="14"/>
  33. <Setter Property="FontWeight" Value="Normal"/>
  34. <Setter Property="IsTabStop" Value="False"/>
  35. <Setter Property="VerticalContentAlignment" Value="Center"/>
  36. <Setter Property="Template">
  37. <Setter.Value>
  38. <ControlTemplate TargetType="{x:Type Syncfusion:GridHeaderCellControl}">
  39. <Grid>
  40. <Grid.LayoutTransform>
  41. <RotateTransform Angle="270"/>
  42. </Grid.LayoutTransform>
  43. <VisualStateManager.VisualStateGroups>
  44. <VisualStateGroup x:Name="HiddenColumnsResizingStates">
  45. <VisualState x:Name="PreviousColumnHidden">
  46. <Storyboard>
  47. <ThicknessAnimationUsingKeyFrames BeginTime="0" Duration="1.0:0:0" Storyboard.TargetProperty="BorderThickness" Storyboard.TargetName="PART_HeaderCellBorder">
  48. <EasingThicknessKeyFrame KeyTime="0" Value="3,0,1,1"/>
  49. </ThicknessAnimationUsingKeyFrames>
  50. </Storyboard>
  51. </VisualState>
  52. <VisualState x:Name="HiddenState">
  53. <Storyboard>
  54. <ThicknessAnimationUsingKeyFrames BeginTime="0" Duration="1.0:0:0" Storyboard.TargetProperty="BorderThickness" Storyboard.TargetName="PART_HeaderCellBorder">
  55. <EasingThicknessKeyFrame KeyTime="0" Value="3,0,3,1"/>
  56. </ThicknessAnimationUsingKeyFrames>
  57. </Storyboard>
  58. </VisualState>
  59. <VisualState x:Name="NormalState"/>
  60. <VisualState x:Name="LastColumnHidden">
  61. <Storyboard>
  62. <ThicknessAnimationUsingKeyFrames BeginTime="0" Duration="1.0:0:0" Storyboard.TargetProperty="BorderThickness" Storyboard.TargetName="PART_HeaderCellBorder">
  63. <EasingThicknessKeyFrame KeyTime="0" Value="0,0,3,1"/>
  64. </ThicknessAnimationUsingKeyFrames>
  65. </Storyboard>
  66. </VisualState>
  67. </VisualStateGroup>
  68. <VisualStateGroup x:Name="CommonStates">
  69. <VisualState x:Name="MouseOver"/>
  70. <VisualState x:Name="Normal"/>
  71. </VisualStateGroup>
  72. <VisualStateGroup x:Name="BorderStates">
  73. <VisualState x:Name="NormalCell"/>
  74. <VisualState x:Name="FooterColumnCell">
  75. <Storyboard BeginTime="0">
  76. <ThicknessAnimationUsingKeyFrames BeginTime="0" Duration="1.0:0:0" Storyboard.TargetProperty="BorderThickness" Storyboard.TargetName="PART_FooterCellBorder">
  77. <EasingThicknessKeyFrame KeyTime="0" Value="1,0,1,1"/>
  78. </ThicknessAnimationUsingKeyFrames>
  79. </Storyboard>
  80. </VisualState>
  81. <VisualState x:Name="BeforeFooterColumnCell">
  82. <Storyboard BeginTime="0">
  83. <ThicknessAnimationUsingKeyFrames BeginTime="0" Duration="1.0:0:0" Storyboard.TargetProperty="BorderThickness" Storyboard.TargetName="PART_FooterCellBorder">
  84. <EasingThicknessKeyFrame KeyTime="0" Value="0,0,0,1"/>
  85. </ThicknessAnimationUsingKeyFrames>
  86. <ThicknessAnimationUsingKeyFrames BeginTime="0" Duration="1.0:0:0" Storyboard.TargetProperty="BorderThickness" Storyboard.TargetName="PART_HeaderCellBorder">
  87. <EasingThicknessKeyFrame KeyTime="0" Value="0,0,0,1"/>
  88. </ThicknessAnimationUsingKeyFrames>
  89. </Storyboard>
  90. </VisualState>
  91. </VisualStateGroup>
  92. </VisualStateManager.VisualStateGroups>
  93. <Border x:Name="PART_FooterCellBorder" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}"/>
  94. <Border x:Name="PART_HeaderCellBorder" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
  95. <Grid Margin="{TemplateBinding Padding}" SnapsToDevicePixels="True">
  96. <Grid.ColumnDefinitions>
  97. <ColumnDefinition Width="*"/>
  98. <ColumnDefinition Width="Auto"/>
  99. <ColumnDefinition Width="Auto"/>
  100. </Grid.ColumnDefinitions>
  101. <ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" Focusable="False" HorizontalAlignment="Left" VerticalAlignment="Center"/>
  102. <Grid x:Name="PART_SortButtonPresenter" Grid.Column="1" SnapsToDevicePixels="True">
  103. <Grid.ColumnDefinitions>
  104. <ColumnDefinition Width="*">
  105. <ColumnDefinition.MinWidth>
  106. <Binding Mode="OneWay" Path="SortDirection" RelativeSource="{RelativeSource TemplatedParent}">
  107. <Binding.Converter>
  108. <Syncfusion:SortDirectionToWidthConverter/>
  109. </Binding.Converter>
  110. </Binding>
  111. </ColumnDefinition.MinWidth>
  112. </ColumnDefinition>
  113. <ColumnDefinition Width="*"/>
  114. </Grid.ColumnDefinitions>
  115. <TextBlock Grid.Column="1" Foreground="{TemplateBinding Foreground}" FontSize="10" Margin="0,-4,0,0" SnapsToDevicePixels="True" Text="{TemplateBinding SortNumber}" Visibility="{TemplateBinding SortNumberVisibility}" VerticalAlignment="Bottom"/>
  116. </Grid>
  117. <Syncfusion:FilterToggleButton x:Name="PART_FilterToggleButton" Grid.Column="2" HorizontalAlignment="Stretch" SnapsToDevicePixels="True" Visibility="{TemplateBinding FilterIconVisiblity}" VerticalAlignment="Stretch"/>
  118. <Border x:Name="PART_FilterPopUpPresenter"/>
  119. </Grid>
  120. </Border>
  121. </Grid>
  122. </ControlTemplate>
  123. </Setter.Value>
  124. </Setter>
  125. </Style>
  126. <ControlTemplate x:Key="HorizontalSplitter">
  127. <Grid Background="{TemplateBinding Background}" Height="4">
  128. <Grid.ColumnDefinitions>
  129. <ColumnDefinition Width="*" />
  130. <ColumnDefinition Width="Auto" />
  131. <ColumnDefinition Width="*" />
  132. </Grid.ColumnDefinitions>
  133. <Button Grid.Column="0" x:Name="PART_Left" Visibility="Collapsed" />
  134. <StackPanel Grid.Column="1" Margin="0" Orientation="Horizontal" HorizontalAlignment="Center"
  135. VerticalAlignment="Center">
  136. <Ellipse Fill="Silver" HorizontalAlignment="Center" Height="2" Width="2" Opacity="1"
  137. Margin="2,0,0,0" />
  138. <Ellipse Fill="Silver" HorizontalAlignment="Center" Height="2" Width="2" Opacity="1"
  139. Margin="2,0,0,0" />
  140. <Ellipse Fill="Silver" HorizontalAlignment="Center" Height="2" Width="2" Opacity="1"
  141. Margin="2,0,0,0" />
  142. <Ellipse Fill="Silver" HorizontalAlignment="Center" Height="2" Width="2" Opacity="1"
  143. Margin="2,0,0,0" />
  144. <Ellipse Fill="Silver" HorizontalAlignment="Center" Height="2" Width="2" Opacity="1"
  145. Margin="2,0,0,0" />
  146. <Ellipse Fill="Silver" HorizontalAlignment="Center" Height="2" Width="2" Opacity="1"
  147. Margin="2,0,0,0" />
  148. <Ellipse Fill="Silver" HorizontalAlignment="Center" Height="2" Width="2" Opacity="1"
  149. Margin="2,0,0,0" />
  150. </StackPanel>
  151. <Button Grid.Column="2" x:Name="PART_Right" Visibility="Collapsed" />
  152. </Grid>
  153. </ControlTemplate>
  154. </UserControl.Resources>
  155. <Grid>
  156. <Grid.ColumnDefinitions>
  157. <ColumnDefinition Width="*" />
  158. <ColumnDefinition Width="250"/>
  159. </Grid.ColumnDefinitions>
  160. <Grid.RowDefinitions>
  161. <RowDefinition Height="*" />
  162. </Grid.RowDefinitions>
  163. <Syncfusion:SfDataGrid
  164. x:Name="dataGrid"
  165. Grid.Row="0"
  166. Grid.Column="0"
  167. AutoGenerateColumns="True"
  168. AutoGeneratingColumn="DataGrid_AutoGeneratingColumn"
  169. RowHeight="30"
  170. AllowSorting="False"
  171. HeaderRowHeight="200"
  172. SelectionUnit="Cell"
  173. NavigationMode="Cell"
  174. FrozenColumnCount="2"
  175. CanMaintainScrollPosition="True"
  176. SelectionMode="Multiple"
  177. SelectionForegroundBrush="Yellow"
  178. RowSelectionBrush="Red"
  179. SelectionChanging="DataGrid_OnSelectionChanging"
  180. CurrentCellActivating="DataGrid_OnCurrentCellActivating"
  181. PreviewMouseDown="DataGrid_OnPreviewMouseDown"
  182. PreviewMouseUp="DataGrid_OnPreviewMouseUp"
  183. MouseUp="DataGrid_OnMouseUp"
  184. >
  185. </Syncfusion:SfDataGrid>
  186. <dynamicGrid:DynamicTabControl TabStripPlacement="Bottom" Grid.Column="1" Margin="5,0,0,0">
  187. <dynamicGrid:DynamicTabItem Header="Assignments">
  188. <Grid>
  189. <Grid.ColumnDefinitions>
  190. <ColumnDefinition Width="*"/>
  191. </Grid.ColumnDefinitions>
  192. <Grid.RowDefinitions>
  193. <RowDefinition Height="*" x:Name="AvailableEmployeesRow"/>
  194. <RowDefinition Height="Auto"/>
  195. <RowDefinition Height="*"/>
  196. <RowDefinition Height="Auto"/>
  197. </Grid.RowDefinitions>
  198. <local:JobPlannerEmployeeGrid
  199. x:Name="AvailableEmployees"
  200. Action="Assign"
  201. Grid.Row="0"
  202. SizeChanged="AvailableEmployees_OnSizeChanged"
  203. OnAction="AvailableEmployees_OnOnAction"
  204. AfterRefresh="AvailableEmployees_OnAfterRefresh"/>
  205. <Syncfusion:SfGridSplitter
  206. Grid.Row="1" Grid.Column="0"
  207. ResizeBehavior="PreviousAndNext"
  208. Height="4"
  209. HorizontalAlignment="Stretch"
  210. VerticalContentAlignment="Center"
  211. VerticalAlignment="Center"
  212. Background="Transparent"
  213. Template="{StaticResource HorizontalSplitter}">
  214. <Syncfusion:SfGridSplitter.PreviewStyle>
  215. <Style TargetType="Control">
  216. <Setter Property="Background" Value="Gray" />
  217. <Setter Property="Template">
  218. <Setter.Value>
  219. <ControlTemplate TargetType="Control">
  220. <Grid x:Name="Root" Opacity="0.5">
  221. <Rectangle Fill="{TemplateBinding Background}" />
  222. </Grid>
  223. </ControlTemplate>
  224. </Setter.Value>
  225. </Setter>
  226. </Style>
  227. </Syncfusion:SfGridSplitter.PreviewStyle>
  228. </Syncfusion:SfGridSplitter>
  229. <local:JobPlannerEmployeeGrid
  230. x:Name="AssignedEmployees"
  231. Action="Remove"
  232. Grid.Row="2"
  233. OnAction="AssignedEmployees_OnOnAction"
  234. AfterRefresh="AssignedEmployees_OnAfterRefresh"/>
  235. <DockPanel Grid.Row="3" Margin="0,5,0,0">
  236. <Label Content="Activity" DockPanel.Dock="Left" VerticalContentAlignment="Center" />
  237. <ComboBox x:Name="ActivityType" DockPanel.Dock="Left" Margin="5,0,0,0"
  238. SelectionChanged="ActivityType_OnSelectionChanged" VerticalContentAlignment="Center"
  239. SelectedValuePath="ID" DisplayMemberPath="Name">
  240. </ComboBox>
  241. </DockPanel>
  242. </Grid>
  243. </dynamicGrid:DynamicTabItem>
  244. <dynamicGrid:DynamicTabItem Header="Settings">
  245. <Grid>
  246. <Grid.ColumnDefinitions>
  247. <ColumnDefinition Width="Auto"/>
  248. <ColumnDefinition Width="*"/>
  249. </Grid.ColumnDefinitions>
  250. <Grid.RowDefinitions>
  251. <RowDefinition Height="300" x:Name="TeamSelectorRow"/>
  252. <RowDefinition Height="Auto"/>
  253. <RowDefinition Height="*"/>
  254. <RowDefinition Height="Auto"/>
  255. <RowDefinition Height="Auto"/>
  256. <RowDefinition Height="Auto"/>
  257. </Grid.RowDefinitions>
  258. <DockPanel Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2">
  259. <Border BorderBrush="Black" BorderThickness="0.75,0.75,0.75,0" DockPanel.Dock="Top" Background="Gainsboro" Padding="0">
  260. <Label Content="Employees" HorizontalAlignment="Center" Margin="-2"/>
  261. </Border>
  262. <local:TeamSelector x:Name="TeamSelector" DockPanel.Dock="Top" SettingsChanged="TeamSelector_OnSettingsChanged" SelectionChanged="TeamSelector_OnSelectionChanged"/>
  263. </DockPanel>
  264. <Syncfusion:SfGridSplitter
  265. Grid.Row="1"
  266. Grid.Column="0"
  267. Grid.ColumnSpan="2"
  268. ResizeBehavior="PreviousAndNext"
  269. Height="4"
  270. HorizontalAlignment="Stretch"
  271. VerticalContentAlignment="Center"
  272. VerticalAlignment="Center"
  273. Background="Transparent"
  274. Template="{StaticResource HorizontalSplitter}">
  275. <Syncfusion:SfGridSplitter.PreviewStyle>
  276. <Style TargetType="Control">
  277. <Setter Property="Background" Value="Gray" />
  278. <Setter Property="Template">
  279. <Setter.Value>
  280. <ControlTemplate TargetType="Control">
  281. <Grid x:Name="Root" Opacity="0.5">
  282. <Rectangle Fill="{TemplateBinding Background}" />
  283. </Grid>
  284. </ControlTemplate>
  285. </Setter.Value>
  286. </Setter>
  287. </Style>
  288. </Syncfusion:SfGridSplitter.PreviewStyle>
  289. </Syncfusion:SfGridSplitter>
  290. <local:JobSelector
  291. x:Name="JobSelector"
  292. Grid.Row="2"
  293. Grid.Column="0"
  294. Grid.ColumnSpan="2"
  295. SettingsChanged="JobSelector_OnSettingsChanged"
  296. SelectionChanged="JobSelector_OnSelectionChanged"
  297. SizeChanged="JobSelector_OnSizeChanged"/>
  298. <Label Content="Window" Grid.Row="3" VerticalContentAlignment="Center" Margin="0,5,0,0" Height="25" />
  299. <ComboBox x:Name="ViewWindow" Grid.Row="3" Grid.Column="1" Margin="5,5,0,0"
  300. SelectionChanged="ViewWindow_OnSelectionChanged" VerticalContentAlignment="Center"
  301. SelectedValuePath="Key" DisplayMemberPath="Value">
  302. </ComboBox>
  303. <Label Content="Hrs / Day" Grid.Row="4" VerticalContentAlignment="Center" Margin="0,5,0,0" Height="25" />
  304. <DockPanel Grid.Row="4" Grid.Column="1" Margin="5,5,0,0">
  305. <Button DockPanel.Dock="Left" Padding="2" BorderThickness="0.75,0.75,0,0.75" Background="White"
  306. BorderBrush="Gray" Click="HoursSelector_Down_Click">
  307. <Image Source="pack://application:,,,/Resources/leftarrow.png" Height="20" Width="20" />
  308. </Button>
  309. <Button DockPanel.Dock="Right" Padding="2" BorderThickness="0,0.75,0.75,0.75" Background="White"
  310. BorderBrush="Gray" Click="HoursSelector_Up_Click">
  311. <Image Source="pack://application:,,,/Resources/rightarrow.png" Height="20" Width="20" />
  312. </Button>
  313. <TextBox x:Name="HoursSelector" IsReadOnly="True" DockPanel.Dock="Left" BorderThickness="0,0.75,0,0.75"
  314. BorderBrush="Gray" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" />
  315. </DockPanel>
  316. <Label Content="Leave" Margin="0,5,0,0" VerticalContentAlignment="Center" Grid.Row="5"/>
  317. <ComboBox x:Name="LeaveType" Margin="5,5,0,0" SelectionChanged="LeaveType_OnSelectionChanged" VerticalContentAlignment="Center" Grid.Row="5" Grid.Column="1">
  318. <ComboBoxItem Content="Approved Only" />
  319. <ComboBoxItem Content="Show All" />
  320. </ComboBox>
  321. </Grid>
  322. </dynamicGrid:DynamicTabItem>
  323. </dynamicGrid:DynamicTabControl>
  324. </Grid>
  325. </UserControl>