142 lines
4.5 KiB
Lua
142 lines
4.5 KiB
Lua
--[[
|
|
* @ClassName QuestionnairePanel
|
|
* @Description 调查问卷面板
|
|
* @Date 2019/9/3 15:42
|
|
* @Author MagicianJoker, fengliudianshao@outlook.com
|
|
* @Copyright Copyright (c) 2019, MagicianJoker
|
|
--]]
|
|
local QuestionnaireListItem = require("Modules/Questionnaire/QuestionnaireListItem")
|
|
---@class QuestionnairePanel
|
|
local QuestionnairePanel = quick_class("QuestionnairePanel", BasePanel)
|
|
|
|
function QuestionnairePanel:InitComponent()
|
|
self.spLoader = SpriteLoader.New()
|
|
self.closeBtn = Util.GetGameObject(self.transform, "frame/bg/closeBtn")
|
|
|
|
self.questionContent = Util.GetGameObject(self.transform, "frame/bg/questionList/viewPort/content")
|
|
:GetComponent("RectTransform")
|
|
self.questionPre = Util.GetGameObject(self.questionContent.transform, "questionPre")
|
|
self.questionPre:SetActive(false)
|
|
self.questionList = {}
|
|
|
|
self.bottomPart = Util.GetGameObject(self.transform, "frame/bg/questionList/viewPort/content/bottomPart")
|
|
--self.remainTime = Util.GetGameObject(self.bottomPart, "remainTime"):GetComponent("Text")
|
|
self.commitBtn = Util.GetGameObject(self.bottomPart, "commitBtn")
|
|
|
|
end
|
|
|
|
function QuestionnairePanel:BindEvent()
|
|
Util.AddClick(self.closeBtn, function()
|
|
self:ClosePanel()
|
|
end)
|
|
|
|
Util.AddClick(self.commitBtn, function()
|
|
self:OnCommitBtnClicked()
|
|
end)
|
|
end
|
|
|
|
function QuestionnairePanel:AddListener()
|
|
Game.GlobalEvent:AddEvent(GameEvent.Questionnaire.OnQuestionnaireChange, self.OnQuestionnaireCallBack, self)
|
|
end
|
|
|
|
function QuestionnairePanel:RemoveListener()
|
|
Game.GlobalEvent:RemoveEvent(GameEvent.Questionnaire.OnQuestionnaireChange, self.OnQuestionnaireCallBack, self)
|
|
end
|
|
|
|
function QuestionnairePanel:OnOpen(context)
|
|
self.context = context
|
|
self.questionContent.anchoredPosition = Vector2(0, 0)
|
|
end
|
|
|
|
function QuestionnairePanel:OnShow()
|
|
if self.context then
|
|
self:RemainTimeDown(self.context.endtime - math.floor(GetTimeStamp()))
|
|
self:SetQuestList()
|
|
end
|
|
end
|
|
|
|
function QuestionnairePanel:OnClose()
|
|
if self.timer then
|
|
self.timer:Stop()
|
|
self.timer = nil
|
|
end
|
|
end
|
|
|
|
function QuestionnairePanel:OnCommitBtnClicked()
|
|
local answerList, noAnswerIndex = {}, nil
|
|
for idx, questionInfo in ipairs(self.questionList) do
|
|
if questionInfo.answer ~= "" then
|
|
table.insert(answerList, questionInfo.answer)
|
|
else
|
|
if questionInfo.answerType == 0 then
|
|
noAnswerIndex = idx
|
|
break
|
|
end
|
|
end
|
|
end
|
|
if noAnswerIndex then
|
|
PopupTipPanel.ShowTip(string.format(Language[11652], noAnswerIndex))
|
|
return
|
|
end
|
|
NetManager.RequestUpDataQuestion(answerList, function(respond)
|
|
if respond.result == 0 then
|
|
PopupTipPanel.ShowTip(Language[11653])
|
|
QuestionnaireManager.SetQuestionState(1)
|
|
Game.GlobalEvent:DispatchEvent(GameEvent.Questionnaire.OnQuestionnaireChange, 1)
|
|
self:ClosePanel()
|
|
else
|
|
PopupTipPanel.ShowTip(Language[11654])
|
|
end
|
|
end)
|
|
end
|
|
|
|
function QuestionnairePanel:SetQuestList()
|
|
if table.nums(self.questionList) > 0 then
|
|
return
|
|
end
|
|
for i = 1, #self.context.questOptions do
|
|
local item = QuestionnaireListItem.create(self.questionPre, self.questionContent.transform)
|
|
item:SetValue(i, self.context.questOptions[i])
|
|
table.insert(self.questionList, item)
|
|
end
|
|
self.bottomPart.transform:SetAsLastSibling()
|
|
end
|
|
|
|
function QuestionnairePanel:RemainTimeDown(timeDown)
|
|
if self.timer then
|
|
self.timer:Stop()
|
|
self.timer = nil
|
|
end
|
|
--self.remainTime.text = "活动结束倒计时:" .. DateUtils.GetTimeFormatV2(timeDown)
|
|
if timeDown <= 0 then
|
|
PopupTipPanel.ShowTip(Language[10024])
|
|
self:SetQuestionnaireOver()
|
|
self:ClosePanel()
|
|
return
|
|
end
|
|
self.timer = Timer.New(function()
|
|
--self.remainTime.text = "活动结束倒计时:" .. DateUtils.GetTimeFormatV2(timeDown)
|
|
if timeDown <= 0 then
|
|
self.timer:Stop()
|
|
self.timer = nil
|
|
self:SetQuestionnaireOver()
|
|
self:ClosePanel()
|
|
end
|
|
timeDown = timeDown - 1
|
|
end, 1, -1, true)
|
|
self.timer:Start()
|
|
end
|
|
|
|
function QuestionnairePanel:SetQuestionnaireOver()
|
|
QuestionnaireManager.ResetArgs()
|
|
QuestionnaireManager.SetQuestionState(-1)
|
|
Game.GlobalEvent:DispatchEvent(GameEvent.Questionnaire.OnQuestionnaireChange)
|
|
end
|
|
|
|
function QuestionnairePanel:OnQuestionnaireCallBack(state)
|
|
if state == -1 then
|
|
self:ClosePanel()
|
|
end
|
|
end
|
|
|
|
return QuestionnairePanel |