diff --git a/Filesystem/Encryption.vb b/Filesystem/Encryption.vb index b7a3b95b..1ec620de 100644 --- a/Filesystem/Encryption.vb +++ b/Filesystem/Encryption.vb @@ -1,5 +1,6 @@ Imports System.IO Imports System.Security.Cryptography +Imports System.Text.Encoding Imports DigitalData.Modules.Logging ''' @@ -19,8 +20,6 @@ Public Class Encryption Private ReadOnly _password As String Private _logger As Logger - - Public Sub New(LogConfig As LogConfig, Password As String) _logger = LogConfig.GetLogger() @@ -31,13 +30,24 @@ Public Class Encryption _password = Password End Sub - Public Async Function EncryptAsync(oPlainTextBytes As Byte()) As Task(Of Byte()) + Public Async Function EncryptAsync(PlainTextBytes As Byte()) As Task(Of Byte()) Return Await Task.Run(Function() As Byte() - Return Encrypt(oPlainTextBytes) + Return Encrypt(PlainTextBytes) End Function) End Function - Public Function Encrypt(oPlainTextBytes As Byte()) As Byte() + Public Function Encrypt(PlainText As String) As String + Try + Dim oBytes As Byte() = UTF8.GetBytes(PlainText) + Dim oEncrypted As Byte() = Encrypt(oBytes) + Return UTF8.GetString(oEncrypted) + Catch ex As Exception + _logger.Error(ex) + Throw ex + End Try + End Function + + Public Function Encrypt(PlainTextBytes As Byte()) As Byte() Try ' Salt and IV is randomly generated each time, but is preprended to encrypted cipher text ' so that the same Salt and IV values can be used when decrypting. @@ -53,7 +63,7 @@ Public Class Encryption Using oEncryptor = oSymmetricKey.CreateEncryptor(oKeyBytes, oIvStringBytes) Using oMemoryStream = New MemoryStream() Using oCryptoStream = New CryptoStream(oMemoryStream, oEncryptor, CryptoStreamMode.Write) - oCryptoStream.Write(oPlainTextBytes, 0, oPlainTextBytes.Length) + oCryptoStream.Write(PlainTextBytes, 0, PlainTextBytes.Length) oCryptoStream.FlushFinalBlock() ' Create the final bytes as a concatenation of the random salt bytes, the random iv bytes and the cipher bytes. Dim oCipherTextBytes = oSaltStringBytes @@ -79,16 +89,27 @@ Public Class Encryption End Function) End Function - Public Function Decrypt(cipherTextBytesWithSaltAndIv As Byte()) As Byte() + Public Function Decrypt(CipherTextPlainWithSaltAndIv As String) As String + Try + Dim oBytes As Byte() = UTF8.GetBytes(CipherTextPlainWithSaltAndIv) + Dim oDecrypted As Byte() = Decrypt(oBytes) + Return UTF8.GetString(oDecrypted) + Catch ex As Exception + _logger.Error(ex) + Throw ex + End Try + End Function + + Public Function Decrypt(CipherTextBytesWithSaltAndIv As Byte()) As Byte() Try ' Get the complete stream of bytes that represent: ' [32 bytes of Salt] + [32 bytes of IV] + [n bytes of CipherText] ' Get the saltbytes by extracting the first 32 bytes from the supplied cipherText bytes. - Dim oSaltStringBytes = cipherTextBytesWithSaltAndIv.Take(KEY_SIZE / 8).ToArray() + Dim oSaltStringBytes = CipherTextBytesWithSaltAndIv.Take(KEY_SIZE / 8).ToArray() ' Get the IV bytes by extracting the next 32 bytes from the supplied cipherText bytes. - Dim oIvStringBytes = cipherTextBytesWithSaltAndIv.Skip(KEY_SIZE / 8).Take(KEY_SIZE / 8).ToArray() + Dim oIvStringBytes = CipherTextBytesWithSaltAndIv.Skip(KEY_SIZE / 8).Take(KEY_SIZE / 8).ToArray() ' Get the actual cipher text bytes by removing the first 64 bytes from the cipherText string. - Dim oCipherTextBytes = cipherTextBytesWithSaltAndIv.Skip((KEY_SIZE / 8) * 2).Take(cipherTextBytesWithSaltAndIv.Length - ((KEY_SIZE / 8) * 2)).ToArray() + Dim oCipherTextBytes = CipherTextBytesWithSaltAndIv.Skip((KEY_SIZE / 8) * 2).Take(CipherTextBytesWithSaltAndIv.Length - ((KEY_SIZE / 8) * 2)).ToArray() Using oPassword = New Rfc2898DeriveBytes(_password, oSaltStringBytes, DERIVATION_ITERATIONS) Dim oKeyBytes = oPassword.GetBytes(KEY_SIZE / 8) diff --git a/GUIs.ClientSuite/ClientSuite.vbproj b/GUIs.ClientSuite/ClientSuite.vbproj index 69cdd064..1f8f53dd 100644 --- a/GUIs.ClientSuite/ClientSuite.vbproj +++ b/GUIs.ClientSuite/ClientSuite.vbproj @@ -205,6 +205,18 @@ + + GridOverview.vb + + + UserControl + + + NavControlOverview.vb + + + UserControl + @@ -352,6 +364,12 @@ DocumentPanel.vb + + GridOverview.vb + + + NavControlOverview.vb + DockManagerTest.vb diff --git a/GUIs.ClientSuite/Common/ClassCommonViews.vb b/GUIs.ClientSuite/Common/ClassCommonViews.vb index 759b61db..d7d583c2 100644 --- a/GUIs.ClientSuite/Common/ClassCommonViews.vb +++ b/GUIs.ClientSuite/Common/ClassCommonViews.vb @@ -52,4 +52,26 @@ Public Class ClassCommonViews Throw ex End Try End Function + + Public Async Function VWIDB_GUI_WF_OVERVIEW(UserId As Int64, FormId As Int64) As Task(Of DataTable) + Try + My.Channel.CreateDatabaseRequest("Load Control Data", True) + + Dim oSQL As String = $"SELECT * FROM VWIDB_GUI_WF_OVERVIEW WHERE USERID = {UserId} AND FORMID = {FormId}" + Dim oResult = Await My.Channel.ReturnDatatableAsync(oSQL) + Dim oTable = oResult.Table + + If Not oResult.OK Then + _Logger.Error(New ApplicationException(oResult.ErrorMessage)) + Return Nothing + End If + + My.Channel.CloseDatabaseRequest() + + Return oResult.Table + Catch ex As Exception + _Logger.Error(ex) + Throw ex + End Try + End Function End Class diff --git a/GUIs.ClientSuite/Workflow/GridOverview.Designer.vb b/GUIs.ClientSuite/Workflow/GridOverview.Designer.vb new file mode 100644 index 00000000..15a1c6bd --- /dev/null +++ b/GUIs.ClientSuite/Workflow/GridOverview.Designer.vb @@ -0,0 +1,74 @@ + _ +Partial Class GridOverview + Inherits System.Windows.Forms.UserControl + + 'UserControl überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen. + _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Wird vom Windows Form-Designer benötigt. + Private components As System.ComponentModel.IContainer + + 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich. + 'Das Bearbeiten ist mit dem Windows Form-Designer möglich. + 'Das Bearbeiten mit dem Code-Editor ist nicht möglich. + _ + Private Sub InitializeComponent() + Me.GridControl = New DevExpress.XtraGrid.GridControl() + Me.gvOverview = New DevExpress.XtraGrid.Views.Grid.GridView() + Me.GridView1 = New DevExpress.XtraGrid.Views.Grid.GridView() + CType(Me.GridControl, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.gvOverview, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.GridView1, System.ComponentModel.ISupportInitialize).BeginInit() + Me.SuspendLayout() + ' + 'GridControl + ' + Me.GridControl.Dock = System.Windows.Forms.DockStyle.Fill + Me.GridControl.Location = New System.Drawing.Point(0, 0) + Me.GridControl.MainView = Me.gvOverview + Me.GridControl.Name = "GridControl" + Me.GridControl.Size = New System.Drawing.Size(626, 461) + Me.GridControl.TabIndex = 1 + Me.GridControl.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.gvOverview, Me.GridView1}) + ' + 'gvOverview + ' + Me.gvOverview.GridControl = Me.GridControl + Me.gvOverview.Name = "gvOverview" + Me.gvOverview.OptionsFind.AlwaysVisible = True + Me.gvOverview.OptionsView.GroupDrawMode = DevExpress.XtraGrid.Views.Grid.GroupDrawMode.Office + Me.gvOverview.OptionsView.ShowGroupedColumns = True + Me.gvOverview.OptionsView.ShowVerticalLines = DevExpress.Utils.DefaultBoolean.[True] + ' + 'GridView1 + ' + Me.GridView1.GridControl = Me.GridControl + Me.GridView1.Name = "GridView1" + ' + 'GridOverview + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.Controls.Add(Me.GridControl) + Me.Name = "GridOverview" + Me.Size = New System.Drawing.Size(626, 461) + CType(Me.GridControl, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.gvOverview, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.GridView1, System.ComponentModel.ISupportInitialize).EndInit() + Me.ResumeLayout(False) + + End Sub + + Friend WithEvents GridControl As DevExpress.XtraGrid.GridControl + Friend WithEvents gvOverview As DevExpress.XtraGrid.Views.Grid.GridView + Friend WithEvents GridView1 As DevExpress.XtraGrid.Views.Grid.GridView +End Class diff --git a/GUIs.ClientSuite/Workflow/GridOverview.resx b/GUIs.ClientSuite/Workflow/GridOverview.resx new file mode 100644 index 00000000..1af7de15 --- /dev/null +++ b/GUIs.ClientSuite/Workflow/GridOverview.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/GUIs.ClientSuite/Workflow/GridOverview.vb b/GUIs.ClientSuite/Workflow/GridOverview.vb new file mode 100644 index 00000000..9020cd81 --- /dev/null +++ b/GUIs.ClientSuite/Workflow/GridOverview.vb @@ -0,0 +1,27 @@ +Public Class GridOverview + Private _DataSource As List(Of WorkflowItem) + + Public Property DataSource As List(Of WorkflowItem) + Get + Return _DataSource + End Get + Set(value As List(Of WorkflowItem)) + _DataSource = value + GridControl.DataSource = value + + If Not IsNothing(value) Then + ApplyStyles() + End If + End Set + End Property + + Private Sub ApplyStyles() + With gvOverview.Columns.Item("StateImage") + .VisibleIndex = 0 + .MaxWidth = 20 + .OptionsColumn.ShowCaption = False + End With + gvOverview.Columns.Item("Process").VisibleIndex = 1 + gvOverview.Columns.Item("State").Visible = False + End Sub +End Class diff --git a/GUIs.ClientSuite/Workflow/NavControlOverview.Designer.vb b/GUIs.ClientSuite/Workflow/NavControlOverview.Designer.vb new file mode 100644 index 00000000..56bf792f --- /dev/null +++ b/GUIs.ClientSuite/Workflow/NavControlOverview.Designer.vb @@ -0,0 +1,60 @@ + _ +Partial Class NavControlOverview + Inherits System.Windows.Forms.UserControl + + 'UserControl überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen. + _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Wird vom Windows Form-Designer benötigt. + Private components As System.ComponentModel.IContainer + + 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich. + 'Das Bearbeiten ist mit dem Windows Form-Designer möglich. + 'Das Bearbeiten mit dem Code-Editor ist nicht möglich. + _ + Private Sub InitializeComponent() + Me.NavBarControl = New DevExpress.XtraNavBar.NavBarControl() + Me.NavBarGroup1 = New DevExpress.XtraNavBar.NavBarGroup() + CType(Me.NavBarControl, System.ComponentModel.ISupportInitialize).BeginInit() + Me.SuspendLayout() + ' + 'NavBarControl + ' + Me.NavBarControl.ActiveGroup = Me.NavBarGroup1 + Me.NavBarControl.Dock = System.Windows.Forms.DockStyle.Fill + Me.NavBarControl.Groups.AddRange(New DevExpress.XtraNavBar.NavBarGroup() {Me.NavBarGroup1}) + Me.NavBarControl.Location = New System.Drawing.Point(0, 0) + Me.NavBarControl.Name = "NavBarControl" + Me.NavBarControl.Size = New System.Drawing.Size(150, 150) + Me.NavBarControl.TabIndex = 0 + Me.NavBarControl.Text = "NavBarControl1" + ' + 'NavBarGroup1 + ' + Me.NavBarGroup1.Caption = "Workflow" + Me.NavBarGroup1.Expanded = True + Me.NavBarGroup1.Name = "NavBarGroup1" + ' + 'NavControlOverview + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.Controls.Add(Me.NavBarControl) + Me.Name = "NavControlOverview" + CType(Me.NavBarControl, System.ComponentModel.ISupportInitialize).EndInit() + Me.ResumeLayout(False) + + End Sub + + Friend WithEvents NavBarControl As DevExpress.XtraNavBar.NavBarControl + Friend WithEvents NavBarGroup1 As DevExpress.XtraNavBar.NavBarGroup +End Class diff --git a/GUIs.ClientSuite/Workflow/NavControlOverview.resx b/GUIs.ClientSuite/Workflow/NavControlOverview.resx new file mode 100644 index 00000000..1af7de15 --- /dev/null +++ b/GUIs.ClientSuite/Workflow/NavControlOverview.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/GUIs.ClientSuite/Workflow/NavControlOverview.vb b/GUIs.ClientSuite/Workflow/NavControlOverview.vb new file mode 100644 index 00000000..d2150829 --- /dev/null +++ b/GUIs.ClientSuite/Workflow/NavControlOverview.vb @@ -0,0 +1,40 @@ +Imports DevExpress.XtraNavBar + +Public Class NavControlOverview + Private _DataSource As List(Of WorkflowItem) + + Public Property DataSource As List(Of WorkflowItem) + Get + Return _DataSource + End Get + Set(value As List(Of WorkflowItem)) + _DataSource = value + + 'TODO: Update Navbar Items + If Not IsNothing(value) Then + UpdateItems(value) + End If + + End Set + End Property + + Private Sub UpdateItems(WorkflowItems As List(Of WorkflowItem)) + Dim oTotalItems = WorkflowItems.Count + Dim oGroupedItems = WorkflowItems.GroupBy(Function(Item As WorkflowItem) + Return Item.Process + End Function) + + AddItem("Alle Workflows", oTotalItems) + + For Each oGroupedItem As IGrouping(Of String, WorkflowItem) In oGroupedItems + AddItem(oGroupedItem.Key, oGroupedItem.Count) + Next + End Sub + + Private Sub AddItem(Title As String, Count As Integer) + Dim oItem = New NavBarItem() With { + .Caption = $"{Title} ({Count})" + } + NavBarControl.Groups.First().ItemLinks.Add(oItem) + End Sub +End Class diff --git a/GUIs.ClientSuite/Workflow/WorkflowItem.vb b/GUIs.ClientSuite/Workflow/WorkflowItem.vb index cdab45cf..250e874f 100644 --- a/GUIs.ClientSuite/Workflow/WorkflowItem.vb +++ b/GUIs.ClientSuite/Workflow/WorkflowItem.vb @@ -4,35 +4,26 @@ Imports DigitalData.GUIs.ClientSuite Public Class WorkflowItem Implements INotifyPropertyChanged - Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged - Public Enum ItemState - Normal - Warning - Danger - End Enum + Private _state As String - Public Property StateImage As Image Public Property Title As String Public Property CreatedAt As DateTime - Public Property WorkflowName As String + Public Property Process As String - Private _state As ItemState - - Public Property State As ItemState + Public Property StateImage As Image + Public Property State As String Get Return _state End Get - Set(value As ItemState) + Set(value As String) _state = value Select Case value - Case ItemState.Normal - StateImage = My.Resources.ampel_gruen - Case ItemState.Warning + Case "Start" + StateImage = My.Resources. + Case "Not started" StateImage = My.Resources.ampel_gelb - Case ItemState.Danger - StateImage = My.Resources.ampel_rot Case Else StateImage = Nothing End Select diff --git a/GUIs.ClientSuite/Workflow/frmWorkflowOverview.Designer.vb b/GUIs.ClientSuite/Workflow/frmWorkflowOverview.Designer.vb index ab97be22..dfcaaf9a 100644 --- a/GUIs.ClientSuite/Workflow/frmWorkflowOverview.Designer.vb +++ b/GUIs.ClientSuite/Workflow/frmWorkflowOverview.Designer.vb @@ -1,6 +1,6 @@  Partial Class frmWorkflowOverview - Inherits DevExpress.XtraBars.Ribbon.RibbonForm + Inherits DigitalData.GUIs.ClientSuite.Base.BaseRibbonForm 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen. @@ -32,8 +32,8 @@ Partial Class frmWorkflowOverview Dim TableRowDefinition3 As DevExpress.XtraEditors.TableLayout.TableRowDefinition = New DevExpress.XtraEditors.TableLayout.TableRowDefinition() Dim TableSpan1 As DevExpress.XtraEditors.TableLayout.TableSpan = New DevExpress.XtraEditors.TableLayout.TableSpan() Dim TileViewItemElement1 As DevExpress.XtraGrid.Views.Tile.TileViewItemElement = New DevExpress.XtraGrid.Views.Tile.TileViewItemElement() - Dim WindowsUIButtonImageOptions3 As DevExpress.XtraBars.Docking2010.WindowsUIButtonImageOptions = New DevExpress.XtraBars.Docking2010.WindowsUIButtonImageOptions() - Dim WindowsUIButtonImageOptions4 As DevExpress.XtraBars.Docking2010.WindowsUIButtonImageOptions = New DevExpress.XtraBars.Docking2010.WindowsUIButtonImageOptions() + Dim WindowsUIButtonImageOptions1 As DevExpress.XtraBars.Docking2010.WindowsUIButtonImageOptions = New DevExpress.XtraBars.Docking2010.WindowsUIButtonImageOptions() + Dim WindowsUIButtonImageOptions2 As DevExpress.XtraBars.Docking2010.WindowsUIButtonImageOptions = New DevExpress.XtraBars.Docking2010.WindowsUIButtonImageOptions() Me.RibbonControl1 = New DevExpress.XtraBars.Ribbon.RibbonControl() Me.BarCheckItem1 = New DevExpress.XtraBars.BarCheckItem() Me.BarCheckItem2 = New DevExpress.XtraBars.BarCheckItem() @@ -43,15 +43,8 @@ Partial Class frmWorkflowOverview Me.RibbonPageGroup3 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.RibbonStatusBar1 = New DevExpress.XtraBars.Ribbon.RibbonStatusBar() Me.RibbonPage2 = New DevExpress.XtraBars.Ribbon.RibbonPage() - Me.NavBarControl1 = New DevExpress.XtraNavBar.NavBarControl() - Me.NavBarGroup1 = New DevExpress.XtraNavBar.NavBarGroup() - Me.NavBarItem1 = New DevExpress.XtraNavBar.NavBarItem() - Me.NavBarItem2 = New DevExpress.XtraNavBar.NavBarItem() - Me.NavBarItem3 = New DevExpress.XtraNavBar.NavBarItem() Me.SplitContainerControl1 = New DevExpress.XtraEditors.SplitContainerControl() - Me.GridWorkflowOverview = New DevExpress.XtraGrid.GridControl() - Me.gvOverview = New DevExpress.XtraGrid.Views.Grid.GridView() - Me.GridView1 = New DevExpress.XtraGrid.Views.Grid.GridView() + Me.NavControlOverview = New DigitalData.GUIs.ClientSuite.NavControlOverview() Me.GridWorkflowDetails = New DevExpress.XtraGrid.GridControl() Me.tvDetails = New DevExpress.XtraGrid.Views.Tile.TileView() Me.LayoutControl1 = New DevExpress.XtraLayout.LayoutControl() @@ -61,13 +54,10 @@ Partial Class frmWorkflowOverview Me.LayoutControlItem2 = New DevExpress.XtraLayout.LayoutControlItem() Me.SimpleLabelItem2 = New DevExpress.XtraLayout.SimpleLabelItem() Me.SimpleLabelItem3 = New DevExpress.XtraLayout.SimpleLabelItem() + Me.GridOverview = New DigitalData.GUIs.ClientSuite.GridOverview() CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.NavBarControl1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.SplitContainerControl1, System.ComponentModel.ISupportInitialize).BeginInit() Me.SplitContainerControl1.SuspendLayout() - CType(Me.GridWorkflowOverview, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.gvOverview, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.GridView1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.GridWorkflowDetails, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.tvDetails, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.LayoutControl1, System.ComponentModel.ISupportInitialize).BeginInit() @@ -149,86 +139,30 @@ Partial Class frmWorkflowOverview Me.RibbonPage2.Name = "RibbonPage2" Me.RibbonPage2.Text = "RibbonPage2" ' - 'NavBarControl1 - ' - Me.NavBarControl1.ActiveGroup = Me.NavBarGroup1 - Me.NavBarControl1.Dock = System.Windows.Forms.DockStyle.Left - Me.NavBarControl1.Groups.AddRange(New DevExpress.XtraNavBar.NavBarGroup() {Me.NavBarGroup1}) - Me.NavBarControl1.Items.AddRange(New DevExpress.XtraNavBar.NavBarItem() {Me.NavBarItem1, Me.NavBarItem2, Me.NavBarItem3}) - Me.NavBarControl1.Location = New System.Drawing.Point(0, 146) - Me.NavBarControl1.Name = "NavBarControl1" - Me.NavBarControl1.OptionsNavPane.ExpandedWidth = 200 - Me.NavBarControl1.OptionsNavPane.GroupImageShowMode = DevExpress.XtraNavBar.GroupImageShowMode.InCollapsedState - Me.NavBarControl1.Size = New System.Drawing.Size(200, 556) - Me.NavBarControl1.TabIndex = 2 - Me.NavBarControl1.Text = "NavBarControl1" - Me.NavBarControl1.View = New DevExpress.XtraNavBar.ViewInfo.SkinNavigationPaneViewInfoRegistrator() - ' - 'NavBarGroup1 - ' - Me.NavBarGroup1.Caption = "Workflows" - Me.NavBarGroup1.Expanded = True - Me.NavBarGroup1.ImageOptions.SmallImage = CType(resources.GetObject("NavBarGroup1.ImageOptions.SmallImage"), System.Drawing.Image) - Me.NavBarGroup1.ItemLinks.AddRange(New DevExpress.XtraNavBar.NavBarItemLink() {New DevExpress.XtraNavBar.NavBarItemLink(Me.NavBarItem1), New DevExpress.XtraNavBar.NavBarItemLink(Me.NavBarItem2), New DevExpress.XtraNavBar.NavBarItemLink(Me.NavBarItem3)}) - Me.NavBarGroup1.Name = "NavBarGroup1" - ' - 'NavBarItem1 - ' - Me.NavBarItem1.Caption = "Alle Workflows (100)" - Me.NavBarItem1.ImageOptions.SmallImage = CType(resources.GetObject("NavBarItem1.ImageOptions.SmallImage"), System.Drawing.Image) - Me.NavBarItem1.Name = "NavBarItem1" - ' - 'NavBarItem2 - ' - Me.NavBarItem2.Caption = "Rechnungseingang (80)" - Me.NavBarItem2.ImageOptions.SmallImage = CType(resources.GetObject("NavBarItem2.ImageOptions.SmallImage"), System.Drawing.Image) - Me.NavBarItem2.Name = "NavBarItem2" - ' - 'NavBarItem3 - ' - Me.NavBarItem3.Caption = "Vertragsprüfung (20)" - Me.NavBarItem3.ImageOptions.SmallImage = CType(resources.GetObject("NavBarItem3.ImageOptions.SmallImage"), System.Drawing.Image) - Me.NavBarItem3.Name = "NavBarItem3" - ' 'SplitContainerControl1 ' Me.SplitContainerControl1.Dock = System.Windows.Forms.DockStyle.Fill - Me.SplitContainerControl1.Location = New System.Drawing.Point(200, 146) + Me.SplitContainerControl1.Location = New System.Drawing.Point(0, 146) Me.SplitContainerControl1.Name = "SplitContainerControl1" - Me.SplitContainerControl1.Panel1.Controls.Add(Me.GridWorkflowOverview) + Me.SplitContainerControl1.Panel1.Controls.Add(Me.GridOverview) + Me.SplitContainerControl1.Panel1.Controls.Add(Me.NavControlOverview) Me.SplitContainerControl1.Panel1.Text = "Panel1" Me.SplitContainerControl1.Panel2.Controls.Add(Me.GridWorkflowDetails) Me.SplitContainerControl1.Panel2.Controls.Add(Me.LayoutControl1) Me.SplitContainerControl1.Panel2.Text = "Panel2" - Me.SplitContainerControl1.Size = New System.Drawing.Size(934, 556) - Me.SplitContainerControl1.SplitterPosition = 471 + Me.SplitContainerControl1.Size = New System.Drawing.Size(1134, 556) + Me.SplitContainerControl1.SplitterPosition = 841 Me.SplitContainerControl1.TabIndex = 5 Me.SplitContainerControl1.Text = "SplitContainerControl1" ' - 'GridWorkflowOverview + 'NavControlOverview ' - Me.GridWorkflowOverview.Dock = System.Windows.Forms.DockStyle.Fill - Me.GridWorkflowOverview.Location = New System.Drawing.Point(0, 0) - Me.GridWorkflowOverview.MainView = Me.gvOverview - Me.GridWorkflowOverview.MenuManager = Me.RibbonControl1 - Me.GridWorkflowOverview.Name = "GridWorkflowOverview" - Me.GridWorkflowOverview.Size = New System.Drawing.Size(471, 556) - Me.GridWorkflowOverview.TabIndex = 0 - Me.GridWorkflowOverview.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.gvOverview, Me.GridView1}) - ' - 'gvOverview - ' - Me.gvOverview.GridControl = Me.GridWorkflowOverview - Me.gvOverview.Name = "gvOverview" - Me.gvOverview.OptionsFind.AlwaysVisible = True - Me.gvOverview.OptionsView.GroupDrawMode = DevExpress.XtraGrid.Views.Grid.GroupDrawMode.Office - Me.gvOverview.OptionsView.ShowGroupedColumns = True - Me.gvOverview.OptionsView.ShowVerticalLines = DevExpress.Utils.DefaultBoolean.[True] - ' - 'GridView1 - ' - Me.GridView1.GridControl = Me.GridWorkflowOverview - Me.GridView1.Name = "GridView1" + Me.NavControlOverview.DataSource = Nothing + Me.NavControlOverview.Dock = System.Windows.Forms.DockStyle.Left + Me.NavControlOverview.Location = New System.Drawing.Point(0, 0) + Me.NavControlOverview.Name = "NavControlOverview" + Me.NavControlOverview.Size = New System.Drawing.Size(185, 556) + Me.NavControlOverview.TabIndex = 1 ' 'GridWorkflowDetails ' @@ -237,7 +171,7 @@ Partial Class frmWorkflowOverview Me.GridWorkflowDetails.MainView = Me.tvDetails Me.GridWorkflowDetails.MenuManager = Me.RibbonControl1 Me.GridWorkflowDetails.Name = "GridWorkflowDetails" - Me.GridWorkflowDetails.Size = New System.Drawing.Size(451, 390) + Me.GridWorkflowDetails.Size = New System.Drawing.Size(281, 390) Me.GridWorkflowDetails.TabIndex = 1 Me.GridWorkflowDetails.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.tvDetails}) ' @@ -273,19 +207,19 @@ Partial Class frmWorkflowOverview Me.LayoutControl1.Name = "LayoutControl1" Me.LayoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = New System.Drawing.Rectangle(1186, 56, 650, 400) Me.LayoutControl1.Root = Me.LayoutControlGroup1 - Me.LayoutControl1.Size = New System.Drawing.Size(451, 166) + Me.LayoutControl1.Size = New System.Drawing.Size(281, 166) Me.LayoutControl1.TabIndex = 0 Me.LayoutControl1.Text = "LayoutControl1" ' 'WindowsUIButtonPanel1 ' - WindowsUIButtonImageOptions3.Image = CType(resources.GetObject("WindowsUIButtonImageOptions3.Image"), System.Drawing.Image) - WindowsUIButtonImageOptions4.Image = CType(resources.GetObject("WindowsUIButtonImageOptions4.Image"), System.Drawing.Image) - Me.WindowsUIButtonPanel1.Buttons.AddRange(New DevExpress.XtraEditors.ButtonPanel.IBaseButton() {New DevExpress.XtraBars.Docking2010.WindowsUIButton("Verlängerung", True, WindowsUIButtonImageOptions3, DevExpress.XtraBars.Docking2010.ButtonStyle.PushButton, "", -1, True, Nothing, True, False, True, Nothing, -1, False), New DevExpress.XtraBars.Docking2010.WindowsUIButton("Kündigung", True, WindowsUIButtonImageOptions4, DevExpress.XtraBars.Docking2010.ButtonStyle.PushButton, "", -1, True, Nothing, True, False, True, Nothing, -1, False)}) + WindowsUIButtonImageOptions1.Image = CType(resources.GetObject("WindowsUIButtonImageOptions1.Image"), System.Drawing.Image) + WindowsUIButtonImageOptions2.Image = CType(resources.GetObject("WindowsUIButtonImageOptions2.Image"), System.Drawing.Image) + Me.WindowsUIButtonPanel1.Buttons.AddRange(New DevExpress.XtraEditors.ButtonPanel.IBaseButton() {New DevExpress.XtraBars.Docking2010.WindowsUIButton("Verlängerung", True, WindowsUIButtonImageOptions1, DevExpress.XtraBars.Docking2010.ButtonStyle.PushButton, "", -1, True, Nothing, True, False, True, Nothing, -1, False), New DevExpress.XtraBars.Docking2010.WindowsUIButton("Kündigung", True, WindowsUIButtonImageOptions2, DevExpress.XtraBars.Docking2010.ButtonStyle.PushButton, "", -1, True, Nothing, True, False, True, Nothing, -1, False)}) Me.WindowsUIButtonPanel1.ContentAlignment = System.Drawing.ContentAlignment.MiddleLeft Me.WindowsUIButtonPanel1.Location = New System.Drawing.Point(12, 96) Me.WindowsUIButtonPanel1.Name = "WindowsUIButtonPanel1" - Me.WindowsUIButtonPanel1.Size = New System.Drawing.Size(427, 55) + Me.WindowsUIButtonPanel1.Size = New System.Drawing.Size(257, 55) Me.WindowsUIButtonPanel1.TabIndex = 0 Me.WindowsUIButtonPanel1.Text = "WindowsUIButtonPanel1" ' @@ -295,7 +229,7 @@ Partial Class frmWorkflowOverview Me.LayoutControlGroup1.GroupBordersVisible = False Me.LayoutControlGroup1.Items.AddRange(New DevExpress.XtraLayout.BaseLayoutItem() {Me.SimpleLabelItem1, Me.LayoutControlItem2, Me.SimpleLabelItem2, Me.SimpleLabelItem3}) Me.LayoutControlGroup1.Name = "Root" - Me.LayoutControlGroup1.Size = New System.Drawing.Size(451, 166) + Me.LayoutControlGroup1.Size = New System.Drawing.Size(281, 166) Me.LayoutControlGroup1.TextVisible = False ' 'SimpleLabelItem1 @@ -307,7 +241,7 @@ Partial Class frmWorkflowOverview Me.SimpleLabelItem1.AppearanceItemCaption.Options.UseForeColor = True Me.SimpleLabelItem1.Location = New System.Drawing.Point(0, 0) Me.SimpleLabelItem1.Name = "SimpleLabelItem1" - Me.SimpleLabelItem1.Size = New System.Drawing.Size(431, 34) + Me.SimpleLabelItem1.Size = New System.Drawing.Size(261, 34) Me.SimpleLabelItem1.Text = "Vertragsnr. 4711" Me.SimpleLabelItem1.TextSize = New System.Drawing.Size(151, 30) ' @@ -316,7 +250,7 @@ Partial Class frmWorkflowOverview Me.LayoutControlItem2.Control = Me.WindowsUIButtonPanel1 Me.LayoutControlItem2.Location = New System.Drawing.Point(0, 84) Me.LayoutControlItem2.Name = "LayoutControlItem2" - Me.LayoutControlItem2.Size = New System.Drawing.Size(431, 62) + Me.LayoutControlItem2.Size = New System.Drawing.Size(261, 62) Me.LayoutControlItem2.TextSize = New System.Drawing.Size(0, 0) Me.LayoutControlItem2.TextVisible = False ' @@ -327,7 +261,7 @@ Partial Class frmWorkflowOverview Me.SimpleLabelItem2.AppearanceItemCaption.Options.UseFont = True Me.SimpleLabelItem2.Location = New System.Drawing.Point(0, 59) Me.SimpleLabelItem2.Name = "SimpleLabelItem2" - Me.SimpleLabelItem2.Size = New System.Drawing.Size(431, 25) + Me.SimpleLabelItem2.Size = New System.Drawing.Size(261, 25) Me.SimpleLabelItem2.Text = "Sunshine GmbH" Me.SimpleLabelItem2.TextSize = New System.Drawing.Size(151, 21) ' @@ -338,17 +272,24 @@ Partial Class frmWorkflowOverview Me.SimpleLabelItem3.AppearanceItemCaption.Options.UseFont = True Me.SimpleLabelItem3.Location = New System.Drawing.Point(0, 34) Me.SimpleLabelItem3.Name = "SimpleLabelItem3" - Me.SimpleLabelItem3.Size = New System.Drawing.Size(431, 25) + Me.SimpleLabelItem3.Size = New System.Drawing.Size(261, 25) Me.SimpleLabelItem3.Text = "Objekt: Haus Nr. 9" Me.SimpleLabelItem3.TextSize = New System.Drawing.Size(151, 21) ' + 'GridOverview1 + ' + Me.GridOverview.Dock = System.Windows.Forms.DockStyle.Fill + Me.GridOverview.Location = New System.Drawing.Point(185, 0) + Me.GridOverview.Name = "GridOverview1" + Me.GridOverview.Size = New System.Drawing.Size(656, 556) + Me.GridOverview.TabIndex = 2 + ' 'frmWorkflowOverview ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.ClientSize = New System.Drawing.Size(1134, 723) Me.Controls.Add(Me.SplitContainerControl1) - Me.Controls.Add(Me.NavBarControl1) Me.Controls.Add(Me.RibbonStatusBar1) Me.Controls.Add(Me.RibbonControl1) Me.Name = "frmWorkflowOverview" @@ -356,12 +297,8 @@ Partial Class frmWorkflowOverview Me.StatusBar = Me.RibbonStatusBar1 Me.Text = "Workflow Übersicht" CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.NavBarControl1, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.SplitContainerControl1, System.ComponentModel.ISupportInitialize).EndInit() Me.SplitContainerControl1.ResumeLayout(False) - CType(Me.GridWorkflowOverview, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.gvOverview, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.GridView1, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.GridWorkflowDetails, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.tvDetails, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.LayoutControl1, System.ComponentModel.ISupportInitialize).EndInit() @@ -379,11 +316,6 @@ Partial Class frmWorkflowOverview Friend WithEvents RibbonControl1 As DevExpress.XtraBars.Ribbon.RibbonControl Friend WithEvents RibbonStatusBar1 As DevExpress.XtraBars.Ribbon.RibbonStatusBar Friend WithEvents RibbonPage2 As DevExpress.XtraBars.Ribbon.RibbonPage - Friend WithEvents NavBarControl1 As DevExpress.XtraNavBar.NavBarControl - Friend WithEvents NavBarGroup1 As DevExpress.XtraNavBar.NavBarGroup - Friend WithEvents NavBarItem1 As DevExpress.XtraNavBar.NavBarItem - Friend WithEvents NavBarItem2 As DevExpress.XtraNavBar.NavBarItem - Friend WithEvents NavBarItem3 As DevExpress.XtraNavBar.NavBarItem Friend WithEvents RibbonPageCategory1 As DevExpress.XtraBars.Ribbon.RibbonPageCategory Friend WithEvents RibbonPage3 As DevExpress.XtraBars.Ribbon.RibbonPage Friend WithEvents RibbonPageGroup3 As DevExpress.XtraBars.Ribbon.RibbonPageGroup @@ -400,7 +332,6 @@ Partial Class frmWorkflowOverview Friend WithEvents SimpleLabelItem2 As DevExpress.XtraLayout.SimpleLabelItem Friend WithEvents SimpleLabelItem3 As DevExpress.XtraLayout.SimpleLabelItem Friend WithEvents tvDetails As DevExpress.XtraGrid.Views.Tile.TileView - Friend WithEvents GridWorkflowOverview As DevExpress.XtraGrid.GridControl - Friend WithEvents gvOverview As DevExpress.XtraGrid.Views.Grid.GridView - Friend WithEvents GridView1 As DevExpress.XtraGrid.Views.Grid.GridView + Friend WithEvents NavControlOverview As NavControlOverview + Friend WithEvents GridOverview As GridOverview End Class diff --git a/GUIs.ClientSuite/Workflow/frmWorkflowOverview.resx b/GUIs.ClientSuite/Workflow/frmWorkflowOverview.resx index 0913fcab..8a96f180 100644 --- a/GUIs.ClientSuite/Workflow/frmWorkflowOverview.resx +++ b/GUIs.ClientSuite/Workflow/frmWorkflowOverview.resx @@ -202,45 +202,7 @@ W58VxiTarZhsp2KynYrJ9ml1/AZUr3hglRjmdgAAAABJRU5ErkJggg== - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m - dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAsdEVYdFRpdGxlAERvY3VtZW50O01hcDtTY2hlbWU7 - RGlhZ3JhbTtIaWVyYXI7TmV0Tg8qRAAAAHVJREFUOE/NzMENgDAMQ9EuyDoMwBKMwLXHbhf0JUBtYqCo - Fw5PCNdOMrMhMpyWYorvIQRQY/geQgA1hu8hBFBj+B5CADWG7yEEUGP4HkJQyznbQb6j+akGbx4P8D1d - A5e1B+ZttRqFnuz2wJfsJwdGyLCfpR37LNV02NfAHQAAAABJRU5ErkJggg== - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m - dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAWdEVYdFRpdGxlAFByb2R1Y3Q7Qm94O0l0ZW0O9Rpk - AAAAR0lEQVQ4T2P4//8/RRhMvDtS9J8cPIgMoASDCaiJ39DwSyB+DsVvoWLIGKgVjxdA4sgYlxraGUAM - HjWAmgZQgrEKEo//MwAAv2IUTk4dsmsAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m - dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAsdEVYdFRpdGxlAEFkZDtJdGVtO0FkZEl0ZW07QmFy - cztSaWJib247SXRlbTtQbHVzTjLvgQAAAG5JREFUOE/VjNEJgDAMBbOTc7iU5LvzuIyL+GFMpJXX0laD - iHhwNLTNkYg88hyYWTpu8Rxw2cwCPew9hLCUEVdAWcuIK4AqvgDy08A4zYeG/dX5w4BxK5CWWiovBxBY - pKRe54GWxmWgJn5WKwGhHZsDINkhyk7EAAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m - dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAPdEVYdFRpdGxlAFNob3c7RXllO0njByUAAAE3SURB - VDhPpZKxSsRQEEXzG5ba+QHCYuMX+Df6AxIIWKQMiGBSprEQLBYbixSRFNkopNDeRgxaCAsmYZzzyJO3 - MeKqAwfe3Ll3svsST0T+xaT4G74Ivu/vKqdRFEkQBAbtH9CYjf1ucFO5SpJEFouFNE0jXdcZOKMxw4N3 - ZYEKe8pLnufairwtW7m+e5TDsxvTu4UHLxltPcLbymtd18ZA+Pj8VvaP5oapwkuGLAvmRVEMIzFPtuHv - FlBkyLJg2bbtIIv52essIEP2xwUu7p24Cy7s5VHjv+DCzJbmDsiyYEt5rqrKDMaXaEFjRuElQ9a+xp0w - DCXLMmNwXyNwtmE86n8io+3Kh7SRpqnEcSxlWZqPp+97A2c09eTKJV6b+1xg0eFMOVHulfcBzmizsX+l - +QuT4vqI9wEq0AjdmqGMVgAAAABJRU5ErkJggg== - - - + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAARdEVYdFRpdGxlAFJlc2V0O1VuZG87E4EW/wAAAYJJ @@ -253,7 +215,7 @@ K9kcZZfSFoz19a7lS5A6K0mdlaTOOsbVD4kgpriFBNvrAAAAAElFTkSuQmCC - + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAApdEVYdFRpdGxlAFJlbW92ZTtEZWxldGU7QmFycztS diff --git a/GUIs.ClientSuite/Workflow/frmWorkflowOverview.vb b/GUIs.ClientSuite/Workflow/frmWorkflowOverview.vb index 5eca8adf..5f05e7ba 100644 --- a/GUIs.ClientSuite/Workflow/frmWorkflowOverview.vb +++ b/GUIs.ClientSuite/Workflow/frmWorkflowOverview.vb @@ -5,45 +5,42 @@ Public Class frmWorkflowOverview Private WorkflowItems As BindingList(Of WorkflowItem) Private WorkflowDetails As BindingList(Of WorkflowDetail) - Private Sub frmWorkflowOverview_Load(sender As Object, e As EventArgs) Handles MyBase.Load - WorkflowItems = New BindingList(Of WorkflowItem) From { - New WorkflowItem() With { - .Title = "Eingangsrechnung XYZ", - .State = WorkflowItem.ItemState.Danger, - .WorkflowName = "Rechnungseingang", - .CreatedAt = DateTime.Now.AddDays(-3) - }, - New WorkflowItem() With { - .Title = "Eingangsrechnung ABC", - .State = WorkflowItem.ItemState.Normal, - .WorkflowName = "Rechnungseingang", - .CreatedAt = DateTime.Now - }, - New WorkflowItem() With { - .Title = "Mietvertrag XYZ läuft aus", - .State = WorkflowItem.ItemState.Warning, - .WorkflowName = "Vertragsprüfung", - .CreatedAt = DateTime.Now.AddDays(-1) - } - } + Private Async Sub frmWorkflowOverview_Load(sender As Object, e As EventArgs) Handles MyBase.Load + Dim oDatatable As DataTable + Dim oWorkflows As New List(Of WorkflowItem) - WorkflowDetails = New BindingList(Of WorkflowDetail) From { - New WorkflowDetail() With { - .Title = "foooo!" - } - } + Try + oDatatable = Await My.Common.Views.VWIDB_GUI_WF_OVERVIEW(70, 104) - GridWorkflowOverview.DataSource = WorkflowItems - GridWorkflowDetails.DataSource = WorkflowDetails + For Each oRow As DataRow In oDatatable.Rows + oWorkflows.Add(New WorkflowItem() With { + .Title = oRow.Item("REQUEST_TITLE"), + .State = oRow.Item("STATETITLE"), + .Process = oRow.Item("PROCESS_NAME") + }) + Next + Catch ex As Exception + ShowErrorMessage(ex) + End Try - gvOverview.GroupFormat = "[#image]{1} {2}" + GridOverview.DataSource = oWorkflows + NavControlOverview.DataSource = oWorkflows - With gvOverview.Columns.Item("CreatedAt") - .OptionsFilter.FilterPopupMode = DevExpress.XtraGrid.Columns.FilterPopupMode.DateAlt - .GroupInterval = DevExpress.XtraGrid.ColumnGroupInterval.DateRange - .SortOrder = DevExpress.Data.ColumnSortOrder.Descending - .Group() - End With + + + + + 'gvOverview.GroupFormat = "[#image]{1} {2}" + 'With gvOverview.Columns.Item("CreatedAt") + ' .OptionsFilter.FilterPopupMode = DevExpress.XtraGrid.Columns.FilterPopupMode.DateAlt + ' .GroupInterval = DevExpress.XtraGrid.ColumnGroupInterval.DateRange + ' .SortOrder = DevExpress.Data.ColumnSortOrder.Descending + ' .Group() + 'End With End Sub + + Private Sub frmWorkflowOverview_Shown(sender As Object, e As EventArgs) Handles Me.Shown + RibbonControl1.SelectPage(RibbonPage3) + End Sub End Class \ No newline at end of file diff --git a/Modules.Config/ConfigManager.vb b/Modules.Config/ConfigManager.vb index 27033859..96daa001 100644 --- a/Modules.Config/ConfigManager.vb +++ b/Modules.Config/ConfigManager.vb @@ -124,7 +124,9 @@ Public Class ConfigManager(Of T) Dim oType As Type = GetType(T) Dim oExcludedAttributeTypes = IIf(IsNothing(ExcludedAttributeTypes), New List(Of Type), ExcludedAttributeTypes) Dim oProperties = oType.GetProperties(). - Where(Function(p) p.CanRead And p.CanWrite). + Where(Function(p) + Return p.CanRead And p.CanWrite + End Function). Where(Function(p) For Each oAttributeType As Type In oExcludedAttributeTypes If Attribute.IsDefined(p, oAttributeType) Then