# HG changeset patch # User bsw # Date 1634124823 -7200 # Node ID 22a75f55ff48f89153e412832fba7183f1c8fe28 # Parent 85ee2f4ca9f2fa0608c4071b3a23a895ef3878f0# Parent 6d69bc46440e8a51da78983f8ab2365a04a245dd merge diff -r 85ee2f4ca9f2 -r 22a75f55ff48 app/main/api/member.lua --- a/app/main/api/member.lua Wed Oct 13 13:33:23 2021 +0200 +++ b/app/main/api/member.lua Wed Oct 13 13:33:43 2021 +0200 @@ -54,6 +54,23 @@ selector:add_where{ "name ILIKE ? OR identification ILIKE ?", search, search } end +if app.scopes.read_profiles then + local profile_lookups = false + for i, field in ipairs(config.member_profile_fields) do + if field.api_lookup then + local value = param.get("profile_" .. field.id) + if value then + selector:add_where{ "member_profile.profile->>? = ?", field.id, value } + profile_lookups = true + end + end + end + if profile_lookups then + selector:join("member_profile", nil, "member_profile.member_id = member.id") + end +end + + local members = selector:exec() local r = json.object() r.result = execute.chunk{ module = "api", chunk = "_member", params = { diff -r 85ee2f4ca9f2 -r 22a75f55ff48 app/main/survey/participate.lua --- a/app/main/survey/participate.lua Wed Oct 13 13:33:23 2021 +0200 +++ b/app/main/survey/participate.lua Wed Oct 13 13:33:43 2021 +0200 @@ -9,6 +9,7 @@ end local question +local question_number = #survey.questions if survey_member then local answer_set = survey_member.answer_set @@ -20,6 +21,7 @@ for i, q in ipairs(survey.questions) do if not question and not answers_by_question_id[q.id] then question = q + question_number = i - 1 end end end @@ -30,15 +32,25 @@ ui.cell_main{ content = function() ui.container{ attr = { class = "mdl-card mdl-card__fullwidth mdl-shadow--2dp survey" }, content = function() - ui.container{ attr = { class = "mdl-card__title mdl-card--border" }, content = function() + ui.container{ attr = { class = "mdl-card__title" }, content = function() ui.heading { attr = { class = "mdl-card__title-text" }, level = 2, content = function() if survey_member.finished then slot.put(survey.finished_title) else - ui.tag{ content = question.question } + ui.tag{ tag = "span", content = question.question } + ui.tag{ attr = { class = "survey_counter" }, content = (question_number + 1) .. " / " .. #survey.questions } end end } end } + slot.put('
') + + ui.script{ script = [[ + document.querySelector('#progressbar1').addEventListener('mdl-componentupgraded', + function() { + this.MaterialProgress.setProgress(]] .. question_number / #survey.questions * 100 .. [[); + }); + + ]] } ui.container{ attr = { class = "mdl-card__content mdl-card--border" }, content = function() if survey_member.finished then ui.container{ content = function() @@ -62,6 +74,7 @@ error = { mode = "forward", module = "survey", view = "participate" }, }, content = function() + ui.field.hidden{ name = "question_id", value = question.id } if question.answer_type == "radio" then diff -r 85ee2f4ca9f2 -r 22a75f55ff48 static/lf4.css --- a/static/lf4.css Wed Oct 13 13:33:23 2021 +0200 +++ b/static/lf4.css Wed Oct 13 13:33:43 2021 +0200 @@ -741,6 +741,11 @@ margin-top: 0; } +.survey_counter { + position: absolute;; + right: 20px; +} + .trace_list { margin-left: 10px; list-style-type: none;