= ({
}}
>
#{id}
-
{name}
+
+ {highlightZ(name, nameFilter)}
+
стандартный ввод/вывод {formatMilliseconds(timeLimit)},{' '}
{formatBytesToMB(memoryLimit)}
diff --git a/src/views/home/missions/Missions.tsx b/src/views/home/missions/Missions.tsx
index 511d036..fb2f34d 100644
--- a/src/views/home/missions/Missions.tsx
+++ b/src/views/home/missions/Missions.tsx
@@ -2,7 +2,11 @@ import MissionItem from './MissionItem';
import { SecondaryButton } from '../../../components/button/SecondaryButton';
import { useAppDispatch, useAppSelector } from '../../../redux/hooks';
import { useEffect, useState } from 'react';
-import { setMenuActivePage } from '../../../redux/slices/store';
+import {
+ setMenuActivePage,
+ setMissionsNameFilter,
+ setMissionsTagFilter,
+} from '../../../redux/slices/store';
import { fetchMissions } from '../../../redux/slices/missions';
import ModalCreate from './ModalCreate';
import Filters from './Filter';
@@ -25,10 +29,21 @@ const Missions = () => {
const missions = useAppSelector((state) => state.missions.missions);
+ const nameFilter = useAppSelector(
+ (state) => state.store.missions.filterName,
+ );
+ const tagsFilter = useAppSelector(
+ (state) => state.store.articles.articleTagFilter,
+ );
+
useEffect(() => {
dispatch(setMenuActivePage('missions'));
- dispatch(fetchMissions({}));
+ dispatch(fetchMissions({ tags: tagsFilter }));
}, []);
+ const filterTagsHandler = (value: string[]) => {
+ dispatch(setMissionsTagFilter(value));
+ dispatch(fetchMissions({ tags: value }));
+ };
return (
@@ -46,28 +61,39 @@ const Missions = () => {
/>
-
+
{
+ filterTagsHandler(value);
+ }}
+ onChangeName={(value: string) => {
+ dispatch(setMissionsNameFilter(value));
+ }}
+ />
- {missions.map((v, i) => (
-
- ))}
+ {missions
+ .filter((v) =>
+ v.name
+ .toLowerCase()
+ .includes(nameFilter.toLocaleLowerCase()),
+ )
+ .map((v, i) => (
+
+ ))}
-
- pages
diff --git a/src/views/home/rightpanel/group/ModalUpdate.tsx b/src/views/home/rightpanel/group/ModalUpdate.tsx
index 4830d23..bb3e1cb 100644
--- a/src/views/home/rightpanel/group/ModalUpdate.tsx
+++ b/src/views/home/rightpanel/group/ModalUpdate.tsx
@@ -14,7 +14,7 @@ import ConfirmModal from '../../../../components/modal/ConfirmModal';
import {
DropDownList,
DropDownListItem,
-} from '../../../../components/filters/DropDownList';
+} from '../../../../components/input/DropDownList';
import { ReverseButton } from '../../../../components/button/ReverseButton';
interface ModalUpdateProps {
diff --git a/src/views/mission/codeeditor/CodeEditor.tsx b/src/views/mission/codeeditor/CodeEditor.tsx
index 768cbe6..0f501f4 100644
--- a/src/views/mission/codeeditor/CodeEditor.tsx
+++ b/src/views/mission/codeeditor/CodeEditor.tsx
@@ -2,7 +2,7 @@ import React, { useEffect, useState } from 'react';
import Editor from '@monaco-editor/react';
import { upload } from '../../../assets/icons/input';
import { cn } from '../../../lib/cn';
-import { DropDownList } from '../../../components/filters/DropDownList';
+import { DropDownList } from '../../../components/input/DropDownList';
const languageMap: Record
= {
c: 'cpp',