Remove actions in class list for students
This commit is contained in:
parent
9dab0856e8
commit
f4270b8243
|
|
@ -3069,6 +3069,18 @@
|
||||||
},
|
},
|
||||||
"isDeprecated": false,
|
"isDeprecated": false,
|
||||||
"deprecationReason": null
|
"deprecationReason": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "isTeacher",
|
||||||
|
"description": null,
|
||||||
|
"args": [],
|
||||||
|
"type": {
|
||||||
|
"kind": "SCALAR",
|
||||||
|
"name": "Boolean",
|
||||||
|
"ofType": null
|
||||||
|
},
|
||||||
|
"isDeprecated": false,
|
||||||
|
"deprecationReason": null
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"inputFields": null,
|
"inputFields": null,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
{
|
{
|
||||||
"me": {
|
"me": {
|
||||||
"id": "VXNlck5vZGU6Mg==",
|
"id": "VXNlck5vZGU6Mg==",
|
||||||
|
"isTeacher": true,
|
||||||
"selectedClass": {
|
"selectedClass": {
|
||||||
"id": "U2Nob29sQ2xhc3NOb2RlOjE=",
|
"id": "U2Nob29sQ2xhc3NOb2RlOjE=",
|
||||||
"name": "Moordale",
|
"name": "Moordale",
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@ describe('Class Management', () => {
|
||||||
cy.get('[data-cy=class-selection-entry]').should('have.length', 2);
|
cy.get('[data-cy=class-selection-entry]').should('have.length', 2);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should leave and re-join class', () => {
|
it.only('should leave and re-join class', () => {
|
||||||
const teacher = {
|
const teacher = {
|
||||||
...me,
|
...me,
|
||||||
permissions: ['users.can_manage_school_class_content']
|
permissions: ['users.can_manage_school_class_content']
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
<div class="school-class">
|
<div class="school-class">
|
||||||
<h2 class="school-class__name">{{name}}</h2>
|
<h2 class="school-class__name">{{name}}</h2>
|
||||||
<div class="school-class__members school-class-members">
|
<div class="school-class__members school-class-members">
|
||||||
<ul class="school-class-members__list members-list" data-cy="active-class-members-list">
|
<ul class="school-class-members__list members-list members-list--active" data-cy="active-class-members-list">
|
||||||
<li
|
<li
|
||||||
class="members-list__item member-item"
|
class="members-list__item member-item"
|
||||||
data-cy="school-class-member"
|
data-cy="school-class-member"
|
||||||
|
|
@ -10,11 +10,15 @@
|
||||||
:key="member.id">
|
:key="member.id">
|
||||||
<span class="member-item__name">{{fullName(member)}}</span>
|
<span class="member-item__name">{{fullName(member)}}</span>
|
||||||
<span class="member-item__role">{{role(member)}}</span>
|
<span class="member-item__role">{{role(member)}}</span>
|
||||||
<a class="member-item__action" data-cy="remove-from-class" @click="$emit('remove', member)">Deaktivieren</a>
|
<a
|
||||||
|
class="member-item__action"
|
||||||
|
data-cy="remove-from-class"
|
||||||
|
v-if="teacher"
|
||||||
|
@click="$emit('remove', member)">Deaktivieren</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h3>Deaktivierte Benutzer</h3>
|
<h3 class="school-class__inactive-heading">Deaktivierte Benutzer</h3>
|
||||||
<ul data-cy="inactive-class-members-list">
|
<ul data-cy="inactive-class-members-list" class="members-list members-list--inactive">
|
||||||
<li
|
<li
|
||||||
class="members-list__item member-item"
|
class="members-list__item member-item"
|
||||||
data-cy="school-class-member"
|
data-cy="school-class-member"
|
||||||
|
|
@ -22,7 +26,11 @@
|
||||||
:key="member.id">
|
:key="member.id">
|
||||||
<span class="member-item__name">{{fullName(member)}}</span>
|
<span class="member-item__name">{{fullName(member)}}</span>
|
||||||
<span class="member-item__role">{{role(member)}}</span>
|
<span class="member-item__role">{{role(member)}}</span>
|
||||||
<a class="member-item__action" data-cy="add-to-class" @click="$emit('add', member)">Aktivieren</a>
|
<a
|
||||||
|
class="member-item__action"
|
||||||
|
data-cy="add-to-class"
|
||||||
|
v-if="teacher"
|
||||||
|
@click="$emit('add', member)">Aktivieren</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -31,7 +39,7 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
props: ['members', 'name'],
|
props: ['members', 'name', 'teacher'],
|
||||||
methods: {
|
methods: {
|
||||||
fullName(member) {
|
fullName(member) {
|
||||||
return `${member.firstName} ${member.lastName}`;
|
return `${member.firstName} ${member.lastName}`;
|
||||||
|
|
@ -57,7 +65,20 @@
|
||||||
|
|
||||||
$height: 52px;
|
$height: 52px;
|
||||||
|
|
||||||
|
.school-class {
|
||||||
|
&__inactive-heading {
|
||||||
|
@include heading-4;
|
||||||
|
margin-bottom: $small-spacing;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.members-list {
|
.members-list {
|
||||||
|
border-top: 1px solid $color-silver-dark;
|
||||||
|
|
||||||
|
&--active {
|
||||||
|
margin-bottom: 2*$large-spacing;
|
||||||
|
}
|
||||||
|
|
||||||
&__item {
|
&__item {
|
||||||
line-height: $height;
|
line-height: $height;
|
||||||
height: $height;
|
height: $height;
|
||||||
|
|
@ -79,14 +100,15 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
&__role {
|
&__role {
|
||||||
padding-right: $medium-spacing;
|
|
||||||
flex: 0 1 110px;
|
flex: 0 1 110px;
|
||||||
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
&__action {
|
&__action {
|
||||||
@include default-link;
|
@include default-link;
|
||||||
color: $color-brand;
|
color: $color-brand;
|
||||||
flex: 0 1 110px;
|
flex: 0 1 110px;
|
||||||
|
padding-left: $large-spacing;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
query MySchoolClassQuery {
|
query MySchoolClassQuery {
|
||||||
me {
|
me {
|
||||||
id
|
id
|
||||||
|
isTeacher
|
||||||
selectedClass {
|
selectedClass {
|
||||||
id
|
id
|
||||||
name
|
name
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,9 @@
|
||||||
<h1 class="my-class__header" data-cy="class-list-title">Klassenliste</h1>
|
<h1 class="my-class__header" data-cy="class-list-title">Klassenliste</h1>
|
||||||
<class-list
|
<class-list
|
||||||
class="my-class__class"
|
class="my-class__class"
|
||||||
:name="selectedClass.name"
|
:name="me.selectedClass.name"
|
||||||
:members="selectedClass.members"
|
:members="me.selectedClass.members"
|
||||||
|
:teacher="me.isTeacher"
|
||||||
@remove="remove"
|
@remove="remove"
|
||||||
@add="add"
|
@add="add"
|
||||||
></class-list>
|
></class-list>
|
||||||
|
|
@ -24,12 +25,13 @@
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
changeMember(member, active) {
|
changeMember(member, active) {
|
||||||
|
console.log()
|
||||||
this.$apollo.mutate({
|
this.$apollo.mutate({
|
||||||
mutation: ADD_REMOVE_MEMBER_MUTATION,
|
mutation: ADD_REMOVE_MEMBER_MUTATION,
|
||||||
variables: {
|
variables: {
|
||||||
input: {
|
input: {
|
||||||
member: member.id,
|
member: member.id,
|
||||||
schoolClass: this.selectedClass.id,
|
schoolClass: this.me.selectedClass.id,
|
||||||
active
|
active
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -53,19 +55,22 @@
|
||||||
},
|
},
|
||||||
|
|
||||||
apollo: {
|
apollo: {
|
||||||
selectedClass: {
|
me: {
|
||||||
query: MY_SCHOOL_CLASS_QUERY,
|
query: MY_SCHOOL_CLASS_QUERY,
|
||||||
update(data) {
|
update(data) {
|
||||||
return this.$getRidOfEdges(data).me.selectedClass
|
return this.$getRidOfEdges(data).me
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
selectedClass: {
|
me: {
|
||||||
name: '',
|
isTeacher: false,
|
||||||
members: []
|
selectedClass: {
|
||||||
|
name: '',
|
||||||
|
members: []
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@ class UserNode(DjangoObjectType):
|
||||||
pk = graphene.Int()
|
pk = graphene.Int()
|
||||||
permissions = graphene.List(graphene.String)
|
permissions = graphene.List(graphene.String)
|
||||||
selected_class = graphene.Field(SchoolClassNode)
|
selected_class = graphene.Field(SchoolClassNode)
|
||||||
|
is_teacher = graphene.Boolean()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = User
|
model = User
|
||||||
|
|
@ -50,6 +51,8 @@ class UserNode(DjangoObjectType):
|
||||||
def resolve_selected_class(self, info):
|
def resolve_selected_class(self, info):
|
||||||
return self.selected_class()
|
return self.selected_class()
|
||||||
|
|
||||||
|
def resolve_is_teacher(self, info):
|
||||||
|
return self.is_teacher()
|
||||||
|
|
||||||
class ClassMemberNode(ObjectType):
|
class ClassMemberNode(ObjectType):
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue