Add simple sort settings
This commit is contained in:
parent
57bfa80e4b
commit
ebda8931ab
5
API.md
5
API.md
@ -53,6 +53,11 @@ data.
|
||||
will be shown as tooltip. Recommended style (in English):
|
||||
First letter capitalized, no puncation at end of sentence,
|
||||
max. 100 characters
|
||||
* `sorting`: (optional) Sorting method of entries
|
||||
* `"abc"`: Alphabetical (default)
|
||||
* `"nosort": Entries appear in no particular order
|
||||
* A table: Entries appear in exactly the same order as specified in the
|
||||
table of entry IDs
|
||||
* `build_formspec`: The template function. Takes entry data as its
|
||||
only parameter (has the data type of the entry data) and must
|
||||
return a formspec which is inserted in the Entry tab.
|
||||
|
15
init.lua
15
init.lua
@ -256,7 +256,8 @@ 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 cat = doc.data.categories[cid]
|
||||
for eid,entry in pairs(cat.entries) do
|
||||
local new_entry = table.copy(entry)
|
||||
new_entry.eid = eid
|
||||
table.insert(entry_table, new_entry)
|
||||
@ -267,10 +268,16 @@ function doc.get_sorted_entry_names(cid)
|
||||
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
|
||||
-- Sorting algorithm
|
||||
local comp
|
||||
if cat.def.sorting ~= "nosort" then
|
||||
if cat.def.sorting == "abc" or cat.def.sorting == nil then
|
||||
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)
|
||||
end
|
||||
end
|
||||
table.sort(entry_table, comp)
|
||||
|
||||
return entry_table
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user