Compare commits

..
Author SHA1 Message Date
snyk-bot 2704834642 fix: package.json & package-lock.json to reduce vulnerabilities
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-MINIMIST-2429795
2022-03-22 21:21:41 +00:00
77 changed files with 11485 additions and 23952 deletions
+1 -1
View File
@@ -80,7 +80,7 @@ jobs:
- name: Run Tests - name: Run Tests
run: | run: |
export PHP_CS_FIXER_IGNORE_ENV=1 export PHP_CS_FIXER_IGNORE_ENV=1
#vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.php -v --dry-run --diff --using-cache=no vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.php -v --dry-run --diff --using-cache=no
vendor/bin/phpunit --debug --verbose vendor/bin/phpunit --debug --verbose
# This runs after all of the tests, run have run. Creates a cleaned up version of the # This runs after all of the tests, run have run. Creates a cleaned up version of the
+1 -1
View File
@@ -102,7 +102,7 @@ reset-installer:
.PHONY: docker-test .PHONY: docker-test
docker-test: docker-test:
@docker compose -f docker-compose.dev.yml up @docker compose -f docker-compose.local.yml up
.PHONY: docker-clean .PHONY: docker-clean
docker-clean: docker-clean:
+1 -1
View File
@@ -39,7 +39,7 @@ make docker-test
# **OR** with docker-compose directly # **OR** with docker-compose directly
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up docker-compose -f docker-compose.yml -f docker-compose.local.yml up
``` ```
Then go to `http://localhost`. If you're using dnsmasq, the `app` container is listening on `phpvms.test`, or you can add to your `/etc/hosts` file: Then go to `http://localhost`. If you're using dnsmasq, the `app` container is listening on `phpvms.test`, or you can add to your `/etc/hosts` file:
+3 -3
View File
@@ -33,8 +33,8 @@ class AircraftFactory extends Factory
{ {
return [ return [
'id' => null, 'id' => null,
'subfleet_id' => fn () => Subfleet::factory()->create()->id, 'subfleet_id' => fn () => Subfleet::factory()->create()->id,
'airport_id' => fn () => Airport::factory()->create()->id, 'airport_id' => fn () => Airport::factory()->create()->id,
'iata' => $this->faker->unique()->text(5), 'iata' => $this->faker->unique()->text(5),
'icao' => $this->faker->unique()->text(5), 'icao' => $this->faker->unique()->text(5),
'name' => $this->faker->text(50), 'name' => $this->faker->text(50),
@@ -45,7 +45,7 @@ class AircraftFactory extends Factory
'status' => AircraftStatus::ACTIVE, 'status' => AircraftStatus::ACTIVE,
'state' => AircraftState::PARKED, 'state' => AircraftState::PARKED,
'created_at' => $this->faker->dateTimeBetween('-1 week')->format(DateTime::ATOM), 'created_at' => $this->faker->dateTimeBetween('-1 week')->format(DateTime::ATOM),
'updated_at' => fn (array $pirep) => $pirep['created_at'], 'updated_at' => fn (array $pirep) => $pirep['created_at'],
]; ];
} }
} }
+1 -1
View File
@@ -32,7 +32,7 @@ class AirlineFactory extends Factory
return $hashids->encode($mt); return $hashids->encode($mt);
}, },
'iata' => fn (array $apt) => $apt['icao'], 'iata' => fn (array $apt) => $apt['icao'],
'name' => $this->faker->sentence(3), 'name' => $this->faker->sentence(3),
'country' => $this->faker->country, 'country' => $this->faker->country,
'active' => 1, 'active' => 1,
+2 -3
View File
@@ -55,15 +55,14 @@ class AirportFactory extends Factory
return $airport; return $airport;
}, },
'icao' => fn (array $apt) => $apt['id'], 'icao' => fn (array $apt) => $apt['id'],
'iata' => fn (array $apt) => $apt['id'], 'iata' => fn (array $apt) => $apt['id'],
'name' => $this->faker->sentence(3), 'name' => $this->faker->sentence(3),
'country' => $this->faker->country, 'country' => $this->faker->country,
'timezone' => $this->faker->timezone, 'timezone' => $this->faker->timezone,
'lat' => $this->faker->latitude, 'lat' => $this->faker->latitude,
'lon' => $this->faker->longitude, 'lon' => $this->faker->longitude,
'hub' => false, 'hub' => false,
'notes' => null,
'ground_handling_cost' => $this->faker->randomFloat(2, 0, 500), 'ground_handling_cost' => $this->faker->randomFloat(2, 0, 500),
'fuel_100ll_cost' => $this->faker->randomFloat(2, 1, 10), 'fuel_100ll_cost' => $this->faker->randomFloat(2, 1, 10),
'fuel_jeta_cost' => $this->faker->randomFloat(2, 1, 10), 'fuel_jeta_cost' => $this->faker->randomFloat(2, 1, 10),
+1 -1
View File
@@ -28,7 +28,7 @@ class FareFactory extends Factory
'code' => $this->faker->unique()->text(50), 'code' => $this->faker->unique()->text(50),
'name' => $this->faker->text(50), 'name' => $this->faker->text(50),
'price' => $this->faker->randomFloat(2, 100, 1000), 'price' => $this->faker->randomFloat(2, 100, 1000),
'cost' => fn (array $fare) => round($fare['price'] / 2), 'cost' => fn (array $fare) => round($fare['price'] / 2),
'capacity' => $this->faker->randomFloat(0, 20, 500), 'capacity' => $this->faker->randomFloat(0, 20, 500),
]; ];
} }
+4 -4
View File
@@ -26,15 +26,15 @@ class FlightFactory extends Factory
{ {
return [ return [
'id' => $this->faker->unique()->numberBetween(10, 10000000), 'id' => $this->faker->unique()->numberBetween(10, 10000000),
'airline_id' => fn () => \App\Models\Airline::factory()->create()->id, 'airline_id' => fn () => \App\Models\Airline::factory()->create()->id,
'flight_number' => $this->faker->unique()->numberBetween(10, 1000000), 'flight_number' => $this->faker->unique()->numberBetween(10, 1000000),
'route_code' => $this->faker->randomElement(['', $this->faker->text(5)]), 'route_code' => $this->faker->randomElement(['', $this->faker->text(5)]),
'route_leg' => $this->faker->randomElement( 'route_leg' => $this->faker->randomElement(
['', $this->faker->numberBetween(0, 1000)] ['', $this->faker->numberBetween(0, 1000)]
), ),
'dpt_airport_id' => static fn () => \App\Models\Airport::factory()->create()->id, 'dpt_airport_id' => static fn () => \App\Models\Airport::factory()->create()->id,
'arr_airport_id' => static fn () => \App\Models\Airport::factory()->create()->id, 'arr_airport_id' => static fn () => \App\Models\Airport::factory()->create()->id,
'alt_airport_id' => static fn () => \App\Models\Airport::factory()->create()->id, 'alt_airport_id' => static fn () => \App\Models\Airport::factory()->create()->id,
'distance' => $this->faker->numberBetween(1, 1000), 'distance' => $this->faker->numberBetween(1, 1000),
'route' => null, 'route' => null,
'level' => 0, 'level' => 0,
@@ -28,7 +28,7 @@ class JournalTransactionsFactory extends Factory
{ {
return [ return [
'transaction_group' => Uuid::uuid4()->toString(), 'transaction_group' => Uuid::uuid4()->toString(),
'journal_id' => fn () => Journal::factory()->create()->id, 'journal_id' => fn () => Journal::factory()->create()->id,
'credit' => $this->faker->numberBetween(100, 10000), 'credit' => $this->faker->numberBetween(100, 10000),
'debit' => $this->faker->numberBetween(100, 10000), 'debit' => $this->faker->numberBetween(100, 10000),
'currency' => 'USD', 'currency' => 'USD',
+10 -10
View File
@@ -37,15 +37,15 @@ class PirepFactory extends Factory
return [ return [
'id' => $this->faker->unique()->numberBetween(10, 10000000), 'id' => $this->faker->unique()->numberBetween(10, 10000000),
'airline_id' => fn () => $airline->id, 'airline_id' => fn () => $airline->id,
'user_id' => fn () => \App\Models\User::factory()->create()->id, 'user_id' => fn () => \App\Models\User::factory()->create()->id,
'aircraft_id' => fn () => \App\Models\Aircraft::factory()->create()->id, 'aircraft_id' => fn () => \App\Models\Aircraft::factory()->create()->id,
'flight_id' => fn () => $flight->id, 'flight_id' => fn () => $flight->id,
'flight_number' => fn () => $flight->flight_number, 'flight_number' => fn () => $flight->flight_number,
'route_code' => null, 'route_code' => null,
'route_leg' => null, 'route_leg' => null,
'dpt_airport_id' => fn () => $flight->dpt_airport_id, 'dpt_airport_id' => fn () => $flight->dpt_airport_id,
'arr_airport_id' => fn () => $flight->arr_airport_id, 'arr_airport_id' => fn () => $flight->arr_airport_id,
'level' => $this->faker->numberBetween(20, 400), 'level' => $this->faker->numberBetween(20, 400),
'distance' => $this->faker->randomFloat(2, 0, 6000), 'distance' => $this->faker->randomFloat(2, 0, 6000),
'planned_distance' => $this->faker->randomFloat(2, 0, 6000), 'planned_distance' => $this->faker->randomFloat(2, 0, 6000),
@@ -53,9 +53,9 @@ class PirepFactory extends Factory
'planned_flight_time' => $this->faker->numberBetween(60, 360), 'planned_flight_time' => $this->faker->numberBetween(60, 360),
'zfw' => $this->faker->randomFloat(2), 'zfw' => $this->faker->randomFloat(2),
'block_fuel' => $this->faker->randomFloat(2, 0, 1000), 'block_fuel' => $this->faker->randomFloat(2, 0, 1000),
'fuel_used' => fn (array $pirep) => round($pirep['block_fuel'] * .9, 2), 'fuel_used' => fn (array $pirep) => round($pirep['block_fuel'] * .9, 2),
'block_on_time' => Carbon::now('UTC'), 'block_on_time' => Carbon::now('UTC'),
'block_off_time' => fn (array $pirep) => $pirep['block_on_time']->subMinutes( 'block_off_time' => fn (array $pirep) => $pirep['block_on_time']->subMinutes(
$pirep['flight_time'] $pirep['flight_time']
), ),
'route' => $this->faker->text(200), 'route' => $this->faker->text(200),
@@ -68,7 +68,7 @@ class PirepFactory extends Factory
'status' => PirepStatus::SCHEDULED, 'status' => PirepStatus::SCHEDULED,
'submitted_at' => Carbon::now('UTC')->toDateTimeString(), 'submitted_at' => Carbon::now('UTC')->toDateTimeString(),
'created_at' => Carbon::now('UTC')->toDateTimeString(), 'created_at' => Carbon::now('UTC')->toDateTimeString(),
'updated_at' => fn (array $pirep) => $pirep['created_at'], 'updated_at' => fn (array $pirep) => $pirep['created_at'],
]; ];
} }
} }
+1 -1
View File
@@ -25,7 +25,7 @@ class SubfleetFactory extends Factory
{ {
return [ return [
'id' => null, 'id' => null,
'airline_id' => fn () => \App\Models\Airline::factory()->create()->id, 'airline_id' => fn () => \App\Models\Airline::factory()->create()->id,
'name' => $this->faker->unique()->text(50), 'name' => $this->faker->unique()->text(50),
'type' => $this->faker->unique()->text(7), 'type' => $this->faker->unique()->text(7),
'ground_handling_multiplier' => $this->faker->numberBetween(50, 200), 'ground_handling_multiplier' => $this->faker->numberBetween(50, 200),
+1 -1
View File
@@ -42,7 +42,7 @@ class UserFactory extends Factory
'email' => $this->faker->safeEmail, 'email' => $this->faker->safeEmail,
'password' => self::$password, 'password' => self::$password,
'api_key' => $this->faker->sha1, 'api_key' => $this->faker->sha1,
'airline_id' => fn () => Airline::factory()->create()->id, 'airline_id' => fn () => Airline::factory()->create()->id,
'rank_id' => 1, 'rank_id' => 1,
'flights' => $this->faker->numberBetween(0, 1000), 'flights' => $this->faker->numberBetween(0, 1000),
'flight_time' => $this->faker->numberBetween(0, 10000), 'flight_time' => $this->faker->numberBetween(0, 10000),
@@ -1,14 +0,0 @@
<?php
use App\Contracts\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class() extends Migration {
public function up()
{
Schema::table('airports', function (Blueprint $table) {
$table->mediumText('notes')->nullable()->after('hub');
});
}
};
@@ -1,14 +0,0 @@
<?php
use App\Contracts\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class() extends Migration {
public function up()
{
Schema::table('airlines', function (Blueprint $table) {
$table->string('callsign')->nullable()->after('name');
});
}
};
@@ -212,19 +212,14 @@ class AircraftController extends Controller
public function export(Request $request) public function export(Request $request)
{ {
$exporter = app(ExportService::class); $exporter = app(ExportService::class);
$aircraft = $this->aircraftRepo->all();
$where = [];
$file_name = 'aircraft.csv';
if ($request->input('subfleet')) {
$subfleet_id = $request->input('subfleet');
$where['subfleet_id'] = $subfleet_id;
$file_name = 'aircraft-'.$subfleet_id.'.csv';
}
$aircraft = $this->aircraftRepo->where($where)->orderBy('registration')->get();
$path = $exporter->exportAircraft($aircraft); $path = $exporter->exportAircraft($aircraft);
return response()->download($path, $file_name, ['content-type' => 'text/csv'])->deleteFileAfterSend(true); return response()
->download($path, 'aircraft.csv', [
'content-type' => 'text/csv',
])
->deleteFileAfterSend(true);
} }
/** /**
@@ -48,7 +48,7 @@ class RolesController extends Controller
public function index(Request $request) public function index(Request $request)
{ {
$this->rolesRepo->pushCriteria(new RequestCriteria($request)); $this->rolesRepo->pushCriteria(new RequestCriteria($request));
$roles = $this->rolesRepo->withCount('users')->findWhere(['read_only' => false]); $roles = $this->rolesRepo->findWhere(['read_only' => false]);
return view('admin.roles.index', [ return view('admin.roles.index', [
'roles' => $roles, 'roles' => $roles,
@@ -117,7 +117,7 @@ class RolesController extends Controller
*/ */
public function edit($id) public function edit($id)
{ {
$role = $this->rolesRepo->withCount('users')->with('users')->findWithoutFail($id); $role = $this->rolesRepo->findWithoutFail($id);
if (empty($role)) { if (empty($role)) {
Flash::error('Role not found'); Flash::error('Role not found');
@@ -126,8 +126,6 @@ class RolesController extends Controller
return view('admin.roles.edit', [ return view('admin.roles.edit', [
'role' => $role, 'role' => $role,
'users' => $role->users,
'users_count' => $role->users_count,
'permissions' => $this->permsRepo->all(), 'permissions' => $this->permsRepo->all(),
]); ]);
} }
+5 -8
View File
@@ -16,7 +16,6 @@ use Illuminate\Support\Str;
* @property string icao * @property string icao
* @property string iata * @property string iata
* @property string name * @property string name
* @property string callsign
* @property string logo * @property string logo
* @property string country * @property string country
* @property Journal journal * @property Journal journal
@@ -38,7 +37,6 @@ class Airline extends Model
'icao', 'icao',
'iata', 'iata',
'name', 'name',
'callsign',
'logo', 'logo',
'country', 'country',
'total_flights', 'total_flights',
@@ -63,12 +61,11 @@ class Airline extends Model
* @var array * @var array
*/ */
public static $rules = [ public static $rules = [
'country' => 'nullable', 'country' => 'nullable',
'iata' => 'nullable|max:5', 'iata' => 'nullable|max:5',
'icao' => 'required|max:5', 'icao' => 'required|max:5',
'logo' => 'nullable', 'logo' => 'nullable',
'name' => 'required', 'name' => 'required',
'callsign' => 'nullable',
]; ];
/** /**
+3 -4
View File
@@ -19,7 +19,6 @@ use Illuminate\Database\Eloquent\Factories\HasFactory;
* @property string location * @property string location
* @property string country * @property string country
* @property string timezone * @property string timezone
* @property string notes
* @property float ground_handling_cost * @property float ground_handling_cost
* @property float fuel_100ll_cost * @property float fuel_100ll_cost
* @property float fuel_jeta_cost * @property float fuel_jeta_cost
@@ -57,7 +56,6 @@ class Airport extends Model
'fuel_100ll_cost', 'fuel_100ll_cost',
'fuel_jeta_cost', 'fuel_jeta_cost',
'fuel_mogas_cost', 'fuel_mogas_cost',
'notes',
]; ];
protected $casts = [ protected $casts = [
@@ -83,7 +81,8 @@ class Airport extends Model
'ground_handling_cost' => 'nullable|numeric', 'ground_handling_cost' => 'nullable|numeric',
'fuel_100ll_cost' => 'nullable|numeric', 'fuel_100ll_cost' => 'nullable|numeric',
'fuel_jeta_cost' => 'nullable|numeric', 'fuel_jeta_cost' => 'nullable|numeric',
'fuel_mogas_cost' => 'nullable|numeric',
'fuel_mogas_cost' => 'nullable|numeric',
]; ];
/** /**
@@ -93,7 +92,7 @@ class Airport extends Model
{ {
return Attribute::make( return Attribute::make(
set: fn ($icao) => [ set: fn ($icao) => [
'id' => strtoupper($icao), 'id' => strtoupper($icao),
'icao' => strtoupper($icao), 'icao' => strtoupper($icao),
] ]
); );
-3
View File
@@ -169,9 +169,6 @@ class FareService extends Service
} }
} }
// $fare->notes = '';
$fare->active = true;
return $fare; return $fare;
} }
@@ -18,7 +18,7 @@ class AirportImporter extends ImportExport
*/ */
public static $columns = [ public static $columns = [
'icao' => 'required', 'icao' => 'required',
'iata' => 'nullable', 'iata' => 'required',
'name' => 'required', 'name' => 'required',
'location' => 'nullable', 'location' => 'nullable',
'country' => 'nullable', 'country' => 'nullable',
@@ -30,7 +30,6 @@ class AirportImporter extends ImportExport
'fuel_100ll_cost' => 'nullable|numeric', 'fuel_100ll_cost' => 'nullable|numeric',
'fuel_jeta_cost' => 'nullable|numeric', 'fuel_jeta_cost' => 'nullable|numeric',
'fuel_mogas_cost' => 'nullable|numeric', 'fuel_mogas_cost' => 'nullable|numeric',
'notes' => 'nullable',
]; ];
/** /**
+1
View File
@@ -22,6 +22,7 @@ class SeederService extends Service
// Map an environment to a seeder directory, if we want to share // Map an environment to a seeder directory, if we want to share
public static $seed_mapper = [ public static $seed_mapper = [
'local' => 'dev',
'production' => 'prod', 'production' => 'prod',
]; ];
+3 -3
View File
@@ -33,7 +33,7 @@ class Money
/** /**
* Create from a dollar amount * Create from a dollar amount
* *
* @param mixed $amount The amount in dollar * @param mixed $amount The amount in pennies
* *
* @throws \UnexpectedValueException * @throws \UnexpectedValueException
* @throws \InvalidArgumentException * @throws \InvalidArgumentException
@@ -52,12 +52,12 @@ class Money
* *
* @param mixed $amount * @param mixed $amount
* *
* @return int * @return float|int
*/ */
public static function convertToSubunit($amount) public static function convertToSubunit($amount)
{ {
$currency = setting('units.currency', 'USD'); $currency = setting('units.currency', 'USD');
return (int) ($amount * config('money.'.$currency.'.subunit')); return (int) $amount * config('money.'.$currency.'.subunit');
} }
/** /**
+25 -27
View File
@@ -23,46 +23,45 @@
"symfony/polyfill-mbstring": "*", "symfony/polyfill-mbstring": "*",
"symfony/polyfill-php80": "*", "symfony/polyfill-php80": "*",
"symfony/polyfill-php81": "*", "symfony/polyfill-php81": "*",
"symfony/deprecation-contracts": "~v2.5.0", "symfony/deprecation-contracts": "^v2.5.0",
"symfony/event-dispatcher-contracts": "~2.5.0", "symfony/event-dispatcher-contracts": "^2",
"symfony/mailgun-mailer": "^6.0.0", "symfony/mailgun-mailer": "^6.0",
"symfony/console": "^6.0.0", "symfony/http-client": "^6.0",
"symfony/http-client": "^6.0.0", "symfony/yaml": "^6.0",
"symfony/yaml": "~6.0.0",
"psr/container": "1.1.1", "psr/container": "1.1.1",
"composer/composer": "~2.3.0", "composer/composer": "^2.2.7",
"composer/installers": "~1.12.0", "composer/installers": "~1.12.0",
"laravel/framework": "~v9.2", "laravel/framework": "~v9.2",
"arrilot/laravel-widgets": "~3.13.0", "arrilot/laravel-widgets": "~3.13.0",
"doctrine/dbal": "~3.3.2", "doctrine/dbal": "^3.3.2",
"guzzlehttp/guzzle": "~7.4.1", "guzzlehttp/guzzle": "~7.4.1",
"hashids/hashids": "~4.1.0", "hashids/hashids": "^4.1.0",
"igaster/laravel-theme": "~2.0.0", "igaster/laravel-theme": "^2.0",
"intervention/image": "~2.4", "intervention/image": "^2.4",
"jmikola/geojson": "1.0.*", "jmikola/geojson": "1.0.*",
"joshbrw/laravel-module-installer": "~2.0.1", "joshbrw/laravel-module-installer": "^2.0",
"laracasts/flash": "~3.2.1", "laracasts/flash": "^3.2.1",
"laravel/helpers": "~v1.5.0", "laravel/helpers": "^v1.5.0",
"laravelcollective/html": "~6.3.0", "laravelcollective/html": "~6.3.0",
"jeremykendall/php-domain-parser": "~5.7.2", "jeremykendall/php-domain-parser": "~5.7.2",
"league/commonmark": "~2.2.2", "league/commonmark": "~2.2.2",
"league/csv": "~9.8.0", "league/csv": "^9.8.0",
"league/geotools": "~1.0.0", "league/geotools": "^1.0.0",
"league/iso3166": "~4.0.0", "league/iso3166": "^4.0.0",
"markrogoyski/math-php": "~2.5.0", "markrogoyski/math-php": "^2.5.0",
"myclabs/deep-copy": "~1.10.0", "myclabs/deep-copy": "~1.10.0",
"nabeel/vacentral": "~2.1.0", "nabeel/vacentral": "~2.1.0",
"nwidart/laravel-modules": "~9.0.0", "nwidart/laravel-modules": "^9.0.0",
"php-units-of-measure/php-units-of-measure": "~2.1.0", "php-units-of-measure/php-units-of-measure": "~2.1.0",
"phpvms/sample-module": "~1.0", "phpvms/sample-module": "^1.0",
"prettus/l5-repository": "~2.8.0", "prettus/l5-repository": "~2.8.0",
"santigarcor/laratrust": "~7.0.0", "santigarcor/laratrust": "~7.0.0",
"semver/semver": "~1.1.0", "semver/semver": "~1.1.0",
"spatie/valuestore": "~1.3.1", "spatie/valuestore": "~1.3.1",
"tivie/php-os-detector": "~1.1.0", "tivie/php-os-detector": "~1.1.0",
"vlucas/phpdotenv": "~5.4.1", "vlucas/phpdotenv": "^5.4.1",
"webpatser/laravel-uuid": "~4.0.1", "webpatser/laravel-uuid": "^4.0.1",
"oomphinc/composer-installers-extender": "~2.0.0", "oomphinc/composer-installers-extender": "^2.0",
"laravel/ui": "^3.4.5", "laravel/ui": "^3.4.5",
"madnest/madzipper": "^1.1.0", "madnest/madzipper": "^1.1.0",
"elcobvg/laravel-opcache": "^0.4.1", "elcobvg/laravel-opcache": "^0.4.1",
@@ -70,8 +69,8 @@
"queueworker/sansdaemon": "^1.2.4", "queueworker/sansdaemon": "^1.2.4",
"jpkleemans/attribute-events": "^1.3.0", "jpkleemans/attribute-events": "^1.3.0",
"akaunting/laravel-money": "^2.0.1", "akaunting/laravel-money": "^2.0.1",
"staudenmeir/belongs-to-through": "^v2.12.0", "staudenmeir/belongs-to-through": "^v2.12",
"staudenmeir/eloquent-has-many-deep": "1.15.0", "staudenmeir/eloquent-has-many-deep": "1.15",
"spatie/laravel-ignition": "^1.0" "spatie/laravel-ignition": "^1.0"
}, },
"require-dev": { "require-dev": {
@@ -125,8 +124,7 @@
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover --ansi", "@php artisan package:discover --ansi",
"@php artisan phpvms:caches" "@php artisan phpvms:caches"
], ]
"test": "phpunit --verbose"
}, },
"config": { "config": {
"bin-dir": "vendor/bin/", "bin-dir": "vendor/bin/",
Generated
+679 -716
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1,6 +1,6 @@
# #
# Run with either `make docker-test` or the following Docker command: # Run with either `make docker-test` or the following Docker command:
# docker-compose -f docker-compose.yml -f docker-compose.dev.yml up # docker-compose -f docker-compose.yml -f docker-compose.local.yml up
# #
--- ---
services: services:
+10453 -7046
View File
File diff suppressed because it is too large Load Diff
+10 -11
View File
@@ -2,12 +2,12 @@
"private": true, "private": true,
"scripts": { "scripts": {
"dev": "npm run development", "dev": "npm run development",
"development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --config=node_modules/laravel-mix/setup/webpack.config.js", "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --config=node_modules/laravel-mix/setup/webpack.config.js", "watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch-poll": "npm run watch -- --watch-poll", "watch-poll": "npm run watch -- --watch-poll",
"hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js", "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
"prod": "npm run production", "prod": "npm run production",
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --config=node_modules/laravel-mix/setup/webpack.config.js" "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
}, },
"dependencies": { "dependencies": {
"@turf/center": "^6.0.1", "@turf/center": "^6.0.1",
@@ -27,7 +27,7 @@
"jquery": "^3.5.1", "jquery": "^3.5.1",
"jquery-pjax": "~2.0", "jquery-pjax": "~2.0",
"js-yaml": "^3.14.0", "js-yaml": "^3.14.0",
"laravel-mix": "^6.0.25", "laravel-mix": "^6.0.30",
"leaflet": "^1.3.4", "leaflet": "^1.3.4",
"leaflet-ajax": "2.1.0", "leaflet-ajax": "2.1.0",
"leaflet-providers": "1.0.*", "leaflet-providers": "1.0.*",
@@ -35,7 +35,7 @@
"leaflet.geodesic": "^2.5.2", "leaflet.geodesic": "^2.5.2",
"lodash": ">=4.17.19", "lodash": ">=4.17.19",
"marked": "^2.1.3", "marked": "^2.1.3",
"minimist": "^1.2.2", "minimist": "^1.2.6",
"moment": "^2.29.1", "moment": "^2.29.1",
"paper-dashboard": "^1.1.0", "paper-dashboard": "^1.1.0",
"pe7-icon": "^1.0.4", "pe7-icon": "^1.0.4",
@@ -46,8 +46,8 @@
"select2": "^4.0.13", "select2": "^4.0.13",
"ssri": "^8.0.1", "ssri": "^8.0.1",
"tar": ">=4.4.2", "tar": ">=4.4.2",
"webpack": "^5.0.0", "webpack": "^5.45.1",
"webpack-cli": "^4.10.0", "webpack-cli": "^3.3.12",
"x-editable": "1.5.1" "x-editable": "1.5.1"
}, },
"devDependencies": { "devDependencies": {
@@ -58,12 +58,11 @@
"eslint-plugin-import": "^2.22.1", "eslint-plugin-import": "^2.22.1",
"eslint-plugin-jsx-a11y": "^6.2.3", "eslint-plugin-jsx-a11y": "^6.2.3",
"eslint-plugin-react": "^7.21.5", "eslint-plugin-react": "^7.21.5",
"node-gyp": "~9.1.0", "sass": "^1.32.13",
"sass": "^1.54.5", "sass-loader": "^8.0.2",
"sass-loader": "^12.1.0",
"tailwindcss": "^0.5.3", "tailwindcss": "^0.5.3",
"vue-template-compiler": "^2.6.12", "vue-template-compiler": "^2.6.12",
"webpack-bundle-analyzer": "^3.9.0", "webpack-bundle-analyzer": "^3.9.0",
"webpack-dev-server": "^4.10.0" "webpack-dev-server": "^1.16.5"
} }
} }
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+13 -15
View File
@@ -1,23 +1,21 @@
/* @preserve /* @preserve
* Leaflet 1.8.0, a JS library for interactive maps. https://leafletjs.com * Leaflet 1.7.1, a JS library for interactive maps. http://leafletjs.com
* (c) 2010-2022 Vladimir Agafonkin, (c) 2010-2011 CloudMade * (c) 2010-2019 Vladimir Agafonkin, (c) 2010-2011 CloudMade
*/ */
/*! ***************************************************************************** /*! *****************************************************************************
Copyright (c) Microsoft Corporation. Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
Permission to use, copy, modify, and/or distribute this software for any THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
purpose with or without fee is hereby granted. KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH See the Apache Version 2.0 License for specific language governing permissions
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY and limitations under the License.
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */ ***************************************************************************** */
/*! Leaflet.Geodesic 2.6.1 - (c) Henry Thasler - https://github.com/henrythasler/Leaflet.Geodesic */ /*! Leaflet.Geodesic 2.5.4 - (c) Henry Thasler - https://github.com/henrythasler/Leaflet.Geodesic */
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+13 -15
View File
@@ -1,23 +1,21 @@
/* @preserve /* @preserve
* Leaflet 1.8.0, a JS library for interactive maps. https://leafletjs.com * Leaflet 1.7.1, a JS library for interactive maps. http://leafletjs.com
* (c) 2010-2022 Vladimir Agafonkin, (c) 2010-2011 CloudMade * (c) 2010-2019 Vladimir Agafonkin, (c) 2010-2011 CloudMade
*/ */
/*! ***************************************************************************** /*! *****************************************************************************
Copyright (c) Microsoft Corporation. Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
Permission to use, copy, modify, and/or distribute this software for any THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
purpose with or without fee is hereby granted. KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH See the Apache Version 2.0 License for specific language governing permissions
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY and limitations under the License.
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */ ***************************************************************************** */
/*! Leaflet.Geodesic 2.6.1 - (c) Henry Thasler - https://github.com/henrythasler/Leaflet.Geodesic */ /*! Leaflet.Geodesic 2.5.4 - (c) Henry Thasler - https://github.com/henrythasler/Leaflet.Geodesic */
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -10881
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1,6 @@
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ /*!
* Determine if an object is a Buffer
*
* @author Feross Aboukhadijeh <https://feross.org>
* @license MIT
*/
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -38
View File
@@ -1,38 +1 @@
/** CKEDITOR.editorConfig=function(e){e.toolbarGroups=[{name:"clipboard",groups:["clipboard","undo"]},{name:"editing",groups:["find","selection","spellchecker"]},{name:"links"},{name:"insert"},{name:"forms"},{name:"tools"},{name:"document",groups:["mode","document","doctools"]},{name:"others"},"/",{name:"basicstyles",groups:["basicstyles","cleanup"]},{name:"paragraph",groups:["list","indent","blocks","align","bidi"]},{name:"styles"},{name:"colors"},{name:"about"}],e.removeButtons="Underline,Subscript,Superscript",e.format_tags="p;h1;h2;h3;pre",e.removeDialogTabs="image:advanced;link:advanced"};
* @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
* For licensing, see https://ckeditor.com/legal/ckeditor-oss-license
*/
CKEDITOR.editorConfig = function( config ) {
// Define changes to default configuration here.
// For complete reference see:
// https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html
// The toolbar groups arrangement, optimized for two toolbar rows.
config.toolbarGroups = [
{ name: 'clipboard', groups: [ 'clipboard', 'undo' ] },
{ name: 'editing', groups: [ 'find', 'selection', 'spellchecker' ] },
{ name: 'links' },
{ name: 'insert' },
{ name: 'forms' },
{ name: 'tools' },
{ name: 'document', groups: [ 'mode', 'document', 'doctools' ] },
{ name: 'others' },
'/',
{ name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] },
{ name: 'paragraph', groups: [ 'list', 'indent', 'blocks', 'align', 'bidi' ] },
{ name: 'styles' },
{ name: 'colors' },
{ name: 'about' }
];
// Remove some buttons provided by the standard plugins, which are
// not needed in the Standard(s) toolbar.
config.removeButtons = 'Underline,Subscript,Superscript';
// Set the most common block elements.
config.format_tags = 'p;h1;h2;h3;pre';
// Simplify the dialog windows.
config.removeDialogTabs = 'image:advanced;link:advanced';
};
+1 -208
View File
@@ -1,208 +1 @@
/* body{font-family:sans-serif,Arial,Verdana,"Trebuchet MS","Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:12px;color:#333;background-color:#fff;margin:20px}.cke_editable{font-size:13px;line-height:1.6;word-wrap:break-word}blockquote{font-style:italic;font-family:Georgia,Times,"Times New Roman",serif;padding:2px 0;border-style:solid;border-color:#ccc;border-width:0}.cke_contents_ltr blockquote{padding-left:20px;padding-right:8px;border-left-width:5px}.cke_contents_rtl blockquote{padding-left:8px;padding-right:20px;border-right-width:5px}a{color:#0782c1}dl,ol,ul{padding:0 40px}h1,h2,h3,h4,h5,h6{font-weight:400;line-height:1.2}hr{border:0;border-top:1px solid #ccc}img.right{border:1px solid #ccc;float:right;margin-left:15px;padding:5px}img.left{border:1px solid #ccc;float:left;margin-right:15px;padding:5px}pre{white-space:pre-wrap;word-wrap:break-word;-moz-tab-size:4;tab-size:4}.marker{background-color:#ff0}span[lang]{font-style:italic}figure{text-align:center;outline:solid 1px #ccc;background:rgba(0,0,0,.05);padding:10px;margin:10px 20px;display:inline-block}figure>figcaption{text-align:center;display:block}a>img{padding:1px;margin:1px;border:none;outline:1px solid #0782C1}.code-featured{border:5px solid red}.math-featured{padding:20px;box-shadow:0 0 2px #c80000;background-color:rgba(255,0,0,.05);margin:10px}.image-clean{border:0;background:0 0;padding:0}.image-clean>figcaption{font-size:.9em;text-align:right}.image-grayscale{background-color:#fff;color:#666}.image-grayscale img,img.image-grayscale{filter:grayscale(100%)}.embed-240p{max-width:426px;max-height:240px;margin:0 auto}.embed-360p{max-width:640px;max-height:360px;margin:0 auto}.embed-480p{max-width:854px;max-height:480px;margin:0 auto}.embed-720p{max-width:1280px;max-height:720px;margin:0 auto}.embed-1080p{max-width:1920px;max-height:1080px;margin:0 auto}
Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
body
{
/* Font */
/* Emoji fonts are added to visualise them nicely in Internet Explorer. */
font-family: sans-serif, Arial, Verdana, "Trebuchet MS", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-size: 12px;
/* Text color */
color: #333;
/* Remove the background color to make it transparent. */
background-color: #fff;
margin: 20px;
}
.cke_editable
{
font-size: 13px;
line-height: 1.6;
/* Fix for missing scrollbars with RTL texts. (#10488) */
word-wrap: break-word;
}
blockquote
{
font-style: italic;
font-family: Georgia, Times, "Times New Roman", serif;
padding: 2px 0;
border-style: solid;
border-color: #ccc;
border-width: 0;
}
.cke_contents_ltr blockquote
{
padding-left: 20px;
padding-right: 8px;
border-left-width: 5px;
}
.cke_contents_rtl blockquote
{
padding-left: 8px;
padding-right: 20px;
border-right-width: 5px;
}
a
{
color: #0782C1;
}
ol,ul,dl
{
/* IE7: reset rtl list margin. (#7334) */
*margin-right: 0px;
/* Preserved spaces for list items with text direction different than the list. (#6249,#8049)*/
padding: 0 40px;
}
h1,h2,h3,h4,h5,h6
{
font-weight: normal;
line-height: 1.2;
}
hr
{
border: 0px;
border-top: 1px solid #ccc;
}
img.right
{
border: 1px solid #ccc;
float: right;
margin-left: 15px;
padding: 5px;
}
img.left
{
border: 1px solid #ccc;
float: left;
margin-right: 15px;
padding: 5px;
}
pre
{
white-space: pre-wrap; /* CSS 2.1 */
word-wrap: break-word; /* IE7 */
-moz-tab-size: 4;
tab-size: 4;
}
.marker
{
background-color: Yellow;
}
span[lang]
{
font-style: italic;
}
figure
{
text-align: center;
outline: solid 1px #ccc;
background: rgba(0,0,0,0.05);
padding: 10px;
margin: 10px 20px;
display: inline-block;
}
figure > figcaption
{
text-align: center;
display: block; /* For IE8 */
}
a > img {
padding: 1px;
margin: 1px;
border: none;
outline: 1px solid #0782C1;
}
/* Widget Styles */
.code-featured
{
border: 5px solid red;
}
.math-featured
{
padding: 20px;
box-shadow: 0 0 2px rgba(200, 0, 0, 1);
background-color: rgba(255, 0, 0, 0.05);
margin: 10px;
}
.image-clean
{
border: 0;
background: none;
padding: 0;
}
.image-clean > figcaption
{
font-size: .9em;
text-align: right;
}
.image-grayscale
{
background-color: white;
color: #666;
}
.image-grayscale img, img.image-grayscale
{
filter: grayscale(100%);
}
.embed-240p
{
max-width: 426px;
max-height: 240px;
margin:0 auto;
}
.embed-360p
{
max-width: 640px;
max-height: 360px;
margin:0 auto;
}
.embed-480p
{
max-width: 854px;
max-height: 480px;
margin:0 auto;
}
.embed-720p
{
max-width: 1280px;
max-height: 720px;
margin:0 auto;
}
.embed-1080p
{
max-width: 1920px;
max-height: 1080px;
margin:0 auto;
}
+40 -11
View File
@@ -1,12 +1,39 @@
{ {
"name": "ckeditor4", "_from": "ckeditor4@4.14.0",
"version": "4.14.0", "_id": "ckeditor4@4.14.0",
"description": "JavaScript WYSIWYG web text editor.", "_inBundle": false,
"main": "ckeditor.js", "_integrity": "sha512-g5p3bhbxbwB094bE7ss0rOyvG/azYdRjLTyngnPM2+fKZhnPrMVaFDx3SiiWKB+zyvndT3Deu54VTv/z2MQJCA==",
"repository": { "_location": "/ckeditor4",
"type": "git", "_phantomChildren": {},
"url": "git+https://github.com/ckeditor/ckeditor4-releases.git" "_requested": {
"type": "version",
"registry": true,
"raw": "ckeditor4@4.14.0",
"name": "ckeditor4",
"escapedName": "ckeditor4",
"rawSpec": "4.14.0",
"saveSpec": null,
"fetchSpec": "4.14.0"
}, },
"_requiredBy": [
"#USER",
"/"
],
"_resolved": "https://registry.npmjs.org/ckeditor4/-/ckeditor4-4.14.0.tgz",
"_shasum": "bfcbe942599fa0c6f488309ecbfe38b2519f919b",
"_spec": "ckeditor4@4.14.0",
"_where": "/Users/a206675592/dev/nabeelio/phpvms",
"author": {
"name": "CKSource",
"url": "https://cksource.com/"
},
"bugs": {
"url": "https://github.com/ckeditor/ckeditor4/issues"
},
"bundleDependencies": false,
"deprecated": false,
"description": "JavaScript WYSIWYG web text editor.",
"homepage": "https://ckeditor.com/ckeditor-4/",
"keywords": [ "keywords": [
"ckeditor4", "ckeditor4",
"ckeditor", "ckeditor",
@@ -18,10 +45,12 @@
"text", "text",
"javascript" "javascript"
], ],
"author": "CKSource (https://cksource.com/)",
"license": "(GPL-2.0 OR LGPL-2.1 OR MPL-1.1)", "license": "(GPL-2.0 OR LGPL-2.1 OR MPL-1.1)",
"bugs": { "main": "ckeditor.js",
"url": "https://github.com/ckeditor/ckeditor4/issues" "name": "ckeditor4",
"repository": {
"type": "git",
"url": "git+https://github.com/ckeditor/ckeditor4-releases.git"
}, },
"homepage": "https://ckeditor.com/ckeditor-4/" "version": "4.14.0"
} }
+1 -137
View File
@@ -1,137 +1 @@
/** CKEDITOR.stylesSet.add("default",[{name:"Italic Title",element:"h2",styles:{"font-style":"italic"}},{name:"Subtitle",element:"h3",styles:{color:"#aaa","font-style":"italic"}},{name:"Special Container",element:"div",styles:{padding:"5px 10px",background:"#eee",border:"1px solid #ccc"}},{name:"Marker",element:"span",attributes:{class:"marker"}},{name:"Big",element:"big"},{name:"Small",element:"small"},{name:"Typewriter",element:"tt"},{name:"Computer Code",element:"code"},{name:"Keyboard Phrase",element:"kbd"},{name:"Sample Text",element:"samp"},{name:"Variable",element:"var"},{name:"Deleted Text",element:"del"},{name:"Inserted Text",element:"ins"},{name:"Cited Work",element:"cite"},{name:"Inline Quotation",element:"q"},{name:"Language: RTL",element:"span",attributes:{dir:"rtl"}},{name:"Language: LTR",element:"span",attributes:{dir:"ltr"}},{name:"Styled Image (left)",element:"img",attributes:{class:"left"}},{name:"Styled Image (right)",element:"img",attributes:{class:"right"}},{name:"Compact Table",element:"table",attributes:{cellpadding:"5",cellspacing:"0",border:"1",bordercolor:"#ccc"},styles:{"border-collapse":"collapse"}},{name:"Borderless Table",element:"table",styles:{"border-style":"hidden","background-color":"#E6E6FA"}},{name:"Square Bulleted List",element:"ul",styles:{"list-style-type":"square"}},{name:"Clean Image",type:"widget",widget:"image",attributes:{class:"image-clean"}},{name:"Grayscale Image",type:"widget",widget:"image",attributes:{class:"image-grayscale"}},{name:"Featured Snippet",type:"widget",widget:"codeSnippet",attributes:{class:"code-featured"}},{name:"Featured Formula",type:"widget",widget:"mathjax",attributes:{class:"math-featured"}},{name:"240p",type:"widget",widget:"embedSemantic",attributes:{class:"embed-240p"},group:"size"},{name:"360p",type:"widget",widget:"embedSemantic",attributes:{class:"embed-360p"},group:"size"},{name:"480p",type:"widget",widget:"embedSemantic",attributes:{class:"embed-480p"},group:"size"},{name:"720p",type:"widget",widget:"embedSemantic",attributes:{class:"embed-720p"},group:"size"},{name:"1080p",type:"widget",widget:"embedSemantic",attributes:{class:"embed-1080p"},group:"size"},{name:"240p ",type:"widget",widget:"embed",attributes:{class:"embed-240p"},group:"size"},{name:"360p ",type:"widget",widget:"embed",attributes:{class:"embed-360p"},group:"size"},{name:"480p ",type:"widget",widget:"embed",attributes:{class:"embed-480p"},group:"size"},{name:"720p ",type:"widget",widget:"embed",attributes:{class:"embed-720p"},group:"size"},{name:"1080p ",type:"widget",widget:"embed",attributes:{class:"embed-1080p"},group:"size"}]);
* Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
// This file contains style definitions that can be used by CKEditor plugins.
//
// The most common use for it is the "stylescombo" plugin which shows the Styles drop-down
// list containing all styles in the editor toolbar. Other plugins, like
// the "div" plugin, use a subset of the styles for their features.
//
// If you do not have plugins that depend on this file in your editor build, you can simply
// ignore it. Otherwise it is strongly recommended to customize this file to match your
// website requirements and design properly.
//
// For more information refer to: https://ckeditor.com/docs/ckeditor4/latest/guide/dev_styles.html#style-rules
CKEDITOR.stylesSet.add( 'default', [
/* Block styles */
// These styles are already available in the "Format" drop-down list ("format" plugin),
// so they are not needed here by default. You may enable them to avoid
// placing the "Format" combo in the toolbar, maintaining the same features.
/*
{ name: 'Paragraph', element: 'p' },
{ name: 'Heading 1', element: 'h1' },
{ name: 'Heading 2', element: 'h2' },
{ name: 'Heading 3', element: 'h3' },
{ name: 'Heading 4', element: 'h4' },
{ name: 'Heading 5', element: 'h5' },
{ name: 'Heading 6', element: 'h6' },
{ name: 'Preformatted Text',element: 'pre' },
{ name: 'Address', element: 'address' },
*/
{ name: 'Italic Title', element: 'h2', styles: { 'font-style': 'italic' } },
{ name: 'Subtitle', element: 'h3', styles: { 'color': '#aaa', 'font-style': 'italic' } },
{
name: 'Special Container',
element: 'div',
styles: {
padding: '5px 10px',
background: '#eee',
border: '1px solid #ccc'
}
},
/* Inline styles */
// These are core styles available as toolbar buttons. You may opt enabling
// some of them in the Styles drop-down list, removing them from the toolbar.
// (This requires the "stylescombo" plugin.)
/*
{ name: 'Strong', element: 'strong', overrides: 'b' },
{ name: 'Emphasis', element: 'em' , overrides: 'i' },
{ name: 'Underline', element: 'u' },
{ name: 'Strikethrough', element: 'strike' },
{ name: 'Subscript', element: 'sub' },
{ name: 'Superscript', element: 'sup' },
*/
{ name: 'Marker', element: 'span', attributes: { 'class': 'marker' } },
{ name: 'Big', element: 'big' },
{ name: 'Small', element: 'small' },
{ name: 'Typewriter', element: 'tt' },
{ name: 'Computer Code', element: 'code' },
{ name: 'Keyboard Phrase', element: 'kbd' },
{ name: 'Sample Text', element: 'samp' },
{ name: 'Variable', element: 'var' },
{ name: 'Deleted Text', element: 'del' },
{ name: 'Inserted Text', element: 'ins' },
{ name: 'Cited Work', element: 'cite' },
{ name: 'Inline Quotation', element: 'q' },
{ name: 'Language: RTL', element: 'span', attributes: { 'dir': 'rtl' } },
{ name: 'Language: LTR', element: 'span', attributes: { 'dir': 'ltr' } },
/* Object styles */
{
name: 'Styled Image (left)',
element: 'img',
attributes: { 'class': 'left' }
},
{
name: 'Styled Image (right)',
element: 'img',
attributes: { 'class': 'right' }
},
{
name: 'Compact Table',
element: 'table',
attributes: {
cellpadding: '5',
cellspacing: '0',
border: '1',
bordercolor: '#ccc'
},
styles: {
'border-collapse': 'collapse'
}
},
{ name: 'Borderless Table', element: 'table', styles: { 'border-style': 'hidden', 'background-color': '#E6E6FA' } },
{ name: 'Square Bulleted List', element: 'ul', styles: { 'list-style-type': 'square' } },
/* Widget styles */
{ name: 'Clean Image', type: 'widget', widget: 'image', attributes: { 'class': 'image-clean' } },
{ name: 'Grayscale Image', type: 'widget', widget: 'image', attributes: { 'class': 'image-grayscale' } },
{ name: 'Featured Snippet', type: 'widget', widget: 'codeSnippet', attributes: { 'class': 'code-featured' } },
{ name: 'Featured Formula', type: 'widget', widget: 'mathjax', attributes: { 'class': 'math-featured' } },
{ name: '240p', type: 'widget', widget: 'embedSemantic', attributes: { 'class': 'embed-240p' }, group: 'size' },
{ name: '360p', type: 'widget', widget: 'embedSemantic', attributes: { 'class': 'embed-360p' }, group: 'size' },
{ name: '480p', type: 'widget', widget: 'embedSemantic', attributes: { 'class': 'embed-480p' }, group: 'size' },
{ name: '720p', type: 'widget', widget: 'embedSemantic', attributes: { 'class': 'embed-720p' }, group: 'size' },
{ name: '1080p', type: 'widget', widget: 'embedSemantic', attributes: { 'class': 'embed-1080p' }, group: 'size' },
// Adding space after the style name is an intended workaround. For now, there
// is no option to create two styles with the same name for different widget types. See https://dev.ckeditor.com/ticket/16664.
{ name: '240p ', type: 'widget', widget: 'embed', attributes: { 'class': 'embed-240p' }, group: 'size' },
{ name: '360p ', type: 'widget', widget: 'embed', attributes: { 'class': 'embed-360p' }, group: 'size' },
{ name: '480p ', type: 'widget', widget: 'embed', attributes: { 'class': 'embed-480p' }, group: 'size' },
{ name: '720p ', type: 'widget', widget: 'embed', attributes: { 'class': 'embed-720p' }, group: 'size' },
{ name: '1080p ', type: 'widget', widget: 'embed', attributes: { 'class': 'embed-1080p' }, group: 'size' }
] );
+34 -3288
View File
File diff suppressed because it is too large Load Diff
+1 -2
View File
@@ -33,7 +33,6 @@ export default (_opts) => {
positions: null, positions: null,
render_elem: 'map', render_elem: 'map',
aircraft_icon: '/assets/img/acars/aircraft.png', aircraft_icon: '/assets/img/acars/aircraft.png',
flown_route_color: ACTUAL_ROUTE_COLOR,
units: 'nmi', units: 'nmi',
}, _opts); }, _opts);
@@ -77,7 +76,7 @@ export default (_opts) => {
layerSelFlight = new L.Geodesic([], { layerSelFlight = new L.Geodesic([], {
weight: 5, weight: 5,
opacity: 0.9, opacity: 0.9,
color: opts.flown_route_color, color: ACTUAL_ROUTE_COLOR,
wrap: false, wrap: false,
}).addTo(map); }).addTo(map);
+18 -22
View File
@@ -27,6 +27,20 @@ export const onFeaturePointClick = (feature, layer) => {
layer.bindPopup(popup_html); layer.bindPopup(popup_html);
}; };
/**
* Show each point as a marker
* @param feature
* @param latlng
* @returns {*}
*/
export const pointToLayer = (feature, latlng) => leaflet.circleMarker(latlng, {
radius: 5,
fillColor: CIRCLE_COLOR,
color: '#000',
weight: 1,
opacity: 1,
fillOpacity: 0.8,
});
/** /**
* *
@@ -43,30 +57,12 @@ export default (_opts) => {
live_map: false, live_map: false,
aircraft_icon: '/assets/img/acars/aircraft.png', aircraft_icon: '/assets/img/acars/aircraft.png',
refresh_interval: 10, refresh_interval: 10,
flown_route_color: ACTUAL_ROUTE_COLOR,
circle_color: CIRCLE_COLOR,
flightplan_route_color: PLAN_ROUTE_COLOR,
metar_wms: { metar_wms: {
url: '', url: '',
params: {}, params: {},
}, },
}, _opts); }, _opts);
/**
* Show each point as a marker
* @param feature
* @param latlng
* @returns {*}
*/
const pointToLayer = (feature, latlng) => leaflet.circleMarker(latlng, {
radius: 5,
fillColor: opts.circle_color,
color: '#000',
weight: 1,
opacity: 1,
fillOpacity: 0.8,
});
const aircraftIcon = leaflet.icon({ const aircraftIcon = leaflet.icon({
iconUrl: opts.aircraft_icon, iconUrl: opts.aircraft_icon,
iconSize: [42, 42], iconSize: [42, 42],
@@ -83,7 +79,7 @@ export default (_opts) => {
const plannedRouteLayer = new L.Geodesic([], { const plannedRouteLayer = new L.Geodesic([], {
weight: 4, weight: 4,
opacity: 0.9, opacity: 0.9,
color: opts.flightplan_route_color, color: PLAN_ROUTE_COLOR,
steps: 50, steps: 50,
wrap: false, wrap: false,
}).addTo(map); }).addTo(map);
@@ -102,7 +98,7 @@ export default (_opts) => {
onEachFeature: onFeaturePointClick, onEachFeature: onFeaturePointClick,
pointToLayer, pointToLayer,
style: { style: {
color: opts.flightplan_route_color, color: PLAN_ROUTE_COLOR,
weight: 3, weight: 3,
opacity: 0.65, opacity: 0.65,
}, },
@@ -119,7 +115,7 @@ export default (_opts) => {
const actualRouteLayer = new L.Geodesic([], { const actualRouteLayer = new L.Geodesic([], {
weight: 3, weight: 3,
opacity: 0.9, opacity: 0.9,
color: opts.flown_route_color, color: ACTUAL_ROUTE_COLOR,
steps: 50, steps: 50,
wrap: false, wrap: false,
}).addTo(map); }).addTo(map);
@@ -138,7 +134,7 @@ export default (_opts) => {
onEachFeature: onFeaturePointClick, onEachFeature: onFeaturePointClick,
pointToLayer, pointToLayer,
style: { style: {
color: opts.flown_route_color, color: ACTUAL_ROUTE_COLOR,
weight: 3, weight: 3,
opacity: 0.65, opacity: 0.65,
}, },
+1 -1
View File
@@ -8,6 +8,6 @@ return [
'rejected' => 'Rechazado', 'rejected' => 'Rechazado',
'on_leave' => 'En excedencia', 'on_leave' => 'En excedencia',
'suspended' => 'Suspendido', 'suspended' => 'Suspendido',
'deleted' => 'Borrado', 'deleted' => 'Borrar',
], ],
]; ];
+6 -25
View File
@@ -2,31 +2,11 @@
@section('title', 'Aircraft') @section('title', 'Aircraft')
@section('actions') @section('actions')
@if(request()->get('subfleet')) <li><a href="{{ route('admin.aircraft.export') }}"><i class="ti-plus"></i>Export to CSV</a></li>
<li> <li><a href="{{ route('admin.aircraft.import') }}"><i class="ti-plus"></i>Import from CSV</a></li>
<a href="{{ route('admin.aircraft.export') }}{{ '?subfleet='.request()->get('subfleet') }}"> {{--<li><a href="{{ url('/admin/subfleets') }}"><i class="ti-files"></i>Subfleets</a></li>--}}
<i class="ti-plus"></i> <li><a href="{{ route('admin.aircraft.create') }}?subfleet={{$subfleet_id}}">
Export to CSV (Selected Subfleet Only) <i class="ti-plus"></i>New Aircraft</a>
</a>
</li>
@endif
<li>
<a href="{{ route('admin.aircraft.export') }}">
<i class="ti-plus"></i>
Export to CSV
</a>
</li>
<li>
<a href="{{ route('admin.aircraft.import') }}">
<i class="ti-plus"></i>
Import from CSV
</a>
</li>
<li>
<a href="{{ route('admin.aircraft.create') }}?subfleet={{$subfleet_id}}">
<i class="ti-plus"></i>
New Aircraft
</a>
</li> </li>
@endsection @endsection
@@ -37,3 +17,4 @@
</div> </div>
</div> </div>
@endsection @endsection
+17 -17
View File
@@ -1,32 +1,31 @@
<div class="row"> <div class="row">
<div class="form-group col-sm-4"> <!-- Code Field -->
{{ Form::label('icao', 'ICAO (3LD):') }}&nbsp;<span class="required">*</span> <div class="form-group col-sm-6">
{{ Form::label('icao', 'Code:') }}&nbsp;<span class="required">*</span>
{{ Form::text('icao', null, ['class' => 'form-control']) }} {{ Form::text('icao', null, ['class' => 'form-control']) }}
<p class="text-danger">{{ $errors->first('icao') }}</p> <p class="text-danger">{{ $errors->first('icao') }}</p>
</div> </div>
<div class="form-group col-sm-4">
{{ Form::label('iata', 'IATA (2LD):') }}
{{ Form::text('iata', null, ['class' => 'form-control']) }}
<p class="text-danger">{{ $errors->first('iata') }}</p>
</div>
<div class="form-group col-sm-4">
{{ Form::label('callsign', 'Radio Callsign:') }}
{{ Form::text('callsign', null, ['class' => 'form-control']) }}
<p class="text-danger">{{ $errors->first('callsign') }}</p>
</div>
</div>
<div class="row"> <!-- Name Field -->
<div class="form-group col-sm-4"> <div class="form-group col-sm-6">
{{ Form::label('name', 'Name:') }}&nbsp;<span class="required">*</span> {{ Form::label('name', 'Name:') }}&nbsp;<span class="required">*</span>
{{ Form::text('name', null, ['class' => 'form-control']) }} {{ Form::text('name', null, ['class' => 'form-control']) }}
<p class="text-danger">{{ $errors->first('name') }}</p> <p class="text-danger">{{ $errors->first('name') }}</p>
</div> </div>
<div class="form-group col-sm-8"> </div>
<div class="row">
<div class="form-group col-sm-6">
{{ Form::label('iata', 'IATA:') }}
{{ Form::text('iata', null, ['class' => 'form-control']) }}
<p class="text-danger">{{ $errors->first('iata') }}</p>
</div>
<div class="form-group col-sm-6">
{{ Form::label('logo', 'Logo URL:') }} {{ Form::label('logo', 'Logo URL:') }}
{{ Form::text('logo', null, ['class' => 'form-control']) }} {{ Form::text('logo', null, ['class' => 'form-control']) }}
<p class="text-danger">{{ $errors->first('logo') }}</p> <p class="text-danger">{{ $errors->first('logo') }}</p>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
@@ -35,6 +34,7 @@
{{ Form::select('country', $countries, null, ['class' => 'form-control select2' ]) }} {{ Form::select('country', $countries, null, ['class' => 'form-control select2' ]) }}
<p class="text-danger">{{ $errors->first('country') }}</p> <p class="text-danger">{{ $errors->first('country') }}</p>
</div> </div>
<div class="form-group col-sm-6"> <div class="form-group col-sm-6">
{{ Form::label('active', 'Active:') }} {{ Form::label('active', 'Active:') }}
<br/> <br/>
@@ -44,8 +44,8 @@
</label> </label>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<!-- Submit Field -->
<div class="form-group col-sm-12"> <div class="form-group col-sm-12">
<div class="pull-right"> <div class="pull-right">
{{ Form::button('Save', ['type' => 'submit', 'class' => 'btn btn-success']) }} {{ Form::button('Save', ['type' => 'submit', 'class' => 'btn btn-success']) }}
@@ -100,13 +100,7 @@
This is the cost per {{ config('phpvms.internal_units.fuel') }} This is the cost per {{ config('phpvms.internal_units.fuel') }}
@endcomponent @endcomponent
</div> </div>
</div>
<div class="row">
<div class="form-group col-md-12">
{{ Form::label('notes', 'Remarks / Notes:') }}
{{ Form::textarea('notes', null, ['id' => 'editor', 'class' => 'editor', 'style' => 'padding: 5px']) }}
</div>
</div> </div>
<div class="row"> <div class="row">
@@ -125,10 +119,3 @@
</div> </div>
</div> </div>
</div> </div>
@section('scripts')
@parent
<script src="{{ public_asset('assets/vendor/ckeditor4/ckeditor.js') }}"></script>
<script>
$(document).ready(function () { CKEDITOR.replace('editor'); });
</script>
@endsection
@@ -4,8 +4,7 @@
<th>ICAO</th> <th>ICAO</th>
<th>Name</th> <th>Name</th>
<th>Location</th> <th>Location</th>
<th style="text-align: center;">Hub</th> <th>Hub</th>
<th style="text-align: center;">Notes</th>
<th style="text-align: center;">GH Cost</th> <th style="text-align: center;">GH Cost</th>
<th style="text-align: center;">JetA</th> <th style="text-align: center;">JetA</th>
<th style="text-align: center;">100LL</th> <th style="text-align: center;">100LL</th>
@@ -23,11 +22,6 @@
<span class="label label-success">Hub</span> <span class="label label-success">Hub</span>
@endif @endif
</td> </td>
<td style="text-align: center;">
@if(filled($airport->notes))
<span class="label label-info" title="{{ $airport->notes }}">Notes</span>
@endif
</td>
<td style="text-align: center;"> <td style="text-align: center;">
{{ $airport->ground_handling_cost }} {{ $airport->ground_handling_cost }}
</td> </td>
@@ -6,7 +6,7 @@
the values used come from the subfleet of the aircraft that the flight is the values used come from the subfleet of the aircraft that the flight is
filed with. Only assign the fares you want to override. They can be set as filed with. Only assign the fares you want to override. They can be set as
a monetary amount, or a percentage. a monetary amount, or a percentage.
<a href="https://docs.phpvms.net/guides/finances" target="_blank">Read documentation about finances</a>. <a href="{{ docs_link('finances') }}" target="_blank">Read documentation about finances</a>.
@endcomponent @endcomponent
<p class="text-danger">{{ $errors->first('value') }}</p> <p class="text-danger">{{ $errors->first('value') }}</p>
+9 -16
View File
@@ -83,19 +83,22 @@
<div class="form-group col-sm-4"> <div class="form-group col-sm-4">
{{ Form::label('load_factor', 'Load Factor:') }} {{ Form::label('load_factor', 'Load Factor:') }}
{{ Form::number('load_factor', null, ['class' => 'form-control', 'min' => 0, 'max' => 100]) }} {{ Form::text('load_factor', null, ['class' => 'form-control']) }}
<p class="text-danger">{{ $errors->first('load_factor') }}</p> <p class="text-danger">{{ $errors->first('load_factor') }}</p>
@component('admin.components.info') @component('admin.components.info')
Percentage value for pax/cargo load, leave blank to use the default value. Value between 1 and 100. See
<a href="{{ docs_link('load_factor') }}" target="_blank">docs</a>.
Leave blank to use the default value.
@endcomponent @endcomponent
</div> </div>
<div class="form-group col-sm-4"> <div class="form-group col-sm-4">
{{ Form::label('load_factor_variance', 'Load Factor Variance:') }} {{ Form::label('load_factor_variance', 'Load Factor Variance:') }}
{{ Form::number('load_factor_variance', null, ['class' => 'form-control', 'min' => 0, 'max' => 100]) }} {{ Form::text('load_factor_variance', null, ['class' => 'form-control']) }}
<p class="text-danger">{{ $errors->first('load_factor_variance') }}</p> <p class="text-danger">{{ $errors->first('load_factor_variance') }}</p>
@component('admin.components.info') @component('admin.components.info')
Percentage of how much the load can vary (+/-), leave blank to use the default value. How much the load factor can vary per flight (+ or -). Leave blank to
use the default value.
@endcomponent @endcomponent
</div> </div>
</div> </div>
@@ -270,7 +273,7 @@
<div class="row"> <div class="row">
<!-- Active Field --> <!-- Active Field -->
<div class="col-sm-3"> <div class="col-sm-4">
<div class="checkbox"> <div class="checkbox">
<label class="checkbox-inline"> <label class="checkbox-inline">
{{ Form::label('active', 'Active:') }} {{ Form::label('active', 'Active:') }}
@@ -279,17 +282,7 @@
</label> </label>
</div> </div>
</div> </div>
<!-- Visible Field --> <div class="col-8">
<div class="col-sm-3">
<div class="checkbox">
<label class="checkbox-inline">
{{ Form::label('visible', 'Visible:') }}
<input name="visible" type="hidden" value="0" />
{{ Form::checkbox('visible') }}
</label>
</div>
</div>
<div class="col-6">
<div class="text-right"> <div class="text-right">
{{ Form::button('Save', ['type' => 'submit', 'class' => 'btn btn-info']) }} {{ Form::button('Save', ['type' => 'submit', 'class' => 'btn btn-info']) }}
</div> </div>
@@ -9,7 +9,6 @@
<th>Arr Time</th> <th>Arr Time</th>
<th>Notes</th> <th>Notes</th>
<th style="text-align: center;">Active</th> <th style="text-align: center;">Active</th>
<th style="text-align: center;">Visible</th>
<th colspan="3" style="text-align: right;">Action</th> <th colspan="3" style="text-align: right;">Action</th>
</thead> </thead>
<tbody> <tbody>
@@ -38,13 +37,6 @@
<span class="label label-default">@lang('common.inactive')</span> <span class="label label-default">@lang('common.inactive')</span>
@endif @endif
</td> </td>
<td style="text-align: center;">
@if($flight->visible == 1)
<span class="text-success"><i class="fas fa-check fa2x" title="Visible"></i></span>
@else
<span class="text-danger"><i class="fas fa-times fa2x" title="Hidden"></i></span>
@endif
</td>
<td style="text-align: right;"> <td style="text-align: right;">
{{ Form::open(['route' => ['admin.flights.destroy', $flight->id], 'method' => 'delete']) }} {{ Form::open(['route' => ['admin.flights.destroy', $flight->id], 'method' => 'delete']) }}
<a href="{{ route('admin.flights.edit', [$flight->id]) }}" class='btn btn-sm btn-success btn-icon'><i <a href="{{ route('admin.flights.edit', [$flight->id]) }}" class='btn btn-sm btn-success btn-icon'><i
+1 -3
View File
@@ -1,14 +1,12 @@
<table class="table table-hover table-responsive" id="roles-table"> <table class="table table-hover table-responsive" id="roles-table">
<thead> <thead>
<th>Name</th> <th>Name</th>
<th class="text-center">Members</th> <th></th>
<th class="text-right">Actions</th>
</thead> </thead>
<tbody> <tbody>
@foreach($roles as $role) @foreach($roles as $role)
<tr> <tr>
<td>{{ $role->display_name }}</td> <td>{{ $role->display_name }}</td>
<td class="text-center">{{ $role->users_count }}</td>
<td class="text-right"> <td class="text-right">
{{ Form::open(['route' => ['admin.roles.destroy', $role->id], 'method' => 'delete']) }} {{ Form::open(['route' => ['admin.roles.destroy', $role->id], 'method' => 'delete']) }}
<a href="{{ route('admin.roles.edit', [$role->id]) }}" <a href="{{ route('admin.roles.edit', [$role->id]) }}"
+6 -11
View File
@@ -2,20 +2,15 @@
<!-- Code Field --> <!-- Code Field -->
<div class="form-group col-sm-12"> <div class="form-group col-sm-12">
<div class="form-container"> <div class="form-container">
<h6> <h6><i class="fas fa-users"></i>
<i class="fas fa-users mr-2"></i> &nbsp;Users
@if($users_count > 0) {{ $users_count.' users are assigned to this role' }} @else No Users @endif
</h6> </h6>
<div class="form-container-body"> <div class="form-container-body">
@if($users_count > 0) <div class="row">
<div class="row"> <div class="col-sm-12">
<div class="col-sm-12"> TO DO
@foreach($users as $u)
&nbsp;&bull;&nbsp;<a href="{{ route('admin.users.edit', [$u->id]) }}">{{ $u->ident.' '.$u->name }}</a>
@endforeach
</div>
</div> </div>
@endif </div>
</div> </div>
</div> </div>
</div> </div>
@@ -16,11 +16,12 @@
{{-- Show the airspace map in the other column --}} {{-- Show the airspace map in the other column --}}
<div class="col-7"> <div class="col-7">
{{ Widget::AirspaceMap(['width' => '100%', 'height' => '400px', 'lat' => $airport->lat, 'lon' => $airport->lon]) }} {{ Widget::AirspaceMap([
@if(filled($airport->notes)) 'width' => '100%',
<hr> 'height' => '400px',
{!! $airport->notes !!} 'lat' => $airport->lat,
@endif 'lon' => $airport->lon,
]) }}
</div> </div>
</div> </div>
<div class="row"> <div class="row">
@@ -12,8 +12,6 @@
route_points: {!! json_encode($map_features['route_points']) !!}, route_points: {!! json_encode($map_features['route_points']) !!},
planned_route_line: {!! json_encode($map_features['planned_route_line']) !!}, planned_route_line: {!! json_encode($map_features['planned_route_line']) !!},
metar_wms: {!! json_encode(config('map.metar_wms')) !!}, metar_wms: {!! json_encode(config('map.metar_wms')) !!},
circle_color: '#056093',
flightplan_route_color: '#8B008B',
}); });
</script> </script>
@endsection @endsection
@@ -213,16 +213,43 @@
<h6><i class="fas fa-info-circle"></i>&nbsp;Prefile ATC Flight Plan</h6> <h6><i class="fas fa-info-circle"></i>&nbsp;Prefile ATC Flight Plan</h6>
<div class="form-container-body"> <div class="form-container-body">
<div class="row"> <div class="row">
<div class="col-3" align="center"> <div class="col-4" align="center">
<a href="{{ $simbrief->xml->prefile->ivao->link }}" target="_blank" class="btn btn-info">File > IVAO</a> <form action="https://fpl.ivao.aero/api/fp/load" method="POST" target="_blank">
<input type="hidden" name="CALLSIGN" value="{{ $simbrief->xml->atc->callsign }}"/>
<input type="hidden" name="RULES" value="I"/>
<input type="hidden" name="FLIGHTTYPE" value="N"/>
<input type="hidden" name="NUMBER" value="1"/>
<input type="hidden" name="ACTYPE" value="{{ $simbrief->xml->aircraft->icaocode }}"/>
<input type="hidden" name="WAKECAT" value="{{ $wakecat }}"/>
<input type="hidden" name="EQUIPMENT" value="{{ $equipment }}"/>
<input type="hidden" name="TRANSPONDER" value="{{ $transponder }}"/>
<input type="hidden" name="DEPICAO" value="{{ $simbrief->xml->origin->icao_code}}"/>
<input type="hidden" name="DEPTIME" value="{{ date('Hi', $simbrief->xml->times->est_out->__toString()) }}"/>
<input type="hidden" name="SPEEDTYPE" value="{{ $simbrief->xml->atc->initial_spd_unit }}"/>
<input type="hidden" name="SPEED" value="{{ $simbrief->xml->atc->initial_spd }}"/>
<input type="hidden" name="LEVELTYPE" value="{{ $simbrief->xml->atc->initial_alt_unit }}"/>
<input type="hidden" name="LEVEL" value="{{ $simbrief->xml->atc->initial_alt }}"/>
<input type="hidden" name="ROUTE" value="{{ $simbrief->xml->general->route_ifps }}"/>
<input type="hidden" name="DESTICAO" value="{{ $simbrief->xml->destination->icao_code }}"/>
<input type="hidden" name="EET" value="@secstohhmm($simbrief->xml->times->est_time_enroute)"/>
<input type="hidden" name="ALTICAO" value="{{ $simbrief->xml->alternate->icao_code}}"/>
<input type="hidden" name="ALTICAO2" value="{{ $simbrief->xml->alternate2->icao_code}}"/>
<input type="hidden" name="OTHER" value="{{ $simbrief->xml->atc->section18 }}"/>
<input type="hidden" name="ENDURANCE" value="@secstohhmm($simbrief->xml->times->endurance)"/>
<input type="hidden" name="POB" value="{{ $simbrief->xml->weights->pax_count }}"/>
<input id="ivao_prefile" type="submit" class="btn btn-primary" value="File ATC on IVAO"/>
</form>
</div> </div>
<div class="col-3" align="center"> <div class="col-4" align="center">
<a href="{{ $simbrief->xml->prefile->vatsim->link }}" target="_blank" class="btn btn-info">File > VATSIM</a> <form action="https://my.vatsim.net/pilots/flightplan" method="GET" target="_blank">
<input type="hidden" name="raw" value="{{ $simbrief->xml->atc->flightplan_text }}">
<input type="hidden" name="fuel_time" value="@secstohhmm($simbrief->xml->times->endurance)">
<input type="hidden" name="speed" value="@if(substr($simbrief->xml->atc->initial_spd,0,1) === '0') {{ substr($simbrief->xml->atc->initial_spd,1) }} @else {{ $simbrief->xml->atc->initial_spd }} @endif">
<input type="hidden" name="altitude" value="{{ $simbrief->xml->general->initial_altitude }}">
<input id="vatsim_prefile" type="submit" class="btn btn-primary" value="File ATC on VATSIM"/>
</form>
</div> </div>
<div class="col-3" align="center"> <div class="col-4" align="center">
<a href="{{ $simbrief->xml->prefile->poscon->link }}" target="_blank" class="btn btn-info">File > POSCON</a>
</div>
<div class="col-3" align="center">
<a <a
href="http://skyvector.com/?chart=304&amp;fpl={{ $simbrief->xml->origin->icao_code}} {{ $simbrief->xml->general->route }} {{ $simbrief->xml->destination->icao_code}}" href="http://skyvector.com/?chart=304&amp;fpl={{ $simbrief->xml->origin->icao_code}} {{ $simbrief->xml->general->route }} {{ $simbrief->xml->destination->icao_code}}"
target="_blank" class="btn btn-info">View Route At SkyVector</a> target="_blank" class="btn btn-info">View Route At SkyVector</a>
@@ -127,7 +127,7 @@
</div> </div>
{{-- Prepare Form Fields For SimBrief --}} {{-- Prepare Form Fields For SimBrief --}}
<input type="hidden" name="acdata" value="{'paxwgt':{{ round($pax_weight) }}, 'bagwgt': {{ round($bag_weight) }}}"> <input type="hidden" name="acdata" value="{'paxwgt':{{ round($pax_weight + $bag_weight) }}}">
@if($tpaxfig) @if($tpaxfig)
<input type="hidden" name="pax" value="{{ $tpaxfig }}"> <input type="hidden" name="pax" value="{{ $tpaxfig }}">
@elseif(!$tpaxfig && $tcargoload) @elseif(!$tpaxfig && $tcargoload)
@@ -15,12 +15,9 @@
actual_route_line: {!! json_encode($map_features['actual_route_line']) !!}, actual_route_line: {!! json_encode($map_features['actual_route_line']) !!},
actual_route_points: {!! json_encode($map_features['actual_route_points']) !!}, actual_route_points: {!! json_encode($map_features['actual_route_points']) !!},
aircraft_icon: '{!! public_asset('/assets/img/acars/aircraft.png') !!}', aircraft_icon: '{!! public_asset('/assets/img/acars/aircraft.png') !!}',
flown_route_color: '#067ec1',
circle_color: '#056093',
flightplan_route_color: '#8B008B',
leafletOptions: { leafletOptions: {
scrollWheelZoom: false, scrollWheelZoom: false,
}, }
}); });
</script> </script>
@endsection @endsection
@@ -72,18 +72,16 @@
</div> </div>
</div> </div>
@if(!empty($pirep->distance)) <div class="row">
<div class="row"> <div class="col-12">
<div class="col-12"> <div class="progress" style="margin: 20px 0;">
<div class="progress" style="margin: 20px 0;"> <div class="progress-bar progress-bar-success" role="progressbar"
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100"
aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: {{$pirep->progress_percent}}%;">
style="width: {{$pirep->progress_percent}}%;">
</div>
</div> </div>
</div> </div>
</div> </div>
@endif </div>
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
@@ -116,7 +116,6 @@ and being mindful of the rivets bindings
aircraft_icon: '{!! public_asset('/assets/img/acars/aircraft.png') !!}', aircraft_icon: '{!! public_asset('/assets/img/acars/aircraft.png') !!}',
refresh_interval: {{ setting('acars.update_interval', 60) }}, refresh_interval: {{ setting('acars.update_interval', 60) }},
units: '{{ setting('units.distance') }}', units: '{{ setting('units.distance') }}',
flown_route_color: '#067ec1',
leafletOptions: { leafletOptions: {
scrollWheelZoom: false, scrollWheelZoom: false,
} }
+8 -8
View File
@@ -712,20 +712,20 @@ class FinanceTest extends TestCase
$journalRepo->post( $journalRepo->post(
$journal, $journal,
Money::createFromAmount(100.5), Money::createFromAmount(100),
null, null,
$user $user
); );
$balance = $journalRepo->getBalance($journal); $balance = $journalRepo->getBalance($journal);
$this->assertEquals(100.5, $balance->getValue()); $this->assertEquals(100, $balance->getValue());
$this->assertEquals(100.5, $journal->balance->getValue()); $this->assertEquals(100, $journal->balance->getValue());
// add another transaction // add another transaction
$journalRepo->post( $journalRepo->post(
$journal, $journal,
Money::createFromAmount(24.5), Money::createFromAmount(25),
null, null,
$user $user
); );
@@ -912,7 +912,7 @@ class FinanceTest extends TestCase
// $this->assertCount(9, $transactions['transactions']); // $this->assertCount(9, $transactions['transactions']);
$this->assertEquals(3020, $transactions['credits']->getValue()); $this->assertEquals(3020, $transactions['credits']->getValue());
$this->assertEquals(2050.4, $transactions['debits']->getValue()); $this->assertEquals(2050.0, $transactions['debits']->getValue());
// Check that all the different transaction types are there // Check that all the different transaction types are there
// test by the different groups that exist // test by the different groups that exist
@@ -967,7 +967,7 @@ class FinanceTest extends TestCase
// $this->assertCount(9, $transactions['transactions']); // $this->assertCount(9, $transactions['transactions']);
$this->assertEquals(3020, $transactions['credits']->getValue()); $this->assertEquals(3020, $transactions['credits']->getValue());
$this->assertEquals(2050.4, $transactions['debits']->getValue()); $this->assertEquals(2050.0, $transactions['debits']->getValue());
// Check that all the different transaction types are there // Check that all the different transaction types are there
// test by the different groups that exist // test by the different groups that exist
@@ -1006,7 +1006,7 @@ class FinanceTest extends TestCase
$transactions = $journalRepo->getAllForObject($pirep2); $transactions = $journalRepo->getAllForObject($pirep2);
$this->assertEquals(3020, $transactions['credits']->getValue()); $this->assertEquals(3020, $transactions['credits']->getValue());
$this->assertEquals(2150.4, $transactions['debits']->getValue()); $this->assertEquals(2150.0, $transactions['debits']->getValue());
// Check that all the different transaction types are there // Check that all the different transaction types are there
// test by the different groups that exist // test by the different groups that exist
@@ -1115,6 +1115,6 @@ class FinanceTest extends TestCase
// $this->assertCount(9, $transactions['transactions']); // $this->assertCount(9, $transactions['transactions']);
$this->assertEquals(3020, $transactions['credits']->getValue()); $this->assertEquals(3020, $transactions['credits']->getValue());
$this->assertEquals(2050.4, $transactions['debits']->getValue()); $this->assertEquals(2050.0, $transactions['debits']->getValue());
} }
} }
-1
View File
@@ -670,7 +670,6 @@ class ImporterTest extends TestCase
$this->assertEquals('-97.6699', $airport->lon); $this->assertEquals('-97.6699', $airport->lon);
$this->assertEquals(0.0, $airport->ground_handling_cost); $this->assertEquals(0.0, $airport->ground_handling_cost);
$this->assertEquals(setting('airports.default_jet_a_fuel_cost'), $airport->fuel_jeta_cost); $this->assertEquals(setting('airports.default_jet_a_fuel_cost'), $airport->fuel_jeta_cost);
$this->assertEquals('Test Note', $airport->notes);
// See if it imported // See if it imported
$airport = Airport::where([ $airport = Airport::where([
+4 -4
View File
@@ -1,4 +1,4 @@
icao,iata,name,location,country,timezone,hub,lat,lon,ground_handling_cost,fuel_100ll_cost,fuel_jeta_cost,fuel_mogas_cost,notes icao,iata,name,location,country,timezone,hub,lat,lon,ground_handling_cost,fuel_100ll_cost,fuel_jeta_cost,fuel_mogas_cost
KAUS,AUS,Austin-Bergstrom,"Austin, Texas, USA", United States,America/Chicago,1,30.1945,-97.6699,0,,,,"Test Note" KAUS,AUS,Austin-Bergstrom,"Austin, Texas, USA", United States,America/Chicago,1,30.1945,-97.6699,0,,,
KSFO,SFO,San Francisco,"San Francisco, California, USA", United States,America/California,1,30.1945,-97.6699,,,0.9,, KSFO,SFO,San Francisco,"San Francisco, California, USA", United States,America/California,1,30.1945,-97.6699,,,0.9,
KJFK,JFK,Kennedy,"Queens, New York, USA", United States,America/New_York,0,30.1945,abcd,150,,0.8,,"Busy Airport" KJFK,JFK,Kennedy,"Queens, New York, USA", United States,America/New_York,0,30.1945,abcd,150,,0.8,
1 icao iata name location country timezone hub lat lon ground_handling_cost fuel_100ll_cost fuel_jeta_cost fuel_mogas_cost notes
2 KAUS AUS Austin-Bergstrom Austin, Texas, USA United States America/Chicago 1 30.1945 -97.6699 0 Test Note
3 KSFO SFO San Francisco San Francisco, California, USA United States America/California 1 30.1945 -97.6699 0.9
4 KJFK JFK Kennedy Queens, New York, USA United States America/New_York 0 30.1945 abcd 150 0.8 Busy Airport
+10 -10
View File
@@ -1,10 +1,10 @@
icao,iata,name,location,country,timezone,hub,lat,lon,ground_handling_cost,fuel_100ll_cost,fuel_jeta_cost,fuel_mogas_cost,notes icao,iata,name,location,country,timezone,hub,lat,lon,ground_handling_cost,fuel_100ll_cost,fuel_jeta_cost,fuel_mogas_cost
EGLL,LHR,"London Heathrow","London, England",,Europe/London,,51.4775,-0.4614,500,0,0,0, EGLL,LHR,"London Heathrow","London, England",,Europe/London,,51.4775,-0.4614,500,0,0,0
KAUS,AUS,Austin-Bergstrom,"Austin, Texas, USA","United States",America/Chicago,1,30.1945,-97.6699,0,0,0,0,"Test Note" KAUS,AUS,Austin-Bergstrom,"Austin, Texas, USA","United States",America/Chicago,1,30.1945,-97.6699,0,0,0,0
KJFK,JFK,"John F Kennedy","New York, New York, USA","United States",America/New_York,1,40.6399,-73.7787,250,0,0,0,"Busy Airport" KJFK,JFK,"John F Kennedy","New York, New York, USA","United States",America/New_York,1,40.6399,-73.7787,250,0,0,0
KPAE,PAE,"Snohomish County (Paine Field) Airport",Everett,"United States",America/Los_Angeles,,47.9063,-122.282,0,0,0,0, KPAE,PAE,"Snohomish County (Paine Field) Airport",Everett,"United States",America/Los_Angeles,,47.9063,-122.282,0,0,0,0
KSEA,SEA,"Seattle Tacoma International Airport",Seattle,"United States",America/Los_Angeles,,47.449,-122.309,0,0,0,0, KSEA,SEA,"Seattle Tacoma International Airport",Seattle,"United States",America/Los_Angeles,,47.449,-122.309,0,0,0,0
LEMD,MAD,"Adolfo Suárez Madrid–Barajas Airport",Madrid,Spain,Europe/Madrid,,40.4719,-3.5626,,0,0,0, LEMD,MAD,"Adolfo Suárez Madrid–Barajas Airport",Madrid,Spain,Europe/Madrid,,40.4719,-3.5626,,0,0,0
MKJP,KIN,"Norman Manley International Airport","Kingston, Jamaica",,America/Jamaica,,17.9357,-76.7875,50,0,0,0, MKJP,KIN,"Norman Manley International Airport","Kingston, Jamaica",,America/Jamaica,,17.9357,-76.7875,50,0,0,0
MWCR,GCM,"Owen Roberts International Airport",Georgetown,Cayman,America/Cayman,,19.2928,-81.3577,50,0,0,0, MWCR,GCM,"Owen Roberts International Airport",Georgetown,Cayman,America/Cayman,,19.2928,-81.3577,50,0,0,0
OMDB,DXB,"Dubai International Airport","Dubai, UAE",,Asia/Dubai,,25.2528,55.3644,50,0,0,0, OMDB,DXB,"Dubai International Airport","Dubai, UAE",,Asia/Dubai,,25.2528,55.3644,50,0,0,0
1 icao iata name location country timezone hub lat lon ground_handling_cost fuel_100ll_cost fuel_jeta_cost fuel_mogas_cost notes
2 EGLL LHR London Heathrow London, England Europe/London 51.4775 -0.4614 500 0 0 0
3 KAUS AUS Austin-Bergstrom Austin, Texas, USA United States America/Chicago 1 30.1945 -97.6699 0 0 0 0 Test Note
4 KJFK JFK John F Kennedy New York, New York, USA United States America/New_York 1 40.6399 -73.7787 250 0 0 0 Busy Airport
5 KPAE PAE Snohomish County (Paine Field) Airport Everett United States America/Los_Angeles 47.9063 -122.282 0 0 0 0
6 KSEA SEA Seattle Tacoma International Airport Seattle United States America/Los_Angeles 47.449 -122.309 0 0 0 0
7 LEMD MAD Adolfo Suárez Madrid–Barajas Airport Madrid Spain Europe/Madrid 40.4719 -3.5626 0 0 0
8 MKJP KIN Norman Manley International Airport Kingston, Jamaica America/Jamaica 17.9357 -76.7875 50 0 0 0
9 MWCR GCM Owen Roberts International Airport Georgetown Cayman America/Cayman 19.2928 -81.3577 50 0 0 0
10 OMDB DXB Dubai International Airport Dubai, UAE Asia/Dubai 25.2528 55.3644 50 0 0 0