diff --git a/.continue/prompts/coder.prompt b/.continue/prompts/coder.prompt old mode 100644 new mode 100755 diff --git a/.dockerignore b/.dockerignore old mode 100644 new mode 100755 diff --git a/.npmrc b/.npmrc old mode 100644 new mode 100755 diff --git a/Dockerfile b/Dockerfile old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/apps/server/src/auth/auth.guard.ts b/apps/server/src/auth/auth.guard.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/auth/config.ts b/apps/server/src/auth/config.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/auth/session.service.ts b/apps/server/src/auth/session.service.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/auth/types.ts b/apps/server/src/auth/types.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/auth/utils.ts b/apps/server/src/auth/utils.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/filters/exceptions.filter.ts b/apps/server/src/filters/exceptions.filter.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/app-config/app-config.module.ts b/apps/server/src/models/app-config/app-config.module.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/app-config/app-config.router.ts b/apps/server/src/models/app-config/app-config.router.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/app-config/app-config.service.ts b/apps/server/src/models/app-config/app-config.service.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/base/base.service.ts b/apps/server/src/models/base/base.service.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/base/base.tree.service.ts b/apps/server/src/models/base/base.tree.service.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/base/base.type.ts b/apps/server/src/models/base/base.type.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/base/errorMap.prisma.ts b/apps/server/src/models/base/errorMap.prisma.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/base/row-cache.service.ts b/apps/server/src/models/base/row-cache.service.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/base/row-model.service.ts b/apps/server/src/models/base/row-model.service.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/base/sql-builder.ts b/apps/server/src/models/base/sql-builder.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/base/test.sql b/apps/server/src/models/base/test.sql old mode 100644 new mode 100755 diff --git a/apps/server/src/models/course/course.module.ts b/apps/server/src/models/course/course.module.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/course/course.router.ts b/apps/server/src/models/course/course.router.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/course/course.schema.ts b/apps/server/src/models/course/course.schema.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/course/course.service.ts b/apps/server/src/models/course/course.service.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/course/utils.ts b/apps/server/src/models/course/utils.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/department/department.row.service.ts b/apps/server/src/models/department/department.row.service.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/department/utils.ts b/apps/server/src/models/department/utils.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/enrollment/enroll.schema.ts b/apps/server/src/models/enrollment/enroll.schema.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/enrollment/enrollment.module.ts b/apps/server/src/models/enrollment/enrollment.module.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/enrollment/enrollment.router.ts b/apps/server/src/models/enrollment/enrollment.router.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/enrollment/enrollment.service.ts b/apps/server/src/models/enrollment/enrollment.service.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/lecture/lecture.module.ts b/apps/server/src/models/lecture/lecture.module.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/lecture/lecture.router.ts b/apps/server/src/models/lecture/lecture.router.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/lecture/lecture.service.ts b/apps/server/src/models/lecture/lecture.service.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/lecture/utils.ts b/apps/server/src/models/lecture/utils.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/message/message.module.ts b/apps/server/src/models/message/message.module.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/message/message.service.ts b/apps/server/src/models/message/message.service.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/message/utils.ts b/apps/server/src/models/message/utils.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/post/utils.ts b/apps/server/src/models/post/utils.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/rbac/role.row.service.ts b/apps/server/src/models/rbac/role.row.service.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/resource/pipe/resource.pipeline.ts b/apps/server/src/models/resource/pipe/resource.pipeline.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/resource/processor/BaseProcessor.ts b/apps/server/src/models/resource/processor/BaseProcessor.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/resource/processor/ImageProcessor.ts b/apps/server/src/models/resource/processor/ImageProcessor.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/resource/processor/VideoProcessor.ts b/apps/server/src/models/resource/processor/VideoProcessor.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/resource/resource.module.ts b/apps/server/src/models/resource/resource.module.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/resource/resource.router.ts b/apps/server/src/models/resource/resource.router.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/resource/resource.service.ts b/apps/server/src/models/resource/resource.service.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/resource/types.ts b/apps/server/src/models/resource/types.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/section/section.module.ts b/apps/server/src/models/section/section.module.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/section/section.router.ts b/apps/server/src/models/section/section.router.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/section/section.service.ts b/apps/server/src/models/section/section.service.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/staff/staff.row.service.ts b/apps/server/src/models/staff/staff.row.service.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/term/term.row.service.ts b/apps/server/src/models/term/term.row.service.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/term/utils.ts b/apps/server/src/models/term/utils.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/visit/visit.module.ts b/apps/server/src/models/visit/visit.module.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/visit/visit.router.ts b/apps/server/src/models/visit/visit.router.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/models/visit/visit.service.ts b/apps/server/src/models/visit/visit.service.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/queue/postprocess/postprocess.service.ts b/apps/server/src/queue/postprocess/postprocess.service.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/queue/stats/stats.service.ts b/apps/server/src/queue/stats/stats.service.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/queue/worker/file.processor.ts b/apps/server/src/queue/worker/file.processor.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/socket/base/base-websocket-server.ts b/apps/server/src/socket/base/base-websocket-server.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/socket/collaboration/callback.ts b/apps/server/src/socket/collaboration/callback.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/socket/collaboration/collaboration.module.ts b/apps/server/src/socket/collaboration/collaboration.module.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/socket/collaboration/persistence.ts b/apps/server/src/socket/collaboration/persistence.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/socket/collaboration/types.ts b/apps/server/src/socket/collaboration/types.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/socket/collaboration/ws-shared-doc.ts b/apps/server/src/socket/collaboration/ws-shared-doc.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/socket/collaboration/yjs.server.ts b/apps/server/src/socket/collaboration/yjs.server.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/socket/realtime/realtime.module.ts b/apps/server/src/socket/realtime/realtime.module.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/socket/realtime/realtime.server.ts b/apps/server/src/socket/realtime/realtime.server.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/socket/types.ts b/apps/server/src/socket/types.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/socket/websocket.module.ts b/apps/server/src/socket/websocket.module.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/socket/websocket.service.ts b/apps/server/src/socket/websocket.service.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/tasks/init/gendev.service.ts b/apps/server/src/tasks/init/gendev.service.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/tasks/init/utils.ts b/apps/server/src/tasks/init/utils.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/trpc/types.ts b/apps/server/src/trpc/types.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/trpc/utils.ts b/apps/server/src/trpc/utils.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/upload/tus.service.ts b/apps/server/src/upload/tus.service.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/upload/types.ts b/apps/server/src/upload/types.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/upload/upload.controller.ts b/apps/server/src/upload/upload.controller.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/upload/upload.module.ts b/apps/server/src/upload/upload.module.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/upload/utils.ts b/apps/server/src/upload/utils.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/utils/event-bus.ts b/apps/server/src/utils/event-bus.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/utils/file.ts b/apps/server/src/utils/file.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/utils/minio/minio.module.ts b/apps/server/src/utils/minio/minio.module.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/utils/minio/minio.service.ts b/apps/server/src/utils/minio/minio.service.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/utils/redis/redis.service.ts b/apps/server/src/utils/redis/redis.service.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/utils/redis/utils.ts b/apps/server/src/utils/redis/utils.ts old mode 100644 new mode 100755 diff --git a/apps/server/src/validation/index.ts b/apps/server/src/validation/index.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/app/admin/base-setting/page.tsx b/apps/web/src/app/admin/base-setting/page.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/app/admin/layout.tsx b/apps/web/src/app/admin/layout.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/app/denied.tsx b/apps/web/src/app/denied.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/app/login.tsx b/apps/web/src/app/login.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/app/main/course/detail/page.tsx b/apps/web/src/app/main/course/detail/page.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/app/main/course/preview/components/coursePreviewAllmsg.tsx b/apps/web/src/app/main/course/preview/components/coursePreviewAllmsg.tsx new file mode 100644 index 0000000..ee10b4a --- /dev/null +++ b/apps/web/src/app/main/course/preview/components/coursePreviewAllmsg.tsx @@ -0,0 +1,7 @@ +export function coursePreviewAllmsg() { + return ( +
+ helloword +
+ ) +} \ No newline at end of file diff --git a/apps/web/src/app/main/course/preview/page.tsx b/apps/web/src/app/main/course/preview/page.tsx new file mode 100644 index 0000000..f345883 --- /dev/null +++ b/apps/web/src/app/main/course/preview/page.tsx @@ -0,0 +1,7 @@ +export function CoursePreview(){ + return( +
+ helloword +
+ ) +} \ No newline at end of file diff --git a/apps/web/src/app/main/courses/components/CourseCard.tsx b/apps/web/src/app/main/courses/components/CourseCard.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/app/main/courses/components/CourseList.tsx b/apps/web/src/app/main/courses/components/CourseList.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/app/main/courses/components/FilterSection.tsx b/apps/web/src/app/main/courses/components/FilterSection.tsx old mode 100644 new mode 100755 index ae4da2b..5cc1574 --- a/apps/web/src/app/main/courses/components/FilterSection.tsx +++ b/apps/web/src/app/main/courses/components/FilterSection.tsx @@ -1,7 +1,8 @@ -import { Checkbox, Divider, Radio, Space } from "antd"; -import { categories, levels } from "../mockData"; -import { api } from "@nice/client"; -import { TaxonomySlug } from "@nice/common"; +import { Checkbox, Divider, Radio, Space , Spin} from 'antd'; +import { categories, levels } from '../mockData'; +import { TaxonomySlug, TermDto } from '@nice/common'; +import { GetTaxonomyProps, useGetTaxonomy } from '@web/src/hooks/useGetTaxonomy'; +import { useMemo } from 'react'; interface FilterSectionProps { selectedCategory: string; @@ -16,47 +17,65 @@ export default function FilterSection({ onCategoryChange, onLevelChange, }: FilterSectionProps) { - const { data: levels, isLoading } = api.term.findMany.useQuery({ - where: { - taxonomy: { - slug: TaxonomySlug.LEVEL, - }, - }, - }); - // const { data } = api.term; - return ( -
-
-

课程分类

- onCategoryChange(e.target.value)} - className="flex flex-col space-y-3"> - 全部课程 - {categories.map((category) => ( - - {category} - - ))} - -
+ const gateGory : GetTaxonomyProps = useGetTaxonomy({ + type: TaxonomySlug.CATEGORY, + }) + const levels : GetTaxonomyProps = useGetTaxonomy({ + type: TaxonomySlug.LEVEL, + }) + return ( +
+
+

课程分类

+ onCategoryChange(e.target.value)} + className="flex flex-col space-y-3" + > + { + gateGory.isLoading? + () + : + ( + <> + 全部课程 + {gateGory.categories.map(category => ( + + {category} + + ))} + ) + } + + +
-
-

难度等级

- onLevelChange(e.target.value)} - className="flex flex-col space-y-3"> - 全部难度 - {levels?.map((level) => ( - - {level.name} - - ))} - -
-
- ); +
+

