Zooflow: Save Tokens in Custom searches
This commit is contained in:
@@ -5,8 +5,9 @@ Namespace SavedSearch
|
||||
Public MustInherit Class SavedSearch
|
||||
Public Property Name As String
|
||||
Public Property Description As String
|
||||
Public Overridable Property GroupText As String = ""
|
||||
Public Property Image As SvgImage
|
||||
Public Property Selected As Boolean
|
||||
Public Overridable Property GroupText As String = ""
|
||||
|
||||
Public ReadOnly Property DisplayName As String
|
||||
Get
|
||||
|
||||
@@ -30,7 +30,7 @@ Namespace Search
|
||||
Serializer = New XmlSerializer(GetType(SavedSearch.CustomSearchSerializable))
|
||||
End Sub
|
||||
|
||||
Private Function GetSearchDirectoryPath() As String
|
||||
Public Function GetSearchDirectoryPath() As String
|
||||
Dim oConfigPath As String = Config.UserConfigPath
|
||||
Dim oConfigDirectory As String = IO.Path.Combine(IO.Path.GetDirectoryName(oConfigPath), CUSTOM_SEARCH_DIRECTORY)
|
||||
|
||||
@@ -54,8 +54,8 @@ Namespace Search
|
||||
}
|
||||
|
||||
Try
|
||||
Dim oDirectoryPath As String = GetSearchDirectoryPath()
|
||||
Dim oFilePath As String = IO.Path.Combine(oDirectoryPath, Utils.ConvertTextToSlug(pTitle) & ".xml")
|
||||
Dim oSlug = Utils.ConvertTextToSlug(pTitle)
|
||||
Dim oFilePath As String = IO.Path.Combine(GetSearchDirectoryPath(), $"{oSlug}.xml")
|
||||
Dim oBuffer As Byte() = SerializeSearch(oSearch)
|
||||
|
||||
File.WriteAllBytes(oFilePath, oBuffer)
|
||||
|
||||
@@ -47,6 +47,7 @@ Namespace Search
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Private _ActiveSearchTokens As New List(Of SearchToken.Token)
|
||||
Private _ActiveDateAttribute As String = SEARCH_FACT_DATE_DEFAULT
|
||||
Private _ActiveTokenOperator As TokenOperator = TokenOperator.And
|
||||
|
||||
@@ -56,6 +57,12 @@ Namespace Search
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public ReadOnly Property ActiveTokens As List(Of SearchToken.Token)
|
||||
Get
|
||||
Return _ActiveSearchTokens
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public Property BaseSearchSQL As String
|
||||
Public Property ExplicitDate As Boolean = False
|
||||
|
||||
@@ -102,22 +109,20 @@ Namespace Search
|
||||
''' Only search for Term. Used for sidebar quicksearch.
|
||||
''' </summary>
|
||||
Public Async Function RunWithSearchTerm(pSearchTerm As String) As Task(Of SearchResult)
|
||||
Return Await RunWithSearchTerm(New SearchOptions With {.SearchString = pSearchTerm})
|
||||
Return Await RunWithSearchOptions(New SearchOptions With {.SearchString = pSearchTerm})
|
||||
End Function
|
||||
|
||||
Public Async Function RunWithSearchTerm(pSearchTerm As String, pDateFrom As Date, pDateTo As Date, pSearchTitle As String) As Task(Of SearchResult)
|
||||
Return Await RunWithSearchTerm(New SearchOptions With {
|
||||
.SearchString = pSearchTerm,
|
||||
.SearchTitle = pSearchTitle,
|
||||
.DateFrom = pDateFrom,
|
||||
.DateTo = pDateTo
|
||||
})
|
||||
Return Await RunWithSearchOptions(New SearchOptions With {
|
||||
.SearchString = pSearchTerm,
|
||||
.SearchTitle = pSearchTitle,
|
||||
.DateFrom = pDateFrom,
|
||||
.DateTo = pDateTo
|
||||
})
|
||||
End Function
|
||||
|
||||
Public Async Function RunWithTokens(pTokens As IEnumerable(Of Search.SearchToken.Token)) As Task(Of SearchResult)
|
||||
Return Await RunWithSearchTerm(New SearchOptions With {
|
||||
.SearchTokens = pTokens
|
||||
})
|
||||
Return Await RunWithSearchOptions(New SearchOptions With {.SearchTokens = pTokens})
|
||||
End Function
|
||||
|
||||
Public Async Function RunWithTokens(pTokens As IEnumerable(Of Search.SearchToken.Token), pDateFrom As Date, pDateTo As Date, pSearchTitle As String) As Task(Of SearchResult)
|
||||
@@ -128,11 +133,11 @@ Namespace Search
|
||||
Return New SearchResult(0)
|
||||
End If
|
||||
|
||||
Return Await RunWithSearchTerm(New SearchOptions With {
|
||||
.SearchTokens = pTokens,
|
||||
.DateFrom = pDateFrom,
|
||||
.DateTo = pDateTo
|
||||
})
|
||||
Return Await RunWithSearchOptions(New SearchOptions With {
|
||||
.SearchTokens = pTokens,
|
||||
.DateFrom = pDateFrom,
|
||||
.DateTo = pDateTo
|
||||
})
|
||||
End Function
|
||||
|
||||
|
||||
@@ -140,21 +145,24 @@ Namespace Search
|
||||
' Return Await RunWithSearchTerm(pSearchTerm, pDateFrom, pDateTo, Nothing, Nothing)
|
||||
'End Function
|
||||
|
||||
Private Async Function RunWithSearchTerm(pOptions As SearchOptions) As Task(Of SearchResult)
|
||||
Private Async Function RunWithSearchOptions(pOptions As SearchOptions) As Task(Of SearchResult)
|
||||
Dim oDateConstraint = Await GetDateConstraint(pOptions.DateFrom, pOptions.DateTo)
|
||||
Dim oWindowTitle = GetResultWindowString(pOptions.SearchString, pOptions.SearchTitle)
|
||||
Dim oParams = GetParams(oWindowTitle)
|
||||
Dim oTokens = pOptions.SearchTokens
|
||||
Dim oSearchTerm = pOptions.SearchString
|
||||
|
||||
Dim oSQL
|
||||
Dim oSQL = String.Empty
|
||||
|
||||
If oTokens IsNot Nothing AndAlso oTokens.Count > 0 Then
|
||||
_ActiveSearchTokens = oTokens
|
||||
Await InsertSearchTokens(oTokens)
|
||||
oSQL = $"EXEC PRIDB_SEARCH_GET_TOKEN_RESULT_DOCS {UserId}, '{oDateConstraint}', '{UserLanguage}'"
|
||||
ElseIf oSearchTerm IsNot Nothing Then
|
||||
_ActiveSearchTokens.Clear()
|
||||
oSQL = $"EXEC PRIDB_SEARCH_GET_TEXT_RESULTS {UserId},'{pOptions.SearchString}','{oDateConstraint}', '{UserLanguage}'"
|
||||
Else
|
||||
_ActiveSearchTokens.Clear()
|
||||
oSQL = $"EXEC PRIDB_SEARCH_GET_TEXT_RESULTS {UserId},'{String.Empty}','{oDateConstraint}', '{UserLanguage}'"
|
||||
End If
|
||||
|
||||
@@ -168,9 +176,9 @@ Namespace Search
|
||||
Dim oRowCount = oDTDocResult.Rows.Count
|
||||
If oRowCount > 0 Then
|
||||
oParams.Results.Add(New DocumentResultList.DocumentResult() With {
|
||||
.Title = SearchId,
|
||||
.Datatable = oDTDocResult
|
||||
})
|
||||
.Title = SearchId,
|
||||
.Datatable = oDTDocResult
|
||||
})
|
||||
|
||||
If oDTDocResult.Rows.Count = 1 Then
|
||||
oParams.ShowFileList = False
|
||||
|
||||
47
GUIs.ZooFlow/Search/frmSearchFlow.Designer.vb
generated
47
GUIs.ZooFlow/Search/frmSearchFlow.Designer.vb
generated
@@ -55,12 +55,15 @@ Partial Class frmSearchFlow
|
||||
Me.RepositoryItemTrackBar1 = New DevExpress.XtraEditors.Repository.RepositoryItemTrackBar()
|
||||
Me.BarEditItem2 = New DevExpress.XtraBars.BarEditItem()
|
||||
Me.RepositoryItemTrackBar2 = New DevExpress.XtraEditors.Repository.RepositoryItemTrackBar()
|
||||
Me.BarCheckItem1 = New DevExpress.XtraBars.BarCheckItem()
|
||||
Me.btnOpenSearchDirectory = 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.RibbonPageGroup5 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
|
||||
Me.RibbonPage3 = New DevExpress.XtraBars.Ribbon.RibbonPage()
|
||||
Me.RibbonPageGroup3 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
|
||||
Me.RibbonPageGroup4 = 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()
|
||||
@@ -71,6 +74,7 @@ Partial Class frmSearchFlow
|
||||
Me.GridSearches = New DevExpress.XtraGrid.GridControl()
|
||||
Me.ViewSearches = New DevExpress.XtraGrid.Views.Tile.TileView()
|
||||
Me.colGroupText = New DevExpress.XtraGrid.Columns.TileViewColumn()
|
||||
Me.colSelected = New DevExpress.XtraGrid.Columns.TileViewColumn()
|
||||
Me.DateEditFrom = New DevExpress.XtraEditors.DateEdit()
|
||||
Me.DateEditTo = New DevExpress.XtraEditors.DateEdit()
|
||||
Me.CheckEdit1 = New DevExpress.XtraEditors.ToggleSwitch()
|
||||
@@ -146,9 +150,9 @@ Partial Class frmSearchFlow
|
||||
'
|
||||
Me.RibbonControl1.ColorScheme = DevExpress.XtraBars.Ribbon.RibbonControlColorScheme.Green
|
||||
Me.RibbonControl1.ExpandCollapseItem.Id = 0
|
||||
Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.lblResults, Me.chkOperatorAnd, Me.chkOperatorOr, Me.chkDatefilter2, Me.BarCheckItem4, Me.chkSearchEverywhere, Me.BarButtonItem1, Me.BarButtonItem2, Me.btnSaveSearch, Me.chkGridVertical, Me.chkGridHorizontal, Me.BarEditItem1, Me.BarEditItem2})
|
||||
Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.lblResults, Me.chkOperatorAnd, Me.chkOperatorOr, Me.chkDatefilter2, Me.BarCheckItem4, Me.chkSearchEverywhere, Me.BarButtonItem1, Me.BarButtonItem2, Me.btnSaveSearch, Me.chkGridVertical, Me.chkGridHorizontal, Me.BarEditItem1, Me.BarEditItem2, Me.BarCheckItem1, Me.btnOpenSearchDirectory})
|
||||
Me.RibbonControl1.Location = New System.Drawing.Point(0, 0)
|
||||
Me.RibbonControl1.MaxItemId = 28
|
||||
Me.RibbonControl1.MaxItemId = 30
|
||||
Me.RibbonControl1.Name = "RibbonControl1"
|
||||
Me.RibbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1, Me.RibbonPage3})
|
||||
Me.RibbonControl1.RepositoryItems.AddRange(New DevExpress.XtraEditors.Repository.RepositoryItem() {Me.RepositoryItemMarqueeProgressBar1, Me.RepositoryItemTrackBar1, Me.RepositoryItemTrackBar2})
|
||||
@@ -275,6 +279,19 @@ Partial Class frmSearchFlow
|
||||
Me.RepositoryItemTrackBar2.Maximum = 5
|
||||
Me.RepositoryItemTrackBar2.Name = "RepositoryItemTrackBar2"
|
||||
'
|
||||
'BarCheckItem1
|
||||
'
|
||||
Me.BarCheckItem1.Caption = "Kanban Ansicht"
|
||||
Me.BarCheckItem1.Id = 28
|
||||
Me.BarCheckItem1.ImageOptions.SvgImage = Global.DigitalData.GUIs.ZooFlow.My.Resources.Resources.columnheaders
|
||||
Me.BarCheckItem1.Name = "BarCheckItem1"
|
||||
'
|
||||
'btnOpenSearchDirectory
|
||||
'
|
||||
Me.btnOpenSearchDirectory.Caption = "Suchen Verzeichnis öffnen"
|
||||
Me.btnOpenSearchDirectory.Id = 29
|
||||
Me.btnOpenSearchDirectory.Name = "btnOpenSearchDirectory"
|
||||
'
|
||||
'RibbonPage1
|
||||
'
|
||||
Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1, Me.RibbonPageGroup2, Me.RibbonPageGroup5})
|
||||
@@ -306,7 +323,7 @@ Partial Class frmSearchFlow
|
||||
'
|
||||
'RibbonPage3
|
||||
'
|
||||
Me.RibbonPage3.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup3})
|
||||
Me.RibbonPage3.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup3, Me.RibbonPageGroup4})
|
||||
Me.RibbonPage3.Name = "RibbonPage3"
|
||||
Me.RibbonPage3.Text = "Layout"
|
||||
'
|
||||
@@ -314,11 +331,18 @@ Partial Class frmSearchFlow
|
||||
'
|
||||
Me.RibbonPageGroup3.ItemLinks.Add(Me.chkGridVertical)
|
||||
Me.RibbonPageGroup3.ItemLinks.Add(Me.chkGridHorizontal)
|
||||
Me.RibbonPageGroup3.ItemLinks.Add(Me.BarCheckItem1)
|
||||
Me.RibbonPageGroup3.ItemLinks.Add(Me.BarEditItem1)
|
||||
Me.RibbonPageGroup3.ItemLinks.Add(Me.BarEditItem2)
|
||||
Me.RibbonPageGroup3.Name = "RibbonPageGroup3"
|
||||
Me.RibbonPageGroup3.Text = "RibbonPageGroup3"
|
||||
'
|
||||
'RibbonPageGroup4
|
||||
'
|
||||
Me.RibbonPageGroup4.ItemLinks.Add(Me.btnOpenSearchDirectory)
|
||||
Me.RibbonPageGroup4.Name = "RibbonPageGroup4"
|
||||
Me.RibbonPageGroup4.Text = "Suchen"
|
||||
'
|
||||
'RepositoryItemMarqueeProgressBar1
|
||||
'
|
||||
Me.RepositoryItemMarqueeProgressBar1.Name = "RepositoryItemMarqueeProgressBar1"
|
||||
@@ -405,11 +429,11 @@ Partial Class frmSearchFlow
|
||||
'
|
||||
'ViewSearches
|
||||
'
|
||||
Me.ViewSearches.Columns.AddRange(New DevExpress.XtraGrid.Columns.GridColumn() {Me.colName, Me.colDescription, Me.colImage, Me.colGroupText})
|
||||
Me.ViewSearches.Columns.AddRange(New DevExpress.XtraGrid.Columns.GridColumn() {Me.colName, Me.colDescription, Me.colImage, Me.colGroupText, Me.colSelected})
|
||||
Me.ViewSearches.ColumnSet.CheckedColumn = Me.colSelected
|
||||
Me.ViewSearches.ColumnSet.GroupColumn = Me.colGroupText
|
||||
Me.ViewSearches.GridControl = Me.GridSearches
|
||||
Me.ViewSearches.Name = "ViewSearches"
|
||||
Me.ViewSearches.OptionsTiles.AllowItemHover = True
|
||||
Me.ViewSearches.OptionsTiles.IndentBetweenGroups = 20
|
||||
Me.ViewSearches.OptionsTiles.ItemPadding = New System.Windows.Forms.Padding(10, 4, 10, 4)
|
||||
Me.ViewSearches.OptionsTiles.ItemSize = New System.Drawing.Size(170, 70)
|
||||
@@ -478,9 +502,18 @@ Partial Class frmSearchFlow
|
||||
Me.colGroupText.Caption = "Gruppe"
|
||||
Me.colGroupText.FieldName = "GroupText"
|
||||
Me.colGroupText.Name = "colGroupText"
|
||||
Me.colGroupText.SortMode = DevExpress.XtraGrid.ColumnSortMode.Custom
|
||||
Me.colGroupText.Visible = True
|
||||
Me.colGroupText.VisibleIndex = 3
|
||||
'
|
||||
'colSelected
|
||||
'
|
||||
Me.colSelected.Caption = "Selected"
|
||||
Me.colSelected.FieldName = "Selected"
|
||||
Me.colSelected.Name = "colSelected"
|
||||
Me.colSelected.Visible = True
|
||||
Me.colSelected.VisibleIndex = 4
|
||||
'
|
||||
'DateEditFrom
|
||||
'
|
||||
Me.DateEditFrom.EditValue = Nothing
|
||||
@@ -735,4 +768,8 @@ Partial Class frmSearchFlow
|
||||
Friend WithEvents RepositoryItemTrackBar1 As DevExpress.XtraEditors.Repository.RepositoryItemTrackBar
|
||||
Friend WithEvents BarEditItem2 As DevExpress.XtraBars.BarEditItem
|
||||
Friend WithEvents RepositoryItemTrackBar2 As DevExpress.XtraEditors.Repository.RepositoryItemTrackBar
|
||||
Friend WithEvents BarCheckItem1 As DevExpress.XtraBars.BarCheckItem
|
||||
Friend WithEvents colSelected As DevExpress.XtraGrid.Columns.TileViewColumn
|
||||
Friend WithEvents btnOpenSearchDirectory As DevExpress.XtraBars.BarButtonItem
|
||||
Friend WithEvents RibbonPageGroup4 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
|
||||
End Class
|
||||
|
||||
@@ -52,9 +52,16 @@ Public Class frmSearchFlow
|
||||
|
||||
Private Sub SearchRunner_NewSavedSearch(sender As Object, e As EventArgs)
|
||||
Dim oForm As New frmEditSearch With {.IsNew = True}
|
||||
|
||||
If oForm.ShowDialog() = DialogResult.OK Then
|
||||
SearchLoader.CreateCustomSearch(oForm.Title, oForm.Description, New List(Of Token), oForm.ImageString)
|
||||
|
||||
' Get active tokens and create the search
|
||||
Dim oTokens = SearchRunner.ActiveTokens
|
||||
SearchLoader.CreateCustomSearch(oForm.Title, oForm.Description, oTokens, oForm.ImageString)
|
||||
|
||||
' Reload the searches
|
||||
GridSearches.DataSource = SearchLoader.LoadSearches()
|
||||
|
||||
End If
|
||||
End Sub
|
||||
|
||||
@@ -359,4 +366,40 @@ Public Class frmSearchFlow
|
||||
Private Sub BarEditItem2_EditValueChanged(sender As Object, e As EventArgs) Handles BarEditItem2.EditValueChanged
|
||||
ViewSearches.OptionsTiles.RowCount = BarEditItem2.EditValue
|
||||
End Sub
|
||||
|
||||
Private Sub BarCheckItem1_CheckedChanged(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarCheckItem1.CheckedChanged
|
||||
If BarCheckItem1.Checked Then
|
||||
ViewSearches.OptionsTiles.LayoutMode = TileViewLayoutMode.Kanban
|
||||
Else
|
||||
ViewSearches.OptionsTiles.LayoutMode = TileViewLayoutMode.Default
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub btnOpenSearchDirectory_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnOpenSearchDirectory.ItemClick
|
||||
Dim oSearchDirectory = SearchLoader.GetSearchDirectoryPath()
|
||||
Process.Start(oSearchDirectory)
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
Private Sub ViewSearches_ItemCheckedChanged(sender As Object, e As TileViewItemClickEventArgs) Handles ViewSearches.ItemCheckedChanged
|
||||
Dim oItem As TileViewItem = e.Item
|
||||
Dim oSearch As SavedSearch.SavedSearch = ViewSearches.GetRow(oItem.RowHandle)
|
||||
|
||||
If TypeOf oSearch Is CustomSearch Then
|
||||
'TODO: show ribbon controls to edit search
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub ViewSearches_CustomColumnSort(sender As Object, e As Views.Base.CustomColumnSortEventArgs) Handles ViewSearches.CustomColumnSort
|
||||
Console.WriteLine()
|
||||
|
||||
If TypeOf e.RowObject1 Is CustomSearch Then
|
||||
e.Result = 1
|
||||
e.Handled = True
|
||||
Else
|
||||
e.Result = -1
|
||||
e.Handled = True
|
||||
End If
|
||||
End Sub
|
||||
End Class
|
||||
Reference in New Issue
Block a user