aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZog2018-03-12 10:42:01 +0100
committerAlban Peignier2018-03-15 13:08:52 +0100
commit410457e1c1cad57ed2109fe8de9d1dc1eecf353f (patch)
tree7030d3c58f0697bc0a0f3f4366c9ca612dcb81d9
parent961df1d06016aeff88845f42b377076a6851f6b4 (diff)
downloadchouette-core-410457e1c1cad57ed2109fe8de9d1dc1eecf353f.tar.bz2
Refs #6143; Configurable extra headers on VJs editor
-rw-r--r--app/assets/stylesheets/components/_tables.sass3
-rw-r--r--app/javascript/vehicle_journeys/components/VehicleJourney.js21
-rw-r--r--app/javascript/vehicle_journeys/components/VehicleJourneys.js17
-rw-r--r--app/javascript/vehicle_journeys/containers/VehicleJourneysList.js4
-rw-r--r--app/views/vehicle_journeys/index.html.slim1
-rw-r--r--config/application.rb1
6 files changed, 46 insertions, 1 deletions
diff --git a/app/assets/stylesheets/components/_tables.sass b/app/assets/stylesheets/components/_tables.sass
index ef19bd538..ba51f7de7 100644
--- a/app/assets/stylesheets/components/_tables.sass
+++ b/app/assets/stylesheets/components/_tables.sass
@@ -376,6 +376,9 @@
border-top-color: transparent
> div:not(.btn-group)
min-height: 20px
+ white-space: nowrap
+ overflow: hidden
+ text-overflow: ellipsis
.td > .headlined
&:before
diff --git a/app/javascript/vehicle_journeys/components/VehicleJourney.js b/app/javascript/vehicle_journeys/components/VehicleJourney.js
index a667bf8aa..73d99d120 100644
--- a/app/javascript/vehicle_journeys/components/VehicleJourney.js
+++ b/app/javascript/vehicle_journeys/components/VehicleJourney.js
@@ -75,6 +75,21 @@ export default class VehicleJourney extends Component {
return (bool1 || bool2)
}
+ extraHeaderValue(header) {
+ if(header.type == "custom_field"){
+ let field = this.props.value.custom_fields[header["name"]]
+ if(field.field_type == "list"){
+ return field.options.list_values[field.value]
+ }
+ else{
+ return field.value
+ }
+ }
+ else{
+ return this.props.value[header["name"]]
+ }
+ }
+
render() {
this.previousCity = undefined
let detailed_calendars = this.hasFeature('detailed_calendars') && !this.disabled
@@ -95,6 +110,11 @@ export default class VehicleJourney extends Component {
<div>{this.props.value.published_journey_name && this.props.value.published_journey_name != I18n.t('undefined') ? this.props.value.published_journey_name : '-'}</div>
<div>{this.props.value.journey_pattern.short_id || '-'}</div>
<div>{this.props.value.company ? this.props.value.company.name : '-'}</div>
+ {
+ this.props.extraHeaders.map((header, i) =>
+ <div key={i}>{this.extraHeaderValue(header)}</div>
+ )
+ }
{ this.hasFeature('purchase_windows') &&
<div>
{purchase_windows.slice(0,3).map((tt, i)=>
@@ -222,4 +242,5 @@ VehicleJourney.propTypes = {
vehicleJourneys: PropTypes.object.isRequired,
allTimeTables: PropTypes.array.isRequired,
allPurchaseWindows: PropTypes.array.isRequired,
+ extraHeaders: PropTypes.array.isRequired,
}
diff --git a/app/javascript/vehicle_journeys/components/VehicleJourneys.js b/app/javascript/vehicle_journeys/components/VehicleJourneys.js
index ae38a21af..4b2d8c7a6 100644
--- a/app/javascript/vehicle_journeys/components/VehicleJourneys.js
+++ b/app/javascript/vehicle_journeys/components/VehicleJourneys.js
@@ -163,6 +163,15 @@ export default class VehicleJourneys extends Component {
)
}
+ extraHeaderLabel(header) {
+ if(header["type"] == "custom_field"){
+ return this.props.customFields[header["name"]]["name"]
+ }
+ else{
+ return I18n.attribute_name("vehicle_journey", header)
+ }
+ }
+
render() {
this.previousBreakpoint = undefined
this._allTimeTables = null
@@ -231,6 +240,11 @@ export default class VehicleJourneys extends Component {
)}
</div>
}
+ {
+ this.props.extraHeaders.map((header, i) =>
+ <div key={i}>{this.extraHeaderLabel(header)}</div>
+ )
+ }
<div>
{ detailed_calendars &&
<a href='#' onClick={this.toggleTimetables} className='detailed-timetables-bt'>
@@ -278,6 +292,7 @@ export default class VehicleJourneys extends Component {
disabled={this.isReturn()}
allTimeTables={this.allTimeTables()}
allPurchaseWindows={this.allPurchaseWindows()}
+ extraHeaders={this.props.extraHeaders}
/>
)}
</div>
@@ -293,6 +308,8 @@ export default class VehicleJourneys extends Component {
VehicleJourneys.propTypes = {
status: PropTypes.object.isRequired,
filters: PropTypes.object.isRequired,
+ extraHeaders: PropTypes.array.isRequired,
+ customFields: PropTypes.object.isRequired,
stopPointsList: PropTypes.array.isRequired,
onLoadFirstPage: PropTypes.func.isRequired,
onUpdateTime: PropTypes.func.isRequired,
diff --git a/app/javascript/vehicle_journeys/containers/VehicleJourneysList.js b/app/javascript/vehicle_journeys/containers/VehicleJourneysList.js
index 81d603fd4..f21e2c87e 100644
--- a/app/javascript/vehicle_journeys/containers/VehicleJourneysList.js
+++ b/app/javascript/vehicle_journeys/containers/VehicleJourneysList.js
@@ -10,7 +10,9 @@ const mapStateToProps = (state) => {
status: state.status,
filters: state.filters,
stopPointsList: state.stopPointsList,
- returnStopPointsList: state.returnStopPointsList
+ returnStopPointsList: state.returnStopPointsList,
+ extraHeaders: window.extra_headers,
+ customFields: window.custom_fields,
}
}
diff --git a/app/views/vehicle_journeys/index.html.slim b/app/views/vehicle_journeys/index.html.slim
index d53d8b50c..5606bc055 100644
--- a/app/views/vehicle_journeys/index.html.slim
+++ b/app/views/vehicle_journeys/index.html.slim
@@ -29,6 +29,7 @@
| window.features = #{raw @features};
| window.all_missions = #{(@all_missions.to_json).html_safe};
| window.custom_fields = #{(@custom_fields.to_json).html_safe};
+ | window.extra_headers = #{Rails.application.config.vehicle_journeys_extra_headers.to_json.html_safe};
// | window.I18n = #{(I18n.backend.send(:translations).to_json).html_safe};
- if has_feature?(:vehicle_journeys_return_route)
diff --git a/config/application.rb b/config/application.rb
index 8da6a7428..fabea41de 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -40,6 +40,7 @@ module ChouetteIhm
)
config.development_toolbar = false
+ config.vehicle_journeys_extra_headers = []
unless Rails.env.production?
# Work around sprockets+teaspoon mismatch: