JobResourcePlanner.xaml 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328
  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 x:Name="AvailableEmployees" Action="Assign" Grid.Row="0" SizeChanged="AvailableEmployees_OnSizeChanged" OnAction="AvailableEmployees_OnOnAction" />
  199. <Syncfusion:SfGridSplitter Grid.Row="1" Grid.Column="0"
  200. ResizeBehavior="PreviousAndNext" Height="4" HorizontalAlignment="Stretch" VerticalContentAlignment="Center" VerticalAlignment="Center"
  201. Background="Transparent" Template="{StaticResource HorizontalSplitter}">
  202. <Syncfusion:SfGridSplitter.PreviewStyle>
  203. <Style TargetType="Control">
  204. <Setter Property="Background" Value="Gray" />
  205. <Setter Property="Template">
  206. <Setter.Value>
  207. <ControlTemplate TargetType="Control">
  208. <Grid x:Name="Root" Opacity="0.5">
  209. <Rectangle Fill="{TemplateBinding Background}" />
  210. </Grid>
  211. </ControlTemplate>
  212. </Setter.Value>
  213. </Setter>
  214. </Style>
  215. </Syncfusion:SfGridSplitter.PreviewStyle>
  216. </Syncfusion:SfGridSplitter>
  217. <local:JobPlannerEmployeeGrid x:Name="AssignedEmployees" Action="Remove" Grid.Row="2" OnAction="AssignedEmployees_OnOnAction" />
  218. <DockPanel Grid.Row="3" Margin="0,5,0,0">
  219. <Label Content="Activity" DockPanel.Dock="Left" VerticalContentAlignment="Center" />
  220. <ComboBox x:Name="ActivityType" DockPanel.Dock="Left" Margin="5,0,0,0"
  221. SelectionChanged="ActivityType_OnSelectionChanged" VerticalContentAlignment="Center"
  222. SelectedValuePath="ID" DisplayMemberPath="Name">
  223. </ComboBox>
  224. </DockPanel>
  225. </Grid>
  226. </dynamicGrid:DynamicTabItem>
  227. <dynamicGrid:DynamicTabItem Header="Settings">
  228. <Grid>
  229. <Grid.ColumnDefinitions>
  230. <ColumnDefinition Width="Auto"/>
  231. <ColumnDefinition Width="*"/>
  232. </Grid.ColumnDefinitions>
  233. <Grid.RowDefinitions>
  234. <RowDefinition Height="300" x:Name="TeamSelectorRow"/>
  235. <RowDefinition Height="Auto"/>
  236. <RowDefinition Height="*"/>
  237. <RowDefinition Height="Auto"/>
  238. <RowDefinition Height="Auto"/>
  239. <RowDefinition Height="Auto"/>
  240. </Grid.RowDefinitions>
  241. <DockPanel Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2">
  242. <Border BorderBrush="Black" BorderThickness="0.75,0.75,0.75,0" DockPanel.Dock="Top" Background="Gainsboro" Padding="0">
  243. <Label Content="Employees" HorizontalAlignment="Center" Margin="-2"/>
  244. </Border>
  245. <local:TeamSelector x:Name="TeamSelector" DockPanel.Dock="Top" SettingsChanged="TeamSelector_OnSettingsChanged" SelectionChanged="TeamSelector_OnSelectionChanged"/>
  246. </DockPanel>
  247. <Syncfusion:SfGridSplitter Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2"
  248. ResizeBehavior="PreviousAndNext" Height="4" HorizontalAlignment="Stretch" VerticalContentAlignment="Center" VerticalAlignment="Center"
  249. Background="Transparent" Template="{StaticResource HorizontalSplitter}">
  250. <Syncfusion:SfGridSplitter.PreviewStyle>
  251. <Style TargetType="Control">
  252. <Setter Property="Background" Value="Gray" />
  253. <Setter Property="Template">
  254. <Setter.Value>
  255. <ControlTemplate TargetType="Control">
  256. <Grid x:Name="Root" Opacity="0.5">
  257. <Rectangle Fill="{TemplateBinding Background}" />
  258. </Grid>
  259. </ControlTemplate>
  260. </Setter.Value>
  261. </Setter>
  262. </Style>
  263. </Syncfusion:SfGridSplitter.PreviewStyle>
  264. </Syncfusion:SfGridSplitter>
  265. <local:JobSelector
  266. x:Name="JobSelector"
  267. Grid.Row="2"
  268. Grid.Column="0"
  269. Grid.ColumnSpan="2"
  270. SettingsChanged="JobSelector_OnSettingsChanged"
  271. SelectionChanged="JobSelector_OnSelectionChanged"
  272. SizeChanged="JobSelector_OnSizeChanged"/>
  273. <Label Content="Window" Grid.Row="3" VerticalContentAlignment="Center" Margin="0,5,0,0" Height="25" />
  274. <ComboBox x:Name="ViewWindow" Grid.Row="3" Grid.Column="1" Margin="5,5,0,0"
  275. SelectionChanged="ViewWindow_OnSelectionChanged" VerticalContentAlignment="Center"
  276. SelectedValuePath="Key" DisplayMemberPath="Value">
  277. </ComboBox>
  278. <Label Content="Hrs / Day" Grid.Row="4" VerticalContentAlignment="Center" Margin="0,5,0,0" Height="25" />
  279. <DockPanel Grid.Row="4" Grid.Column="1" Margin="5,5,0,0">
  280. <Button DockPanel.Dock="Left" Padding="2" BorderThickness="0.75,0.75,0,0.75" Background="White"
  281. BorderBrush="Gray" Click="HoursSelector_Down_Click">
  282. <Image Source="pack://application:,,,/Resources/leftarrow.png" Height="20" Width="20" />
  283. </Button>
  284. <Button DockPanel.Dock="Right" Padding="2" BorderThickness="0,0.75,0.75,0.75" Background="White"
  285. BorderBrush="Gray" Click="HoursSelector_Up_Click">
  286. <Image Source="pack://application:,,,/Resources/rightarrow.png" Height="20" Width="20" />
  287. </Button>
  288. <TextBox x:Name="HoursSelector" IsReadOnly="True" DockPanel.Dock="Left" BorderThickness="0,0.75,0,0.75"
  289. BorderBrush="Gray" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" />
  290. </DockPanel>
  291. <Label Content="Leave" Margin="0,5,0,0" VerticalContentAlignment="Center" Grid.Row="5"/>
  292. <ComboBox x:Name="LeaveType" Margin="5,5,0,0" SelectionChanged="LeaveType_OnSelectionChanged" VerticalContentAlignment="Center" Grid.Row="5" Grid.Column="1">
  293. <ComboBoxItem Content="Approved Only" />
  294. <ComboBoxItem Content="Show All" />
  295. </ComboBox>
  296. </Grid>
  297. </dynamicGrid:DynamicTabItem>
  298. </dynamicGrid:DynamicTabControl>
  299. </Grid>
  300. </UserControl>