From 3d22a9d6eedc9becc5ff3a3ed2912314cd6c1f69 Mon Sep 17 00:00:00 2001 From: Zara Mudassar <zara.1310@hotmail.com> Date: Fri, 29 Apr 2022 11:18:48 +0200 Subject: [PATCH] Implemented menu and connected "se medlemmer" to backend --- .../BaseComponents/CommunityHeader.vue | 52 ++++++++------ .../CommunityHamburger.vue | 50 +++++++++++++ .../CommunityComponents/MemberList.vue | 30 ++++---- src/utils/apiutil.js | 13 ++++ src/views/CommunityViews/MemberListView.vue | 72 +------------------ 5 files changed, 112 insertions(+), 105 deletions(-) create mode 100644 src/components/CommunityComponents/CommunityHamburger.vue diff --git a/src/components/BaseComponents/CommunityHeader.vue b/src/components/BaseComponents/CommunityHeader.vue index 99fde7e..03c55ee 100644 --- a/src/components/BaseComponents/CommunityHeader.vue +++ b/src/components/BaseComponents/CommunityHeader.vue @@ -27,35 +27,32 @@ </div> </div> </div> - <div class="flex"> - <span class="hidden sm:block"> - <button - v-if="adminStatus" - @click="edit()" - type="button" - class="inline-flex items-center px-4 py-2 border border-gray-300 rounded-md shadow-sm text-sm font-medium text-gray-700 bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500" - > - <!-- Heroicon name: solid/pencil --> - <svg - xmlns="http://www.w3.org/2000/svg" - class="h-5 w-5" - viewBox="0 0 20 20" - fill="currentColor" - > - <path - d="M13.586 3.586a2 2 0 112.828 2.828l-.793.793-2.828-2.828.793-.793zM11.379 5.793L3 14.172V17h2.828l8.38-8.379-2.83-2.828z" - /> - </svg> - Edit - </button> + <div> + <span class="hidden sm:block"> <!-- Legg dette til i button: v-if="adminStatus" --> + + <svg @click="test" xmlns="http://www.w3.org/2000/svg" class="w-9 h-9 cursor-pointer" fill="none" viewBox="0 0 24 24" stroke="currentColor"> + <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" /> + </svg> + + <CommunityHamburger v-if="hamburgerOpen" class="absolute" :community-i-d="community.communityId"/> <!-- class="absolute" --> + </span> </div> </div> </template> <script> +import CommunityHamburger from "@/components/CommunityComponents/CommunityHamburger"; export default { name: "CommunityHeader", + components: { + CommunityHamburger, + }, + data(){ + return{ + hamburgerOpen: false, + } + }, props: { adminStatus: Boolean, community: { @@ -65,12 +62,23 @@ export default { visibility: Number, location: String, picture: String, - }, + } }, methods: { edit() { this.$emit("edit"); }, + test: function (){ + console.log("funker å trykke"); + console.log("ID: " + this.community.communityId); + if(this.hamburgerOpen){ + this.hamburgerOpen = false; + } + else{ + this.hamburgerOpen = true; + } + console.log("Åpen: " + this.hamburgerOpen); + } }, }; </script> diff --git a/src/components/CommunityComponents/CommunityHamburger.vue b/src/components/CommunityComponents/CommunityHamburger.vue new file mode 100644 index 0000000..2d09573 --- /dev/null +++ b/src/components/CommunityComponents/CommunityHamburger.vue @@ -0,0 +1,50 @@ +<template> + <div + id="dropdown" + class="z-10 w-44 text-base list-none bg-white rounded divide-y divide-gray-100 shadow dark:bg-gray-700" + > + <ul class="py-1" > + <li> + <router-link + to="/addNewItem" + class="block py-2 px-4 text-sm text-gray-700 hover:bg-gray-100 dark:hover:bg-gray-600 dark:text-gray-200 dark:hover:text-white" + >Opprett utleie</router-link + > + </li> + <li> + <router-link + :to="'/group/' + communityID + '/memberlist'" + class="block py-2 px-4 text-sm text-gray-700 hover:bg-gray-100 dark:hover:bg-gray-600 dark:text-gray-200 dark:hover:text-white" + >Se Medlemmer + </router-link> + </li> + <li> + <router-link + :to="'/group/' + communityID + '/memberlist'" + class="block py-2 px-4 text-sm text-gray-700 hover:bg-gray-100 dark:hover:bg-gray-600 dark:text-gray-200 dark:hover:text-white" + >Administrer Gruppe</router-link + > + </li> + <li class="text-red-500"> + <div + class="cursor-pointer block py-2 px-4 text-sm text-gray-700 hover:bg-gray-100 dark:hover:bg-gray-600 dark:text-gray-200 dark:hover:text-white" + > + Forlat Gruppe + </div> + </li> + </ul> + </div> +</template> + +<script> +export default { + name: "CommunityHamburger", + props: { + communityID: Number, + }, + beforeMount() { + console.log("id: " + this.communityID); + } +} +</script> + diff --git a/src/components/CommunityComponents/MemberList.vue b/src/components/CommunityComponents/MemberList.vue index 7b44f5f..edd765f 100644 --- a/src/components/CommunityComponents/MemberList.vue +++ b/src/components/CommunityComponents/MemberList.vue @@ -1,4 +1,5 @@ <template> + <CommunityHeader :admin-status="false" :community="community" class="mb-5 mt-5"/> <ul> <li v-for="member in memberlist" :key="member.userId"> <user-list-item-card :admin="admin" :user="member" /> @@ -8,29 +9,34 @@ <script> import UserListItemCard from "../UserProfileComponents/UserListItemCard.vue"; +import { GetMembersOfCommunity, GetCommunity } from "@/utils/apiutil"; +import CommunityHeader from "@/components/BaseComponents/CommunityHeader"; export default { data() { return { - memberlist: [ - { - userId: 2, - firstName: "erik", - lastName: "hansen", - }, - { - userId: 1, - firstName: "Test", - lastName: "Testesen", - }, - ], + memberlist: [], + community: {}, }; }, components: { + CommunityHeader, UserListItemCard, }, props: { admin: Boolean, }, + methods:{ + getAllMembersOfCommunity: async function(){ + this.memberlist = await GetMembersOfCommunity(this.$router.currentRoute.value.params.id); + }, + getCommunity: async function(){ + this.community = await GetCommunity(this.$router.currentRoute.value.params.id); + } + }, + beforeMount() { + this.getAllMembersOfCommunity(); + this.getCommunity(); + } }; </script> diff --git a/src/utils/apiutil.js b/src/utils/apiutil.js index b3aa02d..8020757 100644 --- a/src/utils/apiutil.js +++ b/src/utils/apiutil.js @@ -173,3 +173,16 @@ export async function GetListingsInCommunity(communityID) { console.error(error); }); } + +export async function GetMembersOfCommunity(communityID) { + return axios + .get(API_URL + "community/" + communityID + "/members", { + headers: tokenHeader(), + }) + .then((response) => { + return response.data; + }) + .catch((error) => { + console.error(error); + }); +} diff --git a/src/views/CommunityViews/MemberListView.vue b/src/views/CommunityViews/MemberListView.vue index d250c0d..f3b0bd4 100644 --- a/src/views/CommunityViews/MemberListView.vue +++ b/src/views/CommunityViews/MemberListView.vue @@ -1,83 +1,13 @@ <template> - <div class="flex items-center justify-between mx-4"> - <div class="flex-1 min-w-0"> - <h2 - class="text-2xl font-bold leading-7 text-gray-900 sm:text-3xl sm:truncate" - > - {{ groupe.name }} - </h2> - <div - class="mt-1 flex flex-col sm:flex-row sm:flex-wrap sm:mt-0 sm:space-x-6" - > - <div class="mt-2 flex items-center text-sm text-gray-500"> - <svg - class="flex-shrink-0 mr-1.5 h-5 w-5 text-gray-400" - xmlns="http://www.w3.org/2000/svg" - viewBox="0 0 20 20" - fill="currentColor" - aria-hidden="true" - > - <path - fill-rule="evenodd" - d="M5.05 4.05a7 7 0 119.9 9.9L10 18.9l-4.95-4.95a7 7 0 010-9.9zM10 11a2 2 0 100-4 2 2 0 000 4z" - clip-rule="evenodd" - /> - </svg> - {{ groupe.address }} - </div> - </div> - </div> - <div class="flex"> - <span class="hidden sm:block"> - <button - v-if="adminStatus" - @click="edit()" - type="button" - class="inline-flex items-center px-4 py-2 border border-gray-300 rounded-md shadow-sm text-sm font-medium text-gray-700 bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500" - > - <!-- Heroicon name: solid/pencil --> - <svg - class="-ml-1 mr-2 h-5 w-5 text-gray-500" - xmlns="http://www.w3.org/2000/svg" - viewBox="0 0 20 20" - fill="currentColor" - aria-hidden="true" - > - <path - d="M13.586 3.586a2 2 0 112.828 2.828l-.793.793-2.828-2.828.793-.793zM11.379 5.793L3 14.172V17h2.828l8.38-8.379-2.83-2.828z" - /> - </svg> - Edit - </button> - </span> - </div> - </div> - <div class="h-screen bg-gray-200 content-top grid place-items-top"> - <member-list :admin="editing" /> - </div> + <MemberList/> </template> <script> import MemberList from "@/components/CommunityComponents/MemberList.vue"; export default { - data() { - return { - groupe: { - name: "Solsikken borettslag", - address: "Sollia 6, 7033 Trondheim", - }, - adminStatus: false, - editing: false, - }; - }, components: { MemberList, }, - methods: { - edit() { - this.editing = !this.editing; - }, - }, }; </script> -- GitLab