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.
<System.Diagnostics.DebuggerStepThrough()> _
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.grpTagOptions = New System.Windows.Forms.GroupBox()
Me.optAll = New System.Windows.Forms.RadioButton()
@@ -46,10 +44,12 @@ Partial Class frmFilter
Me.lblName = New System.Windows.Forms.Label()
Me.txtName = New System.Windows.Forms.TextBox()
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.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.grpTagOptions.SuspendLayout()
Me.grpGameFilter.SuspendLayout()
@@ -57,26 +57,6 @@ Partial Class frmFilter
Me.grpSorting.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
'
Me.grpTagFilter.Controls.Add(Me.grpTagOptions)
@@ -297,23 +277,16 @@ Partial Class frmFilter
Me.grpSorting.TabStop = False
Me.grpSorting.Text = "Sorting"
'
'lblOrderBy
'optSortDesc
'
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:"
'
'cboSortField
'
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
Me.optSortDesc.AutoSize = True
Me.optSortDesc.Location = New System.Drawing.Point(297, 26)
Me.optSortDesc.Name = "optSortDesc"
Me.optSortDesc.Size = New System.Drawing.Size(82, 17)
Me.optSortDesc.TabIndex = 3
Me.optSortDesc.TabStop = True
Me.optSortDesc.Text = "Descending"
Me.optSortDesc.UseVisualStyleBackColor = True
'
'optSortAsc
'
@@ -326,28 +299,55 @@ Partial Class frmFilter
Me.optSortAsc.Text = "Ascending"
Me.optSortAsc.UseVisualStyleBackColor = True
'
'optSortDesc
'cboSortField
'
Me.optSortDesc.AutoSize = True
Me.optSortDesc.Location = New System.Drawing.Point(297, 26)
Me.optSortDesc.Name = "optSortDesc"
Me.optSortDesc.Size = New System.Drawing.Size(82, 17)
Me.optSortDesc.TabIndex = 3
Me.optSortDesc.TabStop = True
Me.optSortDesc.Text = "Descending"
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
'
'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
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
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.grpGameFilter)
Me.Controls.Add(Me.grpTagFilter)
Me.Controls.Add(Me.btnOK)
Me.Controls.Add(Me.optTag)
Me.Controls.Add(Me.optGameInfo)
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
Me.MaximizeBox = False
Me.MinimizeBox = False
@@ -367,8 +367,6 @@ Partial Class frmFilter
Me.PerformLayout()
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 grpTagOptions As System.Windows.Forms.GroupBox
Friend WithEvents optAll As System.Windows.Forms.RadioButton
@@ -395,4 +393,6 @@ Partial Class frmFilter
Friend WithEvents optSortAsc As RadioButton
Friend WithEvents cboSortField As ComboBox
Friend WithEvents lblOrderBy As Label
Friend WithEvents chkTag As CheckBox
Friend WithEvents chkGameInfo As CheckBox
End Class
+20 -17
View File
@@ -3,17 +3,15 @@
Public Class frmFilter
Public Enum eFilterType As Integer
NoFilter = 1
BaseFilter = 1
AnyTag = 2
AllTags = 3
NoTags = 4
FieldAnd = 5
FieldOr = 6
End Enum
Dim oTagFilters As New List(Of clsTag)
Dim hshStringFilters As New Hashtable
Dim eCurrentFilterType As eFilterType = eFilterType.AnyTag
Dim eCurrentFilterType As eFilterType = eFilterType.BaseFilter
Dim bSortAsc As Boolean = True
Dim sSortField As String = "Name"
Dim hshTags As New Hashtable
@@ -124,13 +122,9 @@ Public Class frmFilter
Dim oTag As clsTag
If optGameInfo.Checked Then
If chkGameInfo.Checked Then
'Set Filter Type
If optAnd.Checked Then
eCurrentFilterType = eFilterType.FieldAnd
Else
eCurrentFilterType = eFilterType.FieldOr
End If
eCurrentFilterType = eFilterType.BaseFilter
'Set String Filter
If txtName.Text <> String.Empty Then
@@ -142,7 +136,9 @@ Public Class frmFilter
If txtCompany.Text <> String.Empty Then
hshStringFilters.Add("Company", txtCompany.Text)
End If
Else
End If
If chkTag.Checked Then
'Set Tags
For Each oData In lstFilter.Items
oTag = DirectCast(hshTags(oData.Value), clsTag)
@@ -207,8 +203,8 @@ Public Class frmFilter
btnAdd.Text = frmFilter_btnAdd
btnOK.Text = frmFilter_btnOK
grpTagOptions.Text = frmFilter_grpTagOptions
optTag.Text = frmFilter_optTag
optGameInfo.Text = frmFilter_optGameInfo
chkTag.Text = frmFilter_chkTag
chkGameInfo.Text = frmFilter_chkGameInfo
grpSorting.Text = frmFilter_grpSorting
lblOrderBy.Text = frmFilter_lblOrderBy
optSortAsc.Text = frmFilter_optSortAsc
@@ -216,12 +212,13 @@ Public Class frmFilter
'Defaults
optSortAsc.Checked = True
grpGameFilter.Enabled = False
grpTagFilter.Enabled = False
End Sub
Private Sub frmGameTags_Load(sender As Object, e As EventArgs) Handles MyBase.Load
SetForm()
LoadCombos()
optGameInfo.Checked = True
LoadData()
End Sub
@@ -245,13 +242,19 @@ Public Class frmFilter
End If
End Sub
Private Sub optGameInfo_Click(sender As Object, e As EventArgs) Handles optGameInfo.Click, optTag.Click
If optGameInfo.Checked = True Then
Private Sub chkGameInfo_CheckedChanged(sender As Object, e As EventArgs) Handles chkGameInfo.CheckedChanged
If chkGameInfo.Checked Then
grpGameFilter.Enabled = True
grpTagFilter.Enabled = False
Else
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
Else
grpTagFilter.Enabled = False
End If
End Sub
End Class
+2 -5
View File
@@ -21,7 +21,7 @@ Public Class frmGameManager
Private bIsLoading As Boolean = False
Private oCurrentTagFilters As New List(Of clsTag)
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 sCurrentSortField As String = "Name"
Private WithEvents tmFilterTimer As Timer
@@ -235,7 +235,7 @@ Public Class frmGameManager
Else
oCurrentTagFilters.Clear()
oCurrentStringFilters.Clear()
eCurrentFilter = frmFilter.eFilterType.NoFilter
eCurrentFilter = frmFilter.eFilterType.BaseFilter
bCurrentSortAsc = True
sCurrentSortField = "Name"
End If
@@ -1550,9 +1550,6 @@ Public Class frmGameManager
AssignDirtyHandlers(grpExtra.Controls)
AssignDirtyHandlers(grpStats.Controls)
AssignDirtyHandlersMisc()
LoadData(False)
ModeChange()
End Sub
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
Select Case eFilterType
Case frmFilter.eFilterType.NoFilter
sSQL = "SELECT " & sBaseSelect & sSort
Case frmFilter.eFilterType.FieldAnd, frmFilter.eFilterType.FieldOr
Case frmFilter.eFilterType.BaseFilter
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
sSQL = "SELECT DISTINCT " & sBaseSelect
sSQL &= " NATURAL JOIN gametags WHERE gametags.TagID IN ("
@@ -546,7 +524,7 @@ Public Class mgrMonitorList
Next
sSQL = sSQL.TrimEnd(",")
sSQL &= ")" & sSort
sSQL &= ")"
Case frmFilter.eFilterType.AllTags
sSQL = "SELECT " & sBaseSelect & " WHERE MonitorID IN "
@@ -558,12 +536,40 @@ Public Class mgrMonitorList
hshParams.Add("TagID" & iCounter, oTag.ID)
iCounter += 1
Next
sSQL &= sSort
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
'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
End Function
@@ -697,7 +703,7 @@ Public Class mgrMonitorList
Dim bSuccess As Boolean = False
Dim oTagFilters As New List(Of clsTag)
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 sSortField As String = "Name"
+18 -18
View File
@@ -942,6 +942,24 @@ Namespace My.Resources
End Get
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>
''' Looks up a localized string similar to Custom Filter.
'''</summary>
@@ -1059,15 +1077,6 @@ Namespace My.Resources
End Get
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>
''' Looks up a localized string similar to Or.
'''</summary>
@@ -1095,15 +1104,6 @@ Namespace My.Resources
End Get
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>
''' Looks up a localized string similar to Company.
'''</summary>
+2 -2
View File
@@ -919,13 +919,13 @@
<data name="frmFilter_optAny" xml:space="preserve">
<value>Any Tag</value>
</data>
<data name="frmFilter_optGameInfo" xml:space="preserve">
<data name="frmFilter_chkGameInfo" xml:space="preserve">
<value>Game Information</value>
</data>
<data name="frmFilter_optOr" xml:space="preserve">
<value>Or</value>
</data>
<data name="frmFilter_optTag" xml:space="preserve">
<data name="frmFilter_chkTag" xml:space="preserve">
<value>Tag</value>
</data>
<data name="frmGameTags_btnAdd" xml:space="preserve">