| rev | 
   line source | 
| 
bsw@248
 | 
     1 function change_delegation(scope, unit_id, area_id, issue, delegation, initiative_id)
 | 
| 
bsw/jbe@19
 | 
     2   local image
 | 
| 
bsw/jbe@19
 | 
     3   local text
 | 
| 
bsw@248
 | 
     4   if scope == "unit" and delegation and delegation.unit_id then
 | 
| 
bsw/jbe@19
 | 
     5     image = { static = "icons/16/table_go.png" }
 | 
| 
bsw@248
 | 
     6     text = _"Change unit delegation"
 | 
| 
bsw@248
 | 
     7   elseif scope == "unit" and not (delegation and delegation.unit_id) then
 | 
| 
bsw/jbe@19
 | 
     8     image = { static = "icons/16/table_go.png" }
 | 
| 
bsw@248
 | 
     9     text = _"Set unit delegation"
 | 
| 
bsw/jbe@19
 | 
    10   elseif scope == "area" and delegation and delegation.area_id then
 | 
| 
bsw/jbe@19
 | 
    11     image = { static = "icons/16/table_go.png" }
 | 
| 
bsw/jbe@19
 | 
    12     text = _"Change area delegation"
 | 
| 
bsw/jbe@19
 | 
    13   elseif scope == "area" and not (delegation and delegation.area_id) then
 | 
| 
bsw/jbe@19
 | 
    14     image = { static = "icons/16/table_go.png" }
 | 
| 
bsw/jbe@19
 | 
    15     text = _"Set area delegation"
 | 
| 
bsw/jbe@19
 | 
    16   elseif scope == "issue" then
 | 
| 
bsw/jbe@19
 | 
    17     if delegation and delegation.issue_id then
 | 
| 
bsw/jbe@19
 | 
    18       image = { static = "icons/16/table_go.png" }
 | 
| 
bsw/jbe@19
 | 
    19       text = _"Change issue delegation"
 | 
| 
bsw/jbe@19
 | 
    20     elseif issue.state ~= "finished" and issue.state ~= "cancelled" then
 | 
| 
bsw/jbe@19
 | 
    21       image = { static = "icons/16/table_go.png" }
 | 
| 
bsw/jbe@19
 | 
    22       text = _"Set issue delegation"
 | 
| 
bsw/jbe@19
 | 
    23     end
 | 
| 
bsw/jbe@19
 | 
    24   end
 | 
| 
bsw/jbe@19
 | 
    25   ui.container{
 | 
| 
bsw/jbe@19
 | 
    26     attr = {
 | 
| 
bsw/jbe@19
 | 
    27       class = "change_delegation",
 | 
| 
bsw/jbe@19
 | 
    28     },
 | 
| 
bsw/jbe@19
 | 
    29     content = function()
 | 
| 
bsw/jbe@19
 | 
    30       ui.link{
 | 
| 
bsw/jbe@19
 | 
    31         image  = image,
 | 
| 
bsw/jbe@19
 | 
    32         text   = text,
 | 
| 
bsw/jbe@19
 | 
    33         module = "delegation",
 | 
| 
bsw/jbe@19
 | 
    34         view = "new",
 | 
| 
bsw/jbe@19
 | 
    35         params = {
 | 
| 
bsw/jbe@19
 | 
    36           issue_id = issue and issue.id or nil,
 | 
| 
poelzi@111
 | 
    37           initiative_id = initiative_id or nil,
 | 
| 
bsw@248
 | 
    38           area_id = area_id,
 | 
| 
bsw@248
 | 
    39           unit_id = unit_id
 | 
| 
bsw/jbe@19
 | 
    40         },
 | 
| 
bsw/jbe@19
 | 
    41       }
 | 
| 
bsw/jbe@19
 | 
    42       if delegation then
 | 
| 
bsw/jbe@19
 | 
    43         ui.link{
 | 
| 
bsw/jbe@19
 | 
    44           image  = { static = "icons/16/delete.png" },
 | 
| 
bsw/jbe@19
 | 
    45           text   = _"Revoke",
 | 
| 
bsw/jbe@19
 | 
    46           module = "delegation",
 | 
| 
bsw/jbe@19
 | 
    47           action = "update",
 | 
| 
bsw@248
 | 
    48           params = { issue_id = delegation.issue_id, area_id = delegation.area_id, unit_id = delegation.unit_id, delete = true },
 | 
| 
bsw/jbe@19
 | 
    49           routing = {
 | 
| 
bsw/jbe@19
 | 
    50             default = {
 | 
| 
bsw/jbe@19
 | 
    51               mode = "redirect",
 | 
| 
bsw/jbe@19
 | 
    52               module = request.get_module(),
 | 
| 
bsw/jbe@19
 | 
    53               view = request.get_view(),
 | 
| 
bsw/jbe@19
 | 
    54               id = param.get_id_cgi(),
 | 
| 
bsw/jbe@19
 | 
    55               params = param.get_all_cgi()
 | 
| 
bsw/jbe@19
 | 
    56             }
 | 
| 
bsw/jbe@19
 | 
    57           }
 | 
| 
bsw/jbe@19
 | 
    58         }
 | 
| 
bsw/jbe@19
 | 
    59       end
 | 
| 
bsw/jbe@19
 | 
    60     end
 | 
| 
bsw/jbe@19
 | 
    61   }
 | 
