⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 auctionframetransactions.lua

📁 时间太紧了
💻 LUA
字号:
--[[	BeanCounter Addon for World of Warcraft(tm).	Version: 3.5.0.0914 (Platypus)	Revision: $Id: AuctionFrameTransactions.lua 819 2006-04-14 06:32:43Z vindicator $	Auctioneer Accoutant tab	License:		This program is free software; you can redistribute it and/or		modify it under the terms of the GNU General Public License		as published by the Free Software Foundation; either version 2		of the License, or (at your option) any later version.		This program is distributed in the hope that it will be useful,		but WITHOUT ANY WARRANTY; without even the implied warranty of		MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the		GNU General Public License for more details.		You should have received a copy of the GNU General Public License		along with this program(see GPL.txt); if not, write to the Free Software		Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.--]]--------------------------------------------------------------------------------- Function Prototypes-------------------------------------------------------------------------------local doesNameMatch;local nilSafeCompareAscending;local nilSafeCompareDescending;--------------------------------------------------------------------------------------------------------------------------------------------------------------function AuctionFrameTransactions_OnLoad()	-- Methods	this.SearchTransactions = AuctionFrameTransactions_SearchTransactions;	-- Controls	this.resultsList = getglobal(this:GetName().."List");	-- Data members	this.results = {};	-- Configure the logical columns	this.logicalColumns =	{		Date =		{			title = _BC("UiDateHeader");			dataType = "String";			valueFunc = (function(record) return date("%x", record.date) end);			compareAscendingFunc = (function(record1, record2) return nilSafeCompareAscending(record1.date, record2.date) end);			compareDescendingFunc = (function(record1, record2) return nilSafeCompareDescending(record1.date, record2.date) end);		},		Type =		{			title = _BC("UiTransactionTypeHeader");			dataType = "String";			valueFunc = (function(record) return record.transaction end);			compareAscendingFunc = (function(record1, record2) return nilSafeCompareAscending(record1.transaction, record2.transaction) end);			compareDescendingFunc = (function(record1, record2) return nilSafeCompareDescending(record1.transaction, record2.transaction) end);		},		Quantity =		{			title = _BC("UiQuantityHeader");			dataType = "Number";			valueFunc = (function(record) return record.count end);			compareAscendingFunc = (function(record1, record2) return nilSafeCompareAscending(record1.count, record2.count) end);			compareDescendingFunc = (function(record1, record2) return nilSafeCompareDescending(record1.count, record2.count) end);		},		Name =		{			title = _BC("UiNameHeader");			dataType = "String";			valueFunc = (function(record) return record.name end);			colorFunc = AuctionFrameTransactions_GetItemColor;			compareAscendingFunc = (function(record1, record2) return nilSafeCompareAscending(record1.name, record2.name) end);			compareDescendingFunc = (function(record1, record2) return nilSafeCompareDescending(record1.name, record2.name) end);		},		Net =		{			title = _BC("UiNetHeader");			dataType = "Money";			valueFunc = (function(record) return record.net end);			compareAscendingFunc = (function(record1, record2) return nilSafeCompareAscending(record1.net, record2.net) end);			compareDescendingFunc = (function(record1, record2) return nilSafeCompareDescending(record1.net, record2.net) end);		},		NetPer =		{			title = _BC("UiNetPerHeader");			dataType = "Money";			valueFunc = (function(record) return record.netPer end);			compareAscendingFunc = (function(record1, record2) return nilSafeCompareAscending(record1.netPer, record2.netPer) end);			compareDescendingFunc = (function(record1, record2) return nilSafeCompareDescending(record1.netPer, record2.netPer) end);		},		Price =		{			title = _BC("UiPriceHeader");			dataType = "Money";			valueFunc = (function(record) return record.price end);			compareAscendingFunc = (function(record1, record2) return nilSafeCompareAscending(record1.price, record2.price) end);			compareDescendingFunc = (function(record1, record2) return nilSafeCompareDescending(record1.price, record2.price) end);		},		PricePer =		{			title = _BC("UiPricePerHeader");			dataType = "Money";			valueFunc = (function(record) return record.pricePer end);			compareAscendingFunc = (function(record1, record2) return nilSafeCompareAscending(record1.pricePer, record2.pricePer) end);			compareDescendingFunc = (function(record1, record2) return nilSafeCompareDescending(record1.pricePer, record2.pricePer) end);		},		BuyerSeller =		{			title = _BC("UiBuyerSellerHeader");			dataType = "String";			valueFunc = (function(record) return record.player end);			compareAscendingFunc = (function(record1, record2) return nilSafeCompareAscending(record1.player, record2.player) end);			compareDescendingFunc = (function(record1, record2) return nilSafeCompareDescending(record1.player, record2.player) end);		},	};	-- Configure the transaction search columns	this.transactionSearchPhysicalColumns =	{		{			width = 80;			logicalColumn = this.logicalColumns.Date;			logicalColumns = { this.logicalColumns.Date };			sortAscending = true;		},		{			width = 80;			logicalColumn = this.logicalColumns.Type;			logicalColumns = { this.logicalColumns.Type };			sortAscending = true;		},		{			width = 50;			logicalColumn = this.logicalColumns.Quantity;			logicalColumns = { this.logicalColumns.Quantity };			sortAscending = true;		},		{			width = 160;			logicalColumn = this.logicalColumns.Name;			logicalColumns = { this.logicalColumns.Name };			sortAscending = true;		},		{			width = 110;			logicalColumn = this.logicalColumns.Net;			logicalColumns =			{				this.logicalColumns.Net,				this.logicalColumns.NetPer,				this.logicalColumns.Price,				this.logicalColumns.PricePer			};			sortAscending = true;		},		{			width = 130;			logicalColumn = this.logicalColumns.BuyerSeller;			logicalColumns = { this.logicalColumns.BuyerSeller };			sortAscending = true;		},	};	-- Initialize the list to show nothing at first.	ListTemplate_Initialize(this.resultsList, this.results, this.results);end--------------------------------------------------------------------------------- Perform a transaction search-------------------------------------------------------------------------------function AuctionFrameTransactions_SearchTransactions(frame, itemName, itemNameExact, transactions)	-- Create the content from purhcases database.	frame.results = {};		-- Add the purchases	if (transactions == nil or transactions.purchases) then		local itemNames = BeanCounter.Purchases.GetPurchasedItems();		for itemNameIndex in itemNames do			-- Check if this item matches the search criteria			if (doesNameMatch(itemNames[itemNameIndex], itemName, itemNameExact)) then				local purchases = BeanCounter.Purchases.GetPurchasesForItem(itemNames[itemNameIndex]);				for purchaseIndex in purchases do					local transaction = {};					transaction.transaction = "Buy"; --_BC('UiBuyTransaction');					transaction.date = purchases[purchaseIndex].time;					transaction.count = purchases[purchaseIndex].quantity;					transaction.name = itemNames[itemNameIndex];					transaction.price = purchases[purchaseIndex].cost;					transaction.pricePer = math.floor(purchases[purchaseIndex].cost / purchases[purchaseIndex].quantity);					transaction.net = -transaction.price;					transaction.netPer = -transaction.pricePer;					transaction.player = purchases[purchaseIndex].seller;					table.insert(frame.results, transaction);				end			end		end	end		-- Add the bids	if (transactions == nil or transactions.bids) then		local itemNames = BeanCounter.Purchases.GetPendingBidItems();		for itemNameIndex in itemNames do			-- Check if this item matches the search criteria			if (doesNameMatch(itemNames[itemNameIndex], itemName, itemNameExact)) then				local pendingBids = BeanCounter.Purchases.GetPendingBidsForItem(itemNames[itemNameIndex]);				for pendingBidIndex in pendingBids do					local transaction = {};					transaction.transaction = "Bid"; --_BC('UiBidTransaction');					transaction.date = pendingBids[pendingBidIndex].time;					transaction.count = pendingBids[pendingBidIndex].quantity;					transaction.name = itemNames[itemNameIndex];					transaction.price = pendingBids[pendingBidIndex].bid;					transaction.pricePer = math.floor(pendingBids[pendingBidIndex].bid / pendingBids[pendingBidIndex].quantity);					transaction.net = -transaction.price;					transaction.netPer = -transaction.pricePer;					transaction.player = pendingBids[pendingBidIndex].seller;					table.insert(frame.results, transaction);				end			end		end	end	-- Add the sales	if (transactions == nil or transactions.sales) then		local itemNames = BeanCounter.Sales.GetSoldItems();		for itemNameIndex in itemNames do			-- Check if this item matches the search criteria			if (doesNameMatch(itemNames[itemNameIndex], itemName, itemNameExact)) then				local sales = BeanCounter.Sales.GetSalesForItem(itemNames[itemNameIndex]);				for saleIndex in sales do					local transaction = {};					transaction.date = sales[saleIndex].time;					transaction.name = itemNames[itemNameIndex];					transaction.count = sales[saleIndex].quantity;					transaction.net = sales[saleIndex].net;					transaction.netPer = math.floor(transaction.net / transaction.count);					if (sales[saleIndex].result == 0) then						transaction.transaction = "Sell"; --_BC('UiSellTransaction');						transaction.price = sales[saleIndex].price;						transaction.pricePer = math.floor(transaction.price / transaction.count);						transaction.player = sales[saleIndex].buyer;					else						transaction.transaction = "Deposit"; --_BC('UiDepositTransaction');						transaction.price = sales[saleIndex].buyout;						transaction.pricePer = math.floor(transaction.price / transaction.count);						transaction.player = "";					end					table.insert(frame.results, transaction);				end			end					end	end	-- Add the auctions	if (transactions == nil or transactions.auctions) then		local itemNames = BeanCounter.Sales.GetPendingAuctionItems();		for itemNameIndex in itemNames do			-- Check if this item matches the search criteria			if (doesNameMatch(itemNames[itemNameIndex], itemName, itemNameExact)) then				local auctions = BeanCounter.Sales.GetPendingAuctionsForItem(itemNames[itemNameIndex]);				for auctionIndex in auctions do					local transaction = {};					transaction.transaction = "Auction"; --_BC('UiAuctionTransaction');					transaction.date = auctions[auctionIndex].time;					transaction.count = auctions[auctionIndex].quantity;					transaction.name = itemNames[itemNameIndex];					transaction.price = auctions[auctionIndex].buyout;					transaction.pricePer = math.floor(transaction.price / transaction.count);					transaction.net = -auctions[auctionIndex].deposit;					transaction.netPer = math.floor(transaction.net / transaction.count);					transaction.player = "";					table.insert(frame.results, transaction);				end			end					end	end	-- Hand the updated results to the list.	ListTemplate_Initialize(frame.resultsList, frame.transactionSearchPhysicalColumns, frame.logicalColumns);	ListTemplate_SetContent(frame.resultsList, frame.results);	ListTemplate_Sort(frame.resultsList, 1);end--------------------------------------------------------------------------------------------------------------------------------------------------------------function AuctionFrameSearchTransactions_SearchButton_OnClick(button)	local frame = button:GetParent();	local frameName = frame:GetName();	local itemName = getglobal(frameName.."SearchEdit"):GetText();	if (itemName == "") then itemName = nil end	local exactNameSearch = getglobal(frame:GetName().."ExactSearchCheckBox"):GetChecked();	local transactions = {};	transactions.bids = getglobal(frame:GetName().."BidCheckBox"):GetChecked();	transactions.purchases = getglobal(frame:GetName().."BuyCheckBox"):GetChecked();	transactions.auctions = getglobal(frame:GetName().."AuctionCheckBox"):GetChecked();	transactions.sales = getglobal(frame:GetName().."SellCheckBox"):GetChecked();	frame:GetParent():SearchTransactions(itemName, exactNameSearch, transactions);end--------------------------------------------------------------------------------------------------------------------------------------------------------------function doesNameMatch(name1, name2, exact)	local match = true;	if (name1 ~= nil and name2 ~= nil) then		if (exact) then			match = (string.lower(name1) == string.lower(name2));		else			match = (string.find(string.lower(name1), string.lower(name2), 1, true) ~= nil);		end	end	return match;end--------------------------------------------------------------------------------------------------------------------------------------------------------------function nilSafeCompareAscending(value1, value2)	if (value1 == nil and value2 == nil) then		return false;	elseif (value1 == nil and value2 ~= nil) then		return true;	elseif (value1 ~= nil and value2 == nil) then		return false;	end	return (value1 < value2);end--------------------------------------------------------------------------------------------------------------------------------------------------------------function nilSafeCompareDescending(value1, value2)	if (value1 == nil and value2 == nil) then		return false;	elseif (value1 == nil and value2 ~= nil) then		return false;	elseif (value1 ~= nil and value2 == nil) then		return true;	end	return (value1 > value2);end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -