diff options
author | Wuzzy <almikes@aol.com> | 2016-08-13 10:19:34 +0200 |
---|---|---|
committer | Wuzzy <almikes@aol.com> | 2016-08-13 10:19:34 +0200 |
commit | a8e72e500800f8493fb317cd0f00e5150e4f1950 (patch) | |
tree | 5d638005c5d01332ed05e2d9392243a706df4e5f /init.lua | |
parent | 5127c79c2069e3fe9d3ea4c327c67fb5bfe51c2f (diff) |
Add support for custom entry sorting
Diffstat (limited to 'init.lua')
-rw-r--r-- | init.lua | 22 |
1 files changed, 19 insertions, 3 deletions
@@ -257,20 +257,36 @@ function doc.get_sorted_entry_names(cid) local sort_table = {} local entry_table = {} local cat = doc.data.categories[cid] + local used_eids = {} + -- Predefined sorting + if cat.def.sorting == "custom" then + for i=1,#cat.def.sorting_data do + local new_entry = table.copy(cat.entries[cat.def.sorting_data[i]]) + new_entry.eid = cat.def.sorting_data[i] + table.insert(entry_table, new_entry) + used_eids[cat.def.sorting_data[i]] = true + end + end for eid,entry in pairs(cat.entries) do local new_entry = table.copy(entry) new_entry.eid = eid - table.insert(entry_table, new_entry) + if not used_eids[eid] then + table.insert(entry_table, new_entry) + end table.insert(sort_table, entry.name) end - table.sort(sort_table) + if cat.def.sorting == "custom" then + return entry_table + else + table.sort(sort_table) + end local reverse_sort_table = table.copy(sort_table) for i=1, #sort_table do reverse_sort_table[sort_table[i]] = i end - -- Sorting algorithm local comp if cat.def.sorting ~= "nosort" then + -- Alphabetic sorting 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 |