| 
bsw/jbe@19
 | 
    62 end
 | 
| 
bsw/jbe@5
 | 
    63 
 | 
| 
bsw/jbe@19
 | 
    64 local delegation
 | 
| 
bsw@248
 | 
    65 local unit_id
 | 
| 
bsw/jbe@19
 | 
    66 local area_id
 | 
| 
bsw/jbe@19
 | 
    67 local issue_id
 | 
| 
poelzi@111
 | 
    68 local initiative_id
 | 
| 
bsw/jbe@19
 | 
    69 
 | 
| 
bsw@248
 | 
    70 local scope = "unit"
 | 
| 
bsw@248
 | 
    71 
 | 
| 
bsw@248
 | 
    72 unit_id = param.get("unit_id", atom.integer)
 | 
| 
bsw/jbe@5
 | 
    73 
 | 
| 
bsw/jbe@19
 | 
    74 if param.get("initiative_id", atom.integer) then
 | 
| 
poelzi@111
 | 
    75   initiative_id = param.get("initiative_id", atom.integer)
 | 
| 
poelzi@111
 | 
    76   issue_id = Initiative:by_id(initiative_id).issue_id
 | 
| 
bsw/jbe@19
 | 
    77   scope = "issue"
 | 
| 
bsw/jbe@19
 | 
    78 end
 | 
| 
bsw/jbe@5
 | 
    79 
 | 
| 
bsw/jbe@19
 | 
    80 if param.get("issue_id", atom.integer) then
 | 
| 
bsw/jbe@19
 | 
    81   issue_id = param.get("issue_id", atom.integer)
 | 
| 
bsw/jbe@19
 | 
    82   scope = "issue"
 | 
| 
bsw/jbe@19
 | 
    83 end
 | 
| 
bsw/jbe@19
 | 
    84 
 | 
| 
bsw/jbe@19
 | 
    85 if param.get("area_id", atom.integer) then
 | 
| 
bsw/jbe@19
 | 
    86   area_id = param.get("area_id", atom.integer)
 | 
| 
bsw/jbe@19
 | 
    87   scope = "area"
 | 
| 
bsw/jbe@19
 | 
    88 end
 | 
| 
bsw/jbe@5
 | 
    89 
 | 
| 
bsw/jbe@5
 | 
    90 
 | 
| 
bsw/jbe@5
 | 
    91 
 | 
| 
bsw/jbe@19
 | 
    92 local delegation
 | 
| 
bsw/jbe@19
 | 
    93 local issue
 | 
