diff --git a/app/Http/Controllers/ProjectController.php b/app/Http/Controllers/ProjectController.php index c7b0219..9d0b30c 100644 --- a/app/Http/Controllers/ProjectController.php +++ b/app/Http/Controllers/ProjectController.php @@ -37,7 +37,8 @@ public function index(Request $request): Response { $keyword = $request->input('search'); return Inertia::render('ProjectIndex', [ - 'list' => Project::searchQuery($keyword)->orderByDesc('year')->orderByDesc('number')->with([ + 'list' => Project::searchQuery($keyword)->addSelect(['sdgs'])->orderByDesc('year')->orderByDesc('number') + ->with([ 'documents' => function ($query) { $query->select('id', 'tag', 'project_id'); $query->whereNotNull('tag'); @@ -53,7 +54,7 @@ public function indexOfYear(Request $request): Response { $keyword = $request->input('search'); return Inertia::render('ProjectYearIndex', [ - 'list' => Project::searchQuery($keyword)->addSelect(['advisor'])->with([ + 'list' => Project::searchQuery($keyword)->addSelect(['advisor', 'sdgs'])->with([ 'documents' => function ($query) { $query->select('id', 'year', 'number', 'number_to', 'title', 'tag', 'project_id'); $query->whereNotNull('tag'); @@ -207,6 +208,7 @@ public function update(Request $request, Project $project) { 'organizers' => 'required|array', 'staff' => 'nullable|array', 'attendees' => 'nullable|array', + 'sdgs' => 'nullable|array', ]); $this->authorize('update-project', $project); diff --git a/app/Models/Project.php b/app/Models/Project.php index 986d951..fd89361 100644 --- a/app/Models/Project.php +++ b/app/Models/Project.php @@ -63,6 +63,7 @@ class Project extends Model { 'expense' => 'array', 'closure_submitted_at' => 'datetime', 'closure_approved_at' => 'datetime', + 'sdgs' => 'array', ]; protected $hidden = ['user_id']; diff --git a/database/migrations/2024_09_15_153730_add_sdgs_column_to_projects_table.php b/database/migrations/2024_09_15_153730_add_sdgs_column_to_projects_table.php new file mode 100644 index 0000000..e14cb04 --- /dev/null +++ b/database/migrations/2024_09_15_153730_add_sdgs_column_to_projects_table.php @@ -0,0 +1,13 @@ +json('sdgs')->nullable(); + }); + } +}; diff --git a/public/assets/sdgs/01.svg b/public/assets/sdgs/01.svg new file mode 100644 index 0000000..bcaf1e7 --- /dev/null +++ b/public/assets/sdgs/01.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/sdgs/02.svg b/public/assets/sdgs/02.svg new file mode 100644 index 0000000..01f039f --- /dev/null +++ b/public/assets/sdgs/02.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/sdgs/03.svg b/public/assets/sdgs/03.svg new file mode 100644 index 0000000..ba42d52 --- /dev/null +++ b/public/assets/sdgs/03.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/sdgs/04.svg b/public/assets/sdgs/04.svg new file mode 100644 index 0000000..2707aa3 --- /dev/null +++ b/public/assets/sdgs/04.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/sdgs/05.svg b/public/assets/sdgs/05.svg new file mode 100644 index 0000000..3c3c8d4 --- /dev/null +++ b/public/assets/sdgs/05.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/sdgs/06.svg b/public/assets/sdgs/06.svg new file mode 100644 index 0000000..91e6ffc --- /dev/null +++ b/public/assets/sdgs/06.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/sdgs/07.svg b/public/assets/sdgs/07.svg new file mode 100644 index 0000000..4e2edbe --- /dev/null +++ b/public/assets/sdgs/07.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/sdgs/08.svg b/public/assets/sdgs/08.svg new file mode 100644 index 0000000..2229c6c --- /dev/null +++ b/public/assets/sdgs/08.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/sdgs/09.svg b/public/assets/sdgs/09.svg new file mode 100644 index 0000000..9d27692 --- /dev/null +++ b/public/assets/sdgs/09.svg @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/sdgs/10.svg b/public/assets/sdgs/10.svg new file mode 100644 index 0000000..0073aa7 --- /dev/null +++ b/public/assets/sdgs/10.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/sdgs/11.svg b/public/assets/sdgs/11.svg new file mode 100644 index 0000000..404fc69 --- /dev/null +++ b/public/assets/sdgs/11.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/sdgs/12.svg b/public/assets/sdgs/12.svg new file mode 100644 index 0000000..46a880a --- /dev/null +++ b/public/assets/sdgs/12.svg @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/sdgs/13.svg b/public/assets/sdgs/13.svg new file mode 100644 index 0000000..2d3d291 --- /dev/null +++ b/public/assets/sdgs/13.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/sdgs/14.svg b/public/assets/sdgs/14.svg new file mode 100644 index 0000000..cfffb96 --- /dev/null +++ b/public/assets/sdgs/14.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/sdgs/15.svg b/public/assets/sdgs/15.svg new file mode 100644 index 0000000..86ac81e --- /dev/null +++ b/public/assets/sdgs/15.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/sdgs/16.svg b/public/assets/sdgs/16.svg new file mode 100644 index 0000000..5e1e94c --- /dev/null +++ b/public/assets/sdgs/16.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/sdgs/17.svg b/public/assets/sdgs/17.svg new file mode 100644 index 0000000..818e664 --- /dev/null +++ b/public/assets/sdgs/17.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/js/Components/SDGBadge.vue b/resources/js/Components/SDGBadge.vue new file mode 100644 index 0000000..91b68fd --- /dev/null +++ b/resources/js/Components/SDGBadge.vue @@ -0,0 +1,80 @@ + + + diff --git a/resources/js/Components/SDGSelector.vue b/resources/js/Components/SDGSelector.vue new file mode 100644 index 0000000..674fa2c --- /dev/null +++ b/resources/js/Components/SDGSelector.vue @@ -0,0 +1,31 @@ + + diff --git a/resources/js/Pages/DocumentIndex.vue b/resources/js/Pages/DocumentIndex.vue index 65348df..ee3e916 100644 --- a/resources/js/Pages/DocumentIndex.vue +++ b/resources/js/Pages/DocumentIndex.vue @@ -65,11 +65,7 @@ @@ -79,11 +75,12 @@ import AppLayout from '@/Layouts/AppLayout.vue' import SearchInput from "@/Components/SearchInput.vue"; import Pagination from "@/Components/Pagination.vue"; -import {DocumentChartBarIcon, DocumentTextIcon} from '@heroicons/vue/20/solid'; +import {DocumentChartBarIcon, DocumentTextIcon, PlusIcon} from '@heroicons/vue/20/solid'; import {DocumentCheckIcon, ExclamationCircleIcon, PaperAirplaneIcon} from "@heroicons/vue/24/outline"; export default { components: { + PlusIcon, AppLayout, Pagination, SearchInput, diff --git a/resources/js/Pages/ProjectCreate.vue b/resources/js/Pages/ProjectCreate.vue index eb5bda6..76031c1 100644 --- a/resources/js/Pages/ProjectCreate.vue +++ b/resources/js/Pages/ProjectCreate.vue @@ -228,6 +228,19 @@ + + + + + + @@ -475,9 +491,11 @@ import JetSectionBorder from '@/Jetstream/SectionBorder.vue' // import draggable from 'vuedraggable' import StudentIdDialog from "../Components/StudentIdDialog.vue"; import Combobox from "../Components/Combobox.vue"; +import SDGSelector from "@/Components/SDGSelector.vue"; export default { components: { + SDGSelector, Combobox, StudentIdDialog, AppLayout, JetActionMessage, @@ -509,6 +527,7 @@ export default { outcomes: this.item.outcomes ?? "", duration: this.item.duration ?? "", estimated_attendees: this.item.estimated_attendees ?? "", + sdgs: this.item.sdgs ?? [], }), objectives: this.item.objectives ?? [], expense: this.item.expense ?? [], diff --git a/resources/js/Pages/ProjectIndex.vue b/resources/js/Pages/ProjectIndex.vue index 80151d5..6dc1f8c 100644 --- a/resources/js/Pages/ProjectIndex.vue +++ b/resources/js/Pages/ProjectIndex.vue @@ -113,6 +113,7 @@ {{ item.name }} + @@ -138,11 +139,7 @@ @@ -151,8 +148,9 @@