aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/inputs/full_time_zone_input.rb21
-rw-r--r--app/javascript/vehicle_journeys/actions/index.js19
-rw-r--r--app/javascript/vehicle_journeys/components/VehicleJourney.js10
-rw-r--r--app/javascript/vehicle_journeys/reducers/vehicleJourneys.js14
-rw-r--r--app/views/companies/edit.html.slim7
-rw-r--r--app/views/companies/new.html.slim3
6 files changed, 48 insertions, 26 deletions
diff --git a/app/inputs/full_time_zone_input.rb b/app/inputs/full_time_zone_input.rb
index f5d8a9ba2..6138d17f5 100644
--- a/app/inputs/full_time_zone_input.rb
+++ b/app/inputs/full_time_zone_input.rb
@@ -1,7 +1,20 @@
class FullTimeZoneInput < SimpleForm::Inputs::CollectionSelectInput
def collection
@collection ||= begin
- collection = options.delete(:collection) || ActiveSupport::TimeZone::MAPPING
+ collection = options.delete(:collection) || begin
+ coll = {}
+
+ TZInfo::Timezone.all_data_zones.map do |tzinfo|
+ # v = ActiveSupport::TimeZone.zones_map[k]
+ # coll.sort_by do |v|
+ # "(#{v.formatted_offset}) #{v.name}"
+ # end
+ next if tzinfo.friendly_identifier =~ /^etc/i
+ tz = ActiveSupport::TimeZone.new tzinfo.name#, nil, tzinfo
+ coll[[tz.utc_offset, tzinfo.friendly_identifier(true)]] = ["(#{tz.formatted_offset}) #{tzinfo.friendly_identifier(true)}", tz.name]
+ end
+ coll.sort.map(&:last)
+ end
collection.respond_to?(:call) ? collection.call : collection.to_a
end
end
@@ -9,12 +22,8 @@ class FullTimeZoneInput < SimpleForm::Inputs::CollectionSelectInput
def detect_collection_methods
label, value = options.delete(:label_method), options.delete(:value_method)
- label ||= ->(tz) do
- tz = ActiveSupport::TimeZone[tz.last]
- "(#{tz.formatted_offset}) #{tz.name}"
- end
+ label ||= :first
value ||= :last
-
[label, value]
end
diff --git a/app/javascript/vehicle_journeys/actions/index.js b/app/javascript/vehicle_journeys/actions/index.js
index 60496e0ff..98594083d 100644
--- a/app/javascript/vehicle_journeys/actions/index.js
+++ b/app/javascript/vehicle_journeys/actions/index.js
@@ -489,23 +489,28 @@ const actions = {
}
return 0
},
- getDelta: (vjas) => {
+ getDelta: (vjas, allowNegative=false) => {
let delta = 0
if (vjas.departure_time.hour != '' && vjas.departure_time.minute != '' && vjas.arrival_time.hour != '' && vjas.departure_time.minute != ''){
delta = (parseInt(vjas.departure_time.hour) - parseInt(vjas.arrival_time.hour)) * 60 + (parseInt(vjas.departure_time.minute) - parseInt(vjas.arrival_time.minute))
}
+ if(!true && delta < 0){
+ delta += 24*60
+ }
vjas.delta = delta
return vjas
},
adjustSchedule: (action, schedule, enforceConsistency=false) => {
// we enforce that the departure time remains after the arrival time
- actions.getDelta(schedule)
+ actions.getDelta(schedule, true)
if(enforceConsistency && schedule.delta < 0){
- if(action.isDeparture){
- schedule.arrival_time = schedule.departure_time
- }
- else{
- schedule.departure_time = schedule.arrival_time
+ if(schedule.arrival_time.hour < 23 || schedule.departure_time.hour > 0){
+ if(action.isDeparture){
+ schedule.arrival_time = schedule.departure_time
+ }
+ else{
+ schedule.departure_time = schedule.arrival_time
+ }
}
actions.getDelta(schedule)
}
diff --git a/app/javascript/vehicle_journeys/components/VehicleJourney.js b/app/javascript/vehicle_journeys/components/VehicleJourney.js
index f7ae9341f..46d300e6e 100644
--- a/app/javascript/vehicle_journeys/components/VehicleJourney.js
+++ b/app/javascript/vehicle_journeys/components/VehicleJourney.js
@@ -192,20 +192,16 @@ export default class VehicleJourney extends Component {
<span className={((this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false) ? 'disabled ' : '') + 'input-group time'}>
<input
type='number'
- min='00'
- max='23'
className='form-control'
disabled={!this.props.editMode || this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false}
readOnly={!this.props.editMode && !vj.dummy}
onChange={(e) => {this.props.onUpdateTime(e, i, this.props.index, 'hour', false, false)}}
- onChange={(e) => {this.props.onUpdateTime(e, i, this.props.index, 'hour', false, false, true)}}
+ onBlur={(e) => {this.props.onUpdateTime(e, i, this.props.index, 'hour', false, false, true)}}
value={vj.arrival_time['hour']}
/>
<span>:</span>
<input
type='number'
- min='00'
- max='59'
className='form-control'
disabled={!this.props.editMode || this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false}
readOnly={!this.props.editMode && !vj.dummy}
@@ -225,8 +221,6 @@ export default class VehicleJourney extends Component {
<span className={((this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false) ? 'disabled ' : '') + 'input-group time'}>
<input
type='number'
- min='00'
- max='23'
className='form-control'
disabled={!this.props.editMode || this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false}
readOnly={!this.props.editMode && !vj.dummy}
@@ -237,8 +231,6 @@ export default class VehicleJourney extends Component {
<span>:</span>
<input
type='number'
- min='00'
- max='59'
className='form-control'
disabled={!this.props.editMode || this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false}
readOnly={!this.props.editMode && !vj.dummy}
diff --git a/app/javascript/vehicle_journeys/reducers/vehicleJourneys.js b/app/javascript/vehicle_journeys/reducers/vehicleJourneys.js
index 121be6a00..ecb58e2ea 100644
--- a/app/javascript/vehicle_journeys/reducers/vehicleJourneys.js
+++ b/app/javascript/vehicle_journeys/reducers/vehicleJourneys.js
@@ -150,6 +150,16 @@ const vehicleJourney= (state = {}, action, keep) => {
return _.assign({}, state, {vehicle_journey_at_stops: shiftedArray})
case 'UPDATE_TIME':
let vj, vjas, vjasArray, newSchedule
+ let val = action.val
+ if(val != ''){
+ val = parseInt(val)
+ if(action.timeUnit == "minute"){
+ val = (val + 60) % 60
+ }
+ else{
+ val = (val + 24) % 24
+ }
+ }
vjasArray = state.vehicle_journey_at_stops.map((vjas, i) =>{
if(i == action.subIndex){
newSchedule = {
@@ -157,13 +167,13 @@ const vehicleJourney= (state = {}, action, keep) => {
arrival_time: _.assign({}, vjas.arrival_time)
}
if (action.isDeparture){
- newSchedule.departure_time[action.timeUnit] = actions.pad(action.val, action.timeUnit)
+ newSchedule.departure_time[action.timeUnit] = actions.pad(val, action.timeUnit)
if(!action.isArrivalsToggled)
newSchedule.arrival_time[action.timeUnit] = newSchedule.departure_time[action.timeUnit]
newSchedule = actions.adjustSchedule(action, newSchedule, action.enforceConsistency)
return _.assign({}, state.vehicle_journey_at_stops[action.subIndex], {arrival_time: newSchedule.arrival_time, departure_time: newSchedule.departure_time, delta: newSchedule.delta})
}else{
- newSchedule.arrival_time[action.timeUnit] = actions.pad(action.val, action.timeUnit)
+ newSchedule.arrival_time[action.timeUnit] = actions.pad(val, action.timeUnit)
newSchedule = actions.adjustSchedule(action, newSchedule, action.enforceConsistency)
return _.assign({}, state.vehicle_journey_at_stops[action.subIndex], {arrival_time: newSchedule.arrival_time, departure_time: newSchedule.departure_time, delta: newSchedule.delta})
}
diff --git a/app/views/companies/edit.html.slim b/app/views/companies/edit.html.slim
index faa88f829..c85bef0ec 100644
--- a/app/views/companies/edit.html.slim
+++ b/app/views/companies/edit.html.slim
@@ -1,3 +1,8 @@
- breadcrumb :company, @company
- page_header_content_for @company
-= render 'form' \ No newline at end of file
+
+.page_content
+ .container-fluid
+ .row
+ .col-lg-8.col-lg-offset-2.col-md-8.col-md-offset-2.col-sm-10.col-sm-offset-1
+ = render 'form'
diff --git a/app/views/companies/new.html.slim b/app/views/companies/new.html.slim
index 1747b8e10..6cc32130d 100644
--- a/app/views/companies/new.html.slim
+++ b/app/views/companies/new.html.slim
@@ -1,6 +1,7 @@
- breadcrumb :companies, @line_referential
+
.page_content
.container-fluid
.row
.col-lg-8.col-lg-offset-2.col-md-8.col-md-offset-2.col-sm-10.col-sm-offset-1
- = render 'form' \ No newline at end of file
+ = render 'form'