From 4fe5935e307efe1cb5a3196212b850729c783373 Mon Sep 17 00:00:00 2001 From: Kilian Hofmann Date: Thu, 5 Aug 2021 01:22:34 +0200 Subject: [PATCH] Alternates --- README.md | 6 +++ controllers/Alternate.php | 17 +++++++ controllers/alternate/_list_toolbar.htm | 18 +++++++ controllers/alternate/config_form.yaml | 10 ++++ controllers/alternate/config_list.yaml | 12 +++++ controllers/alternate/create.htm | 46 ++++++++++++++++++ controllers/alternate/index.htm | 1 + controllers/alternate/preview.htm | 22 +++++++++ controllers/alternate/update.htm | 54 +++++++++++++++++++++ lang/en/lang.php | 5 ++ models/Airport.php | 9 ++++ models/Alternate.php | 36 ++++++++++++++ models/alternate/columns.yaml | 17 +++++++ models/alternate/fields.yaml | 21 ++++++++ updates/builder_table_create_airports.php | 2 + updates/builder_table_create_alternates.php | 36 ++++++++++++++ updates/version.yaml | 2 + yarn.lock | 4 +- 18 files changed, 316 insertions(+), 2 deletions(-) create mode 100644 controllers/Alternate.php create mode 100644 controllers/alternate/_list_toolbar.htm create mode 100644 controllers/alternate/config_form.yaml create mode 100644 controllers/alternate/config_list.yaml create mode 100644 controllers/alternate/create.htm create mode 100644 controllers/alternate/index.htm create mode 100644 controllers/alternate/preview.htm create mode 100644 controllers/alternate/update.htm create mode 100644 models/Alternate.php create mode 100644 models/alternate/columns.yaml create mode 100644 models/alternate/fields.yaml create mode 100644 updates/builder_table_create_alternates.php diff --git a/README.md b/README.md index b50134a..7dae7d4 100644 --- a/README.md +++ b/README.md @@ -3,3 +3,9 @@ ## Airport - HasMany Aircraft (2x, External DB) +- BelongsToMany Airport (Defined via Alternate) + + +## Alternate + +- BelongsTo Airport (2x) diff --git a/controllers/Alternate.php b/controllers/Alternate.php new file mode 100644 index 0000000..b0f91fc --- /dev/null +++ b/controllers/Alternate.php @@ -0,0 +1,17 @@ + + + + diff --git a/controllers/alternate/config_form.yaml b/controllers/alternate/config_form.yaml new file mode 100644 index 0000000..ce7c631 --- /dev/null +++ b/controllers/alternate/config_form.yaml @@ -0,0 +1,10 @@ +name: Alternate +form: $/germanairlinesva/routes/models/alternate/fields.yaml +modelClass: GermanAirlinesVa\Routes\Models\Alternate +defaultRedirect: germanairlinesva/routes/alternate +create: + redirect: 'germanairlinesva/routes/alternate/update/:id' + redirectClose: germanairlinesva/routes/alternate +update: + redirect: germanairlinesva/routes/alternate + redirectClose: germanairlinesva/routes/alternate diff --git a/controllers/alternate/config_list.yaml b/controllers/alternate/config_list.yaml new file mode 100644 index 0000000..431dc67 --- /dev/null +++ b/controllers/alternate/config_list.yaml @@ -0,0 +1,12 @@ +list: $/germanairlinesva/routes/models/alternate/columns.yaml +modelClass: GermanAirlinesVa\Routes\Models\Alternate +title: Alternates +noRecordsMessage: 'backend::lang.list.no_records' +showSetup: true +showCheckboxes: true +recordsPerPage: 20 +toolbar: + buttons: list_toolbar + search: + prompt: 'backend::lang.list.search_prompt' +recordUrl: 'germanairlinesva/routes/alternate/update/:id' diff --git a/controllers/alternate/create.htm b/controllers/alternate/create.htm new file mode 100644 index 0000000..47abfb4 --- /dev/null +++ b/controllers/alternate/create.htm @@ -0,0 +1,46 @@ + + + + +fatalError): ?> + + 'layout']) ?> + +
+ formRender() ?> +
+ +
+
+ + + + + +
+
+ + + + +

fatalError)) ?>

+

+ diff --git a/controllers/alternate/index.htm b/controllers/alternate/index.htm new file mode 100644 index 0000000..ea43a36 --- /dev/null +++ b/controllers/alternate/index.htm @@ -0,0 +1 @@ +listRender() ?> diff --git a/controllers/alternate/preview.htm b/controllers/alternate/preview.htm new file mode 100644 index 0000000..1e7ddf1 --- /dev/null +++ b/controllers/alternate/preview.htm @@ -0,0 +1,22 @@ + + + + +fatalError): ?> + +
+ formRenderPreview() ?> +
+ + +

fatalError) ?>

+ + +

+ + + +

diff --git a/controllers/alternate/update.htm b/controllers/alternate/update.htm new file mode 100644 index 0000000..6cad925 --- /dev/null +++ b/controllers/alternate/update.htm @@ -0,0 +1,54 @@ + + + + +fatalError): ?> + + 'layout']) ?> + +
+ formRender() ?> +
+ +
+
+ + + + + + + +
+
+ + + +

fatalError)) ?>

+

