Automatically sort entries by name
This commit is contained in:
parent
4b052c050f
commit
4fc84edb8a
29
init.lua
29
init.lua
@ -58,9 +58,10 @@ function doc.generate_entry_list(cid, playername)
|
|||||||
local entry_textlist = "textlist[0,1;11,7;doc_catlist;"
|
local entry_textlist = "textlist[0,1;11,7;doc_catlist;"
|
||||||
local counter = 0
|
local counter = 0
|
||||||
doc.data.players[playername].entry_ids = {}
|
doc.data.players[playername].entry_ids = {}
|
||||||
for eid,entry in pairs(doc.data.categories[cid].entries) do
|
local entries = doc.get_sorted_entry_names(cid)
|
||||||
table.insert(doc.data.players[playername].entry_ids, eid)
|
for i=1, #entries do
|
||||||
entry_textlist = entry_textlist .. entry.name .. ","
|
table.insert(doc.data.players[playername].entry_ids, entries[i].eid)
|
||||||
|
entry_textlist = entry_textlist .. entries[i].name .. ","
|
||||||
counter = counter + 1
|
counter = counter + 1
|
||||||
end
|
end
|
||||||
if counter >= 1 then
|
if counter >= 1 then
|
||||||
@ -79,6 +80,28 @@ function doc.generate_entry_list(cid, playername)
|
|||||||
return formstring
|
return formstring
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function doc.get_sorted_entry_names(cid)
|
||||||
|
local sort_table = {}
|
||||||
|
local entry_table = {}
|
||||||
|
for eid,entry in pairs(doc.data.categories[cid].entries) do
|
||||||
|
local new_entry = table.copy(entry)
|
||||||
|
new_entry.eid = eid
|
||||||
|
table.insert(entry_table, new_entry)
|
||||||
|
table.insert(sort_table, entry.name)
|
||||||
|
end
|
||||||
|
table.sort(sort_table)
|
||||||
|
local reverse_sort_table = table.copy(sort_table)
|
||||||
|
for i=1, #sort_table do
|
||||||
|
reverse_sort_table[sort_table[i]] = i
|
||||||
|
end
|
||||||
|
local comp = function(e1, e2)
|
||||||
|
if reverse_sort_table[e1.name] < reverse_sort_table[e2.name] then return true else return false end
|
||||||
|
end
|
||||||
|
table.sort(entry_table, comp)
|
||||||
|
|
||||||
|
return entry_table
|
||||||
|
end
|
||||||
|
|
||||||
function doc.formspec_category(id, playername)
|
function doc.formspec_category(id, playername)
|
||||||
local formstring
|
local formstring
|
||||||
if id == nil then
|
if id == nil then
|
||||||
|
Loading…
x
Reference in New Issue
Block a user