comparison Summary.lua @ 74:8d11fc88ecab

Default summary width is now 700 pixels (up from 650). Changed the item data table into a class which is now also used at the custom widgets.
author Zerotorescue
date Fri, 24 Dec 2010 21:55:11 +0100
parents 6216b754350d
children
comparison
equal deleted inserted replaced
73:6216b754350d 74:8d11fc88ecab
319 319
320 320
321 -- Retrieve items list 321 -- Retrieve items list
322 if not itemsCache[groupName] then 322 if not itemsCache[groupName] then
323 itemsCache[groupName] = {}; 323 itemsCache[groupName] = {};
324 324 end
325 -- Sort item list 325
326 if #(itemsCache[groupName]) == 0 then
327 -- If the item cache is empty
326 for itemId, _ in pairs(values.items) do 328 for itemId, _ in pairs(values.items) do
327 local itemName, itemLink, itemRarity = GetItemInfo(itemId); 329 local newItemData = addon.ItemData:New(itemId);
328 330
329 tinsert(itemsCache[groupName], { 331 -- if no price threshold is set for this item and you don't want to always get the auction value, then don't look it up either
330 id = itemId, 332 if priceThreshold == 0 and not alwaysGetAuctionValue then
331 name = itemName, -- may be nil 333 newItemData.value = -4;
332 link = itemLink, -- may be nil 334 end
333 value = ((priceThreshold == 0 and not alwaysGetAuctionValue) and -4) or -3,-- if (no price threshold is set for this item and you don't want to always get auction value), then don't look it up either --addon:GetAuctionValue(itemLink), 335
334 rarity = itemRarity, -- may be nil 336 tinsert(itemsCache[groupName], newItemData);
335 count = -3,--addon:GetItemCount(itemId, groupName), 337
336 localCount = -3,
337 set = {},
338 });
339 CACHE_ITEMS_TOTAL = CACHE_ITEMS_TOTAL + 1; 338 CACHE_ITEMS_TOTAL = CACHE_ITEMS_TOTAL + 1;
340 end 339 end
341 end 340 end
342 341
343 groupTimes.init = ceil( ( GetTime() - groupStartTime ) * 1000 ); 342 groupTimes.init = ceil( ( GetTime() - groupStartTime ) * 1000 );
367 else 366 else
368 return aRarity < bRarity; -- the comparers were reversed because we want epics first 367 return aRarity < bRarity; -- the comparers were reversed because we want epics first
369 end 368 end
370 elseif sortMethod == "current" then 369 elseif sortMethod == "current" then
371 if sortDirectory == "ASC" then 370 if sortDirectory == "ASC" then
372 return a.count < b.count; 371 return a.globalCount < b.globalCount;
373 else 372 else
374 return a.count > b.count; 373 return a.globalCount > b.globalCount;
375 end 374 end
376 elseif sortMethod == "local" then 375 elseif sortMethod == "local" then
377 if sortDirectory == "ASC" then 376 if sortDirectory == "ASC" then
378 return a.localCount < b.localCount; 377 return a.localCount < b.localCount;
379 else 378 else
395 394
396 -- Show itemslist 395 -- Show itemslist
397 for i, item in pairs(itemsCache[groupName]) do 396 for i, item in pairs(itemsCache[groupName]) do
398 -- Go through all items for this group 397 -- Go through all items for this group
399 398
400 if (( item.count / minGlobalStock ) < showWhenBelow or ( item.localCount / minLocalStock ) < showWhenBelow) and (not hideWhenBelowPriceThreshold or priceThreshold == 0 or item.value < 0 or item.value >= priceThreshold) then 399 if (( item.globalCount / minGlobalStock ) < showWhenBelow or ( item.localCount / minLocalStock ) < showWhenBelow) and (not hideWhenBelowPriceThreshold or priceThreshold == 0 or item.value < 0 or item.value >= priceThreshold) then
401 -- if the option "hide when below threshold" is disabled or no price threshold is set or the value is above the price threshold or the value could not be determined, proceed 400 -- if the option "hide when below threshold" is disabled or no price threshold is set or the value is above the price threshold or the value could not be determined, proceed
402 401
403 local btnItemLink = AceGUI:Create("ItemLinkButton"); 402 local btnItemLink = AceGUI:Create("ItemLinkButton");
404 btnItemLink:SetUserData("exec", function(_, itemId, _, buttonName) 403 btnItemLink:SetUserData("exec", function(_, itemId, _, buttonName)
405 local itemName, itemLink = GetItemInfo(itemId); 404 local itemName, itemLink = GetItemInfo(itemId);
428 427
429 iGroup:AddChild(lblLocal); 428 iGroup:AddChild(lblLocal);
430 429
431 -- Current quantity 430 -- Current quantity
432 local lblQuantity = AceGUI:Create("Label"); 431 local lblQuantity = AceGUI:Create("Label");
433 lblQuantity:SetText(self:DisplayItemCount(item.count, minGlobalStock)); 432 lblQuantity:SetText(self:DisplayItemCount(item.globalCount, minGlobalStock));
434 lblQuantity:SetRelativeWidth(.099); 433 lblQuantity:SetRelativeWidth(.099);
435 434
436 iGroup:AddChild(lblQuantity); 435 iGroup:AddChild(lblQuantity);
437 436
438 -- Value 437 -- Value
441 lblValue:SetRelativeWidth(.099); 440 lblValue:SetRelativeWidth(.099);
442 441
443 iGroup:AddChild(lblValue); 442 iGroup:AddChild(lblValue);
444 443
445 -- Remember references to the value and current fields so we can fill them later 444 -- Remember references to the value and current fields so we can fill them later
446 if item.set then 445 item.set.value = lblValue;
447 -- -3 means the price is unknown, queue look up 446 item.set.globalCount = lblQuantity;
448 if item.value == -3 then 447 item.set.localCount = lblLocal;
449 item.set.value = lblValue;
450 end
451 if item.count == -3 then
452 item.set.current = lblQuantity;
453 end
454 if item.localCount == -3 then
455 item.set.localCount = lblLocal;
456 end
457
458 -- Don't queue if we already know everything we want to know
459 if item.value ~= -3 and item.count ~= -3 and item.localCount ~= -3 then
460 item.set = nil;
461 end
462 end
463 end 448 end
464 end 449 end
465 450
466 groupTimes.preparing = ceil( ( GetTime() - groupStartTime ) * 1000 ); 451 groupTimes.preparing = ceil( ( GetTime() - groupStartTime ) * 1000 );
467 452
495 local minGlobalStock = addon:GetOptionByKey(groupName, "minGlobalStock"); 480 local minGlobalStock = addon:GetOptionByKey(groupName, "minGlobalStock");
496 local minLocalStock = addon:GetOptionByKey(groupName, "minLocalStock"); 481 local minLocalStock = addon:GetOptionByKey(groupName, "minLocalStock");
497 local priceThreshold = addon:GetOptionByKey(groupName, "priceThreshold"); 482 local priceThreshold = addon:GetOptionByKey(groupName, "priceThreshold");
498 483
499 for _, item in pairs(items) do 484 for _, item in pairs(items) do
500 if item.set then 485 if item.globalCount == -3 or item.localCount == -3 or item.value == -3 then
501 if item.count == -3 then 486 if item.globalCount == -3 then
502 -- Only if item count was queued, update it 487 -- Only if item count was queued, update it
503 item.count = addon:GetItemCount(item.id, groupName); 488 item.globalCount = addon:GetItemCount(item.id, groupName);
504 if item.set.current and item.set.current.SetText then 489 if item.set.globalCount and item.set.globalCount.SetText then
505 item.set.current:SetText(self:DisplayItemCount(item.count, minGlobalStock)); 490 item.set.globalCount:SetText(self:DisplayItemCount(item.globalCount, minGlobalStock));
506 end 491 end
507 end 492 end
508 493
509 if item.localCount == -3 then 494 if item.localCount == -3 then
510 -- Only if item count was queued, update it 495 -- Only if item count was queued, update it
525 if item.set.value and item.set.value.SetText then 510 if item.set.value and item.set.value.SetText then
526 item.set.value:SetText(self:DisplayMoney(item.value, priceThreshold)); 511 item.set.value:SetText(self:DisplayMoney(item.value, priceThreshold));
527 end 512 end
528 end 513 end
529 end 514 end
530
531 item.set = nil;
532 515
533 i = i + 1; 516 i = i + 1;
534 CACHE_ITEMS_CURRENT = CACHE_ITEMS_CURRENT + 1; 517 CACHE_ITEMS_CURRENT = CACHE_ITEMS_CURRENT + 1;
535 518
536 if mod.frame then 519 if mod.frame then