* feat: apis for attaching chatlogs and polls to session materials * fix: anticipate becoming tzaware, and improve guard against attempts to provide docs for sessions that have no official timeslot assignment. * fix: get chatlog upload to actually work Modifications to several initial implementation decisions. Updates to the fixtures. * fix: test polls upload Refactored test to reduce duplicate code * fix: allow api keys to be created for the new endpoints * feat: add ability to view chatlog and polls documents. Show links in session materials. * fix: commit new template * fix: typo in migration signatures * feat: add main doc page handling for polls. Improve tests. * feat: chat log vue component + embedded vue loader * feat: render polls using Vue * fix: address pug syntax review comments from Nick. * fix: repair remaining mention of chat log from copymunging * fix: use double-quotes in html attributes * fix: provide missing choices update migration * test: silence html validator empty attr warnings * test: fix test_runner config * fix: locate session when looking at a dochistory object for polls or chatlog Co-authored-by: Nicolas Giard <github@ngpixel.com>
43 lines
839 B
Vue
43 lines
839 B
Vue
<template lang="pug">
|
|
n-theme
|
|
n-message-provider
|
|
component(:is='currentComponent', :component-id='props.componentId')
|
|
</template>
|
|
|
|
<script setup>
|
|
import { defineAsyncComponent, markRaw, onMounted, ref } from 'vue'
|
|
import { NMessageProvider } from 'naive-ui'
|
|
|
|
import NTheme from './components/n-theme.vue'
|
|
|
|
// COMPONENTS
|
|
|
|
const availableComponents = {
|
|
ChatLog: defineAsyncComponent(() => import('./components/ChatLog.vue')),
|
|
Polls: defineAsyncComponent(() => import('./components/Polls.vue')),
|
|
}
|
|
|
|
// PROPS
|
|
|
|
const props = defineProps({
|
|
componentName: {
|
|
type: String,
|
|
default: null
|
|
},
|
|
componentId: {
|
|
type: String,
|
|
default: null
|
|
}
|
|
})
|
|
|
|
// STATE
|
|
|
|
const currentComponent = ref(null)
|
|
|
|
// MOUNTED
|
|
|
|
onMounted(() => {
|
|
currentComponent.value = markRaw(availableComponents[props.componentName] || null)
|
|
})
|
|
</script>
|