Add team mutations and pages

This commit is contained in:
Ramon Wenger 2021-03-25 16:31:11 +01:00
parent d334370f3b
commit 19bcbaf168
9 changed files with 104 additions and 42 deletions

View File

@ -21,6 +21,7 @@
</div>
<div
class="profile-sidebar__item"
v-if="me.isTeacher"
@click="close">
<router-link
:to="myTeamPage"
@ -64,40 +65,40 @@
import ClassSelectionWidget from '@/components/school-class/ClassSelectionWidget';
import sidebarMixin from '@/mixins/sidebar';
import sidebar from '@/mixins/sidebar';
import me from '@/mixins/me';
import LogoutWidget from '@/components/LogoutWidget';
import {MY_TEAM} from '@/router/me.names';
export default {
mixins: [sidebarMixin],
mixins: [sidebar, me],
components: {
LogoutWidget,
ClassSelectionWidget,
ProfileWidget,
Cross
Cross,
},
computed: {
myTeamPage() {
return {
name: MY_TEAM
name: MY_TEAM,
};
}
},
},
methods: {
close() {
this.closeSidebar('profile');
}
},
},
};
</script>
<style scoped lang="scss">
@import "@/styles/_variables.scss";
@import "@/styles/_mixins.scss";
@import "~styles/helpers";
$desktop-width: 333px;

View File

@ -2,6 +2,16 @@
query MeQuery {
me {
...UserParts
team {
name
code
id
members {
firstName
lastName
id
}
}
isTeacher
permissions
onboardingVisited

View File

@ -0,0 +1,9 @@
mutation CreateTeamMutation($input: CreateTeamInput!) {
createTeam(input: $input) {
success
team {
name
code
}
}
}

View File

@ -0,0 +1,9 @@
mutation JoinTeamMutation($input: JoinTeamInput!) {
joinTeam(input: $input) {
success
team {
name
code
}
}
}

View File

@ -10,6 +10,7 @@ export default {
permissions: [],
schoolClasses: [],
isTeacher: false,
team: null
},
showPopover: false,
};

View File

@ -13,12 +13,15 @@
</template>
<script>
import addSchoolClassMixin from '@/mixins/add-school-class';
import addTeamMixin from '@/mixins/add-team';
import JoinForm from '@/components/profile/JoinForm';
import CREATE_TEAM_MUTATION from '@/graphql/gql/mutations/createTeam.gql';
import {MY_TEAM} from '@/router/me.names';
export default {
mixins: [addSchoolClassMixin],
mixins: [addTeamMixin],
components: {
JoinForm
@ -35,22 +38,20 @@
this.error = '';
},
createTeam(name) {
throw new Error('not implemented', name);
// let self = this;
// this.$apollo.mutate({
// mutation: CREATE_CLASS_MUTATION,
// variables: {
// input: {
// name,
// },
// },
// update(store, {data: {createSchoolClass: {schoolClass}}}) {
// self.addSchoolClass(store, schoolClass);
// self.$router.push({
// name: 'my-class',
// });
// },
// });
this.$apollo.mutate({
mutation: CREATE_TEAM_MUTATION,
variables: {
input: {
name,
},
},
update: (store, {data: {createTeam: {team}}}) => {
this.addTeam(store, team);
this.$router.push({
name: MY_TEAM,
});
},
});
},
cancel() {
this.$router.go(-1);
@ -58,10 +59,3 @@
},
};
</script>
<style scoped lang="scss">
@import "@/styles/_variables.scss";
.create-class {
}
</style>

View File

@ -0,0 +1,17 @@
<template>
<show-code
:name="me.team.name"
:code="me.team.code"
class="show-school-class-code"
type="Team"/>
</template>
<script>
import me from '@/mixins/me';
import ShowCode from '@/components/profile/ShowCode';
export default {
mixins: [me],
components: {ShowCode},
};
</script>

View File

@ -1,3 +1,5 @@
export const MY_TEAM = 'my-team';
export const JOIN_TEAM = 'join-team';
export const CREATE_TEAM = 'create-team';
export const SHOW_SCHOOL_CLASS_CODE = 'show-school-class-code';
export const SHOW_TEAM_CODE = 'show-teams-code';

View File

@ -4,12 +4,13 @@ import myClass from '@/pages/myClass';
import activity from '@/pages/activity';
import oldClasses from '@/pages/oldClasses';
import createClass from '@/pages/createClass';
import showCode from '@/pages/showCode';
import myTeam from '@/pages/me/team';
import showSchoolClassCode from '@/pages/me/showSchoolClassCode';
import showTeamCode from '@/pages/me/showTeamCode';
import myTeam from '@/pages/me/myTeam';
import joinTeam from '@/pages/me/joinTeam';
import createTeam from '@/pages/me/createTeam';
import {JOIN_TEAM, MY_TEAM, CREATE_TEAM} from './me.names';
import {CREATE_TEAM, JOIN_TEAM, MY_TEAM, SHOW_SCHOOL_CLASS_CODE, SHOW_TEAM_CODE} from './me.names';
export default [
{
@ -17,7 +18,7 @@ export default [
component: profilePage,
children: [
{path: 'profile', name: 'profile', component: profile, meta: {isProfile: true}},
{path: 'my-class', name: 'my-class', component: myClass, meta: {isProfile: true}},
{path: 'class', alias: 'my-class', name: 'my-class', component: myClass, meta: {isProfile: true}},
{path: 'activity', name: 'activity', component: activity, meta: {isProfile: true}},
{path: '', name: 'profile-activity', component: activity, meta: {isProfile: true}},
{
@ -26,11 +27,29 @@ export default [
component: oldClasses,
meta: {isProfile: true},
},
{path: 'create-class', name: 'create-class', component: createClass, meta: {layout: 'simple'}},
{path: 'show-code', name: 'show-code', component: showCode, meta: {layout: 'simple'}},
{path: 'my-team', name: MY_TEAM, component: myTeam, meta: {isProfile: true}},
{path: 'join-team', name: JOIN_TEAM, component: joinTeam, meta: {isProfile: true, layout: 'simple'}},
{path: 'create-team', name: CREATE_TEAM, component: createTeam, meta: {isProfile: true, layout: 'simple'}},
{
path: 'class/create',
alias: 'create-class',
name: 'create-class',
component: createClass,
meta: {layout: 'simple'},
},
{
path: 'class/code',
alias: 'show-code',
name: SHOW_SCHOOL_CLASS_CODE,
component: showSchoolClassCode,
meta: {layout: 'simple'},
},
{path: 'team', name: MY_TEAM, component: myTeam, meta: {isProfile: true}},
{path: 'team/join', name: JOIN_TEAM, component: joinTeam, meta: {isProfile: true, layout: 'simple'}},
{path: 'team/create', name: CREATE_TEAM, component: createTeam, meta: {isProfile: true, layout: 'simple'}},
{
path: 'team/code',
name: SHOW_TEAM_CODE,
component: showTeamCode,
meta: {layout: 'simple'},
},
],
},
];