vol1ura/Sat_9am_5km

View on GitHub
app/views/admin/activities/_form.html.arb

Summary

Maintainability
Test Coverage
# frozen_string_literal: true

active_admin_form_for [:admin, resource] do |f|
  f.semantic_errors(*f.object.errors.attribute_names)

  unless resource.published
    f.inputs 'Выберите мероприятие' do
      input :event_id, as: :select, label: 'Мероприятие', collection: Event.authorized_for(current_user).pluck(:name, :id)
    end
  end

  f.inputs 'Сведения о забеге' do
    unless resource.date && resource.results.exists?
      input :date, as: :datepicker, datepicker_options: { min_date: '-1D', max_date: '+2M' }
    end
    input :description, as: :quill_editor,
                        input_html: {
                          data: {
                            options: {
                              modules: {
                                toolbar: [
                                  %w[bold italic strike],
                                  %w[blockquote code-block],
                                  [{ list: 'ordered' }, { list: 'bullet' }],
                                  ['link'],
                                  ['clean']
                                ],
                              },
                              placeholder: 'Какой же классный забег...',
                              theme: 'snow',
                            },
                          },
                        }
    input :published, label: 'Опубликован на сайте' if resource.published && current_user.admin?
  end

  unless resource.published
    if resource.results.exists?
      panel 'Внимание!' do
        para 'Файл с секундомера уже загружен. Если его нужно загрузить повторно, сначала очистите все результаты забега.'
        para 'Загрузить дополнительные файлы со сканера можно сразу или позже.'
      end
    else
      f.inputs 'Загрузите файл с секундомера (только CSV)' do
        input :timer, as: :file, label: 'Файл с секундомера', input_html: { accept: 'text/csv,.csv' }
      end
    end

    f.inputs 'Загрузите файлы со сканеров (только CSV)' do
      Activity::MAX_SCANNERS.times do |i|
        input "scanner#{i}", as: :file, label: "Файл со сканера #{i + 1}", input_html: { accept: 'text/csv,.csv' }
      end
    end
  end

  actions
end