Add ability to select students
parent
d2cecfa738
commit
d74174f5dd
|
@ -9,4 +9,5 @@ read_globals = {
|
|||
"minetest",
|
||||
"sfinv",
|
||||
"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()
|
||||
elseif selector:sub(1, 6) == "group:" then
|
||||
return classroom.get_group_students(selector:sub(7))
|
||||
elseif selector:sub(1, 5) == "user:" then
|
||||
return { selector:sub(6) }
|
||||
else
|
||||
return { selector }
|
||||
return {}
|
||||
end
|
||||
end
|
||||
|
||||
|
|
54
gui.lua
54
gui.lua
|
@ -42,15 +42,22 @@ sfinv.register_page("edu", {
|
|||
|
||||
fs[#fs + 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
|
||||
fs[#fs + 1] = ",," .. col.title
|
||||
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] = minetest.formspec_escape(student)
|
||||
|
||||
if student == context.selected_student then
|
||||
selection_id = tostring(i + 1)
|
||||
end
|
||||
|
||||
for _, col in pairs(infos) do
|
||||
local color, value
|
||||
if col.type == "priv" then
|
||||
|
@ -65,7 +72,10 @@ sfinv.register_page("edu", {
|
|||
fs[#fs + 1] = minetest.formspec_escape(value)
|
||||
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] = "box[-0.25,-0.3;3.1,1.15;#666]"
|
||||
|
@ -86,7 +96,7 @@ sfinv.register_page("edu", {
|
|||
else
|
||||
fs[#fs + 1] = "button[0.9,0;1,1;select_group;Group]"
|
||||
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] = "label[1.85,0.25;Selected]"
|
||||
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)
|
||||
end,
|
||||
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
|
||||
if fields["action_" .. aname] then
|
||||
local selector
|
||||
|
@ -138,7 +172,7 @@ sfinv.register_page("edu", {
|
|||
elseif context.select_toggle == "group" then
|
||||
selector = "group:" .. context.groupname
|
||||
elseif context.select_toggle == "selected" then
|
||||
error("Unimplemented")
|
||||
selector = "user:" .. context.selected_student
|
||||
else
|
||||
error("Unknown selector")
|
||||
end
|
||||
|
@ -149,15 +183,5 @@ sfinv.register_page("edu", {
|
|||
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,
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue