122 lines
3.0 KiB
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
|