mirror of
https://gitlab.com/megazordpobeda/DataRush.git
synced 2026-05-22 23:17:09 +00:00
Merge branch 'master' of gitlab.prodcontest.ru:team-15/project into feature/admin_validators
This commit is contained in:
@@ -18,7 +18,7 @@ def analyze_data_task(self, submission_id):
|
||||
files = [
|
||||
{
|
||||
"url": (
|
||||
f"{settings.MINIO_DEFAULT_CUSTOM_ENDPOINT_URL}/"
|
||||
f"{settings.MINIO_DEFAULT_CUSTOM_ENDPOINT_URL}"
|
||||
f"{urlparse(attachment.file.url).path}"
|
||||
),
|
||||
"bind_path": attachment.bind_at,
|
||||
|
||||
@@ -55,7 +55,6 @@ export const Header = () => {
|
||||
<div className="md:hidden">
|
||||
<Link to="/docs">
|
||||
<DropdownMenuItem>
|
||||
<FileText className="h-4 w-4 mr-2" />
|
||||
Материалы
|
||||
</DropdownMenuItem>
|
||||
</Link>
|
||||
|
||||
@@ -25,14 +25,7 @@ const TaskContent: React.FC<TaskContentProps> = ({ task }) => {
|
||||
|
||||
const attachments = attachmentsQuery.data || [];
|
||||
|
||||
const convertToMarkdown = (text: string): string => {
|
||||
if (!text) return '';
|
||||
|
||||
let markdown = text.replace(/\n/g, '\n\n');
|
||||
return markdown;
|
||||
};
|
||||
|
||||
const markdownText = convertToMarkdown(task.description);
|
||||
|
||||
return (
|
||||
<div className="flex-1 bg-white rounded-lg p-6">
|
||||
@@ -45,7 +38,7 @@ const TaskContent: React.FC<TaskContentProps> = ({ task }) => {
|
||||
remarkPlugins={[remarkMath, remarkGfm]}
|
||||
rehypePlugins={[rehypeKatex]}
|
||||
>
|
||||
{markdownText}
|
||||
{task.description}
|
||||
</ReactMarkdown>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -60,7 +60,6 @@ const CompetitionSession = () => {
|
||||
|
||||
setTimeout(() => {
|
||||
window.location.reload();
|
||||
setIsReloading(false);
|
||||
}, 2500);
|
||||
},
|
||||
onError: (error) => {
|
||||
@@ -69,7 +68,9 @@ const CompetitionSession = () => {
|
||||
});
|
||||
|
||||
const competition = competitionQuery.data;
|
||||
const tasks = tasksQuery.data || [];
|
||||
const tasks = [...(tasksQuery.data || [])].sort((a, b) => {
|
||||
return a.in_competition_position - b.in_competition_position;
|
||||
});
|
||||
const results = resultsQuery.data || [];
|
||||
const isLoading = tasksQuery.isLoading || competitionQuery.isLoading;
|
||||
const error = tasksQuery.error || competitionQuery.error
|
||||
|
||||
@@ -32,9 +32,9 @@ export function CompetitionCard({
|
||||
|
||||
return (
|
||||
<Card
|
||||
className={cn("aspect-square h-full w-auto overflow-hidden", className)}
|
||||
className={cn("h-full w-full overflow-hidden flex flex-col", className)}
|
||||
>
|
||||
<div className="relative h-full overflow-hidden">
|
||||
<div className="h-48 overflow-hidden">
|
||||
<img
|
||||
src={competition.image_url ? competition.image_url : '/DANO.png'}
|
||||
alt={competition.title}
|
||||
@@ -42,8 +42,8 @@ export function CompetitionCard({
|
||||
/>
|
||||
</div>
|
||||
|
||||
<CardContent className="p-4">
|
||||
<div className="flex flex-col gap-2.5">
|
||||
<CardContent className="p-4 flex-1 flex flex-col">
|
||||
<div className="flex flex-col gap-2.5 h-full">
|
||||
<div className="text-muted-foreground flex items-center gap-2 *:text-sm *:font-semibold">
|
||||
<span>
|
||||
{competition.type === CompetitionType.COMPETITIVE
|
||||
@@ -67,7 +67,7 @@ export function CompetitionCard({
|
||||
</h3>
|
||||
|
||||
{competition.type === CompetitionType.COMPETITIVE && (
|
||||
<div className="text-gray-500 text-sm mt-1">
|
||||
<div className="text-gray-500 text-sm mt-auto pt-2">
|
||||
{competition.start_date && (
|
||||
<div className="flex items-center gap-1.5">
|
||||
<Clock size={14} />
|
||||
|
||||
Reference in New Issue
Block a user