From 7abc7cbd3cffb1147b856a262b27166507d8a7ed Mon Sep 17 00:00:00 2001 From: Mateja <mail@matejamaric.com> Date: Sat, 13 Mar 2021 16:22:36 +0100 Subject: Install Vuex package. --- package-lock.json | 6 ++++++ package.json | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 9c0ccea..5f8bfbe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9198,6 +9198,12 @@ "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", "dev": true }, + "vuex": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz", + "integrity": "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==", + "dev": true + }, "watchpack": { "version": "1.7.5", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", diff --git a/package.json b/package.json index 3556d45..5c158cb 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "sass": "^1.32.8", "sass-loader": "^8.0.2", "vue": "^2.6.12", - "vue-template-compiler": "^2.6.12" + "vue-template-compiler": "^2.6.12", + "vuex": "^3.6.2" } } -- cgit v1.2.3 From 865bb1f30a0c4567522525fb0be9fd99bd796ecf Mon Sep 17 00:00:00 2001 From: Mateja <mail@matejamaric.com> Date: Sat, 13 Mar 2021 17:56:37 +0100 Subject: Adding boilerplate code. --- resources/js/app.js | 20 ++++++++++++++++++++ resources/js/bootstrap.js | 2 ++ resources/js/components/activities.vue | 9 +++++++++ resources/js/components/call-sign-description.vue | 9 +++++++++ resources/js/components/call-sign-filter.vue | 9 +++++++++ resources/js/components/reservation.vue | 9 +++++++++ resources/js/components/reservations.vue | 9 +++++++++ resources/js/store.js | 15 +++++++++++++++ 8 files changed, 82 insertions(+) create mode 100644 resources/js/components/activities.vue create mode 100644 resources/js/components/call-sign-description.vue create mode 100644 resources/js/components/call-sign-filter.vue create mode 100644 resources/js/components/reservation.vue create mode 100644 resources/js/components/reservations.vue create mode 100644 resources/js/store.js diff --git a/resources/js/app.js b/resources/js/app.js index 40c55f6..6c325fa 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -1 +1,21 @@ require('./bootstrap'); + +//import store from './store.js'; +require('./store'); + +import callSignDesc from './components/call-sign-description.vue'; +import callSignFilter from './components/call-sign-filter.vue'; +import activities from './components/activities.vue'; +import reservation from './components/reservation.vue'; +import reservations from './components/reservations.vue'; + +new Vue({ + el: '#vue', + components: { + callSignDesc, + callSignFilter, + activities, + reservation, + reservations + } +}); diff --git a/resources/js/bootstrap.js b/resources/js/bootstrap.js index ffc0a2b..c3456b8 100644 --- a/resources/js/bootstrap.js +++ b/resources/js/bootstrap.js @@ -4,6 +4,8 @@ window.axios = require('axios'); window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; window.Vue = require('vue'); +window.Vuex = require('vuex'); +Vue.use(Vuex); window.$ = window.jQuery = require('jquery'); window.Popper = require('popper.js'); diff --git a/resources/js/components/activities.vue b/resources/js/components/activities.vue new file mode 100644 index 0000000..48e54f5 --- /dev/null +++ b/resources/js/components/activities.vue @@ -0,0 +1,9 @@ +<template> + +</template> + +<script> +export default { + +} +</script> diff --git a/resources/js/components/call-sign-description.vue b/resources/js/components/call-sign-description.vue new file mode 100644 index 0000000..48e54f5 --- /dev/null +++ b/resources/js/components/call-sign-description.vue @@ -0,0 +1,9 @@ +<template> + +</template> + +<script> +export default { + +} +</script> diff --git a/resources/js/components/call-sign-filter.vue b/resources/js/components/call-sign-filter.vue new file mode 100644 index 0000000..48e54f5 --- /dev/null +++ b/resources/js/components/call-sign-filter.vue @@ -0,0 +1,9 @@ +<template> + +</template> + +<script> +export default { + +} +</script> diff --git a/resources/js/components/reservation.vue b/resources/js/components/reservation.vue new file mode 100644 index 0000000..48e54f5 --- /dev/null +++ b/resources/js/components/reservation.vue @@ -0,0 +1,9 @@ +<template> + +</template> + +<script> +export default { + +} +</script> diff --git a/resources/js/components/reservations.vue b/resources/js/components/reservations.vue new file mode 100644 index 0000000..48e54f5 --- /dev/null +++ b/resources/js/components/reservations.vue @@ -0,0 +1,9 @@ +<template> + +</template> + +<script> +export default { + +} +</script> diff --git a/resources/js/store.js b/resources/js/store.js new file mode 100644 index 0000000..e9249cc --- /dev/null +++ b/resources/js/store.js @@ -0,0 +1,15 @@ +const store = new Vuex.Store({ + state: { + callSign: "all", + data: [] + }, + getters: { + + }, + mutations: { + + }, + actions: { + + } +}); -- cgit v1.2.3 From 2e570c76bda80def3e07ecc3478d8eb95905acbb Mon Sep 17 00:00:00 2001 From: Mateja <mail@matejamaric.com> Date: Sat, 13 Mar 2021 23:57:41 +0100 Subject: Work on call-sign-filter component. --- resources/js/app.js | 13 ++++++++++--- resources/js/bootstrap.js | 10 +++++++--- resources/js/components/call-sign-filter.vue | 22 ++++++++++++++++++++-- resources/js/store.js | 25 +++++++++++++++++++++---- resources/views/layouts/app.blade.php | 3 ++- resources/views/pages/activities.blade.php | 3 +++ 6 files changed, 63 insertions(+), 13 deletions(-) diff --git a/resources/js/app.js b/resources/js/app.js index 6c325fa..360abf8 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -1,16 +1,23 @@ require('./bootstrap'); -//import store from './store.js'; -require('./store'); +import Vue from 'vue'; + +import store from './store.js'; + +//window.Vue = require('vue'); +//window.Vuex = require('vuex'); +//Vue.use(Vuex); -import callSignDesc from './components/call-sign-description.vue'; import callSignFilter from './components/call-sign-filter.vue'; +import callSignDesc from './components/call-sign-description.vue'; + import activities from './components/activities.vue'; import reservation from './components/reservation.vue'; import reservations from './components/reservations.vue'; new Vue({ el: '#vue', + store, components: { callSignDesc, callSignFilter, diff --git a/resources/js/bootstrap.js b/resources/js/bootstrap.js index c3456b8..e5e0ab6 100644 --- a/resources/js/bootstrap.js +++ b/resources/js/bootstrap.js @@ -3,9 +3,13 @@ window._ = require('lodash'); window.axios = require('axios'); window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; -window.Vue = require('vue'); -window.Vuex = require('vuex'); -Vue.use(Vuex); +let token = document.querySelector('meta[name="csrf-token"]'); + +if (token) { + window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content; +} else { + console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token'); +} window.$ = window.jQuery = require('jquery'); window.Popper = require('popper.js'); diff --git a/resources/js/components/call-sign-filter.vue b/resources/js/components/call-sign-filter.vue index 48e54f5..9ad202d 100644 --- a/resources/js/components/call-sign-filter.vue +++ b/resources/js/components/call-sign-filter.vue @@ -1,9 +1,27 @@ <template> - + <select v-model="selected"> + <option value="all">All</option> + <option v-for="option in options" :value="option" v-text="option"></option> + </select> </template> <script> +import store from '../store.js'; + export default { - + data() { + return { + selected: store.state.selectedSign, + //options: store.state.callSigns + } + }, + mounted() { + store.dispatch('getSigns'); + }, + computed: { + options() { + return store.state.callSigns; + } + } } </script> diff --git a/resources/js/store.js b/resources/js/store.js index e9249cc..7f5f1df 100644 --- a/resources/js/store.js +++ b/resources/js/store.js @@ -1,15 +1,32 @@ +import Vue from 'vue'; +import Vuex from 'vuex'; +Vue.use(Vuex); + const store = new Vuex.Store({ state: { - callSign: "all", + selectedSign: "all", + callSigns: [], data: [] }, getters: { - + getSelectedSign(state) { + return state.selectedSign; + }, + getSigns(state) { + return state.callSigns; + } }, mutations: { - + fillSigns(state, signs) { + state.callSigns = signs; + } }, actions: { - + getSigns(context) { + let data = ['test', 'TEST', 'TeSt']; + context.commit('fillSigns', data); + } } }); + +export default store; diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index 79235ac..0a8bbda 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -3,6 +3,7 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta name="csrf-token" content="{{ csrf_token() }}"> <link rel="stylesheet" href="{{ mix('css/app.css') }}" type="text/css"> @yield('styles') <title>YOTA - @yield('title')</title> @@ -10,7 +11,7 @@ <body> @yield('navbar', View::make('inc.navbar')) @yield('jumbotron') - <div class="container pt-3"> + <div id="vue" class="container pt-3"> @yield('content') </div> <script src="{{ mix('js/manifest.js') }}"></script> diff --git a/resources/views/pages/activities.blade.php b/resources/views/pages/activities.blade.php index 7e7a0ed..e9dc169 100644 --- a/resources/views/pages/activities.blade.php +++ b/resources/views/pages/activities.blade.php @@ -6,6 +6,9 @@ @section('content') <input type="hidden" name="csrf-token" content="{{ csrf_token() }}"> + +<call-sign-filter></call-sign-filter><br> + <label for="call-sign">Filter by special callsign: </label> <select id="call-sign"> <option value="all">All</option> -- cgit v1.2.3 From c3a0c1a40262343e1c7e6ec9a0bba9772054ba6d Mon Sep 17 00:00:00 2001 From: Mateja <mail@matejamaric.com> Date: Sun, 14 Mar 2021 01:13:32 +0100 Subject: Use computed setter in call-sign-filter component. --- resources/js/components/call-sign-filter.vue | 18 ++++++++++-------- resources/js/store.js | 8 +++++++- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/resources/js/components/call-sign-filter.vue b/resources/js/components/call-sign-filter.vue index 9ad202d..658b0d2 100644 --- a/resources/js/components/call-sign-filter.vue +++ b/resources/js/components/call-sign-filter.vue @@ -9,18 +9,20 @@ import store from '../store.js'; export default { - data() { - return { - selected: store.state.selectedSign, - //options: store.state.callSigns - } - }, mounted() { - store.dispatch('getSigns'); + store.dispatch('fillSigns'); }, computed: { + selected: { + get() { + return store.getters.getSelectedSign; + }, + set(value) { + store.dispatch('setSelectedSign', value); + } + }, options() { - return store.state.callSigns; + return store.getters.getSigns; } } } diff --git a/resources/js/store.js b/resources/js/store.js index 7f5f1df..33b7469 100644 --- a/resources/js/store.js +++ b/resources/js/store.js @@ -17,12 +17,18 @@ const store = new Vuex.Store({ } }, mutations: { + setSelectedSign(state, sign) { + state.selectedSign = sign; + }, fillSigns(state, signs) { state.callSigns = signs; } }, actions: { - getSigns(context) { + setSelectedSign(context, sign) { + context.commit('setSelectedSign', sign); + }, + fillSigns(context) { let data = ['test', 'TEST', 'TeSt']; context.commit('fillSigns', data); } -- cgit v1.2.3 From 00abd5229c63b570af751406fc322e197c4f51c0 Mon Sep 17 00:00:00 2001 From: Mateja <mail@matejamaric.com> Date: Sun, 14 Mar 2021 14:04:28 +0100 Subject: Better import/export. --- resources/js/app.js | 4 ---- resources/js/components/call-sign-filter.vue | 10 ++++------ resources/js/store.js | 4 +--- 3 files changed, 5 insertions(+), 13 deletions(-) diff --git a/resources/js/app.js b/resources/js/app.js index 360abf8..efea4b1 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -4,10 +4,6 @@ import Vue from 'vue'; import store from './store.js'; -//window.Vue = require('vue'); -//window.Vuex = require('vuex'); -//Vue.use(Vuex); - import callSignFilter from './components/call-sign-filter.vue'; import callSignDesc from './components/call-sign-description.vue'; diff --git a/resources/js/components/call-sign-filter.vue b/resources/js/components/call-sign-filter.vue index 658b0d2..07d339d 100644 --- a/resources/js/components/call-sign-filter.vue +++ b/resources/js/components/call-sign-filter.vue @@ -6,23 +6,21 @@ </template> <script> -import store from '../store.js'; - export default { mounted() { - store.dispatch('fillSigns'); + this.$store.dispatch('fillSigns'); }, computed: { selected: { get() { - return store.getters.getSelectedSign; + return this.$store.getters.getSelectedSign; }, set(value) { - store.dispatch('setSelectedSign', value); + this.$store.dispatch('setSelectedSign', value); } }, options() { - return store.getters.getSigns; + return this.$store.getters.getSigns; } } } diff --git a/resources/js/store.js b/resources/js/store.js index 33b7469..461b34e 100644 --- a/resources/js/store.js +++ b/resources/js/store.js @@ -2,7 +2,7 @@ import Vue from 'vue'; import Vuex from 'vuex'; Vue.use(Vuex); -const store = new Vuex.Store({ +export default new Vuex.Store({ state: { selectedSign: "all", callSigns: [], @@ -34,5 +34,3 @@ const store = new Vuex.Store({ } } }); - -export default store; -- cgit v1.2.3 From c5209f1a698113f48d7435c5363b11e925d16e23 Mon Sep 17 00:00:00 2001 From: Mateja <mail@matejamaric.com> Date: Sun, 14 Mar 2021 14:19:33 +0100 Subject: Add `/special-calls/show` route. --- app/Http/Controllers/SpecialCallsController.php | 7 +++++++ routes/web.php | 1 + 2 files changed, 8 insertions(+) diff --git a/app/Http/Controllers/SpecialCallsController.php b/app/Http/Controllers/SpecialCallsController.php index 025d955..a26af78 100644 --- a/app/Http/Controllers/SpecialCallsController.php +++ b/app/Http/Controllers/SpecialCallsController.php @@ -13,6 +13,13 @@ use App\Models\SpecialCall; class SpecialCallsController extends Controller { + public function index(Request $request) + { + //$data = SpecialCall::select('sign')->get()->toArray(); + $data = SpecialCall::all()->toArray(); + return $data; + } + public function create(Request $request) { $data = SpecialCall::all(); diff --git a/routes/web.php b/routes/web.php index 20437b1..4616364 100644 --- a/routes/web.php +++ b/routes/web.php @@ -48,6 +48,7 @@ Route::post('/api/reservations', [ReservationsController::class, 'update'])->mid Route::get('/special-calls/add', [SpecialCallsController::class, 'create'])->name('addSign')->middleware(['auth']); Route::post('/special-calls/add', [SpecialCallsController::class, 'store'])->name('addSignForm')->middleware(['auth']); +Route::get('/special-calls/show', [SpecialCallsController::class, 'index']); Route::get('/special-calls/show/{name}', [SpecialCallsController::class, 'show']); Route::get('/special-calls/edit/{id}', [SpecialCallsController::class, 'edit'])->name('editSign')->middleware(['auth']); Route::post('/special-calls/edit/{id}', [SpecialCallsController::class, 'update'])->name('editSignForm')->middleware(['auth']); -- cgit v1.2.3 From 95d863c82ad630d46b2195ef04d62d45b18e68a7 Mon Sep 17 00:00:00 2001 From: Mateja <mail@matejamaric.com> Date: Sun, 14 Mar 2021 14:47:10 +0100 Subject: Load special signs using Axios. --- resources/js/components/call-sign-filter.vue | 2 +- resources/js/store.js | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/resources/js/components/call-sign-filter.vue b/resources/js/components/call-sign-filter.vue index 07d339d..a19b8a6 100644 --- a/resources/js/components/call-sign-filter.vue +++ b/resources/js/components/call-sign-filter.vue @@ -1,7 +1,7 @@ <template> <select v-model="selected"> <option value="all">All</option> - <option v-for="option in options" :value="option" v-text="option"></option> + <option v-for="option in options" :value="option.sign" v-text="option.sign"></option> </select> </template> diff --git a/resources/js/store.js b/resources/js/store.js index 461b34e..6ec3711 100644 --- a/resources/js/store.js +++ b/resources/js/store.js @@ -29,8 +29,11 @@ export default new Vuex.Store({ context.commit('setSelectedSign', sign); }, fillSigns(context) { - let data = ['test', 'TEST', 'TeSt']; - context.commit('fillSigns', data); + axios.get('/special-calls/show').then(response => { + context.commit('fillSigns', response.data); + }).catch(error => { + console.log(error); + }); } } }); -- cgit v1.2.3 From cc323d95fa3cad2d3ba437c37c4f29f8dff854eb Mon Sep 17 00:00:00 2001 From: Mateja <mail@matejamaric.com> Date: Sun, 14 Mar 2021 18:22:56 +0100 Subject: Finished call-sign-description component. --- resources/js/app.js | 4 +- resources/js/components/call-sign-description.vue | 45 ++++++++++++++++++++++- resources/js/store.js | 4 +- resources/views/pages/reserve.blade.php | 36 ++++++++++-------- 4 files changed, 68 insertions(+), 21 deletions(-) diff --git a/resources/js/app.js b/resources/js/app.js index efea4b1..35fd04a 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -5,7 +5,7 @@ import Vue from 'vue'; import store from './store.js'; import callSignFilter from './components/call-sign-filter.vue'; -import callSignDesc from './components/call-sign-description.vue'; +import callSignDescription from './components/call-sign-description.vue'; import activities from './components/activities.vue'; import reservation from './components/reservation.vue'; @@ -15,7 +15,7 @@ new Vue({ el: '#vue', store, components: { - callSignDesc, + callSignDescription, callSignFilter, activities, reservation, diff --git a/resources/js/components/call-sign-description.vue b/resources/js/components/call-sign-description.vue index 48e54f5..b0dca4d 100644 --- a/resources/js/components/call-sign-description.vue +++ b/resources/js/components/call-sign-description.vue @@ -1,9 +1,50 @@ <template> - + <div> + <div class="form-group"> + <label for="special-call">Special Callsign:</label> + <select class="form-control" id="special-call" v-model="selected" name="scall" required> + <option v-for="option in options" :value="option.sign" v-text="option.sign"></option> + </select> + </div> + + <div class="card mb-3"> + <div class="card-body pb-1"> + <div class="card-text" v-html="description"></div> + </div> + </div> + </div> </template> <script> export default { - + mounted() { + this.$store.dispatch('fillSigns').then(() => { + try { + this.$store.dispatch('setSelectedSign', this.$store.getters.getSigns[0].sign); + } + catch { + console.log('No call signs!'); + } + }); + }, + computed: { + options() { + return this.$store.getters.getSigns; + }, + selected: { + get() { + return this.$store.getters.getSelectedSign; + }, + set(value) { + this.$store.dispatch('setSelectedSign', value); + } + }, + description() { + for (let i = 0; i < this.options.length; i++) + if (this.options[i].sign === this.selected) + return this.options[i].description; + return ''; + } + } } </script> diff --git a/resources/js/store.js b/resources/js/store.js index 6ec3711..669f0bc 100644 --- a/resources/js/store.js +++ b/resources/js/store.js @@ -28,8 +28,8 @@ export default new Vuex.Store({ setSelectedSign(context, sign) { context.commit('setSelectedSign', sign); }, - fillSigns(context) { - axios.get('/special-calls/show').then(response => { + async fillSigns(context) { + await axios.get('/special-calls/show').then(response => { context.commit('fillSigns', response.data); }).catch(error => { console.log(error); diff --git a/resources/views/pages/reserve.blade.php b/resources/views/pages/reserve.blade.php index 823e8b9..d0253df 100644 --- a/resources/views/pages/reserve.blade.php +++ b/resources/views/pages/reserve.blade.php @@ -17,24 +17,30 @@ @endif <form action="{{ route('reserve') }}" method="POST"> @csrf - <!-- SPECIAL CALL --> -<div class="form-group"> - <label for="special-call">Special Callsign:</label> - <select class="form-control @error('scall') is-invalid @enderror" id="special-call" name="scall" required> - @foreach ($signs as $sign) - <option value="{{ $sign->sign }}" {{ old('scall') == $sign->sign ? 'selected' : '' }}>{{ $sign->sign }}</option> - @endforeach - </select> + + <call-sign-description></call-sign-description> @error('scall') <div class="alert alert-danger mt-2">{{ $message }}</div> @enderror -</div> -<div class="card mb-3"> - <div class="card-body pb-1"> - <div class="card-text" id="call-desc"></div> - </div> -</div> + {{--<!-- SPECIAL CALL -->--}} +{{--<div class="form-group">--}} + {{--<label for="special-call">Special Callsign:</label>--}} + {{--<select class="form-control @error('scall') is-invalid @enderror" id="special-call" name="scall" required>--}} + {{--@foreach ($signs as $sign)--}} + {{--<option value="{{ $sign->sign }}" {{ old('scall') == $sign->sign ? 'selected' : '' }}>{{ $sign->sign }}</option>--}} + {{--@endforeach--}} + {{--</select> --}} + {{--@error('scall')--}} + {{--<div class="alert alert-danger mt-2">{{ $message }}</div>--}} + {{--@enderror--}} +{{--</div>--}} + +{{--<div class="card mb-3">--}} + {{--<div class="card-body pb-1">--}} + {{--<div class="card-text" id="call-desc"></div>--}} + {{--</div>--}} +{{--</div>--}} @error('time') <div class="alert alert-danger mt-2">{{ $message }}</div> @@ -163,5 +169,5 @@ format: 'H:i' }); </script> - <script src="{{ asset('js/reserve.js') }}"></script> + {{--<script src="{{ asset('js/reserve.js') }}"></script>--}} @endsection -- cgit v1.2.3 From 682803b3a6d39f00aaf64499e1226859e6fda801 Mon Sep 17 00:00:00 2001 From: Mateja <mail@matejamaric.com> Date: Sun, 14 Mar 2021 19:53:12 +0100 Subject: Add label to `call-sign-filter` component. --- resources/js/components/call-sign-filter.vue | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/resources/js/components/call-sign-filter.vue b/resources/js/components/call-sign-filter.vue index a19b8a6..8e3228c 100644 --- a/resources/js/components/call-sign-filter.vue +++ b/resources/js/components/call-sign-filter.vue @@ -1,8 +1,11 @@ <template> - <select v-model="selected"> - <option value="all">All</option> - <option v-for="option in options" :value="option.sign" v-text="option.sign"></option> - </select> + <div> + <label for="call-sign">Filter by special callsign: </label> + <select id="call-sign" v-model="selected"> + <option value="all">All</option> + <option v-for="option in options" :value="option.sign" v-text="option.sign"></option> + </select> + </div> </template> <script> -- cgit v1.2.3 From 44df483d5a5307131b6fb27aa58eb518261ef4ef Mon Sep 17 00:00:00 2001 From: Mateja <mail@matejamaric.com> Date: Sun, 14 Mar 2021 19:55:39 +0100 Subject: Better imported names for components. --- resources/js/app.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/resources/js/app.js b/resources/js/app.js index 35fd04a..4fe6208 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -7,9 +7,9 @@ import store from './store.js'; import callSignFilter from './components/call-sign-filter.vue'; import callSignDescription from './components/call-sign-description.vue'; -import activities from './components/activities.vue'; -import reservation from './components/reservation.vue'; -import reservations from './components/reservations.vue'; +import activitiesView from './components/activities.vue'; +import reservationView from './components/reservation.vue'; +import reservationsView from './components/reservations.vue'; new Vue({ el: '#vue', @@ -17,8 +17,8 @@ new Vue({ components: { callSignDescription, callSignFilter, - activities, - reservation, - reservations + activitiesView, + reservationView, + reservationsView } }); -- cgit v1.2.3 From ef96b4953e0e5c89d95b6c6eb4b2fc2c3d9c9464 Mon Sep 17 00:00:00 2001 From: Mateja <mail@matejamaric.com> Date: Sun, 14 Mar 2021 19:59:52 +0100 Subject: Start work on `activities` component. --- resources/js/components/activities.vue | 26 ++++++++++++++++++++++++-- resources/views/pages/activities.blade.php | 28 +--------------------------- 2 files changed, 25 insertions(+), 29 deletions(-) diff --git a/resources/js/components/activities.vue b/resources/js/components/activities.vue index 48e54f5..976516f 100644 --- a/resources/js/components/activities.vue +++ b/resources/js/components/activities.vue @@ -1,9 +1,31 @@ <template> - + <div> + <call-sign-filter></call-sign-filter> + + <div class="table-responsive mt-2"> + <table class="table table-striped table-bordered" style="white-space:nowrap;"> + <thead class="thead-dark"> + <tr> + <th>Operator</th> + <th>From</th> + <th>To</th> + <th>Special Callsign</th> + <th>Frequencies</th> + <th>Modes</th> + <th>QSO</th> + </tr> + </thead> + <tbody> + </tbody> + </table> + </div> + </div> </template> <script> +import callSignFilter from './call-sign-filter.vue'; + export default { - + components: { callSignFilter } } </script> diff --git a/resources/views/pages/activities.blade.php b/resources/views/pages/activities.blade.php index e9dc169..275431a 100644 --- a/resources/views/pages/activities.blade.php +++ b/resources/views/pages/activities.blade.php @@ -5,33 +5,7 @@ @section('navbar', View::make('inc.navbar')) @section('content') -<input type="hidden" name="csrf-token" content="{{ csrf_token() }}"> -<call-sign-filter></call-sign-filter><br> +<activities-view></activities-view> -<label for="call-sign">Filter by special callsign: </label> -<select id="call-sign"> - <option value="all">All</option> - @if (count($signs) > 0) - @foreach ($signs as $sign) - <option value="{{ $sign->sign }}">{{ $sign->sign }}</option> - @endforeach - @endif -</select> - -<div id="sign-desc-div"></div> - -<div class="table-responsive mt-2"> - <table id="ajax-table" class="table table-striped table-bordered" style="white-space:nowrap;"> - <thead class="thead-dark"> - <tr><th>Operator</th><th>From</th><th>To</th><th>Special Callsign</th><th>Frequencies</th><th>Modes</th><th>QSO</th></tr> - </thead> - <tbody> - </tbody> - </table> -</div> @endsection() - -@section('scripts') - <script src="{{ asset('js/activities.js') }}"></script> -@endsection -- cgit v1.2.3 From 5d79c586b963b1249eb148816a70d1cec618511f Mon Sep 17 00:00:00 2001 From: Mateja <mail@matejamaric.com> Date: Sun, 14 Mar 2021 21:38:01 +0100 Subject: Work on `activities` component. It currently doesn't update on filter change. --- resources/js/components/activities.vue | 26 ++++++++++++++++++++++++-- resources/js/components/call-sign-filter.vue | 1 + resources/js/store.js | 13 +++++++++++++ 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/resources/js/components/activities.vue b/resources/js/components/activities.vue index 976516f..01e7002 100644 --- a/resources/js/components/activities.vue +++ b/resources/js/components/activities.vue @@ -1,5 +1,5 @@ <template> - <div> + <div @signChanged="filterChanged()"> <call-sign-filter></call-sign-filter> <div class="table-responsive mt-2"> @@ -16,6 +16,15 @@ </tr> </thead> <tbody> + <tr v-for="activity in activities"> + <td>{{ activity.operatorCall }}</td> + <td>{{ activity.fromTime }}</td> + <td>{{ activity.toTime }}</td> + <td>{{ activity.specialCall }}</td> + <td>{{ activity.frequencies }}</td> + <td>{{ activity.modes }}</td> + <td>{{ activity.qso }}</td> + </tr> </tbody> </table> </div> @@ -26,6 +35,19 @@ import callSignFilter from './call-sign-filter.vue'; export default { - components: { callSignFilter } + components: { callSignFilter }, + mounted() { + this.$store.dispatch('fillData'); + }, + computed: { + activities() { + return this.$store.getters.getData; + } + }, + methods: { + filterChanged() { + this.$store.dispatch('fillData'); + } + } } </script> diff --git a/resources/js/components/call-sign-filter.vue b/resources/js/components/call-sign-filter.vue index 8e3228c..e8d22a5 100644 --- a/resources/js/components/call-sign-filter.vue +++ b/resources/js/components/call-sign-filter.vue @@ -20,6 +20,7 @@ export default { }, set(value) { this.$store.dispatch('setSelectedSign', value); + this.$emit('signChanged'); } }, options() { diff --git a/resources/js/store.js b/resources/js/store.js index 669f0bc..852ba6b 100644 --- a/resources/js/store.js +++ b/resources/js/store.js @@ -14,6 +14,9 @@ export default new Vuex.Store({ }, getSigns(state) { return state.callSigns; + }, + getData(state) { + return state.data; } }, mutations: { @@ -22,6 +25,9 @@ export default new Vuex.Store({ }, fillSigns(state, signs) { state.callSigns = signs; + }, + setData(state, data) { + state.data = data; } }, actions: { @@ -34,6 +40,13 @@ export default new Vuex.Store({ }).catch(error => { console.log(error); }); + }, + async fillData(context) { + await axios.post('/api/activities', {'call-sign': this.state.selectedSign}).then(response => { + context.commit('setData', response.data.data); + }).catch(error => { + console.log(error); + }); } } }); -- cgit v1.2.3 From 002399d427f11646847904b11b1373204644aee2 Mon Sep 17 00:00:00 2001 From: Mateja <mail@matejamaric.com> Date: Mon, 15 Mar 2021 22:30:19 +0100 Subject: Use v-bind:key in v-for. --- resources/js/components/activities.vue | 2 +- resources/js/components/call-sign-description.vue | 2 +- resources/js/components/call-sign-filter.vue | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/js/components/activities.vue b/resources/js/components/activities.vue index 01e7002..928bae6 100644 --- a/resources/js/components/activities.vue +++ b/resources/js/components/activities.vue @@ -16,7 +16,7 @@ </tr> </thead> <tbody> - <tr v-for="activity in activities"> + <tr v-for="(activity, index) in activities" :key="index"> <td>{{ activity.operatorCall }}</td> <td>{{ activity.fromTime }}</td> <td>{{ activity.toTime }}</td> diff --git a/resources/js/components/call-sign-description.vue b/resources/js/components/call-sign-description.vue index b0dca4d..e930176 100644 --- a/resources/js/components/call-sign-description.vue +++ b/resources/js/components/call-sign-description.vue @@ -3,7 +3,7 @@ <div class="form-group"> <label for="special-call">Special Callsign:</label> <select class="form-control" id="special-call" v-model="selected" name="scall" required> - <option v-for="option in options" :value="option.sign" v-text="option.sign"></option> + <option v-for="option in options" :key="option.id" :value="option.sign" v-text="option.sign"></option> </select> </div> diff --git a/resources/js/components/call-sign-filter.vue b/resources/js/components/call-sign-filter.vue index e8d22a5..156bddc 100644 --- a/resources/js/components/call-sign-filter.vue +++ b/resources/js/components/call-sign-filter.vue @@ -3,7 +3,7 @@ <label for="call-sign">Filter by special callsign: </label> <select id="call-sign" v-model="selected"> <option value="all">All</option> - <option v-for="option in options" :value="option.sign" v-text="option.sign"></option> + <option v-for="option in options" :key="option.id" :value="option.sign" v-text="option.sign"></option> </select> </div> </template> -- cgit v1.2.3 From 4e6fa681c3f8f01a44a3446f80524842a4f42274 Mon Sep 17 00:00:00 2001 From: Mateja <mail@matejamaric.com> Date: Mon, 15 Mar 2021 23:12:32 +0100 Subject: Update activities on filter change. I had to use kebab-case for event and listen directly on child component. --- resources/js/components/activities.vue | 4 ++-- resources/js/components/call-sign-filter.vue | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/js/components/activities.vue b/resources/js/components/activities.vue index 928bae6..2f2cf03 100644 --- a/resources/js/components/activities.vue +++ b/resources/js/components/activities.vue @@ -1,6 +1,6 @@ <template> - <div @signChanged="filterChanged()"> - <call-sign-filter></call-sign-filter> + <div> + <call-sign-filter @sign-changed="filterChanged()"></call-sign-filter> <div class="table-responsive mt-2"> <table class="table table-striped table-bordered" style="white-space:nowrap;"> diff --git a/resources/js/components/call-sign-filter.vue b/resources/js/components/call-sign-filter.vue index 156bddc..bf554bd 100644 --- a/resources/js/components/call-sign-filter.vue +++ b/resources/js/components/call-sign-filter.vue @@ -20,7 +20,7 @@ export default { }, set(value) { this.$store.dispatch('setSelectedSign', value); - this.$emit('signChanged'); + this.$emit('sign-changed'); } }, options() { -- cgit v1.2.3 From 294146dd14c412e0cd6c715685bcbce0ff92b865 Mon Sep 17 00:00:00 2001 From: Mateja <mail@matejamaric.com> Date: Wed, 17 Mar 2021 12:59:27 +0100 Subject: Started work on reservation components. --- resources/js/components/reservation.vue | 29 +++++++++++++++++-- resources/js/components/reservations.vue | 49 ++++++++++++++++++++++++++++++-- resources/js/store.js | 7 +++++ 3 files changed, 81 insertions(+), 4 deletions(-) diff --git a/resources/js/components/reservation.vue b/resources/js/components/reservation.vue index 48e54f5..1e04c89 100644 --- a/resources/js/components/reservation.vue +++ b/resources/js/components/reservation.vue @@ -1,9 +1,34 @@ <template> - + <tr> + <td>{{ reservation.id }}</td> + <td> + <input type="checkbox" :checked="reservation.approved"/> + </td> + <td contenteditable="true">{{ reservation.operatorCall }}</td> + <td contenteditable="true">{{ reservation.qso }}</td> + <td contenteditable="true">{{ reservation.fromTime }}</td> + <td contenteditable="true">{{ reservation.toTime }}</td> + <td contenteditable="true">{{ reservation.specialCall }}</td> + <td contenteditable="true">{{ reservation.frequencies }}</td> + <td contenteditable="true">{{ reservation.modes }}</td> + <td contenteditable="true">{{ reservation.operatorName }}</td> + <td contenteditable="true">{{ reservation.operatorEmail }}</td> + <td contenteditable="true">{{ reservation.operatorCall }}</td> + <td> + <button class="btn btn-primary mr-2">Update</button>; + <button class="btn btn-warning mr-2">Restore</button>; + <button class="btn btn-danger">Delete</button>; + </td> + </tr> </template> <script> export default { - + props: ['reservationIndex'], + computed: { + reservation() { + return this.$store.getters.getData[reservationIndex]; + } + } } </script> diff --git a/resources/js/components/reservations.vue b/resources/js/components/reservations.vue index 48e54f5..278dfa4 100644 --- a/resources/js/components/reservations.vue +++ b/resources/js/components/reservations.vue @@ -1,9 +1,54 @@ <template> - + <div> + <call-sign-filter @sign-changed="filterChanged()"></call-sign-filter> + + <div class="table-responsive mt-2"> + <table id="ajax-table" class="table table-striped table-bordered" style="white-space:nowrap;"><!-- table-hover --> + <thead class="thead-dark"> + <tr> + <th>ID</th> + <th>Approved</th> + <th>Operator Callsign</th> + <th>QSO</th> + <th>From</th> + <th>To</th> + <th>Special Callsign</th> + <th>Frequencies</th> + <th>Modes</th> + <th>Operator Name</th> + <th>Operator Email</th> + <th>Operator Phone</th> + <th>Actions</th> + </tr> + </thead> + <tbody> + <reservation-view v-for="(reservation, index) in reservations" + :key="reservation.id" :reservation-index="index"> + </reservation-view> + </tbody> + </table> + </div> + </div> </template> <script> +import callSignFilter from './call-sign-filter.vue'; +import reservationView from './reservation.vue'; + export default { - + components: { callSignFilter, reservationView }, + mounted() { + this.$store.dispatch('fillReservations'); + }, + computed: { + reservations() { + return this.$store.getters.getData; + } + }, + methods: { + filterChanged() { + this.$store.dispatch('fillReservations'); + } + } } </script> diff --git a/resources/js/store.js b/resources/js/store.js index 852ba6b..4ca0dc3 100644 --- a/resources/js/store.js +++ b/resources/js/store.js @@ -47,6 +47,13 @@ export default new Vuex.Store({ }).catch(error => { console.log(error); }); + }, + async fillReservations(context) { + await axios.post('/special-calls/reservations', {'call-sign': this.state.selectedSign}).then(response => { + context.commit('setData', response.data.data); + }).catch(error => { + console.log(error); + }); } } }); -- cgit v1.2.3 From beefc8f1bf67b7dee7d6f072dbb2dcc4e86a6468 Mon Sep 17 00:00:00 2001 From: Mateja <mail@matejamaric.com> Date: Wed, 17 Mar 2021 17:35:39 +0100 Subject: Use `reservations` Vue component. --- resources/views/pages/reservations.blade.php | 94 +--------------------------- 1 file changed, 1 insertion(+), 93 deletions(-) diff --git a/resources/views/pages/reservations.blade.php b/resources/views/pages/reservations.blade.php index addc9a9..475e5d7 100644 --- a/resources/views/pages/reservations.blade.php +++ b/resources/views/pages/reservations.blade.php @@ -4,98 +4,6 @@ @section('navbar', View::make('inc.navbar')) -@section('scripts') - <script src="{{ asset('js/reservations.js') }}"></script> -@endsection - @section('content') -<input type="hidden" name="csrf-token" content="{{ csrf_token() }}"> -<label for="call-sign">Filter by special callsign: </label> -<select id="call-sign"> - <option value="all">All</option> - @if (count($signs) > 0) - @foreach ($signs as $sign) - <option value="{{ $sign->sign }}">{{ $sign->sign }}</option> - @endforeach - @endif -</select> -<div id="notice" class="float-right font-weight-bold"></div> - -<div class="table-responsive mt-2"> - <table id="ajax-table" class="table table-striped table-bordered" style="white-space:nowrap;"><!-- table-hover --> - <thead class="thead-dark"> - <tr> - <th>ID</th> - <th>Approved</th> - <th>Operator Callsign</th> - <th>QSO</th> - <th>From</th> - <th>To</th> - <th>Special Callsign</th> - <th>Frequencies</th> - <th>Modes</th> - <th>Operator Name</th> - <th>Operator Email</th> - <th>Operator Phone</th> - <th>Actions</th> - </tr> - </thead> - <tbody> - </tbody> - </table> -</div> -{{--@if (count($data) > 0)--}} -{{--<div class="table-responsive">--}} - {{--<table class="table table-striped table-bordered" style="white-space:nowrap;"><!-- table-hover -->--}} - {{--<thead class="thead-dark">--}} - {{--<tr>--}} - {{--<th>ID</th>--}} - {{--<th>Approved</th>--}} - {{--<th>Operator Callsign</th>--}} - {{--<th>QSO</th>--}} - {{--<th>From</th>--}} - {{--<th>To</th>--}} - {{--<th>Frequencies</th>--}} - {{--<th>Modes</th>--}} - {{--<th>Special Callsign</th>--}} - {{--<th>Operator Name</th>--}} - {{--<th>Operator Email</th>--}} - {{--<th>Operator Phone</th>--}} - {{--<th>Actions</th>--}} - {{--</tr>--}} - {{--</thead>--}} - {{--<tbody>--}} - {{--@foreach ($data as $row)--}} - {{--<tr>--}} - {{--<td class="align-middle">{{ $row->id }}</td>--}} - {{--@if ($row->approved)--}} - {{--<td class="align-middle"><input type="checkbox" checked></td> --}} - {{--@else--}} - {{--<td class="align-middle"><input type="checkbox"></td> --}} - {{--@endif--}} - {{--<td class="align-middle">{{ $row->operatorCall }}</td>--}} - {{--<td class="align-middle">{{ $row->qso }}</td>--}} - {{--<td class="align-middle">{{ $row->fromTime }}</td>--}} - {{--<td class="align-middle">{{ $row->toTime }}</td>--}} - {{--<td class="align-middle">{{ $row->frequencies }}</td>--}} - {{--<td class="align-middle">{{ $row->modes }}</td>--}} - {{--<td class="align-middle">{{ $row->specialCall }}</td>--}} - {{--<td class="align-middle">{{ $row->operatorName }}</td>--}} - {{--<td class="align-middle">{{ $row->operatorEmail }}</td>--}} - {{--<td class="align-middle">{{ $row->operatorPhone }}</td>--}} - {{--<td>--}} - {{--<button class="btn btn-primary">Update</button>--}} - {{--<button class="btn btn-warning">Restore</button>--}} - {{--<button class="btn btn-danger">Delete</button>--}} - {{--</td>--}} - {{--</tr>--}} - {{--@endforeach--}} - {{--</tbody>--}} - {{--</table>--}} -{{--</div>--}} -{{--@else--}} -{{--<div class="text-center">--}} - {{--<strong>There are currently no reservations.</strong>--}} -{{--</div>--}} -{{--@endif--}} + <reservations-view></reservations-view> @endsection() -- cgit v1.2.3 From 1aa368a4c461ec6a8bcd7695767ceda7b09f7c28 Mon Sep 17 00:00:00 2001 From: Mateja <mail@matejamaric.com> Date: Wed, 17 Mar 2021 17:36:28 +0100 Subject: Small fixes in `reservations.vue` --- resources/js/components/reservation.vue | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/resources/js/components/reservation.vue b/resources/js/components/reservation.vue index 1e04c89..fdc14d1 100644 --- a/resources/js/components/reservation.vue +++ b/resources/js/components/reservation.vue @@ -15,19 +15,19 @@ <td contenteditable="true">{{ reservation.operatorEmail }}</td> <td contenteditable="true">{{ reservation.operatorCall }}</td> <td> - <button class="btn btn-primary mr-2">Update</button>; - <button class="btn btn-warning mr-2">Restore</button>; - <button class="btn btn-danger">Delete</button>; + <button class="btn btn-primary mr-2">Update</button> + <button class="btn btn-warning mr-2">Restore</button> + <button class="btn btn-danger">Delete</button> </td> </tr> </template> <script> export default { - props: ['reservationIndex'], + props: [ 'reservationIndex' ], computed: { reservation() { - return this.$store.getters.getData[reservationIndex]; + return this.$store.getters.getData[this.reservationIndex]; } } } -- cgit v1.2.3 From 1bbc94a7e39a1ca84d8aee2d10d942375ca3f264 Mon Sep 17 00:00:00 2001 From: Mateja <mail@matejamaric.com> Date: Wed, 17 Mar 2021 20:15:58 +0100 Subject: Stopped using `contenteditable` in `reservation.vue` --- resources/js/components/reservation.vue | 35 +++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/resources/js/components/reservation.vue b/resources/js/components/reservation.vue index fdc14d1..fbb5fdc 100644 --- a/resources/js/components/reservation.vue +++ b/resources/js/components/reservation.vue @@ -1,20 +1,20 @@ <template> <tr> - <td>{{ reservation.id }}</td> - <td> + <td class="align-middle text-center">{{ reservation.id }}</td> + <td class="align-middle text-center"> <input type="checkbox" :checked="reservation.approved"/> </td> - <td contenteditable="true">{{ reservation.operatorCall }}</td> - <td contenteditable="true">{{ reservation.qso }}</td> - <td contenteditable="true">{{ reservation.fromTime }}</td> - <td contenteditable="true">{{ reservation.toTime }}</td> - <td contenteditable="true">{{ reservation.specialCall }}</td> - <td contenteditable="true">{{ reservation.frequencies }}</td> - <td contenteditable="true">{{ reservation.modes }}</td> - <td contenteditable="true">{{ reservation.operatorName }}</td> - <td contenteditable="true">{{ reservation.operatorEmail }}</td> - <td contenteditable="true">{{ reservation.operatorCall }}</td> - <td> + <td class="align-middle"><input type="text" v-model="reservation.operatorCall"></td> + <td class="align-middle"><input type="text" v-model="reservation.qso"></td> + <td class="align-middle"><input type="text" v-model="reservation.fromTime"></td> + <td class="align-middle"><input type="text" v-model="reservation.toTime"></td> + <td class="align-middle"><input type="text" v-model="reservation.specialCall"></td> + <td class="align-middle"><input type="text" v-model="reservation.frequencies"></td> + <td class="align-middle"><input type="text" v-model="reservation.modes"></td> + <td class="align-middle"><input type="text" v-model="reservation.operatorName"></td> + <td class="align-middle"><input type="text" v-model="reservation.operatorEmail"></td> + <td class="align-middle"><input type="text" v-model="reservation.operatorCall"></td> + <td class="align-middle"> <button class="btn btn-primary mr-2">Update</button> <button class="btn btn-warning mr-2">Restore</button> <button class="btn btn-danger">Delete</button> @@ -32,3 +32,12 @@ export default { } } </script> + +<style scoped> +input { + background-color: white; + border: 1px solid lightgray; + border-radius: 3px; + padding: 0.2em; +} +</style> -- cgit v1.2.3 From 074bff2e79d91610a936f329ac8f603049c3b334 Mon Sep 17 00:00:00 2001 From: Mateja <mail@matejamaric.com> Date: Thu, 18 Mar 2021 19:37:53 +0100 Subject: Better styling for `reservation.vue` component. --- resources/js/components/reservation.vue | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/resources/js/components/reservation.vue b/resources/js/components/reservation.vue index fbb5fdc..85348bd 100644 --- a/resources/js/components/reservation.vue +++ b/resources/js/components/reservation.vue @@ -1,20 +1,18 @@ <template> <tr> - <td class="align-middle text-center">{{ reservation.id }}</td> - <td class="align-middle text-center"> - <input type="checkbox" :checked="reservation.approved"/> - </td> - <td class="align-middle"><input type="text" v-model="reservation.operatorCall"></td> - <td class="align-middle"><input type="text" v-model="reservation.qso"></td> - <td class="align-middle"><input type="text" v-model="reservation.fromTime"></td> - <td class="align-middle"><input type="text" v-model="reservation.toTime"></td> - <td class="align-middle"><input type="text" v-model="reservation.specialCall"></td> - <td class="align-middle"><input type="text" v-model="reservation.frequencies"></td> - <td class="align-middle"><input type="text" v-model="reservation.modes"></td> - <td class="align-middle"><input type="text" v-model="reservation.operatorName"></td> - <td class="align-middle"><input type="text" v-model="reservation.operatorEmail"></td> - <td class="align-middle"><input type="text" v-model="reservation.operatorCall"></td> - <td class="align-middle"> + <td v-text="reservation.id"></td> + <td><input type="checkbox" :checked="reservation.approved"/></td> + <td><input type="text" v-model="reservation.operatorCall"></td> + <td><input type="text" v-model="reservation.qso"></td> + <td><input type="text" v-model="reservation.fromTime"></td> + <td><input type="text" v-model="reservation.toTime"></td> + <td><input type="text" v-model="reservation.specialCall"></td> + <td><input type="text" v-model="reservation.frequencies"></td> + <td><input type="text" v-model="reservation.modes"></td> + <td><input type="text" v-model="reservation.operatorName"></td> + <td><input type="text" v-model="reservation.operatorEmail"></td> + <td><input type="text" v-model="reservation.operatorCall"></td> + <td> <button class="btn btn-primary mr-2">Update</button> <button class="btn btn-warning mr-2">Restore</button> <button class="btn btn-danger">Delete</button> @@ -34,6 +32,10 @@ export default { </script> <style scoped> +td { + text-align: center; + vertical-align: middle; +} input { background-color: white; border: 1px solid lightgray; -- cgit v1.2.3 From 1306d59960fadbd5637960e60b9a00f547a1aeb9 Mon Sep 17 00:00:00 2001 From: Mateja <mail@matejamaric.com> Date: Fri, 19 Mar 2021 14:16:32 +0100 Subject: Work on `reservation.vue` component: - Use data properties instead of computed properties - Use v-model for checkbox --- resources/js/components/reservation.vue | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/resources/js/components/reservation.vue b/resources/js/components/reservation.vue index 85348bd..aa8b209 100644 --- a/resources/js/components/reservation.vue +++ b/resources/js/components/reservation.vue @@ -1,7 +1,7 @@ <template> <tr> <td v-text="reservation.id"></td> - <td><input type="checkbox" :checked="reservation.approved"/></td> + <td><input type="checkbox" v-model="reservation.approved"/></td> <td><input type="text" v-model="reservation.operatorCall"></td> <td><input type="text" v-model="reservation.qso"></td> <td><input type="text" v-model="reservation.fromTime"></td> @@ -23,9 +23,9 @@ <script> export default { props: [ 'reservationIndex' ], - computed: { - reservation() { - return this.$store.getters.getData[this.reservationIndex]; + data() { + return { + reservation: this.$store.getters.getData[this.reservationIndex] } } } -- cgit v1.2.3 From 2f5e8adb8d310690db54aca55382f4733e337a85 Mon Sep 17 00:00:00 2001 From: Mateja <mail@matejamaric.com> Date: Sat, 20 Mar 2021 19:42:18 +0100 Subject: Better names for Vuex actions and mutations. --- resources/js/components/activities.vue | 4 ++-- resources/js/components/call-sign-description.vue | 2 +- resources/js/components/call-sign-filter.vue | 2 +- resources/js/components/reservations.vue | 4 ++-- resources/js/store.js | 10 +++++----- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/resources/js/components/activities.vue b/resources/js/components/activities.vue index 2f2cf03..dd22c7f 100644 --- a/resources/js/components/activities.vue +++ b/resources/js/components/activities.vue @@ -37,7 +37,7 @@ import callSignFilter from './call-sign-filter.vue'; export default { components: { callSignFilter }, mounted() { - this.$store.dispatch('fillData'); + this.$store.dispatch('pullActivities'); }, computed: { activities() { @@ -46,7 +46,7 @@ export default { }, methods: { filterChanged() { - this.$store.dispatch('fillData'); + this.$store.dispatch('pullActivities'); } } } diff --git a/resources/js/components/call-sign-description.vue b/resources/js/components/call-sign-description.vue index e930176..30cd37d 100644 --- a/resources/js/components/call-sign-description.vue +++ b/resources/js/components/call-sign-description.vue @@ -18,7 +18,7 @@ <script> export default { mounted() { - this.$store.dispatch('fillSigns').then(() => { + this.$store.dispatch('pullSigns').then(() => { try { this.$store.dispatch('setSelectedSign', this.$store.getters.getSigns[0].sign); } diff --git a/resources/js/components/call-sign-filter.vue b/resources/js/components/call-sign-filter.vue index bf554bd..16eaae8 100644 --- a/resources/js/components/call-sign-filter.vue +++ b/resources/js/components/call-sign-filter.vue @@ -11,7 +11,7 @@ <script> export default { mounted() { - this.$store.dispatch('fillSigns'); + this.$store.dispatch('pullSigns'); }, computed: { selected: { diff --git a/resources/js/components/reservations.vue b/resources/js/components/reservations.vue index 278dfa4..8849474 100644 --- a/resources/js/components/reservations.vue +++ b/resources/js/components/reservations.vue @@ -38,7 +38,7 @@ import reservationView from './reservation.vue'; export default { components: { callSignFilter, reservationView }, mounted() { - this.$store.dispatch('fillReservations'); + this.$store.dispatch('pullReservations'); }, computed: { reservations() { @@ -47,7 +47,7 @@ export default { }, methods: { filterChanged() { - this.$store.dispatch('fillReservations'); + this.$store.dispatch('pullReservations'); } } } diff --git a/resources/js/store.js b/resources/js/store.js index 4ca0dc3..345b866 100644 --- a/resources/js/store.js +++ b/resources/js/store.js @@ -23,7 +23,7 @@ export default new Vuex.Store({ setSelectedSign(state, sign) { state.selectedSign = sign; }, - fillSigns(state, signs) { + setSigns(state, signs) { state.callSigns = signs; }, setData(state, data) { @@ -34,21 +34,21 @@ export default new Vuex.Store({ setSelectedSign(context, sign) { context.commit('setSelectedSign', sign); }, - async fillSigns(context) { + async pullSigns(context) { await axios.get('/special-calls/show').then(response => { - context.commit('fillSigns', response.data); + context.commit('setSigns', response.data); }).catch(error => { console.log(error); }); }, - async fillData(context) { + async pullActivities(context) { await axios.post('/api/activities', {'call-sign': this.state.selectedSign}).then(response => { context.commit('setData', response.data.data); }).catch(error => { console.log(error); }); }, - async fillReservations(context) { + async pullReservations(context) { await axios.post('/special-calls/reservations', {'call-sign': this.state.selectedSign}).then(response => { context.commit('setData', response.data.data); }).catch(error => { -- cgit v1.2.3 From 5a30e103893c05d138a80ed18d65a948aea973e6 Mon Sep 17 00:00:00 2001 From: Mateja <mail@matejamaric.com> Date: Sat, 20 Mar 2021 20:33:17 +0100 Subject: Fix operatorPhone and add click methods. --- resources/js/components/reservation.vue | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/resources/js/components/reservation.vue b/resources/js/components/reservation.vue index aa8b209..d733c9d 100644 --- a/resources/js/components/reservation.vue +++ b/resources/js/components/reservation.vue @@ -11,11 +11,11 @@ <td><input type="text" v-model="reservation.modes"></td> <td><input type="text" v-model="reservation.operatorName"></td> <td><input type="text" v-model="reservation.operatorEmail"></td> - <td><input type="text" v-model="reservation.operatorCall"></td> + <td><input type="text" v-model="reservation.operatorPhone"></td> <td> - <button class="btn btn-primary mr-2">Update</button> - <button class="btn btn-warning mr-2">Restore</button> - <button class="btn btn-danger">Delete</button> + <button class="btn btn-primary mr-2" @click="updateRow">Update</button> + <button class="btn btn-warning mr-2" @click="restoreRow">Restore</button> + <button class="btn btn-danger" @click="deleteRow">Delete</button> </td> </tr> </template> @@ -27,6 +27,17 @@ export default { return { reservation: this.$store.getters.getData[this.reservationIndex] } + }, + methods: { + updateRow() { + + }, + restoreRow() { + + }, + deleteRow() { + + } } } </script> -- cgit v1.2.3 From 09ee04d39911f169457567c869d732a11387651a Mon Sep 17 00:00:00 2001 From: Mateja <mail@matejamaric.com> Date: Sat, 20 Mar 2021 22:47:33 +0100 Subject: Use Lodash cloneDeep for `reservation.vue` component. --- resources/js/components/reservation.vue | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/resources/js/components/reservation.vue b/resources/js/components/reservation.vue index d733c9d..5389e1a 100644 --- a/resources/js/components/reservation.vue +++ b/resources/js/components/reservation.vue @@ -25,15 +25,18 @@ export default { props: [ 'reservationIndex' ], data() { return { - reservation: this.$store.getters.getData[this.reservationIndex] + reservation: {} } }, + mounted() { + this.reservation = _.cloneDeep(this.$store.getters.getData[this.reservationIndex]); + }, methods: { updateRow() { }, restoreRow() { - + this.reservation = _.cloneDeep(this.$store.getters.getData[this.reservationIndex]); }, deleteRow() { -- cgit v1.2.3 From 2809ccf7272d4b77c5eb3f3d6599143dc4678d70 Mon Sep 17 00:00:00 2001 From: Mateja <mail@matejamaric.com> Date: Sun, 21 Mar 2021 18:05:38 +0100 Subject: Work on `reservation.vue` component. - Move Lodash cloneDeep to Vuex store. --- resources/js/components/reservation.vue | 14 +++++++------- resources/js/store.js | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/resources/js/components/reservation.vue b/resources/js/components/reservation.vue index 5389e1a..ec430ab 100644 --- a/resources/js/components/reservation.vue +++ b/resources/js/components/reservation.vue @@ -25,21 +25,21 @@ export default { props: [ 'reservationIndex' ], data() { return { - reservation: {} + reservation: this.$store.getters.getDataRow(this.reservationIndex) } }, - mounted() { - this.reservation = _.cloneDeep(this.$store.getters.getData[this.reservationIndex]); - }, methods: { updateRow() { - + this.$store.dispatch('pushReservation', { + index: this.reservationIndex, + reservation: this.reservation + }); }, restoreRow() { - this.reservation = _.cloneDeep(this.$store.getters.getData[this.reservationIndex]); + this.reservation = this.$store.getters.getDataRow(this.reservationIndex); }, deleteRow() { - + this.$store.dispatch('removeReservation', this.reservationIndex); } } } diff --git a/resources/js/store.js b/resources/js/store.js index 345b866..e0c4383 100644 --- a/resources/js/store.js +++ b/resources/js/store.js @@ -17,6 +17,9 @@ export default new Vuex.Store({ }, getData(state) { return state.data; + }, + getDataRow(state) { + return (index) => _.cloneDeep(state.data[index]); } }, mutations: { @@ -28,6 +31,12 @@ export default new Vuex.Store({ }, setData(state, data) { state.data = data; + }, + setDataRow(state, row) { + state.data[row.index] = _.cloneDeep(row.data); + }, + removeDataRow(state, index) { + state.data.splice(index, 1); } }, actions: { @@ -54,6 +63,15 @@ export default new Vuex.Store({ }).catch(error => { console.log(error); }); + }, + async pushReservation(context, data) { + context.commit('setDataRow', { + index: data.index, + data: data.reservation + }); + }, + async removeReservation(context, index) { + context.commit('removeDataRow', index); } } }); -- cgit v1.2.3 From 668b6005f0ce55f1c9c8d2cdcdf48903d6207dc7 Mon Sep 17 00:00:00 2001 From: Mateja <mail@matejamaric.com> Date: Sun, 21 Mar 2021 19:44:08 +0100 Subject: api: update and delete reservations --- resources/js/store.js | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/resources/js/store.js b/resources/js/store.js index e0c4383..117db93 100644 --- a/resources/js/store.js +++ b/resources/js/store.js @@ -65,13 +65,32 @@ export default new Vuex.Store({ }); }, async pushReservation(context, data) { - context.commit('setDataRow', { - index: data.index, - data: data.reservation + await axios.post('/api/reservations', { + action: 'update', + ...data.reservation + }).then(() => { + context.commit('setDataRow', { + index: data.index, + data: data.reservation + }); + }).catch(error => { + console.log(error); + alert("Couldn't update reservation! Bad data!"); }); }, async removeReservation(context, index) { - context.commit('removeDataRow', index); + let data = { + action: 'delete', + ...this.state.data[index] + }; + if (confirm(`Are you sure you want to delete reservation #${data.id} made by ${data.operatorCall}?`) === true) { + await axios.post('/api/reservations', data).then(() => { + context.commit('removeDataRow', index); + }).catch(error => { + console.log(error); + alert('Unable to remove reservation!'); + }); + } } } }); -- cgit v1.2.3 From ce6dbf4d6f1340a02899faa3c4984b3493270ce8 Mon Sep 17 00:00:00 2001 From: Mateja <mail@matejamaric.com> Date: Sun, 21 Mar 2021 20:31:12 +0100 Subject: Limit reservations table height to fit on desktop screens. --- resources/js/components/reservations.vue | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/resources/js/components/reservations.vue b/resources/js/components/reservations.vue index 8849474..0c420b8 100644 --- a/resources/js/components/reservations.vue +++ b/resources/js/components/reservations.vue @@ -52,3 +52,11 @@ export default { } } </script> + +<style scoped> +@media only screen and (min-width:961px) { + .table-responsive { + max-height: 80vh; + } +} +</style> -- cgit v1.2.3 From 3d4617bac822b54c04eb2f19509aa77e8c7a3bfd Mon Sep 17 00:00:00 2001 From: Mateja <mail@matejamaric.com> Date: Sun, 21 Mar 2021 21:18:09 +0100 Subject: Add descriptions to activities call sign filter. --- resources/js/components/activities.vue | 2 +- resources/js/components/call-sign-filter.vue | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/resources/js/components/activities.vue b/resources/js/components/activities.vue index dd22c7f..1b1057c 100644 --- a/resources/js/components/activities.vue +++ b/resources/js/components/activities.vue @@ -1,6 +1,6 @@ <template> <div> - <call-sign-filter @sign-changed="filterChanged()"></call-sign-filter> + <call-sign-filter :showDescriptions="true" @sign-changed="filterChanged()"></call-sign-filter> <div class="table-responsive mt-2"> <table class="table table-striped table-bordered" style="white-space:nowrap;"> diff --git a/resources/js/components/call-sign-filter.vue b/resources/js/components/call-sign-filter.vue index 16eaae8..0ba8b4d 100644 --- a/resources/js/components/call-sign-filter.vue +++ b/resources/js/components/call-sign-filter.vue @@ -5,11 +5,18 @@ <option value="all">All</option> <option v-for="option in options" :key="option.id" :value="option.sign" v-text="option.sign"></option> </select> + + <div class="card mb-3" v-if="showDescriptions && (selected !== 'all')"> + <div class="card-body pb-1"> + <div class="card-text" v-html="description"></div> + </div> + </div> </div> </template> <script> export default { + props: ['showDescriptions'], mounted() { this.$store.dispatch('pullSigns'); }, @@ -25,6 +32,12 @@ export default { }, options() { return this.$store.getters.getSigns; + }, + description() { + for (let i = 0; i < this.options.length; i++) + if (this.options[i].sign === this.selected) + return this.options[i].description; + return ''; } } } -- cgit v1.2.3 From 4826b8d444db4f95baeead504fb816e7322ff026 Mon Sep 17 00:00:00 2001 From: Mateja <mail@matejamaric.com> Date: Sun, 21 Mar 2021 23:11:56 +0100 Subject: Add error handling to `call-sign-description.vue` component. --- resources/js/components/call-sign-description.vue | 10 ++++++++-- resources/views/pages/reserve.blade.php | 23 +++-------------------- 2 files changed, 11 insertions(+), 22 deletions(-) diff --git a/resources/js/components/call-sign-description.vue b/resources/js/components/call-sign-description.vue index 30cd37d..7ab8b64 100644 --- a/resources/js/components/call-sign-description.vue +++ b/resources/js/components/call-sign-description.vue @@ -2,7 +2,7 @@ <div> <div class="form-group"> <label for="special-call">Special Callsign:</label> - <select class="form-control" id="special-call" v-model="selected" name="scall" required> + <select class="form-control" :class="{ 'is-invalid': isInvalid }" id="special-call" v-model="selected" :name="name" required> <option v-for="option in options" :key="option.id" :value="option.sign" v-text="option.sign"></option> </select> </div> @@ -17,10 +17,16 @@ <script> export default { + props: [ 'name', 'old', 'isInvalid' ], mounted() { this.$store.dispatch('pullSigns').then(() => { try { - this.$store.dispatch('setSelectedSign', this.$store.getters.getSigns[0].sign); + if (this.old) { + this.$store.dispatch('setSelectedSign', this.old); + } + else { + this.$store.dispatch('setSelectedSign', this.$store.getters.getSigns[0].sign); + } } catch { console.log('No call signs!'); diff --git a/resources/views/pages/reserve.blade.php b/resources/views/pages/reserve.blade.php index d0253df..17cab9a 100644 --- a/resources/views/pages/reserve.blade.php +++ b/resources/views/pages/reserve.blade.php @@ -18,29 +18,13 @@ <form action="{{ route('reserve') }}" method="POST"> @csrf - <call-sign-description></call-sign-description> + <!-- SPECIAL CALL --> + <call-sign-description name="scall" old="{{ old('scall') }}" @error('scall') is-invalid="true" @enderror > + </call-sign-description> @error('scall') <div class="alert alert-danger mt-2">{{ $message }}</div> @enderror - {{--<!-- SPECIAL CALL -->--}} -{{--<div class="form-group">--}} - {{--<label for="special-call">Special Callsign:</label>--}} - {{--<select class="form-control @error('scall') is-invalid @enderror" id="special-call" name="scall" required>--}} - {{--@foreach ($signs as $sign)--}} - {{--<option value="{{ $sign->sign }}" {{ old('scall') == $sign->sign ? 'selected' : '' }}>{{ $sign->sign }}</option>--}} - {{--@endforeach--}} - {{--</select> --}} - {{--@error('scall')--}} - {{--<div class="alert alert-danger mt-2">{{ $message }}</div>--}} - {{--@enderror--}} -{{--</div>--}} - -{{--<div class="card mb-3">--}} - {{--<div class="card-body pb-1">--}} - {{--<div class="card-text" id="call-desc"></div>--}} - {{--</div>--}} -{{--</div>--}} @error('time') <div class="alert alert-danger mt-2">{{ $message }}</div> @@ -169,5 +153,4 @@ format: 'H:i' }); </script> - {{--<script src="{{ asset('js/reserve.js') }}"></script>--}} @endsection -- cgit v1.2.3 From f7b6e0c04ae8c4b750e1e95e0119226a5d8abdd6 Mon Sep 17 00:00:00 2001 From: Mateja <mail@matejamaric.com> Date: Sun, 21 Mar 2021 23:16:59 +0100 Subject: Remove old and unused jQuery JavaScript files. --- public/js/activities.js | 49 ------------------- public/js/reservations.js | 119 ---------------------------------------------- public/js/reserve.js | 9 ---- 3 files changed, 177 deletions(-) delete mode 100644 public/js/activities.js delete mode 100644 public/js/reservations.js delete mode 100644 public/js/reserve.js diff --git a/public/js/activities.js b/public/js/activities.js deleted file mode 100644 index eacf4d3..0000000 --- a/public/js/activities.js +++ /dev/null @@ -1,49 +0,0 @@ -$.ajaxSetup({ - headers: { - 'X-CSRF-TOKEN': $('input[name="csrf-token"]').attr('content') - } -}); - -jQuery('select#call-sign').change(fillTable); -jQuery(document).ready(fillTable); - -function fillTable() { - tableData = jQuery('table#ajax-table>tbody').first(); - tableData.html('<tr><td class="font-weight-bold text-center" colspan="7">Loading...</td></tr>'); - - sign = jQuery('select#call-sign').first().val(); - - descDiv = jQuery('div#sign-desc-div'); - if (sign === 'all') { - descDiv.empty(); - } else { - jQuery.get('/special-calls/show/' + sign, function (data, status) { - descDiv.html('<div class="card mt-1"><div class="card-body pb-1">' + data + '</div></div>'); - console.log(data); - }); - } - - jQuery.post('/api/activities', {'call-sign': sign}, function (data, status) { - if (status === 'success') { - if (data.data.length > 0) { - tableData.empty(); - for (i = 0, len = data.data.length; i < len; i++) { - tr = '<tr><td>' + data.data[i].operatorCall + '</td>' + - '<td>' + data.data[i].fromTime + '</td>' + - '<td>' + data.data[i].toTime + '</td>' + - '<td>' + data.data[i].specialCall + '</td>' + - '<td>' + data.data[i].frequencies + '</td>' + - '<td>' + data.data[i].modes + '</td>' + - '<td>' + data.data[i].qso + '</td></tr>'; - tableData.append(tr); - } - } - else { - tableData.html('<tr><td class="font-weight-bold text-center" colspan="6">No data...</td></tr>'); - } - } - else { - tableData.html('<tr><td class="font-weight-bold text-center" colspan="6">Error!</td></tr>'); - } - }); -} diff --git a/public/js/reservations.js b/public/js/reservations.js deleted file mode 100644 index bc9c6de..0000000 --- a/public/js/reservations.js +++ /dev/null @@ -1,119 +0,0 @@ -$.ajaxSetup({ - headers: { - 'X-CSRF-TOKEN': $('input[name="csrf-token"]').attr('content') - } -}); - -jQuery('select#call-sign').change(fillTable); -jQuery(document).ready(fillTable); - -function fillTable() { - tableData = jQuery('table#ajax-table>tbody').first(); - tableData.html('<tr><td class="font-weight-bold text-center" colspan="13">Loading...</td></tr>'); - - sign = jQuery('select#call-sign').first().val(); - - jQuery.post('/special-calls/reservations', {'call-sign': sign}, function (data, status) { - if (status === 'success') { - if (data.data.length > 0) { - tableData.empty(); - for (i = 0, len = data.data.length; i < len; i++) { - tr = '<tr>'; - tr += '<td>' + data.data[i].id + '</td>'; - if (data.data[i].approved === 1) - tr += '<td class="text-center"><input type="checkbox" checked></td>'; - else - tr += '<td class="text-center"><input type="checkbox"></td>'; - - tr += - '<td contenteditable="true">' + data.data[i].operatorCall + '</td>' + - '<td contenteditable="true">' + data.data[i].qso + '</td>' + - '<td contenteditable="true">' + data.data[i].fromTime + '</td>' + - '<td contenteditable="true">' + data.data[i].toTime + '</td>' + - '<td contenteditable="true">' + data.data[i].specialCall + '</td>' + - '<td contenteditable="true">' + data.data[i].frequencies + '</td>' + - '<td contenteditable="true">' + data.data[i].modes + '</td>' + - '<td contenteditable="true">' + data.data[i].operatorName + '</td>' + - '<td contenteditable="true">' + data.data[i].operatorEmail + '</td>' + - '<td contenteditable="true">' + data.data[i].operatorPhone + '</td>'; - tr += '<td>'; - tr += "<button class=\"btn btn-primary mr-2\" onclick=\"btnAction('update', this)\">Update</button>"; - tr += "<button class=\"btn btn-warning mr-2\" onclick=\"btnAction('restore', this)\">Restore</button>"; - tr += "<button class=\"btn btn-danger\" onclick=\"btnAction('delete', this)\">Delete</button>"; - tr += '</td>'; - tr += '</tr>'; - tableData.append(tr); - } - } - else { - tableData.html('<tr><td class="font-weight-bold text-center" colspan="13">No data...</td></tr>'); - } - } - else { - tableData.html('<tr><td class="font-weight-bold text-center" colspan="13">Error!</td></tr>'); - } - }); -} - -function btnAction(action, btn) { - trDom = btn.parentElement.parentElement; - trData = trDom.children; - - actionData = { - action: action, - id: trData[0].innerText, - approved: trData[1].firstElementChild.checked, - operatorCall: trData[2].innerText, - qso: trData[3].innerText, - fromTime: trData[4].innerText, - toTime: trData[5].innerText, - specialCall: trData[6].innerText, - frequencies: trData[7].innerText, - modes: trData[8].innerText, - operatorName: trData[9].innerText, - operatorEmail: trData[10].innerText, - operatorPhone: trData[11].innerText - }; - - if (actionData.action == 'delete') { - if (confirm("Are you sure you want to delete reservation #" + actionData.id + " made by " + actionData.operatorCall + "?") === true) - trDom.remove(); - else return; - } - - jQuery.post('/api/reservations', actionData, function (response, status) { - if (status === 'success') { - try { - // Handle various actions - if (response.action == "update") { - jQuery('#notice').html("Record #" + actionData.id + " updated."); - } else if (response.action == "restore") { - trData[1].firstElementChild.checked = response.approved == 1; - trData[2].innerText = response.operatorCall; - trData[3].innerText = response.qso; - trData[4].innerText = response.fromTime; - trData[5].innerText = response.toTime; - trData[6].innerText = response.specialCall; - trData[7].innerText = response.frequencies; - trData[8].innerText = response.modes; - trData[9].innerText = response.operatorName; - trData[10].innerText = response.operatorEmail; - trData[11].innerText = response.operatorPhone; - jQuery('#notice').html("Record's #" + actionData.id + " data restored."); - } else if (response.action == "delete") { - jQuery('#notice').html("Record #" + actionData.id + " deleted."); - } else { - console.log("No action?"); - //console.log(data); - } - } catch { - //console.log(data); - alert("Bad input data!"); - } - } - else { - console.log('AJAX error'); - alert("Bad input data!"); - } - }); -} diff --git a/public/js/reserve.js b/public/js/reserve.js deleted file mode 100644 index 7a20c37..0000000 --- a/public/js/reserve.js +++ /dev/null @@ -1,9 +0,0 @@ -jQuery('select#special-call').change(setCallDesc); -jQuery(document).ready(setCallDesc); - -function setCallDesc() { - sign = jQuery('select#special-call').first().val(); - jQuery.get('/special-calls/show/' + sign, function (data, status) { - jQuery('div#call-desc').html(data); - }); -} -- cgit v1.2.3 From db976a9fb0434df0095ea9f1b8858213d57e7535 Mon Sep 17 00:00:00 2001 From: Mateja <mail@matejamaric.com> Date: Mon, 22 Mar 2021 14:35:48 +0100 Subject: Remove unneeded imports. --- resources/js/app.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/resources/js/app.js b/resources/js/app.js index 4fe6208..b5fbbbf 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -4,11 +4,9 @@ import Vue from 'vue'; import store from './store.js'; -import callSignFilter from './components/call-sign-filter.vue'; import callSignDescription from './components/call-sign-description.vue'; import activitiesView from './components/activities.vue'; -import reservationView from './components/reservation.vue'; import reservationsView from './components/reservations.vue'; new Vue({ @@ -16,9 +14,7 @@ new Vue({ store, components: { callSignDescription, - callSignFilter, activitiesView, - reservationView, reservationsView } }); -- cgit v1.2.3