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