Custom Filter Enhancement Phase #2

This commit is contained in:
Michael J. Seiferling
2017-08-04 21:23:03 -06:00
parent 11cc244b18
commit 19812d1cd2
6 changed files with 130 additions and 124 deletions
+54 -54
View File
@@ -22,8 +22,6 @@ Partial Class frmFilter
'Do not modify it using the code editor. 'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> _ <System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent() Private Sub InitializeComponent()
Me.optGameInfo = New System.Windows.Forms.RadioButton()
Me.optTag = New System.Windows.Forms.RadioButton()
Me.grpTagFilter = New System.Windows.Forms.GroupBox() Me.grpTagFilter = New System.Windows.Forms.GroupBox()
Me.grpTagOptions = New System.Windows.Forms.GroupBox() Me.grpTagOptions = New System.Windows.Forms.GroupBox()
Me.optAll = New System.Windows.Forms.RadioButton() Me.optAll = New System.Windows.Forms.RadioButton()
@@ -46,10 +44,12 @@ Partial Class frmFilter
Me.lblName = New System.Windows.Forms.Label() Me.lblName = New System.Windows.Forms.Label()
Me.txtName = New System.Windows.Forms.TextBox() Me.txtName = New System.Windows.Forms.TextBox()
Me.grpSorting = New System.Windows.Forms.GroupBox() Me.grpSorting = New System.Windows.Forms.GroupBox()
Me.lblOrderBy = New System.Windows.Forms.Label()
Me.cboSortField = New System.Windows.Forms.ComboBox()
Me.optSortAsc = New System.Windows.Forms.RadioButton()
Me.optSortDesc = New System.Windows.Forms.RadioButton() Me.optSortDesc = New System.Windows.Forms.RadioButton()
Me.optSortAsc = New System.Windows.Forms.RadioButton()
Me.cboSortField = New System.Windows.Forms.ComboBox()
Me.lblOrderBy = New System.Windows.Forms.Label()
Me.chkTag = New System.Windows.Forms.CheckBox()
Me.chkGameInfo = New System.Windows.Forms.CheckBox()
Me.grpTagFilter.SuspendLayout() Me.grpTagFilter.SuspendLayout()
Me.grpTagOptions.SuspendLayout() Me.grpTagOptions.SuspendLayout()
Me.grpGameFilter.SuspendLayout() Me.grpGameFilter.SuspendLayout()
@@ -57,26 +57,6 @@ Partial Class frmFilter
Me.grpSorting.SuspendLayout() Me.grpSorting.SuspendLayout()
Me.SuspendLayout() Me.SuspendLayout()
' '
'optGameInfo
'
Me.optGameInfo.AutoSize = True
Me.optGameInfo.Location = New System.Drawing.Point(12, 12)
Me.optGameInfo.Name = "optGameInfo"
Me.optGameInfo.Size = New System.Drawing.Size(108, 17)
Me.optGameInfo.TabIndex = 0
Me.optGameInfo.Text = "Game Information"
Me.optGameInfo.UseVisualStyleBackColor = True
'
'optTag
'
Me.optTag.AutoSize = True
Me.optTag.Location = New System.Drawing.Point(12, 190)
Me.optTag.Name = "optTag"
Me.optTag.Size = New System.Drawing.Size(44, 17)
Me.optTag.TabIndex = 2
Me.optTag.Text = "Tag"
Me.optTag.UseVisualStyleBackColor = True
'
'grpTagFilter 'grpTagFilter
' '
Me.grpTagFilter.Controls.Add(Me.grpTagOptions) Me.grpTagFilter.Controls.Add(Me.grpTagOptions)
@@ -297,23 +277,16 @@ Partial Class frmFilter
Me.grpSorting.TabStop = False Me.grpSorting.TabStop = False
Me.grpSorting.Text = "Sorting" Me.grpSorting.Text = "Sorting"
' '
'lblOrderBy 'optSortDesc
' '
Me.lblOrderBy.AutoSize = True Me.optSortDesc.AutoSize = True
Me.lblOrderBy.Location = New System.Drawing.Point(6, 28) Me.optSortDesc.Location = New System.Drawing.Point(297, 26)
Me.lblOrderBy.Name = "lblOrderBy" Me.optSortDesc.Name = "optSortDesc"
Me.lblOrderBy.Size = New System.Drawing.Size(51, 13) Me.optSortDesc.Size = New System.Drawing.Size(82, 17)
Me.lblOrderBy.TabIndex = 0 Me.optSortDesc.TabIndex = 3
Me.lblOrderBy.Text = "Order By:" Me.optSortDesc.TabStop = True
' Me.optSortDesc.Text = "Descending"
'cboSortField Me.optSortDesc.UseVisualStyleBackColor = True
'
Me.cboSortField.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.cboSortField.FormattingEnabled = True
Me.cboSortField.Location = New System.Drawing.Point(63, 25)
Me.cboSortField.Name = "cboSortField"
Me.cboSortField.Size = New System.Drawing.Size(147, 21)
Me.cboSortField.TabIndex = 1
' '
'optSortAsc 'optSortAsc
' '
@@ -326,28 +299,55 @@ Partial Class frmFilter
Me.optSortAsc.Text = "Ascending" Me.optSortAsc.Text = "Ascending"
Me.optSortAsc.UseVisualStyleBackColor = True Me.optSortAsc.UseVisualStyleBackColor = True
' '
'optSortDesc 'cboSortField
' '
Me.optSortDesc.AutoSize = True Me.cboSortField.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.optSortDesc.Location = New System.Drawing.Point(297, 26) Me.cboSortField.FormattingEnabled = True
Me.optSortDesc.Name = "optSortDesc" Me.cboSortField.Location = New System.Drawing.Point(63, 25)
Me.optSortDesc.Size = New System.Drawing.Size(82, 17) Me.cboSortField.Name = "cboSortField"
Me.optSortDesc.TabIndex = 3 Me.cboSortField.Size = New System.Drawing.Size(147, 21)
Me.optSortDesc.TabStop = True Me.cboSortField.TabIndex = 1
Me.optSortDesc.Text = "Descending" '
Me.optSortDesc.UseVisualStyleBackColor = True 'lblOrderBy
'
Me.lblOrderBy.AutoSize = True
Me.lblOrderBy.Location = New System.Drawing.Point(6, 28)
Me.lblOrderBy.Name = "lblOrderBy"
Me.lblOrderBy.Size = New System.Drawing.Size(51, 13)
Me.lblOrderBy.TabIndex = 0
Me.lblOrderBy.Text = "Order By:"
'
'chkTag
'
Me.chkTag.AutoSize = True
Me.chkTag.Location = New System.Drawing.Point(12, 192)
Me.chkTag.Name = "chkTag"
Me.chkTag.Size = New System.Drawing.Size(45, 17)
Me.chkTag.TabIndex = 6
Me.chkTag.Text = "Tag"
Me.chkTag.UseVisualStyleBackColor = True
'
'chkGameInfo
'
Me.chkGameInfo.AutoSize = True
Me.chkGameInfo.Location = New System.Drawing.Point(12, 14)
Me.chkGameInfo.Name = "chkGameInfo"
Me.chkGameInfo.Size = New System.Drawing.Size(109, 17)
Me.chkGameInfo.TabIndex = 7
Me.chkGameInfo.Text = "Game Information"
Me.chkGameInfo.UseVisualStyleBackColor = True
' '
'frmFilter 'frmFilter
' '
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(409, 586) Me.ClientSize = New System.Drawing.Size(409, 586)
Me.Controls.Add(Me.chkGameInfo)
Me.Controls.Add(Me.chkTag)
Me.Controls.Add(Me.grpSorting) Me.Controls.Add(Me.grpSorting)
Me.Controls.Add(Me.grpGameFilter) Me.Controls.Add(Me.grpGameFilter)
Me.Controls.Add(Me.grpTagFilter) Me.Controls.Add(Me.grpTagFilter)
Me.Controls.Add(Me.btnOK) Me.Controls.Add(Me.btnOK)
Me.Controls.Add(Me.optTag)
Me.Controls.Add(Me.optGameInfo)
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
Me.MaximizeBox = False Me.MaximizeBox = False
Me.MinimizeBox = False Me.MinimizeBox = False
@@ -367,8 +367,6 @@ Partial Class frmFilter
Me.PerformLayout() Me.PerformLayout()
End Sub End Sub
Friend WithEvents optGameInfo As System.Windows.Forms.RadioButton
Friend WithEvents optTag As System.Windows.Forms.RadioButton
Friend WithEvents grpTagFilter As System.Windows.Forms.GroupBox Friend WithEvents grpTagFilter As System.Windows.Forms.GroupBox
Friend WithEvents grpTagOptions As System.Windows.Forms.GroupBox Friend WithEvents grpTagOptions As System.Windows.Forms.GroupBox
Friend WithEvents optAll As System.Windows.Forms.RadioButton Friend WithEvents optAll As System.Windows.Forms.RadioButton
@@ -395,4 +393,6 @@ Partial Class frmFilter
Friend WithEvents optSortAsc As RadioButton Friend WithEvents optSortAsc As RadioButton
Friend WithEvents cboSortField As ComboBox Friend WithEvents cboSortField As ComboBox
Friend WithEvents lblOrderBy As Label Friend WithEvents lblOrderBy As Label
Friend WithEvents chkTag As CheckBox
Friend WithEvents chkGameInfo As CheckBox
End Class End Class
+20 -17
View File
@@ -3,17 +3,15 @@
Public Class frmFilter Public Class frmFilter
Public Enum eFilterType As Integer Public Enum eFilterType As Integer
NoFilter = 1 BaseFilter = 1
AnyTag = 2 AnyTag = 2
AllTags = 3 AllTags = 3
NoTags = 4 NoTags = 4
FieldAnd = 5
FieldOr = 6
End Enum End Enum
Dim oTagFilters As New List(Of clsTag) Dim oTagFilters As New List(Of clsTag)
Dim hshStringFilters As New Hashtable Dim hshStringFilters As New Hashtable
Dim eCurrentFilterType As eFilterType = eFilterType.AnyTag Dim eCurrentFilterType As eFilterType = eFilterType.BaseFilter
Dim bSortAsc As Boolean = True Dim bSortAsc As Boolean = True
Dim sSortField As String = "Name" Dim sSortField As String = "Name"
Dim hshTags As New Hashtable Dim hshTags As New Hashtable
@@ -124,13 +122,9 @@ Public Class frmFilter
Dim oTag As clsTag Dim oTag As clsTag
If optGameInfo.Checked Then If chkGameInfo.Checked Then
'Set Filter Type 'Set Filter Type
If optAnd.Checked Then eCurrentFilterType = eFilterType.BaseFilter
eCurrentFilterType = eFilterType.FieldAnd
Else
eCurrentFilterType = eFilterType.FieldOr
End If
'Set String Filter 'Set String Filter
If txtName.Text <> String.Empty Then If txtName.Text <> String.Empty Then
@@ -142,7 +136,9 @@ Public Class frmFilter
If txtCompany.Text <> String.Empty Then If txtCompany.Text <> String.Empty Then
hshStringFilters.Add("Company", txtCompany.Text) hshStringFilters.Add("Company", txtCompany.Text)
End If End If
Else End If
If chkTag.Checked Then
'Set Tags 'Set Tags
For Each oData In lstFilter.Items For Each oData In lstFilter.Items
oTag = DirectCast(hshTags(oData.Value), clsTag) oTag = DirectCast(hshTags(oData.Value), clsTag)
@@ -207,8 +203,8 @@ Public Class frmFilter
btnAdd.Text = frmFilter_btnAdd btnAdd.Text = frmFilter_btnAdd
btnOK.Text = frmFilter_btnOK btnOK.Text = frmFilter_btnOK
grpTagOptions.Text = frmFilter_grpTagOptions grpTagOptions.Text = frmFilter_grpTagOptions
optTag.Text = frmFilter_optTag chkTag.Text = frmFilter_chkTag
optGameInfo.Text = frmFilter_optGameInfo chkGameInfo.Text = frmFilter_chkGameInfo
grpSorting.Text = frmFilter_grpSorting grpSorting.Text = frmFilter_grpSorting
lblOrderBy.Text = frmFilter_lblOrderBy lblOrderBy.Text = frmFilter_lblOrderBy
optSortAsc.Text = frmFilter_optSortAsc optSortAsc.Text = frmFilter_optSortAsc
@@ -216,12 +212,13 @@ Public Class frmFilter
'Defaults 'Defaults
optSortAsc.Checked = True optSortAsc.Checked = True
grpGameFilter.Enabled = False
grpTagFilter.Enabled = False
End Sub End Sub
Private Sub frmGameTags_Load(sender As Object, e As EventArgs) Handles MyBase.Load Private Sub frmGameTags_Load(sender As Object, e As EventArgs) Handles MyBase.Load
SetForm() SetForm()
LoadCombos() LoadCombos()
optGameInfo.Checked = True
LoadData() LoadData()
End Sub End Sub
@@ -245,13 +242,19 @@ Public Class frmFilter
End If End If
End Sub End Sub
Private Sub optGameInfo_Click(sender As Object, e As EventArgs) Handles optGameInfo.Click, optTag.Click Private Sub chkGameInfo_CheckedChanged(sender As Object, e As EventArgs) Handles chkGameInfo.CheckedChanged
If optGameInfo.Checked = True Then If chkGameInfo.Checked Then
grpGameFilter.Enabled = True grpGameFilter.Enabled = True
grpTagFilter.Enabled = False
Else Else
grpGameFilter.Enabled = False grpGameFilter.Enabled = False
End If
End Sub
Private Sub chkTag_CheckedChanged(sender As Object, e As EventArgs) Handles chkTag.CheckedChanged
If chkTag.Checked Then
grpTagFilter.Enabled = True grpTagFilter.Enabled = True
Else
grpTagFilter.Enabled = False
End If End If
End Sub End Sub
End Class End Class
+2 -5
View File
@@ -21,7 +21,7 @@ Public Class frmGameManager
Private bIsLoading As Boolean = False Private bIsLoading As Boolean = False
Private oCurrentTagFilters As New List(Of clsTag) Private oCurrentTagFilters As New List(Of clsTag)
Private oCurrentStringFilters As New Hashtable Private oCurrentStringFilters As New Hashtable
Private eCurrentFilter As frmFilter.eFilterType = frmFilter.eFilterType.NoFilter Private eCurrentFilter As frmFilter.eFilterType = frmFilter.eFilterType.BaseFilter
Private bCurrentSortAsc As Boolean = True Private bCurrentSortAsc As Boolean = True
Private sCurrentSortField As String = "Name" Private sCurrentSortField As String = "Name"
Private WithEvents tmFilterTimer As Timer Private WithEvents tmFilterTimer As Timer
@@ -235,7 +235,7 @@ Public Class frmGameManager
Else Else
oCurrentTagFilters.Clear() oCurrentTagFilters.Clear()
oCurrentStringFilters.Clear() oCurrentStringFilters.Clear()
eCurrentFilter = frmFilter.eFilterType.NoFilter eCurrentFilter = frmFilter.eFilterType.BaseFilter
bCurrentSortAsc = True bCurrentSortAsc = True
sCurrentSortField = "Name" sCurrentSortField = "Name"
End If End If
@@ -1550,9 +1550,6 @@ Public Class frmGameManager
AssignDirtyHandlers(grpExtra.Controls) AssignDirtyHandlers(grpExtra.Controls)
AssignDirtyHandlers(grpStats.Controls) AssignDirtyHandlers(grpStats.Controls)
AssignDirtyHandlersMisc() AssignDirtyHandlersMisc()
LoadData(False)
ModeChange()
End Sub End Sub
Private Sub lstGames_SelectedIndexChanged(sender As Object, e As EventArgs) Handles lstGames.SelectedIndexChanged Private Sub lstGames_SelectedIndexChanged(sender As Object, e As EventArgs) Handles lstGames.SelectedIndexChanged
+34 -28
View File
@@ -511,30 +511,8 @@ Public Class mgrMonitorList
End If End If
Select Case eFilterType Select Case eFilterType
Case frmFilter.eFilterType.NoFilter Case frmFilter.eFilterType.BaseFilter
sSQL = "SELECT " & sBaseSelect & sSort
Case frmFilter.eFilterType.FieldAnd, frmFilter.eFilterType.FieldOr
sSQL = "SELECT " & sBaseSelect sSQL = "SELECT " & sBaseSelect
If hshStringFilters.Count > 0 Then
sSQL &= " WHERE ("
For Each de As DictionaryEntry In hshStringFilters
sSQL &= de.Key & " LIKE @" & de.Key
hshParams.Add(de.Key, "%" & de.Value.ToString & "%")
iCounter += 1
If iCounter <> hshStringFilters.Count Then
Select Case eFilterType
Case frmFilter.eFilterType.FieldAnd
sSQL &= " AND "
Case frmFilter.eFilterType.FieldOr
sSQL &= " OR "
End Select
End If
Next
sSQL &= ")"
End If
sSQL &= sSort
Case frmFilter.eFilterType.AnyTag Case frmFilter.eFilterType.AnyTag
sSQL = "SELECT DISTINCT " & sBaseSelect sSQL = "SELECT DISTINCT " & sBaseSelect
sSQL &= " NATURAL JOIN gametags WHERE gametags.TagID IN (" sSQL &= " NATURAL JOIN gametags WHERE gametags.TagID IN ("
@@ -546,7 +524,7 @@ Public Class mgrMonitorList
Next Next
sSQL = sSQL.TrimEnd(",") sSQL = sSQL.TrimEnd(",")
sSQL &= ")" & sSort sSQL &= ")"
Case frmFilter.eFilterType.AllTags Case frmFilter.eFilterType.AllTags
sSQL = "SELECT " & sBaseSelect & " WHERE MonitorID IN " sSQL = "SELECT " & sBaseSelect & " WHERE MonitorID IN "
@@ -558,12 +536,40 @@ Public Class mgrMonitorList
hshParams.Add("TagID" & iCounter, oTag.ID) hshParams.Add("TagID" & iCounter, oTag.ID)
iCounter += 1 iCounter += 1
Next Next
sSQL &= sSort
Case frmFilter.eFilterType.NoTags Case frmFilter.eFilterType.NoTags
sSQL = "SELECT " & sBaseSelect & " WHERE MonitorID NOT IN (SELECT MonitorID FROM gametags)" & sSort sSQL = "SELECT " & sBaseSelect & " WHERE MonitorID NOT IN (SELECT MonitorID FROM gametags)"
End Select End Select
'Handle String Filters
If hshStringFilters.Count > 0 Then
If eFilterType = frmFilter.eFilterType.BaseFilter Then
sSQL &= " WHERE ("
Else
sSQL &= " AND ("
End If
iCounter = 0
For Each de As DictionaryEntry In hshStringFilters
sSQL &= de.Key & " LIKE @" & de.Key
hshParams.Add(de.Key, "%" & de.Value.ToString & "%")
iCounter += 1
If iCounter <> hshStringFilters.Count Then
'Select Case eFilterType
'Case frmFilter.eFilterType.FieldAnd
'sSQL &= " AND "
'Case frmFilter.eFilterType.FieldOr
sSQL &= " OR "
'End Select
End If
Next
sSQL &= ")"
End If
'Handle Sorting
sSQL &= sSort
Return sSQL Return sSQL
End Function End Function
@@ -697,7 +703,7 @@ Public Class mgrMonitorList
Dim bSuccess As Boolean = False Dim bSuccess As Boolean = False
Dim oTagFilters As New List(Of clsTag) Dim oTagFilters As New List(Of clsTag)
Dim oStringFilters As New Hashtable Dim oStringFilters As New Hashtable
Dim eCurrentFilter As frmFilter.eFilterType = frmFilter.eFilterType.NoFilter Dim eCurrentFilter As frmFilter.eFilterType = frmFilter.eFilterType.BaseFilter
Dim bSortAsc As Boolean = True Dim bSortAsc As Boolean = True
Dim sSortField As String = "Name" Dim sSortField As String = "Name"
+18 -18
View File
@@ -942,6 +942,24 @@ Namespace My.Resources
End Get End Get
End Property End Property
'''<summary>
''' Looks up a localized string similar to Game Information.
'''</summary>
Friend ReadOnly Property frmFilter_chkGameInfo() As String
Get
Return ResourceManager.GetString("frmFilter_chkGameInfo", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Tag.
'''</summary>
Friend ReadOnly Property frmFilter_chkTag() As String
Get
Return ResourceManager.GetString("frmFilter_chkTag", resourceCulture)
End Get
End Property
'''<summary> '''<summary>
''' Looks up a localized string similar to Custom Filter. ''' Looks up a localized string similar to Custom Filter.
'''</summary> '''</summary>
@@ -1059,15 +1077,6 @@ Namespace My.Resources
End Get End Get
End Property End Property
'''<summary>
''' Looks up a localized string similar to Game Information.
'''</summary>
Friend ReadOnly Property frmFilter_optGameInfo() As String
Get
Return ResourceManager.GetString("frmFilter_optGameInfo", resourceCulture)
End Get
End Property
'''<summary> '''<summary>
''' Looks up a localized string similar to Or. ''' Looks up a localized string similar to Or.
'''</summary> '''</summary>
@@ -1095,15 +1104,6 @@ Namespace My.Resources
End Get End Get
End Property End Property
'''<summary>
''' Looks up a localized string similar to Tag.
'''</summary>
Friend ReadOnly Property frmFilter_optTag() As String
Get
Return ResourceManager.GetString("frmFilter_optTag", resourceCulture)
End Get
End Property
'''<summary> '''<summary>
''' Looks up a localized string similar to Company. ''' Looks up a localized string similar to Company.
'''</summary> '''</summary>
+2 -2
View File
@@ -919,13 +919,13 @@
<data name="frmFilter_optAny" xml:space="preserve"> <data name="frmFilter_optAny" xml:space="preserve">
<value>Any Tag</value> <value>Any Tag</value>
</data> </data>
<data name="frmFilter_optGameInfo" xml:space="preserve"> <data name="frmFilter_chkGameInfo" xml:space="preserve">
<value>Game Information</value> <value>Game Information</value>
</data> </data>
<data name="frmFilter_optOr" xml:space="preserve"> <data name="frmFilter_optOr" xml:space="preserve">
<value>Or</value> <value>Or</value>
</data> </data>
<data name="frmFilter_optTag" xml:space="preserve"> <data name="frmFilter_chkTag" xml:space="preserve">
<value>Tag</value> <value>Tag</value>
</data> </data>
<data name="frmGameTags_btnAdd" xml:space="preserve"> <data name="frmGameTags_btnAdd" xml:space="preserve">