liquid_feedback_frontend

annotate app/main/initiative/_battles.lua @ 1045:701a5cf6b067

Imported LiquidFeedback Frontend 3.0 branch
author bsw
date Thu Jul 10 01:19:48 2014 +0200 (2014-07-10)
parents cc64a4fc6ab6
children dcbe505ddf24
rev   line source
bsw@31 1 local initiative = param.get("initiative", "table")
bsw@31 2
bsw@31 3 if not initiative.issue.closed then
bsw@31 4 return
bsw@31 5 end
bsw@31 6
bsw@31 7 local battled_initiatives = Initiative:new_selector()
bsw@31 8 :add_field("winning_battle.count", "winning_count")
bsw@31 9 :add_field("losing_battle.count", "losing_count")
bsw@31 10 :join("battle", "winning_battle", { "winning_battle.winning_initiative_id = ? AND winning_battle.losing_initiative_id = initiative.id", initiative.id })
bsw@31 11 :join("battle", "losing_battle", { "losing_battle.losing_initiative_id = ? AND losing_battle.winning_initiative_id = initiative.id", initiative.id })
bsw@31 12 :add_order_by("rank")
bsw@31 13 :exec()
bsw@31 14
bsw@31 15
bsw@31 16 local number_of_initiatives = Initiative:new_selector()
bsw@31 17 :add_where{ "issue_id = ?", initiative.issue_id }
bsw@31 18 :add_where("admitted")
bsw@31 19 :count()
bsw@31 20
bsw@31 21 if number_of_initiatives > 1 then
bsw@1045 22 ui.heading { level = 1, content = _"Preference comparison" }
bsw@31 23 ui.list{
bsw@31 24 records = battled_initiatives,
bsw@31 25 columns = {
bsw@31 26 {
bsw@31 27 content = function()
bsw@31 28 slot.put(_"This initiative")
bsw@31 29 end
bsw@31 30 },
bsw@31 31 {
bsw@31 32 content = function(record)
bsw@31 33 local population = initiative.issue.voter_count
bsw@31 34 local value = record.winning_count
bsw@31 35 ui.bargraph{
bsw@31 36 class = "bargraph bargraph50",
bsw@31 37 max_value = population,
bsw@31 38 width = 50,
bsw@31 39 bars = {
bsw@31 40 { color = "#aaa", value = population - value },
bsw@31 41 { color = "#444", value = value },
bsw@31 42 }
bsw@31 43 }
bsw@31 44 end
bsw@31 45 },
bsw@31 46 {
bsw@31 47 content = function(record)
bsw@31 48 slot.put(record.winning_count)
bsw@31 49 end
bsw@31 50 },
bsw@31 51 {
bsw@31 52 content = function(record)
bsw@31 53 if record.winning_count == record.losing_count then
bsw@31 54 ui.image{ static = "icons/16/bullet_blue.png" }
bsw@31 55 elseif record.winning_count > record.losing_count then
bsw@31 56 ui.image{ static = "icons/16/resultset_previous.png" }
bsw@31 57 else
bsw@31 58 ui.image{ static = "icons/16/resultset_next.png" }
bsw@31 59 end
bsw@31 60 end
bsw@31 61 },
bsw@31 62 {
bsw@31 63 field_attr = { style = "text-align: right;" },
bsw@31 64 content = function(record)
bsw@31 65 slot.put(record.losing_count)
bsw@31 66 end
bsw@31 67 },
bsw@31 68 {
bsw@31 69 content = function(record)
bsw@31 70 local population = initiative.issue.voter_count
bsw@31 71 local value = record.losing_count
bsw@31 72 ui.bargraph{
bsw@31 73 class = "bargraph bargraph50",
bsw@31 74 max_value = population,
bsw@31 75 width = 50,
bsw@31 76 bars = {
bsw@31 77 { color = "#444", value = value },
bsw@31 78 { color = "#aaa", value = population - value },
bsw@31 79 }
bsw@31 80 }
bsw@31 81 end
bsw@31 82 },
bsw@31 83 {
bsw@31 84 content = function(record)
bsw@31 85 ui.link{
bsw@31 86 module = "initiative",
bsw@31 87 view = "show",
bsw@31 88 id = record.id,
bsw@31 89 text = record.name
bsw@31 90 }
bsw@31 91 end
bsw@31 92 }
bsw@31 93 }
bsw@31 94 }
bsw@31 95 end

Impressum / About Us