I am really not sure if I am on the right path... every time I find solution for my previous problem and later on when I integrate "fixed" code with something else it breaks again, so that made me think that I am doing something fundamentally wrong here. Thats why I am asking you to REVIEW and propose FIX or completele new SOLUTION for something that I plan to achieve.
I am trying to display a flight information and each route should be displayed the way you see on the picture.
Right now, it works but in some cases when Outbound flight has more connections than Inbound flight, flight path (blue line) gets interrupted and stays on the same level as second flight in the Outbound. I want in current scenario, blue path go all the way down and each Inbound/Outbound flight path length must be in sync and in respect to each other. (same length no matter how many connections each flight has)
Could you please help me to figure out, how do I fix or change entire architecture, solution, CSS, to draw a blue path line and keep Inbound and Outbound flights the same length no matter how many connections each of these has?
Plunker code example
HTML:
<div class="roundtrip">
<div class="col-md-6">Outbound
<div class="trip" ng-repeat="departureFlight in ticket.route.departureFlights">
<div class="flight align-bottom">
<div class="date-time col-md-offset-2 col-md-3">
<div class="flight-time">{{departureFlight.departureTime | date:"h:mma"}}</div>
<div class="flight-date">{{departureFlight.departureTime | date:"EEE, MMM d, y"}}</div>
</div>
<div class="col-md-offset-0 col-md-2">{{departureFlight.cityFrom}} ({{departureFlight.flyFrom}})</div>
</div>
<div class="flight-path">
<div class="flight-path">
<div class="flight-duration">{{departureFlight.arrivalTime-departureFlight.departureTime | date:"h:mm"}}hr</div>
</div>
</div>
<div class="flight align-bottom">
<div class="date-time col-md-offset-2 col-md-3">
<div class="flight-time">{{departureFlight.arrivalTime | date:"h:mma"}}</div>
<div class="flight-date">{{departureFlight.arrivalTime | date:"EEE, MMM d, y"}}</div>
</div>
<div class="col-md-offset-0 col-md-2">{{departureFlight.cityTo}} ({{departureFlight.flyTo}})</div>
</div>
<div class="connection" ng-if="departureFlight.transferFlight">
{{departureFlight.arrivalTime | date:"h:mm"}}hr wait
</div>
</div>
</div>
<div class="col-md-6">Inbound
<div class="trip" ng-repeat="returnFlight in ticket.route.returnFlights">
<div class="flight align-bottom">
<div class="date-time col-md-offset-2 col-md-3">
<div class="flight-time">{{returnFlight.departureTime | date:"h:mma"}}</div>
<div class="flight-date">{{returnFlight.departureTime | date:"EEE, MMM d, y"}}</div>
</div>
<div class="col-md-offset-0 col-md-2">{{returnFlight.cityFrom}} ({{returnFlight.flyFrom}})</div>
</div>
<div class="flight-path">
<div class="flight-path">
<div class="flight-duration">{{returnFlight.arrivalTime-returnFlight.departureTime | date:"h:mm"}}hr</div>
</div>
</div>
<div class="flight align-bottom">
<div class="date-time col-md-offset-2 col-md-3">
<div class="flight-time">{{returnFlight.arrivalTime | date:"h:mma"}}</div>
<div class="flight-date">{{returnFlight.arrivalTime | date:"EEE, MMM d, y"}}</div>
</div>
<div class="col-md-offset-0 col-md-2">{{returnFlight.cityTo}} ({{returnFlight.flyTo}})</div>
</div>
<div class="connection" ng-if="returnFlight.transferFlight">
{{returnFlight.arrivalTime | date:"h:mm"}}hr wait
</div>
</div>
</div>
</div>
CSS:
.searchResult {
padding-left: 15px;
padding-right: 15px;
padding-top: 0px;
padding-bottom: 0px;
}
.align-bottom { /*added*/
display: flex;
align-items: flex-end;
}
.roundtrip {
width: 100%;
display: inline-flex;
flex-direction: row;
align-items: stretch;
}
.trip {
//width: 100px;
text-align: center;
display: flex;
flex-direction: column;
}
.flight {
white-space: nowrap;
}
.date-time {
text-align: center;
}
.flight-path {
position: relative;
width: 6px;
min-height: 135px;
flex-grow: 1;
align-self: center;
background-color: #6090FF;
}
.flight-duration {
position: absolute;
top: 50%;
transform: translateY(-50%);
white-space: nowrap;
background: rgba(255, 255, 255, .75);
text-align: center;
left:-15px;
}
.connection {
height: 40px;
align-self: center;
width: 70px;
color: red;
border: 1px solid red;
display: flex;
flex-direction: column;
justify-content: center;
}