From 0c89550dfe89c43364e99fc0db7937174d88dcea Mon Sep 17 00:00:00 2001 From: Romulus21 Date: Fri, 24 Apr 2020 08:10:54 +0200 Subject: [PATCH 1/8] first work on to do orders --- app/Http/Controllers/ToDoController.php | 14 ++ app/Http/Resources/ToDo.php | 2 +- app/Models/ToDoList.php | 2 +- database/factories/ToDoItemFactory.php | 16 +++ .../2020_04_19_190733_create_to_dos_table.php | 2 +- tests/Feature/ToDoItemsTest.php | 132 +++++++++++++++++- 6 files changed, 163 insertions(+), 5 deletions(-) create mode 100644 database/factories/ToDoItemFactory.php diff --git a/app/Http/Controllers/ToDoController.php b/app/Http/Controllers/ToDoController.php index 9b3f6a6..892e151 100644 --- a/app/Http/Controllers/ToDoController.php +++ b/app/Http/Controllers/ToDoController.php @@ -14,6 +14,10 @@ class ToDoController extends Controller { $this->authorize('create', ToDoList::class); + $lastToDo = $toDoList->toDos()->orderBy('order', 'desc')->first(); + + request()['order'] = ($lastToDo) ? $lastToDo->order + 1 : 1; + $toDo = $toDoList->toDos()->create($this->validateData()); return (new ToDoResource($toDo)) @@ -32,10 +36,20 @@ class ToDoController extends Controller ->setStatusCode(200); } + public function destroy(ToDoList $toDoList, ToDo $toDo) + { + $this->authorize('delete', $toDoList); + + $toDo->delete(); + + return response([], 204); + } + private function validateData() { return request()->validate([ 'name' => 'required', + 'order' => 'integer|min:1|max:1000000' ]); } } diff --git a/app/Http/Resources/ToDo.php b/app/Http/Resources/ToDo.php index 6341a48..0fbf4c0 100644 --- a/app/Http/Resources/ToDo.php +++ b/app/Http/Resources/ToDo.php @@ -21,7 +21,7 @@ class ToDo extends JsonResource 'attributes' => [ 'data' => [ 'name' => $this->name, - 'order' => $this->order, + 'order' => (int) $this->order, 'checked_at' => optional($this->checked_at)->diffForHumans(), 'last_updated' => $this->updated_at->diffForHumans(), ] diff --git a/app/Models/ToDoList.php b/app/Models/ToDoList.php index c258cbc..e2cbb44 100644 --- a/app/Models/ToDoList.php +++ b/app/Models/ToDoList.php @@ -16,7 +16,7 @@ class ToDoList extends Model return '/to-do-lists/' . $this->id; } - public function users(): BelongsTo + public function author(): BelongsTo { return $this->belongsTo(User::class); } diff --git a/database/factories/ToDoItemFactory.php b/database/factories/ToDoItemFactory.php new file mode 100644 index 0000000..6a3e32a --- /dev/null +++ b/database/factories/ToDoItemFactory.php @@ -0,0 +1,16 @@ +define(ToDo::class, function (Faker $faker) { + $toDoList = factory(\App\Models\ToDoList::class); + return [ + 'to_do_list_id' => $toDoList, + 'name' => $faker->words(3, [false]), + // 'order' => $toDoList->toDos->orderBy('id', 'desc')->first()->order + 1, +// 'checket_at' => now(), + ]; +}); diff --git a/database/migrations/2020_04_19_190733_create_to_dos_table.php b/database/migrations/2020_04_19_190733_create_to_dos_table.php index 75061c7..caf9e56 100644 --- a/database/migrations/2020_04_19_190733_create_to_dos_table.php +++ b/database/migrations/2020_04_19_190733_create_to_dos_table.php @@ -17,7 +17,7 @@ class CreateToDosTable extends Migration $table->id(); $table->unsignedBigInteger('to_do_list_id'); $table->string('name'); - $table->integer('order')->default(0); + $table->integer('order')->default(1); $table->timestamp('checked_at')->nullable(); $table->timestamps(); }); diff --git a/tests/Feature/ToDoItemsTest.php b/tests/Feature/ToDoItemsTest.php index 9a1069c..7a93107 100644 --- a/tests/Feature/ToDoItemsTest.php +++ b/tests/Feature/ToDoItemsTest.php @@ -34,7 +34,7 @@ class ToDoItemsTest extends TestCase 'attributes' => [ 'data' => [ 'name' => $toDo->name, - 'order' => 0, + 'order' => 1, ] ], ], @@ -78,6 +78,11 @@ class ToDoItemsTest extends TestCase [ 'data' => [ 'to_do_id' => $toDoList->toDos[0]->id, + 'attributes' => [ + 'data' => [ + 'name' => $toDoList->toDos[0]->name, + ] + ] ] ] ], @@ -89,6 +94,87 @@ class ToDoItemsTest extends TestCase ]); } + /** @test */ + public function a_new_to_do_must_have_order_of_the_previous_to_do() + { + $this->actingAs($user = factory(User::class)->create(), 'api'); + $toDoList = factory(ToDoList::class)->create(['id' => 123, 'user_id' => $user->id]); + $toDo = factory(ToDo::class)->create(['to_do_list_id' => 123]); + + $response = $this->post('/api/to-do-lists/123/to-do', [ + 'name' => 'New To Do' + ])->assertStatus(201); + + $toDo = ToDo::first(); + $newToDo = ToDo::orderBy('id', 'desc')->first(); + + $this->assertEquals('New To Do', $newToDo->name); + $this->assertEquals($toDo->order + 1, $newToDo->order); + } + + /** @test */ + public function a_second_to_do_as_next_order_of_list() + { + $this->actingAs($user = factory(User::class)->create(), 'api'); + $toDoList = factory(ToDoList::class)->create(['id' => 123, 'user_id' => $user->id]); + $this->post('/api/to-do-lists/123/to-do', ['name' => 'Test name to do']); + $this->post('/api/to-do-lists/123/to-do', ['name' => 'Test 2 name to do']); + $this->post('/api/to-do-lists/123/to-do', ['name' => 'Test 3 name to do']); + + $response = $this->get('/api/to-do-lists/' . $toDoList->id ); + + $response->assertJson([ + 'data' => [ + 'to_do_list_id' => $toDoList->id, + 'attributes' => [ + 'data' => [ + 'name' => $toDoList->name, + 'last_updated' => $toDoList->updated_at->diffForHumans(), + 'to_dos' => [ + 'data' => [ + [ + 'data' => [ + 'to_do_id' => $toDoList->toDos[0]->id, + 'attributes' => [ + 'data' => [ + 'name' => $toDoList->toDos[0]->name, + 'order' => 1, + ] + ] + ], + + ], + [ + 'data' => [ + 'to_do_id' => $toDoList->toDos[1]->id, + 'attributes' => [ + 'data' => [ + 'name' => $toDoList->toDos[1]->name, + 'order' => 2, + ] + ] + ] + ], + [ + 'data' => [ + 'to_do_id' => $toDoList->toDos[2]->id, + 'attributes' => [ + 'data' => [ + 'name' => $toDoList->toDos[2]->name, + 'order' => 3, + ] + ] + ] + ] + ], + 'to_dos_count' => 3, + ] + ] + ], + ] + ]); + } + /** @test */ public function a_to_do_can_be_patch() { @@ -101,7 +187,6 @@ class ToDoItemsTest extends TestCase ]); $toDoList = $toDoList->fresh(); -// $toDoList = ToDoList::first(); $response = $this->patch('/api/to-do-lists/123/to-do/'. $toDoList->toDos[0]->id, [ 'name' => 'To Do update' @@ -121,4 +206,47 @@ class ToDoItemsTest extends TestCase ] ]); } + + /** @test */ + public function only_the_owner_can_patch_the_to_do() + { + $user = factory(User::class)->create(); + $toDoList = factory(ToDoList::class)->create(['id' => 123, 'user_id' => $user->id]); + $toDo = factory(ToDo::class)->create(['to_do_list_id' => 123, 'name' => 'Test name to do']); + + $this->actingAs($anotherUser = factory(User::class)->create(), 'api'); + + $this->patch('/api/to-do-lists/'. $toDoList->id .'/to-do/'. $toDoList->toDos[0]->id, ['name' => 'Name changed']) + ->assertStatus(403); + } + + /** @test */ + public function a_to_do_list_can_be_delete() + { + $this->withoutExceptionHandling(); + $this->actingAs($user = factory(User::class)->create(), 'api'); + + $toDoList = factory(ToDoList::class)->create(['user_id' => $user->id]); + $toDo = factory(ToDo::class)->create(['to_do_list_id' => $toDoList->id]); + + $response = $this->delete('/api/to-do-lists/'. $toDoList->id . '/to-do/' . $toDo->id); + + $this->assertCount(0, ToDo::all()); + + $response->assertStatus(204); + } + + /** @test */ + public function only_the_owner_can_delete_the_to_do_list() + { + $user = factory(User::class)->create(); + $toDoList = factory(ToDoList::class)->create(['user_id' => $user->id]); + $toDo = factory(ToDo::class)->create(['to_do_list_id' => $toDoList->id]); + + $this->actingAs($anotherUser = factory(User::class)->create(), 'api'); + + $response = $this->delete('/api/to-do-lists/'. $toDoList->id . '/to-do/' . $toDo->id); + + $response->assertStatus(403); + } } From 3dc00ec768ae7a576eeed3252a20e8f142d9c8ef Mon Sep 17 00:00:00 2001 From: Romulus21 Date: Fri, 24 Apr 2020 23:03:12 +0200 Subject: [PATCH 2/8] toDo change order --- app/Http/Controllers/ToDoController.php | 16 ++++++++++++- public/js/app.js.LICENSE.txt | 22 ------------------ routes/api.php | 1 + tests/Feature/ToDoItemsTest.php | 30 +++++++++++++++++++++++++ 4 files changed, 46 insertions(+), 23 deletions(-) delete mode 100644 public/js/app.js.LICENSE.txt diff --git a/app/Http/Controllers/ToDoController.php b/app/Http/Controllers/ToDoController.php index 892e151..719236d 100644 --- a/app/Http/Controllers/ToDoController.php +++ b/app/Http/Controllers/ToDoController.php @@ -45,11 +45,25 @@ class ToDoController extends Controller return response([], 204); } + public function changeOrder(ToDoList $toDoList, ToDo $toDo) + { + $this->authorize('update', $toDoList); + + $toDoChanged = $toDoList->toDos()->where('order', (int) request()['new-order'])->first(); + + $toDoChanged->update(['order' => (int) $toDo->order]); + $toDo->update(['order' => (int) request()['new-order']]); + + return (new ToDoResource($toDo)) + ->response() + ->setStatusCode(200); + } + private function validateData() { return request()->validate([ 'name' => 'required', - 'order' => 'integer|min:1|max:1000000' + 'order' => 'integer|min:1|max:1000000', ]); } } diff --git a/public/js/app.js.LICENSE.txt b/public/js/app.js.LICENSE.txt deleted file mode 100644 index 26358a1..0000000 --- a/public/js/app.js.LICENSE.txt +++ /dev/null @@ -1,22 +0,0 @@ -/*! - * Vue.js v2.6.11 - * (c) 2014-2019 Evan You - * Released under the MIT License. - */ - -/*! https://mths.be/punycode v1.4.1 by @mathias */ - -/** - * @license - * Lodash - * Copyright OpenJS Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */ - -/** - * vuex v3.1.3 - * (c) 2020 Evan You - * @license MIT - */ diff --git a/routes/api.php b/routes/api.php index cb7b5bd..f248b77 100644 --- a/routes/api.php +++ b/routes/api.php @@ -31,5 +31,6 @@ Route::middleware('auth:api')->group(function () { Route::post('/images/users/{users}', 'ImageController@users'); Route::post('/images/memos/{memo}', 'ImageController@memos'); + Route::patch('/to-do-lists/{toDoList}/to-do/{toDo}/change', 'ToDoController@changeOrder'); }); diff --git a/tests/Feature/ToDoItemsTest.php b/tests/Feature/ToDoItemsTest.php index 7a93107..f114a3e 100644 --- a/tests/Feature/ToDoItemsTest.php +++ b/tests/Feature/ToDoItemsTest.php @@ -220,6 +220,36 @@ class ToDoItemsTest extends TestCase ->assertStatus(403); } + /** @test */ + public function a_to_do_can_changer_of_order() + { + $this->withoutExceptionHandling(); + $this->actingAs($user = factory(User::class)->create(), 'api'); + $toDoList = factory(ToDoList::class)->create(['id' => 123, 'user_id' => $user->id]); + $this->post('/api/to-do-lists/123/to-do', ['name' => 'Test name to do']); + $toDoReplaced = $this->post('/api/to-do-lists/123/to-do', ['name' => 'Test 2 name to do']); + $this->post('/api/to-do-lists/123/to-do', ['name' => 'Test 3 name to do']); + $this->post('/api/to-do-lists/123/to-do', ['name' => 'Test 4 name to do']); + $todoMove = $this->post('/api/to-do-lists/123/to-do', ['name' => 'Test 5 name to do']); + + + $response = $this->patch('/api/to-do-lists/'. $toDoList->id .'/to-do/'. $todoMove['data']['to_do_id'] .'/change', ['new-order' => $toDoReplaced['data']['attributes']['data']['order']]) + ->assertStatus(200) + ->assertJson([ + 'data' => [ + 'to_do_id' => $todoMove['data']['to_do_id'], + 'attributes' => [ + 'data' => [ + 'order' => $toDoReplaced['data']['attributes']['data']['order'], + ] + ] + ], + 'links' => [ + 'self' => url('/to-do-lists/'. $toDoList->id), + ] + ]); + } + /** @test */ public function a_to_do_list_can_be_delete() { From e1d9c02c5e5d5b130b25d11cf5c397e26c82aab0 Mon Sep 17 00:00:00 2001 From: Romulus21 Date: Sat, 25 Apr 2020 10:16:17 +0200 Subject: [PATCH 3/8] fix modal, logout & start todo front --- ..._04_19_144900_create_to_do_lists_table.php | 1 + resources/js/components/Nav.vue | 4 ++ resources/js/components/TopBar.vue | 12 ---- resources/js/router.js | 10 +++ resources/js/views/DashBoard.vue | 12 ++++ resources/js/views/Memo/MemoShow.vue | 18 ++--- .../js/views/ToDoLists/ToDoListIndex.vue | 67 +++++++++++++++++++ resources/js/views/ToDoLists/ToDoListShow.vue | 9 +++ resources/sass/components/modal.scss | 34 +++++----- 9 files changed, 131 insertions(+), 36 deletions(-) create mode 100644 resources/js/views/ToDoLists/ToDoListIndex.vue create mode 100644 resources/js/views/ToDoLists/ToDoListShow.vue diff --git a/database/migrations/2020_04_19_144900_create_to_do_lists_table.php b/database/migrations/2020_04_19_144900_create_to_do_lists_table.php index dc8bd15..a76f084 100644 --- a/database/migrations/2020_04_19_144900_create_to_do_lists_table.php +++ b/database/migrations/2020_04_19_144900_create_to_do_lists_table.php @@ -17,6 +17,7 @@ class CreateToDoListsTable extends Migration $table->id(); $table->unsignedBigInteger('user_id'); $table->string('name'); + $table->integer('order')->default(1); $table->timestamps(); }); } diff --git a/resources/js/components/Nav.vue b/resources/js/components/Nav.vue index b795fa0..e046cd6 100644 --- a/resources/js/components/Nav.vue +++ b/resources/js/components/Nav.vue @@ -8,6 +8,10 @@ Memos + + + To Do Lists + Jeux diff --git a/resources/js/components/TopBar.vue b/resources/js/components/TopBar.vue index 807e8b6..5904918 100644 --- a/resources/js/components/TopBar.vue +++ b/resources/js/components/TopBar.vue @@ -37,18 +37,6 @@ ...mapGetters({ authUser: 'authUser', }) - }, - methods: { - logout: function () { - axios.post('logout') - .then(res => { - if(res.status ===302 || 401) { - window.location.href = '/login' - } - }).catch(error => { - - }) - } } } diff --git a/resources/js/router.js b/resources/js/router.js index 957a37f..eb76bf7 100644 --- a/resources/js/router.js +++ b/resources/js/router.js @@ -9,6 +9,8 @@ import MemoIndex from "./views/Memo/MemoIndex"; import MemoCreate from "./views/Memo/MemoCreate"; import MemoShow from "./views/Memo/MemoShow"; import MemoEdit from "./views/Memo/MemoEdit"; +import ToDoListIndex from "./views/ToDoLists/ToDoListIndex"; +import ToDoListShow from "./views/ToDoLists/ToDoListShow"; import GameIndex from "./views/Games/GameIndex"; import Hangman from "./views/Games/HangMan/Hangman"; @@ -54,6 +56,14 @@ export default new VueRouter({ meta: {title: 'Edit Memo'} }, + { + path: '/to-do-lists', component: ToDoListIndex, + meta: {title: 'To Do Lists'} + }, { + path: '/to-do-lists/:id', component: ToDoListShow, + meta: {title: 'Details of List'} + }, + { path: '/jeux', component: GameIndex, meta: {title: 'Liste des jeux'} diff --git a/resources/js/views/DashBoard.vue b/resources/js/views/DashBoard.vue index 092e88c..80f4283 100644 --- a/resources/js/views/DashBoard.vue +++ b/resources/js/views/DashBoard.vue @@ -17,6 +17,18 @@ name: "DashBoard", components: { UserAdmin + }, + methods: { + logout: function () { + axios.post('logout') + .then(res => { + if(res.status ===302 || 401) { + window.location.href = '/login' + } + }).catch(error => { + + }) + } } } diff --git a/resources/js/views/Memo/MemoShow.vue b/resources/js/views/Memo/MemoShow.vue index 36cde34..3882c58 100755 --- a/resources/js/views/Memo/MemoShow.vue +++ b/resources/js/views/Memo/MemoShow.vue @@ -2,6 +2,14 @@
+ +
< Back - +
Edit Delete diff --git a/resources/js/views/ToDoLists/ToDoListIndex.vue b/resources/js/views/ToDoLists/ToDoListIndex.vue new file mode 100644 index 0000000..379ce19 --- /dev/null +++ b/resources/js/views/ToDoLists/ToDoListIndex.vue @@ -0,0 +1,67 @@ + + + diff --git a/resources/js/views/ToDoLists/ToDoListShow.vue b/resources/js/views/ToDoLists/ToDoListShow.vue new file mode 100644 index 0000000..56b087a --- /dev/null +++ b/resources/js/views/ToDoLists/ToDoListShow.vue @@ -0,0 +1,9 @@ + + + diff --git a/resources/sass/components/modal.scss b/resources/sass/components/modal.scss index b32ff51..25c7afa 100644 --- a/resources/sass/components/modal.scss +++ b/resources/sass/components/modal.scss @@ -3,24 +3,28 @@ $modal-duration: 1s; .modal-container { background-color: rgba(0,0,0,0.6); //display: none; - position: fixed; + z-index: 10; + position: absolute; top: 0; bottom: 0; left: 0; right: 0; - .modal { - background-color: #fff; - border-radius: 5px; - box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); - position: absolute; - overflow: hidden; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - max-width: 100%; - width: 400px; - animation-name: modalopen; - animation-duration: $modal-duration; - } + +} + +.modal { + background-color: #fff; + border-radius: 5px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); + position: absolute; + z-index: 20; + //overflow: hidden; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + max-width: 100%; + width: 400px; + animation-name: modalopen; + animation-duration: $modal-duration; } From 94d6e6a4dcb6fb88dc606940a8a240260e6662ea Mon Sep 17 00:00:00 2001 From: Romulus21 Date: Mon, 27 Apr 2020 11:06:12 +0200 Subject: [PATCH 4/8] todo front in work --- app/Http/Controllers/ToDoListController.php | 7 +++ app/Http/Resources/ToDoList.php | 2 +- app/Models/User.php | 10 ++-- resources/js/components/InputField.vue | 3 +- resources/js/components/Nav.vue | 2 +- resources/js/views/ToDoLists/ToDoList.vue | 50 +++++++++++++++++++ .../js/views/ToDoLists/ToDoListIndex.vue | 15 ++++-- resources/svg/list.svg | 11 ++++ tests/Feature/ToDoListsTest.php | 44 ++++++++++++++++ 9 files changed, 132 insertions(+), 12 deletions(-) create mode 100644 resources/js/views/ToDoLists/ToDoList.vue create mode 100644 resources/svg/list.svg diff --git a/app/Http/Controllers/ToDoListController.php b/app/Http/Controllers/ToDoListController.php index 98fa2a3..e3ad9e2 100644 --- a/app/Http/Controllers/ToDoListController.php +++ b/app/Http/Controllers/ToDoListController.php @@ -8,6 +8,13 @@ use Illuminate\Http\Request; class ToDoListController extends Controller { + public function index() + { + $this->authorize('viewAny', ToDoList::class); + + return ToDoListResource::collection(request()->user()->toDoLists); + } + public function store() { $this->authorize('create', ToDoList::class); diff --git a/app/Http/Resources/ToDoList.php b/app/Http/Resources/ToDoList.php index 534445f..7de7c44 100644 --- a/app/Http/Resources/ToDoList.php +++ b/app/Http/Resources/ToDoList.php @@ -23,7 +23,7 @@ class ToDoList extends JsonResource 'data' => [ 'name' => $this->name, 'to_dos' => new ToDoCollection($this->toDos), - 'posted_by' => new UserResource($this->user), + 'posted_by' => new UserResource($this->author), 'last_updated' => $this->updated_at->diffForHumans(), // 'cover_image' => new ImageResource($this->coverImage), ] diff --git a/app/Models/User.php b/app/Models/User.php index 3d8cfcd..7d0fe28 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -59,6 +59,11 @@ class User extends Authenticatable return $this->hasMany(Memo::class); } + public function toDoLists() : HasMany + { + return $this->hasMany(ToDoList::class); + } + public function images(): MorphMany { return $this->morphMany(Image::class, 'imageable'); @@ -83,9 +88,4 @@ class User extends Authenticatable $userImage->path = 'images/default-cover.jpg'; }); } - - public function toDoLists(): HasMany - { - return $this->hasMany(ToDoList::class); - } } diff --git a/resources/js/components/InputField.vue b/resources/js/components/InputField.vue index 17b92b6..aff686b 100644 --- a/resources/js/components/InputField.vue +++ b/resources/js/components/InputField.vue @@ -1,5 +1,5 @@ + + diff --git a/resources/js/views/ToDoLists/ToDoList.vue b/resources/js/views/ToDoLists/ToDoList.vue index b4126ce..bea9c08 100644 --- a/resources/js/views/ToDoLists/ToDoList.vue +++ b/resources/js/views/ToDoLists/ToDoList.vue @@ -1,37 +1,42 @@ + + diff --git a/resources/js/views/ToDoLists/ToDoListIndex.vue b/resources/js/views/ToDoLists/ToDoListIndex.vue index 0218f7b..634463e 100644 --- a/resources/js/views/ToDoLists/ToDoListIndex.vue +++ b/resources/js/views/ToDoLists/ToDoListIndex.vue @@ -15,11 +15,13 @@ Add New List
-
+
No List Yet
-
- -
+
diff --git a/resources/sass/components/nav.scss b/resources/sass/components/nav.scss index 54b8c8d..02c1948 100644 --- a/resources/sass/components/nav.scss +++ b/resources/sass/components/nav.scss @@ -129,7 +129,7 @@ nav { span { - @apply font-bold text-xl ml-2 overflow-hidden; + @apply font-bold text-xl ml-2 overflow-hidden truncate; transition: width 0.3s; &:hover { diff --git a/resources/svg/draggable.svg b/resources/svg/draggable.svg new file mode 100644 index 0000000..2cb1199 --- /dev/null +++ b/resources/svg/draggable.svg @@ -0,0 +1,7 @@ + + + + + + diff --git a/resources/svg/edit.svg b/resources/svg/edit.svg new file mode 100644 index 0000000..b6b1785 --- /dev/null +++ b/resources/svg/edit.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php index 0c54893..426f9f6 100644 --- a/resources/views/auth/login.blade.php +++ b/resources/views/auth/login.blade.php @@ -1,51 +1,52 @@ @extends('layouts.app') @section('content') -
-
{{ __('Login') }}
-
- @csrf +
+
+
{{ __('Login') }}
+ + @csrf - -
- - @error('email') - - {{ $message }} - - @enderror -
+ +
+ + @error('email') + + {{ $message }} + + @enderror +
- -
- + +
+ - @error('password') - - {{ $message }} - - @enderror -
+ @error('password') + + {{ $message }} + + @enderror +
-
- +
+ - -
- -
- - @if (Route::has('password.request')) - - {{ __('Forgot Your Password?') }} - - @endif -
- + +
+
+ + @if (Route::has('password.request')) + + {{ __('Forgot Your Password?') }} + + @endif +
+ +
@endsection From ebb1c58f901e88735b5bc7795ce7d0d86e2f0652 Mon Sep 17 00:00:00 2001 From: Romulus21 Date: Wed, 29 Apr 2020 21:05:38 +0200 Subject: [PATCH 7/8] add eslint working conf --- .eslintrc.json | 20 +- package.json | 8 +- resources/js/app.js | 9 +- resources/js/bootstrap.js | 8 +- resources/js/components/AlertBox.vue | 28 +-- resources/js/components/App.vue | 47 ++--- resources/js/components/Avatar.vue | 8 +- resources/js/components/InputField.vue | 106 +++++----- resources/js/components/Loader.vue | 18 +- resources/js/components/Nav.vue | 32 +-- resources/js/components/TextAreaField.vue | 113 ++++++----- resources/js/components/TopBar.vue | 32 +-- resources/js/components/UploadableImage.vue | 138 ++++++------- resources/js/router.js | 26 +-- resources/js/store/modules/user.js | 4 +- resources/js/views/CssTesteur.vue | 6 +- resources/js/views/DashBoard.vue | 32 +-- resources/js/views/Games/GameIndex.vue | 12 +- resources/js/views/Games/HangMan/Hangman.vue | 190 +++++++++--------- .../js/views/Games/HangMan/HangmanIndex.vue | 16 +- resources/js/views/Home.vue | 12 +- resources/js/views/Memo/MemoCreate.vue | 55 ++--- resources/js/views/Memo/MemoEdit.vue | 82 ++++---- resources/js/views/Memo/MemoIndex.vue | 47 ++--- resources/js/views/Memo/MemoShow.vue | 90 +++++---- resources/js/views/Meteo/OpenWeatherCard.vue | 82 ++++---- resources/js/views/ToDoLists/ToDo.vue | 44 ++-- resources/js/views/ToDoLists/ToDoList.vue | 92 ++++----- .../js/views/ToDoLists/ToDoListIndex.vue | 82 ++++---- resources/js/views/ToDoLists/ToDoListShow.vue | 8 +- resources/js/views/User/ProfileUser.vue | 26 +-- resources/js/views/User/ShowUser.vue | 49 +++-- resources/js/views/User/UserAdmin.vue | 190 +++++++++--------- 33 files changed, 866 insertions(+), 846 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 02e51f7..e539716 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -6,26 +6,22 @@ }, "extends": [ "eslint:recommended", - "plugin:vue/essential", - "plugin:vue/base", - "plugin:vue/strongly-recommended", - "plugin:vue/recommended" + "plugin:vue/essential" ], "globals": { "Atomics": "readonly", "SharedArrayBuffer": "readonly" }, "parserOptions": { - "ecmaVersion": 2018, - "sourceType": "module" + "ecmaVersion": 2018 }, "plugins": [ "vue" ], "rules": { "indent": [ - "off", - 2 + "error", + 4 ], "linebreak-style": [ "error", @@ -36,10 +32,8 @@ "single" ], "semi": [ - "off", - "always" - ], - "no-console": "off", - "strict": "off" + "error", + "never" + ] } } diff --git a/package.json b/package.json index 879612a..3ea767e 100644 --- a/package.json +++ b/package.json @@ -8,14 +8,20 @@ "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", "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", - "eslint": "./node_modules/.bin/eslint resources/assets/js/ test/ --ext .js,.vue" + "eslint": "./node_modules/.bin/eslint resources/js/ --ext .js,.vue", + "lint": "eslint --ext .js,.vue resources/js/" }, "devDependencies": { "axios": "^0.19", "babel-eslint": "^10.1.0", "cross-env": "^7.0", "eslint": "^6.8.0", + "eslint-config-standard": "^14.1.1", "eslint-loader": "^3.0.3", + "eslint-plugin-import": "^2.20.2", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-promise": "^4.2.1", + "eslint-plugin-standard": "^4.0.1", "eslint-plugin-vue": "^6.2.2", "laravel-mix": "^5.0.1", "laravel-mix-eslint": "^0.1.3", diff --git a/resources/js/app.js b/resources/js/app.js index d5a8523..4abac1b 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -2,12 +2,13 @@ import Vue from 'vue' import router from './router' import App from './components/App' import store from './store' -import SvgVue from 'svg-vue'; +import SvgVue from 'svg-vue' -Vue.use(SvgVue); +Vue.use(SvgVue) -require('./bootstrap'); +require('./bootstrap') +// eslint-disable-next-line no-unused-vars const app = new Vue({ el: '#app', @@ -15,4 +16,4 @@ const app = new Vue({ App }, router, store, -}); +}) diff --git a/resources/js/bootstrap.js b/resources/js/bootstrap.js index f5817b0..8603aa6 100644 --- a/resources/js/bootstrap.js +++ b/resources/js/bootstrap.js @@ -1,7 +1,5 @@ -window._ = require('lodash'); - -window.axios = require('axios'); - -window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; +window._ = require('lodash') +window.axios = require('axios') +window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest' diff --git a/resources/js/components/AlertBox.vue b/resources/js/components/AlertBox.vue index c7b51a8..430cea1 100644 --- a/resources/js/components/AlertBox.vue +++ b/resources/js/components/AlertBox.vue @@ -8,19 +8,19 @@ diff --git a/resources/js/components/App.vue b/resources/js/components/App.vue index 8a80cbe..05e6296 100644 --- a/resources/js/components/App.vue +++ b/resources/js/components/App.vue @@ -11,30 +11,31 @@ diff --git a/resources/js/components/Avatar.vue b/resources/js/components/Avatar.vue index 1683f02..1511269 100644 --- a/resources/js/components/Avatar.vue +++ b/resources/js/components/Avatar.vue @@ -7,8 +7,8 @@ diff --git a/resources/js/components/InputField.vue b/resources/js/components/InputField.vue index 9a11639..bc562dd 100644 --- a/resources/js/components/InputField.vue +++ b/resources/js/components/InputField.vue @@ -8,62 +8,62 @@ diff --git a/resources/js/components/Loader.vue b/resources/js/components/Loader.vue index fdb4c2d..c129197 100644 --- a/resources/js/components/Loader.vue +++ b/resources/js/components/Loader.vue @@ -5,15 +5,15 @@ diff --git a/resources/js/components/Nav.vue b/resources/js/components/Nav.vue index 623ca5a..edc369a 100644 --- a/resources/js/components/Nav.vue +++ b/resources/js/components/Nav.vue @@ -25,22 +25,22 @@ diff --git a/resources/js/components/TextAreaField.vue b/resources/js/components/TextAreaField.vue index 02f5f5b..935e133 100644 --- a/resources/js/components/TextAreaField.vue +++ b/resources/js/components/TextAreaField.vue @@ -1,67 +1,74 @@ diff --git a/resources/js/components/TopBar.vue b/resources/js/components/TopBar.vue index 7d1d164..40110ad 100644 --- a/resources/js/components/TopBar.vue +++ b/resources/js/components/TopBar.vue @@ -20,23 +20,23 @@ diff --git a/resources/js/components/UploadableImage.vue b/resources/js/components/UploadableImage.vue index 2d3b9c8..842b2aa 100644 --- a/resources/js/components/UploadableImage.vue +++ b/resources/js/components/UploadableImage.vue @@ -8,80 +8,80 @@ diff --git a/resources/js/router.js b/resources/js/router.js index eb76bf7..a891edb 100644 --- a/resources/js/router.js +++ b/resources/js/router.js @@ -1,18 +1,18 @@ import Vue from 'vue' import VueRouter from 'vue-router' -import Home from "./views/Home" -import Profile from "./views/User/ProfileUser"; -import ShowUser from "./views/User/ShowUser"; -import DashBoard from "./views/DashBoard"; -import CssTesteur from "./views/CssTesteur"; -import MemoIndex from "./views/Memo/MemoIndex"; -import MemoCreate from "./views/Memo/MemoCreate"; -import MemoShow from "./views/Memo/MemoShow"; -import MemoEdit from "./views/Memo/MemoEdit"; -import ToDoListIndex from "./views/ToDoLists/ToDoListIndex"; -import ToDoListShow from "./views/ToDoLists/ToDoListShow"; -import GameIndex from "./views/Games/GameIndex"; -import Hangman from "./views/Games/HangMan/Hangman"; +import Home from './views/Home' +import Profile from './views/User/ProfileUser' +import ShowUser from './views/User/ShowUser' +import DashBoard from './views/DashBoard' +import CssTesteur from './views/CssTesteur' +import MemoIndex from './views/Memo/MemoIndex' +import MemoCreate from './views/Memo/MemoCreate' +import MemoShow from './views/Memo/MemoShow' +import MemoEdit from './views/Memo/MemoEdit' +import ToDoListIndex from './views/ToDoLists/ToDoListIndex' +import ToDoListShow from './views/ToDoLists/ToDoListShow' +import GameIndex from './views/Games/GameIndex' +import Hangman from './views/Games/HangMan/Hangman' Vue.use(VueRouter) diff --git a/resources/js/store/modules/user.js b/resources/js/store/modules/user.js index 5d3bba7..4a5fe09 100644 --- a/resources/js/store/modules/user.js +++ b/resources/js/store/modules/user.js @@ -10,13 +10,15 @@ const getters = { } const actions = { + // eslint-disable-next-line no-unused-vars fetchAuthUser({commit, state}) { + // eslint-disable-next-line no-undef axios.get('/api/auth-user') .then(res => { commit('setAuthUser', res.data) }) .catch(error => { - console.log('Unable to fetch auth user') + console.log('Unable to fetch auth user' + error) }) } } diff --git a/resources/js/views/CssTesteur.vue b/resources/js/views/CssTesteur.vue index e249bf9..ecbf122 100644 --- a/resources/js/views/CssTesteur.vue +++ b/resources/js/views/CssTesteur.vue @@ -37,7 +37,7 @@ diff --git a/resources/js/views/DashBoard.vue b/resources/js/views/DashBoard.vue index 3632f98..ae60f45 100644 --- a/resources/js/views/DashBoard.vue +++ b/resources/js/views/DashBoard.vue @@ -11,24 +11,26 @@ diff --git a/resources/js/views/Games/GameIndex.vue b/resources/js/views/Games/GameIndex.vue index 7ba23e1..1849b50 100644 --- a/resources/js/views/Games/GameIndex.vue +++ b/resources/js/views/Games/GameIndex.vue @@ -8,12 +8,12 @@ diff --git a/resources/js/views/Games/HangMan/Hangman.vue b/resources/js/views/Games/HangMan/Hangman.vue index cb5900d..18d2de6 100644 --- a/resources/js/views/Games/HangMan/Hangman.vue +++ b/resources/js/views/Games/HangMan/Hangman.vue @@ -3,7 +3,7 @@

Pendu

Trouve le mot du pendu - Saisi les lettres

- @@ -46,116 +46,116 @@ diff --git a/resources/js/views/Games/HangMan/HangmanIndex.vue b/resources/js/views/Games/HangMan/HangmanIndex.vue index c8ea201..8cb1157 100644 --- a/resources/js/views/Games/HangMan/HangmanIndex.vue +++ b/resources/js/views/Games/HangMan/HangmanIndex.vue @@ -6,13 +6,13 @@ diff --git a/resources/js/views/Home.vue b/resources/js/views/Home.vue index 2514090..6eb2bec 100644 --- a/resources/js/views/Home.vue +++ b/resources/js/views/Home.vue @@ -6,12 +6,12 @@ diff --git a/resources/js/views/Memo/MemoCreate.vue b/resources/js/views/Memo/MemoCreate.vue index 7a7e9c7..1d05aa4 100755 --- a/resources/js/views/Memo/MemoCreate.vue +++ b/resources/js/views/Memo/MemoCreate.vue @@ -1,7 +1,7 @@ diff --git a/resources/js/views/Memo/MemoEdit.vue b/resources/js/views/Memo/MemoEdit.vue index 4c94a10..b8ce944 100755 --- a/resources/js/views/Memo/MemoEdit.vue +++ b/resources/js/views/Memo/MemoEdit.vue @@ -15,7 +15,7 @@
- < Back + Back
@@ -31,49 +31,51 @@ diff --git a/resources/js/views/Memo/MemoIndex.vue b/resources/js/views/Memo/MemoIndex.vue index ee49c71..bc2bda5 100755 --- a/resources/js/views/Memo/MemoIndex.vue +++ b/resources/js/views/Memo/MemoIndex.vue @@ -1,7 +1,7 @@ diff --git a/resources/js/views/Memo/MemoShow.vue b/resources/js/views/Memo/MemoShow.vue index b0b0672..d7fbf59 100755 --- a/resources/js/views/Memo/MemoShow.vue +++ b/resources/js/views/Memo/MemoShow.vue @@ -18,7 +18,7 @@ />
- < Back + Back
Edit Delete @@ -38,53 +38,55 @@ diff --git a/resources/js/views/Meteo/OpenWeatherCard.vue b/resources/js/views/Meteo/OpenWeatherCard.vue index 529f6f4..1d61fd6 100644 --- a/resources/js/views/Meteo/OpenWeatherCard.vue +++ b/resources/js/views/Meteo/OpenWeatherCard.vue @@ -22,50 +22,50 @@ diff --git a/resources/js/views/ToDoLists/ToDo.vue b/resources/js/views/ToDoLists/ToDo.vue index 0000657..a41da9f 100644 --- a/resources/js/views/ToDoLists/ToDo.vue +++ b/resources/js/views/ToDoLists/ToDo.vue @@ -14,30 +14,30 @@