hengyang_client/lua_probject/base_project/Game/View/FamilyZuo/FamilyChooseTimeView.lua

122 lines
3.0 KiB
Lua

local FamilyChooseTimeView = {}
local M = FamilyChooseTimeView
function FamilyChooseTimeView.new(data, callback)
setmetatable(M, { __index = BaseWindow })
local self = setmetatable({}, { __index = M })
self.class = "FamilyChooseTimeView"
self._data = data
self._callback = callback
self._close_destroy = true
self:init("ui://Family/FamilyChooseTime")
return self
end
function M:init(url)
getmetatable(M).__index.init(self, url)
local view = self._view
self._viewList = view:GetChild('list')
self._viewList:SetVirtual()
self._viewList.itemRenderer = handler(self, self.ListRenderer)
self._viewList.onClickItem:Set(handler(self, self.ClickListItem))
view:GetChild('btn_confirm').onClick:Set(function()
self._callback(self._data_times[self._left_Index], self._data_times[self._right_Index])
self:Destroy()
end)
view:GetChild('btn_cancel').onClick:Set(function()
self:Destroy()
end)
self:FillData()
end
function M:InitTime()
local dataTable = os.date("*t")
dataTable.hour = 0
dataTable.min = 0
dataTable.sec = 0
local timeStasmp = os.time(dataTable)
return timeStasmp
end
function M:ClickListItem(context)
local item = context.data
local index = self._viewList:GetChildIndex(item) + 1
if index > self._selectedIndex then
self._left_Index = self._selectedIndex
self._right_Index = index
else
self._right_Index = self._selectedIndex
self._left_Index = index
end
self._selectedIndex = index
self._viewList:RefreshVirtualList()
end
function M:ListRenderer(index, obj)
if index >= self._left_Index - 1 and index < self._right_Index then
obj.selected = true
else
obj.selected = false
end
if index == 0 then
obj.text = "今天"
return
end
if index == 1 then
obj.text = "昨天"
return
end
obj.text = os.date("%d", self._data_times[index + 1])
end
function M:FillData()
local data = self._data
local days = data.days or 7
self._data_times = {}
local dataTable = os.date("*t")
dataTable.hour = 0
dataTable.min = 0
dataTable.sec = 0
local timeStasmp = os.time(dataTable)
local leftTime = data.left or timeStasmp
local rightTime = data.right or timeStasmp
for i = 1, days do
local thisTimeStamp = timeStasmp - (i - 1) * 86400
if leftTime == thisTimeStamp then
self._left_Index = i
end
if rightTime == thisTimeStamp then
self._right_Index = i
end
table.insert(self._data_times, thisTimeStamp)
end
self._selectedIndex = self._left_Index
self._viewList.numItems = days
self:Show()
end
-- 打开窗口
function M:Show()
getmetatable(M).__index.Show(self)
end
-- 关闭窗口
function M:Close()
getmetatable(M).__index.Close(self)
end
-- 销毁窗口
function M:Destroy()
getmetatable(M).__index.Destroy(self)
end
return M