Skip to content

Commit fd71483

Browse files
committed
fix prompt creation in course view
1 parent d5320df commit fd71483

File tree

2 files changed

+62
-40
lines changed

2 files changed

+62
-40
lines changed

src/client/components/Courses/Course/index.tsx

Lines changed: 61 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,21 @@
11
import { Edit, OpenInNew } from '@mui/icons-material'
2-
import { Alert, Box, Button, Checkbox, Container, FormControlLabel, Input, Modal, Paper, Skeleton, Stack, Tab, TextField, Tooltip, Typography } from '@mui/material'
2+
import {
3+
Alert,
4+
Box,
5+
Button,
6+
Checkbox,
7+
Container,
8+
FormControlLabel,
9+
Input,
10+
Modal,
11+
Paper,
12+
Skeleton,
13+
Stack,
14+
Tab,
15+
TextField,
16+
Tooltip,
17+
Typography,
18+
} from '@mui/material'
319
import { enqueueSnackbar } from 'notistack'
420
import { useEffect, useState } from 'react'
521
import { useTranslation } from 'react-i18next'
@@ -35,22 +51,22 @@ const Course = () => {
3551
const { language } = i18n
3652

3753
const { user, isLoading: userLoading } = useCurrentUser()
38-
const { data: course, isSuccess: isCourseSuccess, error, refetch: refetchCourse } = useCourse(id)
39-
console.log(course)
54+
const { data: chatInstance, isSuccess: isCourseSuccess, error, refetch: refetchCourse } = useCourse(id)
55+
console.log(chatInstance)
4056
if (error) {
4157
return <ApiErrorView error={error} />
4258
}
4359
useEffect(() => {
44-
if(isCourseSuccess){
45-
setResponsibilities(course?.responsibilities)
60+
if (isCourseSuccess) {
61+
setResponsibilities(chatInstance?.responsibilities)
4662
}
4763
}, [isCourseSuccess])
4864

4965
if (userLoading || !user || !isCourseSuccess) return null
5066

51-
const studentLink = `${window.location.origin}${PUBLIC_URL}/${course.courseId}`
67+
const studentLink = `${window.location.origin}${PUBLIC_URL}/${chatInstance.courseId}`
5268

53-
const amongResponsibles = course.responsibilities ? course.responsibilities.some((r) => r.user.id === user.id) : false
69+
const amongResponsibles = chatInstance.responsibilities ? chatInstance.responsibilities.some((r) => r.user.id === user.id) : false
5470

5571
if (!user.isAdmin && !amongResponsibles) {
5672
return (
@@ -65,13 +81,14 @@ const Course = () => {
6581
enqueueSnackbar(t('linkCopied'), { variant: 'info' })
6682
}
6783

68-
const courseEnabled = course.usageLimit > 0
84+
const courseEnabled = chatInstance.usageLimit > 0
6985

70-
const isCourseActive = courseEnabled && Date.parse(course.activityPeriod.endDate) > Date.now() && Date.parse(course.activityPeriod.startDate) <= Date.now()
86+
const isCourseActive =
87+
courseEnabled && Date.parse(chatInstance.activityPeriod.endDate) > Date.now() && Date.parse(chatInstance.activityPeriod.startDate) <= Date.now()
7188

72-
const willBeEnabled = courseEnabled && Date.parse(course.activityPeriod.startDate) > Date.now()
89+
const willBeEnabled = courseEnabled && Date.parse(chatInstance.activityPeriod.startDate) > Date.now()
7390

74-
const wasEnabled = courseEnabled && Date.parse(course.activityPeriod.endDate) < Date.now()
91+
const wasEnabled = courseEnabled && Date.parse(chatInstance.activityPeriod.endDate) < Date.now()
7592

7693
const getInfoSeverity = () => {
7794
if (!courseEnabled) return 'warning'
@@ -82,8 +99,8 @@ const Course = () => {
8299
const getInfoMessage = () => {
83100
if (!courseEnabled) return t('course:curreNotOpen')
84101
if (isCourseActive) return t('course:curreOpen')
85-
if (willBeEnabled) return `${t('course:curreWillBeOpen')} ${course.activityPeriod.startDate}`
86-
if (wasEnabled) return `${t('course:curreWasOpen')} ${course.activityPeriod.endDate}`
102+
if (willBeEnabled) return `${t('course:curreWillBeOpen')} ${chatInstance.activityPeriod.startDate}`
103+
if (wasEnabled) return `${t('course:curreWasOpen')} ${chatInstance.activityPeriod.endDate}`
87104
return ''
88105
}
89106

@@ -107,17 +124,16 @@ const Course = () => {
107124
const handleAddResponsible = async (e) => {
108125
e.preventDefault()
109126
const username = e.target.username.value
110-
const result = await apiClient.post(`/courses/${course.id}/responsibilities/assign`, { username: username })
111-
if(result.status === 200){
127+
const result = await apiClient.post(`/courses/${chatInstance.id}/responsibilities/assign`, { username: username })
128+
if (result.status === 200) {
112129
const responsibility = result.data
113130
setResponsibilities([...responsibilities, responsibility])
114131
refetchCourse()
115132
}
116-
117133
}
118134
const handleRemoveResponsibility = async (responsibility) => {
119-
const result = await apiClient.post(`/courses/${course.id}/responsibilities/remove`, { username: responsibility.user?.username })
120-
if(result.status === 200){
135+
const result = await apiClient.post(`/courses/${chatInstance.id}/responsibilities/remove`, { username: responsibility.user?.username })
136+
if (result.status === 200) {
121137
const filteredResponsibilities = responsibilities.filter((r) => r.id !== responsibility.id)
122138
setResponsibilities(filteredResponsibilities)
123139
}
@@ -139,33 +155,33 @@ const Course = () => {
139155
>
140156
<div style={{ display: 'flex', flexWrap: 'wrap' }}>
141157
<div style={{ ...full, boxSizing: 'border-box', height: '50px' }}>
142-
<Typography variant="h5">{course.name[language]}</Typography>
158+
<Typography variant="h5">{chatInstance.name[language]}</Typography>
143159
</div>
144160

145161
<div style={{ ...left, boxSizing: 'border-box', height: '50px' }}>
146-
<Typography>{course.courseUnits.map((cu) => cu.code).join(', ')}</Typography>
162+
<Typography>{chatInstance.courseUnits.map((cu) => cu.code).join(', ')}</Typography>
147163
</div>
148164
<div style={{ ...right, boxSizing: 'border-box', height: '50px' }}>
149-
<Typography style={{ fontStyle: 'italic' }}>{getCurTypeLabel(course.courseUnitRealisationTypeUrn ?? '', language)}</Typography>
165+
<Typography style={{ fontStyle: 'italic' }}>{getCurTypeLabel(chatInstance.courseUnitRealisationTypeUrn ?? '', language)}</Typography>
150166
</div>
151167

152168
<div style={{ ...left, boxSizing: 'border-box' }}>
153169
<Typography>
154-
{t('active')} {formatDate(course.activityPeriod)}
170+
{t('active')} {formatDate(chatInstance.activityPeriod)}
155171
</Typography>
156172
</div>
157173

158174
<div style={{ ...right, boxSizing: 'border-box' }}>
159-
<Link to={`https://studies.helsinki.fi/kurssit/toteutus/${course.courseId}`} target="_blank">
175+
<Link to={`https://studies.helsinki.fi/kurssit/toteutus/${chatInstance.courseId}`} target="_blank">
160176
{t('course:coursePage')} <OpenInNew fontSize="small" />
161177
</Link>
162178
</div>
163179

164180
{courseEnabled && (
165181
<div style={{ ...left, boxSizing: 'border-box' }}>
166182
<Typography>
167-
{t('admin:model')}: {course.model} <span style={{ marginRight: 20 }} />
168-
{t('admin:usageLimit')}: {course.usageLimit}
183+
{t('admin:model')}: {chatInstance.model} <span style={{ marginRight: 20 }} />
184+
{t('admin:usageLimit')}: {chatInstance.usageLimit}
169185
</Typography>
170186
</div>
171187
)}
@@ -211,11 +227,18 @@ const Course = () => {
211227
<TextField name="username" placeholder={'käyttäjänimi: '}></TextField>
212228
<Button type={'submit'}>Lisää</Button>
213229
</Form>
214-
<Stack sx={{margin: 1, padding: 1, borderColor: 'gray', borderWidth: 1, borderStyle: 'solid'}}>
230+
<Stack sx={{ margin: 1, padding: 1, borderColor: 'gray', borderWidth: 1, borderStyle: 'solid' }}>
215231
{responsibilities.map((responsibility) => (
216-
<Box key={responsibility.id} sx={{display: 'flex', alignItems: 'center', padding: 1}}>
217-
<Typography>{responsibility.user.last_name} {responsibility.user.first_names}</Typography>
218-
<AssignedResponsibilityManagement handleRemove={() => {handleRemoveResponsibility(responsibility)}} responsibility={responsibility}/>
232+
<Box key={responsibility.id} sx={{ display: 'flex', alignItems: 'center', padding: 1 }}>
233+
<Typography>
234+
{responsibility.user.last_name} {responsibility.user.first_names}
235+
</Typography>
236+
<AssignedResponsibilityManagement
237+
handleRemove={() => {
238+
handleRemoveResponsibility(responsibility)
239+
}}
240+
responsibility={responsibility}
241+
/>
219242
</Box>
220243
))}
221244
</Stack>
@@ -227,7 +250,7 @@ const Course = () => {
227250
</Box>
228251

229252
<Modal open={activityPeriodFormOpen} onClose={() => setActivityPeriodFormOpen(false)}>
230-
<EditCourseForm course={course} setOpen={setActivityPeriodFormOpen} user={user} />
253+
<EditCourseForm course={chatInstance} setOpen={setActivityPeriodFormOpen} user={user} />
231254
</Modal>
232255

233256
<Box my={2}>
@@ -242,29 +265,27 @@ const Course = () => {
242265
<Routes>
243266
<Route path="/" element={<Stats courseId={id} />} />
244267
<Route path={`/discussions/*`} element={<Discussion />} />
245-
<Route path="/prompts" element={<Prompts courseId={id} />} />
268+
<Route path="/prompts" element={<Prompts courseId={id} chatInstanceId={chatInstance.id} />} />
246269
<Route path="/rag" element={<Rag />} />
247270
</Routes>
248271
</Container>
249272
)
250273
}
251274

252-
const AssignedResponsibilityManagement = ({responsibility, handleRemove}) => {
275+
const AssignedResponsibilityManagement = ({ responsibility, handleRemove }) => {
253276
const { t, i18n } = useTranslation()
254-
if(!responsibility.createdByUserId){
255-
return (
256-
<Stack direction={'row'} sx={{marginLeft: 'auto', alignItems: 'center', height: '1rem'}} >
257-
</Stack>
258-
)}
277+
if (!responsibility.createdByUserId) {
278+
return <Stack direction={'row'} sx={{ marginLeft: 'auto', alignItems: 'center', height: '1rem' }}></Stack>
279+
}
259280
return (
260-
<Stack direction={'row'} sx={{marginLeft: 'auto', alignItems: 'center', height: '1rem'}} >
281+
<Stack direction={'row'} sx={{ marginLeft: 'auto', alignItems: 'center', height: '1rem' }}>
261282
<Typography>{t('course:customResponsibility')}</Typography>
262283
<Button onClick={handleRemove}>{t('course:remove')}</Button>
263284
</Stack>
264285
)
265286
}
266287

267-
const Prompts = ({ courseId }: { courseId: string }) => {
288+
const Prompts = ({ courseId, chatInstanceId }: { courseId: string; chatInstanceId: string }) => {
268289
const { t } = useTranslation()
269290
const [name, setName] = useState('')
270291
const [system, setSystem] = useState('')
@@ -290,7 +311,7 @@ const Prompts = ({ courseId }: { courseId: string }) => {
290311
const handleSave = async () => {
291312
try {
292313
await createMutation.mutateAsync({
293-
chatInstanceId: courseId,
314+
chatInstanceId,
294315
type: 'CHAT_INSTANCE',
295316
name,
296317
systemMessage: system,

src/client/hooks/usePromptMutation.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ interface NewPromptData {
1717

1818
export const useCreatePromptMutation = () => {
1919
const mutationFn = async (data: NewPromptData) => {
20+
console.log(data)
2021
const res = await apiClient.post(`/prompts`, data)
2122

2223
const prompt = res.data

0 commit comments

Comments
 (0)