Add ability to select students
parent
d2cecfa738
commit
d74174f5dd
|
@ -9,4 +9,5 @@ read_globals = {
|
||||||
"minetest",
|
"minetest",
|
||||||
"sfinv",
|
"sfinv",
|
||||||
"vector",
|
"vector",
|
||||||
|
table={fields={"copy"}},
|
||||||
}
|
}
|
||||||
|
|
4
api.lua
4
api.lua
|
@ -62,8 +62,10 @@ function classroom.get_students_by_selector(selector)
|
||||||
return classroom.get_students()
|
return classroom.get_students()
|
||||||
elseif selector:sub(1, 6) == "group:" then
|
elseif selector:sub(1, 6) == "group:" then
|
||||||
return classroom.get_group_students(selector:sub(7))
|
return classroom.get_group_students(selector:sub(7))
|
||||||
|
elseif selector:sub(1, 5) == "user:" then
|
||||||
|
return { selector:sub(6) }
|
||||||
else
|
else
|
||||||
return { selector }
|
return {}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
54
gui.lua
54
gui.lua
|
@ -42,15 +42,22 @@ sfinv.register_page("edu", {
|
||||||
|
|
||||||
fs[#fs + 1] = "]"
|
fs[#fs + 1] = "]"
|
||||||
fs[#fs + 1] = "tabheader[0.3,1.1;group;All,Group 1;1]"
|
fs[#fs + 1] = "tabheader[0.3,1.1;group;All,Group 1;1]"
|
||||||
fs[#fs + 1] = "table[0,0.8;5,8;kids;,Name"
|
fs[#fs + 1] = "table[0,0.8;5,8;students;,Name"
|
||||||
for _, col in pairs(infos) do
|
for _, col in pairs(infos) do
|
||||||
fs[#fs + 1] = ",," .. col.title
|
fs[#fs + 1] = ",," .. col.title
|
||||||
end
|
end
|
||||||
|
|
||||||
for _, student in pairs(get_group(context)) do
|
local students = get_group(context)
|
||||||
|
local selection_id = ""
|
||||||
|
context.students = table.copy(students)
|
||||||
|
for i, student in pairs(students) do
|
||||||
fs[#fs + 1] = ",,"
|
fs[#fs + 1] = ",,"
|
||||||
fs[#fs + 1] = minetest.formspec_escape(student)
|
fs[#fs + 1] = minetest.formspec_escape(student)
|
||||||
|
|
||||||
|
if student == context.selected_student then
|
||||||
|
selection_id = tostring(i + 1)
|
||||||
|
end
|
||||||
|
|
||||||
for _, col in pairs(infos) do
|
for _, col in pairs(infos) do
|
||||||
local color, value
|
local color, value
|
||||||
if col.type == "priv" then
|
if col.type == "priv" then
|
||||||
|
@ -65,7 +72,10 @@ sfinv.register_page("edu", {
|
||||||
fs[#fs + 1] = minetest.formspec_escape(value)
|
fs[#fs + 1] = minetest.formspec_escape(value)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
fs[#fs + 1] = ";2]"
|
|
||||||
|
fs[#fs + 1] = ";"
|
||||||
|
fs[#fs + 1] = selection_id
|
||||||
|
fs[#fs + 1] = "]"
|
||||||
|
|
||||||
fs[#fs + 1] = "container[5.25,1.1]"
|
fs[#fs + 1] = "container[5.25,1.1]"
|
||||||
fs[#fs + 1] = "box[-0.25,-0.3;3.1,1.15;#666]"
|
fs[#fs + 1] = "box[-0.25,-0.3;3.1,1.15;#666]"
|
||||||
|
@ -86,7 +96,7 @@ sfinv.register_page("edu", {
|
||||||
else
|
else
|
||||||
fs[#fs + 1] = "button[0.9,0;1,1;select_group;Group]"
|
fs[#fs + 1] = "button[0.9,0;1,1;select_group;Group]"
|
||||||
end
|
end
|
||||||
if not context.selected then
|
if not context.selected_student then
|
||||||
fs[#fs + 1] = "box[1.8,0.1;0.8,0.7;#333]"
|
fs[#fs + 1] = "box[1.8,0.1;0.8,0.7;#333]"
|
||||||
fs[#fs + 1] = "label[1.85,0.25;Selected]"
|
fs[#fs + 1] = "label[1.85,0.25;Selected]"
|
||||||
fs[#fs + 1] = "tooltip[1.8,0;1,1;Please select a student first]"
|
fs[#fs + 1] = "tooltip[1.8,0;1,1;Please select a student first]"
|
||||||
|
@ -130,6 +140,30 @@ sfinv.register_page("edu", {
|
||||||
return sfinv.make_formspec(player, context, table.concat(fs, ""), false)
|
return sfinv.make_formspec(player, context, table.concat(fs, ""), false)
|
||||||
end,
|
end,
|
||||||
on_player_receive_fields = function(self, player, context, fields)
|
on_player_receive_fields = function(self, player, context, fields)
|
||||||
|
if fields.students then
|
||||||
|
local evt = minetest.explode_table_event(fields.students)
|
||||||
|
local i = (evt.row or 0) - 1
|
||||||
|
if evt.type == "CHG" and i >= 1 and i <= #context.students then
|
||||||
|
context.selected_student = context.students[i]
|
||||||
|
sfinv.set_player_inventory_formspec(player)
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if fields.select_all then
|
||||||
|
context.select_toggle = "all"
|
||||||
|
sfinv.set_player_inventory_formspec(player)
|
||||||
|
return true
|
||||||
|
elseif fields.select_group then
|
||||||
|
context.select_toggle = "group"
|
||||||
|
sfinv.set_player_inventory_formspec(player)
|
||||||
|
return true
|
||||||
|
elseif fields.select_selected then
|
||||||
|
context.select_toggle = "selected"
|
||||||
|
sfinv.set_player_inventory_formspec(player)
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
for aname, action in pairs(classroom.get_actions()) do
|
for aname, action in pairs(classroom.get_actions()) do
|
||||||
if fields["action_" .. aname] then
|
if fields["action_" .. aname] then
|
||||||
local selector
|
local selector
|
||||||
|
@ -138,7 +172,7 @@ sfinv.register_page("edu", {
|
||||||
elseif context.select_toggle == "group" then
|
elseif context.select_toggle == "group" then
|
||||||
selector = "group:" .. context.groupname
|
selector = "group:" .. context.groupname
|
||||||
elseif context.select_toggle == "selected" then
|
elseif context.select_toggle == "selected" then
|
||||||
error("Unimplemented")
|
selector = "user:" .. context.selected_student
|
||||||
else
|
else
|
||||||
error("Unknown selector")
|
error("Unknown selector")
|
||||||
end
|
end
|
||||||
|
@ -149,15 +183,5 @@ sfinv.register_page("edu", {
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if fields.select_all then
|
|
||||||
context.select_toggle = "all"
|
|
||||||
sfinv.set_player_inventory_formspec(player)
|
|
||||||
elseif fields.select_group then
|
|
||||||
context.select_toggle = "group"
|
|
||||||
sfinv.set_player_inventory_formspec(player)
|
|
||||||
elseif fields.select_selected then
|
|
||||||
context.select_toggle = "selected"
|
|
||||||
sfinv.set_player_inventory_formspec(player)
|
|
||||||
end
|
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in New Issue