mirror of
https://github.com/Insality/druid
synced 2025-09-28 02:22:19 +02:00
Add dynamic grid to navigate example
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
local druid = require("druid.druid")
|
||||
|
||||
|
||||
local function create_simple_element(self, data, index, data_list)
|
||||
local function create_element(self, data, index, data_list)
|
||||
-- Here we will create elements without druid components, just nodes
|
||||
local instance = gui.clone_tree(self.prefab_square)
|
||||
gui.set_enabled(instance["prefab_square"], true)
|
||||
@@ -10,25 +10,14 @@ local function create_simple_element(self, data, index, data_list)
|
||||
end
|
||||
|
||||
|
||||
function init(self)
|
||||
self.druid = druid.new(self)
|
||||
|
||||
self.data_set = {}
|
||||
for i = 1, 999 do
|
||||
table.insert(self.data_set, i)
|
||||
end
|
||||
|
||||
self.prefab_square = gui.get_node("prefab_square")
|
||||
gui.set_enabled(self.prefab_square, false)
|
||||
|
||||
|
||||
local function init_data_list_with_static_grid(self)
|
||||
local scroll_simple = self.druid:new_scroll("data_list_simple", "data_list_simple_content")
|
||||
:set_vertical_scroll(false)
|
||||
|
||||
--- The 999999 number in row - is kind of hack for single line static grid
|
||||
local grid_simple = self.druid:new_static_grid("data_list_simple_content", "prefab_square", 999999)
|
||||
|
||||
self.data_list_simple = self.druid:new_data_list(scroll_simple, grid_simple, create_simple_element)
|
||||
self.data_list_simple = self.druid:new_data_list(scroll_simple, grid_simple, create_element)
|
||||
self.data_list_simple:set_data(self.data_set)
|
||||
|
||||
self.slider_simple = self.druid:new_slider("grid_scroll_pin", vmath.vector3(200, 0, 0))
|
||||
@@ -50,6 +39,51 @@ function init(self)
|
||||
end
|
||||
|
||||
|
||||
local function init_data_list_with_dynamic_grid(self)
|
||||
local scroll_dynamic = self.druid:new_scroll("data_list_dynamic", "data_list_dynamic_content")
|
||||
:set_vertical_scroll(false)
|
||||
|
||||
local grid_dynamic = self.druid:new_dynamic_grid("data_list_dynamic_content")
|
||||
|
||||
self.data_list_dynamic = self.druid:new_data_list(scroll_dynamic, grid_dynamic, create_element)
|
||||
self.data_list_dynamic:set_data(self.data_set)
|
||||
|
||||
self.slider_dynamic = self.druid:new_slider("grid_scroll_dynamic_pin", vmath.vector3(200, 0, 0))
|
||||
-- Disable slider input, now we can not use slider with data list
|
||||
self.slider_dynamic:set_input_enabled(false)
|
||||
self.data_list_dynamic.on_scroll_progress_change:subscribe(function(_, progress)
|
||||
self.slider_dynamic:set(progress, true)
|
||||
end)
|
||||
|
||||
self.druid:new_button("button_dynamic_first/button", function()
|
||||
self.data_list_dynamic:scroll_to_index(1)
|
||||
end)
|
||||
self.druid:new_button("button_dynamic_hundred/button", function()
|
||||
self.data_list_dynamic:scroll_to_index(100)
|
||||
end)
|
||||
self.druid:new_button("button_dynamic_last/button", function()
|
||||
self.data_list_dynamic:scroll_to_index(#self.data_set)
|
||||
end)
|
||||
end
|
||||
|
||||
|
||||
function init(self)
|
||||
self.druid = druid.new(self)
|
||||
|
||||
self.data_set = {}
|
||||
for i = 1, 999 do
|
||||
table.insert(self.data_set, i)
|
||||
end
|
||||
|
||||
self.prefab_square = gui.get_node("prefab_square")
|
||||
gui.set_enabled(self.prefab_square, false)
|
||||
|
||||
|
||||
init_data_list_with_static_grid(self)
|
||||
init_data_list_with_dynamic_grid(self)
|
||||
end
|
||||
|
||||
|
||||
function final(self)
|
||||
self.druid:final()
|
||||
end
|
||||
|
Reference in New Issue
Block a user