div.d-grid id='output_sidebar_collapsed' = render('editor_button', classes: 'btn-outline-contrast btn', data: {:'data-bs-toggle' => 'tooltip', :'data-bs-placement' => 'left'}, title: t('exercises.editor.expand_output_sidebar'), icon: 'fa-solid fa-square-plus', id: 'toggle-sidebar-output-collapsed', label: '') div.d-grid id='output_sidebar_uncollapsed' class='d-none col-sm-12 enforce-bottom-margin' data-message-no-output=t('exercises.implement.no_output_yet') = render('editor_button', classes: 'btn-outline-contrast btn overflow-hidden mb-2', icon: 'fa-solid fa-square-minus', id: 'toggle-sidebar-output', label: t('exercises.editor.collapse_output_sidebar')) #content-right-sidebar.overflow-scroll = render('download_file_tree') div.enforce-bottom-margin.overflow-auto.d-none id='score_div' #results h2 = t('exercises.implement.results') p.test-count == t('exercises.implement.test_count', count: 0) - unless @embed_options[:hide_test_results] ul.list-unstyled ul#test-dummies.d-none.list-unstyled li.card.mt-2 .card-header.py-2 h5.card-title.m-0 == t('exercises.implement.test_file', filename: '', number: 0) .card-body = row(label: 'exercises.implement.passed_tests') do span.number | 0 =<> t('shared.out_of') span.number | 0 = row(label: 'activerecord.attributes.submission.score') do span.number | 0 =<> t('shared.out_of') span.number | 0 = row(label: 'exercises.implement.feedback') = row(label: 'exercises.implement.error_messages') /= row(label: 'exercises.implement.output', value: link_to(t('shared.show'), '#')) ul#linter-dummies.d-none.list-unstyled li.card.mt-2 .card-header.py-2 h5.card-title.m-0 == t('exercises.implement.linter_file', filename: '', number: 0) .card-body = row(label: 'exercises.implement.code_rating') do span.number | 0 =<> t('shared.out_of') span.number | 0 = row(label: 'activerecord.attributes.submission.score') do span.number | 0 =<> t('shared.out_of') span.number | 0 = row(label: 'exercises.implement.feedback') = row(label: 'exercises.implement.messages') #score data-maximum-score=@exercise.maximum_score data-score=@exercise.final_submission(current_contributor).try(:score) h4 span == "#{t('activerecord.attributes.submission.score')}: " span.score .progress .progress-bar role='progressbar' - if @exercise.submission_deadline.present? || @exercise.late_submission_deadline.present? br #deadline data-submission-deadline=@exercise.submission_deadline&.rfc2822 data-late-submission-deadline=@exercise.late_submission_deadline&.rfc2822 h4 = t('exercises.editor.deadline') = t('exercises.editor.hints.disclaimer') hr #turtlediv.enforce-big-bottom-margin.overflow-auto.d-none canvas#turtlecanvas width=400 height=400 div.enforce-big-bottom-margin.overflow-auto #prompt.input-group.mb-2.d-none span.input-group-text data-prompt=t('exercises.editor.input') = t('exercises.editor.input') input#prompt-input.form-control type='text' span.input-group-btn button#prompt-submit.btn.btn-primary type="button" = t('exercises.editor.send') - unless @embed_options[:disable_hints] #error-hints.mb-2.p-2 .heading = t('exercises.implement.error_hints.heading') ul.body.mb-0 #output .output-element.overflow-scroll = t('exercises.implement.no_output_yet') - if CodeOcean::Config.new(:code_ocean).read[:flowr][:enabled] && !@embed_options[:disable_hints] && !@embed_options[:hide_test_results] #flowrHint.mb-2.card data-url=CodeOcean::Config.new(:code_ocean).read[:flowr][:url] role='tab' .card-header.text-white.bg-info = t('exercises.implement.flowr.heading') .card-body