some progress on the filter tab, various changes
This commit is contained in:
@@ -406,4 +406,16 @@ function Aux.item_quality_index(item_quality)
|
||||
return i
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function Aux.hide_elements(elements)
|
||||
for _, element in pairs(elements) do
|
||||
element:Hide()
|
||||
end
|
||||
end
|
||||
|
||||
function Aux.show_elements(elements)
|
||||
for _, element in pairs(elements) do
|
||||
element:Show()
|
||||
end
|
||||
end
|
||||
+182
-170
@@ -11,6 +11,12 @@ local selected_auction
|
||||
|
||||
local RESULTS, SAVED, FILTER = {}, {}, {}
|
||||
|
||||
private.elements = {
|
||||
[RESULTS] = {},
|
||||
[SAVED] = {},
|
||||
[FILTER] = {},
|
||||
}
|
||||
|
||||
function private.update_search_listings()
|
||||
Aux.sheet.populate(private.listings.favorite_searches, aux_favorite_searches)
|
||||
Aux.sheet.populate(private.listings.recent_searches, aux_recent_searches)
|
||||
@@ -23,7 +29,7 @@ function private.update_tab(tab)
|
||||
private.new_filter_button:UnlockHighlight()
|
||||
AuxFilterSearchFrameResults:Hide()
|
||||
AuxFilterSearchFrameSaved:Hide()
|
||||
AuxFilterSearchFrameFilters:Hide()
|
||||
Aux.hide_elements(private.elements[FILTER])
|
||||
|
||||
if tab == RESULTS then
|
||||
AuxFilterSearchFrameResults:Show()
|
||||
@@ -32,7 +38,7 @@ function private.update_tab(tab)
|
||||
AuxFilterSearchFrameSaved:Show()
|
||||
private.saved_searches_button:LockHighlight()
|
||||
elseif tab == FILTER then
|
||||
AuxFilterSearchFrameFilters:Show()
|
||||
Aux.show_elements(private.elements[FILTER])
|
||||
private.new_filter_button:LockHighlight()
|
||||
end
|
||||
end
|
||||
@@ -63,7 +69,8 @@ function private.get_form_filter()
|
||||
class = category and category.class,
|
||||
subclass = category and category.subclass,
|
||||
quality = UIDropDownMenu_GetSelectedValue(AuxFilterSearchFrameFiltersQualityDropDown),
|
||||
usable_only = AuxFilterSearchFrameFiltersUsableCheckButton:GetChecked()
|
||||
usable_only = AuxFilterSearchFrameFiltersUsableCheckButton:GetChecked(),
|
||||
exact_only = AuxFilterSearchFrameFiltersExactCheckButton:GetChecked(),
|
||||
}
|
||||
end
|
||||
|
||||
@@ -88,8 +95,6 @@ end
|
||||
function public.on_open()
|
||||
private.update_search_listings()
|
||||
private.update_tab(SAVED)
|
||||
-- private.tab_group:set_tab(aux_view)
|
||||
Aux.filter_search_frame.set_view(aux_view)
|
||||
end
|
||||
|
||||
function public.on_load()
|
||||
@@ -149,139 +154,151 @@ function public.on_load()
|
||||
},
|
||||
sort_order = {{ column = 1, order = 'ascending' }},
|
||||
}
|
||||
private.views = {
|
||||
[Aux.view.BUYOUT] = {
|
||||
frame = AuxFilterSearchFrameResultsBuyListing,
|
||||
on_row_click = function(sheet, row_index)
|
||||
local data_index = row_index + FauxScrollFrame_GetOffset(sheet.scroll_frame)
|
||||
private.on_row_click(sheet.data[data_index], true)
|
||||
end,
|
||||
on_row_enter = function(sheet, row_index)
|
||||
Aux.info.set_tooltip(sheet.rows[row_index].itemstring, sheet.rows[row_index].EnhTooltip_info, this, 'ANCHOR_RIGHT', 0, 0)
|
||||
end,
|
||||
on_row_leave = function(sheet, row_index)
|
||||
AuxTooltip:Hide()
|
||||
private.results_config = {
|
||||
frame = AuxFilterSearchFrameResultsBuyListing,
|
||||
on_row_click = function(sheet, row_index)
|
||||
local data_index = row_index + FauxScrollFrame_GetOffset(sheet.scroll_frame)
|
||||
private.on_row_click(sheet.data[data_index], true)
|
||||
end,
|
||||
on_row_enter = function(sheet, row_index)
|
||||
Aux.info.set_tooltip(sheet.rows[row_index].itemstring, sheet.rows[row_index].EnhTooltip_info, this, 'ANCHOR_RIGHT', 0, 0)
|
||||
end,
|
||||
on_row_leave = function(sheet, row_index)
|
||||
AuxTooltip:Hide()
|
||||
ResetCursor()
|
||||
end,
|
||||
on_row_update = function(sheet, row_index)
|
||||
if IsControlKeyDown() then
|
||||
ShowInspectCursor()
|
||||
elseif IsAltKeyDown() then
|
||||
SetCursor('BUY_CURSOR')
|
||||
else
|
||||
ResetCursor()
|
||||
end,
|
||||
on_row_update = function(sheet, row_index)
|
||||
if IsControlKeyDown() then
|
||||
ShowInspectCursor()
|
||||
elseif IsAltKeyDown() then
|
||||
SetCursor('BUY_CURSOR')
|
||||
else
|
||||
ResetCursor()
|
||||
end
|
||||
end,
|
||||
selected = function(datum)
|
||||
return Aux.util.any(datum, function(entry) return entry == selected_auction end)
|
||||
end,
|
||||
row_setter = function(row, group)
|
||||
row:SetAlpha(Aux.util.all(group, function(auction) return auction.gone end) and 0.3 or 1)
|
||||
row.itemstring = Aux.info.itemstring(group[1].item_id, group[1].suffix_id, nil, group[1].enchant_id)
|
||||
row.EnhTooltip_info = group[1].EnhTooltip_info
|
||||
end,
|
||||
columns = {
|
||||
{
|
||||
title = 'Auction Item',
|
||||
width = 280,
|
||||
comparator = function(group1, group2) return Aux.util.compare(group1[1].name, group2[1].name, Aux.util.GT) end,
|
||||
cell_initializer = function(cell)
|
||||
local icon = CreateFrame('Button', nil, cell)
|
||||
icon:EnableMouse(false)
|
||||
local icon_texture = icon:CreateTexture(nil, 'BORDER')
|
||||
icon_texture:SetAllPoints(icon)
|
||||
icon.icon_texture = icon_texture
|
||||
local normal_texture = icon:CreateTexture(nil)
|
||||
normal_texture:SetPoint('CENTER', 0, 0)
|
||||
normal_texture:SetWidth(22)
|
||||
normal_texture:SetHeight(22)
|
||||
normal_texture:SetTexture('Interface\\Buttons\\UI-Quickslot2')
|
||||
icon:SetNormalTexture(normal_texture)
|
||||
icon:SetPoint('LEFT', cell)
|
||||
icon:SetWidth(12)
|
||||
icon:SetHeight(12)
|
||||
local text = cell:CreateFontString(nil, 'OVERLAY', 'GameFontHighlightSmall')
|
||||
text:SetPoint('LEFT', icon, 'RIGHT', 1, 0)
|
||||
text:SetPoint('TOPRIGHT', cell)
|
||||
text:SetPoint('BOTTOMRIGHT', cell)
|
||||
text:SetJustifyV('TOP')
|
||||
text:SetJustifyH('LEFT')
|
||||
text:SetTextColor(0.8, 0.8, 0.8)
|
||||
cell.text = text
|
||||
cell.icon = icon
|
||||
end,
|
||||
cell_setter = function(cell, group)
|
||||
cell.icon.icon_texture:SetTexture(Aux.info.item(group[1].item_id).texture)
|
||||
if not group[1].usable then
|
||||
cell.icon.icon_texture:SetVertexColor(1.0, 0.1, 0.1)
|
||||
else
|
||||
cell.icon.icon_texture:SetVertexColor(1.0, 1.0, 1.0)
|
||||
end
|
||||
cell.text:SetText('['..group[1].tooltip[1][1].text..']')
|
||||
local color = ITEM_QUALITY_COLORS[group[1].quality]
|
||||
cell.text:SetTextColor(color.r, color.g, color.b)
|
||||
end,
|
||||
},
|
||||
{
|
||||
title = 'Qty',
|
||||
width = 25,
|
||||
comparator = function(group1, group2) return Aux.util.compare(group1[1].aux_quantity, group2[1].aux_quantity, Aux.util.LT) end,
|
||||
cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
|
||||
cell_setter = function(cell, group)
|
||||
cell.text:SetText(group[1].aux_quantity)
|
||||
end,
|
||||
},
|
||||
Aux.listing_util.money_column('Bid', function(group) return group[1].bid_price end),
|
||||
Aux.listing_util.money_column('Buy', function(group) return group[1].buyout_price end),
|
||||
Aux.listing_util.money_column('Bid/ea', function(group) return group[1].unit_bid_price end),
|
||||
Aux.listing_util.money_column('Buy/ea', function(group) return group[1].unit_buyout_price end),
|
||||
{
|
||||
title = 'Avail',
|
||||
width = 40,
|
||||
comparator = function(group1, group2) return Aux.util.compare(getn(Aux.util.filter(group1, function(auction) return not auction.gone end)), getn(Aux.util.filter(group2, function(auction) return not auction.gone end)), Aux.util.LT) end,
|
||||
cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
|
||||
cell_setter = function(cell, group)
|
||||
cell.text:SetText(getn(Aux.util.filter(group, function(auction) return not auction.gone end)))
|
||||
end,
|
||||
},
|
||||
{
|
||||
title = 'Lvl',
|
||||
width = 25,
|
||||
comparator = function(group1, group2) return Aux.util.compare(group1[1].level, group2[1].level, Aux.util.GT) end,
|
||||
cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
|
||||
cell_setter = function(cell, group)
|
||||
local level = max(1, group[1].level)
|
||||
local text
|
||||
if level > UnitLevel('player') then
|
||||
text = RED_FONT_COLOR_CODE..level..FONT_COLOR_CODE_CLOSE
|
||||
else
|
||||
text = level
|
||||
end
|
||||
cell.text:SetText(text)
|
||||
end,
|
||||
},
|
||||
{
|
||||
title = 'Status',
|
||||
width = 70,
|
||||
comparator = function(group1, group2) return Aux.util.compare(group1[1].status, group2[1].status, Aux.util.GT) end,
|
||||
cell_initializer = Aux.sheet.default_cell_initializer('CENTER'),
|
||||
cell_setter = function(cell, auction)
|
||||
cell.text:SetText(auction.status)
|
||||
end,
|
||||
},
|
||||
Aux.listing_util.duration_column(function(group) return group[1].duration end),
|
||||
Aux.listing_util.owner_column(function(group) return group[1].owner end),
|
||||
Aux.listing_util.percentage_market_column(function(group) return group[1].item_key end, function(group) return group[1].unit_buyout_price end),
|
||||
end
|
||||
end,
|
||||
selected = function(datum)
|
||||
return Aux.util.any(datum, function(entry) return entry == selected_auction end)
|
||||
end,
|
||||
row_setter = function(row, group)
|
||||
row:SetAlpha(Aux.util.all(group, function(auction) return auction.gone end) and 0.3 or 1)
|
||||
row.itemstring = Aux.info.itemstring(group[1].item_id, group[1].suffix_id, nil, group[1].enchant_id)
|
||||
row.EnhTooltip_info = group[1].EnhTooltip_info
|
||||
end,
|
||||
columns = {
|
||||
{
|
||||
title = 'Auction Item',
|
||||
width = 280,
|
||||
comparator = function(group1, group2) return Aux.util.compare(group1[1].name, group2[1].name, Aux.util.GT) end,
|
||||
cell_initializer = function(cell)
|
||||
local icon = CreateFrame('Button', nil, cell)
|
||||
icon:EnableMouse(false)
|
||||
local icon_texture = icon:CreateTexture(nil, 'BORDER')
|
||||
icon_texture:SetAllPoints(icon)
|
||||
icon.icon_texture = icon_texture
|
||||
local normal_texture = icon:CreateTexture(nil)
|
||||
normal_texture:SetPoint('CENTER', 0, 0)
|
||||
normal_texture:SetWidth(22)
|
||||
normal_texture:SetHeight(22)
|
||||
normal_texture:SetTexture('Interface\\Buttons\\UI-Quickslot2')
|
||||
icon:SetNormalTexture(normal_texture)
|
||||
icon:SetPoint('LEFT', cell)
|
||||
icon:SetWidth(12)
|
||||
icon:SetHeight(12)
|
||||
local text = cell:CreateFontString(nil, 'OVERLAY', 'GameFontHighlightSmall')
|
||||
text:SetPoint('LEFT', icon, 'RIGHT', 1, 0)
|
||||
text:SetPoint('TOPRIGHT', cell)
|
||||
text:SetPoint('BOTTOMRIGHT', cell)
|
||||
text:SetJustifyV('TOP')
|
||||
text:SetJustifyH('LEFT')
|
||||
text:SetTextColor(0.8, 0.8, 0.8)
|
||||
cell.text = text
|
||||
cell.icon = icon
|
||||
end,
|
||||
cell_setter = function(cell, group)
|
||||
cell.icon.icon_texture:SetTexture(Aux.info.item(group[1].item_id).texture)
|
||||
if not group[1].usable then
|
||||
cell.icon.icon_texture:SetVertexColor(1.0, 0.1, 0.1)
|
||||
else
|
||||
cell.icon.icon_texture:SetVertexColor(1.0, 1.0, 1.0)
|
||||
end
|
||||
cell.text:SetText('['..group[1].tooltip[1][1].text..']')
|
||||
local color = ITEM_QUALITY_COLORS[group[1].quality]
|
||||
cell.text:SetTextColor(color.r, color.g, color.b)
|
||||
end,
|
||||
},
|
||||
sort_order = {{ column = 1, order = 'ascending' }, { column = 4, order = 'ascending' }},
|
||||
{
|
||||
title = 'Qty',
|
||||
width = 25,
|
||||
comparator = function(group1, group2) return Aux.util.compare(group1[1].aux_quantity, group2[1].aux_quantity, Aux.util.LT) end,
|
||||
cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
|
||||
cell_setter = function(cell, group)
|
||||
cell.text:SetText(group[1].aux_quantity)
|
||||
end,
|
||||
},
|
||||
Aux.listing_util.money_column('Bid', function(group) return group[1].bid_price end),
|
||||
Aux.listing_util.money_column('Buy', function(group) return group[1].buyout_price end),
|
||||
Aux.listing_util.money_column('Bid/ea', function(group) return group[1].unit_bid_price end),
|
||||
Aux.listing_util.money_column('Buy/ea', function(group) return group[1].unit_buyout_price end),
|
||||
{
|
||||
title = 'Avail',
|
||||
width = 40,
|
||||
comparator = function(group1, group2) return Aux.util.compare(getn(Aux.util.filter(group1, function(auction) return not auction.gone end)), getn(Aux.util.filter(group2, function(auction) return not auction.gone end)), Aux.util.LT) end,
|
||||
cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
|
||||
cell_setter = function(cell, group)
|
||||
cell.text:SetText(getn(Aux.util.filter(group, function(auction) return not auction.gone end)))
|
||||
end,
|
||||
},
|
||||
{
|
||||
title = 'Lvl',
|
||||
width = 25,
|
||||
comparator = function(group1, group2) return Aux.util.compare(group1[1].level, group2[1].level, Aux.util.GT) end,
|
||||
cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
|
||||
cell_setter = function(cell, group)
|
||||
local level = max(1, group[1].level)
|
||||
local text
|
||||
if level > UnitLevel('player') then
|
||||
text = RED_FONT_COLOR_CODE..level..FONT_COLOR_CODE_CLOSE
|
||||
else
|
||||
text = level
|
||||
end
|
||||
cell.text:SetText(text)
|
||||
end,
|
||||
},
|
||||
{
|
||||
title = 'Status',
|
||||
width = 70,
|
||||
comparator = function(group1, group2) return Aux.util.compare(group1[1].status, group2[1].status, Aux.util.GT) end,
|
||||
cell_initializer = Aux.sheet.default_cell_initializer('CENTER'),
|
||||
cell_setter = function(cell, group)
|
||||
cell.text:SetText(group[1].status)
|
||||
end,
|
||||
},
|
||||
Aux.listing_util.duration_column(function(group) return group[1].duration end),
|
||||
Aux.listing_util.owner_column(function(group) return group[1].owner end),
|
||||
Aux.listing_util.percentage_market_column(function(group) return group[1].item_key end, function(group) return group[1].unit_buyout_price end),
|
||||
},
|
||||
sort_order = {{ column = 1, order = 'ascending' }, { column = 4, order = 'ascending' }},
|
||||
}
|
||||
|
||||
private.listings = {
|
||||
favorite_searches = Aux.sheet.create(private.favorite_searches_config),
|
||||
recent_searches = Aux.sheet.create(private.recent_searches_config),
|
||||
[Aux.view.BUYOUT] = Aux.sheet.create(private.views[Aux.view.BUYOUT]),
|
||||
results = Aux.sheet.create(private.results_config),
|
||||
}
|
||||
do
|
||||
local panel = Aux.gui.panel(AuxFilterSearchFrame, '$parentFilters')
|
||||
panel:SetWidth(600)
|
||||
panel:SetHeight(290)
|
||||
panel:SetPoint('TOPLEFT', 5, -70)
|
||||
private.elements[FILTER].filters = panel
|
||||
end
|
||||
do
|
||||
local panel = Aux.gui.panel(AuxFilterSearchFrame)
|
||||
panel:SetWidth(300)
|
||||
panel:SetHeight(290)
|
||||
panel:SetPoint('TOPLEFT', private.elements[FILTER].filters, 'TOPRIGHT', 5, 0)
|
||||
private.elements[FILTER].item_filter = panel
|
||||
end
|
||||
do
|
||||
local btn = Aux.gui.button(AuxFilterSearchFrame, 22)
|
||||
btn:SetPoint('TOPRIGHT', -5, -3)
|
||||
@@ -329,7 +346,7 @@ function public.on_load()
|
||||
do
|
||||
local btn = Aux.gui.button(AuxFilterSearchFrame, 18)
|
||||
btn:SetPoint('TOPLEFT', 10, -40)
|
||||
btn:SetWidth(220)
|
||||
btn:SetWidth(330)
|
||||
btn:SetHeight(24)
|
||||
btn:SetText('Search Results')
|
||||
btn:SetScript('OnClick', function() private.update_tab(RESULTS) end)
|
||||
@@ -338,7 +355,7 @@ function public.on_load()
|
||||
do
|
||||
local btn = Aux.gui.button(AuxFilterSearchFrame, 18)
|
||||
btn:SetPoint('TOPLEFT', private.search_results_button, 'TOPRIGHT', 5, 0)
|
||||
btn:SetWidth(220)
|
||||
btn:SetWidth(330)
|
||||
btn:SetHeight(24)
|
||||
btn:SetText('Saved Searches')
|
||||
btn:SetScript('OnClick', function() private.update_tab(SAVED) end)
|
||||
@@ -347,14 +364,14 @@ function public.on_load()
|
||||
do
|
||||
local btn = Aux.gui.button(AuxFilterSearchFrame, 18)
|
||||
btn:SetPoint('TOPLEFT', private.saved_searches_button, 'TOPRIGHT', 5, 0)
|
||||
btn:SetWidth(220)
|
||||
btn:SetWidth(330)
|
||||
btn:SetHeight(24)
|
||||
btn:SetText('New Filter')
|
||||
btn:SetScript('OnClick', function() private.update_tab(FILTER) end)
|
||||
private.new_filter_button = btn
|
||||
end
|
||||
do
|
||||
local editbox = Aux.gui.editbox(AuxFilterSearchFrameItemFilter)
|
||||
local editbox = Aux.gui.editbox(private.elements[FILTER].item_filter)
|
||||
local function add_item_filter(item_id)
|
||||
local old_filter_string = private.search_box:GetText()
|
||||
old_filter_string = Aux.util.trim(old_filter_string)
|
||||
@@ -395,14 +412,14 @@ function public.on_load()
|
||||
end)
|
||||
end
|
||||
do
|
||||
local btn1 = Aux.gui.button(AuxFilterSearchFrameFilters, 16)
|
||||
local btn1 = Aux.gui.button(private.elements[FILTER].filters, 16)
|
||||
btn1:SetPoint('BOTTOMLEFT', 8, 15)
|
||||
btn1:SetWidth(80)
|
||||
btn1:SetHeight(24)
|
||||
btn1:SetText('Add Filter')
|
||||
btn1:SetScript('OnClick', private.add_filter)
|
||||
|
||||
local btn2 = Aux.gui.button(AuxFilterSearchFrameFilters, 16)
|
||||
local btn2 = Aux.gui.button(private.elements[FILTER].filters, 16)
|
||||
btn2:SetPoint('LEFT', btn1, 'RIGHT', 5, 0)
|
||||
btn2:SetWidth(80)
|
||||
btn2:SetHeight(24)
|
||||
@@ -413,7 +430,7 @@ function public.on_load()
|
||||
public.start_search()
|
||||
end)
|
||||
|
||||
local btn3 = Aux.gui.button(AuxFilterSearchFrameFilters, 16)
|
||||
local btn3 = Aux.gui.button(private.elements[FILTER].filters, 16)
|
||||
btn3:SetPoint('LEFT', btn2, 'RIGHT', 5, 0)
|
||||
btn3:SetWidth(80)
|
||||
btn3:SetHeight(24)
|
||||
@@ -450,7 +467,7 @@ function public.on_load()
|
||||
private.bid_button = btn
|
||||
end
|
||||
do
|
||||
local editbox = Aux.gui.editbox(AuxFilterSearchFrameFilters, '$parentNameInputBox')
|
||||
local editbox = Aux.gui.editbox(private.elements[FILTER].filters, '$parentNameInputBox')
|
||||
editbox:SetPoint('TOPLEFT', 14, -20)
|
||||
editbox:SetWidth(250)
|
||||
editbox:SetScript('OnTabPressed', function()
|
||||
@@ -482,7 +499,7 @@ function public.on_load()
|
||||
label:SetText('Rarity')
|
||||
end
|
||||
do
|
||||
local editbox = Aux.gui.editbox(AuxFilterSearchFrameFilters, '$parentMinLevel')
|
||||
local editbox = Aux.gui.editbox(private.elements[FILTER].filters, '$parentMinLevel')
|
||||
editbox:SetNumeric(true)
|
||||
editbox:SetMaxLetters(2)
|
||||
editbox:SetPoint('TOPLEFT', 14, -140)
|
||||
@@ -506,7 +523,7 @@ function public.on_load()
|
||||
label:SetText('Level Range')
|
||||
end
|
||||
do
|
||||
local editbox = Aux.gui.editbox(AuxFilterSearchFrameFilters, '$parentMaxLevel')
|
||||
local editbox = Aux.gui.editbox(private.elements[FILTER].filters, '$parentMaxLevel')
|
||||
editbox:SetNumeric(true)
|
||||
editbox:SetMaxLetters(2)
|
||||
editbox:SetPoint('TOPLEFT', 54, -140)
|
||||
@@ -535,7 +552,7 @@ function public.on_load()
|
||||
label:SetText('Usable')
|
||||
end
|
||||
do
|
||||
local editbox = Aux.gui.editbox(AuxFilterSearchFrameFilters, '$parentTooltipInputBox1')
|
||||
local editbox = Aux.gui.editbox(private.elements[FILTER].filters, '$parentTooltipInputBox1')
|
||||
editbox:SetPoint('TOPLEFT', 300, -20)
|
||||
editbox:SetWidth(250)
|
||||
editbox:SetScript('OnTabPressed', function()
|
||||
@@ -557,7 +574,7 @@ function public.on_load()
|
||||
label:SetText('Tooltip')
|
||||
end
|
||||
do
|
||||
local editbox = Aux.gui.editbox(AuxFilterSearchFrameFilters, '$parentTooltipInputBox2')
|
||||
local editbox = Aux.gui.editbox(private.elements[FILTER].filters, '$parentTooltipInputBox2')
|
||||
editbox:SetPoint('TOPLEFT', AuxFilterSearchFrameFiltersTooltipInputBox1 , 'BOTTOMLEFT', 0, -3)
|
||||
editbox:SetWidth(250)
|
||||
editbox:SetScript('OnTabPressed', function()
|
||||
@@ -576,7 +593,7 @@ function public.on_load()
|
||||
end)
|
||||
end
|
||||
do
|
||||
local editbox = Aux.gui.editbox(AuxFilterSearchFrameFilters, '$parentTooltipInputBox3')
|
||||
local editbox = Aux.gui.editbox(private.elements[FILTER].filters, '$parentTooltipInputBox3')
|
||||
editbox:SetPoint('TOPLEFT', AuxFilterSearchFrameFiltersTooltipInputBox2 , 'BOTTOMLEFT', 0, -3)
|
||||
editbox:SetWidth(250)
|
||||
editbox:SetScript('OnTabPressed', function()
|
||||
@@ -595,7 +612,7 @@ function public.on_load()
|
||||
end)
|
||||
end
|
||||
do
|
||||
local editbox = Aux.gui.editbox(AuxFilterSearchFrameFilters, '$parentTooltipInputBox4')
|
||||
local editbox = Aux.gui.editbox(private.elements[FILTER].filters, '$parentTooltipInputBox4')
|
||||
editbox:SetPoint('TOPLEFT', AuxFilterSearchFrameFiltersTooltipInputBox3 , 'BOTTOMLEFT', 0, -3)
|
||||
editbox:SetWidth(250)
|
||||
editbox:SetScript('OnTabPressed', function()
|
||||
@@ -618,7 +635,7 @@ function public.on_load()
|
||||
-- CreateFrame('Frame', '$parentCategoryDropDown', AuxFilterSearchFrameFilters, 'UIDropDownMenuTemplate')
|
||||
-- local dropdown = CreateFrame('Frame', '$parentQualityDropDown', AuxFilterSearchFrameFilters, 'UIDropDownMenuTemplate')
|
||||
for _, dropdown in ipairs({AuxFilterSearchFrameFiltersCategoryDropDown, AuxFilterSearchFrameFiltersQualityDropDown}) do
|
||||
dropdown:SetWidth(150)
|
||||
dropdown:SetWidth(250)
|
||||
dropdown:SetHeight(10)
|
||||
dropdown:SetBackdrop({bgFile='Interface\\Buttons\\WHITE8X8', edgeFile='Interface\\Buttons\\WHITE8X8', edgeSize=Aux.gui.config.edge_size, insets={top=5,bottom=5}})
|
||||
dropdown:SetBackdropColor(unpack(Aux.gui.config.content_color))
|
||||
@@ -655,27 +672,19 @@ function private.update_listing()
|
||||
AuxFilterSearchFrameResultsBidListing:Hide()
|
||||
AuxFilterSearchFrameResultsFullListing:Hide()
|
||||
|
||||
if aux_view == Aux.view.BUYOUT then
|
||||
AuxFilterSearchFrameResultsBuyListing:Show()
|
||||
local buyout_auctions = auctions and Aux.util.filter(auctions, function(auction) return auction.owner ~= UnitName('player') and auction.buyout_price end) or {}
|
||||
Aux.sheet.populate(private.listings[Aux.view.BUYOUT], auctions and Aux.util.group_by(buyout_auctions, function(a1, a2)
|
||||
return a1.item_id == a2.item_id
|
||||
and a1.suffix_id == a2.suffix_id
|
||||
and a1.enchant_id == a2.enchant_id
|
||||
and a1.aux_quantity == a2.aux_quantity
|
||||
and a1.buyout_price == a2.buyout_price
|
||||
and a1.bid_price == a2.bid_price
|
||||
and a1.owner == a2.owner
|
||||
end) or {})
|
||||
AuxFilterSearchFrameResults:SetWidth(AuxFilterSearchFrameResultsBuyListing:GetWidth() + 40)
|
||||
AuxFrame:SetWidth(AuxFilterSearchFrameResults:GetWidth() + 15)
|
||||
end
|
||||
end
|
||||
|
||||
function public.set_view(view)
|
||||
private.clear_selection()
|
||||
aux_view = view
|
||||
refresh = true
|
||||
AuxFilterSearchFrameResultsBuyListing:Show()
|
||||
local buyout_auctions = auctions and Aux.util.filter(auctions, function(auction) return auction.owner ~= UnitName('player') and auction.buyout_price end) or {}
|
||||
Aux.sheet.populate(private.listings.results, auctions and Aux.util.group_by(buyout_auctions, function(a1, a2)
|
||||
return a1.item_id == a2.item_id
|
||||
and a1.suffix_id == a2.suffix_id
|
||||
and a1.enchant_id == a2.enchant_id
|
||||
and a1.aux_quantity == a2.aux_quantity
|
||||
and a1.buyout_price == a2.buyout_price
|
||||
and a1.bid_price == a2.bid_price
|
||||
and a1.owner == a2.owner
|
||||
end) or {})
|
||||
AuxFilterSearchFrameResults:SetWidth(AuxFilterSearchFrameResultsBuyListing:GetWidth() + 40)
|
||||
AuxFrame:SetWidth(AuxFilterSearchFrameResults:GetWidth() + 15)
|
||||
end
|
||||
|
||||
function public.start_search()
|
||||
@@ -736,8 +745,11 @@ function public.start_search()
|
||||
private.status_bar:update_status(100 * (page + 1) / total_pages) -- TODO
|
||||
private.status_bar:set_text(format('Scanning (Page %d / %d)', page + 1, total_pages))
|
||||
end,
|
||||
on_page_complete = function()
|
||||
refresh = true
|
||||
end,
|
||||
on_start_query = function(query_index)
|
||||
private.status_bar:update_status(0, 100 * query_index / getn(queries)) -- TODO
|
||||
private.status_bar:update_status(0, 100 * (query_index - 1) / getn(queries)) -- TODO
|
||||
private.status_bar:set_text(format('Processing query %d / %d', query_index, getn(queries)))
|
||||
end,
|
||||
on_read_auction = function(auction_info)
|
||||
@@ -897,7 +909,7 @@ end
|
||||
|
||||
function AuxFilterSearchFrameFiltersCategoryDropDown_Initialize(arg1)
|
||||
local level = arg1 or 1
|
||||
|
||||
|
||||
if level == 1 then
|
||||
local value = {}
|
||||
UIDropDownMenu_AddButton({
|
||||
@@ -905,7 +917,7 @@ function AuxFilterSearchFrameFiltersCategoryDropDown_Initialize(arg1)
|
||||
value = value,
|
||||
func = AuxFilterSearchFrameFiltersCategoryDropDown_OnClick,
|
||||
}, 1)
|
||||
|
||||
|
||||
for i, class in pairs({ GetAuctionItemClasses() }) do
|
||||
local value = { class = i }
|
||||
UIDropDownMenu_AddButton({
|
||||
@@ -916,7 +928,7 @@ function AuxFilterSearchFrameFiltersCategoryDropDown_Initialize(arg1)
|
||||
}, 1)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
if level == 2 then
|
||||
local menu_value = UIDROPDOWNMENU_MENU_VALUE
|
||||
for i, subclass in pairs({ GetAuctionItemSubClasses(menu_value.class) }) do
|
||||
@@ -929,7 +941,7 @@ function AuxFilterSearchFrameFiltersCategoryDropDown_Initialize(arg1)
|
||||
}, 2)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
if level == 3 then
|
||||
local menu_value = UIDROPDOWNMENU_MENU_VALUE
|
||||
for i, slot in pairs({ GetAuctionInvTypes(menu_value.class, menu_value.subclass) }) do
|
||||
|
||||
@@ -44,12 +44,12 @@
|
||||
<Size><AbsDimension x="22" y="22"/></Size>
|
||||
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="87" y="-136" /></Offset></Anchor></Anchors>
|
||||
</CheckButton>
|
||||
<CheckButton name="$parentExactCheckButton" inherits="UICheckButtonTemplate">
|
||||
<Size><AbsDimension x="22" y="22"/></Size>
|
||||
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="120" y="-136" /></Offset></Anchor></Anchors>
|
||||
</CheckButton>
|
||||
</Frames>
|
||||
</Frame>
|
||||
<Frame name="$parentItemFilter" inherits="AuxFrameBoxTemplate">
|
||||
<Size><AbsDimension x="300" y="326"/></Size>
|
||||
<Anchors><Anchor point="LEFT" relativePoint="RIGHT" relativeTo="$parentFilters"><Offset><AbsDimension x="5" y="0"/></Offset></Anchor></Anchors>
|
||||
</Frame>
|
||||
<Frame name="$parentResults" inherits="AuxFrameBoxTemplate">
|
||||
<Size>
|
||||
<AbsDimension x="655" y="300"/>
|
||||
|
||||
+7
-1
@@ -11,4 +11,10 @@ function m.parse_item_key(item_key)
|
||||
return tonumber(item_id), suffix_id == '' and 0 or tonumber(suffix_id)
|
||||
end
|
||||
|
||||
m.test_group = '13127;9510;4438;16254;12006;13131;13012;4413;1482'
|
||||
m.test_group = '13127;9510;4438;16254;12006;13131;13012;4413;1482'
|
||||
|
||||
|
||||
function m.test()
|
||||
local array = Aux.persistence.deserialize(';', ';')
|
||||
snipe.log(getn(array))
|
||||
end
|
||||
@@ -16,8 +16,8 @@ m.config = {
|
||||
|
||||
}
|
||||
|
||||
function m.panel(parent)
|
||||
local panel = CreateFrame('Frame', parent)
|
||||
function m.panel(parent, name)
|
||||
local panel = CreateFrame('Frame', name, parent)
|
||||
panel:SetBackdrop({bgFile='Interface\\Buttons\\WHITE8X8', edgeFile='Interface\\Buttons\\WHITE8X8', edgeSize=m.config.edge_size})
|
||||
panel:SetBackdropColor(unpack(m.config.frame_color))
|
||||
panel:SetBackdropBorderColor(unpack(m.config.frame_border_color))
|
||||
|
||||
@@ -93,7 +93,7 @@ function public.auction(index, type)
|
||||
hyperlink = hyperlink,
|
||||
itemstring = item_info.itemstring,
|
||||
item_key = item_id..':'..suffix_id,
|
||||
signature = Aux.persistence.serialize({item_id, suffix_id, unique_id, enchant_id, aux_quantity, start_price, buyout_price}, ':'), -- not unique!
|
||||
signature = Aux.util.join({item_id, suffix_id, unique_id, enchant_id, aux_quantity, start_price, buyout_price}, ':'), -- not unique!
|
||||
|
||||
name = name,
|
||||
texture = texture,
|
||||
|
||||
+85
-84
@@ -87,96 +87,94 @@ function public.on_load()
|
||||
},
|
||||
sort_order = {},
|
||||
}
|
||||
private.views = {
|
||||
[Aux.view.BUYOUT] = {
|
||||
frame = AuxItemSearchFrameAuctionsBuyListing,
|
||||
on_row_click = function(sheet, row_index)
|
||||
local data_index = row_index + FauxScrollFrame_GetOffset(sheet.scroll_frame)
|
||||
private.on_row_click(sheet.data[data_index], true)
|
||||
end,
|
||||
on_row_enter = function(sheet, row_index)
|
||||
Aux.info.set_tooltip(sheet.rows[row_index].itemstring, sheet.rows[row_index].EnhTooltip_info, this, 'ANCHOR_RIGHT', 0, 0)
|
||||
end,
|
||||
on_row_leave = function(sheet, row_index)
|
||||
AuxTooltip:Hide()
|
||||
private.results_config = {
|
||||
frame = AuxItemSearchFrameAuctionsBuyListing,
|
||||
on_row_click = function(sheet, row_index)
|
||||
local data_index = row_index + FauxScrollFrame_GetOffset(sheet.scroll_frame)
|
||||
private.on_row_click(sheet.data[data_index], true)
|
||||
end,
|
||||
on_row_enter = function(sheet, row_index)
|
||||
Aux.info.set_tooltip(sheet.rows[row_index].itemstring, sheet.rows[row_index].EnhTooltip_info, this, 'ANCHOR_RIGHT', 0, 0)
|
||||
end,
|
||||
on_row_leave = function(sheet, row_index)
|
||||
AuxTooltip:Hide()
|
||||
ResetCursor()
|
||||
end,
|
||||
on_row_update = function(sheet, row_index)
|
||||
if IsControlKeyDown() then
|
||||
ShowInspectCursor()
|
||||
elseif IsAltKeyDown() then
|
||||
SetCursor('BUY_CURSOR')
|
||||
else
|
||||
ResetCursor()
|
||||
end,
|
||||
on_row_update = function(sheet, row_index)
|
||||
if IsControlKeyDown() then
|
||||
ShowInspectCursor()
|
||||
elseif IsAltKeyDown() then
|
||||
SetCursor('BUY_CURSOR')
|
||||
else
|
||||
ResetCursor()
|
||||
end
|
||||
end,
|
||||
selected = function(datum)
|
||||
return Aux.util.any(datum, function(entry) return entry == selected_auction end)
|
||||
end,
|
||||
row_setter = function(row, group)
|
||||
row:SetAlpha(Aux.util.all(group, function(auction) return auction.gone end) and 0.3 or 1)
|
||||
row.itemstring = Aux.info.itemstring(group[1].item_id, group[1].suffix_id, nil, group[1].enchant_id)
|
||||
row.EnhTooltip_info = group[1].EnhTooltip_info
|
||||
end,
|
||||
columns = {
|
||||
{
|
||||
title = 'Qty',
|
||||
width = 25,
|
||||
comparator = function(group1, group2) return Aux.util.compare(group1[1].aux_quantity, group2[1].aux_quantity, Aux.util.LT) end,
|
||||
cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
|
||||
cell_setter = function(cell, group)
|
||||
cell.text:SetText(group[1].aux_quantity)
|
||||
end,
|
||||
},
|
||||
Aux.listing_util.money_column('Bid', function(group) return group[1].bid_price end),
|
||||
Aux.listing_util.money_column('Buy', function(group) return group[1].buyout_price end),
|
||||
Aux.listing_util.money_column('Bid/ea', function(group) return group[1].unit_bid_price end),
|
||||
Aux.listing_util.money_column('Buy/ea', function(group) return group[1].unit_buyout_price end),
|
||||
{
|
||||
title = 'Lvl',
|
||||
width = 25,
|
||||
comparator = function(group1, group2) return Aux.util.compare(group1[1].level, group2[1].level, Aux.util.GT) end,
|
||||
cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
|
||||
cell_setter = function(cell, group)
|
||||
local level = max(1, group[1].level)
|
||||
local text
|
||||
if level > UnitLevel('player') then
|
||||
text = RED_FONT_COLOR_CODE..level..FONT_COLOR_CODE_CLOSE
|
||||
else
|
||||
text = level
|
||||
end
|
||||
cell.text:SetText(text)
|
||||
end,
|
||||
},
|
||||
{
|
||||
title = 'Status',
|
||||
width = 70,
|
||||
comparator = function(group1, group2) return Aux.util.compare(group1[1].status, group2[1].status, Aux.util.GT) end,
|
||||
cell_initializer = Aux.sheet.default_cell_initializer('CENTER'),
|
||||
cell_setter = function(cell, auction)
|
||||
cell.text:SetText(auction.status)
|
||||
end,
|
||||
},
|
||||
Aux.listing_util.duration_column(function(group) return group[1].duration end),
|
||||
Aux.listing_util.owner_column(function(group) return group[1].owner end),
|
||||
{
|
||||
title = 'Avail',
|
||||
width = 40,
|
||||
comparator = function(group1, group2) return Aux.util.compare(getn(Aux.util.filter(group1, function(auction) return not auction.gone end)), getn(Aux.util.filter(group2, function(auction) return not auction.gone end)), Aux.util.LT) end,
|
||||
cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
|
||||
cell_setter = function(cell, group)
|
||||
cell.text:SetText(getn(Aux.util.filter(group, function(auction) return not auction.gone end)))
|
||||
end,
|
||||
},
|
||||
Aux.listing_util.percentage_market_column(function(group) return group[1].item_key end, function(group) return group[1].unit_buyout_price end),
|
||||
end
|
||||
end,
|
||||
selected = function(datum)
|
||||
return Aux.util.any(datum, function(entry) return entry == selected_auction end)
|
||||
end,
|
||||
row_setter = function(row, group)
|
||||
row:SetAlpha(Aux.util.all(group, function(auction) return auction.gone end) and 0.3 or 1)
|
||||
row.itemstring = Aux.info.itemstring(group[1].item_id, group[1].suffix_id, nil, group[1].enchant_id)
|
||||
row.EnhTooltip_info = group[1].EnhTooltip_info
|
||||
end,
|
||||
columns = {
|
||||
{
|
||||
title = 'Qty',
|
||||
width = 25,
|
||||
comparator = function(group1, group2) return Aux.util.compare(group1[1].aux_quantity, group2[1].aux_quantity, Aux.util.LT) end,
|
||||
cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
|
||||
cell_setter = function(cell, group)
|
||||
cell.text:SetText(group[1].aux_quantity)
|
||||
end,
|
||||
},
|
||||
sort_order = {{column = 3, order = 'ascending' }},
|
||||
Aux.listing_util.money_column('Bid', function(group) return group[1].bid_price end),
|
||||
Aux.listing_util.money_column('Buy', function(group) return group[1].buyout_price end),
|
||||
Aux.listing_util.money_column('Bid/ea', function(group) return group[1].unit_bid_price end),
|
||||
Aux.listing_util.money_column('Buy/ea', function(group) return group[1].unit_buyout_price end),
|
||||
{
|
||||
title = 'Lvl',
|
||||
width = 25,
|
||||
comparator = function(group1, group2) return Aux.util.compare(group1[1].level, group2[1].level, Aux.util.GT) end,
|
||||
cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
|
||||
cell_setter = function(cell, group)
|
||||
local level = max(1, group[1].level)
|
||||
local text
|
||||
if level > UnitLevel('player') then
|
||||
text = RED_FONT_COLOR_CODE..level..FONT_COLOR_CODE_CLOSE
|
||||
else
|
||||
text = level
|
||||
end
|
||||
cell.text:SetText(text)
|
||||
end,
|
||||
},
|
||||
{
|
||||
title = 'Status',
|
||||
width = 70,
|
||||
comparator = function(group1, group2) return Aux.util.compare(group1[1].status, group2[1].status, Aux.util.GT) end,
|
||||
cell_initializer = Aux.sheet.default_cell_initializer('CENTER'),
|
||||
cell_setter = function(cell, group)
|
||||
cell.text:SetText(group[1].status)
|
||||
end,
|
||||
},
|
||||
Aux.listing_util.duration_column(function(group) return group[1].duration end),
|
||||
Aux.listing_util.owner_column(function(group) return group[1].owner end),
|
||||
{
|
||||
title = 'Avail',
|
||||
width = 40,
|
||||
comparator = function(group1, group2) return Aux.util.compare(getn(Aux.util.filter(group1, function(auction) return not auction.gone end)), getn(Aux.util.filter(group2, function(auction) return not auction.gone end)), Aux.util.LT) end,
|
||||
cell_initializer = Aux.sheet.default_cell_initializer('RIGHT'),
|
||||
cell_setter = function(cell, group)
|
||||
cell.text:SetText(getn(Aux.util.filter(group, function(auction) return not auction.gone end)))
|
||||
end,
|
||||
},
|
||||
Aux.listing_util.percentage_market_column(function(group) return group[1].item_key end, function(group) return group[1].unit_buyout_price end),
|
||||
},
|
||||
sort_order = {{column = 3, order = 'ascending' }},
|
||||
}
|
||||
|
||||
private.listings = {
|
||||
recently_searched = Aux.sheet.create(private.recently_searched_config),
|
||||
[Aux.view.BUYOUT] = Aux.sheet.create(private.views[Aux.view.BUYOUT]),
|
||||
results = Aux.sheet.create(private.results_config),
|
||||
}
|
||||
do
|
||||
local btn = Aux.gui.button(AuxItemSearchFrameItem, 16, '$parentRefreshButton')
|
||||
@@ -276,7 +274,7 @@ function private.update_listing()
|
||||
|
||||
AuxItemSearchFrameAuctionsBuyListing:Show()
|
||||
local buy_records = auctions and Aux.util.filter(auctions, function(auction) return auction.owner ~= UnitName('player') and auction.buyout_price end) or {}
|
||||
Aux.sheet.populate(private.listings[Aux.view.BUYOUT], auctions and Aux.util.group_by(buy_records, function(a1, a2)
|
||||
Aux.sheet.populate(private.listings.results, auctions and Aux.util.group_by(buy_records, function(a1, a2)
|
||||
return a1.item_id == a2.item_id
|
||||
and a1.suffix_id == a2.suffix_id
|
||||
and a1.enchant_id == a2.enchant_id
|
||||
@@ -357,6 +355,9 @@ function public.start_search()
|
||||
private.status_bar:update_status(100 * (page + 1) / total_pages, 100 * (page + 1) / total_pages) -- TODO
|
||||
private.status_bar:set_text(format('Scanning (Page %d / %d)', page + 1, total_pages))
|
||||
end,
|
||||
on_page_complete = function()
|
||||
refresh = true
|
||||
end,
|
||||
on_read_auction = function(auction_info)
|
||||
auctions = auctions or {}
|
||||
tinsert(auctions, private.create_auction_record(auction_info))
|
||||
|
||||
@@ -37,7 +37,7 @@ function m.to_string(money, pad, trim, color, no_color)
|
||||
if copper > 0 then
|
||||
tinsert(parts, private:format_number(copper, pad, color)..copper_text)
|
||||
end
|
||||
text = Aux.persistence.serialize(parts, ' ')
|
||||
text = Aux.util.join(parts, ' ')
|
||||
else
|
||||
if gold > 0 then
|
||||
text = m.format_number(gold, false, color)..gold_text..' '..m.format_number(silver, pad, color)..silver_text..' '..m.format_number(copper, pad, color)..copper_text
|
||||
|
||||
@@ -147,17 +147,19 @@ function private.process_query()
|
||||
|
||||
scan_auctions(count, function()
|
||||
|
||||
if current_query().next_page then
|
||||
state.page = current_query().next_page(state.page, state.total_pages)
|
||||
else
|
||||
state.page = private.default_next_page(state.page, state.total_pages)
|
||||
end
|
||||
wait_for_callback{state.params.on_page_complete or Aux.util.pass, function()
|
||||
if current_query().next_page then
|
||||
state.page = current_query().next_page(state.page, state.total_pages)
|
||||
else
|
||||
state.page = private.default_next_page(state.page, state.total_pages)
|
||||
end
|
||||
|
||||
if state.page then
|
||||
return private.process_query()
|
||||
else
|
||||
return private.scan()
|
||||
end
|
||||
if state.page then
|
||||
return private.process_query()
|
||||
else
|
||||
return private.scan()
|
||||
end
|
||||
end}
|
||||
end)
|
||||
end)
|
||||
end
|
||||
|
||||
+31
-19
@@ -82,34 +82,34 @@ function m.create_item_query(item_id)
|
||||
end
|
||||
|
||||
function m.parse_filter_string(filter_string)
|
||||
local parts = Aux.persistence.deserialize(filter_string, ';')
|
||||
local parts = Aux.util.split(filter_string, ';')
|
||||
|
||||
local filters = {}
|
||||
for _, str in ipairs(parts) do
|
||||
str = Aux.util.trim(str)
|
||||
if tonumber(str) then
|
||||
local filter = m.create_item_filter(tonumber(str))
|
||||
if filter then
|
||||
tinsert(filters, filter)
|
||||
end
|
||||
-- if tonumber(str) then
|
||||
-- local filter = m.create_item_filter(tonumber(str))
|
||||
-- if filter then
|
||||
-- tinsert(filters, filter)
|
||||
-- end
|
||||
-- else
|
||||
local filter, error = m.filter_from_string(str)
|
||||
|
||||
if not filter then
|
||||
Aux.log('Invalid filter: '..error)
|
||||
elseif filter.name and strlen(filter.name) > 63 then
|
||||
|
||||
else
|
||||
local filter, error = m.filter_from_string(str)
|
||||
|
||||
if not filter then
|
||||
Aux.log('Invalid filter: '..error)
|
||||
elseif filter.name and strlen(filter.name) > 63 then
|
||||
|
||||
else
|
||||
tinsert(filters, filter)
|
||||
end
|
||||
tinsert(filters, filter)
|
||||
end
|
||||
-- end
|
||||
end
|
||||
|
||||
return filters
|
||||
end
|
||||
|
||||
function m.filter_from_string(filter_term)
|
||||
local parts = Aux.persistence.deserialize(filter_term, '/')
|
||||
local parts = Aux.util.split(filter_term, '/')
|
||||
|
||||
local filter = {}
|
||||
for i, str in ipairs(parts) do
|
||||
@@ -127,13 +127,13 @@ function m.filter_from_string(filter_term)
|
||||
if not filter.class then
|
||||
filter.class = Aux.item_class_index(str)
|
||||
else
|
||||
return false, 'Invalid Item Type'
|
||||
return false, 'Invalid Item Class'
|
||||
end
|
||||
elseif filter.class and Aux.item_subclass_index(filter.class, str) then
|
||||
if not filter.subclass then
|
||||
filter.subclass = Aux.item_subclass_index(filter.class, str)
|
||||
else
|
||||
return false, 'Invalid Item SubType'
|
||||
return false, 'Invalid Item Subclass'
|
||||
end
|
||||
elseif Aux.item_quality_index(str) then
|
||||
if not filter.quality then
|
||||
@@ -168,6 +168,18 @@ function m.filter_from_string(filter_term)
|
||||
end
|
||||
end
|
||||
|
||||
if filter.exact_only then
|
||||
if filter.min_level or filter.max_level or filter.class or filter.subclass or filter.quality or filter.usable_only then
|
||||
return false, 'Invalid Exact Only Filter'
|
||||
end
|
||||
for id, info in pairs(Aux.static.auctionable_items) do
|
||||
if info.name == filter.name then
|
||||
return m.create_item_filter(id)
|
||||
end
|
||||
end
|
||||
return false, 'Invalid Exact Only Filter'
|
||||
end
|
||||
|
||||
if filter.max_level then
|
||||
filter.min_level, filter.max_level = min(filter.min_level, filter.max_level), max(filter.min_level, filter.max_level)
|
||||
end
|
||||
@@ -195,7 +207,7 @@ function m.filter_to_string(filter)
|
||||
end
|
||||
|
||||
if filter.quality then
|
||||
filter_term = format('%s/%s', filter_term, _G["ITEM_QUALITY"..filter.quality.."_DESC"])
|
||||
filter_term = format('%s/%s', filter_term, getglobal['ITEM_QUALITY'..filter.quality..'_DESC'])
|
||||
end
|
||||
|
||||
if filter.usable_only then
|
||||
|
||||
@@ -344,3 +344,32 @@ function Aux.util.set()
|
||||
|
||||
return self
|
||||
end
|
||||
|
||||
function public.join(array, separator)
|
||||
local str = ''
|
||||
for i, element in ipairs(array) do
|
||||
if i > 1 then
|
||||
str = str..separator
|
||||
end
|
||||
str = str..element
|
||||
end
|
||||
return str
|
||||
end
|
||||
|
||||
function public.split(str, separator)
|
||||
|
||||
local array = {}
|
||||
while true do
|
||||
local start_index, _ = strfind(str, separator, 1, true)
|
||||
|
||||
if start_index then
|
||||
local part = string.sub(str, 1, start_index - 1)
|
||||
tinsert(array, part)
|
||||
str = string.sub(str, start_index + 1, strlen(str))
|
||||
else
|
||||
local part = string.sub(str, 1, strlen(str))
|
||||
tinsert(array, part)
|
||||
return array
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user