Add component to edit a room
This commit is contained in:
parent
643374140e
commit
b60f3f1c06
|
|
@ -1,5 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<router-link to="/room/new" tag="div" class="add-room">
|
<router-link to="/new-room" tag="div" class="add-room">
|
||||||
<add-icon class="add-room__add"></add-icon>
|
<add-icon class="add-room__add"></add-icon>
|
||||||
</router-link>
|
</router-link>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -22,10 +22,7 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
border: 1px solid #D2D2D2;
|
|
||||||
border-radius: 12px;
|
|
||||||
@include widget-shadow;
|
@include widget-shadow;
|
||||||
box-shadow: 0 3px 9px 0 rgba(0, 0, 0, 0.12);
|
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
||||||
&__add {
|
&__add {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
<template>
|
||||||
|
<room-form
|
||||||
|
:room="room"
|
||||||
|
@save="updateRoom"
|
||||||
|
></room-form>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import RoomForm from '@/components/rooms/RoomForm';
|
||||||
|
|
||||||
|
import UPDATE_ROOM_MUTATION from '@/graphql/gql/mutations/updateRoom.gql';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
props: ['room'],
|
||||||
|
|
||||||
|
components: {
|
||||||
|
RoomForm
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
updateRoom(room) {
|
||||||
|
this.$apollo.mutate({
|
||||||
|
mutation: UPDATE_ROOM_MUTATION,
|
||||||
|
variables: {
|
||||||
|
input: {
|
||||||
|
room: {
|
||||||
|
id: room.id,
|
||||||
|
title: room.title,
|
||||||
|
appearance: room.appearance,
|
||||||
|
description: room.description,
|
||||||
|
userGroup: room.userGroup.id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).then(() => {
|
||||||
|
this.$router.push('/rooms');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
@ -24,7 +24,7 @@
|
||||||
appearance: defaultColor,
|
appearance: defaultColor,
|
||||||
title: '',
|
title: '',
|
||||||
description: '',
|
description: '',
|
||||||
userGroup: 'VXNlckdyb3VwTm9kZToy'
|
userGroup: 'VXNlckdyb3VwTm9kZToxMw=='
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
<div class="room-form__footer">
|
<div class="room-form__footer">
|
||||||
<button
|
<button
|
||||||
class="button button--primary room-form__save-button"
|
class="button button--primary room-form__save-button"
|
||||||
@click="$emit('save', room)"
|
@click="$emit('save', localRoom)"
|
||||||
>Speichern
|
>Speichern
|
||||||
</button>
|
</button>
|
||||||
<button class="button">Abbrechen</button>
|
<button class="button">Abbrechen</button>
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,13 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="room-popover">
|
<div class="room-popover">
|
||||||
<a class="room-popover__link">Raum löschen</a>
|
<a class="room-popover__link">Raum löschen</a>
|
||||||
<a class="room-popover__link">Raum bearbeiten</a>
|
<router-link :to="{name: 'edit-room', params: {id: id}}" class="room-popover__link">Raum bearbeiten</router-link>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
props: ['room']
|
props: ['id']
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
@ -33,6 +33,7 @@
|
||||||
font-size: toRem(14px);
|
font-size: toRem(14px);
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
padding: 5px 0;
|
padding: 5px 0;
|
||||||
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ fragment RoomParts on RoomNode {
|
||||||
title
|
title
|
||||||
entryCount
|
entryCount
|
||||||
appearance
|
appearance
|
||||||
|
description
|
||||||
userGroup {
|
userGroup {
|
||||||
id
|
id
|
||||||
name
|
name
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
#import "../fragments/roomParts.gql"
|
||||||
|
mutation UpdateRoom($input: UpdateRoomInput!){
|
||||||
|
updateRoom(input: $input) {
|
||||||
|
room {
|
||||||
|
...RoomParts
|
||||||
|
},
|
||||||
|
errors
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#{
|
||||||
|
#"input": {
|
||||||
|
# "room":
|
||||||
|
# {
|
||||||
|
# "title": "Hallo",
|
||||||
|
# "appearance": "red",
|
||||||
|
# "description": "Velo",
|
||||||
|
# "userGroup": "VXNlckdyb3VwTm9kZToy",
|
||||||
|
# "id": "Um9vbU5vZGU6MTc="
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
#}
|
||||||
|
|
@ -1,15 +1,7 @@
|
||||||
|
#import "./fragments/roomParts.gql"
|
||||||
query RoomEntriesQuery($slug: String!) {
|
query RoomEntriesQuery($slug: String!) {
|
||||||
room(slug: $slug) {
|
room(slug: $slug) {
|
||||||
id
|
...RoomParts
|
||||||
title
|
|
||||||
slug
|
|
||||||
appearance
|
|
||||||
pk
|
|
||||||
userGroup {
|
|
||||||
id
|
|
||||||
name
|
|
||||||
year
|
|
||||||
}
|
|
||||||
roomEntries {
|
roomEntries {
|
||||||
edges {
|
edges {
|
||||||
node {
|
node {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
#import "./fragments/roomParts.gql"
|
||||||
|
query RoomQuery($id: ID!) {
|
||||||
|
room(id: $id) {
|
||||||
|
...RoomParts
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,51 @@
|
||||||
|
<template>
|
||||||
|
<div class="edit-room-page">
|
||||||
|
<edit-room :room="room" v-if="this.room.id"></edit-room>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import EditRoom from '@/components/rooms/EditRoom';
|
||||||
|
|
||||||
|
import ROOM_QUERY from '@/graphql/gql/roomQuery.gql';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
props: ['id'],
|
||||||
|
|
||||||
|
components: {
|
||||||
|
EditRoom
|
||||||
|
},
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
room: {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
apollo: {
|
||||||
|
room: {
|
||||||
|
query: ROOM_QUERY,
|
||||||
|
variables() {
|
||||||
|
return {
|
||||||
|
id: this.id
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// manual: true,
|
||||||
|
// result({data, loading, networkStatus}) {
|
||||||
|
// if (!loading) {
|
||||||
|
// this.room = Object.assign({}, this.$getRidOfEdges(data).room);
|
||||||
|
// this.$store.dispatch('setSpecialContainerClass', this.room.appearance);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.edit-room-page {
|
||||||
|
display: grid;
|
||||||
|
justify-items: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -7,6 +7,7 @@ import module from '@/pages/module'
|
||||||
import rooms from '@/pages/rooms'
|
import rooms from '@/pages/rooms'
|
||||||
import room from '@/pages/room'
|
import room from '@/pages/room'
|
||||||
import newRoom from '@/pages/newRoom'
|
import newRoom from '@/pages/newRoom'
|
||||||
|
import editRoom from '@/pages/editRoom'
|
||||||
import article from '@/pages/article'
|
import article from '@/pages/article'
|
||||||
import basicknowledge from '@/pages/basicknowledge'
|
import basicknowledge from '@/pages/basicknowledge'
|
||||||
import p404 from '@/pages/p404'
|
import p404 from '@/pages/p404'
|
||||||
|
|
@ -15,7 +16,8 @@ const routes = [
|
||||||
{path: '/', name: 'module', component: module, meta: {filter: true}},
|
{path: '/', name: 'module', component: module, meta: {filter: true}},
|
||||||
{path: '/module', name: 'module', component: module, meta: {filter: true}},
|
{path: '/module', name: 'module', component: module, meta: {filter: true}},
|
||||||
{path: '/rooms', name: 'rooms', component: rooms, meta: {filter: true}},
|
{path: '/rooms', name: 'rooms', component: rooms, meta: {filter: true}},
|
||||||
{path: '/room/new', name: 'new-room', component: newRoom},
|
{path: '/new-room/', name: 'new-room', component: newRoom},
|
||||||
|
{path: '/edit-room/:id', name: 'edit-room', component: editRoom, props: true},
|
||||||
{path: '/room/:slug', name: 'room', component: room, props: true},
|
{path: '/room/:slug', name: 'room', component: room, props: true},
|
||||||
{path: '/article', name: 'article', component: article, meta: {layout: 'simple'}},
|
{path: '/article', name: 'article', component: article, meta: {layout: 'simple'}},
|
||||||
{path: '/basic-knowledge', name: 'basic-knowledge', component: basicknowledge, meta: {layout: 'simple'}},
|
{path: '/basic-knowledge', name: 'basic-knowledge', component: basicknowledge, meta: {layout: 'simple'}},
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue