PaliChapterHead.tsx 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import { useState, useEffect } from "react";
  2. import { message } from "antd";
  3. import { IApiResponsePaliChapter } from "../api/Corpus";
  4. import { get } from "../../request";
  5. import ChapterHead, { IChapterInfo } from "./ChapterHead";
  6. import { IParagraph } from "./BookViewer";
  7. import TocPath, { ITocPathNode } from "./TocPath";
  8. interface IWidgetPaliChapterHead {
  9. para: IParagraph;
  10. onChange?: Function;
  11. }
  12. const Widget = (prop: IWidgetPaliChapterHead) => {
  13. const defaultPathData: ITocPathNode[] = [
  14. {
  15. book: 98,
  16. paragraph: 55,
  17. title: "string;",
  18. paliTitle: "string;",
  19. level: 2,
  20. },
  21. ];
  22. const [pathData, setPathData] = useState(defaultPathData);
  23. const [chapterData, setChapterData] = useState<IChapterInfo>({ title: "" });
  24. useEffect(() => {
  25. console.log("palichapterlist useEffect");
  26. fetchData(prop.para);
  27. }, [prop.para]);
  28. function fetchData(para: IParagraph) {
  29. let url = `/v2/palitext?view=paragraph&book=${para.book}&para=${para.para}`;
  30. get<IApiResponsePaliChapter>(url).then(function (myJson) {
  31. console.log("ajex", myJson);
  32. const data = myJson;
  33. let path: ITocPathNode[] = JSON.parse(data.data.path);
  34. path.push({
  35. book: data.data.book,
  36. paragraph: data.data.paragraph,
  37. title: data.data.toc,
  38. paliTitle: data.data.toc,
  39. level: data.data.level,
  40. });
  41. setPathData(path);
  42. const chapter: IChapterInfo = {
  43. title: data.data.toc,
  44. subTitle: data.data.toc,
  45. book: data.data.book,
  46. para: data.data.paragraph,
  47. };
  48. setChapterData(chapter);
  49. });
  50. }
  51. return (
  52. <>
  53. <TocPath
  54. data={pathData}
  55. onChange={(e: IParagraph) => {
  56. message.success(e.book + ":" + e.para);
  57. fetchData(e);
  58. if (typeof prop.onChange !== "undefined") {
  59. prop.onChange(e);
  60. }
  61. }}
  62. link={"none"}
  63. />
  64. <ChapterHead data={chapterData} />
  65. </>
  66. );
  67. };
  68. export default Widget;