find improvement

This commit is contained in:
Manuel Simon Hirsig
2016-03-22 16:57:43 +01:00
parent 345a07dae6
commit 8fdab2ed13
4 changed files with 68 additions and 50 deletions
+1 -1
View File
@@ -876,7 +876,7 @@ function private.refresh_entries()
existing_auctions[item_key] = nil existing_auctions[item_key] = nil
local query = Aux.scan_util.create_item_query(item_id) local query = Aux.scan_util.item_query(item_id)
private.status_bar:update_status(0,0) private.status_bar:update_status(0,0)
private.status_bar:set_text('Scanning auctions...') private.status_bar:set_text('Scanning auctions...')
+5 -4
View File
@@ -192,7 +192,7 @@ function private.scan_auctions_helper(i, n, k)
if auction_info then if auction_info then
auction_info.index = i auction_info.index = i
auction_info.page = private.current_thread().page auction_info.page = private.current_thread().page
auction_info.query = private.current_query() auction_info.blizzard_query = private.current_query().blizzard_query
auction_info.query_type = private.current_thread().params.type auction_info.query_type = private.current_thread().params.type
Aux.history.process_auction(auction_info) Aux.history.process_auction(auction_info)
@@ -206,7 +206,7 @@ function private.scan_auctions_helper(i, n, k)
end end
function private.submit_query(k) function private.submit_query(k)
if private.current_thread().page then if private.current_thread().blizzard_query then
Aux.control.wait_until(function() return private.current_thread().params.type ~= 'list' or CanSendAuctionQuery() end, function() Aux.control.wait_until(function() return private.current_thread().params.type ~= 'list' or CanSendAuctionQuery() end, function()
if private.current_thread().params.on_submit_query then if private.current_thread().params.on_submit_query then
@@ -241,7 +241,8 @@ function private.submit_query(k)
end end
end) end)
end) end)
else else
return k() private.current_thread().total_pages = 0
return k()
end end
end end
+53 -45
View File
@@ -31,7 +31,7 @@ m.filters = {
if str then if str then
return m.default_filter(str).test() return m.default_filter(str).test()
else else
return false, {}, 'Erroneous Tooltip Modifier' return false, {}, 'Erroneous tooltip modifier'
end end
end, end,
}, },
@@ -40,7 +40,7 @@ m.filters = {
arity = 1, arity = 1,
test = function(name) test = function(name)
if not name then if not name then
return false, aux_auctionable_items, 'Erroneous Item Modifier' return false, aux_auctionable_items, 'Erroneous item modifier'
end end
return function(auction_record) return function(auction_record)
@@ -53,7 +53,7 @@ m.filters = {
arity = 1, arity = 1,
test = function(duration) test = function(duration)
if not duration then if not duration then
return false, {'30m', '2h', '8h', '24h'}, 'Erroneous Time Left Modifier' return false, {'30m', '2h', '8h', '24h'}, 'Erroneous time left modifier'
end end
local code = ({ local code = ({
@@ -64,7 +64,7 @@ m.filters = {
})[duration or ''] })[duration or '']
if not code then if not code then
return false, {}, 'Erroneous Time Left Modifier' return false, {}, 'Erroneous time left modifier'
end end
return function(auction_record) return function(auction_record)
@@ -77,7 +77,7 @@ m.filters = {
arity = 1, arity = 1,
test = function(rarity) test = function(rarity)
if not rarity then if not rarity then
return false, {'poor', 'common', 'uncommon', 'rare', 'epic'}, 'Erroneous Time Left Modifier' return false, {'poor', 'common', 'uncommon', 'rare', 'epic'}, 'Erroneous rarity modifier'
end end
local code = ({ local code = ({
@@ -88,7 +88,7 @@ m.filters = {
['epic'] = 5, ['epic'] = 5,
})[rarity or ''] })[rarity or '']
if not code then if not code then
return false, {}, 'Erroneous Time Left Modifier' return false, {}, 'Erroneous rarity modifier'
end end
return function(auction_record) return function(auction_record)
@@ -106,7 +106,7 @@ m.filters = {
return auction_record.level >= level return auction_record.level >= level
end end
else else
return false, {}, 'Erroneous Min Level Modifier' return false, {}, 'Erroneous min level modifier'
end end
end end
}, },
@@ -120,7 +120,7 @@ m.filters = {
return auction_record.level <= level return auction_record.level <= level
end end
else else
return false, {}, 'Erroneous Max Level Modifier' return false, {}, 'Erroneous max level modifier'
end end
end end
}, },
@@ -134,7 +134,7 @@ m.filters = {
return auction_record.unit_bid_price >= amount return auction_record.unit_bid_price >= amount
end end
else else
return false, {}, 'Erroneous Min Bid Modifier' return false, {}, 'Erroneous min bid modifier'
end end
end end
}, },
@@ -148,7 +148,7 @@ m.filters = {
return auction_record.unit_buyout_price >= amount return auction_record.unit_buyout_price >= amount
end end
else else
return false, {}, 'Erroneous Min Buyout Modifier' return false, {}, 'Erroneous min buyout modifier'
end end
end end
}, },
@@ -162,7 +162,7 @@ m.filters = {
return auction_record.unit_bid_price <= amount return auction_record.unit_bid_price <= amount
end end
else else
return false, {}, 'Erroneous Max Bid Modifier' return false, {}, 'Erroneous max bid modifier'
end end
end end
}, },
@@ -176,7 +176,7 @@ m.filters = {
return auction_record.buyout_price > 0 and auction_record.unit_buyout_price <= amount return auction_record.buyout_price > 0 and auction_record.unit_buyout_price <= amount
end end
else else
return false, {}, 'Erroneous Max Buyout Modifier' return false, {}, 'Erroneous max buyout modifier'
end end
end end
}, },
@@ -192,7 +192,7 @@ m.filters = {
and auction_record.unit_buyout_price / Aux.history.value(auction_record.item_key) * 100 <= pct and auction_record.unit_buyout_price / Aux.history.value(auction_record.item_key) * 100 <= pct
end end
else else
return false, {}, 'Erroneous Bid Percentage Modifier' return false, {}, 'Erroneous bid percentage modifier'
end end
end end
}, },
@@ -208,7 +208,7 @@ m.filters = {
and auction_record.unit_buyout_price / Aux.history.value(auction_record.item_key) * 100 <= pct and auction_record.unit_buyout_price / Aux.history.value(auction_record.item_key) * 100 <= pct
end end
else else
return false, {}, 'Erroneous Buyout Percentage Modifier' return false, {}, 'Erroneous buyout percentage modifier'
end end
end end
}, },
@@ -222,7 +222,7 @@ m.filters = {
return Aux.history.value(auction_record.item_key) and Aux.history.value(auction_record.item_key) * auction_record.aux_quantity - auction_record.bid_price >= amount return Aux.history.value(auction_record.item_key) and Aux.history.value(auction_record.item_key) * auction_record.aux_quantity - auction_record.bid_price >= amount
end end
else else
return false, {}, 'Erroneous Bid Profit Modifier' return false, {}, 'Erroneous bid profit modifier'
end end
end end
}, },
@@ -236,7 +236,7 @@ m.filters = {
return auction_record.buyout_price > 0 and Aux.history.value(auction_record.item_key) and Aux.history.value(auction_record.item_key) * auction_record.aux_quantity - auction_record.buyout_price >= amount return auction_record.buyout_price > 0 and Aux.history.value(auction_record.item_key) and Aux.history.value(auction_record.item_key) * auction_record.aux_quantity - auction_record.buyout_price >= amount
end end
else else
return false, {}, 'Erroneous Buyout Profit Modifier' return false, {}, 'Erroneous buyout profit modifier'
end end
end end
}, },
@@ -251,7 +251,7 @@ m.filters = {
return disenchant_value and disenchant_value - auction_record.bid_price >= amount return disenchant_value and disenchant_value - auction_record.bid_price >= amount
end end
else else
return false, {}, 'Erroneous Bid Disenchant Profit Modifier' return false, {}, 'Erroneous bid disenchant profit modifier'
end end
end end
}, },
@@ -266,7 +266,7 @@ m.filters = {
return auction_record.buyout_price > 0 and disenchant_value and disenchant_value - auction_record.buyout_price >= amount return auction_record.buyout_price > 0 and disenchant_value and disenchant_value - auction_record.buyout_price >= amount
end end
else else
return false, {}, 'Erroneous Buyout Disenchant Profit Modifier' return false, {}, 'Erroneous buyout disenchant profit modifier'
end end
end end
}, },
@@ -281,7 +281,7 @@ m.filters = {
return vendor_price and vendor_price * auction_record.aux_quantity - auction_record.bid_price >= amount return vendor_price and vendor_price * auction_record.aux_quantity - auction_record.bid_price >= amount
end end
else else
return false, {}, 'Erroneous Bid Vendor Profit Modifier' return false, {}, 'Erroneous bid vendor profit Modifier'
end end
end end
}, },
@@ -296,7 +296,7 @@ m.filters = {
return auction_record.buyout_price > 0 and vendor_price and vendor_price * auction_record.aux_quantity - auction_record.buyout_price >= amount return auction_record.buyout_price > 0 and vendor_price and vendor_price * auction_record.aux_quantity - auction_record.buyout_price >= amount
end end
else else
return false, {}, 'Erroneous Buyout Vendor Profit Modifier' return false, {}, 'Erroneous buyout vendor profit Modifier'
end end
end end
}, },
@@ -318,23 +318,30 @@ function m.find(auction_record, status_bar, on_abort, on_failure, on_success)
local pages = auction_record.page > 0 and { auction_record.page, auction_record.page - 1 } or { auction_record.page } local pages = auction_record.page > 0 and { auction_record.page, auction_record.page - 1 } or { auction_record.page }
local query = { local queries = {}
validator = function(auction_info) return test(auction_info.index) end, tinsert(queries, {})
blizzard_query = auction_record.query.blizzard_query, if auction_record.blizzard_query then
next_page = function() tinsert(queries, {
if getn(pages) == 1 then blizzard_query = auction_record.blizzard_query,
status_bar:update_status(50, 50) next_page = function()
end if getn(pages) == 1 then
local page = pages[1] status_bar:update_status(50, 50)
tremove(pages, 1) end
return page local page = pages[1]
end, tremove(pages, 1)
} return page
end,
})
local item_query = m.item_query(auction_record.item_id, 0, true)
if not Aux.util.table_eq(auction_record.blizzard_query, item_query.blizzard_query) then
tinsert(queries, item_query)
end
end
local found local found
Aux.scan.start{ Aux.scan.start{
type = auction_record.query_type, type = auction_record.query_type,
queries = { query }, queries = queries,
on_scan_start = function() on_scan_start = function()
status_bar:update_status(0, 0) status_bar:update_status(0, 0)
status_bar:set_text('Searching auction...') status_bar:set_text('Searching auction...')
@@ -380,14 +387,15 @@ function m.filter_builder()
} }
end end
function m.create_item_query(item_id) function m.item_query(item_id, page, single_page)
local item_info = Aux.info.item(item_id) local item_info = Aux.info.item(item_id)
if item_info then if item_info then
local filter = m.filter_from_string(item_info.name..'/exact') local filter = m.filter_from_string(item_info.name..'/exact')
return { return {
start_page = 0, start_page = page or 0,
next_page = single_page and Aux.util.pass,
validator = filter.validator, validator = filter.validator,
blizzard_query = filter.blizzard_query, blizzard_query = filter.blizzard_query,
} }
@@ -480,48 +488,48 @@ function m.filter_from_string(filter_term)
blizzard_filter.max_level = tonumber(str) blizzard_filter.max_level = tonumber(str)
prettified:append(Aux.gui.inline_color({216, 225, 211, 1})..str..'|r') prettified:append(Aux.gui.inline_color({216, 225, 211, 1})..str..'|r')
else else
return false, {}, 'Erroneous Level Range Modifier' return false, {}, 'Erroneous level range modifier'
end end
elseif Aux.item_class_index(str) and not (blizzard_filter.class and not blizzard_filter.subclass and str == strlower(({ GetAuctionItemClasses() })[10])) then elseif Aux.item_class_index(str) and not (blizzard_filter.class and not blizzard_filter.subclass and str == strlower(({ GetAuctionItemClasses() })[10])) then
if not blizzard_filter.class then if not blizzard_filter.class then
blizzard_filter.class = Aux.item_class_index(str) blizzard_filter.class = Aux.item_class_index(str)
prettified:append(Aux.gui.inline_color({216, 225, 211, 1})..str..'|r') prettified:append(Aux.gui.inline_color({216, 225, 211, 1})..str..'|r')
else else
return false, {}, 'Erroneous Item Class Modifier' return false, {}, 'Erroneous item class modifier'
end end
elseif blizzard_filter.class and Aux.item_subclass_index(blizzard_filter.class, str) then elseif blizzard_filter.class and Aux.item_subclass_index(blizzard_filter.class, str) then
if not blizzard_filter.subclass then if not blizzard_filter.subclass then
blizzard_filter.subclass = Aux.item_subclass_index(blizzard_filter.class, str) blizzard_filter.subclass = Aux.item_subclass_index(blizzard_filter.class, str)
prettified:append(Aux.gui.inline_color({216, 225, 211, 1})..str..'|r') prettified:append(Aux.gui.inline_color({216, 225, 211, 1})..str..'|r')
else else
return false, {}, 'Erroneous Item Subclass Modifier' return false, {}, 'Erroneous item subclass modifier'
end end
elseif blizzard_filter.subclass and Aux.item_slot_index(blizzard_filter.class, blizzard_filter.subclass, str) then elseif blizzard_filter.subclass and Aux.item_slot_index(blizzard_filter.class, blizzard_filter.subclass, str) then
if not blizzard_filter.slot then if not blizzard_filter.slot then
blizzard_filter.slot = Aux.item_slot_index(blizzard_filter.class, blizzard_filter.subclass, str) blizzard_filter.slot = Aux.item_slot_index(blizzard_filter.class, blizzard_filter.subclass, str)
prettified:append(Aux.gui.inline_color({216, 225, 211, 1})..str..'|r') prettified:append(Aux.gui.inline_color({216, 225, 211, 1})..str..'|r')
else else
return false, {}, 'Erroneous Item Slot Modifier' return false, {}, 'Erroneous item slot modifier'
end end
elseif Aux.item_quality_index(str) then elseif Aux.item_quality_index(str) then
if not blizzard_filter.quality then if not blizzard_filter.quality then
blizzard_filter.quality = Aux.item_quality_index(str) blizzard_filter.quality = Aux.item_quality_index(str)
prettified:append(Aux.gui.inline_color({216, 225, 211, 1})..str..'|r') prettified:append(Aux.gui.inline_color({216, 225, 211, 1})..str..'|r')
else else
return false, {}, 'Erroneous Rarity Modifier' return false, {}, 'Erroneous rarity modifier'
end end
elseif str == 'usable' then elseif str == 'usable' then
if not blizzard_filter.usable then if not blizzard_filter.usable then
blizzard_filter.usable = true blizzard_filter.usable = true
prettified:append(Aux.gui.inline_color({216, 225, 211, 1})..str..'|r') prettified:append(Aux.gui.inline_color({216, 225, 211, 1})..str..'|r')
else else
return false, {}, 'Erroneous Usable Only Modifier' return false, {}, 'Erroneous usable only modifier'
end end
elseif str == 'exact' then elseif str == 'exact' then
if not blizzard_filter.exact then if not blizzard_filter.exact then
blizzard_filter.exact = true blizzard_filter.exact = true
else else
return false, {}, 'Erroneous Exact Only Modifier' return false, {}, 'Erroneous exact only modifier'
end end
elseif i == 2 and not m.filters[str] then elseif i == 2 and not m.filters[str] then
blizzard_filter.name = str blizzard_filter.name = str
@@ -531,7 +539,7 @@ function m.filter_from_string(filter_term)
return false, suggestions, error return false, suggestions, error
end end
else else
return false, {}, 'Empty Modifier' return false, {}, 'Empty modifier'
end end
end end
@@ -543,7 +551,7 @@ function m.filter_from_string(filter_term)
tinsert(suggestions, 'or') tinsert(suggestions, 'or')
tinsert(suggestions, 'not') tinsert(suggestions, 'not')
end end
return false, i > getn(parts) and suggestions, 'Malformed Expression' return false, i > getn(parts) and suggestions, 'Malformed expression'
end end
if blizzard_filter.exact then if blizzard_filter.exact then
@@ -556,7 +564,7 @@ function m.filter_from_string(filter_term)
or blizzard_filter.usable or blizzard_filter.usable
or not blizzard_filter.name or not blizzard_filter.name
then then
return false, {}, 'Erroneous Exact Only Modifier' return false, {}, 'Erroneous exact only modifier'
else else
prettified:prepend(Aux.info.display_name(Aux.cache.item_id(blizzard_filter.name)) or Aux.gui.inline_color({216, 225, 211, 1})..'['..blizzard_filter.name..']|r') prettified:prepend(Aux.info.display_name(Aux.cache.item_id(blizzard_filter.name)) or Aux.gui.inline_color({216, 225, 211, 1})..'['..blizzard_filter.name..']|r')
end end
+9
View File
@@ -8,6 +8,15 @@ function public.id(object)
return object return object
end end
function public.table_eq(t1, t2)
for key, value in t1 do
if t2[key] ~= value then
return false
end
end
return true
end
function public.wipe(table) function public.wipe(table)
while getn(table) > 0 do while getn(table) > 0 do
tremove(table) tremove(table)