working on new filter tab
This commit is contained in:
@@ -75,7 +75,7 @@ Aux.post_tab.FRAMES(function(m, public, private)
|
||||
m.auction_listing:EnableSorting(false)
|
||||
m.auction_listing:DisableSelection(true)
|
||||
m.auction_listing:SetHandler('OnClick', function(table, row_data, column, button)
|
||||
local column_index = Aux.util.index_of(column, column.row.cols)
|
||||
local column_index = Aux.util.key(column, column.row.cols)
|
||||
local unit_start_price, unit_buyout_price = m.undercut(row_data.record, m.stack_size_slider:GetValue(), button == 'RightButton')
|
||||
if column_index == 3 then
|
||||
m.stack_size_slider:SetValue(row_data.record.stack_size)
|
||||
|
||||
+58
-2
@@ -229,7 +229,7 @@ function private.get_form_filter()
|
||||
end
|
||||
end
|
||||
|
||||
local quality = UIDropDownMenu_GetSelectedValue(m.quality_dropdown) ~= 0 and UIDropDownMenu_GetSelectedValue(m.quality_dropdown)
|
||||
local quality = UIDropDownMenu_GetSelectedValue(m.quality_dropdown) >= 0 and UIDropDownMenu_GetSelectedValue(m.quality_dropdown)
|
||||
if quality then
|
||||
add(strlower(getglobal('ITEM_QUALITY'..quality..'_DESC')))
|
||||
end
|
||||
@@ -765,7 +765,7 @@ function private.initialize_quality_dropdown()
|
||||
|
||||
UIDropDownMenu_AddButton{
|
||||
text = ALL,
|
||||
value = 0,
|
||||
value = -1,
|
||||
func = on_click,
|
||||
}
|
||||
for i=0,4 do
|
||||
@@ -777,3 +777,59 @@ function private.initialize_quality_dropdown()
|
||||
end
|
||||
end
|
||||
|
||||
function private.initialize_filter_dropdown()
|
||||
local function on_click()
|
||||
UIDropDownMenu_SetSelectedValue(m.filter_dropdown, this.value)
|
||||
m.filter_button:SetText(this.value)
|
||||
if Aux.safe(Aux).scan_util.filters[this.value].arity/0 == 0 then
|
||||
m.filter_input:Hide()
|
||||
else
|
||||
m.filter_input:Show()
|
||||
end
|
||||
end
|
||||
|
||||
for _, filter in {'and', 'or', 'not', 'min-unit-buy', 'max-unit-bid', 'max-unit-bid', 'max-unit-buy', 'bid-profit', 'buy-profit', 'bid-vend-profit', 'buy-vend-profit', 'bid-dis-profit', 'buy-dis-profit', 'bid-pct', 'buy-pct', 'item', 'tooltip', 'min-lvl', 'max-lvl', 'rarity', 'left', 'utilizable', 'discard'} do
|
||||
UIDropDownMenu_AddButton{
|
||||
text = filter,
|
||||
value = filter,
|
||||
func = on_click,
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
do
|
||||
local stack = {}
|
||||
|
||||
function private.add_post_filter()
|
||||
local name = UIDropDownMenu_GetSelectedValue(m.filter_dropdown) or ''
|
||||
local input = m.filter_input:GetText()
|
||||
if Aux.safe(Aux).scan_util.filters[name].test(input)/true then
|
||||
local filter = name
|
||||
if Aux.safe(Aux).scan_util.filters[name].arity/0 > 0 then
|
||||
filter = filter..'/'..input
|
||||
end
|
||||
|
||||
local filters = m.filter_display:GetText() or ''
|
||||
if filters ~= '' then
|
||||
filters = filters..'|n'
|
||||
end
|
||||
for _=1,getn(stack) do
|
||||
filters = filters..' '
|
||||
end
|
||||
m.filter_display:SetText(filters..filter)
|
||||
|
||||
m.filter_input:SetText('')
|
||||
m.filter_input:ClearFocus()
|
||||
|
||||
if Aux.util.set('and', 'or')[filter] then
|
||||
tinsert(stack, 2)
|
||||
else
|
||||
local top = tremove(stack)
|
||||
if top and top > 1 then
|
||||
tinsert(stack, top - 1)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
+32
-172
@@ -517,186 +517,46 @@ Aux.search_tab.FRAMES(function(m, public, private)
|
||||
private.quality_dropdown = dropdown
|
||||
end
|
||||
Aux.gui.vertical_line(m.frame.filter, 332)
|
||||
local function add_modifier(...)
|
||||
local current_filter_string = m.search_box:GetText()
|
||||
for i=1,arg.n do
|
||||
if current_filter_string ~= '' and strsub(current_filter_string, -1) ~= '/' then
|
||||
current_filter_string = current_filter_string..'/'
|
||||
end
|
||||
current_filter_string = current_filter_string..arg[i]
|
||||
end
|
||||
m.search_box:SetText(current_filter_string)
|
||||
end
|
||||
do
|
||||
local btn = Aux.gui.button(m.frame.filter, 16)
|
||||
btn:SetPoint('TOPRIGHT', -362, -10)
|
||||
btn:SetWidth(50)
|
||||
btn:SetHeight(19)
|
||||
btn:SetText('and')
|
||||
btn:SetScript('OnClick', function()
|
||||
add_modifier('and')
|
||||
local dropdown = Aux.gui.dropdown(m.frame.filter)
|
||||
dropdown:SetPoint('TOPRIGHT', -200, -10)
|
||||
dropdown:SetWidth(170)
|
||||
dropdown:SetHeight(10)
|
||||
UIDropDownMenu_Initialize(dropdown, m.initialize_filter_dropdown)
|
||||
dropdown:SetScript('OnShow', function()
|
||||
UIDropDownMenu_Initialize(this, m.initialize_filter_dropdown)
|
||||
end)
|
||||
private.and_operator_button = btn
|
||||
getglobal(dropdown:GetName()..'Text'):Hide()
|
||||
private.filter_dropdown = dropdown
|
||||
end
|
||||
do
|
||||
local btn = Aux.gui.button(m.frame.filter, 16)
|
||||
btn:SetPoint('LEFT', m.and_operator_button, 'RIGHT', 10, 0)
|
||||
btn:SetWidth(50)
|
||||
btn:SetHeight(19)
|
||||
btn:SetText('or')
|
||||
btn:SetScript('OnClick', function()
|
||||
add_modifier('or')
|
||||
btn:SetWidth(170)
|
||||
btn:SetHeight(25)
|
||||
btn:SetPoint('CENTER', m.filter_dropdown, 'CENTER', 0, 0)
|
||||
btn:SetScript('OnClick', m.add_post_filter)
|
||||
private.filter_button = btn
|
||||
end
|
||||
do
|
||||
local input = Aux.gui.editbox(m.frame.filter)
|
||||
input:SetPoint('LEFT', m.filter_dropdown, 'RIGHT', 10, 0)
|
||||
input:SetWidth(150)
|
||||
input:SetHeight(25)
|
||||
-- editbox:SetNumeric(true)
|
||||
-- editbox:SetMaxLetters(2)
|
||||
input:SetScript('OnChar', function()
|
||||
local filter = Aux.safe(Aux).scan_util.filters[UIDropDownMenu_GetSelectedValue(m.filter_dropdown)]
|
||||
Aux.completion.complete(this, function() return ({filter.test()/nil})[2] end)
|
||||
end)
|
||||
private.or_operator_button = btn
|
||||
input:SetScript('OnEnterPressed', m.add_post_filter)
|
||||
private.filter_input = input
|
||||
end
|
||||
do
|
||||
local btn = Aux.gui.button(m.frame.filter, 16)
|
||||
btn:SetPoint('LEFT', m.or_operator_button, 'RIGHT', 10, 0)
|
||||
btn:SetWidth(50)
|
||||
btn:SetHeight(19)
|
||||
btn:SetText('not')
|
||||
btn:SetScript('OnClick', function()
|
||||
add_modifier('not')
|
||||
end)
|
||||
private.not_operator_button = btn
|
||||
end
|
||||
private.modifier_buttons = {}
|
||||
do
|
||||
local btn = Aux.gui.button(m.frame.filter, 16)
|
||||
btn:SetPoint('TOPLEFT', m.and_operator_button, 'BOTTOMLEFT', 0, -10)
|
||||
m.modifier_buttons['min-unit-bid'] = btn
|
||||
end
|
||||
do
|
||||
local btn = Aux.gui.button(m.frame.filter, 16)
|
||||
btn:SetPoint('TOPLEFT', m.modifier_buttons['min-unit-bid'], 'BOTTOMLEFT', 0, -10)
|
||||
m.modifier_buttons['min-unit-buy'] = btn
|
||||
end
|
||||
do
|
||||
local btn = Aux.gui.button(m.frame.filter, 16)
|
||||
btn:SetPoint('TOPLEFT', m.modifier_buttons['min-unit-buy'], 'BOTTOMLEFT', 0, -10)
|
||||
m.modifier_buttons['max-unit-bid'] = btn
|
||||
end
|
||||
do
|
||||
local btn = Aux.gui.button(m.frame.filter, 16)
|
||||
btn:SetPoint('TOPLEFT', m.modifier_buttons['max-unit-bid'], 'BOTTOMLEFT', 0, -10)
|
||||
m.modifier_buttons['max-unit-buy'] = btn
|
||||
end
|
||||
do
|
||||
local btn = Aux.gui.button(m.frame.filter, 16)
|
||||
btn:SetPoint('TOPLEFT', m.modifier_buttons['max-unit-buy'], 'BOTTOMLEFT', 0, -10)
|
||||
m.modifier_buttons['bid-profit'] = btn
|
||||
end
|
||||
do
|
||||
local btn = Aux.gui.button(m.frame.filter, 16)
|
||||
btn:SetPoint('TOPLEFT', m.modifier_buttons['bid-profit'], 'BOTTOMLEFT', 0, -10)
|
||||
m.modifier_buttons['buy-profit'] = btn
|
||||
end
|
||||
do
|
||||
local btn = Aux.gui.button(m.frame.filter, 16)
|
||||
btn:SetPoint('TOPLEFT', m.modifier_buttons['buy-profit'], 'BOTTOMLEFT', 0, -10)
|
||||
m.modifier_buttons['bid-vend-profit'] = btn
|
||||
end
|
||||
do
|
||||
local btn = Aux.gui.button(m.frame.filter, 16)
|
||||
btn:SetPoint('TOPLEFT', m.modifier_buttons['bid-vend-profit'], 'BOTTOMLEFT', 0, -10)
|
||||
m.modifier_buttons['buy-vend-profit'] = btn
|
||||
end
|
||||
do
|
||||
local btn = Aux.gui.button(m.frame.filter, 16)
|
||||
btn:SetPoint('TOPLEFT', m.modifier_buttons['buy-vend-profit'], 'BOTTOMLEFT', 0, -10)
|
||||
m.modifier_buttons['bid-dis-profit'] = btn
|
||||
end
|
||||
do
|
||||
local btn = Aux.gui.button(m.frame.filter, 16)
|
||||
btn:SetPoint('TOPLEFT', m.modifier_buttons['bid-dis-profit'], 'BOTTOMLEFT', 0, -10)
|
||||
m.modifier_buttons['buy-dis-profit'] = btn
|
||||
end
|
||||
do
|
||||
local btn = Aux.gui.button(m.frame.filter, 16)
|
||||
btn:SetPoint('TOPLEFT', m.and_operator_button, 'BOTTOMLEFT', 205, -10)
|
||||
m.modifier_buttons['bid-pct'] = btn
|
||||
end
|
||||
do
|
||||
local btn = Aux.gui.button(m.frame.filter, 16)
|
||||
btn:SetPoint('TOPLEFT', m.modifier_buttons['bid-pct'], 'BOTTOMLEFT', 0, -10)
|
||||
m.modifier_buttons['buy-pct'] = btn
|
||||
end
|
||||
do
|
||||
local btn = Aux.gui.button(m.frame.filter, 16)
|
||||
btn:SetPoint('TOPLEFT', m.modifier_buttons['buy-pct'], 'BOTTOMLEFT', 0, -10)
|
||||
m.modifier_buttons['item'] = btn
|
||||
end
|
||||
do
|
||||
local btn = Aux.gui.button(m.frame.filter, 16)
|
||||
btn:SetPoint('TOPLEFT', m.modifier_buttons['item'], 'BOTTOMLEFT', 0, -10)
|
||||
m.modifier_buttons['tooltip'] = btn
|
||||
end
|
||||
do
|
||||
local btn = Aux.gui.button(m.frame.filter, 16)
|
||||
btn:SetPoint('TOPLEFT', m.modifier_buttons['tooltip'], 'BOTTOMLEFT', 0, -10)
|
||||
m.modifier_buttons['min-lvl'] = btn
|
||||
end
|
||||
do
|
||||
local btn = Aux.gui.button(m.frame.filter, 16)
|
||||
btn:SetPoint('TOPLEFT', m.modifier_buttons['min-lvl'], 'BOTTOMLEFT', 0, -10)
|
||||
m.modifier_buttons['max-lvl'] = btn
|
||||
end
|
||||
do
|
||||
local btn = Aux.gui.button(m.frame.filter, 16)
|
||||
btn:SetPoint('TOPLEFT', m.modifier_buttons['max-lvl'], 'BOTTOMLEFT', 0, -10)
|
||||
m.modifier_buttons['rarity'] = btn
|
||||
end
|
||||
do
|
||||
local btn = Aux.gui.button(m.frame.filter, 16)
|
||||
btn:SetPoint('TOPLEFT', m.modifier_buttons['rarity'], 'BOTTOMLEFT', 0, -10)
|
||||
m.modifier_buttons['left'] = btn
|
||||
end
|
||||
do
|
||||
local btn = Aux.gui.button(m.frame.filter, 16)
|
||||
btn:SetPoint('TOPLEFT', m.modifier_buttons['left'], 'BOTTOMLEFT', 0, -10)
|
||||
m.modifier_buttons['utilizable'] = btn
|
||||
end
|
||||
do
|
||||
local btn = Aux.gui.button(m.frame.filter, 16)
|
||||
btn:SetPoint('TOPLEFT', m.modifier_buttons['utilizable'], 'BOTTOMLEFT', 0, -10)
|
||||
m.modifier_buttons['discard'] = btn
|
||||
end
|
||||
for modifier_name, btn in m.modifier_buttons do
|
||||
local modifier_name = modifier_name
|
||||
local btn = btn
|
||||
|
||||
local filter = Aux.scan_util.filters[modifier_name]
|
||||
|
||||
btn:SetWidth(100)
|
||||
btn:SetHeight(19)
|
||||
btn:SetText(modifier_name)
|
||||
btn:SetScript('OnClick', function()
|
||||
local args = Aux.util.map(btn.inputs, function(input) return input:GetText() end)
|
||||
if filter.test(unpack(args)) then
|
||||
add_modifier(modifier_name, unpack(args))
|
||||
for _, input in btn.inputs do
|
||||
input:SetText('')
|
||||
input:ClearFocus()
|
||||
end
|
||||
end
|
||||
end)
|
||||
btn.inputs = {}
|
||||
if filter.arity > 0 then
|
||||
local editbox = Aux.gui.editbox(m.frame.filter)
|
||||
editbox.complete = Aux.completion.complete(function() return ({filter.test()})[2] end)
|
||||
editbox:SetPoint('LEFT', btn, 'RIGHT', 10, 0)
|
||||
editbox:SetWidth(80)
|
||||
-- editbox:SetNumeric(true)
|
||||
-- editbox:SetMaxLetters(2)
|
||||
editbox:SetScript('OnChar', function()
|
||||
this:complete()
|
||||
end)
|
||||
local on_click = btn:GetScript('OnClick')
|
||||
editbox:SetScript('OnEnterPressed', function()
|
||||
on_click()
|
||||
end)
|
||||
tinsert(btn.inputs, editbox)
|
||||
end
|
||||
local label = Aux.gui.label(m.frame.filter, 13)
|
||||
label:SetPoint('TOPLEFT', 340, -50)
|
||||
label:SetWidth(200)
|
||||
label:SetJustifyH('LEFT')
|
||||
private.filter_display = label
|
||||
end
|
||||
|
||||
private.status_bars = {}
|
||||
|
||||
Reference in New Issue
Block a user