| 
poelzi@111
 | 
    94 
 | 
| 
bsw/jbe@19
 | 
    95 if issue_id then
 | 
| 
bsw/jbe@19
 | 
    96   issue = Issue:by_id(issue_id)
 | 
| 
bsw@248
 | 
    97   delegation = Delegation:by_pk(app.session.member.id, nil, nil, issue_id)
 | 
| 
bsw/jbe@19
 | 
    98   if not delegation then
 | 
| 
bsw@248
 | 
    99     delegation = Delegation:by_pk(app.session.member.id, nil, issue.area_id)
 | 
| 
bsw/jbe@5
 | 
   100   end
 | 
| 
bsw/jbe@19
 | 
   101 elseif area_id then
 | 
| 
bsw@248
 | 
   102   delegation = Delegation:by_pk(app.session.member.id, nil, area_id)
 | 
| 
bsw/jbe@19
 | 
   103 end
 | 
| 
bsw/jbe@5
 | 
   104 
 | 
| 
bsw/jbe@19
 | 
   105 if not delegation then
 | 
| 
bsw@248
 | 
   106   delegation = Delegation:by_pk(app.session.member.id, unit_id)
 | 
| 
bsw/jbe@19
 | 
   107 end
 | 
| 
bsw/jbe@19
 | 
   108 
 | 
| 
bsw/jbe@19
 | 
   109 
 | 
