diff --git a/app/TaskFlow/My Project/licenses.licx b/app/TaskFlow/My Project/licenses.licx
index 81c59ed..1bfb691 100644
--- a/app/TaskFlow/My Project/licenses.licx
+++ b/app/TaskFlow/My Project/licenses.licx
@@ -1,15 +1,16 @@
-DevExpress.XtraEditors.Repository.RepositoryItemComboBox, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraEditors.Repository.RepositoryItemProgressBar, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraCharts.ChartControl, DevExpress.XtraCharts.v21.2.UI, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraVerticalGrid.PropertyGridControl, DevExpress.XtraVerticalGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraEditors.PictureEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.LookUpEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraBars.BarManager, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraNavBar.NavBarControl, DevExpress.XtraNavBar.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraDataLayout.DataLayoutControl, DevExpress.XtraLayout.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraLayout.LayoutControl, DevExpress.XtraLayout.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraEditors.Repository.RepositoryItemComboBox, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraDataLayout.DataLayoutControl, DevExpress.XtraLayout.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraEditors.PictureEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraVerticalGrid.PropertyGridControl, DevExpress.XtraVerticalGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraTreeList.TreeList, DevExpress.XtraTreeList.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraBars.BarManager, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraEditors.Repository.RepositoryItemProgressBar, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraCharts.ChartControl, DevExpress.XtraCharts.v21.2.UI, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraNavBar.NavBarControl, DevExpress.XtraNavBar.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
diff --git a/app/TaskFlow/Translations/frmMain_Strings.Designer.vb b/app/TaskFlow/Translations/frmMain_Strings.Designer.vb
index cc4f09d..2958b7e 100644
--- a/app/TaskFlow/Translations/frmMain_Strings.Designer.vb
+++ b/app/TaskFlow/Translations/frmMain_Strings.Designer.vb
@@ -92,7 +92,7 @@ Namespace My.Resources
End Property
'''
- ''' Sucht eine lokalisierte Zeichenfolge, die Aktuell keine Workflowdaten vorhanden! {0} ähnelt.
+ ''' Sucht eine lokalisierte Zeichenfolge, die Aktuell keine Workflowdaten vorhanden - {0} ähnelt.
'''
Friend Shared ReadOnly Property Aktuell_keine_Workflowdaten_vorhanden___0_() As String
Get
diff --git a/app/TaskFlow/Translations/frmMain_Strings.en.resx b/app/TaskFlow/Translations/frmMain_Strings.en.resx
index b32a79e..fc6ac88 100644
--- a/app/TaskFlow/Translations/frmMain_Strings.en.resx
+++ b/app/TaskFlow/Translations/frmMain_Strings.en.resx
@@ -120,36 +120,27 @@
Attention:
+
+ Currently no workflow data available - {0}
+
+
+ Current license has expired or is invalid!
+
Logged in users: {0}
Number of licenses: {0}
-
- Please close the currently open workflow!
-
-
- Bigger
-
-
- Smaller
-
-
- Normal
-
-
- Currently no workflow data available! {0}
-
-
- Current license has expired or is invalid!
-
Please configure a database connection!
Please contact your administrator!
+
+ Please close the currently open workflow!
+
Please select a profile!
@@ -177,9 +168,18 @@
Deactivate ({0}) Ghost Mode
+
+ Bigger
+
NOTE: Debug mode is switched on!
+
+ IDB Active
+
+
+ Smaller
+
Last synchronization: {0}
@@ -189,6 +189,9 @@
Mass completion could not be executed because windream could not be initialised!
+
+ Normal
+
Next activity check: {0} {1}
@@ -213,7 +216,4 @@
{0} Processes
-
- IDB Active
-
\ No newline at end of file
diff --git a/app/TaskFlow/Translations/frmMain_Strings.fr.resx b/app/TaskFlow/Translations/frmMain_Strings.fr.resx
index cf64f82..28a971b 100644
--- a/app/TaskFlow/Translations/frmMain_Strings.fr.resx
+++ b/app/TaskFlow/Translations/frmMain_Strings.fr.resx
@@ -120,36 +120,27 @@
Attention:
+
+ Actuellement, aucune donnée de workflow n'est disponible - {0}
+
+
+ La licence actuelle a expiré ou n'est plus valable !
+
Nombre d'utilisateurs connectés: {0}
Nombre de licences: {0}
-
- Veuillez fermer le workflow ouvert !
-
-
- Plus grand
-
-
- Petit
-
-
- Normal
-
-
- Actuellement, aucune donnée de workflow n'est disponible ! {0}
-
-
- La licence actuelle a expiré ou n'est plus valable !
-
Veuillez configurer une connexion à la base de données !
Veuillez contacter votre administrateur !
+
+ Veuillez fermer le workflow ouvert !
+
Veuillez sélectionner un profil !
@@ -177,9 +168,18 @@
Désactiver ({0}) le Mode Fantôme
+
+ Plus grand
+
REMARQUE : le mode de débogage est activé !
+
+ IDB Aktif
+
+
+ Petit
+
Dernière synchronisation : {0}
@@ -189,6 +189,9 @@
La clôture en masse n'a pas pu être exécutée parce que windream n'a pas pu être initialisé !
+
+ Normal
+
Prochaine vérification d'activité : {0} {1}
@@ -213,7 +216,4 @@
{0} Opérations
-
- IDB Aktif
-
\ No newline at end of file
diff --git a/app/TaskFlow/Translations/frmMain_Strings.resx b/app/TaskFlow/Translations/frmMain_Strings.resx
index 9b6af05..64fcfbf 100644
--- a/app/TaskFlow/Translations/frmMain_Strings.resx
+++ b/app/TaskFlow/Translations/frmMain_Strings.resx
@@ -121,7 +121,7 @@
Achtung:
- Aktuell keine Workflowdaten vorhanden! {0}
+ Aktuell keine Workflowdaten vorhanden - {0}
Aktuelle Lizenz ist abgelaufen oder ungültig!
diff --git a/app/TaskFlow/frmMain.Designer.vb b/app/TaskFlow/frmMain.Designer.vb
index b4318a4..495bf4c 100644
--- a/app/TaskFlow/frmMain.Designer.vb
+++ b/app/TaskFlow/frmMain.Designer.vb
@@ -28,8 +28,7 @@ Partial Class frmMain
Me.DD_DMSLiteDataSet = New taskFLOW.DD_DMSLiteDataSet()
Me.TableAdapterManager = New taskFLOW.DD_DMSLiteDataSetTableAdapters.TableAdapterManager()
Me.Panel1 = New System.Windows.Forms.Panel()
- Me.GridControlWorkflows = New DevExpress.XtraGrid.GridControl()
- Me.GridViewWorkflows = New DevExpress.XtraGrid.Views.Grid.GridView()
+ Me.TreeList_Cockpit = New DevExpress.XtraTreeList.TreeList()
Me.RibbonControl1 = New DevExpress.XtraBars.Ribbon.RibbonControl()
Me.bbtniRefresh = New DevExpress.XtraBars.BarButtonItem()
Me.bbtniMonitor = New DevExpress.XtraBars.BarButtonItem()
@@ -99,6 +98,9 @@ Partial Class frmMain
Me.RibbonPageGroup8 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RepositoryItemTrackBar1 = New DevExpress.XtraEditors.Repository.RepositoryItemTrackBar()
Me.RibbonStatusBar1 = New DevExpress.XtraBars.Ribbon.RibbonStatusBar()
+ Me.ImageCollection1 = New DevExpress.Utils.ImageCollection(Me.components)
+ Me.GridControlWorkflows = New DevExpress.XtraGrid.GridControl()
+ Me.GridViewWorkflows = New DevExpress.XtraGrid.Views.Grid.GridView()
Me.Panel2 = New System.Windows.Forms.Panel()
Me.lblCaptionMainGrid = New System.Windows.Forms.Label()
Me.NavBarControl1 = New DevExpress.XtraNavBar.NavBarControl()
@@ -196,12 +198,14 @@ Partial Class frmMain
Me.BarButtonItem9 = New DevExpress.XtraBars.BarButtonItem()
CType(Me.DD_DMSLiteDataSet, System.ComponentModel.ISupportInitialize).BeginInit()
Me.Panel1.SuspendLayout()
- CType(Me.GridControlWorkflows, System.ComponentModel.ISupportInitialize).BeginInit()
- CType(Me.GridViewWorkflows, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.TreeList_Cockpit, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.RepositoryItemProgressBar1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.cmbGridFontSize, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.RepositoryItemTrackBar1, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.ImageCollection1, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.GridControlWorkflows, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.GridViewWorkflows, System.ComponentModel.ISupportInitialize).BeginInit()
Me.Panel2.SuspendLayout()
CType(Me.NavBarControl1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.cmsNavPane.SuspendLayout()
@@ -247,48 +251,36 @@ Partial Class frmMain
'Panel1
'
Me.Panel1.BackColor = System.Drawing.Color.Transparent
+ Me.Panel1.Controls.Add(Me.TreeList_Cockpit)
Me.Panel1.Controls.Add(Me.GridControlWorkflows)
Me.Panel1.Controls.Add(Me.Panel2)
Me.Panel1.Controls.Add(Me.NavBarControl1)
resources.ApplyResources(Me.Panel1, "Panel1")
Me.Panel1.Name = "Panel1"
'
- 'GridControlWorkflows
+ 'TreeList_Cockpit
'
- resources.ApplyResources(Me.GridControlWorkflows, "GridControlWorkflows")
- Me.GridControlWorkflows.MainView = Me.GridViewWorkflows
- Me.GridControlWorkflows.MenuManager = Me.RibbonControl1
- Me.GridControlWorkflows.Name = "GridControlWorkflows"
- Me.GridControlWorkflows.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.GridViewWorkflows})
- '
- 'GridViewWorkflows
- '
- Me.GridViewWorkflows.Appearance.EvenRow.BackColor = System.Drawing.Color.Azure
- Me.GridViewWorkflows.Appearance.EvenRow.Options.UseBackColor = True
- Me.GridViewWorkflows.Appearance.FooterPanel.Font = CType(resources.GetObject("GridViewWorkflows.Appearance.FooterPanel.Font"), System.Drawing.Font)
- Me.GridViewWorkflows.Appearance.FooterPanel.Options.UseFont = True
- Me.GridViewWorkflows.Appearance.ViewCaption.Font = CType(resources.GetObject("GridViewWorkflows.Appearance.ViewCaption.Font"), System.Drawing.Font)
- Me.GridViewWorkflows.Appearance.ViewCaption.ForeColor = System.Drawing.Color.Black
- Me.GridViewWorkflows.Appearance.ViewCaption.Options.UseFont = True
- Me.GridViewWorkflows.Appearance.ViewCaption.Options.UseForeColor = True
- Me.GridViewWorkflows.Appearance.ViewCaption.Options.UseTextOptions = True
- Me.GridViewWorkflows.Appearance.ViewCaption.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Near
- Me.GridViewWorkflows.GridControl = Me.GridControlWorkflows
- Me.GridViewWorkflows.Name = "GridViewWorkflows"
- Me.GridViewWorkflows.OptionsBehavior.AllowAddRows = DevExpress.Utils.DefaultBoolean.[False]
- Me.GridViewWorkflows.OptionsBehavior.AllowDeleteRows = DevExpress.Utils.DefaultBoolean.[False]
- Me.GridViewWorkflows.OptionsBehavior.AllowFixedGroups = DevExpress.Utils.DefaultBoolean.[True]
- Me.GridViewWorkflows.OptionsBehavior.AllowGroupExpandAnimation = DevExpress.Utils.DefaultBoolean.[True]
- Me.GridViewWorkflows.OptionsBehavior.Editable = False
- Me.GridViewWorkflows.OptionsClipboard.CopyColumnHeaders = DevExpress.Utils.DefaultBoolean.[False]
- Me.GridViewWorkflows.OptionsSelection.MultiSelect = True
- Me.GridViewWorkflows.OptionsSelection.MultiSelectMode = DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.CellSelect
- Me.GridViewWorkflows.OptionsView.ColumnAutoWidth = False
- Me.GridViewWorkflows.OptionsView.EnableAppearanceEvenRow = True
- Me.GridViewWorkflows.OptionsView.ShowAutoFilterRow = True
- Me.GridViewWorkflows.OptionsView.ShowErrorPanel = DevExpress.Utils.DefaultBoolean.[True]
- Me.GridViewWorkflows.OptionsView.ShowHorizontalLines = DevExpress.Utils.DefaultBoolean.[False]
- Me.GridViewWorkflows.OptionsView.ShowVerticalLines = DevExpress.Utils.DefaultBoolean.[False]
+ resources.ApplyResources(Me.TreeList_Cockpit, "TreeList_Cockpit")
+ Me.TreeList_Cockpit.ImageIndexFieldName = "ICON_INDEX"
+ Me.TreeList_Cockpit.KeyFieldName = "PK_CFG_COCKPIT_DEFINITION_ID"
+ Me.TreeList_Cockpit.MenuManager = Me.RibbonControl1
+ Me.TreeList_Cockpit.Name = "TreeList_Cockpit"
+ Me.TreeList_Cockpit.OptionsBehavior.Editable = False
+ Me.TreeList_Cockpit.OptionsBehavior.PopulateServiceColumns = True
+ Me.TreeList_Cockpit.OptionsBehavior.ReadOnly = True
+ Me.TreeList_Cockpit.OptionsLayout.AddNewColumns = False
+ Me.TreeList_Cockpit.OptionsMenu.ShowExpandCollapseItems = False
+ Me.TreeList_Cockpit.OptionsSelection.EnableAppearanceFocusedCell = False
+ Me.TreeList_Cockpit.OptionsView.ShowColumns = False
+ Me.TreeList_Cockpit.OptionsView.ShowFilterPanelMode = DevExpress.XtraTreeList.ShowFilterPanelMode.Never
+ Me.TreeList_Cockpit.OptionsView.ShowFirstLines = False
+ Me.TreeList_Cockpit.OptionsView.ShowHorzLines = False
+ Me.TreeList_Cockpit.OptionsView.ShowIndentAsRowStyle = True
+ Me.TreeList_Cockpit.OptionsView.ShowIndicator = False
+ Me.TreeList_Cockpit.OptionsView.ShowVertLines = False
+ Me.TreeList_Cockpit.OptionsView.TreeLineStyle = DevExpress.XtraTreeList.LineStyle.Dark
+ Me.TreeList_Cockpit.ParentFieldName = "Parent_ID"
+ Me.TreeList_Cockpit.SelectImageList = Me.ImageCollection1
'
'RibbonControl1
'
@@ -863,6 +855,51 @@ Partial Class frmMain
Me.RibbonStatusBar1.Name = "RibbonStatusBar1"
Me.RibbonStatusBar1.Ribbon = Me.RibbonControl1
'
+ 'ImageCollection1
+ '
+ resources.ApplyResources(Me.ImageCollection1, "ImageCollection1")
+ Me.ImageCollection1.ImageStream = CType(resources.GetObject("ImageCollection1.ImageStream"), DevExpress.Utils.ImageCollectionStreamer)
+ Me.ImageCollection1.Images.SetKeyName(0, "splittablecells_32x32.png")
+ Me.ImageCollection1.Images.SetKeyName(1, "bosaleitem_32x32.png")
+ Me.ImageCollection1.Images.SetKeyName(2, "bar2_32x32.png")
+ '
+ 'GridControlWorkflows
+ '
+ resources.ApplyResources(Me.GridControlWorkflows, "GridControlWorkflows")
+ Me.GridControlWorkflows.MainView = Me.GridViewWorkflows
+ Me.GridControlWorkflows.MenuManager = Me.RibbonControl1
+ Me.GridControlWorkflows.Name = "GridControlWorkflows"
+ Me.GridControlWorkflows.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.GridViewWorkflows})
+ '
+ 'GridViewWorkflows
+ '
+ Me.GridViewWorkflows.Appearance.EvenRow.BackColor = System.Drawing.Color.Azure
+ Me.GridViewWorkflows.Appearance.EvenRow.Options.UseBackColor = True
+ Me.GridViewWorkflows.Appearance.FooterPanel.Font = CType(resources.GetObject("GridViewWorkflows.Appearance.FooterPanel.Font"), System.Drawing.Font)
+ Me.GridViewWorkflows.Appearance.FooterPanel.Options.UseFont = True
+ Me.GridViewWorkflows.Appearance.ViewCaption.Font = CType(resources.GetObject("GridViewWorkflows.Appearance.ViewCaption.Font"), System.Drawing.Font)
+ Me.GridViewWorkflows.Appearance.ViewCaption.ForeColor = System.Drawing.Color.Black
+ Me.GridViewWorkflows.Appearance.ViewCaption.Options.UseFont = True
+ Me.GridViewWorkflows.Appearance.ViewCaption.Options.UseForeColor = True
+ Me.GridViewWorkflows.Appearance.ViewCaption.Options.UseTextOptions = True
+ Me.GridViewWorkflows.Appearance.ViewCaption.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Near
+ Me.GridViewWorkflows.GridControl = Me.GridControlWorkflows
+ Me.GridViewWorkflows.Name = "GridViewWorkflows"
+ Me.GridViewWorkflows.OptionsBehavior.AllowAddRows = DevExpress.Utils.DefaultBoolean.[False]
+ Me.GridViewWorkflows.OptionsBehavior.AllowDeleteRows = DevExpress.Utils.DefaultBoolean.[False]
+ Me.GridViewWorkflows.OptionsBehavior.AllowFixedGroups = DevExpress.Utils.DefaultBoolean.[True]
+ Me.GridViewWorkflows.OptionsBehavior.AllowGroupExpandAnimation = DevExpress.Utils.DefaultBoolean.[True]
+ Me.GridViewWorkflows.OptionsBehavior.Editable = False
+ Me.GridViewWorkflows.OptionsClipboard.CopyColumnHeaders = DevExpress.Utils.DefaultBoolean.[False]
+ Me.GridViewWorkflows.OptionsSelection.MultiSelect = True
+ Me.GridViewWorkflows.OptionsSelection.MultiSelectMode = DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.CellSelect
+ Me.GridViewWorkflows.OptionsView.ColumnAutoWidth = False
+ Me.GridViewWorkflows.OptionsView.EnableAppearanceEvenRow = True
+ Me.GridViewWorkflows.OptionsView.ShowAutoFilterRow = True
+ Me.GridViewWorkflows.OptionsView.ShowErrorPanel = DevExpress.Utils.DefaultBoolean.[True]
+ Me.GridViewWorkflows.OptionsView.ShowHorizontalLines = DevExpress.Utils.DefaultBoolean.[False]
+ Me.GridViewWorkflows.OptionsView.ShowVerticalLines = DevExpress.Utils.DefaultBoolean.[False]
+ '
'Panel2
'
Me.Panel2.Controls.Add(Me.lblCaptionMainGrid)
@@ -878,9 +915,9 @@ Partial Class frmMain
'
Me.NavBarControl1.ActiveGroup = Me.NavBarGroupProfiles
Me.NavBarControl1.ContextMenuStrip = Me.cmsNavPane
- resources.ApplyResources(Me.NavBarControl1, "NavBarControl1")
Me.NavBarControl1.Groups.AddRange(New DevExpress.XtraNavBar.NavBarGroup() {Me.NavBarGroupMore, Me.NavBarGroupProfiles})
Me.NavBarControl1.Items.AddRange(New DevExpress.XtraNavBar.NavBarItem() {Me.NavBarItemOverview})
+ resources.ApplyResources(Me.NavBarControl1, "NavBarControl1")
Me.NavBarControl1.Name = "NavBarControl1"
Me.NavBarControl1.OptionsNavPane.ExpandedWidth = CType(resources.GetObject("resource.ExpandedWidth"), Integer)
Me.NavBarControl1.PaintStyleKind = DevExpress.XtraNavBar.NavBarViewKind.NavigationPane
@@ -911,7 +948,6 @@ Partial Class frmMain
'NavBarGroupMore
'
resources.ApplyResources(Me.NavBarGroupMore, "NavBarGroupMore")
- Me.NavBarGroupMore.Expanded = True
Me.NavBarGroupMore.GroupStyle = DevExpress.XtraNavBar.NavBarGroupStyle.LargeIconsText
Me.NavBarGroupMore.ImageOptions.LargeImage = CType(resources.GetObject("NavBarGroupMore.ImageOptions.LargeImage"), System.Drawing.Image)
Me.NavBarGroupMore.ItemLinks.AddRange(New DevExpress.XtraNavBar.NavBarItemLink() {New DevExpress.XtraNavBar.NavBarItemLink(Me.NavBarItemOverview)})
@@ -1621,12 +1657,14 @@ Partial Class frmMain
Me.StatusBar = Me.RibbonStatusBar1
CType(Me.DD_DMSLiteDataSet, System.ComponentModel.ISupportInitialize).EndInit()
Me.Panel1.ResumeLayout(False)
- CType(Me.GridControlWorkflows, System.ComponentModel.ISupportInitialize).EndInit()
- CType(Me.GridViewWorkflows, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.TreeList_Cockpit, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.RepositoryItemProgressBar1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.cmbGridFontSize, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.RepositoryItemTrackBar1, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.ImageCollection1, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.GridControlWorkflows, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.GridViewWorkflows, System.ComponentModel.ISupportInitialize).EndInit()
Me.Panel2.ResumeLayout(False)
Me.Panel2.PerformLayout()
CType(Me.NavBarControl1, System.ComponentModel.ISupportInitialize).EndInit()
@@ -1812,4 +1850,6 @@ Partial Class frmMain
Friend WithEvents BSIVERSION1 As DevExpress.XtraBars.BarStaticItem
Friend WithEvents barbtnitmsaveLogfiles As DevExpress.XtraBars.BarButtonItem
Friend WithEvents bsitmCount As DevExpress.XtraBars.BarStaticItem
+ Friend WithEvents TreeList_Cockpit As DevExpress.XtraTreeList.TreeList
+ Friend WithEvents ImageCollection1 As DevExpress.Utils.ImageCollection
End Class
diff --git a/app/TaskFlow/frmMain.resx b/app/TaskFlow/frmMain.resx
index f2b33a3..a2cb716 100644
--- a/app/TaskFlow/frmMain.resx
+++ b/app/TaskFlow/frmMain.resx
@@ -125,7 +125,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADw
- CAAAAk1TRnQBSQFMAgEBAgEAAQgBDAEIAQwBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
+ CAAAAk1TRnQBSQFMAgEBAgEAASABDAEgAQwBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
@@ -172,19 +172,12 @@
179, 17
-
-
- Fill
-
-
- 233, 24
+
+ Tahoma, 9.75pt
-
- Microsoft Sans Serif, 8.25pt
-
-
- Segoe UI, 12pt
+
+ 3, 6
Aktualisieren
@@ -1538,8 +1531,128 @@
4
+
+ 760, 54
+
+
+ 24, 24
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLlV0aWxzLnYyMS4yLCBWZXJzaW9uPTIxLjIu
+ NC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEMAwAAAFFT
+ eXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRv
+ a2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAAChEZXZFeHByZXNzLlV0aWxzLkltYWdlQ29sbGVjdGlvblN0
+ cmVhbWVyAgAAAAlJbWFnZVNpemUERGF0YQQHE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAAgIAAAAF/P//
+ /xNTeXN0ZW0uRHJhd2luZy5TaXplAgAAAAV3aWR0aAZoZWlnaHQAAAgIAwAAABgAAAAYAAAACQUAAAAP
+ BQAAAPQRAAACCgYAAIlQTkcNChoKAAAADUlIRFIAAAAYAAAAGAgGAAAA4Hc9+AAAAAFzUkdCAK7OHOkA
+ AAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAFn0lEQVRIS72WaVBTVxiGL1W7bzPd
+ pHamta1VK+NoW2stY611bIutS1vqgqxGkEFgAIkbAuKCYgTZVYoLqyJJMAoIRVHZAgGCiODKlrCDQBay
+ kOXtnJsbCLSd6a/emXeSSSbP8+U73zn3UtT/dFlRFPWMRaZMytR/yTSLPDsp5HeES1mFpt6xCbv08Mz+
+ rCZuaFYTN+RCI3dfZiM3KLORuye9kbs77R6Xfb6exz5Xzws4U0fHL1nM802q4fmcruF5nxLxvRIr+Z4J
+ lXyPhEq+e7yQ73rshgMjoaxCMxo2NkkVMF9GJgYj0CSVw2A00u/1RiP0BlNG9UYIqjroV63OCI3OAM2o
+ ESqdAX0yDVgx5Xzmn1BWQWn1mxqlinEwCMwEzBf3QEeADFSrN0DDAI/xm6AaNUA1qseIxgCFRg+5Wg9J
+ vwpuUWU5FEU9TwTP7EkRO9yTKmgwqZRUbBIAebU9NFxLw5lKdQaoRw2I4DVBpTVgRGuAUqMfE7T3j8Al
+ suTymGDn2WoHrrALiQUtSCxoRfy1FsTlNyM27wlY6V5Y9cdC2J1egB9OzsfKBBusiJuH5TFzsezEHCyN
+ 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
+
+
+
+ 227, 352
+
+
+ 11
+
+
+ TreeList_Cockpit
+
+
+ DevExpress.XtraTreeList.TreeList, DevExpress.XtraTreeList.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+
+
+ Panel1
+
+
+ 0
+
+
+ 398, 24
+
+
+ Microsoft Sans Serif, 8.25pt
+
+
+ Segoe UI, 12pt
+
- 1240, 656
+ 1075, 656
10
@@ -1554,7 +1667,7 @@
Panel1
- 0
+ 1
lblCaptionMainGrid
@@ -1568,9 +1681,6 @@
0
-
- Top
-
233, 0
@@ -1590,7 +1700,7 @@
Panel1
- 1
+ 2
weitere Profile
@@ -1656,9 +1766,6 @@
System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- Left
-
Hauptansicht
@@ -1776,13 +1883,13 @@
- 0, 0
+ 12, 375
- 233
+ 196
- 233, 680
+ 196, 245
5
@@ -1800,8 +1907,9 @@
Panel1
- 2
+ 3
+
Fill
@@ -2309,12 +2417,6 @@
taskFLOW.DD_DMSLiteDataSetTableAdapters.TableAdapterManager, DD_DMSLiteDataSet.Designer.vb.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
-
- GridViewWorkflows
-
-
- DevExpress.XtraGrid.Views.Grid.GridView, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-
bbtniRefresh
@@ -2717,6 +2819,18 @@
DevExpress.XtraEditors.Repository.RepositoryItemTrackBar, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+
+ ImageCollection1
+
+
+ DevExpress.Utils.ImageCollection, DevExpress.Utils.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+
+
+ GridViewWorkflows
+
+
+ DevExpress.XtraGrid.Views.Grid.GridView, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+
NavBarGroupProfiles
diff --git a/app/TaskFlow/frmMain.vb b/app/TaskFlow/frmMain.vb
index 6dd7227..0c7c182 100644
--- a/app/TaskFlow/frmMain.vb
+++ b/app/TaskFlow/frmMain.vb
@@ -41,7 +41,7 @@ Public Class frmMain
Private GridCursorLocation As System.Drawing.Point
Private GRID_LOAD_TYPE As String = "OVERVIEW"
Private GRID_INV_COL_REMOVED As Boolean = False
- Private NO_WORKFLOWITEMS As Boolean = False
+ Private NO_WORKFLOW_ITEMS As Boolean = False
Private InResetlayout As Boolean = False
Private RefreshHelper As RefreshHelper
Private _FormValidator As frmValidator
@@ -72,6 +72,9 @@ Public Class frmMain
Private Const FA_NONE = "NONE"
Public Const NAVBAR_CLICKED = "NAVBAR LINK CLICKED"
+ Private CUSTOM_OVERVIEW_SQL As String = String.Empty
+ Private COCKPIT_CONFIG_ID As Integer = 0
+
Private Class S
Inherits My.Resources.frmMain_Strings
@@ -399,6 +402,10 @@ Public Class frmMain
LOGGER.Error(ex)
MsgBox("Unexpected Error in LoadForm - Step 4: " & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Attention:")
End Try
+
+ Load_Treeview()
+
+
LoadNavBar()
AddHandler NavBarControl1.LinkClicked, AddressOf navBar_LinkClicked
If Not IsNothing(CURR_DT_VWPM_PROFILE_AH_WORKFLOW) Then
@@ -542,6 +549,124 @@ Public Class frmMain
FormOpenClose = False
End Sub
+ Private Sub Load_Treeview()
+ Try
+ Dim oSQL = $"SELECT * FROM [dbo].[FNTF_GET_COCKPIT_DEFINITION] ({USER_ID},'{USER_LANGUAGE}')"
+ Dim oDT_STRUCTURE_NODES As DataTable = DatabaseFallback.GetDatatableECM(oSQL)
+ If Not IsNothing(oDT_STRUCTURE_NODES) Then
+ If oDT_STRUCTURE_NODES.Rows.Count > 0 Then
+ TreeList_Cockpit.BeginUpdate()
+ Try
+ TreeList_Cockpit.DataSource = oDT_STRUCTURE_NODES
+ TreeList_Cockpit.KeyFieldName = "PK_CFG_COCKPIT_DEFINITION_ID"
+ TreeList_Cockpit.ParentFieldName = "PARENT_ID"
+ TreeList_Cockpit.Columns("PK_RESULT_ID").SortOrder = SortOrder.Ascending
+
+
+ ' ===== MODERNES DESIGN =====
+ ' Schriftgröße und -art
+ TreeList_Cockpit.Appearance.Row.Font = New Font("Segoe UI", 12, FontStyle.Regular)
+ TreeList_Cockpit.Appearance.FocusedRow.Font = New Font("Segoe UI", 12, FontStyle.Bold)
+ TreeList_Cockpit.Appearance.HideSelectionRow.Font = New Font("Segoe UI", 12, FontStyle.Regular)
+
+ ' Modernes Farbschema (passend zum Office2019-Skin)
+ TreeList_Cockpit.Appearance.Row.BackColor = Color.White
+ TreeList_Cockpit.Appearance.Row.ForeColor = Color.FromArgb(50, 50, 50)
+ TreeList_Cockpit.Appearance.FocusedRow.BackColor = Color.FromArgb(210, 230, 255)
+ TreeList_Cockpit.Appearance.FocusedRow.ForeColor = Color.FromArgb(20, 20, 20)
+ TreeList_Cockpit.Appearance.HideSelectionRow.BackColor = Color.FromArgb(225, 235, 250)
+ TreeList_Cockpit.Appearance.HideSelectionRow.ForeColor = Color.FromArgb(50, 50, 50)
+
+ ' Zeilenhöhe erhöhen für bessere Lesbarkeit
+ TreeList_Cockpit.RowHeight = 28
+
+
+ Dim oVisibleColumns As New System.Collections.Generic.HashSet(Of String)(StringComparer.OrdinalIgnoreCase) From {"NAME"}
+ For Each oColumn As DevExpress.XtraTreeList.Columns.TreeListColumn In TreeList_Cockpit.Columns
+ oColumn.Visible = oVisibleColumns.Contains(oColumn.FieldName)
+ Next
+ Finally
+ TreeList_Cockpit.EndUpdate()
+ End Try
+ ' AddHandler TreeList1.GetSelectImage, AddressOf TreeList1_GetSelectImage
+ TreeList_Cockpit.Refresh() ' ✅ Erzwingt sofortiges Neuzeichnen der Icons
+
+
+ ' ===== ANZAHL ASYNCHRON NACHLADEN =====
+ If oDT_STRUCTURE_NODES.Columns.Contains("SQL_QUERY_COUNT") Then
+ AppendCountsToTreeAsync()
+ End If
+ End If
+ End If
+ Catch ex As Exception
+ LOGGER.Error(ex)
+ End Try
+ End Sub
+
+ Private Async Sub AppendCountsToTreeAsync()
+ Try
+ LOGGER.Debug("AppendCountsToTreeAsync: Starting background count queries...")
+
+ ' Alle Knoten mit ihren SQL-Befehlen im UI-Thread über NodesIterator einsammeln
+ Dim oWorkItems As New List(Of (Node As DevExpress.XtraTreeList.Nodes.TreeListNode, SQL As String, OriginalName As String))
+
+ TreeList_Cockpit.NodesIterator.DoOperation(
+ Sub(oNode As DevExpress.XtraTreeList.Nodes.TreeListNode)
+ Dim oSqlCount As Object = oNode.GetValue("SQL_QUERY_COUNT")
+ If oSqlCount IsNot Nothing AndAlso Not IsDBNull(oSqlCount) AndAlso Not String.IsNullOrWhiteSpace(oSqlCount.ToString()) Then
+ Dim oPreparedSQL As String = PrepareSQLWithReplacements(oSqlCount.ToString())
+ Dim oName As String = oNode.GetValue("NAME")?.ToString()
+ If Not String.IsNullOrWhiteSpace(oName) Then
+ oWorkItems.Add((oNode, oPreparedSQL, oName))
+ End If
+ Else
+ LOGGER.Debug($"AppendCountsToTreeAsync: Node [{oNode.GetValue("NAME")}] has no valid SQL_QUERY_COUNT, skipping.")
+ End If
+ End Sub)
+
+ If oWorkItems.Count = 0 Then
+ Exit Sub
+ End If
+
+ LOGGER.Debug($"AppendCountsToTreeAsync: {oWorkItems.Count} node(s) with SQL_QUERY_COUNT found")
+
+ ' DB-Abfragen parallel im Hintergrund ausführen
+ Dim oResults As New List(Of (Node As DevExpress.XtraTreeList.Nodes.TreeListNode, OriginalName As String, Count As String))
+
+ Await Task.Run(Sub()
+ For Each oItem In oWorkItems
+ Try
+ Dim oResult As Object = DatabaseFallback.GetScalarValueECM(oItem.SQL)
+ If oResult IsNot Nothing AndAlso Not IsDBNull(oResult) Then
+ SyncLock oResults
+ oResults.Add((oItem.Node, oItem.OriginalName, oResult.ToString()))
+ End SyncLock
+ End If
+ Catch ex As Exception
+ LOGGER.Warn($"AppendCountsToTreeAsync: Count query failed for node [{oItem.OriginalName}] - {ex.Message}")
+ End Try
+ Next
+ End Sub)
+
+ ' Ergebnisse zurück im UI-Thread auf die Knoten schreiben
+ TreeList_Cockpit.BeginUpdate()
+ Try
+ For Each oResult In oResults
+ oResult.Node.SetValue("NAME", $"{oResult.OriginalName} ({oResult.Count})")
+ LOGGER.Debug($"AppendCountsToTreeAsync: Node [{oResult.OriginalName}] → [{oResult.OriginalName} ({oResult.Count})]")
+ Next
+ Finally
+ TreeList_Cockpit.EndUpdate()
+ End Try
+
+ TreeList_Cockpit.Refresh()
+ LOGGER.Debug("AppendCountsToTreeAsync: Finished")
+
+ Catch ex As Exception
+ LOGGER.Error(ex)
+ End Try
+ End Sub
+
Private Function IsPositionVisible(position As System.Drawing.Point) As Boolean
For Each scr As Screen In Screen.AllScreens
If scr.WorkingArea.Contains(position) Then
@@ -686,14 +811,21 @@ Public Class frmMain
End Function
Private Function GetLayoutName_GridMain()
- Dim Filename As String = String.Format("DevExpressGridViewOverview_UserLayout_{0}_{1}.xml", GRID_LOAD_TYPE, USER_LANGUAGE)
+ Dim oLoadTypeSuffix As String = GRID_LOAD_TYPE
+
+ ' Bei mehreren Gesamtübersichten die COCKPIT_CONFIG_ID als Suffix anhängen
+ If GRID_LOAD_TYPE = "OVERVIEW" AndAlso COCKPIT_CONFIG_ID > 0 Then
+ oLoadTypeSuffix = $"OVERVIEW_{COCKPIT_CONFIG_ID}"
+ End If
+
+ Dim Filename As String = String.Format("DevExpressGridViewOverview_UserLayout_{0}_{1}.xml", oLoadTypeSuffix, USER_LANGUAGE)
LOGGER.Debug($"LayoutFilename is: {Filename}")
Return System.IO.Path.Combine(USER_CONFIG_DIRECTORY, Filename)
End Function
Private Sub SaveGridLayout()
Timer_Inactivity_Reset_Disable("SaveGridLayout")
- If NO_WORKFLOWITEMS = True Then
+ If NO_WORKFLOW_ITEMS = True Then
Exit Sub
End If
@@ -708,7 +840,7 @@ Public Class frmMain
End Sub
Private Sub RestoreLayout()
- If NO_WORKFLOWITEMS = True Then
+ If NO_WORKFLOW_ITEMS = True Then
Exit Sub
End If
@@ -1090,13 +1222,13 @@ Public Class frmMain
Dim oCOUNT = DT_CURR_WF_ITEMS.Rows.Count
' Workflowitems-Status setzen
- NO_WORKFLOWITEMS = (oCOUNT = 0)
+ NO_WORKFLOW_ITEMS = (oCOUNT = 0)
' Caption IMMER aktualisieren (vor Hash-Prüfung!)
UpdateGridCaption()
' Datenquelle bei leeren Items zurücksetzen
- If NO_WORKFLOWITEMS Then
+ If NO_WORKFLOW_ITEMS Then
GridControlWorkflows.Visible = False
bindsourcegrid.DataSource = Nothing
GridControlWorkflows.DataSource = Nothing
@@ -1463,12 +1595,13 @@ Public Class frmMain
End If
If Not loadSuccess Then
- LOGGER.Warn("Daten konnten nicht geladen werden")
+ LOGGER.Warn($"LoadProfileData for Profile-ID [{CURRENT_CLICKED_PROFILE_ID}] - Title [{CURRENT_CLICKED_PROFILE_TITLE}] failed or has no Data - exiting Decide_Load")
Exit Function
End If
' ========== NACHBEARBEITUNG ==========
ApplyPostLoadSettings()
+
GridIsLoaded = True
' ========== CAPTION FINAL SICHERSTELLEN ==========
' ApplyPostLoadSettings kann durch Spalten-Events den Caption überschreiben,
@@ -1514,6 +1647,7 @@ Public Class frmMain
End If
Try
+ GridControlWorkflows_Visible()
' ========== GRID UPDATES VORBEREITEN ==========
If GridControlWorkflows.Visible Then
GridControlWorkflows.BeginUpdate()
@@ -1525,7 +1659,7 @@ Public Class frmMain
' ========== PROFILE VALIDIEREN ==========
If BASEDATA_DT_VW_PROFILE_USER.Rows.Count = 0 Then
LOGGER.Info("Attention: No profiles for user: '" & USER_USERNAME & "' configured!", False)
- NO_WORKFLOWITEMS = True
+ NO_WORKFLOW_ITEMS = True
bsiMessage.Caption = "NO PROFILES FOR USER"
bsiMessage.ItemAppearance.Normal.BackColor = Color.Red
bsiMessage.ItemAppearance.Normal.ForeColor = Color.Black
@@ -1550,10 +1684,18 @@ Public Class frmMain
End If
' ========== SQL VORBEREITEN ==========
- Dim oSQLOverview = BASEDATA_DT_CONFIG.Rows(0).Item("SQL_PROFILE_MAIN_VIEW")
+ Dim oSQLOverview As String
+ If Not String.IsNullOrWhiteSpace(CUSTOM_OVERVIEW_SQL) Then
+ LOGGER.Debug($"[LoadOverviewData] Using CUSTOM_OVERVIEW_SQL from TreeList node")
+ oSQLOverview = CUSTOM_OVERVIEW_SQL
+ CUSTOM_OVERVIEW_SQL = String.Empty
+ Else
+ oSQLOverview = BASEDATA_DT_CONFIG.Rows(0).Item("SQL_PROFILE_MAIN_VIEW")
+ End If
If IsDBNull(oSQLOverview) OrElse Not oSQLOverview.ToString.Contains("GROUP_TEXT") Then
- NO_WORKFLOWITEMS = True
+ LOGGER.Warn("Overview SQL is Null or not properly configured (missing or GROUP_TEXT column) - cannot load overview data")
+ NO_WORKFLOW_ITEMS = True
GridControlWorkflows.Visible = False
bindsourcegrid.DataSource = Nothing
GridControlWorkflows.DataSource = Nothing
@@ -1583,7 +1725,7 @@ Public Class frmMain
End If
If IsNothing(DT_CURR_WF_ITEMS) Then
- NO_WORKFLOWITEMS = True
+ NO_WORKFLOW_ITEMS = True
GridControlWorkflows.Visible = False
Return False
End If
@@ -1591,10 +1733,10 @@ Public Class frmMain
LOGGER.Debug($"Datatable CURR_DT_OVERVIEW loaded: {DT_CURR_WF_ITEMS.Rows.Count} rows")
' ========== DATEN VERARBEITEN ==========
- NO_WORKFLOWITEMS = (DT_CURR_WF_ITEMS.Rows.Count = 0)
+ NO_WORKFLOW_ITEMS = (DT_CURR_WF_ITEMS.Rows.Count = 0)
UpdateGridCaption()
- If NO_WORKFLOWITEMS Then
+ If NO_WORKFLOW_ITEMS Then
GridControlWorkflows.Visible = False
bindsourcegrid.DataSource = Nothing
GridControlWorkflows.DataSource = Nothing
@@ -1687,14 +1829,13 @@ Public Class frmMain
Load_Profiles_for_User()
Dim expression As String = "GUID = " & CURRENT_CLICKED_PROFILE_ID
- Dim foundRow As DataRow = CURR_DT_VWPM_PROFILE_ACTIVE.Select(expression).FirstOrDefault()
+
+ Dim foundRow As DataRow = CURRENT_DT_PROFILES.Select(expression).FirstOrDefault()
If foundRow Is Nothing Then
+ LOGGER.Warn($"LoadProfileData for Profile-ID [{CURRENT_CLICKED_PROFILE_ID}] - Title [{CURRENT_CLICKED_PROFILE_TITLE}] not found - exiting Decide_Load")
Return False
End If
- ' === FIX: Grid sichtbar machen bevor BeginUpdate ===
- GridControlWorkflows_Visible()
-
If GridControlWorkflows.Visible Then
GridControlWorkflows.BeginUpdate()
gridUpdateStarted = True
@@ -1709,22 +1850,22 @@ Public Class frmMain
DT_CURR_WF_ITEMS = Await DatabaseFallback.GetDatatableECMAsync(oSQL)
If IsNothing(DT_CURR_WF_ITEMS) Then
- LOGGER.Warn("Daten konnten nicht geladen werden für Profil: " & CURRENT_CLICKED_PROFILE_TITLE)
+ LOGGER.Warn($"LoadProfileData for Profile-ID [{CURRENT_CLICKED_PROFILE_ID}] - Title [{CURRENT_CLICKED_PROFILE_TITLE}] failed - exiting Decide_Load")
Return False
End If
' ========== DATEN VERARBEITEN ==========
- NO_WORKFLOWITEMS = (DT_CURR_WF_ITEMS.Rows.Count = 0)
+ NO_WORKFLOW_ITEMS = (DT_CURR_WF_ITEMS.Rows.Count = 0)
UpdateGridCaption()
- If NO_WORKFLOWITEMS Then
+ If NO_WORKFLOW_ITEMS Then
GridControlWorkflows.Visible = False
bindsourcegrid.DataSource = Nothing
GridControlWorkflows.DataSource = Nothing
LOGGER.Info("Keine Workflow-Items für Profil: " & CURRENT_CLICKED_PROFILE_TITLE)
Return False
End If
-
+ GridControlWorkflows_Visible()
' ========== BASIC VIEW ERSTELLEN ==========
Await CreateBasicViewForProfile()
LOGGER.Debug("Basic View für Profil erstellt: " & CURRENT_CLICKED_PROFILE_TITLE)
@@ -2602,7 +2743,7 @@ Public Class frmMain
' ========== DATEN VALIDIEREN ==========
If BASEDATA_DT_VW_PROFILE_USER.Rows.Count = 0 Then
LOGGER.Info("Attention: No profiles for user: '" & USER_USERNAME & "' configured!", False)
- NO_WORKFLOWITEMS = True
+ NO_WORKFLOW_ITEMS = True
bsiMessage.Caption = "NO PROFILES FOR USER"
bsiMessage.ItemAppearance.Normal.BackColor = Color.Red
bsiMessage.ItemAppearance.Normal.ForeColor = Color.Black
@@ -2637,7 +2778,7 @@ Public Class frmMain
If oSQLOverview.ToString.Contains("GROUP_TEXT") = False Then
LOGGER.Info($"SQL SO FAR: {oSQLOverview} ")
FormHelper.ShowInfoMessage("Incomplete Overview-Source (No Group-Columns). Column", omsgTitleWarning)
- NO_WORKFLOWITEMS = True
+ NO_WORKFLOW_ITEMS = True
GridControlWorkflows.Visible = False
bindsourcegrid.DataSource = Nothing
GridControlWorkflows.DataSource = Nothing
@@ -2667,8 +2808,8 @@ Public Class frmMain
If LOG_HOTSPOTS Then
Dim elapsed = (DateTime.Now - perfStep).TotalMilliseconds
Dim rowCount = If(DT_CURR_WF_ITEMS IsNot Nothing, DT_CURR_WF_ITEMS.Rows.Count, 0)
- If elapsed > 4000 Then
- LOGGER.Warn($"[PERF LGO] ⚠️ Datenbank-Abfrage Overview LANGSAM: {elapsed}ms ({rowCount} Zeilen) (Schwellwert: 4000ms) - SQL prüfen!")
+ If elapsed > 4500 Then
+ LOGGER.Warn($"[PERF LGO] ⚠️ Datenbank-Abfrage Overview LANGSAM: {elapsed}ms ({rowCount} Zeilen) (Schwellwert: 4500ms) - SQL prüfen!")
Else
LOGGER.Info($"[PERF LGO] Datenbank-Abfrage Overview: {elapsed}ms ({rowCount} Zeilen)")
End If
@@ -2676,7 +2817,7 @@ Public Class frmMain
End If
If IsNothing(DT_CURR_WF_ITEMS) Then
- NO_WORKFLOWITEMS = True
+ NO_WORKFLOW_ITEMS = True
GridControlWorkflows.Visible = False
GridControlWorkflows.DataSource = Nothing
Try
@@ -2694,10 +2835,10 @@ Public Class frmMain
Dim oChanged = GET_LAST_CHANGED(DT_CURR_WF_ITEMS)
Dim oCOUNT = DT_CURR_WF_ITEMS.Rows.Count
- NO_WORKFLOWITEMS = (oCOUNT = 0)
+ NO_WORKFLOW_ITEMS = (oCOUNT = 0)
UpdateGridCaption()
- If NO_WORKFLOWITEMS Then
+ If NO_WORKFLOW_ITEMS Then
GridControlWorkflows.Visible = False
bindsourcegrid.DataSource = Nothing
GridControlWorkflows.DataSource = Nothing
@@ -3287,8 +3428,19 @@ FROM VWPM_PROFILE_ACTIVE T WHERE T.GUID IN (SELECT PROFILE_ID FROM [dbo].[FNPM_G
CurrNavBarGroup = NavBarControl1.Groups(1)
FormShown = True
Timer_Inactivity_Reset_Disable("Decide_Load")
- LOGGER.Debug("FormShown..Now Decide_Load...")
- Await Decide_Load(True)
+
+ ' ===== ERSTEN KNOTEN AUSWÄHLEN (löst FocusedNodeChanged → Decide_Load aus) =====
+ Dim oFirstNode As DevExpress.XtraTreeList.Nodes.TreeListNode = TreeList_Cockpit.Nodes.FirstOrDefault()
+ If oFirstNode IsNot Nothing Then
+ LOGGER.Debug($"Selecting first TreeList node: [{oFirstNode.GetValue("NAME")}]")
+ TreeList_Cockpit.FocusedNode = oFirstNode
+ ' FocusedNodeChanged nicht zuverlässig bei programmatischer Zuweisung → direkt aufrufen
+ Await ProcessTreeListNodeAsync(oFirstNode)
+ Else
+ LOGGER.Debug("No TreeList nodes found - falling back to Decide_Load")
+ Await Decide_Load(True)
+ End If
+
If GridViewWorkflows.GroupCount = 0 And Not IsNothing(GridViewWorkflows.Columns("GROUP_TEXT")) Then
LOGGER.Info("NO GROUPS AFTER SHOWN_Decide Load...")
Create_GroupBy_Parts()
@@ -3698,7 +3850,7 @@ FROM VWPM_PROFILE_ACTIVE T WHERE T.GUID IN (SELECT PROFILE_ID FROM [dbo].[FNPM_G
End Sub
Private Sub UpdateGridCaption()
Try
- LOGGER.Debug($"UpdateGridCaption called - GRID_LOAD_TYPE: [{GRID_LOAD_TYPE}], CURRENT_CLICKED_PROFILE_TITLE: [{CURRENT_CLICKED_PROFILE_TITLE}], NO_WORKFLOWITEMS: [{NO_WORKFLOWITEMS}]")
+ LOGGER.Debug($"UpdateGridCaption called - GRID_LOAD_TYPE: [{GRID_LOAD_TYPE}], CURRENT_CLICKED_PROFILE_TITLE: [{CURRENT_CLICKED_PROFILE_TITLE}], NO_WORKFLOWITEMS: [{NO_WORKFLOW_ITEMS}]")
If GRID_LOAD_TYPE = "OVERVIEW" Then
' Übersicht-Caption
lblCaptionMainGrid.Text = S.Gesamtübersicht
@@ -3711,7 +3863,7 @@ FROM VWPM_PROFILE_ACTIVE T WHERE T.GUID IN (SELECT PROFILE_ID FROM [dbo].[FNPM_G
ElseIf GRID_LOAD_TYPE.StartsWith("PROFILE#") Then
' Profil-Caption
If Not String.IsNullOrEmpty(CURRENT_CLICKED_PROFILE_TITLE) Then
- If NO_WORKFLOWITEMS Then
+ If NO_WORKFLOW_ITEMS Then
lblCaptionMainGrid.Text = String.Format(S.Aktuell_keine_Workflowdaten_vorhanden___0_, CURRENT_CLICKED_PROFILE_TITLE)
Else
lblCaptionMainGrid.Text = CURRENT_CLICKED_PROFILE_TITLE
@@ -4192,4 +4344,170 @@ FROM VWPM_PROFILE_ACTIVE T WHERE T.GUID IN (SELECT PROFILE_ID FROM [dbo].[FNPM_G
Private Sub barbtnitmsaveLogfiles_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles barbtnitmsaveLogfiles.ItemClick
ClassAllgemeineFunktionen.Save_Logfiles()
End Sub
+
+ Private Async Function ProcessTreeListNodeAsync(oNode As DevExpress.XtraTreeList.Nodes.TreeListNode) As Task
+ Try
+ Dim oTypeId As Object = oNode.GetValue("TYPE_ID")
+ Dim oCockpitConfigID As Object = oNode.GetValue("PK_CFG_COCKPIT_DEFINITION_ID")
+ Dim oFkProfileId As Object = oNode.GetValue("FK_PROFILE_ID")
+ Dim oSqlQuery As Object = oNode.GetValue("SQL_QUERY")
+ Dim oProfileTitle As Object = oNode.GetValue("NAME")
+
+ LOGGER.Debug($"TreeList1 Node selected - PK_CFG_COCKPIT_DEFINITION_ID:[{oCockpitConfigID}] NAME:[{oProfileTitle}] TYPE_ID:[{oTypeId}] FK_PROFILE_ID:[{oFkProfileId}]")
+
+ If oTypeId Is Nothing OrElse IsDBNull(oTypeId) Then
+ LOGGER.Debug("ProcessTreeListNodeAsync: TYPE_ID is Nothing/DBNull - Folder node, skipping")
+ Exit Function
+ End If
+
+ If Application.OpenForms().OfType(Of frmValidator).Any Then
+ FormHelper.ShowInfoMessage(S.Bitte_schließen_Sie_den_offenen_Workflow_, omsgTitleWarning)
+ Exit Function
+ End If
+
+ FRONTEND_ACTION = NAVBAR_CLICKED
+ Timer_Inactivity_Reset_Disable("TreeList1_FocusedNodeChanged")
+ COCKPIT_CONFIG_ID = oCockpitConfigID
+
+ Dim oTypeIdInt As Integer = CInt(oTypeId)
+
+ Select Case oTypeIdInt
+
+ Case 0
+ LOGGER.Debug("TreeList1: Loading overview")
+ OverviewOrDEtail = "OVERVIEW"
+ GRID_LOAD_TYPE = "OVERVIEW"
+
+ Dim oForce As Boolean = False
+ If DetailLinkActive = True Then
+ oForce = True
+ DetailLinkActive = False
+ OVERVIEW_ADDED_WHEN = ""
+ End If
+ If IsDBNull(oSqlQuery) OrElse String.IsNullOrWhiteSpace(oSqlQuery?.ToString()) Then
+ LOGGER.Warn($"TreeList1: SQL_QUERY for ProfileID {oFkProfileId} is DBNull or empty for overview node - this should not happen, check data integrity of TreeList's DataSource")
+ Exit Function
+ End If
+ CURRENT_CLICKED_PROFILE_ID = 0
+ CUSTOM_OVERVIEW_SQL = oSqlQuery.ToString()
+
+ If GridControlWorkflows.Visible = True And FormOpenClose = False Then
+ RefreshHelper.SaveViewInfo()
+ End If
+
+ Me.Cursor = Cursors.WaitCursor
+ Try
+ Await Decide_Load(False, oForce)
+ Finally
+ Me.Cursor = Cursors.Default
+ End Try
+
+ If GridControlWorkflows.Visible = True And FormOpenClose = False Then
+ RefreshHelper.LoadViewInfo()
+ End If
+
+ If GridViewWorkflows.GroupCount = 0 AndAlso Not IsNothing(GridViewWorkflows.Columns("GROUP_TEXT")) Then
+ LOGGER.Info("TreeList1: NO GROUPS AFTER CLICK OVERVIEW - creating groups...")
+ Await Decide_Load(False, True)
+ If GridControlWorkflows.Visible = True And FormOpenClose = False Then
+ RefreshHelper.LoadViewInfo()
+ End If
+ End If
+
+ Case 1
+ If oFkProfileId Is Nothing OrElse IsDBNull(oFkProfileId) Then
+ LOGGER.Warn("TreeList1: TYPE_ID=1 but FK_PROFILE_ID is Nothing/DBNull")
+ Exit Function
+ End If
+
+ Dim oProfileId As Integer = CInt(oFkProfileId)
+ LOGGER.Debug($"TreeList1: Profile node clicked - FK_PROFILE_ID:[{oProfileId}]")
+
+
+
+
+ If CURRENT_CLICKED_PROFILE_ID = oProfileId Then
+ LOGGER.Debug($"TreeList1: Profile [{oProfileId}] is already active - ignoring click")
+ Exit Function
+ End If
+
+ LOGGER.Debug($"TreeList1: Loading profile with ID [{oProfileId}]...")
+
+ ' ===== ANZAHL-SUFFIX ENTFERNEN (von AppendCountsToTreeAsync angehängt: "Titel (42)" → "Titel") =====
+ Dim oCleanProfileTitle As String = oProfileTitle?.ToString()
+ Dim oSuffixMatch = System.Text.RegularExpressions.Regex.Match(oCleanProfileTitle, "^(.*)\s+\(\d+\)$")
+ If oSuffixMatch.Success Then
+ oCleanProfileTitle = oSuffixMatch.Groups(1).Value.Trim()
+ LOGGER.Debug($"TreeList1: Stripped count suffix from title [{oProfileTitle}] → [{oCleanProfileTitle}]")
+ End If
+
+ OverviewOrDEtail = "DETAIL"
+ CURRENT_CLICKED_PROFILE_ID = oProfileId
+ CURRENT_CLICKED_PROFILE_TITLE = oCleanProfileTitle
+ GRID_LOAD_TYPE = $"PROFILE#{oProfileId}"
+ DetailLinkActive = True
+
+ If GridControlWorkflows.Visible = True And FormOpenClose = False Then
+ RefreshHelper.SaveViewInfo()
+ End If
+
+ Me.Cursor = Cursors.WaitCursor
+ Try
+ Await Decide_Load(False, True)
+ Finally
+ Me.Cursor = Cursors.Default
+ End Try
+
+ Case 2
+ If oSqlQuery Is Nothing OrElse IsDBNull(oSqlQuery) Then
+ Exit Function
+ End If
+
+ Dim oSQL As String = oSqlQuery.ToString()
+ If String.IsNullOrWhiteSpace(oSQL) Then
+ Exit Function
+ End If
+
+ LOGGER.Debug($"TreeList1: Executing custom SQL query from node")
+ oSQL = PrepareSQLWithReplacements(oSQL)
+
+ Dim oDT As DataTable = DatabaseFallback.GetDatatableECM(oSQL)
+ If oDT IsNot Nothing Then
+ LOGGER.Debug($"TreeList1 SQL result: {oDT.Rows.Count} rows")
+ DT_CURR_WF_ITEMS = oDT
+ NO_WORKFLOW_ITEMS = (oDT.Rows.Count = 0)
+ bindsourcegrid.DataSource = DT_CURR_WF_ITEMS
+ GridControlWorkflows.DataSource = bindsourcegrid
+ GridControlWorkflows.Visible = Not NO_WORKFLOW_ITEMS
+ UpdateGridCaption()
+ End If
+
+ Case Else
+ LOGGER.Debug($"ProcessTreeListNodeAsync: Unhandled TYPE_ID [{oTypeIdInt}]")
+
+ End Select
+
+ Catch ex As Exception
+ LOGGER.Error(ex)
+ Finally
+ FRONTEND_ACTION = FA_NONE
+ End Try
+ End Function
+ Private Async Sub TreeList1_FocusedNodeChanged(sender As Object, e As DevExpress.XtraTreeList.FocusedNodeChangedEventArgs) Handles TreeList_Cockpit.FocusedNodeChanged
+ Try
+ If e.Node Is Nothing Then
+ LOGGER.Debug("TreeList1_FocusedNodeChanged: Node is Nothing - skipping")
+ Exit Sub
+ End If
+
+ If FormShown = False Then
+ Exit Sub
+ End If
+
+ Await ProcessTreeListNodeAsync(e.Node)
+
+ Catch ex As Exception
+ LOGGER.Error(ex)
+ End Try
+ End Sub
End Class
\ No newline at end of file