Mercurial > wow > inventory
comparison Summary.lua @ 50:9607b3251655
Added OnSelect event support to both item count as crafting addons.
Added basic local item count data support.
Fixed "Show in summary when below" option to allow a value of up to 10.000%.
Summary should now respect virtual groups.
| author | Zerotorescue |
|---|---|
| date | Sat, 18 Dec 2010 00:22:06 +0100 |
| parents | 58fb38f0b447 |
| children | 06fee4208bf2 |
comparison
equal
deleted
inserted
replaced
| 49:51d85a84b40c | 50:9607b3251655 |
|---|---|
| 266 | 266 |
| 267 -- Go through all our stored groups | 267 -- Go through all our stored groups |
| 268 for groupName, values in pairsByKeys(addon.db.global.groups, function(a, b) return a:lower() < b:lower(); end) do | 268 for groupName, values in pairsByKeys(addon.db.global.groups, function(a, b) return a:lower() < b:lower(); end) do |
| 269 local groupStartTime, groupTimes = GetTime(), {}; | 269 local groupStartTime, groupTimes = GetTime(), {}; |
| 270 | 270 |
| 271 local trackAt = (values.trackAtCharacters or (values.trackAtCharacters == nil and addon.db.global.defaults.trackAtCharacters)); | 271 local trackAt = addon:GetOptionByKey(groupName, "trackAtCharacters"); |
| 272 | |
| 272 | 273 |
| 273 -- Does this group have any items and do we want to track it at this char? | 274 -- Does this group have any items and do we want to track it at this char? |
| 274 if values.items and trackAt[playerName] then | 275 if values.items and trackAt[playerName] then |
| 275 | 276 |
| 276 | 277 |
| 277 -- Get group settings | 278 -- Get group settings |
| 278 local minimumStock = (values.minimumStock or (values.minimumStock == nil and addon.db.global.defaults.minimumStock)); | 279 local minimumStock = addon:GetOptionByKey(groupName, "minimumStock"); |
| 279 local showWhenBelow = (values.summaryThresholdShow or (values.summaryThresholdShow == nil and addon.db.global.defaults.summaryThresholdShow)); | 280 local showWhenBelow = addon:GetOptionByKey(groupName, "summaryThresholdShow"); |
| 280 local priceThreshold = (values.priceThreshold or (values.priceThreshold == nil and addon.db.global.defaults.priceThreshold)); | 281 local priceThreshold = addon:GetOptionByKey(groupName, "priceThreshold"); |
| 281 local hideWhenBelowPriceThreshold = (values.summaryHidePriceThreshold or (values.summaryHidePriceThreshold == nil and addon.db.global.defaults.summaryHidePriceThreshold)); | 282 local hideWhenBelowPriceThreshold = addon:GetOptionByKey(groupName, "summaryHidePriceThreshold"); |
| 282 local alwaysGetAuctionValue = (values.alwaysGetAuctionValue or (values.alwaysGetAuctionValue == nil and addon.db.global.defaults.alwaysGetAuctionValue)); | 283 local alwaysGetAuctionValue = addon:GetOptionByKey(groupName, "alwaysGetAuctionValue"); |
| 283 | 284 |
| 284 -- Make group container | 285 -- Make group container |
| 285 local iGroup = AceGUI:Create("InlineGroupWithButton"); | 286 local iGroup = AceGUI:Create("InlineGroupWithButton"); |
| 286 iGroup:PauseLayout(); | 287 iGroup:PauseLayout(); |
| 287 iGroup:SetTitle(groupName); | 288 iGroup:SetTitle(groupName); |
| 302 | 303 |
| 303 -- Itemlink | 304 -- Itemlink |
| 304 local lblItem = AceGUI:Create("InteractiveLabel"); | 305 local lblItem = AceGUI:Create("InteractiveLabel"); |
| 305 lblItem:SetText("|cfffed000Item|r"); | 306 lblItem:SetText("|cfffed000Item|r"); |
| 306 lblItem:SetFontObject(GameFontHighlight); | 307 lblItem:SetFontObject(GameFontHighlight); |
| 307 lblItem:SetRelativeWidth(.7); | 308 lblItem:SetRelativeWidth(.6); |
| 308 lblItem:SetCallback("OnClick", function() ReSort("item"); end); | 309 lblItem:SetCallback("OnClick", function() ReSort("item"); end); |
| 309 lblItem:SetCallback("OnEnter", ShowTooltip); | 310 lblItem:SetCallback("OnEnter", ShowTooltip); |
| 310 lblItem:SetCallback("OnLeave", HideTooltip); | 311 lblItem:SetCallback("OnLeave", HideTooltip); |
| 311 lblItem.frame.tooltipTitle = "Item"; | 312 lblItem.frame.tooltipTitle = "Item"; |
| 312 lblItem.frame.tooltip = "Sort on the item quality, then name."; | 313 lblItem.frame.tooltip = "Sort on the item quality, then name."; |
| 313 | 314 |
| 314 iGroup:AddChild(lblItem); | 315 iGroup:AddChild(lblItem); |
| 316 | |
| 317 -- Local quantity | |
| 318 local lblLocal = AceGUI:Create("InteractiveLabel"); | |
| 319 lblLocal:SetText("|cfffed000Loc.|r"); | |
| 320 lblLocal:SetFontObject(GameFontHighlight); | |
| 321 lblLocal:SetRelativeWidth(.099); | |
| 322 lblLocal:SetCallback("OnClick", function() ReSort("local"); end); | |
| 323 lblLocal:SetCallback("OnEnter", ShowTooltip); | |
| 324 lblLocal:SetCallback("OnLeave", HideTooltip); | |
| 325 lblLocal.frame.tooltipTitle = "Local stock"; | |
| 326 lblLocal.frame.tooltip = "Sort on the amount of items currently in local stock."; | |
| 327 | |
| 328 iGroup:AddChild(lblLocal); | |
| 315 | 329 |
| 316 -- Current quantity | 330 -- Current quantity |
| 317 local lblQuantity = AceGUI:Create("InteractiveLabel"); | 331 local lblQuantity = AceGUI:Create("InteractiveLabel"); |
| 318 lblQuantity:SetText("|cfffed000Cur.|r"); | 332 lblQuantity:SetText("|cfffed000Cur.|r"); |
| 319 lblQuantity:SetFontObject(GameFontHighlight); | 333 lblQuantity:SetFontObject(GameFontHighlight); |
| 324 lblQuantity.frame.tooltipTitle = "Current stock"; | 338 lblQuantity.frame.tooltipTitle = "Current stock"; |
| 325 lblQuantity.frame.tooltip = "Sort on the amount of items currently in stock."; | 339 lblQuantity.frame.tooltip = "Sort on the amount of items currently in stock."; |
| 326 | 340 |
| 327 iGroup:AddChild(lblQuantity); | 341 iGroup:AddChild(lblQuantity); |
| 328 | 342 |
| 329 -- Local quantity | |
| 330 --[[local lblLocal = AceGUI:Create("InteractiveLabel"); | |
| 331 lblLocal:SetText("|cfffed000Loc.|r"); | |
| 332 lblLocal:SetFontObject(GameFontHighlight); | |
| 333 lblLocal:SetRelativeWidth(.099); | |
| 334 lblLocal:SetCallback("OnClick", function() ReSort("current"); end); | |
| 335 lblLocal:SetCallback("OnEnter", ShowTooltip); | |
| 336 lblLocal:SetCallback("OnLeave", HideTooltip); | |
| 337 lblLocal.frame.tooltipTitle = "Local stock"; | |
| 338 lblLocal.frame.tooltip = "Sort on the amount of items currently in local stock."; | |
| 339 | |
| 340 iGroup:AddChild(lblLocal);]] | |
| 341 | |
| 342 -- Required stock | 343 -- Required stock |
| 343 local lblMinimumStock = AceGUI:Create("InteractiveLabel"); | 344 local lblMinimumStock = AceGUI:Create("InteractiveLabel"); |
| 344 lblMinimumStock:SetText("|cfffed000Min.|r"); | 345 lblMinimumStock:SetText("|cfffed000Min.|r"); |
| 345 lblMinimumStock:SetFontObject(GameFontHighlight); | 346 lblMinimumStock:SetFontObject(GameFontHighlight); |
| 346 lblMinimumStock:SetRelativeWidth(.099); | 347 lblMinimumStock:SetRelativeWidth(.099); |
| 379 name = itemName or unknownItemName:format(itemId), | 380 name = itemName or unknownItemName:format(itemId), |
| 380 link = itemLink, | 381 link = itemLink, |
| 381 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), | 382 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), |
| 382 rarity = itemRarity or 1, | 383 rarity = itemRarity or 1, |
| 383 count = -3,--addon:GetItemCount(itemId, groupName), | 384 count = -3,--addon:GetItemCount(itemId, groupName), |
| 384 --localCount = -3, | 385 localCount = -3, |
| 385 set = {}, | 386 set = {}, |
| 386 }); | 387 }); |
| 387 CACHE_ITEMS_TOTAL = CACHE_ITEMS_TOTAL + 1; | 388 CACHE_ITEMS_TOTAL = CACHE_ITEMS_TOTAL + 1; |
| 388 end | 389 end |
| 389 end | 390 end |
| 412 if sortDirectory == "ASC" then | 413 if sortDirectory == "ASC" then |
| 413 return a.count < b.count; | 414 return a.count < b.count; |
| 414 else | 415 else |
| 415 return a.count > b.count; | 416 return a.count > b.count; |
| 416 end | 417 end |
| 418 elseif sortMethod == "local" then | |
| 419 if sortDirectory == "ASC" then | |
| 420 return a.localCount < b.localCount; | |
| 421 else | |
| 422 return a.localCount > b.localCount; | |
| 423 end | |
| 417 elseif sortMethod == "percentage" then | 424 elseif sortMethod == "percentage" then |
| 418 if sortDirectory == "ASC" then | 425 if sortDirectory == "ASC" then |
| 419 return ( a.count / minimumStock ) < ( b.count / minimumStock ); | 426 return ( a.count / minimumStock ) < ( b.count / minimumStock ); |
| 420 else | 427 else |
| 421 return ( a.count / minimumStock ) > ( b.count / minimumStock ); | 428 return ( a.count / minimumStock ) > ( b.count / minimumStock ); |
| 436 | 443 |
| 437 -- Show itemslist | 444 -- Show itemslist |
| 438 for i, item in pairs(itemsCache[groupName]) do | 445 for i, item in pairs(itemsCache[groupName]) do |
| 439 -- Go through all items for this group | 446 -- Go through all items for this group |
| 440 | 447 |
| 441 if ( item.count / minimumStock ) < showWhenBelow and (not hideWhenBelowPriceThreshold or priceThreshold == 0 or item.value < 0 or item.value >= priceThreshold) then | 448 if (( item.count / minimumStock ) < showWhenBelow or ( item.localCount / minimumStock ) < showWhenBelow) and (not hideWhenBelowPriceThreshold or priceThreshold == 0 or item.value < 0 or item.value >= priceThreshold) then |
| 442 -- 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 | 449 -- 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 |
| 450 | |
| 443 local btnItemLink = AceGUI:Create("ItemLinkButton"); | 451 local btnItemLink = AceGUI:Create("ItemLinkButton"); |
| 444 btnItemLink:SetUserData("exec", function(_, itemId, _, buttonName) | 452 btnItemLink:SetUserData("exec", function(_, itemId, _, buttonName) |
| 445 local itemName, itemLink = GetItemInfo(itemId); | 453 local itemName, itemLink = GetItemInfo(itemId); |
| 446 | 454 |
| 447 if buttonName == "LeftButton" and IsShiftKeyDown() and itemLink then | 455 if buttonName == "LeftButton" and IsShiftKeyDown() and itemLink then |
| 454 BrowseName:SetText(itemName) | 462 BrowseName:SetText(itemName) |
| 455 | 463 |
| 456 QueryAuctionItems(itemName, nil, nil, 0, 0, 0, 0, 0, 0); | 464 QueryAuctionItems(itemName, nil, nil, 0, 0, 0, 0, 0, 0); |
| 457 end | 465 end |
| 458 end); | 466 end); |
| 459 btnItemLink:SetRelativeWidth(.7); | 467 btnItemLink:SetRelativeWidth(.6); |
| 460 btnItemLink:SetItemId(item.id); | 468 btnItemLink:SetItemId(item.id); |
| 461 | 469 |
| 462 iGroup:AddChild(btnItemLink); | 470 iGroup:AddChild(btnItemLink); |
| 471 | |
| 472 -- Local quantity | |
| 473 local lblLocal = AceGUI:Create("Label"); | |
| 474 lblLocal:SetText(self:DisplayItemCount(item.localCount, minimumStock)); | |
| 475 lblLocal:SetRelativeWidth(.099); | |
| 476 | |
| 477 iGroup:AddChild(lblLocal); | |
| 463 | 478 |
| 464 -- Current quantity | 479 -- Current quantity |
| 465 local lblQuantity = AceGUI:Create("Label"); | 480 local lblQuantity = AceGUI:Create("Label"); |
| 466 lblQuantity:SetText(self:DisplayItemCount(item.count, minimumStock)); | 481 lblQuantity:SetText(self:DisplayItemCount(item.count, minimumStock)); |
| 467 lblQuantity:SetRelativeWidth(.099); | 482 lblQuantity:SetRelativeWidth(.099); |
| 468 | 483 |
| 469 iGroup:AddChild(lblQuantity); | 484 iGroup:AddChild(lblQuantity); |
| 470 | |
| 471 -- Local quantity | |
| 472 --[[local lblLocal = AceGUI:Create("Label"); | |
| 473 lblLocal:SetText(self:DisplayItemCount(item.count, minimumStock)); | |
| 474 lblLocal:SetRelativeWidth(.099); | |
| 475 | |
| 476 iGroup:AddChild(lblLocal);]] | |
| 477 | 485 |
| 478 -- Required stock | 486 -- Required stock |
| 479 local lblMinimumStock = AceGUI:Create("Label"); | 487 local lblMinimumStock = AceGUI:Create("Label"); |
| 480 lblMinimumStock:SetText(minimumStock); | 488 lblMinimumStock:SetText(minimumStock); |
| 481 lblMinimumStock:SetRelativeWidth(.099); | 489 lblMinimumStock:SetRelativeWidth(.099); |
| 496 item.set.value = lblValue; | 504 item.set.value = lblValue; |
| 497 end | 505 end |
| 498 if item.count == -3 then | 506 if item.count == -3 then |
| 499 item.set.current = lblQuantity; | 507 item.set.current = lblQuantity; |
| 500 end | 508 end |
| 509 if item.localCount == -3 then | |
| 510 item.set.localCount = lblLocal; | |
| 511 end | |
| 501 | 512 |
| 502 -- Don't queue if we already know everything we want to know | 513 -- Don't queue if we already know everything we want to know |
| 503 if item.value ~= -3 and item.count ~= -3 then | 514 if item.value ~= -3 and item.count ~= -3 and item.localCount ~= -3 then |
| 504 item.set = nil; | 515 item.set = nil; |
| 505 end | 516 end |
| 506 end | 517 end |
| 507 end | 518 end |
| 508 end | 519 end |
| 544 if item.count == -3 then | 555 if item.count == -3 then |
| 545 -- Only if item count was queued, update it | 556 -- Only if item count was queued, update it |
| 546 item.count = addon:GetItemCount(item.id, groupName); | 557 item.count = addon:GetItemCount(item.id, groupName); |
| 547 if item.set.current and item.set.current.SetText then | 558 if item.set.current and item.set.current.SetText then |
| 548 item.set.current:SetText(self:DisplayItemCount(item.count, minimumStock)); | 559 item.set.current:SetText(self:DisplayItemCount(item.count, minimumStock)); |
| 560 end | |
| 561 end | |
| 562 | |
| 563 if item.localCount == -3 then | |
| 564 -- Only if item count was queued, update it | |
| 565 item.localCount = addon:GetItemCount(item.id, groupName); | |
| 566 if item.set.localCount and item.set.localCount.SetText then | |
| 567 item.set.localCount:SetText(self:DisplayItemCount(item.localCount, minimumStock)); | |
| 549 end | 568 end |
| 550 end | 569 end |
| 551 | 570 |
| 552 if item.value == -3 then | 571 if item.value == -3 then |
| 553 -- Only if item value was queued, update it | 572 -- Only if item value was queued, update it |
