local FamilAllRank = {} local M = FamilAllRank function FamilAllRank.New(root, groupId) local self = setmetatable({}, { __index = M }) self._father = root self.group_id = groupId self:init() return self end function M:init() local root = self._father self._lastTpe = root.familyType.selectedIndex root.familyType.selectedIndex = 0 local comp_rank = UIPackage.CreateObjectFromURL("ui://Family/Comp_Rank") root._view:AddChild(comp_rank) --[[ comp_rank.width = root._view.width comp_rank.height = root._view.height comp_rank:Center() ]] local scaleY = GRoot.inst.height / comp_rank.height local scaleX = GRoot.inst.width / comp_rank.width comp_rank:SetScale(scaleX, scaleY) self._view = comp_rank local viewBox_leftTime = comp_rank:GetChild('left_time') local viewBox_rightTime = comp_rank:GetChild('right_time') local viewBtn_search = comp_rank:GetChild('btn_search') local viewBtn_close = comp_rank:GetChild('btn_close') self._viewList_round = comp_rank:GetChild('list_round') self._viewList_score = comp_rank:GetChild('list_score') self._viewList_win = comp_rank:GetChild('list_win') viewBtn_close.onClick:Set(function() root.familyType.selectedIndex = self._lastTpe self._lastTpe = nil comp_rank.visible = false end) local serverDayValues, serverDayItems = self:InitTime() viewBox_leftTime.items = serverDayItems viewBox_leftTime.values = serverDayValues viewBox_rightTime.items = serverDayItems viewBox_rightTime.values = serverDayValues self.leftTimes = tonumber(serverDayValues[1]) self.rightTimes = tonumber(serverDayValues[1]) viewBox_leftTime.onChanged:Set(function() self.leftTimes = tonumber(viewBox_leftTime.value) end) viewBox_rightTime.onChanged:Set(function() self.rightTimes = tonumber(viewBox_rightTime.value) end) self._viewList_round:SetVirtual() self._viewList_round.itemRenderer = handler(self, self.RoundListRenderer) self._viewList_score:SetVirtual() self._viewList_score.itemRenderer = handler(self, self.ScoreListRenderer) self._viewList_win:SetVirtual() self._viewList_win.itemRenderer = handler(self, self.WinListRenderer) viewBtn_search.onClick:Set(function() self:SearchRank() end) self:SearchRank() end function M:InitTime() local timeTable = os.date("*t", os.time()) timeTable.hour = 0 timeTable.min = 0 timeTable.sec = 0 local serverDayItems = {} local serverDayValues = {} for i = 0, 6 do local tempValue = os.time(timeTable) - 86400 * i print(tempValue) local tempItems = os.date("%Y-%m-%d", tempValue) table.insert(serverDayItems, tempItems) table.insert(serverDayValues, tostring(tempValue)) end return serverDayValues, serverDayItems end function M:ShouRanks(root, groupId) self._father = root self.group_id = groupId self._lastTpe = self._father.familyType.selectedIndex self._father.familyType.selectedIndex = 0 self._view.visible = true self:SearchRank() end function M:RoundListRenderer(index, obj) local rankTable = self.roundRanks obj:GetChild('text_rank').text = index + 1 obj:GetChild('text_id').text = rankTable[index + 1].rankTable obj:GetChild('text_name').text = rankTable[index + 1].nick obj:GetChild('text_other').text = rankTable[index + 1].round ImageLoad.Load(rankTable[index + 1].portrait, obj:GetChild('btn_head')._iconObject) end function M:WinListRenderer(index, obj) local rankTable = self.winRanks obj:GetChild('text_rank').text = index + 1 obj:GetChild('text_id').text = rankTable[index + 1].rankTable obj:GetChild('text_name').text = rankTable[index + 1].nick obj:GetChild('text_other').text = rankTable[index + 1].win ImageLoad.Load(rankTable[index + 1].portrait, obj:GetChild('btn_head')._iconObject) end function M:ScoreListRenderer(index, obj) local rankTable = self.scoreRanks obj:GetChild('text_rank').text = index + 1 obj:GetChild('text_id').text = rankTable[index + 1].rankTable obj:GetChild('text_name').text = rankTable[index + 1].nick obj:GetChild('text_other').text = rankTable[index + 1].score ImageLoad.Load(rankTable[index + 1].portrait, obj:GetChild('btn_head')._iconObject) end function M:SearchRank() local fgCtr = ControllerManager.GetController(NewGroupController) local begin_time = math.min(self.leftTimes, self.rightTimes) local end_time = math.max(self.leftTimes, self.rightTimes) + 86399 self:ClearingTable() self:RecursionSearchRank(fgCtr, 0, begin_time, end_time) end function M:RecursionSearchRank(fgCtr, index, begin_time, end_time) ViewUtil:ShowModalWait2() fgCtr:FG_GetMemberRank(self.group_id, 0, index * 2, 2, begin_time, end_time, nil, function(res) if res.ReturnCode ~= 0 then ViewUtil.ErrorTip(res.ReturnCode, "获取排行榜失败") return else local info = res.Data if info.ranks and #info.ranks > 0 then self:RankTableInsert(info.ranks) self:RecursionSearchRank(fgCtr, index + 1, begin_time, end_time) else ViewUtil.CloseModalWait2() table.sort(self.roundRanks, function(a, b) return a.round > b.round end) table.sort(self.winRanks, function(a, b) return a.win > b.win end) table.sort(self.scoreRanks, function(a, b) return a.score > b.score end) if #self.roundRanks > 0 then self._view:GetController('noPeople').selectedIndex = 0 else self._view:GetController('noPeople').selectedIndex = 1 end self._viewList_round.numItems = #self.roundRanks self._viewList_score.numItems = #self.winRanks self._viewList_win.numItems = #self.scoreRanks end end end) end function M:RankTableInsert(ranks) for i = 1, #ranks do table.insert(self.roundRanks, ranks[i]) table.insert(self.winRanks, ranks[i]) table.insert(self.scoreRanks, ranks[i]) end end function M:ClearingTable() self.roundRanks = {} self.winRanks = {} self.scoreRanks = {} self._viewList_round.numItems = 0 self._viewList_score.numItems = 0 self._viewList_win.numItems = 0 end return M