liquid_feedback_frontend
annotate app/main/issue/_list.lua @ 159:5d797c6706d5
implement quorum display
show the initiative quorum as a small 1px line in bargraph
allow to update your support on the diff page
better linked title in diff page
show absolute quorum numbers in detail pages of issue and initiative
show the initiative quorum as a small 1px line in bargraph
allow to update your support on the diff page
better linked title in diff page
show absolute quorum numbers in detail pages of issue and initiative
author | Daniel Poelzleithner <poelzi@poelzi.org> |
---|---|
date | Sat Oct 09 03:42:48 2010 +0200 (2010-10-09) |
parents | 4fb486bce608 |
children | 7196685f9dd7 |
rev | line source |
---|---|
bsw/jbe@0 | 1 local issues_selector = param.get("issues_selector", "table") |
bsw/jbe@0 | 2 |
bsw@51 | 3 if app.session.member_id then |
bsw@51 | 4 issues_selector |
bsw@51 | 5 :left_join("interest", "_interest", { "_interest.issue_id = issue.id AND _interest.member_id = ?", app.session.member.id} ) |
bsw@51 | 6 :add_field("(_interest.member_id NOTNULL)", "is_interested") |
bsw@51 | 7 end |
bsw@11 | 8 |
bsw/jbe@19 | 9 ui.add_partial_param_names{ |
bsw/jbe@19 | 10 "filter", |
bsw/jbe@19 | 11 "filter_open", |
bsw/jbe@19 | 12 "filter_voting", |
bsw/jbe@19 | 13 "filter_interest", |
bsw/jbe@19 | 14 "issue_list" |
bsw/jbe@19 | 15 } |
bsw/jbe@0 | 16 |
poelzi@127 | 17 local filters = execute.load_chunk{module="issue", chunk="_filters.lua"} |
bsw/jbe@19 | 18 |
bsw/jbe@19 | 19 filters.content = function() |
bsw/jbe@19 | 20 local ui_paginate = ui.paginate |
bsw/jbe@19 | 21 if param.get("per_page") == "all" then |
bsw/jbe@19 | 22 ui_paginate = function(args) args.content() end |
bsw/jbe@19 | 23 end |
bsw/jbe@19 | 24 ui_paginate{ |
bsw/jbe@19 | 25 per_page = tonumber(param.get("per_page")), |
bsw/jbe@19 | 26 selector = issues_selector, |
bsw/jbe@19 | 27 content = function() |
bsw/jbe@19 | 28 local highlight_string = param.get("highlight_string", "string") |
bsw/jbe@19 | 29 local issues = issues or issues_selector:exec() |
bsw/jbe@19 | 30 -- issues:load(initiatives) |
bsw/jbe@19 | 31 ui.list{ |
bsw/jbe@19 | 32 attr = { class = "issues" }, |
bsw/jbe@19 | 33 records = issues, |
bsw/jbe@19 | 34 columns = { |
bsw/jbe@19 | 35 { |
bsw/jbe@19 | 36 label = _"Issue", |
bsw/jbe@19 | 37 content = function(record) |
bsw/jbe@19 | 38 if not param.get("for_area_list", atom.boolean) then |
bsw/jbe@19 | 39 ui.field.text{ |
bsw/jbe@19 | 40 value = record.area.name |
bsw/jbe@19 | 41 } |
bsw/jbe@19 | 42 slot.put("<br />") |
bsw@11 | 43 end |
bsw/jbe@19 | 44 if record.is_interested then |
bsw/jbe@19 | 45 local label = _"You are interested in this issue", |
bsw/jbe@19 | 46 ui.image{ |
bsw/jbe@19 | 47 attr = { alt = label, title = label }, |
bsw/jbe@19 | 48 static = "icons/16/eye.png" |
bsw/jbe@5 | 49 } |
bsw/jbe@19 | 50 slot.put(" ") |
bsw/jbe@19 | 51 end |
bsw/jbe@19 | 52 ui.link{ |
bsw/jbe@19 | 53 text = _("Issue ##{id}", { id = tostring(record.id) }), |
bsw/jbe@19 | 54 module = "issue", |
bsw/jbe@19 | 55 view = "show", |
bsw/jbe@19 | 56 id = record.id |
bsw/jbe@19 | 57 } |
bsw/jbe@19 | 58 if record.state == "new" then |
bsw/jbe@19 | 59 ui.image{ |
bsw/jbe@19 | 60 static = "icons/16/new.png" |
bsw/jbe@5 | 61 } |
bsw/jbe@5 | 62 end |
bsw/jbe@19 | 63 slot.put("<br />") |
bsw/jbe@19 | 64 slot.put("<br />") |
bsw/jbe@19 | 65 if record.old_state then |
bsw/jbe@19 | 66 ui.field.text{ value = format.time(record.sort) } |
bsw/jbe@19 | 67 ui.field.text{ value = Issue:get_state_name_for_state(record.old_state) .. " > " .. Issue:get_state_name_for_state(record.new_state) } |
bsw/jbe@19 | 68 else |
bsw/jbe@19 | 69 end |
bsw/jbe@19 | 70 end |
bsw/jbe@19 | 71 }, |
bsw/jbe@19 | 72 { |
bsw/jbe@19 | 73 label = _"State", |
bsw/jbe@19 | 74 content = function(record) |
bsw/jbe@19 | 75 if record.state == "voting" then |
bsw/jbe@19 | 76 ui.link{ |
bsw/jbe@19 | 77 content = _"Voting", |
bsw/jbe@19 | 78 module = "vote", |
bsw/jbe@19 | 79 view = "list", |
bsw/jbe@19 | 80 params = { issue_id = record.id } |
bsw/jbe@19 | 81 } |
bsw/jbe@19 | 82 else |
bsw/jbe@19 | 83 ui.field.issue_state{ value = record.state } |
bsw/jbe@19 | 84 end |
bsw/jbe@19 | 85 end |
bsw/jbe@19 | 86 }, |
bsw/jbe@19 | 87 { |
bsw/jbe@19 | 88 label = _"Initiatives", |
bsw/jbe@19 | 89 content = function(record) |
bsw/jbe@19 | 90 local initiatives_selector = record:get_reference_selector("initiatives") |
bsw/jbe@19 | 91 local highlight_string = param.get("highlight_string") |
bsw/jbe@19 | 92 if highlight_string then |
bsw/jbe@19 | 93 initiatives_selector:add_field( {'"highlight"("initiative"."name", ?)', highlight_string }, "name_highlighted") |
bsw/jbe@19 | 94 end |
bsw/jbe@19 | 95 execute.view{ |
bsw/jbe@19 | 96 module = "initiative", |
bsw/jbe@19 | 97 view = "_list", |
bsw/jbe@19 | 98 params = { |
bsw/jbe@19 | 99 issue = record, |
bsw/jbe@19 | 100 initiatives_selector = initiatives_selector, |
bsw/jbe@19 | 101 highlight_string = highlight_string, |
bsw@51 | 102 per_page = app.session.member_id and tonumber(app.session.member:get_setting_value("initiatives_preview_limit") or 3) or 3, |
bsw/jbe@19 | 103 no_sort = true, |
bsw@51 | 104 limit = app.session.member_id and tonumber(app.session.member:get_setting_value("initiatives_preview_limit") or 3) or 3 |
bsw/jbe@19 | 105 } |
bsw/jbe@19 | 106 } |
bsw/jbe@19 | 107 end |
bsw/jbe@19 | 108 }, |
bsw/jbe@0 | 109 } |
bsw/jbe@19 | 110 } |
bsw/jbe@19 | 111 end |
bsw/jbe@19 | 112 } |
bsw/jbe@19 | 113 end |
bsw/jbe@19 | 114 |
bsw/jbe@19 | 115 filters.selector = issues_selector |
bsw/jbe@19 | 116 filters.label = _"Change filters and order" |
bsw/jbe@19 | 117 |
bsw/jbe@19 | 118 if param.get("no_filter", atom.boolean) then |
bsw/jbe@19 | 119 filters.content() |
bsw/jbe@19 | 120 else |
bsw/jbe@19 | 121 ui.filters(filters) |
bsw/jbe@19 | 122 end |
bsw/jbe@19 | 123 |
bsw/jbe@19 | 124 if param.get("legend", atom.boolean) ~= false then |
bsw/jbe@19 | 125 local filter = param.get_all_cgi().filter |
bsw/jbe@19 | 126 if not filter or filter == "any" or filter ~= "finished" then |
bsw/jbe@19 | 127 ui.bargraph_legend{ |
bsw/jbe@19 | 128 width = 25, |
bsw/jbe@19 | 129 bars = { |
bsw/jbe@19 | 130 { color = "#0a0", label = _"Supporter" }, |
bsw/jbe@19 | 131 { color = "#777", label = _"Potential supporter" }, |
bsw/jbe@19 | 132 { color = "#ddd", label = _"No support at all" }, |
bsw/jbe@19 | 133 } |
bsw/jbe@0 | 134 } |
bsw/jbe@0 | 135 end |
bsw/jbe@19 | 136 if not filter or filter == "any" or filter == "finished" then |
bsw/jbe@19 | 137 ui.bargraph_legend{ |
bsw/jbe@19 | 138 width = 25, |
bsw/jbe@19 | 139 bars = { |
bsw/jbe@19 | 140 { color = "#0a0", label = _"Yes" }, |
bsw/jbe@19 | 141 { color = "#aaa", label = _"Abstention" }, |
bsw/jbe@19 | 142 { color = "#a00", label = _"No" }, |
bsw/jbe@19 | 143 } |
bsw/jbe@19 | 144 } |
bsw/jbe@19 | 145 end |
bsw/jbe@19 | 146 end |
bsw/jbe@19 | 147 |