bsw/jbe@0: local issues_selector = param.get("issues_selector", "table")
bsw/jbe@0:
bsw@51: if app.session.member_id then
bsw@51: issues_selector
bsw@51: :left_join("interest", "_interest", { "_interest.issue_id = issue.id AND _interest.member_id = ?", app.session.member.id} )
bsw@51: :add_field("(_interest.member_id NOTNULL)", "is_interested")
bsw@51: end
bsw@11:
bsw/jbe@19: ui.add_partial_param_names{
bsw/jbe@19: "filter",
bsw/jbe@19: "filter_open",
bsw/jbe@19: "filter_voting",
bsw/jbe@19: "filter_interest",
bsw/jbe@19: "issue_list"
bsw/jbe@19: }
bsw/jbe@0:
poelzi@127: local filters = execute.load_chunk{module="issue", chunk="_filters.lua"}
bsw/jbe@19:
bsw/jbe@19: filters.content = function()
bsw/jbe@19: local ui_paginate = ui.paginate
bsw/jbe@19: if param.get("per_page") == "all" then
bsw/jbe@19: ui_paginate = function(args) args.content() end
bsw/jbe@19: end
bsw/jbe@19: ui_paginate{
bsw/jbe@19: per_page = tonumber(param.get("per_page")),
bsw/jbe@19: selector = issues_selector,
bsw/jbe@19: content = function()
bsw/jbe@19: local highlight_string = param.get("highlight_string", "string")
bsw/jbe@19: local issues = issues or issues_selector:exec()
bsw/jbe@19: -- issues:load(initiatives)
bsw/jbe@19: ui.list{
bsw/jbe@19: attr = { class = "issues" },
bsw/jbe@19: records = issues,
bsw/jbe@19: columns = {
bsw/jbe@19: {
bsw/jbe@19: label = _"Issue",
bsw/jbe@19: content = function(record)
bsw/jbe@19: if not param.get("for_area_list", atom.boolean) then
bsw/jbe@19: ui.field.text{
bsw/jbe@19: value = record.area.name
bsw/jbe@19: }
bsw/jbe@19: slot.put("
")
bsw@11: end
bsw/jbe@19: if record.is_interested then
bsw/jbe@19: local label = _"You are interested in this issue",
bsw/jbe@19: ui.image{
bsw/jbe@19: attr = { alt = label, title = label },
bsw/jbe@19: static = "icons/16/eye.png"
bsw/jbe@5: }
bsw/jbe@19: slot.put(" ")
bsw/jbe@19: end
bsw/jbe@19: ui.link{
bsw/jbe@19: text = _("Issue ##{id}", { id = tostring(record.id) }),
bsw/jbe@19: module = "issue",
bsw/jbe@19: view = "show",
bsw/jbe@19: id = record.id
bsw/jbe@19: }
bsw/jbe@19: if record.state == "new" then
bsw/jbe@19: ui.image{
bsw/jbe@19: static = "icons/16/new.png"
bsw/jbe@5: }
bsw/jbe@5: end
bsw/jbe@19: slot.put("
")
bsw/jbe@19: slot.put("
")
bsw/jbe@19: if record.old_state then
bsw/jbe@19: ui.field.text{ value = format.time(record.sort) }
bsw/jbe@19: 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: else
bsw/jbe@19: end
bsw/jbe@19: end
bsw/jbe@19: },
bsw/jbe@19: {
bsw/jbe@19: label = _"State",
bsw/jbe@19: content = function(record)
bsw/jbe@19: if record.state == "voting" then
bsw/jbe@19: ui.link{
bsw/jbe@19: content = _"Voting",
bsw/jbe@19: module = "vote",
bsw/jbe@19: view = "list",
bsw/jbe@19: params = { issue_id = record.id }
bsw/jbe@19: }
bsw/jbe@19: else
bsw/jbe@19: ui.field.issue_state{ value = record.state }
bsw/jbe@19: end
bsw/jbe@19: end
bsw/jbe@19: },
bsw/jbe@19: {
bsw/jbe@19: label = _"Initiatives",
bsw/jbe@19: content = function(record)
bsw/jbe@19: local initiatives_selector = record:get_reference_selector("initiatives")
bsw/jbe@19: local highlight_string = param.get("highlight_string")
bsw/jbe@19: if highlight_string then
bsw/jbe@19: initiatives_selector:add_field( {'"highlight"("initiative"."name", ?)', highlight_string }, "name_highlighted")
bsw/jbe@19: end
bsw/jbe@19: execute.view{
bsw/jbe@19: module = "initiative",
bsw/jbe@19: view = "_list",
bsw/jbe@19: params = {
bsw/jbe@19: issue = record,
bsw/jbe@19: initiatives_selector = initiatives_selector,
bsw/jbe@19: highlight_string = highlight_string,
bsw@51: per_page = app.session.member_id and tonumber(app.session.member:get_setting_value("initiatives_preview_limit") or 3) or 3,
bsw/jbe@19: no_sort = true,
bsw@51: limit = app.session.member_id and tonumber(app.session.member:get_setting_value("initiatives_preview_limit") or 3) or 3
bsw/jbe@19: }
bsw/jbe@19: }
bsw/jbe@19: end
bsw/jbe@19: },
bsw/jbe@0: }
bsw/jbe@19: }
bsw/jbe@19: end
bsw/jbe@19: }
bsw/jbe@19: end
bsw/jbe@19:
bsw/jbe@19: filters.selector = issues_selector
bsw/jbe@19: filters.label = _"Change filters and order"
bsw/jbe@19:
bsw/jbe@19: if param.get("no_filter", atom.boolean) then
bsw/jbe@19: filters.content()
bsw/jbe@19: else
bsw/jbe@19: ui.filters(filters)
bsw/jbe@19: end
bsw/jbe@19:
bsw/jbe@19: if param.get("legend", atom.boolean) ~= false then
bsw/jbe@19: local filter = param.get_all_cgi().filter
bsw/jbe@19: if not filter or filter == "any" or filter ~= "finished" then
bsw/jbe@19: ui.bargraph_legend{
bsw/jbe@19: width = 25,
bsw/jbe@19: bars = {
bsw/jbe@19: { color = "#0a0", label = _"Supporter" },
bsw/jbe@19: { color = "#777", label = _"Potential supporter" },
bsw/jbe@19: { color = "#ddd", label = _"No support at all" },
bsw/jbe@19: }
bsw/jbe@0: }
bsw/jbe@0: end
bsw/jbe@19: if not filter or filter == "any" or filter == "finished" then
bsw/jbe@19: ui.bargraph_legend{
bsw/jbe@19: width = 25,
bsw/jbe@19: bars = {
bsw/jbe@19: { color = "#0a0", label = _"Yes" },
bsw/jbe@19: { color = "#aaa", label = _"Abstention" },
bsw/jbe@19: { color = "#a00", label = _"No" },
bsw/jbe@19: }
bsw/jbe@19: }
bsw/jbe@19: end
bsw/jbe@19: end
bsw/jbe@19: