diff --git a/app/assets/javascripts/editor/editor.js.erb b/app/assets/javascripts/editor/editor.js.erb index 2605243f..5fe1c174 100644 --- a/app/assets/javascripts/editor/editor.js.erb +++ b/app/assets/javascripts/editor/editor.js.erb @@ -643,7 +643,8 @@ var CodeOceanEditor = { $('#start-over-active-file').prop('disabled', this.active_frame.data('role') === 'user_defined_file' || this.active_frame.data('read-only') !== undefined); $('#dummy').toggle(!this.fileActionsAvailable()); $('#render').toggle(this.isActiveFileRenderable()); - $('#run').tooltip('hide').toggle(this.isActiveFileRunnable() && !this.running); + $('#run-stop-button-group').tooltip('hide'); + $('#run').toggle(this.isActiveFileRunnable() && !this.running); $('#stop').toggle(this.isActiveFileStoppable()); $('#test').toggle(this.isActiveFileTestable()); }, @@ -718,7 +719,7 @@ var CodeOceanEditor = { }, showSpinner: function (initiator) { - $(initiator).tooltip('hide'); + $(initiator).closest('[data-bs-toggle="tooltip"]').tooltip('hide'); $(initiator).find('i.fa-solid, i.fa-regular').hide(); $(initiator).find('i.fa-spin').addClass('d-inline-block').removeClass('d-none'); }, diff --git a/app/views/exercises/_editor.html.slim b/app/views/exercises/_editor.html.slim index 39e46c0e..7d1a32ba 100644 --- a/app/views/exercises/_editor.html.slim +++ b/app/views/exercises/_editor.html.slim @@ -21,8 +21,9 @@ #editor-buttons.btn-group.enforce-bottom-margin = render('editor_button', disabled: true, icon: 'fa-solid fa-ban', id: 'dummy', label: t('exercises.editor.dummy')) = render('editor_button', icon: 'fa-solid fa-desktop', id: 'render', label: t('exercises.editor.render')) unless @embed_options[:hide_run_button] - = render('editor_button', data: {:'data-message-failure' => t('exercises.editor.run_failure'), :'data-message-network' => t('exercises.editor.network'), :'data-message-success' => t('exercises.editor.run_success'), :'data-bs-placement' => 'top', :'data-bs-toggle' => 'tooltip', :'data-bs-container' => 'body'}, icon: 'fa-solid fa-play', id: 'run', label: t('exercises.editor.run'), title: t('shared.tooltips.shortcut', shortcut: 'ALT + r')) unless @embed_options[:disable_run] - = render('editor_button', icon: 'fa-solid fa-stop', id: 'stop', label: t('exercises.editor.stop')) unless @embed_options[:disable_run] + span.flex-grow-1#run-stop-button-group data-bs-placement='top' data-bs-toggle='tooltip' data-bs-container='body' title=t('shared.tooltips.shortcut', shortcut: 'ALT + r') + = render('editor_button', data: {:'data-message-failure' => t('exercises.editor.run_failure'), :'data-message-network' => t('exercises.editor.network'), :'data-message-success' => t('exercises.editor.run_success'),}, icon: 'fa-solid fa-play', id: 'run', label: t('exercises.editor.run'), classes: 'w-100 btn-primary') unless @embed_options[:disable_run] + = render('editor_button', icon: 'fa-solid fa-stop', id: 'stop', label: t('exercises.editor.stop'), classes: 'w-100 btn-primary') unless @embed_options[:disable_run] = render('editor_button', data: {:'data-bs-placement' => 'top', :'data-bs-toggle' => 'tooltip', :'data-bs-container' => 'body'}, icon: 'fa-solid fa-rocket', id: 'test', label: t('exercises.editor.test'), title: t('shared.tooltips.shortcut', shortcut: 'ALT + t')) unless @embed_options[:disable_run] = render('editor_button', data: {:'data-bs-placement' => 'top', :'data-bs-toggle' => 'tooltip', :'data-bs-container' => 'body'}, icon: 'fa-solid fa-trophy', id: 'assess', label: t('exercises.editor.score'), title: t('shared.tooltips.shortcut', shortcut: 'ALT + s')) unless @embed_options[:disable_score] - unless hide_rfc_button