diff --git a/apps/dashboard/app/helpers/application_helper.rb b/apps/dashboard/app/helpers/application_helper.rb index 2bcface8a5..ee6963ec1a 100644 --- a/apps/dashboard/app/helpers/application_helper.rb +++ b/apps/dashboard/app/helpers/application_helper.rb @@ -51,9 +51,9 @@ def help_custom_url ENV['OOD_DASHBOARD_HELP_CUSTOM_URL'] end - def fa_icon(icon, fa_style: 'fas', id: '', classes: 'app-icon') + def fa_icon(icon, fa_style: 'fas', id: '', classes: 'app-icon', title: "FontAwesome icon specified: #{icon}") content_tag(:i, '', id: id, class: [fa_style, "fa-#{icon}", 'fa-fw'].concat(Array(classes)), - title: "FontAwesome icon specified: #{icon}", "aria-hidden": true) + title: title, "aria-hidden": true) end def app_icon_tag(app) diff --git a/apps/dashboard/app/helpers/batch_connect/sessions_helper.rb b/apps/dashboard/app/helpers/batch_connect/sessions_helper.rb index 0f53d9ba34..f67228df19 100644 --- a/apps/dashboard/app/helpers/batch_connect/sessions_helper.rb +++ b/apps/dashboard/app/helpers/batch_connect/sessions_helper.rb @@ -22,6 +22,7 @@ def session_panel(session) status << content_tag(:span, pluralize(num_cores, "core"), class: "badge badge-#{status_context(session)} badge-pill") unless num_cores.zero? end status << "#{status session}" + relaunch(status, session) tag.span(status.join(" | ").html_safe, class: "card-text") end ) @@ -195,6 +196,28 @@ def status_context(session) end end + def relaunch(status_array, session) + return unless session.completed? + + batch_connect_app = session.app + return unless batch_connect_app.valid? + + user_context = session.user_context + params = batch_connect_app.attributes.map{|attribute| ["batch_connect_session_context[#{attribute.id}]", user_context.fetch(attribute.id, '')]}.to_h + title = "#{t('dashboard.batch_connect_sessions_relaunch_title')} #{session.title} #{t('dashboard.batch_connect_sessions_word')}" + status_array << button_to( + batch_connect_session_contexts_path(token: batch_connect_app.token), + method: :post, + class: %w[btn px-1 py-0 btn-outline-dark relaunch], + form_class: %w[d-inline relaunch], + title: title, + 'aria-label': title, + data: { toggle: "tooltip", placement: "left" }, + params: params + ) do + "#{fa_icon('sync', classes: nil, title: '')}".html_safe + end + end def cancel_or_delete(session) if Configuration.cancel_session_enabled && !session.completed? @@ -205,24 +228,28 @@ def cancel_or_delete(session) end def delete(session) + title = "#{t('dashboard.batch_connect_sessions_delete_title')} #{session.title} #{t('dashboard.batch_connect_sessions_word')}" button_to( batch_connect_session_path(session.id), method: :delete, class: "btn btn-danger float-right btn-delete", - title: "#{t('dashboard.batch_connect_sessions_delete_title')} #{session.title} #{t('dashboard.batch_connect_sessions_word')}", - data: { confirm: t('dashboard.batch_connect_sessions_delete_confirm'), toggle: "tooltip", placement: "bottom", selector: true } + title: title, + 'aria-label': title, + data: { confirm: t('dashboard.batch_connect_sessions_delete_confirm'), toggle: "tooltip", placement: "bottom"} ) do "#{fa_icon('times-circle', classes: nil)} ".html_safe end end def cancel(session) + title = "#{t('dashboard.batch_connect_sessions_cancel_title')} #{session.title} #{t('dashboard.batch_connect_sessions_word')}" button_to( batch_connect_cancel_session_path(session.id), method: :post, class: "btn btn-danger float-right btn-cancel", - title: "#{t('dashboard.batch_connect_sessions_cancel_title')} #{session.title} #{t('dashboard.batch_connect_sessions_word')}", - data: { confirm: t('dashboard.batch_connect_sessions_cancel_confirm'), toggle: "tooltip", placement: "bottom", selector: true } + title: title, + 'aria-label': title, + data: { confirm: t('dashboard.batch_connect_sessions_cancel_confirm'), toggle: "tooltip", placement: "bottom" } ) do "#{fa_icon('times-circle', classes: nil)} ".html_safe end diff --git a/apps/dashboard/app/javascript/packs/batch_connect_sessions.js b/apps/dashboard/app/javascript/packs/batch_connect_sessions.js index 35d6a0c857..3f6cf77d3a 100644 --- a/apps/dashboard/app/javascript/packs/batch_connect_sessions.js +++ b/apps/dashboard/app/javascript/packs/batch_connect_sessions.js @@ -31,3 +31,14 @@ function installSettingHandlers(name) { window.installSettingHandlers = installSettingHandlers; window.tryUpdateSetting = tryUpdateSetting; + +jQuery(function (){ + function showSpinner() { + $('body').addClass('modal-open'); + $('#full-page-spinner').removeClass('d-none'); + } + + $('button.relaunch').each((index, element) => { + $(element).on('click', showSpinner); + }); +}); diff --git a/apps/dashboard/app/models/user_configuration.rb b/apps/dashboard/app/models/user_configuration.rb index 617d17051d..c66662427f 100644 --- a/apps/dashboard/app/models/user_configuration.rb +++ b/apps/dashboard/app/models/user_configuration.rb @@ -101,6 +101,8 @@ def nav_categories # The current user profile. Used to select the configuration properties. def profile + return CurrentUser.user_settings[:profile_override].to_sym if CurrentUser.user_settings[:profile_override] + if Configuration.host_based_profiles request_hostname else diff --git a/apps/dashboard/app/views/batch_connect/sessions/index.html.erb b/apps/dashboard/app/views/batch_connect/sessions/index.html.erb index bfedbf0776..e916b74597 100644 --- a/apps/dashboard/app/views/batch_connect/sessions/index.html.erb +++ b/apps/dashboard/app/views/batch_connect/sessions/index.html.erb @@ -51,4 +51,7 @@ locals: { <%- end -%> + +
+
\ No newline at end of file diff --git a/apps/dashboard/app/views/layouts/application.html.erb b/apps/dashboard/app/views/layouts/application.html.erb index 3822d8578f..f60871faf5 100644 --- a/apps/dashboard/app/views/layouts/application.html.erb +++ b/apps/dashboard/app/views/layouts/application.html.erb @@ -15,6 +15,7 @@ <%= yield :head %> +