Index: ActiviteitenOpvolging/ActiviteitenOpvolging/screens/employee/IEmployeeUserControl.vb
===================================================================
diff -u -r1726 -r1727
--- ActiviteitenOpvolging/ActiviteitenOpvolging/screens/employee/IEmployeeUserControl.vb (.../IEmployeeUserControl.vb) (revision 1726)
+++ ActiviteitenOpvolging/ActiviteitenOpvolging/screens/employee/IEmployeeUserControl.vb (.../IEmployeeUserControl.vb) (revision 1727)
@@ -1,4 +1,5 @@
Public Interface IEmployeeUserControl
+ inherits IRefreshableUserControl
'''
''' Triggered when the selected activity changes.
'''
Index: ActiviteitenOpvolging/ActiviteitenOpvolging/ActiviteitenOpvolgingForm.resx
===================================================================
diff -u -r1681 -r1727
--- ActiviteitenOpvolging/ActiviteitenOpvolging/ActiviteitenOpvolgingForm.resx (.../ActiviteitenOpvolgingForm.resx) (revision 1681)
+++ ActiviteitenOpvolging/ActiviteitenOpvolging/ActiviteitenOpvolgingForm.resx (.../ActiviteitenOpvolgingForm.resx) (revision 1727)
@@ -117,4 +117,7 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 17, 17
+
\ No newline at end of file
Index: ActiviteitenOpvolging/ActiviteitenOpvolging/ActiviteitenOpvolgingForm.Designer.vb
===================================================================
diff -u -r1725 -r1727
--- ActiviteitenOpvolging/ActiviteitenOpvolging/ActiviteitenOpvolgingForm.Designer.vb (.../ActiviteitenOpvolgingForm.Designer.vb) (revision 1725)
+++ ActiviteitenOpvolging/ActiviteitenOpvolging/ActiviteitenOpvolgingForm.Designer.vb (.../ActiviteitenOpvolgingForm.Designer.vb) (revision 1727)
@@ -22,12 +22,13 @@
'Do not modify it using the code editor.
_
Private Sub InitializeComponent()
+ Me.components = New System.ComponentModel.Container()
Me.DatagridViewControlsFlowLayoutPanel = New System.Windows.Forms.FlowLayoutPanel()
Me.GridLabel = New System.Windows.Forms.Label()
- Me.RefreshButton = New System.Windows.Forms.Button()
Me.RefreshTimeLabel = New System.Windows.Forms.Label()
Me.RefreshFailedLabel = New System.Windows.Forms.Label()
Me.EmployeesControlsFlowLayoutPanel = New System.Windows.Forms.FlowLayoutPanel()
+ Me.RefreshTimer = New System.Windows.Forms.Timer(Me.components)
Me.SuspendLayout
'
'DatagridViewControlsFlowLayoutPanel
@@ -51,34 +52,25 @@
Me.GridLabel.TabIndex = 2
Me.GridLabel.Text = "Grid label"
'
- 'RefreshButton
- '
- Me.RefreshButton.Location = New System.Drawing.Point(696, 9)
- Me.RefreshButton.Name = "RefreshButton"
- Me.RefreshButton.Size = New System.Drawing.Size(75, 23)
- Me.RefreshButton.TabIndex = 3
- Me.RefreshButton.Text = "Refresh"
- Me.RefreshButton.UseVisualStyleBackColor = true
- '
'RefreshTimeLabel
'
Me.RefreshTimeLabel.AutoSize = true
- Me.RefreshTimeLabel.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
- Me.RefreshTimeLabel.Location = New System.Drawing.Point(1203, 16)
+ Me.RefreshTimeLabel.Font = New System.Drawing.Font("Microsoft Sans Serif", 12!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+ Me.RefreshTimeLabel.Location = New System.Drawing.Point(1174, 18)
Me.RefreshTimeLabel.Name = "RefreshTimeLabel"
- Me.RefreshTimeLabel.Size = New System.Drawing.Size(0, 16)
+ Me.RefreshTimeLabel.Size = New System.Drawing.Size(0, 20)
Me.RefreshTimeLabel.TabIndex = 4
'
'RefreshFailedLabel
'
Me.RefreshFailedLabel.AutoSize = true
- Me.RefreshFailedLabel.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+ Me.RefreshFailedLabel.Font = New System.Drawing.Font("Microsoft Sans Serif", 12!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
Me.RefreshFailedLabel.ForeColor = System.Drawing.Color.Maroon
- Me.RefreshFailedLabel.Location = New System.Drawing.Point(969, 16)
+ Me.RefreshFailedLabel.Location = New System.Drawing.Point(807, 18)
Me.RefreshFailedLabel.Name = "RefreshFailedLabel"
- Me.RefreshFailedLabel.Size = New System.Drawing.Size(228, 16)
+ Me.RefreshFailedLabel.Size = New System.Drawing.Size(361, 20)
Me.RefreshFailedLabel.TabIndex = 5
- Me.RefreshFailedLabel.Text = "Refresh failed. Latest refresh at:"
+ Me.RefreshFailedLabel.Text = "Refresh failed. Latest successful refresh at:"
Me.RefreshFailedLabel.Visible = false
'
'EmployeesControlsFlowLayoutPanel
@@ -91,6 +83,9 @@
Me.EmployeesControlsFlowLayoutPanel.Size = New System.Drawing.Size(1240, 310)
Me.EmployeesControlsFlowLayoutPanel.TabIndex = 6
'
+ 'RefreshTimer
+ '
+ '
'ActiviteitenOpvolgingForm
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6!, 13!)
@@ -99,7 +94,6 @@
Me.Controls.Add(Me.EmployeesControlsFlowLayoutPanel)
Me.Controls.Add(Me.RefreshFailedLabel)
Me.Controls.Add(Me.RefreshTimeLabel)
- Me.Controls.Add(Me.RefreshButton)
Me.Controls.Add(Me.GridLabel)
Me.Controls.Add(Me.DatagridViewControlsFlowLayoutPanel)
Me.Name = "ActiviteitenOpvolgingForm"
@@ -111,8 +105,8 @@
Friend WithEvents DatagridViewControlsFlowLayoutPanel As FlowLayoutPanel
Friend WithEvents GridLabel As Label
- Friend WithEvents RefreshButton As Button
Friend WithEvents RefreshTimeLabel As Label
Friend WithEvents RefreshFailedLabel As Label
Friend WithEvents EmployeesControlsFlowLayoutPanel As FlowLayoutPanel
+ Friend WithEvents RefreshTimer As Timer
End Class
Index: ActiviteitenOpvolging/ActiviteitenOpvolging/domain/classes/implementations/Activity.vb
===================================================================
diff -u -r1725 -r1727
--- ActiviteitenOpvolging/ActiviteitenOpvolging/domain/classes/implementations/Activity.vb (.../Activity.vb) (revision 1725)
+++ ActiviteitenOpvolging/ActiviteitenOpvolging/domain/classes/implementations/Activity.vb (.../Activity.vb) (revision 1727)
@@ -4,11 +4,12 @@
Public Property QuantityToProduce As Integer Implements IActivity.QuantityToProduce
Public Property Label As String Implements IActivity.Label
Public Property Status As ActivityStateEnum Implements IActivity.Status
- Public Property User As String Implements IActivity.User
Public Property IsReadOnly As Boolean Implements IActivity.IsReadOnly
Public Property StartBeforeTimestamp As DateTime Implements IActivity.StartBeforeTimestamp
Public Property StartAlmostTimeStamp As DateTime Implements IActivity.StartAlmostTimeStamp
Public Property StartTimeStamp As DateTime Implements IActivity.StartTimeStamp
+ Public Property EmployeeInitials As String Implements IActivity.EmployeeInitials
+
Public Property WorkItem As IWorkItem Implements IActivity.WorkItem
End Class
Index: ActiviteitenOpvolging/ActiviteitenOpvolging/ActiviteitenOpvolgingForm.vb
===================================================================
diff -u -r1726 -r1727
--- ActiviteitenOpvolging/ActiviteitenOpvolging/ActiviteitenOpvolgingForm.vb (.../ActiviteitenOpvolgingForm.vb) (revision 1726)
+++ ActiviteitenOpvolging/ActiviteitenOpvolging/ActiviteitenOpvolgingForm.vb (.../ActiviteitenOpvolgingForm.vb) (revision 1727)
@@ -29,12 +29,40 @@
'Load the user controls with the employees.
LoadEmployeeUserControls()
+
+ 'Load all the data. Not done with the general method, because we want to catch the exceptions.
+ RefreshAllData()
+
+ 'Set the timer's value in miliseconds.
+ RefreshTimer.Interval = ConfigsLoader.RefreshIntervalSeconds * 1000
+ 'Start the times.
+ RefreshTimer.Start()
Catch ex As Exception
MessageBox.Show(ex.Message, "An error occured...", MessageBoxButtons.OK, MessageBoxIcon.Error)
Application.Exit()
End Try
End Sub
+ 'Refreshes all data. If fails, updates label with last timestamp of refresh.
+ Private Sub RefreshAllData()
+ dim allSuccessfulRefresh = RefreshUserGridsData()
+ allSuccessfulRefresh = allSuccessfulRefresh And RefreshEmployeesData()
+ 'Check if refresh was successful.
+ If allSuccessfulRefresh Then
+ 'Update latest refresh time label with current time.
+ RefreshTimeLabel.Text = TimeOfDay.ToString("HH:mm")
+ RefreshFailedLabel.Visible = False
+ Else
+ RefreshFailedLabel.Visible = True
+ End If
+ End Sub
+
+ 'Refreshes at specified interval.
+ Private Sub RefreshTimer_Tick(sender As Object, e As EventArgs) Handles RefreshTimer.Tick
+ 'Refresh all the data.
+ RefreshAllData()
+ End Sub
+
#Region "Data grids"
'''
@@ -56,8 +84,6 @@
'Add to layout panel.
DatagridViewControlsFlowLayoutPanel.Controls.Add(userControl)
Next
- 'Refresh all user grids.
- RefreshUserGridsData()
Catch ex As Exception
Throw New Exception($"Could not load data grid user controls.{vbNewLine}{ex.Message}")
End Try
@@ -93,32 +119,17 @@
Return _selectedActivity
End Function
- Private Sub RefreshButton_Click(sender As Object, e As EventArgs) Handles RefreshButton.Click
- RefreshButton.Enabled = False
- RefreshUserGridsData()
- RefreshButton.Enabled = True
- End Sub
-
'''
- ''' Try to reshresh all user grids and register time of latest refresh.
+ ''' Try to refresh all user grids and register time of latest refresh.
'''
- Private Sub RefreshUserGridsData()
- Dim allSuccessfulRefresh As Boolean
+ Private Function RefreshUserGridsData() As Boolean
Try
'Refresh every user control. Register whether or not all refreshes were successful.
- allSuccessfulRefresh = _datagridViewUserControls.All(Function(userControl) userControl.RefreshData())
+ Return _datagridViewUserControls.All(Function(userControl) userControl.RefreshData())
Catch ex As Exception
- allSuccessfulRefresh = False
+ Return False
End Try
- 'Check if refresh was successful.
- If allSuccessfulRefresh Then
- 'Update latest refresh time label with current time.
- RefreshTimeLabel.Text = TimeOfDay.ToString("HH:mm")
- RefreshFailedLabel.Visible = False
- Else
- RefreshFailedLabel.Visible = True
- End If
- End Sub
+ End Function
#End Region
#Region "Employees"
@@ -146,6 +157,19 @@
End Try
End Sub
+ '''
+ ''' Refresh the employee controls with employee data.
+ '''
+ '''
+ Private Function RefreshEmployeesData() As Boolean
+ Try
+ 'Refresh every user control. Register whether or not all refreshes were successful.
+ Return _employeeUserControls.All(Function(userControl) userControl.RefreshData())
+ Catch ex As Exception
+ Return False
+ End Try
+ End Function
+
'''
Public Function GetAllEmployees() As ICollection(Of IEmployee) Implements IEmployeesMainForm.GetAllEmployees
Return _domainController.GetAvailableEmployees()
Index: ActiviteitenOpvolging/ActiviteitenOpvolging/screens/employee/EmployeeUserControl.vb
===================================================================
diff -u -r1726 -r1727
--- ActiviteitenOpvolging/ActiviteitenOpvolging/screens/employee/EmployeeUserControl.vb (.../EmployeeUserControl.vb) (revision 1726)
+++ ActiviteitenOpvolging/ActiviteitenOpvolging/screens/employee/EmployeeUserControl.vb (.../EmployeeUserControl.vb) (revision 1727)
@@ -61,6 +61,31 @@
e.Graphics.DrawRectangle(New Pen(borderColor, borderThickness), borderRectangle)
End Sub
+ '''
+ ''' Switch to another user control on the screen.
+ '''
+ ''' Must be a refreshable user control
+ '''
+ Private Sub SwitchUserControl(Of T As {IRefreshableUserControl, UserControl})(userControl As T)
+ 'Set current user control.
+ _currentUserControl = userControl
+ 'Remove the current user control from the screen.
+ UserControlPanel.Controls.Clear()
+ 'Set the properties of the user control.
+ With userControl
+ 'Make it exactly as big as the panel it will go into.
+ .Size = UserControlPanel.Size
+ End With
+ 'Add it onto the panel.
+ UserControlPanel.Controls.Add(userControl)
+ End Sub
+
+ '''
+ Public Function RefreshData() As Boolean Implements IRefreshableUserControl.RefreshData
+ 'Update the current user control.
+ Return _currentUserControl.RefreshData()
+ End Function
+
#Region "Employee picking"
'''
Public Function GetAllEmployees() As ICollection(Of IEmployee) Implements IEmployeePickerParentUserControl.GetAllEmployees
@@ -127,7 +152,7 @@
'''
Public Function GetCurrentlySelectedActivity() As IActivity Implements IEmployeeDetailParentUserControl.GetCurrentlySelectedActivity
- Return _parentForm.GetCurrentlySelectedActivity()
+ Return _parentForm.GetCurrentlySelectedActivity()
End Function
'''
@@ -146,23 +171,4 @@
End Sub
#End Region
- '''
- ''' Switch to another user control on the screen.
- '''
- ''' Must be a refreshable user control
- '''
- Private Sub SwitchUserControl(Of T As {IRefreshableUserControl, UserControl})(userControl As T)
- 'Set current user control.
- _currentUserControl = userControl
- 'Remove the current user control from the screen.
- UserControlPanel.Controls.Clear()
- 'Set the properties of the user control.
- With userControl
- 'Make it exactly as big as the panel it will go into.
- .Size = UserControlPanel.Size
- End With
- 'Add it onto the panel.
- UserControlPanel.Controls.Add(userControl)
- End Sub
-
End Class