Skip to content
Snippets Groups Projects
Commit c5c54cd4 authored by Erik Borgeteien Hansen's avatar Erik Borgeteien Hansen
Browse files

refactor

parent 0d8b8113
No related branches found
No related tags found
1 merge request!63Community popup
<template> <template>
<ul> <ul>
<li v-for="(group, index) in groupList" :key="index"> <li v-for="community in communities" :key="community">
<group-list-item :group="group" /> <CommunityListItem :community="community" :member="member" />
</li> </li>
</ul> </ul>
</template> </template>
<script> <script>
import GroupListItem from "@/components/CommunityComponents/CommunityListItem.vue"; import CommunityListItem from "@/components/CommunityComponents/CommunityListItem.vue";
export default { export default {
name: "GroupList", name: "CommunityList",
props: { props: {
groupList: Array, communities: Array,
member: Boolean,
}, },
components: { components: {
GroupListItem, CommunityListItem,
}, },
}; };
</script> </script>
<template> <template>
<NotificationModal
@close="this.dialogOpen = false"
:visible="dialogOpen"
:title="community.name"
:message="community.description"
>
</NotificationModal>
<div <div
@click="toggleDialog()"
class="bg-white shadow dark:bg-gray-800 select-none cursor-pointer hover:bg-gray-50 flex items-center p-4" class="bg-white shadow dark:bg-gray-800 select-none cursor-pointer hover:bg-gray-50 flex items-center p-4"
> >
<div class="h-10 w-10 flex flex-col justify-center items-center mr-4"> <div class="h-10 w-10 flex flex-col justify-center items-center mr-4">
<img alt="groupIMG" src="../../assets/group.png" /> <img alt="groupIMG" src="../../assets/group.png" />
</div> </div>
<div class="flex-1 pl-1"> <div class="flex-1 pl-1 overflow-hidden">
<div class="font-medium dark:text-white"> <div class="font-medium dark:text-white truncate">
{{ group.name }} {{ community.name }}
</div> </div>
</div> </div>
<div class="flex flex-row justify-center"> <div class="flex flex-row justify-center items-center">
<LockClosedIcon
v-if="community.visibility === 0"
class="max-h-6 max-w-6 shrink m-2"
/>
<LockOpenIcon
v-if="community.visibility === 1"
class="max-h-6 max-w-6 shrink m-2"
/>
<button <button
@click="goToJoin(group.communityId)" @click="goToJoin(community.communityId)"
v-if="!isMember" v-if="!member"
class="px-4 py-2 w-24 font-medium tracking-wide text-white capitalize transition-colors duration-200 transform bg-blue-600 rounded-md hover:bg-blue-500 focus:outline-none focus:ring focus:ring-blue-300 focus:ring-opacity-80" class="px-4 py-2 w-24 font-medium tracking-wide text-white capitalize transition-colors duration-200 transform bg-blue-600 rounded-md hover:bg-blue-500 focus:outline-none focus:ring focus:ring-blue-300 focus:ring-opacity-80"
> >
Bli med Bli med
</button> </button>
<button <button
v-if="isMember" v-if="member"
@click="goToGroup(group.communityId)" @click="goToGroup(community.communityId)"
class="px-4 py-2 w-24 font-medium tracking-wide text-white capitalize transition-colors duration-200 transform bg-blue-600 rounded-md hover:bg-blue-500 focus:outline-none focus:ring focus:ring-blue-300 focus:ring-opacity-80" class="px-4 py-2 w-24 font-medium tracking-wide text-white capitalize transition-colors duration-200 transform bg-blue-600 rounded-md hover:bg-blue-500 focus:outline-none focus:ring focus:ring-blue-300 focus:ring-opacity-80"
> >
Gå til Gå til
...@@ -30,17 +46,24 @@ ...@@ -30,17 +46,24 @@
</template> </template>
<script> <script>
import { getMyGroups } from "@/utils/apiutil"; import { LockClosedIcon, LockOpenIcon } from "@heroicons/vue/outline";
import NotificationModal from "@/components/BaseComponents/NotificationModal.vue";
export default { export default {
name: "GroupListItem", name: "CommunityListItem",
components: {
NotificationModal,
LockClosedIcon,
LockOpenIcon,
},
data() { data() {
return { return {
myGroups: [], dialogOpen: false,
}; };
}, },
props: { props: {
group: Object, community: Object,
member: Boolean,
}, },
methods: { methods: {
goToGroup(id) { goToGroup(id) {
...@@ -49,15 +72,9 @@ export default { ...@@ -49,15 +72,9 @@ export default {
goToJoin(id) { goToJoin(id) {
this.$router.push("/community/" + id + "/join"); this.$router.push("/community/" + id + "/join");
}, },
async getMyGroups() { toggleDialog() {
this.myGroups = await getMyGroups(); this.dialogOpen = !this.dialogOpen;
}, },
isMember(group) {
return this.myGroups.includes(group);
},
},
beforeMount() {
this.getMyGroups();
}, },
}; };
</script> </script>
<template> <template>
<div> <div>
<img <img
class="cursor-pointer h-8 mr-4 mt-4 float-right" class="cursor-pointer h-8 mr-4 mt-4 float-right"
v-if="isLoggedIn" v-if="loggedIn"
src="@/assets/newCommunity.png" src="@/assets/newCommunity.png"
alt="Legg til gruppe" alt="Legg til gruppe"
@click="$router.push('/createNewGroup')" @click="$router.push('/createNewGroup')"
/> />
</div> </div>
<div> <div>
<div id="myGroups" v-if="isLoggedIn"> <div id="myGroups" v-if="loggedIn">
<div class="m-4" >Mine grupper:</div> <div class="m-4">Mine grupper:</div>
<group-list :groupList="myGroups" /> <CommunityList :communities="myCommunities" :member="true" />
</div> </div>
<div id="localGroups"> <div id="localGroups">
<div class="m-4">Offentlige grupper:</div> <div class="m-4">Offentlige grupper:</div>
<group-list :groupList="localGroups" /> <CommunityList :communities="publicCommunities" :member="false" />
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import GroupList from "@/components/CommunityComponents/CommunityList.vue"; import CommunityList from "@/components/CommunityComponents/CommunityList.vue";
import { getMyGroups, getVisibleGroups } from "@/utils/apiutil"; import { getMyGroups, getVisibleGroups } from "@/utils/apiutil";
export default { export default {
name: "HomeView", name: "HomeView",
data() { data() {
return { return {
isLoggedIn: false, loggedIn: false,
myGroups: [], myCommunities: [],
localGroups: [], publicCommunities: [],
}; };
}, },
components: { components: {
GroupList, CommunityList,
},
methods: {
async getMyGroups() {
this.myGroups = await getMyGroups();
},
async getPotentialGroups() {
this.localGroups = await getVisibleGroups();
},
}, },
async created() { async created() {
await this.getMyGroups(); this.loggedIn = this.$store.state.user.token !== null;
await this.getPotentialGroups(); this.publicCommunities = await getVisibleGroups();
if(this.$store.state.user.token !== null){ if (!this.loggedIn) return;
this.isLoggedIn = true this.myCommunities = await getMyGroups();
} this.publicCommunities = this.publicCommunities.filter(
}, (val) => !this.myCommunities.includes(val)
);
},
}; };
</script> </script>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment