Replace all datepickers with date input

Nowadays all browsers have reasonable date input support...
This commit is contained in:
Henne Vogelsang 2024-06-06 22:11:59 +02:00
parent 07bfff8fa1
commit 30fdc2d796
No known key found for this signature in database
GPG key ID: 97DDB66BDAF8D4D6
6 changed files with 26 additions and 39 deletions

View file

@ -49,11 +49,11 @@
.form-group .form-group
= f.label :start_date, "Start Date" = f.label :start_date, "Start Date"
%abbr{title: 'This field is required'} * %abbr{title: 'This field is required'} *
= f.text_field :start_date, id: 'conference-start-datepicker', required: true, class: 'form-control' = f.date_field :start_date, required: true, class: 'form-control'
.form-group .form-group
= f.label :end_date, "End Date" = f.label :end_date, "End Date"
%abbr{title: 'This field is required'} * %abbr{title: 'This field is required'} *
= f.text_field :end_date, id: 'conference-end-datepicker', required: true, class: 'form-control' = f.date_field :end_date, required: true, class: 'form-control'
- unless f.object.new_record? # We are showing more fields on the edit form - unless f.object.new_record? # We are showing more fields on the edit form
.form-group .form-group
= f.number_field :start_hour, size: 2, min: 0, max: 23, class: 'form-control' = f.number_field :start_hour, size: 2, min: 0, max: 23, class: 'form-control'

View file

@ -25,9 +25,9 @@
For the feature to work you need to set the voting dates below as well For the feature to work you need to set the voting dates below as well
.form-group .form-group
= f.label :voting_start_date = f.label :voting_start_date
= f.text_field :voting_start_date, id: 'datetimepicker-voting_start_date', value: (f.object.voting_start_date.to_formatted_s(:db_without_seconds) unless f.object.voting_start_date.nil?), class: 'form-control' = f.datetime_field :voting_start_date, value: (f.object.voting_start_date.to_formatted_s(:db_without_seconds) unless f.object.voting_start_date.nil?), class: 'form-control'
= f.label :voting_end_date = f.label :voting_end_date
= f.text_field :voting_end_date, id: 'datetimepicker-voting_end_date', value: (f.object.voting_end_date.to_formatted_s(:db_without_seconds) unless f.object.voting_end_date.nil?), class: 'form-control' = f.datetime_field :voting_end_date, value: (f.object.voting_end_date.to_formatted_s(:db_without_seconds) unless f.object.voting_end_date.nil?), class: 'form-control'
%h4 %h4
Languages Languages
%hr %hr

View file

@ -86,10 +86,10 @@
.kinds.text{ class: @survey_question.text? ? '' : 'hidden' } .kinds.text{ class: @survey_question.text? ? '' : 'hidden' }
%textarea.form-control{ rows: 4 } %textarea.form-control{ rows: 4 }
.kinds.datetime{ class: @survey_question.datetime? ? '' : 'hidden' } .kinds.datetime{ class: @survey_question.datetime? ? '' : 'hidden' }
.form-group{ class: 'datetimepicker' } .form-group
.input-group .input-group
.input-group-addon .input-group-addon
%span.fa-solid.fa-calendar %span.fa-solid.fa-calendar
%input.form-control{ readonly: 'readonly' } %input.form-control{ type: 'datetime-local', readonly: 'readonly' }
.kinds.numeric{ class: @survey_question.numeric? ? '' : 'hidden' } .kinds.numeric{ class: @survey_question.numeric? ? '' : 'hidden' }
%input.form-control{ type: 'number' } %input.form-control{ type: 'number' }

View file

@ -22,7 +22,7 @@
= f.select :target, Survey.targets.keys, class: 'form-control' = f.select :target, Survey.targets.keys, class: 'form-control'
.form-group .form-group
= f.label :start_date = f.label :start_date
= f.text_field :start_date, class: 'datetimepicker form-control' = f.datetime_field :start_date, class: 'form-control'
= f.label :end_date = f.label :end_date
= f.text_field :end_date, class: 'datetimepicker form-control' = f.datetime_field :end_date, class: 'form-control'
= f.submit nil, class: 'btn btn-primary' = f.submit nil, class: 'btn btn-primary'

View file

@ -32,10 +32,10 @@
- elsif survey_question.text? - elsif survey_question.text?
= text_area_tag "survey_submission[#{survey_question.id}][]", survey_reply.text, rows: 4, class: 'form-control', required: survey_question.mandatory = text_area_tag "survey_submission[#{survey_question.id}][]", survey_reply.text, rows: 4, class: 'form-control', required: survey_question.mandatory
- elsif survey_question.datetime? - elsif survey_question.datetime?
.form-group{ class: 'datetimepicker' } .form-group
.input-group .input-group
.input-group-addon .input-group-addon
%span.fa-solid.fa-calendar %span.fa-solid.fa-calendar
%input.form-control{ readonly: 'readonly', name: "survey_submission[#{survey_question.id}][]", value: survey_reply.text, required: survey_question.mandatory } %input.form-control{ type: 'datetime-local', readonly: 'readonly', name: "survey_submission[#{survey_question.id}][]", value: survey_reply.text, required: survey_question.mandatory }
- elsif survey_question.numeric? - elsif survey_question.numeric?
%input.form-control{ type: 'number', name: "survey_submission[#{survey_question.id}][]", value: survey_reply.text, required: survey_question.mandatory } %input.form-control{ type: 'number', name: "survey_submission[#{survey_question.id}][]", value: survey_reply.text, required: survey_question.mandatory }

View file

@ -3,9 +3,19 @@
require 'spec_helper' require 'spec_helper'
feature Conference do feature Conference do
let!(:user) { create(:admin) } let(:user) { create(:admin) }
let!(:organization) { create(:organization) } let!(:organization) { create(:organization) }
shared_examples 'add and update conference' do
describe 'admin' do
let(:conference) { create(:conference, organization: organization) }
scenario 'has organization name in menu bar for conference views', feature: true, js: true do
sign_in user
visit admin_conference_path(conference.short_title)
expect(find('.navbar-brand').text).to eq(conference.organization.name)
end
scenario 'adds a new conference', feature: true, js: true do scenario 'adds a new conference', feature: true, js: true do
expected_count = Conference.count + 1 expected_count = Conference.count + 1
sign_in user sign_in user
@ -19,13 +29,8 @@ feature Conference do
select('(GMT+01:00) Berlin', from: 'conference[timezone]') select('(GMT+01:00) Berlin', from: 'conference[timezone]')
today = Time.zone.today - 1 today = Time.zone.today - 1
page fill_in 'conference_start_date', with: today.strftime('%Y/%m/%d')
.execute_script("$('#conference-start-datepicker').val('" + fill_in 'conference_end_date', with: (today + 7).strftime('%Y/%m/%d')
"#{today.strftime('%d/%m/%Y')}')")
page
.execute_script("$('#conference-end-datepicker').val('" +
"#{(today + 7).strftime('%d/%m/%Y')}')")
click_button 'Create Conference' click_button 'Create Conference'
page.find('#flash') page.find('#flash')
@ -50,13 +55,8 @@ feature Conference do
fill_in 'conference_short_title', with: 'NewCon' fill_in 'conference_short_title', with: 'NewCon'
day = Time.zone.today + 10 day = Time.zone.today + 10
page fill_in 'conference_start_date', with: day.strftime('%Y/%m/%d')
.execute_script("$('#conference-start-datepicker').val('" + fill_in 'conference_end_date', with: (day + 7).strftime('%Y/%m/%d')
"#{day.strftime('%d/%m/%Y')}')")
page
.execute_script("$('#conference-end-datepicker').val('" +
"#{(day + 7).strftime('%d/%m/%Y')}')")
page.accept_alert do page.accept_alert do
click_button 'Update Conference' click_button 'Update Conference'
end end
@ -70,17 +70,4 @@ feature Conference do
expect(Conference.count).to eq(expected_count) expect(Conference.count).to eq(expected_count)
end end
end end
describe 'admin' do
let!(:conference) { create(:conference) }
scenario 'has organization name in menu bar for conference views', feature: true, js: true do
sign_in user
visit admin_conference_path(conference.short_title)
expect(find('.navbar-brand').text).to eq(conference.organization.name)
end
it_behaves_like 'add and update conference'
end
end end