diff options
Diffstat (limited to 'app')
| -rw-r--r-- | app/inputs/full_time_zone_input.rb | 21 | ||||
| -rw-r--r-- | app/javascript/vehicle_journeys/actions/index.js | 19 | ||||
| -rw-r--r-- | app/javascript/vehicle_journeys/components/VehicleJourney.js | 10 | ||||
| -rw-r--r-- | app/javascript/vehicle_journeys/reducers/vehicleJourneys.js | 14 | ||||
| -rw-r--r-- | app/views/companies/edit.html.slim | 7 | ||||
| -rw-r--r-- | app/views/companies/new.html.slim | 3 | 
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' | 
