local GachaProbInfoCtrl = class("GachaProbInfoCtrl", BaseCtrl)
local cellCount = 6
GachaProbInfoCtrl._mapNodeConfig = {
	txtWindowTitle = {sComponentName = "TMP_Text", sLanguageId = "Gacha_Prob"},
	btnCloseScreen = {
		sComponentName = "Button",
		callback = "OnBtnClick_Close"
	},
	btnClose = {
		sComponentName = "Button",
		callback = "OnBtnClick_Close"
	},
	rtProbInfo = {sComponentName = "Animator"},
	btn_PoolInfo = {
		sComponentName = "UIButton",
		callback = "OnBtnClick_OpenPoolInfo"
	},
	txt_PoolInfo = {
		sComponentName = "TMP_Text",
		sLanguageId = "Recruit_info"
	},
	btn_Left = {
		sComponentName = "UIButton",
		callback = "OnBtnClick_PrePage"
	},
	btn_Right = {
		sComponentName = "UIButton",
		callback = "OnBtnClick_NextPage"
	},
	txt_Page = {sComponentName = "TMP_Text"},
	ProbCell = {nCount = 6},
	title_type = {
		sComponentName = "TMP_Text",
		sLanguageId = "GachaHistory_Type"
	},
	title_rarity = {
		sComponentName = "TMP_Text",
		sLanguageId = "GachaHistory_Rank"
	},
	title_name = {
		sComponentName = "TMP_Text",
		sLanguageId = "GachaHistory_Name"
	},
	title_prob = {
		sComponentName = "TMP_Text",
		sLanguageId = "Gacha_ProbValue"
	},
	title_poolName = {sComponentName = "TMP_Text"},
	title_poolTime = {sComponentName = "TMP_Text"}
}
GachaProbInfoCtrl._mapEventConfig = {}
function GachaProbInfoCtrl:Awake()
end
function GachaProbInfoCtrl:FadeIn()
end
function GachaProbInfoCtrl:FadeOut()
end
function GachaProbInfoCtrl:OnEnable()
end
function GachaProbInfoCtrl:OnDisable()
end
function GachaProbInfoCtrl:OnDestroy()
end
function GachaProbInfoCtrl:OnRelease()
end
function GachaProbInfoCtrl:InitData()
	self.nCurPage = 1
	self.nTotalPage = 0
	self.upItemList = {}
	self.itemList = {}
end
function GachaProbInfoCtrl:OpenInfo()
	self.gameObject:SetActive(true)
	self._mapNode.rtProbInfo:Play("t_window_04_t_in")
