liquid_feedback_frontend

annotate model/unit.lua @ 222:41bb8f0b2c9a

Fixed syntax error
author bsw
date Sun Mar 13 17:01:48 2011 +0100 (2011-03-13)
parents 7ea52c710503
children
rev   line source
bsw@217 1 Unit = mondelefant.new_class()
bsw@217 2 Unit.table = 'unit'
bsw@217 3
bsw@217 4 function Unit:get_flattened_tree()
bsw@217 5 local units = Unit:new_selector():exec()
bsw@217 6 local tmp_list = {}
bsw@217 7 for i, unit in ipairs(units) do
bsw@217 8 tmp_list[unit.id] = unit
bsw@217 9 end
bsw@217 10
bsw@217 11 local function get_depth(unit)
bsw@217 12 local depth
bsw@217 13 if unit.parent_id then
bsw@217 14 local parent = tmp_list[unit.parent_id]
bsw@217 15 depth = get_depth(parent) + 1
bsw@217 16 else
bsw@217 17 depth = 0
bsw@217 18 end
bsw@217 19 return depth
bsw@217 20 end
bsw@217 21
bsw@217 22
bsw@217 23 for i, unit in ipairs(units) do
bsw@217 24 local depth = get_depth(unit)
bsw@217 25 local name = ""
bsw@217 26 for i = 1, depth do
bsw@217 27 if i < depth then
bsw@217 28 name = name .. "     "
bsw@217 29 else
bsw@217 30 name = name .. "   ‣ "
bsw@217 31 end
bsw@217 32 end
bsw@217 33 unit.flattened_tree_name = name .. unit.name
bsw@217 34 end
bsw@217 35
bsw@217 36 local function recurse(units)
bsw@217 37 local list = {}
bsw@217 38 for i, unit in ipairs(units) do
bsw@217 39 list[#list+1] = tmp_list[unit.id]
bsw@217 40 for i, item in ipairs(recurse(
bsw@217 41 Unit:new_selector()
bsw@217 42 :add_where{ "parent_id = ?", unit.id }:add_order_by("name"):exec()
bsw@217 43 )) do
bsw@217 44 list[#list+1] = tmp_list[item.id]
bsw@217 45 end
bsw@217 46 end
bsw@217 47 return list
bsw@217 48 end
bsw@217 49
bsw@217 50 local list = recurse(Unit:new_selector():add_where("parent_id ISNULL"):add_order_by("name"):exec())
bsw@217 51
bsw@217 52 return list
bsw@217 53 end
bsw@218 54
bsw@218 55 function Unit.object_get:name_with_path()
bsw@218 56 local name = ""
bsw@218 57 if self.parent then
bsw@218 58 name = self.parent.name_with_path .. " / "
bsw@218 59 end
bsw@218 60 name = name .. self.name
bsw@218 61 return name
bsw@218 62 end

Impressum / About Us