visuddhinanda 1 год назад
Родитель
Сommit
0edc495851
1 измененных файлов с 18 добавлено и 8 удалено
  1. 18 8
      dashboard-v4/dashboard/src/components/article/ChapterToc.tsx

+ 18 - 8
dashboard-v4/dashboard/src/components/article/ChapterToc.tsx

@@ -10,10 +10,17 @@ import { Skeleton } from "antd";
 interface IWidget {
   book?: number;
   para?: number;
+  maxLevel?: number;
   onSelect?: (selectedKeys: Key[]) => void;
   onData?: (data: IChapterToc[]) => void;
 }
-const ChapterTocWidget = ({ book, para, onSelect, onData }: IWidget) => {
+const ChapterTocWidget = ({
+  book,
+  para,
+  maxLevel = 8,
+  onSelect,
+  onData,
+}: IWidget) => {
   const [tocList, setTocList] = useState<ListNodeData[]>([]);
   const [loading, setLoading] = useState(true);
   useEffect(() => {
@@ -23,19 +30,22 @@ const ChapterTocWidget = ({ book, para, onSelect, onData }: IWidget) => {
     get<IChapterTocListResponse>(url)
       .then((json) => {
         console.info("api response", json);
-        onData && onData(json.data.rows);
-        const toc = json.data.rows.map((item, id) => {
+        const chapters = json.data.rows.filter(
+          (value) => value.level <= maxLevel
+        );
+        onData && onData(chapters);
+        const toc = chapters.map((item, id) => {
           return {
             key: `${item.book}-${item.paragraph}`,
             title: item.text,
-            level: parseInt(item.level),
+            level: item.level,
           };
         });
         setTocList(toc);
-        if (json.data.rows.length > 0) {
+        if (chapters.length > 0) {
           let path: string[] = [];
-          for (let index = json.data.rows.length - 1; index >= 0; index--) {
-            const element = json.data.rows[index];
+          for (let index = chapters.length - 1; index >= 0; index--) {
+            const element = chapters[index];
             if (element.book === book && para && element.paragraph <= para) {
               path.push(`${element.book}-${element.paragraph}`);
               break;
@@ -44,7 +54,7 @@ const ChapterTocWidget = ({ book, para, onSelect, onData }: IWidget) => {
         }
       })
       .finally(() => setLoading(false));
-  }, [book, para]);
+  }, [book, maxLevel, para]);
 
   return loading ? (
     <Skeleton active />