| 
bsw/jbe@19
 | 
   110 slot.select("actions", function()
 | 
| 
bsw/jbe@19
 | 
   111 
 | 
| 
bsw/jbe@5
 | 
   112   if delegation then
 | 
| 
bsw/jbe@5
 | 
   113     ui.container{
 | 
| 
bsw/jbe@5
 | 
   114       attr = { class = "delegation vote_info"},
 | 
| 
bsw/jbe@5
 | 
   115       content = function()
 | 
| 
bsw@2
 | 
   116         ui.container{
 | 
| 
bsw@2
 | 
   117           attr = {
 | 
| 
bsw/jbe@4
 | 
   118             title = _"Click for details",
 | 
| 
bsw/jbe@4
 | 
   119             class = "head head_active",
 | 
| 
bsw@2
 | 
   120             style = "cursor: pointer;",
 | 
| 
bsw/jbe@4
 | 
   121             onclick = "document.getElementById('delegation_content').style.display = 'block';"
 | 
| 
bsw@2
 | 
   122           },
 | 
| 
bsw/jbe@4
 | 
   123           content = function()
 | 
| 
bsw@180
 | 
   124             if delegation.trustee_id then
 | 
| 
bsw@180
 | 
   125               ui.image{
 | 
| 
bsw@180
 | 
   126                 static = "icons/16/table_go.png"
 | 
| 
bsw@180
 | 
   127               }
 | 
| 
bsw@180
 | 
   128               if delegation.issue_id then
 | 
| 
bsw@180
 | 
   129                 slot.put(_"Issue delegation active")
 | 
| 
bsw@180
 | 
   130               elseif delegation.area_id then
 | 
| 
bsw@183
 | 
   131                 slot.put(_"Area delegation active")
 | 
| 
bsw@180
 | 
   132               else
 | 
| 
bsw@248
 | 
   133                 slot.put(_"Unit delegation active")
 | 
| 
bsw@180
 | 
   134               end
 | 
| 
bsw/jbe@4
 | 
   135             else
 | 
| 
bsw@180
 | 
   136               ui.image{
 | 
| 
bsw@180
 | 
   137                 static = "icons/16/table_go_crossed.png"
 | 
| 
bsw@180
 | 
   138               }
 | 
| 
bsw@180
 | 
   139               if delegation.issue_id then
 | 
| 
bsw@180
 | 
   140                 slot.put(_"Delegation turned off for issue")
 | 
| 
bsw@180
 | 
   141               elseif delegation.area_id then
 | 
| 
bsw@180
 | 
   142                 slot.put(_"Delegation turned off for area")
 | 
| 
bsw@180
 | 
   143               end
 | 
| 
bsw/jbe@4
 | 
   144             end
 | 
| 
bsw/jbe@4
 | 
   145             ui.image{
 | 
| 
bsw/jbe@4
 | 
   146               static = "icons/16/dropdown.png"
 | 
| 
bsw/jbe@4
 | 
   147             }
 | 
| 
bsw/jbe@4
 | 
   148           end
 | 
| 
bsw@2
 | 
   149         }
 | 
| 
bsw/jbe@4
 | 
   150         ui.container{
 | 
| 
bsw/jbe@4
 | 
   151           attr = { class = "content", id = "delegation_content" },
 | 
| 
bsw/jbe@4
 | 
   152           content = function()
 | 
| 
bsw@2
 | 
   153             ui.container{
 | 
| 
bsw/jbe@4
 | 
   154               attr = {
 | 
| 
bsw/jbe@4
 | 
   155                 class = "close",
 | 
| 
bsw/jbe@4
 | 
   156                 style = "cursor: pointer;",
 | 
| 
bsw/jbe@4
 | 
   157                 onclick = "document.getElementById('delegation_content').style.display = 'none';"
 | 
| 
bsw/jbe@4
 | 
   158               },
 | 
| 
bsw@2
 | 
   159               content = function()
 | 
| 
bsw/jbe@4
 | 
   160                 ui.image{ static = "icons/16/cross.png" }
 | 
| 
bsw/jbe@4
 | 
   161               end
 | 
| 
bsw/jbe@4
 | 
   162             }
 | 
| 
bsw/jbe@4
 | 
   163     
 | 
| 
bsw/jbe@4
 | 
   164             local delegation_chain = Member:new_selector()
 | 
| 
bsw/jbe@4
 | 
   165               :add_field("delegation_chain.*")
 | 
| 
bsw@246
 | 
   166               :join("delegation_chain(" .. tostring(app.session.member.id) .. ", " .. tostring(unit_id or "NULL") .. ", " .. tostring(area_id or "NULL") .. ", " .. tostring(issue_id or "NULL") .. ")", "delegation_chain", "member.id = delegation_chain.member_id")
 | 
| 
bsw/jbe@4
 | 
   167               :add_order_by("index")
 | 
| 
bsw/jbe@4
 | 
   168               :exec()
 | 
| 
bsw/jbe@4
 | 
   169     
 | 
| 
bsw/jbe@19
 | 
   170             if not issue or (issue.state ~= "finished" and issue.state ~= "cancelled") then
 | 
| 
bsw@248
 | 
   171               change_delegation(scope, unit_id, area_id, issue, delegation, initiative_id)
 | 
| 
bsw/jbe@19
 | 
   172             end
 | 
| 
bsw/jbe@19
 | 
   173 
 | 
| 
bsw/jbe@4
 | 
   174             for i, record in ipairs(delegation_chain) do
 | 
| 
bsw/jbe@4
 | 
   175               local style
 | 
| 
bsw/jbe@4
 | 
   176               local overridden = record.overridden
 | 
| 
bsw/jbe@4
 | 
   177               if record.scope_in then
 | 
| 
bsw@2
 | 
   178                 ui.container{
 | 
| 
bsw/jbe@4
 | 
   179                   attr = { class = "delegation_info" },
 | 
| 
bsw@2
 | 
   180                   content = function()
 | 
| 
bsw/jbe@4
 | 
   181                     if not overridden then
 | 
| 
bsw/jbe@4
 | 
   182                       ui.image{
 | 
| 
bsw/jbe@4
 | 
   183                         attr = { class = "delegation_arrow" },
 | 
| 
bsw/jbe@4
 | 
   184                         static = "delegation_arrow_vertical.jpg"
 | 
| 
bsw/jbe@4
 | 
   185                       }
 | 
| 
bsw/jbe@4
 | 
   186                     else
 | 
| 
bsw/jbe@4
 | 
   187                       ui.image{
 | 
| 
bsw/jbe@4
 | 
   188                         attr = { class = "delegation_arrow delegation_arrow_overridden" },
 | 
| 
bsw/jbe@4
 | 
   189                         static = "delegation_arrow_vertical.jpg"
 | 
| 
bsw/jbe@4
 | 
   190                       }
 | 
| 
bsw/jbe@4
 | 
   191                     end
 | 
| 
bsw/jbe@4
 | 
   192                     ui.container{
 | 
| 
bsw/jbe@4
 | 
   193                       attr = { class = "delegation_scope" .. (overridden and " delegation_scope_overridden" or "") },
 | 
| 
bsw/jbe@4
 | 
   194                       content = function()
 | 
| 
bsw@248
 | 
   195                         if record.scope_in == "unit" then
 | 
| 
bsw@248
 | 
   196                           slot.put(_"Unit delegation")
 | 
| 
bsw/jbe@4
 | 
   197                         elseif record.scope_in == "area" then
 | 
| 
bsw/jbe@4
 | 
   198                           slot.put(_"Area delegation")
 | 
| 
bsw/jbe@4
 | 
   199                         elseif record.scope_in == "issue" then
 | 
| 
bsw/jbe@4
 | 
   200                           slot.put(_"Issue delegation")
 | 
| 
bsw/jbe@4
 | 
   201                         end
 | 
| 
bsw/jbe@4
 | 
   202                       end
 | 
| 
bsw/jbe@4
 | 
   203                     }
 | 
| 
bsw@2
 | 
   204                   end
 | 
| 
bsw@2
 | 
   205                 }
 | 
| 
bsw/jbe@4
 | 
   206               end
 | 
| 
bsw/jbe@4
 | 
   207               ui.container{
 | 
| 
bsw/jbe@4
 | 
   208                 attr = { class = overridden and "delegation_overridden" or "" },
 | 
| 
bsw/jbe@4
 | 
   209                 content = function()
 | 
| 
bsw/jbe@4
 | 
   210                   execute.view{
 | 
| 
bsw/jbe@4
 | 
   211                     module = "member",
 | 
| 
bsw/jbe@4
 | 
   212                     view = "_show_thumb",
 | 
| 
bsw/jbe@4
 | 
   213                     params = { member = record }
 | 
| 
bsw@2
 | 
   214                   }
 | 
| 
bsw@2
 | 
   215                 end
 | 
| 
bsw/jbe@4
 | 
   216               }
 | 
| 
bsw/jbe@4
 | 
   217               if record.participation and not record.overridden then
 | 
| 
bsw/jbe@4
 | 
   218                 ui.container{
 | 
| 
bsw/jbe@4
 | 
   219                   attr = { class = "delegation_participation" },
 | 
| 
bsw/jbe@4
 | 
   220                   content = function()
 | 
| 
bsw/jbe@19
 | 
   221                     slot.put(_"This member is participating, the rest of delegation chain is suspended while discussing")
 | 
| 
bsw/jbe@4
 | 
   222                   end
 | 
| 
bsw/jbe@4
 | 
   223                 }
 | 
| 
bsw@2
 | 
   224               end
 | 
| 
bsw/jbe@4
 | 
   225               slot.put("<br style='clear: left'/>")
 | 
| 
bsw/jbe@4
 | 
   226             end
 | 
| 
bsw/jbe@0
 | 
   227           end
 | 
| 
bsw/jbe@4
 | 
   228         }
 | 
| 
bsw/jbe@0
 | 
   229       end
 | 
| 
bsw/jbe@5
 | 
   230     }
 | 
| 
bsw/jbe@19
 | 
   231   else
 | 
| 
bsw@248
 | 
   232     change_delegation(scope, unit_id, area_id, issue, nil, initiative_id)
 | 
| 
bsw/jbe@5
 | 
   233   end
 | 
| 
bsw/jbe@0
 | 
   234 end)
 |