This commit is contained in:
SchreiberM 2021-11-25 15:49:45 +01:00
commit dfa222d1ed
31 changed files with 972 additions and 498 deletions

View File

@ -105,7 +105,8 @@ Public Class ClassInit
oDataRow.Item("PASSWORD").ToString
)
My.DatabaseIDB = New MSSQLServer(My.LogConfig, oConString)
Dim oDecryptedConnectionString = MSSQLServer.DecryptConnectionString(oConString)
My.DatabaseIDB = New MSSQLServer(My.LogConfig, oDecryptedConnectionString)
End If
If My.DatabaseIDB.DBInitialized = False Then

View File

@ -1,23 +1,24 @@
DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraBars.Docking.DockManager, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.DateEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraLayout.LayoutControl, DevExpress.XtraLayout.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraTreeList.TreeList, DevExpress.XtraTreeList.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraNavBar.NavBarControl, DevExpress.XtraNavBar.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.ProgressBarControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraBars.FormAssistant, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.LookUpEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraBars.Navigation.TileNavPane, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.Repository.RepositoryItemComboBox, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.Repository.RepositoryItemDateEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.TileControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.Repository.RepositoryItemTextEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraBars.Docking2010.DocumentManager, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraSpreadsheet.SpreadsheetFormulaBar, DevExpress.XtraSpreadsheet.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraDataLayout.DataLayoutControl, DevExpress.XtraLayout.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.Repository.RepositoryItemDateEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraNavBar.NavBarControl, DevExpress.XtraNavBar.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.SearchLookUpEdit, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.LookUpEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.TileControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraLayout.LayoutControl, DevExpress.XtraLayout.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.ProgressBarControl, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.Repository.RepositoryItemComboBox, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.PictureEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraBars.Docking.DockManager, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraTreeList.TreeList, DevExpress.XtraTreeList.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraBars.Navigation.TileNavPane, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraDataLayout.DataLayoutControl, DevExpress.XtraLayout.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraBars.Docking2010.DocumentManager, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.DateEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraBars.FormAssistant, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraSpreadsheet.SpreadsheetFormulaBar, DevExpress.XtraSpreadsheet.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a

View File

@ -0,0 +1,107 @@
Imports System.ComponentModel
Imports DevExpress.XtraEditors
Imports DigitalData.GUIs.ZooFlow.Search.SearchToken
Imports DigitalData.Modules.EDMI.API
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.ZooFlow.State
Namespace Search
Public Class Search
Private ReadOnly _SearchQuery As New BindingList(Of SearchCriteria)
Private ReadOnly _LogConfig As LogConfig
Private ReadOnly _Database As DatabaseWithFallback
Private ReadOnly _UserState As UserState
Private ReadOnly _OpEquals As New KeyValuePair(Of String, Object)("gleich", New AttributeOperatorToken(OperatorToken.Equals))
Private ReadOnly _OpNotEquals As New KeyValuePair(Of String, Object)("nicht gleich", New AttributeOperatorToken(OperatorToken.NotEquals))
Private ReadOnly _OpGreaterThan As New KeyValuePair(Of String, Object)("größer als", New AttributeOperatorToken(OperatorToken.GreaterThan))
Private ReadOnly _OpLessThan As New KeyValuePair(Of String, Object)("kleiner als", New AttributeOperatorToken(OperatorToken.LessThan))
Private ReadOnly _OpContains As New KeyValuePair(Of String, Object)("enthält", New AttributeOperatorToken(OperatorToken.Contains))
Public ReadOnly Property Query As BindingList(Of SearchCriteria)
Private ReadOnly TokenListAttributes As New Dictionary(Of String, Object)
'Private ReadOnly TokenListAttributes As New Dictionary(Of String, Object) From {
' {"Rechnungsnummer", New AttributeKeyToken("InvoiceNo")},
' {"Rechnungsdatum", New AttributeKeyToken("InvoiceDate")},
' {"Kundennummer", New AttributeKeyToken("CustNo")}
'}
Private ReadOnly TokenListOperands As New Dictionary(Of String, Object) From {
{"gleich", New AttributeOperatorToken(OperatorToken.Equals)},
{"nicht gleich", New AttributeOperatorToken(OperatorToken.NotEquals)},
{"größer als", New AttributeOperatorToken(OperatorToken.Equals)},
{"kleiner als", New AttributeOperatorToken(OperatorToken.Equals)},
{"enthält", New AttributeOperatorToken(OperatorToken.Equals)}
}
Private ReadOnly TokenListAttrValues As New Dictionary(Of String, Object)
'Private ReadOnly TokenListAttrValues As New Dictionary(Of String, Object) From {
' {"1233", New AttributeValueToken(1233)},
' {"1234", New AttributeValueToken(1234)},
' {"1235", New AttributeValueToken(1235)},
' {"4711", New AttributeValueToken(4711)},
' {"4712", New AttributeValueToken(4712)}
'}
Private ReadOnly TokenListDate As New Dictionary(Of String, Object) From {
{"heute", New DateToken(Date.Now)},
{"gestern", New DateToken(Date.Now.AddDays(-1))},
{"letzte Woche", New DateToken(TimeSpan.FromDays(-7))},
{"letzter Monat", New DateToken(TimeSpan.FromDays(-30))}
}
Public InputMode As InputMode = InputMode.Default
Public Sub New(pLogConfig As LogConfig, pUserState As UserState, pDatabase As DatabaseWithFallback)
_LogConfig = pLogConfig
_Database = pDatabase
_UserState = pUserState
End Sub
Public Function GetAttributeTokens() As Dictionary(Of String, Object)
Dim oSQL = $"SELECT * FROM VWIDB_BE_ATTRIBUTE WHERE DEFAULT_SEARCH_ATTRIBUTE = 1 AND LANG_CODE = '{_UserState.Language}'"
Dim oTable = _Database.GetDatatable("VWIDB_BE_ATTRIBUTE", oSQL, Constants.DatabaseType.IDB, $"DEFAULT_SEARCH_ATTRIBUTE = 1 AND LANG_CODE = '{_UserState.Language}'")
Dim oTokens As New Dictionary(Of String, Object)
For Each oRow As DataRow In oTable.rows
oTokens.Add(oRow.Item("ATTR_TITLE"), New AttributeKeyToken(oRow.Item("ATTR_ID")))
Next
Return oTokens
End Function
Public Function GetValueTokensForAttribute() As Dictionary(Of String, Object)
Dim oSQL = $"SELECT * FROM VWIDB_BE_ATTRIBUTE WHERE DEFAULT_SEARCH_ATTRIBUTE = 1 AND LANG_CODE = '{_UserState.Language}'"
Dim oTable = _Database.GetDatatable("VWIDB_BE_ATTRIBUTE", oSQL, Constants.DatabaseType.IDB, $"DEFAULT_SEARCH_ATTRIBUTE = 1 AND LANG_CODE = '{_UserState.Language}'")
Dim oTokens As New Dictionary(Of String, Object)
End Function
Public Function GetOperatorTokens(pDataType As Type) As Dictionary(Of String, Object)
Dim oResult = New Dictionary(Of String, Object)
Select Case pDataType.GetType
Case GetType(Date)
oResult.Add(_OpEquals.Key, _OpEquals.Value)
Case GetType(Integer)
oResult.Add(_OpEquals.Key, _OpEquals.Value)
oResult.Add(_OpNotEquals.Key, _OpNotEquals.Value)
oResult.Add(_OpGreaterThan.Key, _OpGreaterThan.Value)
oResult.Add(_OpLessThan.Key, _OpLessThan.Value)
Case GetType(Boolean)
oResult.Add(_OpEquals.Key, _OpEquals.Value)
oResult.Add(_OpNotEquals.Key, _OpNotEquals.Value)
Case Else
oResult.Add(_OpEquals.Key, _OpEquals.Value)
oResult.Add(_OpNotEquals.Key, _OpNotEquals.Value)
oResult.Add(_OpContains.Key, _OpContains.Value)
End Select
Return oResult
End Function
End Class
End Namespace

View File

@ -0,0 +1,12 @@
Namespace Search
Public Class SearchCriteria
Public Property ParenLeft As String = ""
Public Property Key As String
Public Property Op As SearchToken.OperatorToken = SearchToken.OperatorToken.Equals
Public Property Value As Object
Public Property ParentRight As String = ""
Public Property JoinOperator As String = "AND"
End Class
End Namespace

View File

