From 1ae90911a8af8cb5057503b78b1aa3e9530ee6a1 Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Tue, 17 May 2022 16:48:02 +0200 Subject: [PATCH] Zooflow: Work on Search FOrm --- GUIs.Common/frmDocumentResultList.vb | 1 - GUIs.ZooFlow/ClassInit.vb | 39 +- .../Modules/Globix/frmFileflow_Duplicate.vb | 2 +- GUIs.ZooFlow/Search/SearchRunner.vb | 43 ++- GUIs.ZooFlow/Search/Test/Search.vb | 13 +- GUIs.ZooFlow/Search/Test/frmFlowSearch2.vb | 190 --------- GUIs.ZooFlow/Search/frmFlowSearch1.vb | 4 +- .../{Test => }/frmFlowSearch2.Designer.vb | 311 ++++++++++----- .../Search/{Test => }/frmFlowSearch2.resx | 3 + GUIs.ZooFlow/Search/frmFlowSearch2.vb | 360 ++++++++++++++++++ GUIs.ZooFlow/ZooFlow.vbproj | 6 +- GUIs.ZooFlow/frmFlowForm.vb | 36 +- 12 files changed, 640 insertions(+), 368 deletions(-) delete mode 100644 GUIs.ZooFlow/Search/Test/frmFlowSearch2.vb rename GUIs.ZooFlow/Search/{Test => }/frmFlowSearch2.Designer.vb (66%) rename GUIs.ZooFlow/Search/{Test => }/frmFlowSearch2.resx (96%) create mode 100644 GUIs.ZooFlow/Search/frmFlowSearch2.vb diff --git a/GUIs.Common/frmDocumentResultList.vb b/GUIs.Common/frmDocumentResultList.vb index f7f23536..ea0df5a2 100644 --- a/GUIs.Common/frmDocumentResultList.vb +++ b/GUIs.Common/frmDocumentResultList.vb @@ -18,7 +18,6 @@ Imports DigitalData.Modules.Logging Imports DigitalData.Modules.ZooFlow Imports DigitalData.Modules.ZooFlow.Constants Imports DigitalData.Modules.Base.IDB.FileStore -Imports DigitalData.Controls.MessageBoxEx Imports DigitalData.GUIs.Common.Base Imports DigitalData.GUIs.Common.DocumentResultList diff --git a/GUIs.ZooFlow/ClassInit.vb b/GUIs.ZooFlow/ClassInit.vb index 950fe289..0e0bc6a5 100644 --- a/GUIs.ZooFlow/ClassInit.vb +++ b/GUIs.ZooFlow/ClassInit.vb @@ -29,28 +29,23 @@ Public Class ClassInit End Sub Public Sub InitializeApplication() - If Not SetupDatabase() Then - MsgBox("Keine Verbindungs-Informationen hinterlegt. Anwendung wird beendet.", MsgBoxStyle.Critical, _MainForm.Text) - Application.Exit() - Else - _Loader = New ClassInitLoader(LogConfig) - - ' === Init Schritte definieren - _Loader.AddStep("Initializing Base", AddressOf InitializeBase, True) - _Loader.AddStep("Initializing EDMI Service", AddressOf InitializeService, True) - _Loader.AddStep("Initializing Database", AddressOf InitializeDatabaseWithFallback, True) - _Loader.AddStep("Initializing User", AddressOf InitializeUser, True) - _Loader.AddStep("Initializing BasicCatalogues", AddressOf InitializeBasicsfromDB, True) - _Loader.AddStep("Initializing Language", AddressOf InitializeLanguage, False) - _Loader.AddStep("Initializing 3rd-party licenses", AddressOf Initialize3rdParty, False) - _Loader.AddStep("Initializing Basic Config", AddressOf InitBasicConfig, False) - ' === Init Schritte definieren - - AddHandler _Loader.ProgressChanged, AddressOf ProgressChanged - AddHandler _Loader.InitCompleted, AddressOf InitCompleted - - _Loader.Run() - End If + _Loader = New ClassInitLoader(LogConfig) + + ' === Init Schritte definieren + _Loader.AddStep("Initializing Base", AddressOf InitializeBase, True) + _Loader.AddStep("Initializing EDMI Service", AddressOf InitializeService, True) + _Loader.AddStep("Initializing Database", AddressOf InitializeDatabaseWithFallback, True) + _Loader.AddStep("Initializing User", AddressOf InitializeUser, True) + _Loader.AddStep("Initializing BasicCatalogues", AddressOf InitializeBasicsfromDB, True) + _Loader.AddStep("Initializing Language", AddressOf InitializeLanguage, False) + _Loader.AddStep("Initializing 3rd-party licenses", AddressOf Initialize3rdParty, False) + _Loader.AddStep("Initializing Basic Config", AddressOf InitBasicConfig, False) + ' === Init Schritte definieren + + AddHandler _Loader.ProgressChanged, AddressOf ProgressChanged + AddHandler _Loader.InitCompleted, AddressOf InitCompleted + + _Loader.Run() End Sub diff --git a/GUIs.ZooFlow/Modules/Globix/frmFileflow_Duplicate.vb b/GUIs.ZooFlow/Modules/Globix/frmFileflow_Duplicate.vb index 0067375e..57e6b2da 100644 --- a/GUIs.ZooFlow/Modules/Globix/frmFileflow_Duplicate.vb +++ b/GUIs.ZooFlow/Modules/Globix/frmFileflow_Duplicate.vb @@ -40,7 +40,7 @@ Public Class frmFileflow_Duplicate If oSql IsNot Nothing Then Dim oResultDT = Await My.Database.GetDatatableIDBAsync(oSql) If Not IsNothing(oResultDT) Then - Search.Run(oResultDT, "FileFlow Duplicate File") + Search.RunWithDataTable(oResultDT, "FileFlow Duplicate File") End If End If diff --git a/GUIs.ZooFlow/Search/SearchRunner.vb b/GUIs.ZooFlow/Search/SearchRunner.vb index 7b466f19..10b379b5 100644 --- a/GUIs.ZooFlow/Search/SearchRunner.vb +++ b/GUIs.ZooFlow/Search/SearchRunner.vb @@ -59,11 +59,11 @@ Public Class SearchRunner SearchTitle = pSearchTitle End Sub - Public Function Run(pDatatable As DataTable) As SearchResult - Return Run(pDatatable, "Suche") + Public Function RunWithDataTable(pDatatable As DataTable) As SearchResult + Return RunWithDataTable(pDatatable, "Suche") End Function - Public Function Run(pDatatable As DataTable, pTitle As String) As SearchResult + Public Function RunWithDataTable(pDatatable As DataTable, pTitle As String) As SearchResult Dim oParams = GetParams(pTitle) oParams.Results.Add(New DocumentResultList.DocumentResult() With { .Title = pTitle, @@ -82,25 +82,28 @@ Public Class SearchRunner oForm.Show() - Return New SearchResult() + Return New SearchResult(pDatatable.Rows.Count) End Function - Public Async Function Run(pSearchTerm As String) As Task(Of SearchResult) - Return Await Run(pSearchTerm, Nothing, Nothing) + Public Async Function RunWithSearchTerm(pSearchTerm As String) As Task(Of SearchResult) + Return Await RunWithSearchTerm(pSearchTerm, Nothing, Nothing, Nothing) End Function - Public Async Function Run() As Task(Of SearchResult) - Return Await Run("") + Public Async Function RunWithSearchTerm(pSearchTerm As String, pSearchTitle As String) As Task(Of SearchResult) + Return Await RunWithSearchTerm(pSearchTerm, Nothing, Nothing, pSearchTitle) End Function + Public Async Function RunWithSearchTerm(pSearchTerm As String, pDateFrom As Date, pDateTo As Date) As Task(Of SearchResult) + Return Await RunWithSearchTerm(pSearchTerm, pDateFrom, pDateTo, Nothing) + End Function - Public Async Function Run(pSearchTerm As String, pDateFrom As Date, pDateTo As Date) As Threading.Tasks.Task(Of SearchResult) + Public Async Function RunWithSearchTerm(pSearchTerm As String, pDateFrom As Date, pDateTo As Date, pSearchTitle As String) As Task(Of SearchResult) If pDateFrom.Equals(Date.MinValue) = False Then ExplicitDate = True End If Dim oSearchTerm = pSearchTerm - Dim oWindowTitle = GetResultWindowString(pSearchTerm) + Dim oWindowTitle = GetResultWindowString(pSearchTerm, pSearchTitle) Dim oParams = GetParams(oWindowTitle) Dim oDateConstraint = $"{_ActiveDateAttribute}~{_ActiveDateConstraint}" @@ -121,7 +124,8 @@ Public Class SearchRunner If Await My.Database.ExecuteNonQueryIDBAsync(oSQL) = True Then Dim oDTDocResult = Await My.Database.GetDatatableIDBAsync(BaseSearchSQL) - If oDTDocResult.Rows.Count > 0 Then + Dim oRowCount = oDTDocResult.Rows.Count + If oRowCount > 0 Then oParams.Results.Add(New DocumentResultList.DocumentResult() With { .Title = SearchTitle, .Datatable = oDTDocResult @@ -139,9 +143,9 @@ Public Class SearchRunner oForm.Show() - Return New SearchResult() + Return New SearchResult(oRowCount) Else - Return New SearchResult("No Results") + Return New SearchResult(oRowCount) End If Else @@ -168,7 +172,11 @@ Public Class SearchRunner Return oParams End Function - Private Function GetResultWindowString(SearchContent As String) As String + Private Function GetResultWindowString(SearchContent As String, pWindowTitle As String) As String + If pWindowTitle IsNot Nothing Then + Return pWindowTitle + End If + If SearchContent <> String.Empty Then If My.Application.User.Language = State.UserState.LANG_DE_DE Then @@ -260,14 +268,15 @@ Public Class SearchRunner End Sub Public Class SearchResult - Public OK As Boolean + Public OK As Boolean = True + Public Count As Integer = 0 Public ErrorMessage As String = String.Empty ''' ''' Returns a positive Search Result ''' - Public Sub New() - OK = True + Public Sub New(pCountResults As Integer) + Count = pCountResults End Sub ''' diff --git a/GUIs.ZooFlow/Search/Test/Search.vb b/GUIs.ZooFlow/Search/Test/Search.vb index 636012f2..e403bff5 100644 --- a/GUIs.ZooFlow/Search/Test/Search.vb +++ b/GUIs.ZooFlow/Search/Test/Search.vb @@ -71,9 +71,18 @@ Namespace Search 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 oSQL = $"EXEC PRIDB_SEARCH_AUTOSUGGEST '{_UserState.Language}', {_UserState.UserId}" + Dim oTable = _Database.GetDatatableIDB(oSQL) Dim oTokens As New Dictionary(Of String, Object) + + For Each oRow As DataRow In oTable.Rows + Dim oTerm = oRow.Item("TERM") + If oTokens.ContainsKey(oTerm) = False Then + oTokens.Add(oTerm, New AttributeValueToken(oTerm)) + End If + Next + + Return oTokens End Function Public Function GetOperatorTokens(pDataType As Type) As Dictionary(Of String, Object) diff --git a/GUIs.ZooFlow/Search/Test/frmFlowSearch2.vb b/GUIs.ZooFlow/Search/Test/frmFlowSearch2.vb deleted file mode 100644 index 6332cdd7..00000000 --- a/GUIs.ZooFlow/Search/Test/frmFlowSearch2.vb +++ /dev/null @@ -1,190 +0,0 @@ -Imports DevExpress.XtraEditors.Controls -Imports DevExpress.XtraGrid.Views.Tile -Imports DevExpress.XtraSplashScreen -Imports DigitalData.GUIs.ZooFlow.ClassConstants -Imports DigitalData.Modules.Logging - -Public Class frmFlowSearch2 - Private ReadOnly LogConfig As LogConfig = My.LogConfig - Private ReadOnly Logger = My.LogConfig.GetLogger() - Private SearchRunner As SearchRunner - - Private Sub frmFlowSearch2_Load(sender As Object, e As EventArgs) Handles MyBase.Load - SearchRunner = New SearchRunner(My.LogConfig, My.Application.GetEnvironment, "FlowSearch") With { - .BaseSearchSQL = LoadBaseSQL() - } - - TextEdit1.MaskBox.AutoCompleteSource = AutoCompleteSource.CustomSource - TextEdit1.MaskBox.AutoCompleteMode = AutoCompleteMode.SuggestAppend - TextEdit1.MaskBox.AutoCompleteCustomSource = LoadAutoSuggest() - - RadioGroup1.Properties.Items.AddRange(LoadDateConstraints.ToArray) - - GridControl1.DataSource = LoadPredefinedSearches() - End Sub - - Private Function LoadBaseSQL() As String - Dim oSQL = "" - - For Each oRow As DataRow In My.Tables.DTIDB_COMMON_SQL.Rows - If oRow.Item("TITLE") = SQLCMD_FLOW_SEARCH_BASE Then - oSQL = oRow.Item("SQL_COMMAND") - oSQL = oSQL.Replace("@USER_ID", My.Application.User.UserId) - oSQL = oSQL.Replace("@LANG_CODE", My.Application.User.Language) - End If - Next - - Return oSQL - End Function - - Private Function LoadAutoSuggest() As AutoCompleteStringCollection - Dim oCollection As New AutoCompleteStringCollection - Dim oSql = $"EXEC PRIDB_SEARCH_AUTOSUGGEST '{My.Application.User.Language}',{My.Application.User.UserId}" - Dim oTable As DataTable = My.Database.GetDatatableIDB(oSql) - - If oTable Is Nothing Then - - Return New AutoCompleteStringCollection() - End If - - For Each oRow As DataRow In oTable.Rows - oCollection.Add(oRow.Item("TERM")) - Next - - Return oCollection - End Function - - Private Function LoadDateConstraints() As List(Of RadioGroupItem) - Return New List(Of RadioGroupItem) From { - New RadioGroupItem(SearchRunner.CREATED_TODAY, "Heute"), - New RadioGroupItem(SearchRunner.CREATED_TOMORROW, "Gestern"), - New RadioGroupItem(SearchRunner.CREATED_LAST_7_DAYS, "Letzte 7 Tage"), - New RadioGroupItem(SearchRunner.CREATED_MONTH_CURR, "Dieser Monat"), - New RadioGroupItem(SearchRunner.CREATED_LAST_7_DAYS, "Letzter Monat"), - New RadioGroupItem(SearchRunner.CREATED_YEAR_CURRENT, "Dieses Jahr"), - New RadioGroupItem(SearchRunner.CREATED_YEAR_LAST, "Letztes Jahr"), - New RadioGroupItem("NOTHING", "Keine Einschränkung") - } - End Function - - Private Function LoadPredefinedSearches() As List(Of PredefinedSearch) - Return New List(Of PredefinedSearch) From { - New PredefinedDateSearch() With { - .Name = "Heute", - .Description = "Dokumente, die heute abgelegt wurden", - .DateConstraint = SearchRunner.DateConstraint.Today - }, - New PredefinedDateSearch() With { - .Name = "Gestern", - .Description = "Dokumente, die gestern abgelegt wurden", - .DateConstraint = SearchRunner.DateConstraint.Yesterday - }, - New PredefinedDateSearch() With { - .Name = "Letzte Woche", - .Description = "Dokumente, die in den letzten 7 Tagen abgelegt wurden", - .DateConstraint = SearchRunner.DateConstraint.Last7Days - }, - New PredefinedDateSearch() With { - .Name = "Dieser Monat", - .Description = "Dokumente, die in diesem Monat abgelegt wurden", - .DateConstraint = SearchRunner.DateConstraint.CurrentMonth - }, - New PredefinedDateSearch() With { - .Name = "Letzter Monat", - .Description = "Dokumente, die im letzten Monat abgelegt wurden", - .DateConstraint = SearchRunner.DateConstraint.LastMonth - } - } - End Function - - Private Async Sub TextEdit1_KeyUp(sender As Object, e As KeyEventArgs) Handles TextEdit1.KeyUp - If e.KeyCode = Keys.Enter Then - Await RunSearch() - End If - End Sub - - Private Async Sub TextEdit1_ButtonClick(sender As Object, e As DevExpress.XtraEditors.Controls.ButtonPressedEventArgs) Handles TextEdit1.ButtonClick - If e.Button.Tag = "SEARCH" Then - Await RunSearch() - End If - End Sub - - Private Async Function RunSearch() As Threading.Tasks.Task - Dim oHandle = SplashScreenManager.ShowOverlayForm(Me) - - Try - Dim oDateFrom = DateEditFrom.EditValue - Dim oDateTo = DateEditTo.EditValue - - If CheckEdit1.IsOn = False Then - oDateTo = Nothing - End If - - SearchRunner.SetDateConstraint() - Await SearchRunner.Run(TextEdit1.EditValue, oDateFrom, oDateTo) - - Catch ex As Exception - MsgBox(ex.Message) - - Finally - SplashScreenManager.CloseOverlayForm(oHandle) - - End Try - End Function - - Private Sub RadioGroup1_EditValueChanged(sender As Object, e As EventArgs) Handles RadioGroup1.EditValueChanged - Dim oIndex = RadioGroup1.SelectedIndex - Dim oItem As RadioGroupItem = RadioGroup1.Properties.Items.Item(oIndex) - Dim oSearchConstraintString As String = oItem.Value - Dim oDateConstraint = SearchRunner.ConstantToDateConstraint(oSearchConstraintString) - - If oDateConstraint <> SearchRunner.DateConstraint.Undefined Then - SearchRunner.SetDateConstraint(oDateConstraint) - End If - End Sub - - Friend Class PredefinedSearch - Public Property Name As String - Public Property Description As String - Public Property Count As Integer = 0 - - Public ReadOnly Property DisplayName As String - Get - Return $"{Name} ({Count})" - End Get - End Property - - End Class - - Friend Class PredefinedSQLSearch - Public Property SQLCommand As String - End Class - - Friend Class PredefinedDateSearch - Inherits PredefinedSearch - - Public DateConstraint As SearchRunner.DateConstraint - End Class - - Private Async Sub TileView1_ItemClick(sender As Object, e As TileViewItemClickEventArgs) Handles TileView1.ItemClick - Dim oHandle = SplashScreenManager.ShowOverlayForm(Me) - - Try - Dim oSearch = TileView1.GetRow(TileView1.FocusedRowHandle) - - If TypeOf oSearch Is PredefinedDateSearch Then - Dim oDateSearch As PredefinedDateSearch = oSearch - SearchRunner.SetDateConstraint(oDateSearch.DateConstraint) - End If - - Await SearchRunner.Run() - Catch ex As Exception - Finally - SplashScreenManager.CloseOverlayForm(oHandle) - End Try - End Sub - - Private Sub CheckEdit1_Properties_EditValueChanged(sender As Object, e As EventArgs) Handles CheckEdit1.Properties.EditValueChanged - DateEditTo.Enabled = CheckEdit1.IsOn - End Sub -End Class \ No newline at end of file diff --git a/GUIs.ZooFlow/Search/frmFlowSearch1.vb b/GUIs.ZooFlow/Search/frmFlowSearch1.vb index 2e8b03f6..76cb6666 100644 --- a/GUIs.ZooFlow/Search/frmFlowSearch1.vb +++ b/GUIs.ZooFlow/Search/frmFlowSearch1.vb @@ -223,7 +223,7 @@ Public Class frmFlowSearch1 Dim oHandle = SplashScreenManager.ShowOverlayForm(Me) Try - Dim oResult = Await SearchRunner.Run(TextEditSearch.Text, DateEditFrom.EditValue, DateEditTill.EditValue) + Dim oResult = Await SearchRunner.RunWithSearchTerm(TextEditSearch.Text, DateEditFrom.EditValue, DateEditTill.EditValue) If oResult.OK = False Then bsiStatus.Caption = oResult.ErrorMessage End If @@ -252,7 +252,7 @@ Public Class frmFlowSearch1 Dim oHandle = SplashScreenManager.ShowOverlayForm(Me) Try - Dim oResult = Await SearchRunner.Run(TextEditSearch.Text, DateEditFrom.EditValue, DateEditTill.EditValue) + Dim oResult = Await SearchRunner.RunWithSearchTerm(TextEditSearch.Text, DateEditFrom.EditValue, DateEditTill.EditValue) If oResult.OK = False Then bsiStatus.Caption = oResult.ErrorMessage End If diff --git a/GUIs.ZooFlow/Search/Test/frmFlowSearch2.Designer.vb b/GUIs.ZooFlow/Search/frmFlowSearch2.Designer.vb similarity index 66% rename from GUIs.ZooFlow/Search/Test/frmFlowSearch2.Designer.vb rename to GUIs.ZooFlow/Search/frmFlowSearch2.Designer.vb index 5c15df47..ff20de53 100644 --- a/GUIs.ZooFlow/Search/Test/frmFlowSearch2.Designer.vb +++ b/GUIs.ZooFlow/Search/frmFlowSearch2.Designer.vb @@ -22,25 +22,36 @@ Partial Class frmFlowSearch2 'Das Bearbeiten mit dem Code-Editor ist nicht möglich. _ Private Sub InitializeComponent() + Me.components = New System.ComponentModel.Container() Dim EditorButtonImageOptions1 As DevExpress.XtraEditors.Controls.EditorButtonImageOptions = New DevExpress.XtraEditors.Controls.EditorButtonImageOptions() Dim SerializableAppearanceObject1 As DevExpress.Utils.SerializableAppearanceObject = New DevExpress.Utils.SerializableAppearanceObject() Dim SerializableAppearanceObject2 As DevExpress.Utils.SerializableAppearanceObject = New DevExpress.Utils.SerializableAppearanceObject() Dim SerializableAppearanceObject3 As DevExpress.Utils.SerializableAppearanceObject = New DevExpress.Utils.SerializableAppearanceObject() Dim SerializableAppearanceObject4 As DevExpress.Utils.SerializableAppearanceObject = New DevExpress.Utils.SerializableAppearanceObject() Dim TableColumnDefinition1 As DevExpress.XtraEditors.TableLayout.TableColumnDefinition = New DevExpress.XtraEditors.TableLayout.TableColumnDefinition() + Dim TableColumnDefinition2 As DevExpress.XtraEditors.TableLayout.TableColumnDefinition = New DevExpress.XtraEditors.TableLayout.TableColumnDefinition() Dim TableRowDefinition1 As DevExpress.XtraEditors.TableLayout.TableRowDefinition = New DevExpress.XtraEditors.TableLayout.TableRowDefinition() Dim TableRowDefinition2 As DevExpress.XtraEditors.TableLayout.TableRowDefinition = New DevExpress.XtraEditors.TableLayout.TableRowDefinition() Dim TileViewItemElement1 As DevExpress.XtraGrid.Views.Tile.TileViewItemElement = New DevExpress.XtraGrid.Views.Tile.TileViewItemElement() Dim TileViewItemElement2 As DevExpress.XtraGrid.Views.Tile.TileViewItemElement = New DevExpress.XtraGrid.Views.Tile.TileViewItemElement() + Dim TileViewItemElement3 As DevExpress.XtraGrid.Views.Tile.TileViewItemElement = New DevExpress.XtraGrid.Views.Tile.TileViewItemElement() Me.colName = New DevExpress.XtraGrid.Columns.TileViewColumn() Me.colDescription = New DevExpress.XtraGrid.Columns.TileViewColumn() + Me.colImage = New DevExpress.XtraGrid.Columns.TileViewColumn() Me.RibbonControl1 = New DevExpress.XtraBars.Ribbon.RibbonControl() + Me.chkFulltext = New DevExpress.XtraBars.BarToggleSwitchItem() + Me.lblResults = New DevExpress.XtraBars.BarStaticItem() + Me.chkDateFilter = New DevExpress.XtraBars.BarToggleSwitchItem() Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage() + Me.RibbonPageGroup2 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() + Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() + Me.RepositoryItemMarqueeProgressBar1 = New DevExpress.XtraEditors.Repository.RepositoryItemMarqueeProgressBar() Me.RibbonStatusBar1 = New DevExpress.XtraBars.Ribbon.RibbonStatusBar() Me.RibbonPage2 = New DevExpress.XtraBars.Ribbon.RibbonPage() Me.PanelControl1 = New DevExpress.XtraEditors.PanelControl() Me.PanelControl2 = New DevExpress.XtraEditors.PanelControl() Me.LayoutControl1 = New DevExpress.XtraLayout.LayoutControl() + Me.TokenEdit1 = New DevExpress.XtraEditors.TokenEdit() Me.TextEdit1 = New DevExpress.XtraEditors.ButtonEdit() Me.GridControl1 = New DevExpress.XtraGrid.GridControl() Me.TileView1 = New DevExpress.XtraGrid.Views.Tile.TileView() @@ -51,25 +62,27 @@ Partial Class frmFlowSearch2 Me.DateEditTo = New DevExpress.XtraEditors.DateEdit() Me.CheckEdit1 = New DevExpress.XtraEditors.ToggleSwitch() Me.Root = New DevExpress.XtraLayout.LayoutControlGroup() - Me.LayoutControlGroup1 = New DevExpress.XtraLayout.LayoutControlGroup() + Me.LayoutControlGroupDate1 = New DevExpress.XtraLayout.LayoutControlGroup() Me.LayoutControlItem1 = New DevExpress.XtraLayout.LayoutControlItem() - Me.LayoutControlGroup2 = New DevExpress.XtraLayout.LayoutControlGroup() + Me.LayoutControlGroupDate2 = New DevExpress.XtraLayout.LayoutControlGroup() Me.LayoutControlItem2 = New DevExpress.XtraLayout.LayoutControlItem() Me.LayoutControlItem4 = New DevExpress.XtraLayout.LayoutControlItem() Me.EmptySpaceItem1 = New DevExpress.XtraLayout.EmptySpaceItem() Me.LayoutControlItem6 = New DevExpress.XtraLayout.LayoutControlItem() + Me.LayoutControlItem5 = New DevExpress.XtraLayout.LayoutControlItem() Me.LayoutControlGroup3 = New DevExpress.XtraLayout.LayoutControlGroup() Me.LayoutControlItem3 = New DevExpress.XtraLayout.LayoutControlItem() - Me.LayoutControlItem5 = New DevExpress.XtraLayout.LayoutControlItem() - Me.RibbonPageGroup2 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() - Me.BarToggleSwitchItem1 = New DevExpress.XtraBars.BarToggleSwitchItem() + Me.LayoutControlItem7 = New DevExpress.XtraLayout.LayoutControlItem() + Me.SvgImageCollection1 = New DevExpress.Utils.SvgImageCollection(Me.components) CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.RepositoryItemMarqueeProgressBar1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.PanelControl1, System.ComponentModel.ISupportInitialize).BeginInit() Me.PanelControl1.SuspendLayout() CType(Me.PanelControl2, System.ComponentModel.ISupportInitialize).BeginInit() Me.PanelControl2.SuspendLayout() CType(Me.LayoutControl1, System.ComponentModel.ISupportInitialize).BeginInit() Me.LayoutControl1.SuspendLayout() + CType(Me.TokenEdit1.Properties, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.TextEdit1.Properties, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.GridControl1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.TileView1, System.ComponentModel.ISupportInitialize).BeginInit() @@ -81,16 +94,18 @@ Partial Class frmFlowSearch2 CType(Me.DateEditTo.Properties, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.CheckEdit1.Properties, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.Root, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.LayoutControlGroup1, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.LayoutControlGroupDate1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.LayoutControlItem1, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.LayoutControlGroup2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.LayoutControlGroupDate2, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.LayoutControlItem2, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.LayoutControlItem4, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.EmptySpaceItem1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.LayoutControlItem6, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.LayoutControlItem5, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.LayoutControlGroup3, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.LayoutControlItem3, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.LayoutControlItem5, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.LayoutControlItem7, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.SvgImageCollection1, System.ComponentModel.ISupportInitialize).BeginInit() Me.SuspendLayout() ' 'colName @@ -109,34 +124,82 @@ Partial Class frmFlowSearch2 Me.colDescription.Visible = True Me.colDescription.VisibleIndex = 1 ' + 'colImage + ' + Me.colImage.Caption = "Image" + Me.colImage.FieldName = "Image" + Me.colImage.Name = "colImage" + Me.colImage.Visible = True + Me.colImage.VisibleIndex = 3 + ' 'RibbonControl1 ' Me.RibbonControl1.ColorScheme = DevExpress.XtraBars.Ribbon.RibbonControlColorScheme.Green 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.BarToggleSwitchItem1}) + Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.chkFulltext, Me.lblResults, Me.chkDateFilter}) Me.RibbonControl1.Location = New System.Drawing.Point(0, 0) - Me.RibbonControl1.MaxItemId = 2 + Me.RibbonControl1.MaxItemId = 5 Me.RibbonControl1.Name = "RibbonControl1" Me.RibbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1}) + Me.RibbonControl1.RepositoryItems.AddRange(New DevExpress.XtraEditors.Repository.RepositoryItem() {Me.RepositoryItemMarqueeProgressBar1}) Me.RibbonControl1.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.[False] Me.RibbonControl1.ShowToolbarCustomizeItem = False - Me.RibbonControl1.Size = New System.Drawing.Size(1011, 89) + Me.RibbonControl1.Size = New System.Drawing.Size(954, 89) Me.RibbonControl1.StatusBar = Me.RibbonStatusBar1 Me.RibbonControl1.Toolbar.ShowCustomizeItem = False ' + 'chkFulltext + ' + Me.chkFulltext.Caption = "Volltext durchsuchen" + Me.chkFulltext.Enabled = False + Me.chkFulltext.Id = 1 + Me.chkFulltext.Name = "chkFulltext" + ' + 'lblResults + ' + Me.lblResults.Caption = "Noch keine Ergebnisse" + Me.lblResults.Id = 2 + Me.lblResults.ItemAppearance.Normal.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblResults.ItemAppearance.Normal.Options.UseFont = True + Me.lblResults.Name = "lblResults" + ' + 'chkDateFilter + ' + Me.chkDateFilter.Caption = "Datumfilter anzeigen" + Me.chkDateFilter.Id = 3 + Me.chkDateFilter.Name = "chkDateFilter" + ' 'RibbonPage1 ' - Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup2}) + Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup2, Me.RibbonPageGroup1}) Me.RibbonPage1.Name = "RibbonPage1" Me.RibbonPage1.Text = "Start" ' + 'RibbonPageGroup2 + ' + Me.RibbonPageGroup2.ItemLinks.Add(Me.chkFulltext) + Me.RibbonPageGroup2.Name = "RibbonPageGroup2" + Me.RibbonPageGroup2.Text = "RibbonPageGroup2" + ' + 'RibbonPageGroup1 + ' + Me.RibbonPageGroup1.ItemLinks.Add(Me.chkDateFilter) + Me.RibbonPageGroup1.Name = "RibbonPageGroup1" + Me.RibbonPageGroup1.Text = "RibbonPageGroup1" + ' + 'RepositoryItemMarqueeProgressBar1 + ' + Me.RepositoryItemMarqueeProgressBar1.Name = "RepositoryItemMarqueeProgressBar1" + ' 'RibbonStatusBar1 ' - Me.RibbonStatusBar1.Location = New System.Drawing.Point(0, 779) + Me.RibbonStatusBar1.BackColor = System.Drawing.Color.Red + Me.RibbonStatusBar1.ItemLinks.Add(Me.lblResults) + Me.RibbonStatusBar1.Location = New System.Drawing.Point(0, 639) Me.RibbonStatusBar1.Name = "RibbonStatusBar1" Me.RibbonStatusBar1.Ribbon = Me.RibbonControl1 - Me.RibbonStatusBar1.Size = New System.Drawing.Size(1011, 24) + Me.RibbonStatusBar1.Size = New System.Drawing.Size(954, 24) ' 'RibbonPage2 ' @@ -150,7 +213,7 @@ Partial Class frmFlowSearch2 Me.PanelControl1.Location = New System.Drawing.Point(0, 89) Me.PanelControl1.Name = "PanelControl1" Me.PanelControl1.Padding = New System.Windows.Forms.Padding(30) - Me.PanelControl1.Size = New System.Drawing.Size(1011, 690) + Me.PanelControl1.Size = New System.Drawing.Size(954, 550) Me.PanelControl1.TabIndex = 3 ' 'PanelControl2 @@ -160,11 +223,12 @@ Partial Class frmFlowSearch2 Me.PanelControl2.Location = New System.Drawing.Point(32, 32) Me.PanelControl2.Margin = New System.Windows.Forms.Padding(0) Me.PanelControl2.Name = "PanelControl2" - Me.PanelControl2.Size = New System.Drawing.Size(947, 626) + Me.PanelControl2.Size = New System.Drawing.Size(890, 486) Me.PanelControl2.TabIndex = 3 ' 'LayoutControl1 ' + Me.LayoutControl1.Controls.Add(Me.TokenEdit1) Me.LayoutControl1.Controls.Add(Me.TextEdit1) Me.LayoutControl1.Controls.Add(Me.GridControl1) Me.LayoutControl1.Controls.Add(Me.RadioGroup1) @@ -177,13 +241,27 @@ Partial Class frmFlowSearch2 Me.LayoutControl1.OptionsView.GroupStyle = DevExpress.Utils.GroupStyle.Title Me.LayoutControl1.OptionsView.ItemBorderColor = System.Drawing.Color.Transparent Me.LayoutControl1.Root = Me.Root - Me.LayoutControl1.Size = New System.Drawing.Size(943, 622) + Me.LayoutControl1.Size = New System.Drawing.Size(886, 482) Me.LayoutControl1.TabIndex = 0 Me.LayoutControl1.Text = "LayoutControl1" ' + 'TokenEdit1 + ' + Me.TokenEdit1.Location = New System.Drawing.Point(0, 0) + Me.TokenEdit1.Margin = New System.Windows.Forms.Padding(10) + Me.TokenEdit1.MenuManager = Me.RibbonControl1 + Me.TokenEdit1.Name = "TokenEdit1" + Me.TokenEdit1.Properties.Appearance.Font = New System.Drawing.Font("Segoe UI", 15.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.TokenEdit1.Properties.Appearance.Options.UseFont = True + Me.TokenEdit1.Properties.NullText = "Suchbegriffe eingeben.." + Me.TokenEdit1.Properties.Separators.AddRange(New String() {","}) + Me.TokenEdit1.Size = New System.Drawing.Size(886, 36) + Me.TokenEdit1.StyleController = Me.LayoutControl1 + Me.TokenEdit1.TabIndex = 9 + ' 'TextEdit1 ' - Me.TextEdit1.Location = New System.Drawing.Point(0, 0) + Me.TextEdit1.Location = New System.Drawing.Point(0, 301) Me.TextEdit1.MenuManager = Me.RibbonControl1 Me.TextEdit1.Name = "TextEdit1" Me.TextEdit1.Properties.Appearance.Font = New System.Drawing.Font("Segoe UI", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) @@ -193,46 +271,63 @@ Partial Class frmFlowSearch2 Me.TextEdit1.Properties.Buttons.AddRange(New DevExpress.XtraEditors.Controls.EditorButton() {New DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph, "", -1, True, True, False, EditorButtonImageOptions1, New DevExpress.Utils.KeyShortcut(System.Windows.Forms.Keys.None), SerializableAppearanceObject1, SerializableAppearanceObject2, SerializableAppearanceObject3, SerializableAppearanceObject4, "", "SEARCH", Nothing, DevExpress.Utils.ToolTipAnchor.[Default])}) Me.TextEdit1.Properties.NullText = "Suchbegriff eingeben.." Me.TextEdit1.Properties.Padding = New System.Windows.Forms.Padding(5, 10, 10, 10) - Me.TextEdit1.Size = New System.Drawing.Size(943, 44) + Me.TextEdit1.Size = New System.Drawing.Size(886, 44) Me.TextEdit1.StyleController = Me.LayoutControl1 Me.TextEdit1.TabIndex = 2 ' 'GridControl1 ' - Me.GridControl1.Location = New System.Drawing.Point(14, 316) + Me.GridControl1.Location = New System.Drawing.Point(14, 90) Me.GridControl1.MainView = Me.TileView1 Me.GridControl1.MenuManager = Me.RibbonControl1 Me.GridControl1.Name = "GridControl1" - Me.GridControl1.Size = New System.Drawing.Size(915, 292) + Me.GridControl1.Size = New System.Drawing.Size(858, 197) Me.GridControl1.TabIndex = 1 Me.GridControl1.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.TileView1, Me.GridView1}) ' 'TileView1 ' - Me.TileView1.Columns.AddRange(New DevExpress.XtraGrid.Columns.GridColumn() {Me.colName, Me.colDescription, Me.colCount}) + Me.TileView1.Columns.AddRange(New DevExpress.XtraGrid.Columns.GridColumn() {Me.colName, Me.colDescription, Me.colCount, Me.colImage}) Me.TileView1.GridControl = Me.GridControl1 Me.TileView1.Name = "TileView1" Me.TileView1.OptionsTiles.AllowItemHover = True - Me.TileView1.OptionsTiles.ItemSize = New System.Drawing.Size(150, 80) + Me.TileView1.OptionsTiles.ItemSize = New System.Drawing.Size(190, 80) + Me.TileView1.OptionsTiles.Orientation = System.Windows.Forms.Orientation.Vertical + Me.TileView1.OptionsTiles.RowCount = 2 + Me.TileView1.OptionsTiles.VerticalContentAlignment = DevExpress.Utils.VertAlignment.Center + TableColumnDefinition1.Length.Value = 35.0R + TableColumnDefinition1.PaddingRight = 5 + TableColumnDefinition2.Length.Value = 129.0R Me.TileView1.TileColumns.Add(TableColumnDefinition1) - TableRowDefinition2.Length.Value = 2.0R + Me.TileView1.TileColumns.Add(TableColumnDefinition2) + TableRowDefinition1.Length.Value = 21.0R + TableRowDefinition2.Length.Value = 43.0R Me.TileView1.TileRows.Add(TableRowDefinition1) Me.TileView1.TileRows.Add(TableRowDefinition2) TileViewItemElement1.Appearance.Normal.Font = New System.Drawing.Font("Segoe UI", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) TileViewItemElement1.Appearance.Normal.Options.UseFont = True TileViewItemElement1.Column = Me.colName + TileViewItemElement1.ColumnIndex = 1 TileViewItemElement1.ImageOptions.ImageAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter TileViewItemElement1.ImageOptions.ImageScaleMode = DevExpress.XtraEditors.TileItemImageScaleMode.Squeeze TileViewItemElement1.Text = "colName" TileViewItemElement1.TextAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter TileViewItemElement2.Column = Me.colDescription + TileViewItemElement2.ColumnIndex = 1 TileViewItemElement2.ImageOptions.ImageAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter TileViewItemElement2.ImageOptions.ImageScaleMode = DevExpress.XtraEditors.TileItemImageScaleMode.Squeeze TileViewItemElement2.RowIndex = 1 TileViewItemElement2.Text = "colDescription" TileViewItemElement2.TextAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter + TileViewItemElement3.Column = Me.colImage + TileViewItemElement3.ImageOptions.ImageAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter + TileViewItemElement3.ImageOptions.ImageScaleMode = DevExpress.XtraEditors.TileItemImageScaleMode.Squeeze + TileViewItemElement3.RowIndex = 1 + TileViewItemElement3.Text = "colImage" + TileViewItemElement3.TextAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter Me.TileView1.TileTemplate.Add(TileViewItemElement1) Me.TileView1.TileTemplate.Add(TileViewItemElement2) + Me.TileView1.TileTemplate.Add(TileViewItemElement3) ' 'colCount ' @@ -249,7 +344,7 @@ Partial Class frmFlowSearch2 ' 'RadioGroup1 ' - Me.RadioGroup1.Location = New System.Drawing.Point(4, 88) + Me.RadioGroup1.Location = New System.Drawing.Point(4, 389) Me.RadioGroup1.MenuManager = Me.RibbonControl1 Me.RadioGroup1.Name = "RadioGroup1" Me.RadioGroup1.Properties.Appearance.BackColor = System.Drawing.SystemColors.Control @@ -257,42 +352,42 @@ Partial Class frmFlowSearch2 Me.RadioGroup1.Properties.Columns = 2 Me.RadioGroup1.Properties.ItemHorzAlignment = DevExpress.XtraEditors.RadioItemHorzAlignment.Near Me.RadioGroup1.Properties.ItemsLayout = DevExpress.XtraEditors.RadioGroupItemsLayout.Flow - Me.RadioGroup1.Size = New System.Drawing.Size(655, 170) + Me.RadioGroup1.Size = New System.Drawing.Size(615, 89) Me.RadioGroup1.StyleController = Me.LayoutControl1 Me.RadioGroup1.TabIndex = 4 ' 'DateEditFrom ' Me.DateEditFrom.EditValue = Nothing - Me.DateEditFrom.Location = New System.Drawing.Point(740, 91) + Me.DateEditFrom.Location = New System.Drawing.Point(700, 392) Me.DateEditFrom.MenuManager = Me.RibbonControl1 Me.DateEditFrom.Name = "DateEditFrom" Me.DateEditFrom.Properties.Buttons.AddRange(New DevExpress.XtraEditors.Controls.EditorButton() {New DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)}) Me.DateEditFrom.Properties.CalendarTimeProperties.Buttons.AddRange(New DevExpress.XtraEditors.Controls.EditorButton() {New DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)}) - Me.DateEditFrom.Size = New System.Drawing.Size(196, 20) + Me.DateEditFrom.Size = New System.Drawing.Size(179, 20) Me.DateEditFrom.StyleController = Me.LayoutControl1 Me.DateEditFrom.TabIndex = 5 ' 'DateEditTo ' Me.DateEditTo.EditValue = Nothing - Me.DateEditTo.Location = New System.Drawing.Point(740, 144) + Me.DateEditTo.Location = New System.Drawing.Point(700, 445) Me.DateEditTo.MenuManager = Me.RibbonControl1 Me.DateEditTo.Name = "DateEditTo" Me.DateEditTo.Properties.Buttons.AddRange(New DevExpress.XtraEditors.Controls.EditorButton() {New DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)}) Me.DateEditTo.Properties.CalendarTimeProperties.Buttons.AddRange(New DevExpress.XtraEditors.Controls.EditorButton() {New DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)}) - Me.DateEditTo.Size = New System.Drawing.Size(196, 20) + Me.DateEditTo.Size = New System.Drawing.Size(179, 20) Me.DateEditTo.StyleController = Me.LayoutControl1 Me.DateEditTo.TabIndex = 7 ' 'CheckEdit1 ' - Me.CheckEdit1.Location = New System.Drawing.Point(667, 118) + Me.CheckEdit1.Location = New System.Drawing.Point(627, 419) Me.CheckEdit1.MenuManager = Me.RibbonControl1 Me.CheckEdit1.Name = "CheckEdit1" Me.CheckEdit1.Properties.OffText = "Datum bis deaktiviert" Me.CheckEdit1.Properties.OnText = "Datum bis aktiviert" - Me.CheckEdit1.Size = New System.Drawing.Size(272, 19) + Me.CheckEdit1.Size = New System.Drawing.Size(255, 19) Me.CheckEdit1.StyleController = Me.LayoutControl1 Me.CheckEdit1.TabIndex = 8 ' @@ -300,52 +395,54 @@ Partial Class frmFlowSearch2 ' Me.Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.[True] Me.Root.GroupBordersVisible = False - Me.Root.Items.AddRange(New DevExpress.XtraLayout.BaseLayoutItem() {Me.LayoutControlGroup1, Me.LayoutControlGroup2, Me.LayoutControlGroup3, Me.LayoutControlItem5}) + Me.Root.Items.AddRange(New DevExpress.XtraLayout.BaseLayoutItem() {Me.LayoutControlGroupDate1, Me.LayoutControlGroupDate2, Me.LayoutControlGroup3, Me.LayoutControlItem7, Me.LayoutControlItem5}) Me.Root.Name = "Root" Me.Root.Padding = New DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0) - Me.Root.Size = New System.Drawing.Size(943, 622) + Me.Root.Size = New System.Drawing.Size(886, 482) Me.Root.TextVisible = False ' - 'LayoutControlGroup1 - ' - Me.LayoutControlGroup1.AppearanceGroup.BackColor = System.Drawing.Color.FromArgb(CType(CType(165, Byte), Integer), CType(CType(36, Byte), Integer), CType(CType(19, Byte), Integer)) - Me.LayoutControlGroup1.AppearanceGroup.BackColor2 = System.Drawing.Color.FromArgb(CType(CType(165, Byte), Integer), CType(CType(36, Byte), Integer), CType(CType(19, Byte), Integer)) - Me.LayoutControlGroup1.AppearanceGroup.BorderColor = System.Drawing.Color.FromArgb(CType(CType(165, Byte), Integer), CType(CType(36, Byte), Integer), CType(CType(19, Byte), Integer)) - Me.LayoutControlGroup1.AppearanceGroup.Options.UseBackColor = True - Me.LayoutControlGroup1.AppearanceGroup.Options.UseBorderColor = True - Me.LayoutControlGroup1.BestFitWeight = 0 - Me.LayoutControlGroup1.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.[False] - Me.LayoutControlGroup1.Items.AddRange(New DevExpress.XtraLayout.BaseLayoutItem() {Me.LayoutControlItem1}) - Me.LayoutControlGroup1.Location = New System.Drawing.Point(0, 44) - Me.LayoutControlGroup1.Name = "LayoutControlGroup1" - Me.LayoutControlGroup1.Padding = New DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0) - Me.LayoutControlGroup1.Size = New System.Drawing.Size(663, 218) - Me.LayoutControlGroup1.Spacing = New DevExpress.XtraLayout.Utils.Padding(2, 2, 20, 2) - Me.LayoutControlGroup1.Text = "Datums Einschränkung" + 'LayoutControlGroupDate1 + ' + Me.LayoutControlGroupDate1.AppearanceGroup.BackColor = System.Drawing.Color.FromArgb(CType(CType(165, Byte), Integer), CType(CType(36, Byte), Integer), CType(CType(19, Byte), Integer)) + Me.LayoutControlGroupDate1.AppearanceGroup.BackColor2 = System.Drawing.Color.FromArgb(CType(CType(165, Byte), Integer), CType(CType(36, Byte), Integer), CType(CType(19, Byte), Integer)) + Me.LayoutControlGroupDate1.AppearanceGroup.BorderColor = System.Drawing.Color.FromArgb(CType(CType(165, Byte), Integer), CType(CType(36, Byte), Integer), CType(CType(19, Byte), Integer)) + Me.LayoutControlGroupDate1.AppearanceGroup.Options.UseBackColor = True + Me.LayoutControlGroupDate1.AppearanceGroup.Options.UseBorderColor = True + Me.LayoutControlGroupDate1.BestFitWeight = 0 + Me.LayoutControlGroupDate1.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.[False] + Me.LayoutControlGroupDate1.Items.AddRange(New DevExpress.XtraLayout.BaseLayoutItem() {Me.LayoutControlItem1}) + Me.LayoutControlGroupDate1.Location = New System.Drawing.Point(0, 345) + Me.LayoutControlGroupDate1.Name = "LayoutControlGroupDate1" + Me.LayoutControlGroupDate1.Padding = New DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0) + Me.LayoutControlGroupDate1.Size = New System.Drawing.Size(623, 137) + Me.LayoutControlGroupDate1.Spacing = New DevExpress.XtraLayout.Utils.Padding(2, 2, 20, 2) + Me.LayoutControlGroupDate1.Text = "Datums Einschränkung" + Me.LayoutControlGroupDate1.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never ' 'LayoutControlItem1 ' Me.LayoutControlItem1.Control = Me.RadioGroup1 Me.LayoutControlItem1.Location = New System.Drawing.Point(0, 0) Me.LayoutControlItem1.Name = "LayoutControlItem1" - Me.LayoutControlItem1.Size = New System.Drawing.Size(659, 174) + Me.LayoutControlItem1.Size = New System.Drawing.Size(619, 93) Me.LayoutControlItem1.TextSize = New System.Drawing.Size(0, 0) Me.LayoutControlItem1.TextVisible = False ' - 'LayoutControlGroup2 - ' - Me.LayoutControlGroup2.AppearanceGroup.BackColor = System.Drawing.Color.FromArgb(CType(CType(165, Byte), Integer), CType(CType(36, Byte), Integer), CType(CType(19, Byte), Integer)) - Me.LayoutControlGroup2.AppearanceGroup.BorderColor = System.Drawing.Color.FromArgb(CType(CType(165, Byte), Integer), CType(CType(36, Byte), Integer), CType(CType(19, Byte), Integer)) - Me.LayoutControlGroup2.AppearanceGroup.Options.UseBackColor = True - Me.LayoutControlGroup2.AppearanceGroup.Options.UseBorderColor = True - Me.LayoutControlGroup2.BestFitWeight = 0 - Me.LayoutControlGroup2.Items.AddRange(New DevExpress.XtraLayout.BaseLayoutItem() {Me.LayoutControlItem2, Me.LayoutControlItem4, Me.EmptySpaceItem1, Me.LayoutControlItem6}) - Me.LayoutControlGroup2.Location = New System.Drawing.Point(663, 44) - Me.LayoutControlGroup2.Name = "LayoutControlGroup2" - Me.LayoutControlGroup2.Padding = New DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0) - Me.LayoutControlGroup2.Size = New System.Drawing.Size(280, 218) - Me.LayoutControlGroup2.Spacing = New DevExpress.XtraLayout.Utils.Padding(2, 2, 20, 2) - Me.LayoutControlGroup2.Text = "Eigenes Datum" + 'LayoutControlGroupDate2 + ' + Me.LayoutControlGroupDate2.AppearanceGroup.BackColor = System.Drawing.Color.FromArgb(CType(CType(165, Byte), Integer), CType(CType(36, Byte), Integer), CType(CType(19, Byte), Integer)) + Me.LayoutControlGroupDate2.AppearanceGroup.BorderColor = System.Drawing.Color.FromArgb(CType(CType(165, Byte), Integer), CType(CType(36, Byte), Integer), CType(CType(19, Byte), Integer)) + Me.LayoutControlGroupDate2.AppearanceGroup.Options.UseBackColor = True + Me.LayoutControlGroupDate2.AppearanceGroup.Options.UseBorderColor = True + Me.LayoutControlGroupDate2.BestFitWeight = 0 + Me.LayoutControlGroupDate2.Items.AddRange(New DevExpress.XtraLayout.BaseLayoutItem() {Me.LayoutControlItem2, Me.LayoutControlItem4, Me.EmptySpaceItem1, Me.LayoutControlItem6}) + Me.LayoutControlGroupDate2.Location = New System.Drawing.Point(623, 345) + Me.LayoutControlGroupDate2.Name = "LayoutControlGroupDate2" + Me.LayoutControlGroupDate2.Padding = New DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0) + Me.LayoutControlGroupDate2.Size = New System.Drawing.Size(263, 137) + Me.LayoutControlGroupDate2.Spacing = New DevExpress.XtraLayout.Utils.Padding(2, 2, 20, 2) + Me.LayoutControlGroupDate2.Text = "Eigenes Datum" + Me.LayoutControlGroupDate2.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never ' 'LayoutControlItem2 ' @@ -353,7 +450,7 @@ Partial Class frmFlowSearch2 Me.LayoutControlItem2.Location = New System.Drawing.Point(0, 0) Me.LayoutControlItem2.Name = "LayoutControlItem2" Me.LayoutControlItem2.Padding = New DevExpress.XtraLayout.Utils.Padding(5, 5, 5, 5) - Me.LayoutControlItem2.Size = New System.Drawing.Size(276, 30) + Me.LayoutControlItem2.Size = New System.Drawing.Size(259, 30) Me.LayoutControlItem2.Text = "Datum Von" Me.LayoutControlItem2.TextSize = New System.Drawing.Size(58, 13) ' @@ -364,7 +461,7 @@ Partial Class frmFlowSearch2 Me.LayoutControlItem4.Location = New System.Drawing.Point(0, 53) Me.LayoutControlItem4.Name = "LayoutControlItem4" Me.LayoutControlItem4.Padding = New DevExpress.XtraLayout.Utils.Padding(5, 5, 5, 5) - Me.LayoutControlItem4.Size = New System.Drawing.Size(276, 30) + Me.LayoutControlItem4.Size = New System.Drawing.Size(259, 30) Me.LayoutControlItem4.Text = "Datum Bis" Me.LayoutControlItem4.TextSize = New System.Drawing.Size(58, 13) ' @@ -373,7 +470,7 @@ Partial Class frmFlowSearch2 Me.EmptySpaceItem1.AllowHotTrack = False Me.EmptySpaceItem1.Location = New System.Drawing.Point(0, 83) Me.EmptySpaceItem1.Name = "EmptySpaceItem1" - Me.EmptySpaceItem1.Size = New System.Drawing.Size(276, 91) + Me.EmptySpaceItem1.Size = New System.Drawing.Size(259, 10) Me.EmptySpaceItem1.TextSize = New System.Drawing.Size(0, 0) ' 'LayoutControlItem6 @@ -381,18 +478,30 @@ Partial Class frmFlowSearch2 Me.LayoutControlItem6.Control = Me.CheckEdit1 Me.LayoutControlItem6.Location = New System.Drawing.Point(0, 30) Me.LayoutControlItem6.Name = "LayoutControlItem6" - Me.LayoutControlItem6.Size = New System.Drawing.Size(276, 23) + Me.LayoutControlItem6.Size = New System.Drawing.Size(259, 23) Me.LayoutControlItem6.TextSize = New System.Drawing.Size(0, 0) Me.LayoutControlItem6.TextVisible = False ' + 'LayoutControlItem5 + ' + Me.LayoutControlItem5.BestFitWeight = 0 + Me.LayoutControlItem5.Control = Me.TextEdit1 + Me.LayoutControlItem5.Location = New System.Drawing.Point(0, 301) + Me.LayoutControlItem5.Name = "LayoutControlItem5" + Me.LayoutControlItem5.Padding = New DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0) + Me.LayoutControlItem5.Size = New System.Drawing.Size(886, 44) + Me.LayoutControlItem5.TextSize = New System.Drawing.Size(0, 0) + Me.LayoutControlItem5.TextVisible = False + Me.LayoutControlItem5.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never + ' 'LayoutControlGroup3 ' Me.LayoutControlGroup3.AppearanceGroup.BorderColor = System.Drawing.Color.FromArgb(CType(CType(165, Byte), Integer), CType(CType(36, Byte), Integer), CType(CType(19, Byte), Integer)) Me.LayoutControlGroup3.AppearanceGroup.Options.UseBorderColor = True Me.LayoutControlGroup3.Items.AddRange(New DevExpress.XtraLayout.BaseLayoutItem() {Me.LayoutControlItem3}) - Me.LayoutControlGroup3.Location = New System.Drawing.Point(0, 262) + Me.LayoutControlGroup3.Location = New System.Drawing.Point(0, 36) Me.LayoutControlGroup3.Name = "LayoutControlGroup3" - Me.LayoutControlGroup3.Size = New System.Drawing.Size(943, 360) + Me.LayoutControlGroup3.Size = New System.Drawing.Size(886, 265) Me.LayoutControlGroup3.Spacing = New DevExpress.XtraLayout.Utils.Padding(2, 2, 20, 2) Me.LayoutControlGroup3.Text = "Meine Suchen" ' @@ -401,39 +510,31 @@ Partial Class frmFlowSearch2 Me.LayoutControlItem3.Control = Me.GridControl1 Me.LayoutControlItem3.Location = New System.Drawing.Point(0, 0) Me.LayoutControlItem3.Name = "LayoutControlItem3" - Me.LayoutControlItem3.Size = New System.Drawing.Size(919, 296) + Me.LayoutControlItem3.Size = New System.Drawing.Size(862, 201) Me.LayoutControlItem3.TextSize = New System.Drawing.Size(0, 0) Me.LayoutControlItem3.TextVisible = False ' - 'LayoutControlItem5 - ' - Me.LayoutControlItem5.BestFitWeight = 0 - Me.LayoutControlItem5.Control = Me.TextEdit1 - Me.LayoutControlItem5.Location = New System.Drawing.Point(0, 0) - Me.LayoutControlItem5.Name = "LayoutControlItem5" - Me.LayoutControlItem5.Padding = New DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0) - Me.LayoutControlItem5.Size = New System.Drawing.Size(943, 44) - Me.LayoutControlItem5.TextSize = New System.Drawing.Size(0, 0) - Me.LayoutControlItem5.TextVisible = False + 'LayoutControlItem7 ' - 'RibbonPageGroup2 - ' - Me.RibbonPageGroup2.ItemLinks.Add(Me.BarToggleSwitchItem1) - Me.RibbonPageGroup2.Name = "RibbonPageGroup2" - Me.RibbonPageGroup2.Text = "RibbonPageGroup2" + Me.LayoutControlItem7.Control = Me.TokenEdit1 + Me.LayoutControlItem7.Location = New System.Drawing.Point(0, 0) + Me.LayoutControlItem7.Name = "LayoutControlItem7" + Me.LayoutControlItem7.Padding = New DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0) + Me.LayoutControlItem7.Size = New System.Drawing.Size(886, 36) + Me.LayoutControlItem7.TextSize = New System.Drawing.Size(0, 0) + Me.LayoutControlItem7.TextVisible = False ' - 'BarToggleSwitchItem1 + 'SvgImageCollection1 ' - Me.BarToggleSwitchItem1.Caption = "Volltext durchsuchen" - Me.BarToggleSwitchItem1.Enabled = False - Me.BarToggleSwitchItem1.Id = 1 - Me.BarToggleSwitchItem1.Name = "BarToggleSwitchItem1" + Me.SvgImageCollection1.Add("day", "image://svgimages/scheduling/dayview.svg") + Me.SvgImageCollection1.Add("month", "image://svgimages/scheduling/monthview.svg") + Me.SvgImageCollection1.Add("week", "image://svgimages/scheduling/next7days.svg") ' 'frmFlowSearch2 ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(1011, 803) + Me.ClientSize = New System.Drawing.Size(954, 663) Me.Controls.Add(Me.PanelControl1) Me.Controls.Add(Me.RibbonStatusBar1) Me.Controls.Add(Me.RibbonControl1) @@ -443,12 +544,14 @@ Partial Class frmFlowSearch2 Me.StatusBar = Me.RibbonStatusBar1 Me.Text = "Search Flow" CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.RepositoryItemMarqueeProgressBar1, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.PanelControl1, System.ComponentModel.ISupportInitialize).EndInit() Me.PanelControl1.ResumeLayout(False) CType(Me.PanelControl2, System.ComponentModel.ISupportInitialize).EndInit() Me.PanelControl2.ResumeLayout(False) CType(Me.LayoutControl1, System.ComponentModel.ISupportInitialize).EndInit() Me.LayoutControl1.ResumeLayout(False) + CType(Me.TokenEdit1.Properties, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.TextEdit1.Properties, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.GridControl1, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.TileView1, System.ComponentModel.ISupportInitialize).EndInit() @@ -460,16 +563,18 @@ Partial Class frmFlowSearch2 CType(Me.DateEditTo.Properties, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.CheckEdit1.Properties, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.Root, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.LayoutControlGroup1, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.LayoutControlGroupDate1, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.LayoutControlItem1, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.LayoutControlGroup2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.LayoutControlGroupDate2, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.LayoutControlItem2, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.LayoutControlItem4, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.EmptySpaceItem1, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.LayoutControlItem6, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.LayoutControlItem5, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.LayoutControlGroup3, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.LayoutControlItem3, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.LayoutControlItem5, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.LayoutControlItem7, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.SvgImageCollection1, System.ComponentModel.ISupportInitialize).EndInit() Me.ResumeLayout(False) Me.PerformLayout() @@ -493,8 +598,8 @@ Partial Class frmFlowSearch2 Friend WithEvents colCount As DevExpress.XtraGrid.Columns.TileViewColumn Friend WithEvents GridView1 As DevExpress.XtraGrid.Views.Grid.GridView Friend WithEvents DateEditFrom As DevExpress.XtraEditors.DateEdit - Friend WithEvents LayoutControlGroup1 As DevExpress.XtraLayout.LayoutControlGroup - Friend WithEvents LayoutControlGroup2 As DevExpress.XtraLayout.LayoutControlGroup + Friend WithEvents LayoutControlGroupDate1 As DevExpress.XtraLayout.LayoutControlGroup + Friend WithEvents LayoutControlGroupDate2 As DevExpress.XtraLayout.LayoutControlGroup Friend WithEvents LayoutControlItem2 As DevExpress.XtraLayout.LayoutControlItem Friend WithEvents DateEditTo As DevExpress.XtraEditors.DateEdit Friend WithEvents LayoutControlItem4 As DevExpress.XtraLayout.LayoutControlItem @@ -504,6 +609,14 @@ Partial Class frmFlowSearch2 Friend WithEvents LayoutControlItem5 As DevExpress.XtraLayout.LayoutControlItem Friend WithEvents CheckEdit1 As DevExpress.XtraEditors.ToggleSwitch Friend WithEvents LayoutControlItem6 As DevExpress.XtraLayout.LayoutControlItem - Friend WithEvents BarToggleSwitchItem1 As DevExpress.XtraBars.BarToggleSwitchItem + Friend WithEvents chkFulltext As DevExpress.XtraBars.BarToggleSwitchItem Friend WithEvents RibbonPageGroup2 As DevExpress.XtraBars.Ribbon.RibbonPageGroup + Friend WithEvents lblResults As DevExpress.XtraBars.BarStaticItem + Friend WithEvents chkDateFilter As DevExpress.XtraBars.BarToggleSwitchItem + Friend WithEvents RibbonPageGroup1 As DevExpress.XtraBars.Ribbon.RibbonPageGroup + Friend WithEvents RepositoryItemMarqueeProgressBar1 As DevExpress.XtraEditors.Repository.RepositoryItemMarqueeProgressBar + Friend WithEvents SvgImageCollection1 As DevExpress.Utils.SvgImageCollection + Friend WithEvents colImage As DevExpress.XtraGrid.Columns.TileViewColumn + Friend WithEvents TokenEdit1 As DevExpress.XtraEditors.TokenEdit + Friend WithEvents LayoutControlItem7 As DevExpress.XtraLayout.LayoutControlItem End Class diff --git a/GUIs.ZooFlow/Search/Test/frmFlowSearch2.resx b/GUIs.ZooFlow/Search/frmFlowSearch2.resx similarity index 96% rename from GUIs.ZooFlow/Search/Test/frmFlowSearch2.resx rename to GUIs.ZooFlow/Search/frmFlowSearch2.resx index 1af7de15..f722219e 100644 --- a/GUIs.ZooFlow/Search/Test/frmFlowSearch2.resx +++ b/GUIs.ZooFlow/Search/frmFlowSearch2.resx @@ -117,4 +117,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 17, 17 + \ No newline at end of file diff --git a/GUIs.ZooFlow/Search/frmFlowSearch2.vb b/GUIs.ZooFlow/Search/frmFlowSearch2.vb new file mode 100644 index 00000000..aca4e251 --- /dev/null +++ b/GUIs.ZooFlow/Search/frmFlowSearch2.vb @@ -0,0 +1,360 @@ +Imports DevExpress.LookAndFeel +Imports DevExpress.Skins +Imports DevExpress.Utils.Svg +Imports DevExpress.XtraEditors +Imports DevExpress.XtraEditors.Controls +Imports DevExpress.XtraGrid.Views.Tile +Imports DevExpress.XtraSplashScreen +Imports DigitalData.GUIs.ZooFlow.ClassConstants +Imports DigitalData.GUIs.ZooFlow.Search +Imports DigitalData.GUIs.ZooFlow.Search.SearchToken +Imports DigitalData.Modules.Logging + +Public Class frmFlowSearch2 + Private ReadOnly LogConfig As LogConfig = My.LogConfig + Private ReadOnly Logger = My.LogConfig.GetLogger() + Private SearchRunner As SearchRunner + Private Search As Search.Search + + 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 frmFlowSearch2_Load(sender As Object, e As EventArgs) Handles MyBase.Load + Search = New Search.Search(LogConfig, My.Application.User, My.Database) + SearchRunner = New SearchRunner(My.LogConfig, My.Application.GetEnvironment, "FlowSearch") With { + .BaseSearchSQL = LoadBaseSQL() + } + + TextEdit1.MaskBox.AutoCompleteSource = AutoCompleteSource.CustomSource + TextEdit1.MaskBox.AutoCompleteMode = AutoCompleteMode.SuggestAppend + TextEdit1.MaskBox.AutoCompleteCustomSource = LoadAutoSuggest() + + RadioGroup1.Properties.Items.AddRange(LoadDateConstraints.ToArray) + + GridControl1.DataSource = LoadPredefinedSearches() + + Dim oTokens = Search.GetValueTokensForAttribute() + AddTokens(TokenEdit1, oTokens) + End Sub + + Private Function LoadBaseSQL() As String + Dim oSQL = "" + + For Each oRow As DataRow In My.Tables.DTIDB_COMMON_SQL.Rows + If oRow.Item("TITLE") = SQLCMD_FLOW_SEARCH_BASE Then + oSQL = oRow.Item("SQL_COMMAND") + oSQL = oSQL.Replace("@USER_ID", My.Application.User.UserId) + oSQL = oSQL.Replace("@LANG_CODE", My.Application.User.Language) + End If + Next + + Return oSQL + End Function + + Private Function LoadAutoSuggest() As AutoCompleteStringCollection + Dim oCollection As New AutoCompleteStringCollection + Dim oSql = $"EXEC PRIDB_SEARCH_AUTOSUGGEST '{My.Application.User.Language}',{My.Application.User.UserId}" + Dim oTable As DataTable = My.Database.GetDatatableIDB(oSql) + + If oTable Is Nothing Then + + Return New AutoCompleteStringCollection() + End If + + For Each oRow As DataRow In oTable.Rows + oCollection.Add(oRow.Item("TERM")) + Next + + Return oCollection + End Function + + Private Function LoadDateConstraints() As List(Of RadioGroupItem) + Return New List(Of RadioGroupItem) From { + New RadioGroupItem(SearchRunner.CREATED_TODAY, "Heute"), + New RadioGroupItem(SearchRunner.CREATED_TOMORROW, "Gestern"), + New RadioGroupItem(SearchRunner.CREATED_LAST_7_DAYS, "Letzte 7 Tage"), + New RadioGroupItem(SearchRunner.CREATED_MONTH_CURR, "Dieser Monat"), + New RadioGroupItem(SearchRunner.CREATED_LAST_7_DAYS, "Letzter Monat"), + New RadioGroupItem(SearchRunner.CREATED_YEAR_CURRENT, "Dieses Jahr"), + New RadioGroupItem(SearchRunner.CREATED_YEAR_LAST, "Letztes Jahr"), + New RadioGroupItem("NOTHING", "Keine Einschränkung") + } + End Function + + Private Function LoadPredefinedSearches() As List(Of PredefinedSearch) + Return New List(Of PredefinedSearch) From { + New PredefinedDateSearch() With { + .Name = "Heute", + .Description = "Dokumente, die heute abgelegt wurden", + .DateConstraint = SearchRunner.DateConstraint.Today, + .Image = SvgImageCollection1.Item("day") + }, + New PredefinedDateSearch() With { + .Name = "Gestern", + .Description = "Dokumente, die gestern abgelegt wurden", + .DateConstraint = SearchRunner.DateConstraint.Yesterday, + .Image = SvgImageCollection1.Item("day") + }, + New PredefinedDateSearch() With { + .Name = "Letzte Woche", + .Description = "Dokumente, die in den letzten 7 Tagen abgelegt wurden", + .DateConstraint = SearchRunner.DateConstraint.Last7Days, + .Image = SvgImageCollection1.Item("week") + }, + New PredefinedDateSearch() With { + .Name = "Dieser Monat", + .Description = "Dokumente, die in diesem Monat abgelegt wurden", + .DateConstraint = SearchRunner.DateConstraint.CurrentMonth, + .Image = SvgImageCollection1.Item("month") + }, + New PredefinedDateSearch() With { + .Name = "Letzter Monat", + .Description = "Dokumente, die im letzten Monat abgelegt wurden", + .DateConstraint = SearchRunner.DateConstraint.LastMonth, + .Image = SvgImageCollection1.Item("month") + } + } + End Function + + Private Async Sub TextEdit1_KeyUp(sender As Object, e As KeyEventArgs) Handles TextEdit1.KeyUp + If e.KeyCode = Keys.Enter Then + Await RunSearch(TextEdit1.EditValue) + End If + End Sub + + Private Async Sub SearchControl2_KeyUp(sender As Object, e As KeyEventArgs) Handles TokenEdit1.KeyUp + If e.KeyCode = Keys.Enter And TokenEdit1.IsPopupOpen = False Then + Dim oTokens = TokenEdit1.GetTokenList() + Dim oFirstToken = oTokens.FirstOrDefault() + + If oFirstToken Is Nothing Then + Exit Sub + End If + + Dim oTokenValue As TokenValue = oFirstToken.Value + + Await RunSearch(oTokenValue.Value) + End If + End Sub + + Private Async Sub TextEdit1_ButtonClick(sender As Object, e As DevExpress.XtraEditors.Controls.ButtonPressedEventArgs) Handles TextEdit1.ButtonClick + If e.Button.Tag = "SEARCH" Then + Await RunSearch(TextEdit1.EditValue) + End If + End Sub + + Private Async Function RunSearch(pSearchTerm As String) As Threading.Tasks.Task + Dim oHandle = StartUpdateUI() + + Try + Dim oDateFrom = DateEditFrom.EditValue + Dim oDateTo = DateEditTo.EditValue + + If CheckEdit1.IsOn = False Then + oDateTo = Nothing + End If + + SearchRunner.SetDateConstraint() + Dim oResult = Await SearchRunner.RunWithSearchTerm(pSearchTerm, oDateFrom, oDateTo) + + If oResult.OK = False Then + SetStatusBarColor(Color.OrangeRed) + End If + + lblResults.Caption = $"{oResult.Count} Ergebnisse" + + Catch ex As Exception + MsgBox(ex.Message) + + Finally + StopUpdateUI(oHandle) + + End Try + End Function + + Private Async Sub TileView1_ItemClick(sender As Object, e As TileViewItemClickEventArgs) Handles TileView1.ItemClick + Dim oHandle = StartUpdateUI() + + Try + Dim oSearch = TileView1.GetRow(TileView1.FocusedRowHandle) + Dim oSearchTitle As String = "Suche" + + If TypeOf oSearch Is PredefinedDateSearch Then + Dim oDateSearch As PredefinedDateSearch = oSearch + oSearchTitle = oDateSearch.DisplayName + SearchRunner.SetDateConstraint(oDateSearch.DateConstraint) + End If + + Dim oResult = Await SearchRunner.RunWithSearchTerm("", oSearchTitle) + + If oResult.Count = 0 Then + SetStatusBarColor(Color.OrangeRed) + End If + + lblResults.Caption = $"{oResult.Count} Ergebnisse" + Catch ex As Exception + MsgBox(ex.Message) + Finally + StopUpdateUI(oHandle) + End Try + End Sub + + Private Function StartUpdateUI() As IOverlaySplashScreenHandle + SetStatusBarColor(Color.FromArgb(255, 240, 240, 240)) + Dim oHandle = SplashScreenManager.ShowOverlayForm(LayoutControl1) + Return oHandle + End Function + + Private Sub StopUpdateUI(pHandle As IOverlaySplashScreenHandle) + SplashScreenManager.CloseOverlayForm(pHandle) + End Sub + + Private Sub SetStatusBarColor(pColor As Color) + ' Change color for StatusBarBackground + Dim element As SkinElement = SkinManager.GetSkinElement(SkinProductId.Ribbon, UserLookAndFeel.Default, "StatusBarBackground") + element.Color.SolidImageCenterColor = pColor + element.Color.BackColor = pColor + + ' Change color for StatusBarFormBackground + Dim element2 As SkinElement = SkinManager.GetSkinElement(SkinProductId.Ribbon, UserLookAndFeel.Default, "StatusBarFormBackground") + element2.Color.SolidImageCenterColor = pColor + element2.Color.BackColor = pColor + + ' Force update of LookAndFeel + LookAndFeelHelper.ForceDefaultLookAndFeelChanged() + + End Sub + + Private Sub RadioGroup1_EditValueChanged(sender As Object, e As EventArgs) Handles RadioGroup1.EditValueChanged + Dim oIndex = RadioGroup1.SelectedIndex + Dim oItem As RadioGroupItem = RadioGroup1.Properties.Items.Item(oIndex) + Dim oSearchConstraintString As String = oItem.Value + Dim oDateConstraint = SearchRunner.ConstantToDateConstraint(oSearchConstraintString) + + If oDateConstraint <> SearchRunner.DateConstraint.Undefined Then + SearchRunner.SetDateConstraint(oDateConstraint) + End If + End Sub + + Friend Class PredefinedSearch + Public Property Name As String + Public Property Description As String + Public Property Image As SvgImage + Public Property Count As Integer = 0 + + Public ReadOnly Property DisplayName As String + Get + Return Name + End Get + End Property + + End Class + + Friend Class PredefinedSQLSearch + Public Property SQLCommand As String + End Class + + Friend Class PredefinedDateSearch + Inherits PredefinedSearch + + Public DateConstraint As SearchRunner.DateConstraint + End Class + + Private Sub CheckEdit1_Properties_EditValueChanged(sender As Object, e As EventArgs) Handles CheckEdit1.Properties.EditValueChanged + DateEditTo.Enabled = CheckEdit1.IsOn + End Sub + + Private Sub chkDateFilter_CheckedChanged(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles chkDateFilter.CheckedChanged + If chkDateFilter.Checked Then + LayoutControlGroupDate1.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always + LayoutControlGroupDate2.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always + Else + LayoutControlGroupDate1.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never + LayoutControlGroupDate2.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never + End If + 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 TokenEdit1.Properties.TokenAdded + ' Dim oEditor As TokenEdit = sender + ' SetNewTokens(oEditor) + 'End Sub + + 'Private Sub SearchControl2_Properties_TokenRemoved(sender As Object, e As TokenEditTokenRemovedEventArgs) Handles TokenEdit1.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 pEditor.GetTokenList().Count > 0 Then + SetTokens(pEditor, TokenListDefault) + Search.InputMode = InputMode.Default + Else + SetTokens(pEditor, New Dictionary(Of String, Object)) + Search.InputMode = InputMode.Default + End If + + '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 TokenEdit1.CustomDrawTokenGlyph + ' Set Background according to token type + Select Case e.Value.GetType() + Case GetType(AttributeValueToken) + e.Graphics.FillRectangle(New SolidBrush(Color.FromArgb(255, 255, 214, 49)), 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 + + +End Class \ No newline at end of file diff --git a/GUIs.ZooFlow/ZooFlow.vbproj b/GUIs.ZooFlow/ZooFlow.vbproj index cb74ffa9..9f3abe46 100644 --- a/GUIs.ZooFlow/ZooFlow.vbproj +++ b/GUIs.ZooFlow/ZooFlow.vbproj @@ -399,10 +399,10 @@ Form - + frmFlowSearch2.vb - + Form @@ -558,7 +558,7 @@ frmFlowSearch1.vb - + frmFlowSearch2.vb diff --git a/GUIs.ZooFlow/frmFlowForm.vb b/GUIs.ZooFlow/frmFlowForm.vb index dd59e2c6..688d4bfe 100644 --- a/GUIs.ZooFlow/frmFlowForm.vb +++ b/GUIs.ZooFlow/frmFlowForm.vb @@ -516,31 +516,14 @@ Public Class frmFlowForm End If End Sub - Private Sub PictureBox1_Click(sender As Object, e As EventArgs) - frmSearchNeu.Show() - - 'Open_FlowSearch() - End Sub Sub Open_FlowSearch() Cursor = Cursors.WaitCursor If TheFormIsAlreadyLoaded("frmFlowSearch1") Then Cursor = Cursors.Default Exit Sub End If - 'Dim oSQLFlowSearch As String = "" - 'For Each oRow As DataRow In My.Tables.DTIDB_COMMON_SQL.Rows - ' If oRow.Item("TITLE") = SQLCMD_FLOW_SEARCH_LOWER_LIMIT Then - ' oSQLFlowSearch = oRow.Item("SQL_COMMAND") - - ' End If - 'Next - 'If oSQLFlowSearch <> String.Empty Then - 'oSQLFlowSearch = oSQLFlowSearch.Replace("@USER_ID", My.Application.User.UserId) - 'oSQLFlowSearch = oSQLFlowSearch.Replace("@LANGUAGE_ID", My.Application.User.LanguageId) - 'oSQLFlowSearch = oSQLFlowSearch.Replace("@LANGUAGE", My.Application.User.Language) - - 'End If - Dim oForm As New frmFlowSearch1() + + Dim oForm As New frmFlowSearch2() oForm.Show() oForm.BringToFront() @@ -584,16 +567,7 @@ Public Class frmFlowForm PictureEdit2.Image = My.Resources.ZOOFLOW_DEFAULT End Sub - Private Sub PictureBoxAbo_Click(sender As Object, e As EventArgs) - Cursor = Cursors.WaitCursor - If TheFormIsAlreadyLoaded("frmPreSearch") Then - Cursor = Cursors.Default - Exit Sub - End If - Dim oForm2 As New frmSearchPredefined() - oForm2.Show() - Cursor = Cursors.Default - End Sub + Private Function TheFormIsAlreadyLoaded(ByVal pFormName As String) As Boolean TheFormIsAlreadyLoaded = False @@ -1152,7 +1126,7 @@ Public Class frmFlowForm Dim oToken = RunningTaskTokenSource.Token Try - Dim oResult = Await Search.Run(oSearchText) + Dim oResult = Await Search.RunWithSearchTerm(oSearchText) If oResult.OK = False Then NotifyIcon.ShowBalloonTip(20_000, "Info", oResult.ErrorMessage, ToolTipIcon.Info) End If @@ -1274,7 +1248,7 @@ Public Class frmFlowForm Where(Function(row) row.Item(0) = oObjectId). CopyToDataTable() - Search.Run(oResult, "Suche") + Search.RunWithDataTable(oResult, "Suche") Catch ex As Exception ErrorHandler.ShowErrorMessage(ex, "Laden eines Dokuments") Finally