难度等级

+ onLevelChange(e.target.value)} + className="flex flex-col space-y-3" + > + { + levels.isLoading ? + () + : + ( + <> + 全部难度 + {levels.categories.map(level => ( + + {level} + + ))} + ) + } + + +
+
+ ); } diff --git a/apps/web/src/app/main/courses/instructor/page.tsx b/apps/web/src/app/main/courses/instructor/page.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/app/main/courses/mockData.ts b/apps/web/src/app/main/courses/mockData.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/app/main/courses/page.tsx b/apps/web/src/app/main/courses/page.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/app/main/courses/student/page.tsx b/apps/web/src/app/main/courses/student/page.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/app/main/home/components/CategorySection.tsx b/apps/web/src/app/main/home/components/CategorySection.tsx old mode 100644 new mode 100755 index 638e429..a64b551 --- a/apps/web/src/app/main/home/components/CategorySection.tsx +++ b/apps/web/src/app/main/home/components/CategorySection.tsx @@ -1,6 +1,7 @@ -import React, { useState, useCallback } from 'react'; +import React, { useState, useCallback, useEffect, useMemo } from 'react'; import { Typography, Button } from 'antd'; -import { stringToColor } from '@nice/common'; +import { stringToColor, TaxonomySlug, TermDto } from '@nice/common'; +import { api } from '@nice/client'; const { Title, Text } = Typography; @@ -43,10 +44,31 @@ const courseCategories: CourseCategory[] = [ } ]; + const CategorySection = () => { const [hoveredIndex, setHoveredIndex] = useState(null); const [showAll, setShowAll] = useState(false); - + /** + * const {data,isLoading} :{data:TermDto[],isLoading:boolean}= api.term.findMany.useQuery({ + where:{ + taxonomy: { + slug:TaxonomySlug.CATEGORY + } + }, + include:{ + children :true + } + }) + const courseCategories: CourseCategory[] = useMemo(() => { + return data?.map((term) => ({ + name: term.name, + count: term.hasChildren ? term.children.length : 0, + description: term.description + })) || []; + },[data]) + */ + + const handleMouseEnter = useCallback((index: number) => { setHoveredIndex(index); }, []); diff --git a/apps/web/src/app/main/home/components/CoursesSection.tsx b/apps/web/src/app/main/home/components/CoursesSection.tsx old mode 100644 new mode 100755 index 4818e00..8d6c1c5 --- a/apps/web/src/app/main/home/components/CoursesSection.tsx +++ b/apps/web/src/app/main/home/components/CoursesSection.tsx @@ -1,6 +1,6 @@ -import React, { useState, useMemo } from 'react'; +import React, { useState, useMemo, useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; -import { Button, Card, Typography, Tag, Progress } from 'antd'; +import { Button, Card, Typography, Tag, Progress,Spin } from 'antd'; import { PlayCircleOutlined, UserOutlined, @@ -9,6 +9,9 @@ import { StarOutlined, ArrowRightOutlined, } from '@ant-design/icons'; +import { TaxonomySlug, TermDto } from '@nice/common'; +import { api } from '@nice/client'; +import { GetTaxonomyProps, useGetTaxonomy } from '@web/src/hooks/useGetTaxonomy'; const { Title, Text } = Typography; @@ -32,6 +35,7 @@ interface CoursesSectionProps { initialVisibleCoursesCount?: number; } + const CoursesSection: React.FC = ({ title, description, @@ -41,12 +45,12 @@ const CoursesSection: React.FC = ({ const navigate = useNavigate(); const [selectedCategory, setSelectedCategory] = useState('全部'); const [visibleCourses, setVisibleCourses] = useState(initialVisibleCoursesCount); - - const categories = useMemo(() => { - const allCategories = courses.map((course) => course.category); - return ['全部', ...Array.from(new Set(allCategories))]; - }, [courses]); - + const gateGory : GetTaxonomyProps = useGetTaxonomy({ + type: TaxonomySlug.CATEGORY, + }) + useEffect(() => { + + }) const filteredCourses = useMemo(() => { return selectedCategory === '全部' ? courses @@ -73,19 +77,36 @@ const CoursesSection: React.FC = ({
- {categories.map((category) => ( - setSelectedCategory(category)} - className={`px-4 py-2 text-base cursor-pointer hover:scale-105 transform transition-all duration-300 ${selectedCategory === category - ? 'shadow-[0_2px_8px_-4px_rgba(59,130,246,0.5)]' - : 'hover:shadow-md' - }`} - > - {category} - - ))} + {gateGory.isLoading ? : + ( + <> + setSelectedCategory("全部")} + className={`px-4 py-2 text-base cursor-pointer hover:scale-105 transform transition-all duration-300 ${selectedCategory === "全部" + ? 'shadow-[0_2px_8px_-4px_rgba(59,130,246,0.5)]' + : 'hover:shadow-md' + }`} + >全部 + { + gateGory.categories.map((category) => ( + setSelectedCategory(category)} + className={`px-4 py-2 text-base cursor-pointer hover:scale-105 transform transition-all duration-300 ${selectedCategory === category + ? 'shadow-[0_2px_8px_-4px_rgba(59,130,246,0.5)]' + : 'hover:shadow-md' + }`} + > + {category} + + )) + } + + + ) + }
diff --git a/apps/web/src/app/main/home/components/FeaturedTeachersSection.tsx b/apps/web/src/app/main/home/components/FeaturedTeachersSection.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/app/main/home/components/HeroSection.tsx b/apps/web/src/app/main/home/components/HeroSection.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/app/main/home/page.tsx b/apps/web/src/app/main/home/page.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/app/main/layout/MainFooter.tsx b/apps/web/src/app/main/layout/MainFooter.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/app/main/layout/MainHeader.tsx b/apps/web/src/app/main/layout/MainHeader.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/app/main/layout/MainLayout.tsx b/apps/web/src/app/main/layout/MainLayout.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/app/main/layout/NavigationMenu.tsx b/apps/web/src/app/main/layout/NavigationMenu.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/app/main/layout/UserMenu.tsx b/apps/web/src/app/main/layout/UserMenu.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/app/main/paths/page.tsx b/apps/web/src/app/main/paths/page.tsx old mode 100644 new mode 100755 index 192652d..e1283a0 --- a/apps/web/src/app/main/paths/page.tsx +++ b/apps/web/src/app/main/paths/page.tsx @@ -1,6 +1,5 @@ import MindEditor from "@web/src/components/common/editor/MindEditor"; -// import MindElixir, { MindElixirInstance } from "mind-elixir"; -import { useEffect, useRef } from "react"; + export default function PathsPage() { - return + return ; } diff --git a/apps/web/src/app/main/self/courses/page.tsx b/apps/web/src/app/main/self/courses/page.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/app/main/self/profiles/page.tsx b/apps/web/src/app/main/self/profiles/page.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/animation/sine-wave.tsx b/apps/web/src/components/animation/sine-wave.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/container/Card.tsx b/apps/web/src/components/common/container/Card.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/MindEditor.tsx b/apps/web/src/components/common/editor/MindEditor.tsx old mode 100644 new mode 100755 index 9618322..732cfae --- a/apps/web/src/components/common/editor/MindEditor.tsx +++ b/apps/web/src/components/common/editor/MindEditor.tsx @@ -3,24 +3,24 @@ import { useRef, useEffect } from "react"; import MindElixir from "mind-elixir"; export default function MindEditor() { - const me = useRef(); - useEffect(() => { - const instance = new MindElixir({ - el: "#map", - direction: MindElixir.SIDE, - draggable: true, // default true - contextMenu: true, // default true - toolBar: true, // default true - nodeMenu: true, // default true - keypress: true // default true - - }); - // instance.install(NodeMenu); - instance.init(MindElixir.new("新主题")); - me.current = instance; - }, []); - return
- -
-
+ const me = useRef(); + useEffect(() => { + const instance = new MindElixir({ + el: "#map", + direction: MindElixir.SIDE, + draggable: true, // default true + contextMenu: true, // default true + toolBar: true, // default true + nodeMenu: true, // default true + keypress: true, // default true + }); + // instance.install(NodeMenu); + instance.init(MindElixir.new("新主题")); + me.current = instance; + }, []); + return ( +
+
+
+ ); } diff --git a/apps/web/src/components/common/editor/graph/GraphEditor.tsx b/apps/web/src/components/common/editor/graph/GraphEditor.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/data.ts b/apps/web/src/components/common/editor/graph/data.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/edges/GraphEdge.tsx b/apps/web/src/components/common/editor/graph/edges/GraphEdge.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/edges/algorithms/a-star.ts b/apps/web/src/components/common/editor/graph/edges/algorithms/a-star.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/edges/algorithms/index.ts b/apps/web/src/components/common/editor/graph/edges/algorithms/index.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/edges/algorithms/simple.ts b/apps/web/src/components/common/editor/graph/edges/algorithms/simple.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/layout/BaseLayout.ts b/apps/web/src/components/common/editor/graph/layout/BaseLayout.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/layout/MindMapLayout.ts b/apps/web/src/components/common/editor/graph/layout/MindMapLayout.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/layout/SingleMapLayout.ts b/apps/web/src/components/common/editor/graph/layout/SingleMapLayout.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/layout/TreeLayout.ts b/apps/web/src/components/common/editor/graph/layout/TreeLayout.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/layout/edge/algorithms/a-star.ts b/apps/web/src/components/common/editor/graph/layout/edge/algorithms/a-star.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/layout/edge/algorithms/index.ts b/apps/web/src/components/common/editor/graph/layout/edge/algorithms/index.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/layout/edge/algorithms/simple.ts b/apps/web/src/components/common/editor/graph/layout/edge/algorithms/simple.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/layout/edge/edge.ts b/apps/web/src/components/common/editor/graph/layout/edge/edge.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/layout/edge/index.ts b/apps/web/src/components/common/editor/graph/layout/edge/index.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/layout/edge/point.ts b/apps/web/src/components/common/editor/graph/layout/edge/point.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/layout/edge/style.ts b/apps/web/src/components/common/editor/graph/layout/edge/style.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/layout/index.ts b/apps/web/src/components/common/editor/graph/layout/index.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/layout/metadata.ts b/apps/web/src/components/common/editor/graph/layout/metadata.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/layout/node/algorithms/d3-dag.ts b/apps/web/src/components/common/editor/graph/layout/node/algorithms/d3-dag.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/layout/node/algorithms/d3-hierarchy.ts b/apps/web/src/components/common/editor/graph/layout/node/algorithms/d3-hierarchy.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/layout/node/algorithms/dagre-tree.ts b/apps/web/src/components/common/editor/graph/layout/node/algorithms/dagre-tree.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/layout/node/algorithms/elk.ts b/apps/web/src/components/common/editor/graph/layout/node/algorithms/elk.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/layout/node/algorithms/origin.ts b/apps/web/src/components/common/editor/graph/layout/node/algorithms/origin.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/layout/node/index.ts b/apps/web/src/components/common/editor/graph/layout/node/index.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/layout/types.ts b/apps/web/src/components/common/editor/graph/layout/types.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/nodes/GraphNode.tsx b/apps/web/src/components/common/editor/graph/nodes/GraphNode.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/nodes/style.ts b/apps/web/src/components/common/editor/graph/nodes/style.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/store.ts b/apps/web/src/components/common/editor/graph/store.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/types.ts b/apps/web/src/components/common/editor/graph/types.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/useGraphOperation.ts b/apps/web/src/components/common/editor/graph/useGraphOperation.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/useKeyboardCtrl.ts b/apps/web/src/components/common/editor/graph/useKeyboardCtrl.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/useUndoRedo.tsx b/apps/web/src/components/common/editor/graph/useUndoRedo.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/utils.ts b/apps/web/src/components/common/editor/graph/utils.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/utils/base.ts b/apps/web/src/components/common/editor/graph/utils/base.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/utils/diff.ts b/apps/web/src/components/common/editor/graph/utils/diff.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/graph/utils/uuid.ts b/apps/web/src/components/common/editor/graph/utils/uuid.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/quill/QuillCharCounter.tsx b/apps/web/src/components/common/editor/quill/QuillCharCounter.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/quill/QuillEditor.tsx b/apps/web/src/components/common/editor/quill/QuillEditor.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/editor/quill/constants.ts b/apps/web/src/components/common/editor/quill/constants.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/element/AnimatedTabs.tsx b/apps/web/src/components/common/element/AnimatedTabs.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/element/Avatar.tsx b/apps/web/src/components/common/element/Avatar.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/element/Button.tsx b/apps/web/src/components/common/element/Button.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/element/Pagination.tsx b/apps/web/src/components/common/element/Pagination.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/element/Tag.tsx b/apps/web/src/components/common/element/Tag.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/form/FormArrayField.tsx b/apps/web/src/components/common/form/FormArrayField.tsx old mode 100644 new mode 100755 index 76835e5..4979c49 --- a/apps/web/src/components/common/form/FormArrayField.tsx +++ b/apps/web/src/components/common/form/FormArrayField.tsx @@ -1,6 +1,6 @@ import { PlusOutlined, DeleteOutlined } from "@ant-design/icons"; import { Reorder } from "framer-motion"; -import React, { useState } from "react"; +import React, { useEffect, useState } from "react"; import { Input, Button, Form, Typography } from "antd"; import type { InputProps } from "antd"; import { UUIDGenerator } from "@nice/common"; @@ -27,8 +27,11 @@ export function FormArrayField({ const updateItems = (newItems: ItemType[]) => { setItems(newItems); }; - + useEffect(() => { + console.log(items) + }) return ( + {(fields, { add, remove }, { errors }) => ( @@ -39,7 +42,7 @@ export function FormArrayField({ onReorder={updateItems} className="space-y-3"> {fields.map((field, index) => ( - -
+
- // {inputProps.maxLength - - // ( - // Form.useWatch( - // [ - // name, - // field.name, - // ] - // ) || "" - // ).length} - // - // ) - // } onChange={(e) => { // 更新 items 状态 const newItems = [...items]; @@ -101,7 +89,9 @@ export function FormArrayField({ setItems(newItems); }} /> + +
))} - - - - + +
+ +
)} diff --git a/apps/web/src/components/common/form/FormDynamicInputs.tsx b/apps/web/src/components/common/form/FormDynamicInputs.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/form/FormError.tsx b/apps/web/src/components/common/form/FormError.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/form/FormInput.tsx b/apps/web/src/components/common/form/FormInput.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/form/FormQuillInput.tsx b/apps/web/src/components/common/form/FormQuillInput.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/form/FormSelect.tsx b/apps/web/src/components/common/form/FormSelect.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/input/InputList.tsx b/apps/web/src/components/common/input/InputList.tsx new file mode 100644 index 0000000..f6247d5 --- /dev/null +++ b/apps/web/src/components/common/input/InputList.tsx @@ -0,0 +1,102 @@ +import React, { useState } from "react"; +import { Input, Button } from "antd"; +import { DeleteOutlined } from "@ant-design/icons"; + +interface InputListProps { + initialValue?: string[]; + onChange?: (value: string[]) => void; + placeholder?: string; +} + +const InputList: React.FC = ({ + initialValue, + onChange, + placeholder = "请输入内容", +}) => { + // Internal state management with fallback to initial value or empty array + const [inputValues, setInputValues] = useState( + initialValue && initialValue.length > 0 ? initialValue : [""] + ); + + // Handle individual input value change + const handleInputChange = (index: number, newValue: string) => { + const newValues = [...inputValues]; + newValues[index] = newValue; + + // Update internal state + setInputValues(newValues); + + // Call external onChange if provided + onChange?.(newValues); + }; + + // Handle delete operation + const handleDelete = (index: number) => { + const newValues = inputValues.filter((_, i) => i !== index); + + // Ensure at least one input remains + const finalValues = newValues.length === 0 ? [""] : newValues; + + // Update internal state + setInputValues(finalValues); + + // Call external onChange if provided + onChange?.(finalValues); + }; + + // Add new input field + const handleAdd = () => { + const newValues = [...inputValues, ""]; + + // Update internal state + setInputValues(newValues); + + // Call external onChange if provided + onChange?.(newValues); + }; + + return ( +
+ {inputValues.map((item, index) => ( +
+ + handleInputChange(index, e.target.value) + } + placeholder={placeholder} + className="flex-grow" + /> + {inputValues.length > 1 && ( +
+ ))} +
+ + {inputValues.length > 1 && ( +
+
+ ); +}; + +export default InputList; diff --git a/apps/web/src/components/common/space/Empty.tsx b/apps/web/src/components/common/space/Empty.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/uploader/AvatarUploader.tsx b/apps/web/src/components/common/uploader/AvatarUploader.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/common/uploader/TusUploader.tsx b/apps/web/src/components/common/uploader/TusUploader.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/layout/admin/AdminHeader.tsx b/apps/web/src/components/layout/admin/AdminHeader.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/layout/admin/AdminLayout.tsx b/apps/web/src/components/layout/admin/AdminLayout.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/layout/admin/AdminSidebar.tsx b/apps/web/src/components/layout/admin/AdminSidebar.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/layout/breadcrumb.tsx b/apps/web/src/components/layout/breadcrumb.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/layout/element/breadcrumb.tsx b/apps/web/src/components/layout/element/breadcrumb.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/layout/element/types.ts b/apps/web/src/components/layout/element/types.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/layout/element/usermenu/user-edit-modal.tsx b/apps/web/src/components/layout/element/usermenu/user-edit-modal.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/layout/element/usermenu/user-form.tsx b/apps/web/src/components/layout/element/usermenu/user-form.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/layout/element/usermenu/usermenu.tsx b/apps/web/src/components/layout/element/usermenu/usermenu.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/layout/fix-header.tsx b/apps/web/src/components/layout/fix-header.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/layout/resizable-sidebar.tsx b/apps/web/src/components/layout/resizable-sidebar.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/layout/sidebar-content.tsx b/apps/web/src/components/layout/sidebar-content.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/layout/user-header.tsx b/apps/web/src/components/layout/user-header.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/models/course/card/CourseCard.tsx b/apps/web/src/components/models/course/card/CourseCard.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/models/course/card/CourseHeader.tsx b/apps/web/src/components/models/course/card/CourseHeader.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/models/course/card/CourseStats.tsx b/apps/web/src/components/models/course/card/CourseStats.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/models/course/detail/CourseDetail.tsx b/apps/web/src/components/models/course/detail/CourseDetail.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/models/course/detail/CourseDetailContext.tsx b/apps/web/src/components/models/course/detail/CourseDetailContext.tsx old mode 100644 new mode 100755 index 8540e54..c67a896 --- a/apps/web/src/components/models/course/detail/CourseDetailContext.tsx +++ b/apps/web/src/components/models/course/detail/CourseDetailContext.tsx @@ -1,11 +1,12 @@ import { api } from "@nice/client"; -import { courseDetailSelect, CourseDto } from "@nice/common"; +import { courseDetailSelect, CourseDto, Lecture } from "@nice/common"; import React, { createContext, ReactNode, useEffect, useState } from "react"; import { useNavigate } from "react-router-dom"; interface CourseDetailContextType { editId?: string; // 添加 editId course?: CourseDto; + lecture?: Lecture; selectedLectureId?: string | undefined; setSelectedLectureId?: React.Dispatch>; isLoading?: boolean; @@ -37,9 +38,16 @@ export function CourseDetailProvider({ const [selectedLectureId, setSelectedLectureId] = useState< string | undefined >(undefined); + const { data: lecture, isLoading: lectureIsLoading } = ( + api.post as any + ).findFirst.useQuery( + { + where: { id: selectedLectureId }, + }, + { enabled: Boolean(editId) } + ); useEffect(() => { - navigate(``) - + navigate(`/course/${editId}/detail/${selectedLectureId}`); }, [selectedLectureId, editId]); const [isHeaderVisible, setIsHeaderVisible] = useState(true); // 新增 return ( @@ -47,6 +55,7 @@ export function CourseDetailProvider({ value={{ editId, course, + lecture, selectedLectureId, setSelectedLectureId, isLoading, diff --git a/apps/web/src/components/models/course/detail/CourseDetailDescription/CourseDetailDescription.tsx b/apps/web/src/components/models/course/detail/CourseDetailDescription/CourseDetailDescription.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/models/course/detail/CourseDetailDescription/CourseDetailNavBar.tsx b/apps/web/src/components/models/course/detail/CourseDetailDescription/CourseDetailNavBar.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/models/course/detail/CourseDetailDescription/Description/Overview.tsx b/apps/web/src/components/models/course/detail/CourseDetailDescription/Description/Overview.tsx old mode 100644 new mode 100755 diff --git a/apps/web/src/components/models/course/detail/CourseDetailDescription/Description/index.ts b/apps/web/src/components/models/course/detail/CourseDetailDescription/Description/index.ts old mode 100644 new mode 100755 diff --git a/apps/web/src/components/models/course/detail/CourseDetailDisplayArea.tsx b/apps/web/src/components/models/course/detail/CourseDetailDisplayArea.tsx old mode 100644 new mode 100755 index 2db3ffa..4f956b5 --- a/apps/web/src/components/models/course/detail/CourseDetailDisplayArea.tsx +++ b/apps/web/src/components/models/course/detail/CourseDetailDisplayArea.tsx @@ -1,21 +1,23 @@ // components/CourseDetailDisplayArea.tsx import { motion, useScroll, useTransform } from "framer-motion"; -import React from "react"; +import React, { useContext } from "react"; import { VideoPlayer } from "@web/src/components/presentation/video-player/VideoPlayer"; import { CourseDetailDescription } from "./CourseDetailDescription/CourseDetailDescription"; -import { Course } from "@nice/common"; +import { Course, PostType } from "@nice/common"; +import { CourseDetailContext } from "./CourseDetailContext"; interface CourseDetailDisplayAreaProps { - course: Course; + // course: Course; videoSrc?: string; videoPoster?: string; - isLoading?: boolean; + // isLoading?: boolean; } export const CourseDetailDisplayArea: React.FC< CourseDetailDisplayAreaProps -> = ({ course, videoSrc, videoPoster, isLoading = false }) => { +> = ({ videoSrc, videoPoster }) => { // 创建滚动动画效果 + const { course, isLoading, lecture } = useContext(CourseDetailContext); const { scrollY } = useScroll(); const videoScale = useTransform(scrollY, [0, 200], [1, 0.8]); const videoOpacity = useTransform(scrollY, [0, 200], [1, 0.8]); @@ -25,16 +27,15 @@ export const CourseDetailDisplayArea: React.FC< {/* 固定的视频区域 */} {/* 移除 sticky 定位,让视频区域随页面滚动 */} -
- -
+ {lecture.type === PostType.LECTURE && ( +
+ +
+ )}
{/* 课程内容区域 */} diff --git a/apps/web/src/components/models/course/detail/CourseDetailHeader/CourseDetailHeader.tsx b/apps/web/src/components/models/course/detail/CourseDetailHeader/CourseDetailHeader.tsx old mode 100644 new mode 100755 index 4ef5e54..338d428 --- a/apps/web/src/components/models/course/detail/CourseDetailHeader/CourseDetailHeader.tsx +++ b/apps/web/src/components/models/course/detail/CourseDetailHeader/CourseDetailHeader.tsx @@ -2,12 +2,13 @@ import { motion, useScroll, useTransform } from "framer-motion"; import { useContext, useEffect, useState } from "react"; import { CourseDetailContext } from "../CourseDetailContext"; +import { Button } from "antd"; export const CourseDetailHeader = () => { const { scrollY } = useScroll(); const [lastScrollY, setLastScrollY] = useState(0); - const { course, isHeaderVisible, setIsHeaderVisible } = + const { course, isHeaderVisible, setIsHeaderVisible, lecture } = useContext(CourseDetailContext); useEffect(() => { const updateHeader = () => { @@ -43,6 +44,12 @@ export const CourseDetailHeader = () => {

{course?.title}

+