@ -1,6 +1,7 @@
Public Class SearchFilter
Namespace Search
Public Class SearchFilter
Public Shared Property DefaultFilters As New List(Of FilterTimeframe) From {
Public Shared Property DefaultFilters As New List(Of FilterTimeframe) From {
New FilterTimeframe() With {.Name = "Kein", .DisableFilter = True, .[To] = Nothing},
New FilterTimeframe() With {.Name = "Eigener", .CustomFilter = True, .[To] = Date.Now, .From = Date.Now},
New FilterTimeframe() With {
@ -21,15 +22,17 @@
}
}
Public Class FilterTimeframe
Public Property Name As String
Public Property From As Date
Public Property [To] As Date = Date.Now
Public Property DisableFilter As Boolean = False
Public Property CustomFilter As Boolean = False
Public Class FilterTimeframe
Public Property Name As String
Public Property From As Date
Public Property [To] As Date = Date.Now
Public Property DisableFilter As Boolean = False
Public Property CustomFilter As Boolean = False
Public Overrides Function ToString() As String
Return Name.ToString
End Function
Public Overrides Function ToString() As String
Return Name.ToString
End Function
End Class
End Class
End Class
End Namespace

View File

@ -0,0 +1,70 @@
Namespace Search
Public Class SearchToken
Public Enum [ValueType]
AttributeName
AttributeValue
AttributeOperator
End Enum
Public Enum [InputMode]
[Default]
[Operator]
Value
End Enum
Public Enum [OperatorToken]
Equals
NotEquals
GreaterThan
LessThan
Contains
End Enum
Public MustInherit Class TokenValue
Public Value As Object
Public Type As [ValueType]
Public Overrides Function ToString() As String
Return Value.ToString()
End Function
End Class
Public Class AttributeKeyToken
Inherits TokenValue
Public Sub New(pValue As Object)
Value = pValue
Type = ValueType.AttributeName
End Sub
End Class
Public Class AttributeOperatorToken
Inherits TokenValue
Public Sub New(pValue As Object)
Value = pValue
Type = ValueType.AttributeOperator
End Sub
End Class
Public Class AttributeValueToken
Inherits TokenValue
Public Sub New(pValue As Object)
Value = pValue
Type = ValueType.AttributeValue
End Sub
End Class
Public Class DateToken
Inherits TokenValue
Public Sub New(pValue As Object)
Value = pValue
Type = ValueType.AttributeValue
End Sub
End Class
End Class
End Namespace

View File

@ -1,171 +0,0 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
Partial Class frmSearch2021
Inherits DevExpress.XtraEditors.XtraForm
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()>
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
MyBase.Dispose(disposing)
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()>
Private Sub InitializeComponent()
Me.SearchControl2 = New DevExpress.XtraEditors.TokenEdit()
Me.ComboBoxEdit1 = New DevExpress.XtraEditors.ComboBoxEdit()
Me.PanelControl1 = New DevExpress.XtraEditors.PanelControl()
Me.SidePanel1 = New DevExpress.XtraEditors.SidePanel()
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.NavBarGroup2 = New DevExpress.XtraNavBar.NavBarGroup()
Me.NavBarGroup3 = New DevExpress.XtraNavBar.NavBarGroup()
CType(Me.SearchControl2.Properties, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.ComboBoxEdit1.Properties, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.PanelControl1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.PanelControl1.SuspendLayout()
Me.SidePanel1.SuspendLayout()
CType(Me.NavBarControl1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'SearchControl2
'
Me.SearchControl2.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.SearchControl2.Location = New System.Drawing.Point(227, 5)
Me.SearchControl2.Name = "SearchControl2"
Me.SearchControl2.Properties.Appearance.BackColor = System.Drawing.Color.Transparent
Me.SearchControl2.Properties.Appearance.Font = New System.Drawing.Font("Segoe UI", 20.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.SearchControl2.Properties.Appearance.Options.UseBackColor = True
Me.SearchControl2.Properties.Appearance.Options.UseFont = True
Me.SearchControl2.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.Simple
Me.SearchControl2.Properties.EditMode = DevExpress.XtraEditors.TokenEditMode.Manual
Me.SearchControl2.Properties.PopupFilterMode = DevExpress.XtraEditors.TokenEditPopupFilterMode.Contains
Me.SearchControl2.Properties.Separators.AddRange(New String() {",", "-", "ODER", "OR", "AND", "UND"})
Me.SearchControl2.Size = New System.Drawing.Size(894, 44)
Me.SearchControl2.TabIndex = 0
'
'ComboBoxEdit1
'
Me.ComboBoxEdit1.Location = New System.Drawing.Point(5, 5)
Me.ComboBoxEdit1.Name = "ComboBoxEdit1"
Me.ComboBoxEdit1.Properties.Appearance.BackColor = System.Drawing.Color.Transparent
Me.ComboBoxEdit1.Properties.Appearance.Font = New System.Drawing.Font("Segoe UI", 20.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.ComboBoxEdit1.Properties.Appearance.Options.UseBackColor = True
Me.ComboBoxEdit1.Properties.Appearance.Options.UseFont = True
Me.ComboBoxEdit1.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.Simple
Me.ComboBoxEdit1.Properties.Buttons.AddRange(New DevExpress.XtraEditors.Controls.EditorButton() {New DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)})
Me.ComboBoxEdit1.Properties.Items.AddRange(New Object() {"Alle", "Belege", "Rechnungen", "Lieferscheine", "Aufträge", "Angebote", "Kunde Schaum", "Kunde medacom"})
Me.ComboBoxEdit1.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor
Me.ComboBoxEdit1.Size = New System.Drawing.Size(223, 44)
Me.ComboBoxEdit1.TabIndex = 1
'
'PanelControl1
'
Me.PanelControl1.AutoSize = True
Me.PanelControl1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink
Me.PanelControl1.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder
Me.PanelControl1.Controls.Add(Me.ComboBoxEdit1)
Me.PanelControl1.Controls.Add(Me.SearchControl2)
Me.PanelControl1.Dock = System.Windows.Forms.DockStyle.Top
Me.PanelControl1.Location = New System.Drawing.Point(0, 0)
Me.PanelControl1.Name = "PanelControl1"
Me.PanelControl1.Size = New System.Drawing.Size(1126, 52)
Me.PanelControl1.TabIndex = 2
'
'SidePanel1
'
Me.SidePanel1.Controls.Add(Me.NavBarControl1)
Me.SidePanel1.Dock = System.Windows.Forms.DockStyle.Left
Me.SidePanel1.Location = New System.Drawing.Point(0, 52)
Me.SidePanel1.Name = "SidePanel1"
Me.SidePanel1.Size = New System.Drawing.Size(228, 566)
Me.SidePanel1.TabIndex = 3
Me.SidePanel1.Text = "SidePanel1"
'
'NavBarControl1
'
Me.NavBarControl1.ActiveGroup = Me.NavBarGroup1
Me.NavBarControl1.Dock = System.Windows.Forms.DockStyle.Fill
Me.NavBarControl1.Groups.AddRange(New DevExpress.XtraNavBar.NavBarGroup() {Me.NavBarGroup1, Me.NavBarGroup2, Me.NavBarGroup3})
Me.NavBarControl1.Items.AddRange(New DevExpress.XtraNavBar.NavBarItem() {Me.NavBarItem1, Me.NavBarItem2, Me.NavBarItem3})
Me.NavBarControl1.Location = New System.Drawing.Point(0, 0)
Me.NavBarControl1.Name = "NavBarControl1"
Me.NavBarControl1.OptionsNavPane.ExpandedWidth = 227
Me.NavBarControl1.Size = New System.Drawing.Size(227, 566)
Me.NavBarControl1.TabIndex = 0
Me.NavBarControl1.Text = "NavBarControl1"
'
'NavBarGroup1
'
Me.NavBarGroup1.Caption = "NavBarGroup1"
Me.NavBarGroup1.Expanded = True
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 = "NavBarItem1"
Me.NavBarItem1.Name = "NavBarItem1"
'
'NavBarItem2
'
Me.NavBarItem2.Caption = "NavBarItem2"
Me.NavBarItem2.Name = "NavBarItem2"
'
'NavBarItem3
'
Me.NavBarItem3.Caption = "NavBarItem3"
Me.NavBarItem3.Name = "NavBarItem3"
'
'NavBarGroup2
'
Me.NavBarGroup2.Caption = "NavBarGroup2"
Me.NavBarGroup2.Name = "NavBarGroup2"
'
'NavBarGroup3
'
Me.NavBarGroup3.Caption = "NavBarGroup3"
Me.NavBarGroup3.Name = "NavBarGroup3"
'
'XtraForm1
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(1126, 618)
Me.Controls.Add(Me.SidePanel1)
Me.Controls.Add(Me.PanelControl1)
Me.Name = "XtraForm1"
Me.Text = "XtraForm1"
CType(Me.SearchControl2.Properties, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.ComboBoxEdit1.Properties, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.PanelControl1, System.ComponentModel.ISupportInitialize).EndInit()
Me.PanelControl1.ResumeLayout(False)
Me.SidePanel1.ResumeLayout(False)
CType(Me.NavBarControl1, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents SearchControl2 As DevExpress.XtraEditors.TokenEdit
Friend WithEvents ComboBoxEdit1 As DevExpress.XtraEditors.ComboBoxEdit
Friend WithEvents PanelControl1 As DevExpress.XtraEditors.PanelControl
Friend WithEvents SidePanel1 As DevExpress.XtraEditors.SidePanel
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 NavBarGroup2 As DevExpress.XtraNavBar.NavBarGroup
Friend WithEvents NavBarGroup3 As DevExpress.XtraNavBar.NavBarGroup
End Class

View File

@ -1,138 +0,0 @@
Imports DevExpress.Utils
Imports DevExpress.XtraEditors
Imports DevExpress.XtraEditors.Repository
Public Class frmSearch2021
Private ReadOnly TokenListAttributes As New Dictionary(Of String, Object) From {
{"Rechnungsnummer", New AttributeToken(7411)},
{"Rechnungsdatum", New AttributeToken(7412)},
{"Kundennummer", New AttributeToken(7413)}
}
Private ReadOnly TokenListAttrValues As New Dictionary(Of String, Object) From {
{"{1233}", New AttributeValueToken(1233)},
{"{1234}", New AttributeValueToken(1234)},
{"{1235}", New AttributeValueToken(1235)}
}
Private ReadOnly TokenListDate As New Dictionary(Of String, Object) From {
{"heute", New DateToken(Date.Now)},
{"gestern", New DateToken(Date.Now.AddDays(-1))},
{"letzte Woche", New DateToken(TimeSpan.FromDays(-7))},
{"letzter Monat", New DateToken(TimeSpan.FromDays(-30))}
}
Private TokenListDefault As Dictionary(Of String, Object)
Private TokenListAll As Dictionary(Of String, Object)
Private Sub XtraForm1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim TokenList As New Dictionary(Of String, Object)
TokenListAll = TokenList.
Concat(TokenListAttributes).
Concat(TokenListAttrValues).
Concat(TokenListDate).
ToDictionary(Function(a) a.Key, Function(a) a.Value)
TokenListDefault = TokenList.
Concat(TokenListAttributes).
Concat(TokenListDate).
ToDictionary(Function(a) a.Key, Function(a) a.Value)
AddTokens(SearchControl2, TokenListDefault)
ComboBoxEdit1.SelectedIndex = 0
End Sub
Public Enum [ValueType]
AttributeName
AttributeValue
End Enum
Public Enum [InputMode]
[Default]
Value
End Enum
Public Class TokenValue
Public Value As Object
Public Type As [ValueType]
Public Overrides Function ToString() As String
Return Value.ToString()
End Function
End Class
Public Class AttributeToken
Inherits TokenValue
Public Sub New(pValue As Object)
Value = pValue
Type = ValueType.AttributeName
End Sub
End Class
Public Class AttributeValueToken
Inherits TokenValue
Public Sub New(pValue As Object)
Value = pValue
Type = ValueType.AttributeValue
End Sub
End Class
Public Class DateToken
Inherits TokenValue
Public Sub New(pValue As Object)
Value = pValue
Type = ValueType.AttributeValue
End Sub
End Class
Private Sub AddTokens(Editor As TokenEdit, Tokens As Dictionary(Of String, Object))
For Each oToken In Tokens
Editor.Properties.Tokens.Add(New DevExpress.XtraEditors.TokenEditToken With {
.Description = oToken.Key,
.Value = oToken.Value
})
Next
End Sub
Private Sub SearchControl2_Properties_TokenAdded(sender As Object, e As DevExpress.XtraEditors.TokenEditTokenAddedEventArgs) Handles SearchControl2.Properties.TokenAdded
Dim oEditor As TokenEdit = sender
SetNewTokens(oEditor)
End Sub
Private Sub SearchControl2_Properties_TokenRemoved(sender As Object, e As TokenEditTokenRemovedEventArgs) Handles SearchControl2.Properties.TokenRemoved
Dim oEditor As TokenEdit = sender
SetNewTokens(oEditor)
End Sub
Private Sub SetNewTokens(pEditor As TokenEdit)
Dim oLastToken = pEditor.GetTokenList().LastOrDefault()
pEditor.Properties.BeginUpdate()
If oLastToken IsNot Nothing Then
pEditor.Properties.Tokens.Clear()
Select Case oLastToken.Value.GetType
Case GetType(AttributeToken)
AddTokens(pEditor, TokenListAttrValues)
Case GetType(AttributeValueToken)
AddTokens(pEditor, TokenListAll)
Case Else
AddTokens(pEditor, TokenListDefault)
End Select
pEditor.Properties.EndUpdate()
Else
pEditor.Properties.Tokens.Clear()
AddTokens(pEditor, TokenListDefault)
End If
End Sub
End Class

View File

@ -0,0 +1,320 @@
Imports DevExpress.XtraEditors
Imports DevExpress.XtraGrid
Imports DevExpress.XtraGrid.Views.Grid
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
Partial Class frmSearchNeu
Inherits DevExpress.XtraBars.Ribbon.RibbonForm
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
MyBase.Dispose(disposing)
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.NavBarControl1 = New DevExpress.XtraNavBar.NavBarControl()
Me.NavBarGroup1 = New DevExpress.XtraNavBar.NavBarGroup()
Me.SplitContainerControl1 = New DevExpress.XtraEditors.SplitContainerControl()
Me.SplitContainerControl2 = New DevExpress.XtraEditors.SplitContainerControl()
Me.SplitContainerControl3 = New DevExpress.XtraEditors.SplitContainerControl()
Me.Button1 = New System.Windows.Forms.Button()
Me.cmbSelect = New DevExpress.XtraEditors.ComboBoxEdit()
Me.SearchControl2 = New DevExpress.XtraEditors.TokenEdit()
Me.GridControl1 = New DevExpress.XtraGrid.GridControl()
Me.GridView1 = New DevExpress.XtraGrid.Views.Grid.GridView()
Me.colParenLeft = New DevExpress.XtraGrid.Columns.GridColumn()
Me.colAttribute = New DevExpress.XtraGrid.Columns.GridColumn()
Me.colOperator = New DevExpress.XtraGrid.Columns.GridColumn()
Me.colValue = New DevExpress.XtraGrid.Columns.GridColumn()
Me.colParenRight = New DevExpress.XtraGrid.Columns.GridColumn()
Me.RibbonControl1 = New DevExpress.XtraBars.Ribbon.RibbonControl()
Me.BarButtonItem1 = New DevExpress.XtraBars.BarButtonItem()
Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage()
Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonPageGroup2 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonStatusBar1 = New DevExpress.XtraBars.Ribbon.RibbonStatusBar()
Me.RibbonPage2 = New DevExpress.XtraBars.Ribbon.RibbonPage()
CType(Me.NavBarControl1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.SplitContainerControl1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SplitContainerControl1.SuspendLayout()
CType(Me.SplitContainerControl2, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SplitContainerControl2.SuspendLayout()
CType(Me.SplitContainerControl3, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SplitContainerControl3.SuspendLayout()
CType(Me.cmbSelect.Properties, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.SearchControl2.Properties, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.GridControl1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.GridView1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'NavBarControl1
'
Me.NavBarControl1.ActiveGroup = Me.NavBarGroup1
Me.NavBarControl1.Dock = System.Windows.Forms.DockStyle.Fill
Me.NavBarControl1.Groups.AddRange(New DevExpress.XtraNavBar.NavBarGroup() {Me.NavBarGroup1})
Me.NavBarControl1.Location = New System.Drawing.Point(0, 0)
Me.NavBarControl1.Name = "NavBarControl1"
Me.NavBarControl1.OptionsNavPane.ExpandedWidth = 163
Me.NavBarControl1.Size = New System.Drawing.Size(163, 193)
Me.NavBarControl1.TabIndex = 4
Me.NavBarControl1.Text = "NavBarControl1"
'
'NavBarGroup1
'
Me.NavBarGroup1.Caption = "NavBarGroup1"
Me.NavBarGroup1.Expanded = True
Me.NavBarGroup1.Name = "NavBarGroup1"
'
'SplitContainerControl1
'
Me.SplitContainerControl1.Dock = System.Windows.Forms.DockStyle.Fill
Me.SplitContainerControl1.Location = New System.Drawing.Point(0, 0)
Me.SplitContainerControl1.Name = "SplitContainerControl1"
Me.SplitContainerControl1.Panel1.Controls.Add(Me.NavBarControl1)
Me.SplitContainerControl1.Panel1.Text = "Panel1"
Me.SplitContainerControl1.Panel2.Text = "Panel2"
Me.SplitContainerControl1.Size = New System.Drawing.Size(984, 193)
Me.SplitContainerControl1.SplitterPosition = 163
Me.SplitContainerControl1.TabIndex = 7
'
'SplitContainerControl2
'
Me.SplitContainerControl2.Dock = System.Windows.Forms.DockStyle.Fill
Me.SplitContainerControl2.Horizontal = False
Me.SplitContainerControl2.Location = New System.Drawing.Point(0, 94)
Me.SplitContainerControl2.Name = "SplitContainerControl2"
Me.SplitContainerControl2.Panel1.Controls.Add(Me.SplitContainerControl3)
Me.SplitContainerControl2.Panel1.Text = "Panel1"
Me.SplitContainerControl2.Panel2.Controls.Add(Me.SplitContainerControl1)
Me.SplitContainerControl2.Panel2.Text = "Panel2"
Me.SplitContainerControl2.Size = New System.Drawing.Size(984, 493)
Me.SplitContainerControl2.SplitterPosition = 290
Me.SplitContainerControl2.TabIndex = 8
'
'SplitContainerControl3
'
Me.SplitContainerControl3.Dock = System.Windows.Forms.DockStyle.Fill
Me.SplitContainerControl3.Horizontal = False
Me.SplitContainerControl3.IsSplitterFixed = True
Me.SplitContainerControl3.Location = New System.Drawing.Point(0, 0)
Me.SplitContainerControl3.Name = "SplitContainerControl3"
Me.SplitContainerControl3.Panel1.Controls.Add(Me.Button1)
Me.SplitContainerControl3.Panel1.Controls.Add(Me.cmbSelect)
Me.SplitContainerControl3.Panel1.Controls.Add(Me.SearchControl2)
Me.SplitContainerControl3.Panel1.Text = "Panel1"
Me.SplitContainerControl3.Panel2.Controls.Add(Me.GridControl1)
Me.SplitContainerControl3.Panel2.Text = "Panel2"
Me.SplitContainerControl3.Size = New System.Drawing.Size(984, 290)
Me.SplitContainerControl3.SplitterPosition = 55
Me.SplitContainerControl3.TabIndex = 9
'
'Button1
'
Me.Button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.Button1.Location = New System.Drawing.Point(886, 6)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(95, 44)
Me.Button1.TabIndex = 5
Me.Button1.Text = "Suchen"
Me.Button1.UseVisualStyleBackColor = True
'
'cmbSelect
'
Me.cmbSelect.Location = New System.Drawing.Point(3, 6)
Me.cmbSelect.Name = "cmbSelect"
Me.cmbSelect.Properties.Appearance.BackColor = System.Drawing.Color.Transparent
Me.cmbSelect.Properties.Appearance.Font = New System.Drawing.Font("Segoe UI", 20.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.cmbSelect.Properties.Appearance.Options.UseBackColor = True
Me.cmbSelect.Properties.Appearance.Options.UseFont = True
Me.cmbSelect.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.Simple
Me.cmbSelect.Properties.Buttons.AddRange(New DevExpress.XtraEditors.Controls.EditorButton() {New DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)})
Me.cmbSelect.Properties.Items.AddRange(New Object() {"Alle", "Belege", "Rechnungen", "Lieferscheine", "Aufträge", "Angebote", "Kunde Schaum", "Kunde medacom"})
Me.cmbSelect.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor
Me.cmbSelect.Size = New System.Drawing.Size(113, 44)
Me.cmbSelect.TabIndex = 4
'
'SearchControl2
'
Me.SearchControl2.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.SearchControl2.Location = New System.Drawing.Point(115, 6)
Me.SearchControl2.Name = "SearchControl2"
Me.SearchControl2.Properties.Appearance.BackColor = System.Drawing.Color.Transparent
Me.SearchControl2.Properties.Appearance.Font = New System.Drawing.Font("Segoe UI", 20.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.SearchControl2.Properties.Appearance.Options.UseBackColor = True
Me.SearchControl2.Properties.Appearance.Options.UseFont = True
Me.SearchControl2.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.Simple
Me.SearchControl2.Properties.EditMode = DevExpress.XtraEditors.TokenEditMode.Manual
Me.SearchControl2.Properties.EditValueType = DevExpress.XtraEditors.TokenEditValueType.List
Me.SearchControl2.Properties.PopupFilterMode = DevExpress.XtraEditors.TokenEditPopupFilterMode.Contains
Me.SearchControl2.Properties.Separators.AddRange(New String() {",", "-", "ODER", "OR", "AND", "UND"})
Me.SearchControl2.Size = New System.Drawing.Size(772, 44)
Me.SearchControl2.TabIndex = 3
'
'GridControl1
'
Me.GridControl1.Dock = System.Windows.Forms.DockStyle.Fill
Me.GridControl1.Location = New System.Drawing.Point(0, 0)
Me.GridControl1.MainView = Me.GridView1
Me.GridControl1.Name = "GridControl1"
Me.GridControl1.Size = New System.Drawing.Size(984, 225)
Me.GridControl1.TabIndex = 8
Me.GridControl1.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.GridView1})
'
'GridView1
'
Me.GridView1.Columns.AddRange(New DevExpress.XtraGrid.Columns.GridColumn() {Me.colParenLeft, Me.colAttribute, Me.colOperator, Me.colValue, Me.colParenRight})
Me.GridView1.GridControl = Me.GridControl1
Me.GridView1.Name = "GridView1"
'
'colParenLeft
'
Me.colParenLeft.Caption = "("
Me.colParenLeft.FieldName = "ParentLeft"
Me.colParenLeft.Name = "colParenLeft"
Me.colParenLeft.Visible = True
Me.colParenLeft.VisibleIndex = 0
'
'colAttribute
'
Me.colAttribute.Caption = "Attribut"
Me.colAttribute.FieldName = "Key"
Me.colAttribute.Name = "colAttribute"
Me.colAttribute.Visible = True
Me.colAttribute.VisibleIndex = 1
'
'colOperator
'
Me.colOperator.Caption = "Operand"
Me.colOperator.FieldName = "Op"
Me.colOperator.Name = "colOperator"
Me.colOperator.Visible = True
Me.colOperator.VisibleIndex = 2
'
'colValue
'
Me.colValue.Caption = "Wert"
Me.colValue.FieldName = "Value"
Me.colValue.Name = "colValue"
Me.colValue.Visible = True
Me.colValue.VisibleIndex = 3
'
'colParenRight
'
Me.colParenRight.Caption = ")"
Me.colParenRight.FieldName = "ParenRight"
Me.colParenRight.Name = "colParenRight"
Me.colParenRight.Visible = True
Me.colParenRight.VisibleIndex = 4
'
'RibbonControl1
'
Me.RibbonControl1.CommandLayout = DevExpress.XtraBars.Ribbon.CommandLayout.Simplified
Me.RibbonControl1.ExpandCollapseItem.Id = 0
Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.BarButtonItem1})
Me.RibbonControl1.Location = New System.Drawing.Point(0, 0)
Me.RibbonControl1.MaxItemId = 2
Me.RibbonControl1.Name = "RibbonControl1"
Me.RibbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1})
Me.RibbonControl1.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.[False]
Me.RibbonControl1.Size = New System.Drawing.Size(984, 94)
Me.RibbonControl1.StatusBar = Me.RibbonStatusBar1
'
'BarButtonItem1
'
Me.BarButtonItem1.Caption = "BarButtonItem1"
Me.BarButtonItem1.Id = 1
Me.BarButtonItem1.Name = "BarButtonItem1"
'
'RibbonPage1
'
Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1, Me.RibbonPageGroup2})
Me.RibbonPage1.Name = "RibbonPage1"
Me.RibbonPage1.Text = "RibbonPage1"
'
'RibbonPageGroup1
'
Me.RibbonPageGroup1.ItemLinks.Add(Me.BarButtonItem1)
Me.RibbonPageGroup1.Name = "RibbonPageGroup1"
Me.RibbonPageGroup1.Text = "RibbonPageGroup1"
'
'RibbonPageGroup2
'
Me.RibbonPageGroup2.Name = "RibbonPageGroup2"
Me.RibbonPageGroup2.Text = "RibbonPageGroup2"
'
'RibbonStatusBar1
'
Me.RibbonStatusBar1.Location = New System.Drawing.Point(0, 587)
Me.RibbonStatusBar1.Name = "RibbonStatusBar1"
Me.RibbonStatusBar1.Ribbon = Me.RibbonControl1
Me.RibbonStatusBar1.Size = New System.Drawing.Size(984, 22)
'
'RibbonPage2
'
Me.RibbonPage2.Name = "RibbonPage2"
Me.RibbonPage2.Text = "RibbonPage2"
'
'frmSearchNeu
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(984, 609)
Me.Controls.Add(Me.SplitContainerControl2)
Me.Controls.Add(Me.RibbonStatusBar1)
Me.Controls.Add(Me.RibbonControl1)
Me.Name = "frmSearchNeu"
Me.Ribbon = Me.RibbonControl1
Me.StatusBar = Me.RibbonStatusBar1
Me.Text = "frmSearchNeu"
CType(Me.NavBarControl1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.SplitContainerControl1, System.ComponentModel.ISupportInitialize).EndInit()
Me.SplitContainerControl1.ResumeLayout(False)
CType(Me.SplitContainerControl2, System.ComponentModel.ISupportInitialize).EndInit()
Me.SplitContainerControl2.ResumeLayout(False)
CType(Me.SplitContainerControl3, System.ComponentModel.ISupportInitialize).EndInit()
Me.SplitContainerControl3.ResumeLayout(False)
CType(Me.cmbSelect.Properties, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.SearchControl2.Properties, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.GridControl1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.GridView1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents NavBarControl1 As DevExpress.XtraNavBar.NavBarControl
Friend WithEvents NavBarGroup1 As DevExpress.XtraNavBar.NavBarGroup
Friend WithEvents SplitContainerControl1 As SplitContainerControl
Friend WithEvents SplitContainerControl2 As SplitContainerControl
Friend WithEvents SplitContainerControl3 As SplitContainerControl
Friend WithEvents GridControl1 As GridControl
Friend WithEvents GridView1 As GridView
Friend WithEvents RibbonControl1 As DevExpress.XtraBars.Ribbon.RibbonControl
Friend WithEvents RibbonPage1 As DevExpress.XtraBars.Ribbon.RibbonPage
Friend WithEvents RibbonPageGroup1 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
Friend WithEvents RibbonPageGroup2 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
Friend WithEvents RibbonStatusBar1 As DevExpress.XtraBars.Ribbon.RibbonStatusBar
Friend WithEvents RibbonPage2 As DevExpress.XtraBars.Ribbon.RibbonPage
Friend WithEvents BarButtonItem1 As DevExpress.XtraBars.BarButtonItem
Friend WithEvents colParenLeft As Columns.GridColumn
Friend WithEvents colAttribute As Columns.GridColumn
Friend WithEvents colOperator As Columns.GridColumn
Friend WithEvents colValue As Columns.GridColumn
Friend WithEvents colParenRight As Columns.GridColumn
Friend WithEvents Button1 As Button
Friend WithEvents cmbSelect As ComboBoxEdit
Friend WithEvents SearchControl2 As TokenEdit
End Class

View File

@ -0,0 +1,123 @@
Imports System.Collections
Imports System.ComponentModel
Imports DevExpress.XtraEditors
Imports DigitalData.GUIs.ZooFlow.Search
Imports DigitalData.GUIs.ZooFlow.Search.SearchToken
Imports DigitalData.Modules.EDMI.API
Public Class frmSearchNeu
Private Search As Search.Search
Private Database As DatabaseWithFallback
Private TokenListDefault As New Dictionary(Of String, Object)
Private TokenListOperands As New Dictionary(Of String, Object)
Private TokenListAttrValues As New Dictionary(Of String, Object)
Private Sub XtraForm1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Database = New DatabaseWithFallback(My.LogConfig, My.Application.Service.Client, My.DatabaseECM, My.DatabaseIDB)
Search = New Search.Search(My.LogConfig, My.Application.User, Database)
Dim oTokens = Search.GetAttributeTokens()
AddTokens(SearchControl2, oTokens)
GridControl1.DataSource = Search.Query
cmbSelect.SelectedIndex = 0
End Sub
Private Sub SetTokens(Editor As TokenEdit, Tokens As Dictionary(Of String, Object))
Editor.Properties.Tokens.Clear()
AddTokens(Editor, Tokens)
End Sub
Private Sub AddTokens(Editor As TokenEdit, Tokens As Dictionary(Of String, Object))
For Each oToken In Tokens
Dim oTokenEditToken = New TokenEditToken With {
.Description = oToken.Key,
.Value = oToken.Value
}
Editor.Properties.Tokens.Add(oTokenEditToken)
Next
End Sub
Private Sub SearchControl2_Properties_TokenAdded(sender As Object, e As DevExpress.XtraEditors.TokenEditTokenAddedEventArgs) Handles SearchControl2.Properties.TokenAdded
Dim oEditor As TokenEdit = sender
SetNewTokens(oEditor)
End Sub
Private Sub SearchControl2_Properties_TokenRemoved(sender As Object, e As TokenEditTokenRemovedEventArgs) Handles SearchControl2.Properties.TokenRemoved
Dim oEditor As TokenEdit = sender
SetNewTokens(oEditor)
End Sub
Private Sub SetNewTokens(pEditor As TokenEdit)
Dim oLastToken = pEditor.GetTokenList().LastOrDefault()
pEditor.Properties.BeginUpdate()
If oLastToken IsNot Nothing Then
Select Case oLastToken.Value.GetType
Case GetType(AttributeKeyToken)
' After the attribute key comes an operator
SetTokens(pEditor, Search.GetOperatorTokens(GetType(String)))
Search.InputMode = InputMode.Operator
Case GetType(AttributeOperatorToken)
' After the attribute operator comes a value
SetTokens(pEditor, TokenListAttrValues)
Search.InputMode = InputMode.Value
Case GetType(AttributeValueToken)
' After the attribute value comes another value
SetTokens(pEditor, TokenListAttrValues)
Search.InputMode = InputMode.Value
Case Else
SetTokens(pEditor, TokenListDefault)
Search.InputMode = InputMode.Default
End Select
Else
SetTokens(pEditor, TokenListDefault)
Search.InputMode = InputMode.Default
End If
pEditor.Properties.EndUpdate()
End Sub
Private Sub SearchControl2_CustomDrawTokenGlyph(sender As Object, e As TokenEditCustomDrawTokenGlyphEventArgs) Handles SearchControl2.CustomDrawTokenGlyph
' Set Background according to token type
Select Case e.Value.GetType()
Case GetType(AttributeKeyToken)
e.Graphics.FillRectangle(New SolidBrush(ColorTranslator.FromHtml("#F87171")), e.Bounds)
Case GetType(AttributeOperatorToken)
e.Graphics.FillRectangle(New SolidBrush(ColorTranslator.FromHtml("#34D399")), e.Bounds)
Case GetType(AttributeValueToken)
e.Graphics.FillRectangle(New SolidBrush(ColorTranslator.FromHtml("#60A5FA")), e.Bounds)
Case Else
End Select
' Draw the glyph on top
' This fixes: https://supportcenter.devexpress.com/ticket/details/t215578/tokenedit-glyph-is-not-visible-when-customdrawtokentext-is-used
e.DefaultDraw()
End Sub
Private Sub SearchControl2_KeyUp(sender As Object, e As KeyEventArgs) Handles SearchControl2.KeyUp
If Search.InputMode = InputMode.Value And e.KeyCode = Keys.Enter And SearchControl2.IsPopupOpen Then
Search.Query.Add(New SearchCriteria With {
.ParenLeft = False,
.Key = "test",
.Op = OperatorToken.Equals,
.Value = "test",
.ParentRight = False
})
End If
End Sub
Private Sub RibbonControl1_Click(sender As Object, e As EventArgs) Handles RibbonControl1.Click
End Sub
End Class

View File

@ -9,7 +9,7 @@ Imports DevExpress.XtraEditors
Imports DevExpress.XtraSplashScreen
Imports DigitalData.GUIs.Common
Imports DigitalData.GUIs.ZooFlow.ClassConstants
Imports DigitalData.GUIs.ZooFlow.SearchFilter
Imports DigitalData.GUIs.ZooFlow.Search.SearchFilter
Imports System.Threading.Tasks

View File

@ -70,6 +70,10 @@
<Reference Include="DevExpress.Data.v19.2" />
<Reference Include="DevExpress.DataAccess.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.DataAccess.v19.2.UI, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Images.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>D:\ProgramFiles\DevExpress 19.2\Components\Bin\Framework\DevExpress.Images.v19.2.dll</HintPath>
</Reference>
<Reference Include="DevExpress.Office.v19.2.Core, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Printing.v19.2.Core" />
<Reference Include="DevExpress.RichEdit.v19.2.Core, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
@ -285,6 +289,12 @@
<Compile Include="Globix\frmGlobix_Index.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Search\frmSearchNeu.Designer.vb">
<DependentUpon>frmSearchNeu.vb</DependentUpon>
</Compile>
<Compile Include="Search\frmSearchNeu.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Search\frmSearchPredefined.Designer.vb">
<DependentUpon>frmSearchPredefined.vb</DependentUpon>
</Compile>
@ -335,18 +345,16 @@
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Application.myapp</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="MyApplication.vb" />
<Compile Include="Queries\ClassQueries.vb" />
<Compile Include="Search\Search.vb" />
<Compile Include="Search\SearchCriteria.vb" />
<Compile Include="Search\SearchFilter.vb" />
<Compile Include="Search\SearchToken.vb" />
<Compile Include="Search\State.vb" />
<Compile Include="Search\frmSearch2021.Designer.vb">
<DependentUpon>frmSearch2021.vb</DependentUpon>
</Compile>
<Compile Include="Search\frmSearch2021.vb">
<SubType>Form</SubType>
</Compile>
<EmbeddedResource Include="Administration\frmAdmin_ClipboardWatcher.resx">
<DependentUpon>frmAdmin_ClipboardWatcher.vb</DependentUpon>
</EmbeddedResource>
@ -392,6 +400,9 @@
<EmbeddedResource Include="Globix\frmGlobix_Index.resx">
<DependentUpon>frmGlobix_Index.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Search\frmSearchNeu.resx">
<DependentUpon>frmSearchNeu.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Search\frmSearchPredefined.resx">
<DependentUpon>frmSearchPredefined.vb</DependentUpon>
</EmbeddedResource>
@ -411,9 +422,6 @@
<SubType>Designer</SubType>
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Include="Search\frmSearch2021.resx">
<DependentUpon>frmSearch2021.vb</DependentUpon>
</EmbeddedResource>
<None Include="App.config" />
<None Include="DBCW_Stammdaten.xsc">
<DependentUpon>DBCW_Stammdaten.xsd</DependentUpon>

View File

@ -204,16 +204,15 @@ Public Class frmFlowForm
Next
AddHandler Watcher.ClipboardChanged, AddressOf Watcher_ClipboardChanged
Dim oSQL As String
' Dim oSQL = My.Queries.Common.FNIDB_GET_SEARCH_PROFILES(My.Application.User.UserId, My.Application.User.Language)
'Dim oDatatable As DataTable = My.DatabaseIDB.GetDatatable(oSQL)
PictureBoxSearch1.Visible = False
'If Not IsNothing(oDatatable) OrElse oDatatable.Rows.Count > 0 Then
' IDBSearchActive = True
' DTIDB_SEARCHES = oDatatable
' PictureBoxSearch1.Visible = True
'End If
Dim oSQL = My.Queries.Common.FNIDB_GET_SEARCH_PROFILES(My.Application.User.UserId, My.Application.User.Language)
Dim oDatatable As DataTable = My.DatabaseIDB.GetDatatable(oSql)
PictureBoxSearch1.Visible = False
If Not IsNothing(oDatatable) OrElse oDatatable.Rows.Count > 0 Then
IDBSearchActive = True
DTIDB_SEARCHES = oDatatable
PictureBoxSearch1.Visible = True
End If
If My.Application.ModulesActive.Contains(MODULE_CLIPBOARDWATCHER) Then
Try
@ -256,8 +255,6 @@ Public Class frmFlowForm
Logger.Info("Clipboard Watcher Module is not active. Hotkey Monitoring will be disabled!")
End If
If My.Application.ModulesActive.Contains(MODULE_GLOBAL_INDEXER) Then
FileDrop = New ClassFileDrop(My.LogConfig)
FileHandle = New ClassFilehandle()
@ -403,7 +400,7 @@ Public Class frmFlowForm
Logger.Debug("OnEvent called!")
End Sub
Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
frmSearch2021.Show()
frmSearchNeu.Show()
'Open_FlowSearch()
End Sub
@ -1011,9 +1008,5 @@ Public Class frmFlowForm
frmtest.Show()
End Sub
Private Sub PictureBoxGlobix1_Click(sender As Object, e As EventArgs) Handles PictureBoxGlobix1.Click
End Sub
End Class

View File

@ -99,6 +99,7 @@ Public Class frmtest
Dim oResult As Long = Await My.Application.Service.Client.NewFileAsync(
txtFile2Import.Text,
"WORK",
"DOC",
"DEFAULT",
New NewFileOptions With {
.KeepExtension = CheckBoxKeepExtension.Checked,

View File

@ -225,7 +225,7 @@ Public Class MSSQLServer
''' </summary>
''' <param name="Connection"></param>
''' <returns></returns>
<DebuggerStepThrough()>
'<DebuggerStepThrough()>
Private Function OpenSQLConnection(Connection As SqlConnection) As SqlConnection
If Connection.State = ConnectionState.Closed Then
Connection.Open()
@ -234,12 +234,12 @@ Public Class MSSQLServer
Return Connection
End Function
<DebuggerStepThrough()>
'<DebuggerStepThrough()>
Private Function GetSQLConnection() As SqlConnection
Return GetConnection(CurrentSQLConnectionString)
End Function
<DebuggerStepThrough()>
'<DebuggerStepThrough()>
Private Function GetConnection(ConnectionString As String) As SqlConnection
Try
Dim oConnection As New SqlConnection(ConnectionString)
@ -272,7 +272,7 @@ Public Class MSSQLServer
End Try
End Function
<DebuggerStepThrough()>
'<DebuggerStepThrough()>
Public Function GetDatatable(SqlCommand As String) As DataTable Implements IDatabase.GetDatatable
Return GetDatatable(SqlCommand, _Timeout)
End Function
@ -282,33 +282,33 @@ Public Class MSSQLServer
''' </summary>
''' <param name="SqlCommand">sqlcommand for datatable (select XYZ from TableORView)</param>
''' <returns>Returns a datatable</returns>
<DebuggerStepThrough()>
'<DebuggerStepThrough()>
Public Function GetDatatable(SqlCommand As String, Timeout As Integer) As DataTable Implements IDatabase.GetDatatable
Using oSqlConnection = GetSQLConnection()
Return GetDatatableWithConnectionObject(SqlCommand, oSqlConnection, TransactionMode.WithTransaction, Nothing, Timeout)
End Using
End Function
<DebuggerStepThrough()>
'<DebuggerStepThrough()>
Public Function GetDatatable(SqlCommand As String, Transaction As SqlTransaction, Optional Timeout As Integer = 120) As DataTable
Using oSqlConnection = GetSQLConnection()
Return GetDatatableWithConnectionObject(SqlCommand, oSqlConnection, TransactionMode.ExternalTransaction, Transaction, Timeout)
End Using
End Function
<DebuggerStepThrough()>
'<DebuggerStepThrough()>
Public Async Function GetDatatableAsync(SqlCommand As String, Optional Timeout As Integer = 120) As Task(Of DataTable)
Return Await Task.Run(Function() GetDatatable(SqlCommand, Timeout))
End Function
<DebuggerStepThrough()>
'<DebuggerStepThrough()>
Public Function GetDatatableWithConnection(SqlCommand As String, ConnectionString As String, Optional Timeout As Integer = 120) As DataTable
Using oConnection = GetConnection(ConnectionString)
Return GetDatatableWithConnectionObject(SqlCommand, oConnection, Timeout:=Timeout)
End Using
End Function
<DebuggerStepThrough()>
'<DebuggerStepThrough()>
Public Function GetDatatableWithConnectionObject(SqlCommand As String, SqlConnection As SqlConnection,
Optional TransactionMode As TransactionMode = TransactionMode.WithTransaction,
Optional Transaction As SqlTransaction = Nothing,

View File

@ -47,15 +47,15 @@ Public Class DatabaseWithFallback
End If
End Function
Public Function GetDatatable(DataTable As String, FallbackSQL As String, FallbackType As Constants.DatabaseType, Optional FilterExpression As String = "", Optional SortByColumn As String = "", Optional ForceFallback As Boolean = False) As DataTable
Public Function GetDatatable(pDataTableName As String, pFallbackSQL As String, pFallbackType As Constants.DatabaseType, Optional pFilterExpression As String = "", Optional pSortByColumn As String = "", Optional pForceFallback As Boolean = False) As DataTable
Try
Dim oResult As DataTable = Nothing
If ForceFallback = False Then
If pForceFallback = False Then
Dim oTableResult As TableResult
Try
oTableResult = _Client.GetDatatableByName(DataTable, FilterExpression, SortByColumn)
oTableResult = _Client.GetDatatableByName(pDataTableName, pFilterExpression, pSortByColumn)
Catch ex As Exception
_Logger.Error(ex)
oTableResult = Nothing
@ -63,12 +63,12 @@ Public Class DatabaseWithFallback
If oTableResult Is Nothing OrElse oTableResult.OK = False Then
_Logger.Warn("Datatable [{0}] could not be fetched from AppServer Cache. Falling back to direct Database Access.")
Return GetDatatableFromDatabase(FallbackSQL, FallbackType)
Return GetDatatableFromDatabase(pFallbackSQL, pFallbackType)
End If
Return oTableResult.Table
Else
Return GetDatatableFromDatabase(FallbackSQL, FallbackType)
Return GetDatatableFromDatabase(pFallbackSQL, pFallbackType)
End If
Catch ex As Exception
_Logger.Error(ex)
@ -95,32 +95,5 @@ Public Class DatabaseWithFallback
End Try
End Function
Public Function GetUserData(UserName As String, ModuleCode As String, Client As Integer) As UserData
'Dim oSQL = $"SELECT * FROM FNDD_CHECK_USER_MODULE('{UserName}','{ModuleCode}',{Client})"
'Dim oTable As DataTable = GetDatatable("TBDD_USER_MODULE", $"USERNAME = '{UserName.ToLower}' AND MODULE_SHORT = '{ModuleCode}'", "", oSQL, DatabaseType.ECM)
'If oTable Is Nothing Then
' Return Nothing
'End If
'If oTable.Rows.Count = 0 Then
' Return Nothing
'End If
'Dim oRow As DataRow = oTable.Rows.Item(0)
'Dim oUserData As New UserData With {
' .Id = NotNull(oRow, "USER_ID", -1),
' .Surname = NotNull(oRow, "USER_SURNAME", String.Empty),
' .Prename = NotNull(oRow, "USER_PRENAME", String.Empty),
' .Shortname = NotNull(oRow, "USER_SHORTNAME", String.Empty),
' .Email = NotNull(oRow, "USER_EMAIL", String.Empty),
' .Language = NotNull(oRow, "USER_LANGUAGE", "de-DE"),
' .DateFormat = NotNull(oRow, "USER_DATE_FORMAT", "dd.MM.yyyy")
'}
Throw New NotImplementedException()
End Function
End Class

View File

@ -1,14 +0,0 @@
Public Class UserData
Public Id As Integer
Public Surname As String
Public Prename As String
Public Shortname As String
Public Email As String
Public Language As String
Public DateFormat As String
Public IsAdmin As Boolean
Public HasAccess As Boolean
Public ModuleName As String
End Class

View File

@ -97,7 +97,6 @@
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<Compile Include="DatabaseWithFallback\UserData.vb" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="My Project\Resources.resx">

View File

@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
' übernehmen, indem Sie "*" eingeben:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.2.3.0")>
<Assembly: AssemblyFileVersion("1.2.3.0")>
<Assembly: AssemblyVersion("1.2.4.0")>
<Assembly: AssemblyFileVersion("1.2.4.0")>

View File

@ -4,8 +4,10 @@ Imports System.Text.RegularExpressions
Namespace [PatternModule]
Public Class BaseModule
Friend ReadOnly Logger As Logger
Private ReadOnly MyRegex As Regex = New Regex("{#(\w+)#([\:\.\w\s_-]+)}+")
Private ReadOnly SqlPhrases As New List(Of String) From {
"SELECT ", "UPDATE ", "DELETE ", "EXEC "
}
Private Const MAX_TRY_COUNT = 500
@ -21,23 +23,37 @@ Namespace [PatternModule]
pCounter += 1
End Sub
Public Function ReplacePattern(input As String, type As String, replacement As String) As String
Dim elements As MatchCollection = MyRegex.Matches(input)
Public Function ReplacePattern(pInput As String, pType As String, pReplacement As String) As String
Dim oElements As MatchCollection = MyRegex.Matches(pInput)
If IsNothing(replacement) Then
Return input
If IsNothing(pReplacement) Then
Return pInput
End If
For Each element As Match In elements
Dim oIsSQL As Boolean = False
For Each oPhrase In SqlPhrases
If pInput.Contains(oPhrase) Then
oIsSQL = True
Exit For
End If
Next
If oIsSQL = True Then
Logger.Debug("Input string is most likely an SQL Query, masking quotes in replacement string.")
pReplacement = pReplacement.Replace("'", "''")
End If
For Each oElement As Match In oElements
' if group 1 contains the 'pattern' the replace whole group with 'replacement'
' and return it
If element.Groups(1).Value = type Then
Return Regex.Replace(input, element.Groups(0).Value, replacement)
If oElement.Groups(1).Value = pType Then
Logger.Debug("Replacing Placeholder with [{0}]", pReplacement)
Return Regex.Replace(pInput, oElement.Groups(0).Value, pReplacement)
End If
Next
' no replacement made
Return input
Return pInput
End Function
Public Function ContainsPatternAndValue(pInput As String, pType As String, pValue As String) As Boolean
@ -45,10 +61,10 @@ Namespace [PatternModule]
For Each oElement As Match In oElements
' Pattern in pInput
Dim t As String = oElement.Groups(1).Value
Dim v As String = oElement.Groups(2).Value
Dim oType As String = oElement.Groups(1).Value
Dim oValue As String = oElement.Groups(2).Value
If t = pType And v = pValue Then
If oType = pType And oValue = pValue Then
Return True
End If
Next
@ -84,16 +100,16 @@ Namespace [PatternModule]
Return False
End Function
Public Function GetNextPattern(input As String, type As String) As Pattern
Dim elements As MatchCollection = MyRegex.Matches(input)
Public Function GetNextPattern(pInput As String, pType As String) As Pattern
Dim oElements As MatchCollection = MyRegex.Matches(pInput)
For Each element As Match In elements
For Each oElement As Match In oElements
' Pattern in pInput
Dim t As String = element.Groups(1).Value
Dim v As String = element.Groups(2).Value
Dim oType As String = oElement.Groups(1).Value
Dim oValue As String = oElement.Groups(2).Value
If t = type Then
Return New Pattern(t, v)
If oType = pType Then
Return New Pattern(oType, oValue)
End If
Next

View File

@ -11,7 +11,6 @@ Namespace [PatternModule]
Public Const CLIPBOARD_VALUE_EN = "@Clipboard"
Public Property PatternIdentifier As String = "CLIP" Implements IModule.PatternIdentifier
Public Property IsComplex As Boolean = False Implements IModule.IsComplex
Public Sub New(pLogConfig As LogConfig)

View File

@ -4,55 +4,62 @@ Imports DigitalData.Modules.Logging
Namespace [PatternModule]
''' <summary>
''' Simple patterns that only rely on .NET functions
''' Patterns for control values on a panel
''' </summary>
Public Class Controls
Inherits BaseModule
Implements IModule
Public Const CTRL_VALUE_PANEL = "PANEL"
Public Const CTRL_VALUE_PANEL = "CTRL_VALUE_PANEL"
Public Property PatternIdentifier As String = "CTRL" Implements IModule.PatternIdentifier
Public Property IsComplex As Boolean = True Implements IModule.IsComplex
Private ReadOnly Logger As Logger
Public Sub New(pLogConfig As LogConfig)
MyBase.New(pLogConfig)
Logger = pLogConfig.GetLogger()
End Sub
Public Function Replace(pInput As String, pReplaceMap As Dictionary(Of String, Object)) As String Implements IModule.Replace
Dim oResult = pInput
Dim oCounter = 0
Dim oPanel As Panel = pReplaceMap.Item("CTRL_VALUE_PANEL")
Dim oPanel As Panel = pReplaceMap.Item(CTRL_VALUE_PANEL)
While ContainsPattern(oResult, PatternIdentifier)
Dim oControlName As String = GetNextPattern(oResult, PatternIdentifier).Value
Dim oControl As Control = oPanel.Controls.Find(oControlName, False).FirstOrDefault()
Try
Dim oControlName As String = GetNextPattern(oResult, PatternIdentifier).Value
Dim oControl As Control = oPanel.Controls.Find(oControlName, False).FirstOrDefault()
If oControl IsNot Nothing Then
Dim oReplaceValue As String
Select Case oControl.GetType.ToString
Case GetType(TextBox).ToString
oReplaceValue = oControl.Text
Case GetType(LookupControl3).ToString
Dim oLookupControl3 As LookupControl3 = oControl
If oLookupControl3.Properties.SelectedValues.Count = 1 Then
oReplaceValue = oLookupControl3.Properties.SelectedValues.Item(0)
Else
If oControl IsNot Nothing Then
Dim oReplaceValue As String
Select Case oControl.GetType.ToString
Case GetType(TextBox).ToString
oReplaceValue = oControl.Text
Case GetType(LookupControl3).ToString
Dim oLookupControl3 As LookupControl3 = oControl
If oLookupControl3.Properties.SelectedValues.Count = 1 Then
oReplaceValue = oLookupControl3.Properties.SelectedValues.Item(0)
Else
oReplaceValue = "0"
End If
Case GetType(ComboBox).ToString
oReplaceValue = oControl.Text
Case GetType(CheckBox).ToString
Dim oCheckBox As CheckBox = oControl
oReplaceValue = oCheckBox.Checked
Case Else
oReplaceValue = "0"
End If
Case GetType(ComboBox).ToString
oReplaceValue = oControl.Text
Case GetType(CheckBox).ToString
Dim oCheckBox As CheckBox = oControl
oReplaceValue = oCheckBox.Checked
Case Else
oReplaceValue = "0"
End Select
End Select
oResult = ReplacePattern(oResult, PatternIdentifier, oReplaceValue)
End If
oResult = ReplacePattern(oResult, PatternIdentifier, oReplaceValue)
End If
Catch ex As Exception
Logger.Error(ex)
Finally
IncrementCounterOrThrow(oCounter)
End Try
IncrementCounterOrThrow(oCounter)
End While
Return oResult

View File

@ -0,0 +1,31 @@
Imports System.Windows.Forms
Imports DigitalData.Controls.LookupGrid
Imports DigitalData.Modules.Logging
Namespace [PatternModule]
''' <summary>
''' Patterns for Windream Indicies
''' </summary>
Public Class IDB
Inherits BaseModule
Implements IModule
Public Const IDB_OBJECT_ID = "IDB_OBJECT_ID"
Public Property PatternIdentifier As String = "IDB" Implements IModule.PatternIdentifier
Public Property IsComplex As Boolean = True Implements IModule.IsComplex
Private ReadOnly Logger As Logger
Public Sub New(pLogConfig As LogConfig)
MyBase.New(pLogConfig)
Logger = pLogConfig.GetLogger()
End Sub
Public Function Replace(pInput As String, pReplaceMap As Dictionary(Of String, Object)) As String Implements IModule.Replace
'TODO: Implement, depends on IDB Data, which is not in monorepo yet
Return pInput
End Function
End Class
End Namespace

View File

@ -14,7 +14,6 @@ Namespace [PatternModule]
Public Const INT_VALUE_DATE = "DATE"
Public Property PatternIdentifier As String = "INT" Implements IModule.PatternIdentifier
Public Property IsComplex As Boolean = False Implements IModule.IsComplex
Public Sub New(pLogConfig As LogConfig)

View File

@ -14,7 +14,6 @@ Namespace [PatternModule]
Public Const USER_VALUE_USER_NAME = "USER_NAME"
Public Property PatternIdentifier As String = "USER" Implements IModule.PatternIdentifier
Public Property IsComplex As Boolean = True Implements IModule.IsComplex
Public Sub New(pLogConfig As LogConfig)

View File

@ -0,0 +1,53 @@
Imports System.Windows.Forms
Imports DigitalData.Controls.LookupGrid
Imports DigitalData.Modules.Logging
Namespace [PatternModule]
''' <summary>
''' Patterns for Windream Indicies
''' </summary>
Public Class Windream
Inherits BaseModule
Implements IModule
Public Const WM_VALUE_DOCUMENT = "WM_DOCUMENT"
Public Property PatternIdentifier As String = "WMI" Implements IModule.PatternIdentifier
Public Property IsComplex As Boolean = True Implements IModule.IsComplex
Private ReadOnly Logger As Logger
Public Sub New(pLogConfig As LogConfig)
MyBase.New(pLogConfig)
Logger = pLogConfig.GetLogger()
End Sub
Public Function Replace(pInput As String, pReplaceMap As Dictionary(Of String, Object)) As String Implements IModule.Replace
Dim oResult = pInput
Dim oCounter = 0
Dim pWMObject As WINDREAMLib.WMObject = pReplaceMap.Item(WM_VALUE_DOCUMENT)
While ContainsPattern(oResult, PatternIdentifier)
Try
Dim oIndexName As String = GetNextPattern(oResult, PatternIdentifier).Value
Dim oWMValue As Object = pWMObject.GetVariableValue(oIndexName)
If oWMValue Is Nothing Then
Logger.Warn("Value for Index [{0}] is empty and will not be used for replacing. Skipping.")
Return oResult
End If
oResult = ReplacePattern(oResult, PatternIdentifier, oWMValue.ToString)
Catch ex As Exception
Logger.Error(ex)
Return oResult
Finally
IncrementCounterOrThrow(oCounter)
End Try
End While
Return oResult
End Function
End Class
End Namespace

View File

@ -12,7 +12,7 @@ Imports System.Runtime.InteropServices
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("")>
<Assembly: AssemblyProduct("Patterns")>
<Assembly: AssemblyCopyright("Copyright © 2019")>
<Assembly: AssemblyCopyright("Copyright © 2021")>
<Assembly: AssemblyTrademark("")>
<Assembly: ComVisible(False)>

View File

@ -81,6 +81,8 @@
</ItemGroup>
<ItemGroup>
<Compile Include="Constants.vb" />
<Compile Include="Modules\IDB.vb" />
<Compile Include="Modules\Windream.vb" />
<Compile Include="Modules\User.vb" />
<Compile Include="Modules\IModule.vb" />
<Compile Include="Modules\Clipboard.vb" />

View File

@ -91,34 +91,114 @@ Public Class Patterns2
Return oResult
End Function
Private Function GetReplaceMapForModule(pModule As IModule, pPanel As Panel, pUser As State.UserState) As Dictionary(Of String, Object)
Public Function ReplaceUserValues(pInput As String, pUser As State.UserState) As String
Dim oResult = pInput
Dim oModule = GetModule(Of PatternModule.User)()
Dim oArgs = GetReplaceMapForModule(oModule, pUser:=pUser)
oResult = DoReplaceForModule(oResult, oModule, oArgs)
Return oResult
End Function
Public Function ReplaceControlValues(pInput As String, pPanel As Panel) As String
Dim oResult = pInput
Dim oModule = GetModule(Of PatternModule.Controls)()
Dim oArgs = GetReplaceMapForModule(oModule, pPanel:=pPanel)
oResult = DoReplaceForModule(oResult, oModule, oArgs)
Return oResult
End Function
Public Function ReplaceWindreamValues(pInput As String, pWMObject As WMObject) As String
Dim oResult = pInput
Dim oModule = GetModule(Of PatternModule.Windream)()
Dim oArgs = GetReplaceMapForModule(oModule, pWMObject:=pWMObject)
oResult = DoReplaceForModule(oResult, oModule, oArgs)
Return oResult
End Function
Public Function ReplaceInternalValues(pInput As String) As String
Dim oResult = pInput
Dim oInternalModule = GetModule(Of PatternModule.Internal)()
Dim oInternalArgs = GetReplaceMapForModule(oInternalModule)
oResult = DoReplaceForModule(oResult, oInternalModule, oInternalArgs)
Dim oClipboardModule = GetModule(Of PatternModule.Clipboard)()
Dim oClipboardArgs = GetReplaceMapForModule(oClipboardModule)
oResult = DoReplaceForModule(oResult, oClipboardModule, oClipboardArgs)
Return oResult
End Function
Private Function DoReplaceForModule(pInput As String, pModule As IModule, pArgs As Dictionary(Of String, Object)) As String
Try
pInput = pModule.Replace(pInput, pArgs)
Catch ex As Exception
Logger.Warn("Placeholders for String [{0}] could not be replaced completely in Module [{1}]. Skipping.", pInput, pModule.GetType.Name)
Logger.Error(ex)
End Try
Return pInput
End Function
Private Function GetModule(Of ModuleT)() As IModule
Return Modules.
Where(Function(m) TypeOf m Is ModuleT).
SingleOrDefault()
End Function
Private Function GetReplaceMapForModule(pModule As IModule, Optional pPanel As Panel = Nothing, Optional pUser As State.UserState = Nothing, Optional pWMObject As WMObject = Nothing) As Dictionary(Of String, Object)
Dim oArgs As New Dictionary(Of String, Object)
Select Case pModule.GetType()
Case GetType(PatternModule.Clipboard)
End Select
If TypeOf pModule Is PatternModule.Clipboard Then
oArgs.Add(PatternModule.Clipboard.CLIP_VALUE_BOARD, My.Computer.Clipboard.GetText())
Try
oArgs.Add(PatternModule.Clipboard.CLIP_VALUE_BOARD, My.Computer.Clipboard.GetText())
Catch ex As Exception
Logger.Error(ex)
End Try
ElseIf TypeOf pModule Is PatternModule.Internal Then
oArgs.Add(PatternModule.Internal.INT_VALUE_USERNAME, System.Environment.UserName)
oArgs.Add(PatternModule.Internal.INT_VALUE_MACHINE, System.Environment.MachineName)
oArgs.Add(PatternModule.Internal.INT_VALUE_DOMAIN, System.Environment.UserDomainName)
oArgs.Add(PatternModule.Internal.INT_VALUE_DATE, Now.ToShortDateString)
Try
oArgs.Add(PatternModule.Internal.INT_VALUE_USERNAME, System.Environment.UserName)
oArgs.Add(PatternModule.Internal.INT_VALUE_MACHINE, System.Environment.MachineName)
oArgs.Add(PatternModule.Internal.INT_VALUE_DOMAIN, System.Environment.UserDomainName)
oArgs.Add(PatternModule.Internal.INT_VALUE_DATE, Now.ToShortDateString)
Catch ex As Exception
Logger.Error(ex)
End Try
ElseIf TypeOf pModule Is PatternModule.User Then
oArgs.Add(PatternModule.User.USER_VALUE_EMAIL, pUser.Email)
oArgs.Add(PatternModule.User.USER_VALUE_LANGUAGE, pUser.Language)
oArgs.Add(PatternModule.User.USER_VALUE_PRENAME, pUser.GivenName)
oArgs.Add(PatternModule.User.USER_VALUE_SHORTNAME, pUser.ShortName)
oArgs.Add(PatternModule.User.USER_VALUE_SURNAME, pUser.Surname)
oArgs.Add(PatternModule.User.USER_VALUE_USER_ID, pUser.UserId)
oArgs.Add(PatternModule.User.USER_VALUE_USER_NAME, pUser.UserName)
Try
oArgs.Add(PatternModule.User.USER_VALUE_EMAIL, pUser.Email)
oArgs.Add(PatternModule.User.USER_VALUE_LANGUAGE, pUser.Language)
oArgs.Add(PatternModule.User.USER_VALUE_PRENAME, pUser.GivenName)
oArgs.Add(PatternModule.User.USER_VALUE_SHORTNAME, pUser.ShortName)
oArgs.Add(PatternModule.User.USER_VALUE_SURNAME, pUser.Surname)
oArgs.Add(PatternModule.User.USER_VALUE_USER_ID, pUser.UserId)
oArgs.Add(PatternModule.User.USER_VALUE_USER_NAME, pUser.UserName)
Catch ex As Exception
Logger.Error(ex)
End Try
ElseIf TypeOf pModule Is PatternModule.Controls Then
oArgs.Add(PatternModule.Controls.CTRL_VALUE_PANEL, pPanel)
Try
oArgs.Add(PatternModule.Controls.CTRL_VALUE_PANEL, pPanel)
Catch ex As Exception
Logger.Error(ex)
End Try
ElseIf TypeOf pModule Is PatternModule.Windream Then
Try
oArgs.Add(PatternModule.Windream.WM_VALUE_DOCUMENT, pWMObject)
Catch ex As Exception
Logger.Error(ex)
End Try
End If
Return oArgs

View File

@ -13,7 +13,7 @@ Imports System.Runtime.InteropServices
<Assembly: AssemblyCompany("Digital Data")>
<Assembly: AssemblyProduct("DDZUGFeRDService")>
<Assembly: AssemblyCopyright("Copyright © 2021")>
<Assembly: AssemblyTrademark("")>
<Assembly: AssemblyTrademark("1800")>
<Assembly: ComVisible(False)>