some progress on the filter tab, various changes

This commit is contained in:
Manuel Simon Hirsig
2016-01-30 01:20:18 +01:00
parent 006b7a0582
commit 53935e9363
11 changed files with 366 additions and 292 deletions
+85 -84
View File
@@ -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))