diff --git a/app/controllers/forms_controller.rb b/app/controllers/forms_controller.rb index 0649d2158..9c42b74ef 100644 --- a/app/controllers/forms_controller.rb +++ b/app/controllers/forms_controller.rb @@ -70,6 +70,20 @@ class FormsController < ApplicationController } end + def latest_attached_forms + forms = current_team.forms.active.readable_by_user(current_user).published + .joins(:form_responses) + .where(form_responses: { created_by: current_user }) + .select('forms.id, forms.name, MAX(form_responses.created_at) AS last_response_at') + .group('forms.id') + .order('last_response_at DESC') + .limit(5) + + render json: { + data: forms + } + end + def publish render_403 and return unless can_publish_form?(@form) diff --git a/app/javascript/vue/shared/content/modal/form_select.vue b/app/javascript/vue/shared/content/modal/form_select.vue index fd72273c4..e55592be2 100644 --- a/app/javascript/vue/shared/content/modal/form_select.vue +++ b/app/javascript/vue/shared/content/modal/form_select.vue @@ -24,12 +24,28 @@
{{ i18n.t(`protocols.steps.modals.form_modal.no_forms`) }} @@ -55,6 +71,7 @@ import axios from '../../../../packs/custom_axios.js'; import { published_forms_forms_path, + latest_attached_forms_forms_path, forms_path } from '../../../../routes.js'; @@ -63,7 +80,8 @@ export default { data() { return { form: null, - anyForms: false + anyForms: false, + recentUsedForms: [] }; }, mixins: [modalMixin], @@ -73,12 +91,22 @@ export default { }, formsPageUrl() { return forms_path(); + }, + formsRecentUsedUrl() { + return latest_attached_forms_forms_path(); } }, created() { axios.get(this.formsUrl) .then((response) => { this.anyForms = response.data.data.length > 0; + + if (this.anyForms) { + axios.get(this.formsRecentUsedUrl) + .then((responseData) => { + this.recentUsedForms = responseData.data.data; + }); + } }); }, components: { diff --git a/config/locales/en.yml b/config/locales/en.yml index 7519ff472..742e9fd11 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -3907,6 +3907,7 @@ en: no_forms: "Create and publish one or request access from your team." add_form: "Add form" take_me_there: "Take me there" + recently_used: "Recently used" move_element: step: title: Move to different step diff --git a/config/routes.rb b/config/routes.rb index d3464443c..f832fd1db 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -876,6 +876,7 @@ Rails.application.routes.draw do post :restore get :user_roles get :published_forms + get :latest_attached_forms end resources :form_fields, only: %i(create update destroy) do