|
|
@ -14,13 +14,14 @@ import { useCurrentUser } from '../hooks/useCurrentUser'
|
|
|
|
|
|
|
|
|
|
|
|
const CreateProblem = ({}) => {
|
|
|
|
const CreateProblem = ({}) => {
|
|
|
|
const [source, setSource] = useState('')
|
|
|
|
const [source, setSource] = useState('')
|
|
|
|
|
|
|
|
const [title, setTitle] = useState('')
|
|
|
|
|
|
|
|
|
|
|
|
type ProblemFields = {
|
|
|
|
type ProblemFields = {
|
|
|
|
title?: string
|
|
|
|
title?: string
|
|
|
|
content: string
|
|
|
|
content: string
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const createProblem = async () => {
|
|
|
|
const handleCreateProblem = async () => {
|
|
|
|
if (source.trim().length === 0) {
|
|
|
|
if (source.trim().length === 0) {
|
|
|
|
alert('Il campo di testo è vuoto!')
|
|
|
|
alert('Il campo di testo è vuoto!')
|
|
|
|
return
|
|
|
|
return
|
|
|
@ -28,6 +29,7 @@ const CreateProblem = ({}) => {
|
|
|
|
|
|
|
|
|
|
|
|
const id = await server.post<ProblemFields>('/api/problem', {
|
|
|
|
const id = await server.post<ProblemFields>('/api/problem', {
|
|
|
|
content: source,
|
|
|
|
content: source,
|
|
|
|
|
|
|
|
title,
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
route(prependBaseUrl(`/problem/${id}`))
|
|
|
|
route(prependBaseUrl(`/problem/${id}`))
|
|
|
@ -35,8 +37,17 @@ const CreateProblem = ({}) => {
|
|
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
return (
|
|
|
|
<>
|
|
|
|
<>
|
|
|
|
|
|
|
|
<div class="problem-title">
|
|
|
|
|
|
|
|
<label>Titolo</label>
|
|
|
|
|
|
|
|
<input
|
|
|
|
|
|
|
|
type="text"
|
|
|
|
|
|
|
|
value={title}
|
|
|
|
|
|
|
|
onInput={e => setTitle(e.target instanceof HTMLInputElement ? e.target.value : '')}
|
|
|
|
|
|
|
|
placeholder="Problema..."
|
|
|
|
|
|
|
|
/>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
<MarkdownEditor placeholder="Scrivi un nuovo problema..." {...{ source, setSource }} />
|
|
|
|
<MarkdownEditor placeholder="Scrivi un nuovo problema..." {...{ source, setSource }} />
|
|
|
|
<button onClick={createProblem}>Aggiungi Problema</button>
|
|
|
|
<button onClick={handleCreateProblem}>Aggiungi Problema</button>
|
|
|
|
</>
|
|
|
|
</>
|
|
|
|
)
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -123,6 +134,8 @@ export const AdminPage = ({}) => {
|
|
|
|
<>
|
|
|
|
<>
|
|
|
|
<hr />
|
|
|
|
<hr />
|
|
|
|
<div class="subtitle">Controlli speciali solo per Admin</div>
|
|
|
|
<div class="subtitle">Controlli speciali solo per Admin</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{/* TODO: make this work */}
|
|
|
|
<div class="scrollable">
|
|
|
|
<div class="scrollable">
|
|
|
|
<div class="users-table" style={{ '--cols': 4 }}>
|
|
|
|
<div class="users-table" style={{ '--cols': 4 }}>
|
|
|
|
<div class="cell header">Username Ateneo</div>
|
|
|
|
<div class="cell header">Username Ateneo</div>
|
|
|
|