better handling of some corner cases in the filter form

This commit is contained in:
Manuel Simon Hirsig
2016-08-09 21:11:13 +02:00
parent 4423779b22
commit 13547dfb04
3 changed files with 48 additions and 31 deletions
+25 -15
View File
@@ -1,6 +1,6 @@
local m, public, private = aux.module'search_tab'
function private.get_form()
function private.get_form_query()
local query_string = ''
local function add(part)
@@ -12,7 +12,7 @@ function private.get_form()
add(name)
if m.exact_checkbox:GetChecked() then
add('exact')
add((name == '' and '/' or '')..'exact')
end
local min_level = m.blizzard_level(m.min_level_input:GetText())
@@ -65,7 +65,9 @@ function private.set_form(components)
end
m.name_input:SetText(aux.filter.unquote(filter[2]))
elseif filter[1] == 'exact' then
m.exact_checkbox:SetChecked(true)
if not m.exact_checkbox:GetChecked() then
m.exact_checkbox:Click()
end
elseif filter[1] == 'min_level' then
m.min_level_input:SetText(tonumber(filter[2]))
elseif filter[1] == 'max_level' then
@@ -94,7 +96,9 @@ end
function private.clear_form()
m.name_input:SetText('')
m.name_input:ClearFocus()
m.exact_checkbox:SetChecked(nil)
if m.exact_checkbox:GetChecked() then
m.exact_checkbox:Click()
end
m.min_level_input:SetText('')
m.min_level_input:ClearFocus()
m.max_level_input:SetText('')
@@ -120,7 +124,7 @@ function private.import_query_string()
end
function private.export_query_string()
local components, error = aux.filter.parse_query_string(m.get_form())
local components, error = aux.filter.parse_query_string(m.get_form_query())
if components then
m.search_box:SetText(aux.filter.query_string({blizzard=components.blizzard, post=m.post_filter}))
m.filter_input:ClearFocus()
@@ -312,18 +316,24 @@ function private.initialize_class_dropdown()
end
end
UIDropDownMenu_AddButton{
text = ALL,
value = 0,
func = on_click,
}
if not m.exact_checkbox:GetChecked() then
m.class_dropdown.button:Enable()
for i, class in { GetAuctionItemClasses() } do
UIDropDownMenu_AddButton{
text = class,
value = i,
text = ALL,
value = 0,
func = on_click,
}
for i, class in { GetAuctionItemClasses() } do
UIDropDownMenu_AddButton{
text = class,
value = i,
func = on_click,
}
end
else
m.class_dropdown.button:Disable()
end
end
@@ -340,7 +350,7 @@ function private.initialize_subclass_dropdown()
local class_index = UIDropDownMenu_GetSelectedValue(m.class_dropdown)
if class_index and GetAuctionItemSubClasses(class_index) then
if class_index and GetAuctionItemSubClasses(class_index) and not m.exact_checkbox:GetChecked() then
m.subclass_dropdown.button:Enable()
UIDropDownMenu_AddButton{
@@ -370,7 +380,7 @@ function private.initialize_slot_dropdown()
local class_index = UIDropDownMenu_GetSelectedValue(m.class_dropdown)
local subclass_index = UIDropDownMenu_GetSelectedValue(m.subclass_dropdown)
if class_index and subclass_index and GetAuctionInvTypes(class_index, subclass_index) then
if class_index and subclass_index and GetAuctionInvTypes(class_index, subclass_index) and not m.exact_checkbox:GetChecked() then
m.slot_dropdown.button:Enable()
UIDropDownMenu_AddButton{
+10 -2
View File
@@ -273,7 +273,7 @@ function private.create_frames()
btn:SetPoint('TOPLEFT', m.saved_searches_button, 'TOPRIGHT', 5, 0)
btn:SetWidth(243)
btn:SetHeight(22)
btn:SetText('New Filter')
btn:SetText('Filter Builder')
btn:SetScript('OnClick', function() m.update_tab(m.FILTER) end)
private.new_filter_button = btn
end
@@ -381,6 +381,14 @@ function private.create_frames()
do
local checkbox = aux.gui.checkbox(m.frame.filter)
checkbox:SetPoint('TOPLEFT', m.name_input, 'TOPRIGHT', 16, 0)
checkbox:SetScript('OnClick', function()
UIDropDownMenu_ClearAll(m.class_dropdown)
UIDropDownMenu_Initialize(m.class_dropdown, m.initialize_class_dropdown)
UIDropDownMenu_ClearAll(m.subclass_dropdown)
UIDropDownMenu_Initialize(m.subclass_dropdown, m.initialize_subclass_dropdown)
UIDropDownMenu_ClearAll(m.slot_dropdown)
UIDropDownMenu_Initialize(m.slot_dropdown, m.initialize_slot_dropdown)
end)
local label = aux.gui.label(checkbox, aux.gui.config.small_font_size)
label:SetPoint('BOTTOMLEFT', checkbox, 'TOPLEFT', -2, 1)
label:SetText('Exact')
@@ -434,6 +442,7 @@ function private.create_frames()
end
do
local dropdown = aux.gui.dropdown(m.frame.filter)
private.class_dropdown = dropdown
dropdown:SetPoint('TOPLEFT', m.min_level_input, 'BOTTOMLEFT', 0, -24)
dropdown:SetWidth(300)
local label = aux.gui.label(dropdown, aux.gui.config.small_font_size)
@@ -443,7 +452,6 @@ function private.create_frames()
dropdown:SetScript('OnShow', function()
UIDropDownMenu_Initialize(this, m.initialize_class_dropdown)
end)
private.class_dropdown = dropdown
end
do
local dropdown = aux.gui.dropdown(m.frame.filter)