annotate model/unit.lua @ 320:aae4ff278008
Added missing clear left to style
 | author | 
 bsw | 
 | date | 
 Tue Feb 28 16:04:05 2012 +0100 (2012-02-28) | 
 | parents | 
 c587d8762e62  | 
 | children | 
 63d6549cc00b  | 
 
 | rev | 
   line source | 
| 
bsw@241
 | 
     1 Unit = mondelefant.new_class()
 | 
| 
bsw@241
 | 
     2 Unit.table = 'unit'
 | 
| 
bsw@241
 | 
     3 
 | 
| 
bsw@241
 | 
     4 Unit:add_reference{
 | 
| 
bsw@241
 | 
     5   mode          = '1m',
 | 
| 
bsw@241
 | 
     6   to            = "Area",
 | 
| 
bsw@241
 | 
     7   this_key      = 'id',
 | 
| 
bsw@241
 | 
     8   that_key      = 'unit_id',
 | 
| 
bsw@241
 | 
     9   ref           = 'areas',
 | 
| 
bsw@241
 | 
    10   back_ref      = 'unit'
 | 
| 
bsw@241
 | 
    11 }
 | 
| 
bsw@241
 | 
    12 
 | 
| 
bsw@281
 | 
    13 Unit:add_reference{
 | 
| 
bsw@281
 | 
    14   mode                  = 'mm',
 | 
| 
bsw@281
 | 
    15   to                    = "Member",
 | 
| 
bsw@281
 | 
    16   this_key              = 'id',
 | 
| 
bsw@281
 | 
    17   that_key              = 'id',
 | 
| 
bsw@281
 | 
    18   connected_by_table    = 'privilege',
 | 
| 
bsw@281
 | 
    19   connected_by_this_key = 'unit_id',
 | 
| 
bsw@281
 | 
    20   connected_by_that_key = 'member_id',
 | 
| 
bsw@281
 | 
    21   ref                   = 'members'
 | 
| 
bsw@281
 | 
    22 }
 | 
| 
bsw@281
 | 
    23 
 | 
| 
bsw@286
 | 
    24 function recursive_add_child_units(units, parent_unit)
 | 
| 
bsw@286
 | 
    25   parent_unit.childs = {}
 | 
| 
bsw@286
 | 
    26   for i, unit in ipairs(units) do
 | 
| 
bsw@286
 | 
    27     if unit.parent_id == parent_unit.id then
 | 
| 
bsw@286
 | 
    28       parent_unit.childs[#(parent_unit.childs)+1] = unit
 | 
| 
bsw@286
 | 
    29       recursive_add_child_units(units, unit)
 | 
| 
bsw@286
 | 
    30     end
 | 
| 
bsw@286
 | 
    31   end
 | 
| 
bsw@286
 | 
    32 end  
 | 
| 
bsw@286
 | 
    33 
 | 
| 
bsw@286
 | 
    34 function recursive_get_child_units(units, parent_unit, depth)
 | 
| 
bsw@286
 | 
    35   for i, unit in ipairs(parent_unit.childs) do
 | 
| 
bsw@286
 | 
    36     unit.depth = depth
 | 
| 
bsw@286
 | 
    37     units[#units+1] = unit
 | 
| 
bsw@286
 | 
    38     recursive_get_child_units(units, unit, depth + 1)
 | 
| 
bsw@286
 | 
    39   end
 | 
| 
bsw@286
 | 
    40 end
 | 
| 
bsw@241
 | 
    41 
 | 
| 
bsw@286
 | 
    42 function Unit:get_flattened_tree()
 | 
| 
bsw@286
 | 
    43   local units = Unit:new_selector():add_order_by("name"):exec()
 | 
| 
bsw@286
 | 
    44   local unit_tree = {}
 | 
| 
bsw@286
 | 
    45   for i, unit in ipairs(units) do
 | 
| 
bsw@286
 | 
    46     if not unit.parent_id then
 | 
| 
bsw@286
 | 
    47       unit_tree[#unit_tree+1] = unit
 | 
| 
bsw@286
 | 
    48       recursive_add_child_units(units, unit)
 | 
| 
bsw@286
 | 
    49     end
 | 
| 
bsw@286
 | 
    50   end
 | 
| 
bsw@286
 | 
    51   local depth = 1
 | 
| 
bsw@286
 | 
    52   local units = {}
 | 
| 
bsw@286
 | 
    53   for i, unit in ipairs(unit_tree) do
 | 
| 
bsw@286
 | 
    54     unit.depth = depth
 | 
| 
bsw@286
 | 
    55     units[#units+1] = unit
 | 
| 
bsw@286
 | 
    56     recursive_get_child_units(units, unit, depth + 1)
 | 
| 
bsw@286
 | 
    57   end
 | 
| 
bsw@286
 | 
    58   return units
 | 
| 
bsw@241
 | 
    59 end
 |