Render room entry dynamically on article view

This commit is contained in:
Ramon Wenger 2018-10-11 14:09:09 +02:00
parent a4954b4e82
commit 3d0c9e4b93
5 changed files with 53 additions and 21 deletions

View File

@ -1,5 +1,5 @@
<template>
<router-link to="/article" tag="div" class="room-entry">
<router-link :to="{name: 'article', params: { slug: slug }}" tag="div" class="room-entry">
<div class="room-entry__header" v-if="image">
<img class="room-entry__image" :src="image" :alt="title">
</div>
@ -17,7 +17,7 @@
import UserWidget from '@/components/UserWidget.vue';
export default {
props: ['title', 'author', 'contents'],
props: ['title', 'author', 'contents', 'slug'],
components: {
UserWidget

View File

@ -0,0 +1,6 @@
#import "./fragments/roomEntryParts.gql"
query RoomEntryQuery($slug: String!) {
roomEntry(slug: $slug) {
...RoomEntryParts
}
}

File diff suppressed because one or more lines are too long

View File

@ -41,7 +41,7 @@ const routes = [
{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: '/article', name: 'article', component: article, meta: {layout: 'simple'}},
{path: '/article/:slug', name: 'article', component: article, meta: {layout: 'simple'}},
{path: '/basic-knowledge', name: 'basic-knowledge', component: basicknowledge, meta: {layout: 'simple'}},
{
path: '/book',

View File

@ -41,7 +41,7 @@ class RoomNode(DjangoObjectType):
class RoomsQuery(object):
# room = relay.Node.Field(RoomNode)
room_entry = relay.Node.Field(RoomEntryNode)
room_entry = graphene.Field(RoomEntryNode, id=graphene.ID(), slug=graphene.String())
room = graphene.Field(RoomNode, slug=graphene.String(), id=graphene.ID(), appearance=graphene.String())
rooms = DjangoFilterConnectionField(RoomNode)
@ -57,3 +57,12 @@ class RoomsQuery(object):
return Room.objects.get(slug=slug)
return None
def resolve_room_entry(self, info, **kwargs):
slug = kwargs.get('slug')
id = kwargs.get('id')
if id is not None:
return get_object(RoomEntry, id)
if slug is not None:
return RoomEntry.objects.get(slug=slug)
return None