SimBrief integration #405 (#635)

* SimBrief integration #405

* Add briefing as API response; add acars_xml field #405
This commit is contained in:
Nabeel S
2020-03-23 09:31:35 -04:00
committed by GitHub
parent 04b9e37e1d
commit 9e5386264f
70 changed files with 6816 additions and 192 deletions
@@ -1,7 +1,7 @@
<div class="card">
<div class="card-block" style="min-height: 0px; display: flex; justify-content: center; align-items: center;">
<div class="form-group text-right btn-primary my-bids">
<a href="{{ route('frontend.flights.bids') }}">{{ trans_choice('flights.mybid', 2) }}</a>
<div class="form-group text-right">
<a href="{{ route('frontend.flights.bids') }}" class="btn btn-outline-primary">{{ trans_choice('flights.mybid', 2) }}</a>
</div>
</div>
</div>
@@ -28,7 +28,7 @@
</div>
<div class="clear mt-1" style="margin-top: 10px;">
{{ Form::submit(__('common.find'), ['class' => 'btn btn-primary']) }}&nbsp;
{{ Form::submit(__('common.find'), ['class' => 'btn btn-outline-primary']) }}&nbsp;
<a href="{{ route('frontend.flights.index') }}">@lang('common.reset')</a>
</div>
{{ Form::close() }}
@@ -0,0 +1,234 @@
@extends('app')
@section('title', 'Briefing')
@section('content')
<div class="row">
<div class="col-sm-9">
<h2>{{ $simbrief->xml->general->icao_airline }}{{ $simbrief->xml->general->flight_number }}
: {{ $simbrief->xml->origin->icao_code }} to {{ $simbrief->xml->destination->icao_code }}</h2>
</div>
<div class="col-sm-3">
@if (empty($simbrief->pirep_id))
<a class="btn btn-outline-info pull-right btn-lg"
style="margin-top: -10px;margin-bottom: 5px"
href="{{ url(route('frontend.simbrief.prefile', [$simbrief->id])) }}">Prefile PIREP</a>
@endif
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="row">
<div class="col-6">
<div class="form-container">
<h6><i class="fas fa-info-circle"></i>
&nbsp;Dispatch Information
</h6>
<div class="form-container-body">
<div class="row">
<div class="col-4 text-center">
<div><p class="small text-uppercase pb-sm-0 mb-sm-1">Flight</p>
<p class="border border-dark rounded p-1 small text-monospace">
{{ $simbrief->xml->general->icao_airline }}{{ $simbrief->xml->general->flight_number }}</p>
</div>
</div>
<div class="col-4 text-center">
<div><p class="small text-uppercase pb-sm-0 mb-sm-1">Departure</p>
<p class="border border-dark rounded p-1 small text-monospace">
{{ $simbrief->xml->origin->icao_code }}@if(!empty($simbrief->xml->origin->plan_rwy))
/{{ $simbrief->xml->origin->plan_rwy }}
@endif
</p>
</div>
</div>
<div class="col-4 text-center">
<div><p class="small text-uppercase pb-sm-0 mb-sm-1">Arrival</p>
<p class="border border-dark rounded p-1 small text-monospace">
{{ $simbrief->xml->destination->icao_code }}@if(!empty($simbrief->xml->destination->plan_rwy))
/{{ $simbrief->xml->destination->plan_rwy }}
@endif
</p>
</div>
</div>
</div>
<hr/>
<div class="row">
<div class="col-4 text-center">
<div><p class="small text-uppercase pb-sm-0 mb-sm-1">Aircraft</p>
<p class="border border-dark rounded p-1 small text-monospace">
{{ $simbrief->xml->aircraft->name }}</p>
</div>
</div>
<div class="col-4 text-center">
<div><p class="small text-uppercase pb-sm-0 mb-sm-1">Enroute Time</p>
<p class="border border-dark rounded p-1 small text-monospace">
@minutestotime($simbrief->xml->times->sched_time_enroute / 60)</p>
</div>
</div>
<div class="col-4 text-center">
<div><p class="small text-uppercase pb-sm-0 mb-sm-1">Cruise Altitude</p>
<p class="border border-dark rounded p-1 small text-monospace">
{{ $simbrief->xml->general->initial_altitude }}</p>
</div>
</div>
</div>
<hr/>
@if (!empty($simbrief->xml->general->dx_rmk))
<div class="row">
<div class="col-12">
<div><p class="small text-uppercase pb-sm-0 mb-sm-1">Dispatcher Remarks</p>
<p class="border border-dark rounded p-1 small text-monospace">
{{ $simbrief->xml->general->dx_rmk }}</p>
</div>
</div>
</div>
@endif
@if (!empty($simbrief->xml->general->sys_rmk))
<div class="row">
<div class="col-12">
<div><p class="small text-uppercase pb-sm-0 mb-sm-1">System Remarks</p>
<p class="border border-dark rounded p-1 small text-monospace">
{{ $simbrief->xml->general->sys_rmk }}</p>
</div>
</div>
</div>
@endif
</div>
</div>
<div class="form-container">
<h6><i class="fas fa-info-circle"></i>
&nbsp;Flight Plan
</h6>
<div class="form-container-body">
<div class="row">
<div class="col-12">
<p class="border border-dark rounded p-1 small text-monospace">
{!! str_replace("\n", "<br>", $simbrief->xml->atc->flightplan_text) !!}
</p>
</div>
</div>
</div>
</div>
<div class="form-container">
<h6><i class="fas fa-info-circle"></i>
&nbsp;Weather
</h6>
<div class="form-container-body">
<div class="row">
<div class="col-12">
<div><p class="small text-uppercase pb-sm-0 mb-sm-1">Departure METAR</p>
<p class="border border-dark rounded p-1 small text-monospace">
{{ $simbrief->xml->weather->orig_metar }}</p>
</div>
<hr/>
<div><p class="small text-uppercase pb-sm-0 mb-sm-1">Arrival METAR</p>
<p class="border border-dark rounded p-1 small text-monospace">
{{ $simbrief->xml->weather->dest_metar }}</p>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-6">
<div class="form-container">
<h6><i class="fas fa-info-circle"></i>
&nbsp;Download Flight Plan
</h6>
<div class="form-container-body">
<div class="row">
<div class="col-12">
<select id="download_fms_select" class="select2 custom-select">
@foreach($simbrief->files as $fms)
<option value="{{ $fms['url'] }}">{{ $fms['name'] }}</option>
@endforeach
</select>
<br/>
<input id="download_fms"
type="submit"
class="btn btn-outline-primary pull-right"
value="Download"/>
</div>
</div>
</div>
</div>
<div class="form-container">
<h6><i class="fas fa-info-circle"></i>
&nbsp;OFP
</h6>
<div class="form-container-body border border-dark">
<div class="overflow-auto" style="height: 600px;">
{!! $simbrief->xml->text->plan_html !!}
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-12">
<div class="form-container">
<h6><i class="fas fa-info-circle"></i>
&nbsp;Flight Maps
</h6>
<div class="form-container-body">
@foreach($simbrief->images->chunk(2) as $images)
<div class="row">
@foreach($images as $image)
<div class="col-6 text-center">
<p>
<img src="{{ $image['url'] }}" alt="{{ $image['name'] }}"/>
<small class="text-muted">{{ $image['name'] }}</small>
</p>
</div>
@endforeach
</div>
@endforeach
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-12">
@if (empty($simbrief->pirep_id))
<a class="btn btn-outline-info pull-right"
style="margin-top: -10px;margin-bottom: 5px"
href="{{ url(route('frontend.simbrief.prefile', [$simbrief->id])) }}">Prefile PIREP</a>
@endif
</div>
</div>
@endsection
@section('scripts')
<script>
$(document).ready(function () {
$("#download_fms").click(e => {
e.preventDefault();
const select = document.getElementById("download_fms_select");
const link = select.options[select.selectedIndex].value;
console.log('Downloading FMS: ', link);
window.open(link, '_blank');
});
});
</script>
@endsection
@@ -0,0 +1,162 @@
@extends('app')
@section('title', 'Generate OFP')
@section('content')
<form id="sbapiform">
<div class="row">
<div class="col-md-12">
<h2>Create Flight Briefing</h2>
<div class="row">
<div class="col-8">
<div class="form-container">
<h6><i class="fas fa-info-circle"></i>
&nbsp;@lang('pireps.flightinformations')
</h6>
<div class="form-container-body">
<div class="row">
<div class="col-sm-4">
<label for="orig">Departure Airport</label>
<input id="orig"
name="orig"
type="text"
class="form-control"
placeholder="ZZZZ"
maxlength="4"
value="{{ $flight->dpt_airport_id }}"/>
</div>
<div class="col-sm-4">
<label for="dest">Arrival Airport</label>
<input id="dest"
name="dest"
type="text"
class="form-control"
placeholder=""
maxlength="4"
value="{{ $flight->arr_airport_id }}"/>
</div>
<div class="col-sm-4">
<label for="type">Aircraft</label>
<select id="type" name="type" class="custom-select select2">
<option value="a320">A320</option>
<option value="b738">B738</option>
</select>
</div>
</div>
</div>
</div>
</div>
<div class="col-4">
<div class="form-container">
<h6><i class="fas fa-info-circle"></i>
&nbsp;Briefing Options
</h6>
<table class="table table-hover table-striped">
<tr>
<td>Units:</td>
<td><select name="units">
<option value="KGS">KGS</option>
<option value="LBS" selected>LBS</option>
</select></td>
</tr>
<tr>
<td>Cont Fuel:</td>
<td><select name="contpct">
<option value="auto" selected>AUTO</option>
<option value="0">0 PCT</option>
<option value="0.02">2 PCT</option>
<option value="0.03">3 PCT</option>
<option value="0.05">5 PCT</option>
<option value="0.1">10 PCT</option>
<option value="0.15">15 PCT</option>
<option value="0.2">20 PCT</option>
</select></td>
</tr>
<tr>
<td>Reserve Fuel:</td>
<td><select name="resvrule">
<option value="auto">AUTO</option>
<option value="0">0 MIN</option>
<option value="15">15 MIN</option>
<option value="30">30 MIN</option>
<option value="45" selected>45 MIN</option>
<option value="60">60 MIN</option>
<option value="75">75 MIN</option>
<option value="90">90 MIN</option>
</select></td>
</tr>
<tr>
<td>Detailed Navlog:</td>
<td><input type="hidden" name="navlog" value="0"><input type="checkbox" name="navlog" value="1"
checked>
</td>
</tr>
<tr>
<td>ETOPS Planning:</td>
<td><input type="hidden" name="etops" value="0"><input type="checkbox" name="etops" value="1"></td>
</tr>
<tr>
<td>Plan Stepclimbs:</td>
<td><input type="hidden" name="stepclimbs" value="0"><input type="checkbox" name="stepclimbs"
value="1"
checked>
</td>
</tr>
<tr>
<td>Runway Analysis:</td>
<td><input type="hidden" name="tlr" value="0"><input type="checkbox" name="tlr" value="1" checked>
</td>
</tr>
<tr>
<td>Include NOTAMS:</td>
<td><input type="hidden" name="notams" value="0"><input type="checkbox" name="notams" value="1"
checked>
</td>
</tr>
<tr>
<td>FIR NOTAMS:</td>
<td><input type="hidden" name="firnot" value="0"><input type="checkbox" name="firnot" value="1"></td>
</tr>
<tr>
<td>Flight Maps:</td>
<td><select name="maps">
<option value="detail">Detailed</option>
<option value="simple">Simple</option>
<option value="none">None</option>
</select></td>
</tr>
</table>
</div>
</div>
</div>
<input type="hidden" name="airline" value="{{ $flight->airline->icao }}">
<input type="hidden" name="fltnum" value="{{ $flight->flight_number }}">
<input type="hidden" name="date" value="01JAN14">
<input type="hidden" name="deph" value="12">
<input type="hidden" name="depm" value="30">
<input type="hidden" name="steh" value="2">
<input type="hidden" name="stem" value="15">
{{--<input type="hidden" name="reg" value="N123SB">
<input type="hidden" name="selcal" value="GR-FS">--}}
<input type="hidden" name="planformat" value="lido">
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="float-right">
<div class="form-group">
<input type="button"
onclick="simbriefsubmit('{{ $flight->id }}', '{{ url(route('frontend.simbrief.briefing', [''])) }}');"
class="btn btn-outline-primary"
value="Generate">
</div>
</div>
</div>
</div>
</form>
@endsection
@section('scripts')
<script src="{{public_asset('/assets/global/js/simbrief.apiv1.js')}}"></script>
@endsection
@@ -70,8 +70,15 @@
</div>
<div class="row">
<div class="col-sm-12 text-right">
@if ($simbrief !== false)
<a href="{{ route('frontend.simbrief.generate') }}?flight_id={{ $flight->id }}"
class="btn btn-sm btn-outline-primary">
Create SimBrief Flight Plan
</a>
@endif
<a href="{{ route('frontend.pireps.create') }}?flight_id={{ $flight->id }}"
class="btn btn-sm btn-info">
class="btn btn-sm btn-outline-info">
{{ __('pireps.newpirep') }}
</a>
</div>