end
function GachaProbInfoCtrl:Refresh(nPoolId)
	self:InitData()
	local upItemList, itemList = PlayerData.Gacha:GetPoolProbDetail(nPoolId)
	self.upItemList = upItemList
	self.itemList = itemList
	self.nTotalPage = math.ceil((#self.upItemList + #self.itemList) / cellCount)
	self:RefreshPage(self.nCurPage)
	local gachaConfig = ConfigTable.GetData("Gacha", nPoolId)
	NovaAPI.SetTMPText(self._mapNode.title_poolName, gachaConfig.Name)
	local bHideTimeText = gachaConfig.StartTime == ""
	self._mapNode.title_poolTime.gameObject:SetActive(not bHideTimeText)
	if bHideTimeText == false then
		local nStartTime = CS.ClientManager.Instance:ISO8601StrToTimeStamp(gachaConfig.StartTime)
		local nEndTime = CS.ClientManager.Instance:ISO8601StrToTimeStamp(gachaConfig.EndTime)
		local sStartTime = os.date("%Y-%m-%d %H:%M:%S", nStartTime)
		local sEndTime = os.date("%Y-%m-%d %H:%M:%S", nEndTime)
		local sTime = ConfigTable.GetUIText("Gacha_Prob_Time") .. sStartTime .. "~" .. sEndTime
		NovaAPI.SetTMPText(self._mapNode.title_poolTime, sTime)
	end
	NovaAPI.SetTMPText(self._mapNode.txt_Page, self.nCurPage .. "/" .. self.nTotalPage)
end
function GachaProbInfoCtrl:RefreshPage(nPage)
	local min = (nPage - 1) * cellCount + 1
	local max = nPage * cellCount
	local dataMax = math.min(max, #self.upItemList + #self.itemList)
	local nCellIndex = 1
	for i = min, max do
		if i > dataMax then
			self._mapNode.ProbCell[nCellIndex]:SetActive(false)
			nCellIndex = nCellIndex + 1
		else
			local bIsUp, data
			if i <= #self.upItemList then
				data = self.upItemList[i]
				bIsUp = true
			else
				data = self.itemList[i - #self.upItemList]
				bIsUp = false
			end
			local itemConfig = ConfigTable.GetData_Item(data.nGoodsId)
			local cell = self._mapNode.ProbCell[nCellIndex]
			local txtType = cell.transform:Find("txtType")
			local img_char = cell.transform:Find("img_type_char")
			local img_outfit = cell.transform:Find("img_type_outfit")
			local str
			if itemConfig.Type == GameEnum.itemType.Char then
				str = ConfigTable.GetUIText("ItemStype_3")
			else
				str = ConfigTable.GetUIText("ItemStye_Outfit")
			end
			img_char.gameObject:SetActive(itemConfig.Type == GameEnum.itemType.Char)
			img_outfit.gameObject:SetActive(itemConfig.Type == GameEnum.itemType.Disc)
			NovaAPI.SetTMPText(txtType:GetComponent("TMP_Text"), str)
			local SSR = cell.transform:Find("ssr")
			local SR = cell.transform:Find("sr")
			local R = cell.transform:Find("r")
			SSR.gameObject:SetActive(itemConfig.Rarity == GameEnum.itemRarity.SSR)
			SR.gameObject:SetActive(itemConfig.Rarity == GameEnum.itemRarity.SR)
			R.gameObject:SetActive(itemConfig.Rarity == GameEnum.itemRarity.R)
			local up = cell.transform:Find("up")
			local bg_up = cell.transform:Find("bg_Up")
			up.gameObject:SetActive(bIsUp)
			bg_up.gameObject:SetActive(bIsUp)
			local txt_name = cell.transform:Find("txt_name")
			NovaAPI.SetTMPText(txt_name:GetComponent("TMP_Text"), itemConfig.Title)
			local txt_prob = cell.transform:Find("txt_prob")
			NovaAPI.SetTMPText(txt_prob:GetComponent("TMP_Text"), string.format("%.5f", data.nProbValue) .. "%")
			self._mapNode.ProbCell[nCellIndex]:SetActive(true)
			local line = cell.transform:Find("img_line")
			if dataMax < i + 1 then
				line.gameObject:SetActive(false)
			else
				line.gameObject:SetActive(true)
			end
			nCellIndex = nCellIndex + 1
		end
	end
	self._mapNode.btn_Left.gameObject:SetActive(1 < self.nCurPage)
	self._mapNode.btn_Right.gameObject:SetActive(self.nCurPage < self.nTotalPage)
end
function GachaProbInfoCtrl:OnBtnClick_Close()
	local Close = function()
		self.gameObject:SetActive(false)
	end
	self._mapNode.rtProbInfo:Play("t_window_04_t_out")
	self:AddTimer(1, 0.2, Close, true, true, true)
end
function GachaProbInfoCtrl:OnBtnClick_OpenPoolInfo()
	EventManager.Hit("GachaOpenPoolInfo")
end
function GachaProbInfoCtrl:OnBtnClick_PrePage()
	if self.nCurPage > 1 then
		self.nCurPage = self.nCurPage - 1
		self:RefreshPage(self.nCurPage)
		self._mapNode.btn_Left.gameObject:SetActive(self.nCurPage > 1)
		self._mapNode.btn_Right.gameObject:SetActive(self.nCurPage < self.nTotalPage)
		NovaAPI.SetTMPText(self._mapNode.txt_Page, self.nCurPage .. "/" .. self.nTotalPage)
	end
end
function GachaProbInfoCtrl:OnBtnClick_NextPage()
	if self.nCurPage < self.nTotalPage then
		self.nCurPage = self.nCurPage + 1
		self:RefreshPage(self.nCurPage)
		self._mapNode.btn_Left.gameObject:SetActive(self.nCurPage > 1)
		self._mapNode.btn_Right.gameObject:SetActive(self.nCurPage < self.nTotalPage)
		NovaAPI.SetTMPText(self._mapNode.txt_Page, self.nCurPage .. "/" .. self.nTotalPage)
	end
end
return GachaProbInfoCtrl