+ diff --git a/lang/en/lang.php b/lang/en/lang.php index c14d4ee..aac03be 100644 --- a/lang/en/lang.php +++ b/lang/en/lang.php @@ -24,4 +24,9 @@ 'routes' => 'Manage Routes', ], ], + 'alternates' => [ + 'airport' => 'Airport', + 'alternate' => 'Alternate', + 'index' => 'Index', + ], ]; diff --git a/models/Airport.php b/models/Airport.php index 72b9968..e4b7729 100644 --- a/models/Airport.php +++ b/models/Airport.php @@ -38,4 +38,13 @@ class Airport extends Model 'based' => ['GermanAirlinesVa\Fleet\Models\Aircraft', 'key' => 'home_airport_id'], 'occupying' => ['GermanAirlinesVa\Fleet\Models\Aircraft', 'key' => 'airport_id'], ]; + + public $belongsToMany = [ + 'alternates' => [ + 'GermanAirlinesVa\Routes\Models\Airport', + 'table' => 'alternates', + 'key' => 'airport_id', + 'otherKey' => 'alternate_id', + ], + ]; } diff --git a/models/Alternate.php b/models/Alternate.php new file mode 100644 index 0000000..17ff06c --- /dev/null +++ b/models/Alternate.php @@ -0,0 +1,36 @@ + 'required', + 'alternate_id' => 'required', + ]; + + public $belongsTo = [ + 'airport' => ['GermanAirlinesVa\Routes\Models\Airport', 'key' => 'airport_id'], + 'alternate' => ['GermanAirlinesVa\Routes\Models\Airport', 'key' => 'alternate_id'], + ]; +} diff --git a/models/alternate/columns.yaml b/models/alternate/columns.yaml new file mode 100644 index 0000000..fedc7ba --- /dev/null +++ b/models/alternate/columns.yaml @@ -0,0 +1,17 @@ +columns: + id: + label: id + type: number + airport: + label: airport + type: text + relation: airport + valueFrom: icao + alternate: + label: alternate + type: text + relation: alternate + valueFrom: icao + index: + label: index + type: number diff --git a/models/alternate/fields.yaml b/models/alternate/fields.yaml new file mode 100644 index 0000000..8432a61 --- /dev/null +++ b/models/alternate/fields.yaml @@ -0,0 +1,21 @@ +fields: + airport: + label: 'germanairlinesva.routes::lang.alternates.airport' + nameFrom: icao + descriptionFrom: description + span: auto + required: 1 + type: relation + alternate: + label: 'germanairlinesva.routes::lang.alternates.alternate' + nameFrom: icao + descriptionFrom: description + span: auto + required: 1 + type: relation + index: + label: 'germanairlinesva.routes::lang.alternates.index' + span: auto + default: '0' + required: 1 + type: number diff --git a/updates/builder_table_create_airports.php b/updates/builder_table_create_airports.php index 43a76fc..3ca566b 100644 --- a/updates/builder_table_create_airports.php +++ b/updates/builder_table_create_airports.php @@ -33,6 +33,8 @@ class BuilderTableCreateAirports extends Migration public function down() { + Schema::connection('germanairlinesva_routes')->disableForeignKeyConstraints(); Schema::connection('germanairlinesva_routes')->dropIfExists('airports'); + Schema::connection('germanairlinesva_routes')->enableForeignKeyConstraints(); } } diff --git a/updates/builder_table_create_alternates.php b/updates/builder_table_create_alternates.php new file mode 100644 index 0000000..34c947e --- /dev/null +++ b/updates/builder_table_create_alternates.php @@ -0,0 +1,36 @@ +create('alternates', function ($table) { + $table->engine = 'InnoDB'; + $table->bigIncrements('id')->unsigned(); + $table->bigInteger('airport_id')->unsigned(); + $table + ->foreign('airport_id') + ->references('id') + ->on('airports'); + $table->bigInteger('alternate_id')->unsigned(); + $table + ->foreign('alternate_id') + ->references('id') + ->on('airports'); + $table + ->integer('index') + ->unsigned() + ->default(0); + }); + } + + public function down() + { + Schema::connection('germanairlinesva_routes')->enableForeignKeyConstraints(); + Schema::connection('germanairlinesva_routes')->dropIfExists('alternates'); + Schema::connection('germanairlinesva_routes')->enableForeignKeyConstraints(); + } +} diff --git a/updates/version.yaml b/updates/version.yaml index f0b4938..d0a175f 100644 --- a/updates/version.yaml +++ b/updates/version.yaml @@ -5,3 +5,5 @@ 1.0.2: - 'Create table airports' - builder_table_create_airports.php + - 'Create table alternates' + - builder_table_create_alternates.php diff --git a/yarn.lock b/yarn.lock index afc768a..df5d0a6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -41,9 +41,9 @@ p-defer@^1.0.0: resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= -"php-parser@git+https://github.com/glayzzle/php-parser.git#e61e26102144f267ecf5e09020865a9baa6ca2f1": +"php-parser@https://github.com/glayzzle/php-parser#e61e26102144f267ecf5e09020865a9baa6ca2f1": version "3.0.2" - resolved "git+https://github.com/glayzzle/php-parser.git#e61e26102144f267ecf5e09020865a9baa6ca2f1" + resolved "https://github.com/glayzzle/php-parser#e61e26102144f267ecf5e09020865a9baa6ca2f1" prettier@^2.3.0: version "2.3.2"