visuddhinanda 2 лет назад
Родитель
Сommit
0044bf570a

+ 40 - 23
dashboard/src/components/template/SentEdit.tsx

@@ -1,12 +1,13 @@
 import { Card } from "antd";
+import { useEffect, useState } from "react";
 import { IStudio } from "../auth/StudioName";
 
 import type { IUser } from "../auth/User";
 import { IChannel } from "../channel/Channel";
 import { ITocPathNode } from "../corpus/TocPath";
 import SentContent from "./SentEdit/SentContent";
-import SentMenu from "./SentEdit/SentMenu";
 import SentTab from "./SentEdit/SentTab";
+import { IWbw } from "./Wbw/WbwWord";
 
 export interface ISuggestionCount {
   suggestion?: number;
@@ -68,30 +69,46 @@ export const SentEditInner = ({
   originNum,
   simNum,
 }: IWidgetSentEditInner) => {
-  const sid = id.split("-");
+  const [wbwData, setWbwData] = useState<IWbw[]>();
+
+  useEffect(() => {
+    const content = origin?.find(
+      (value) => value.channel.type === "wbw"
+    )?.content;
+    if (typeof content !== "undefined") {
+      setWbwData(JSON.parse(content));
+    }
+  }, []);
+
   return (
     <Card bodyStyle={{ paddingBottom: 0 }} size="small">
-      <SentMenu book={parseInt(sid[0])} para={parseInt(sid[1])}>
-        <SentContent
-          sid={id}
-          book={book}
-          para={para}
-          wordStart={wordStart}
-          wordEnd={wordEnd}
-          origin={origin}
-          translation={translation}
-          layout={layout}
-        />
-        <SentTab
-          id={id}
-          path={path}
-          tranNum={tranNum}
-          nissayaNum={nissayaNum}
-          commNum={commNum}
-          originNum={originNum}
-          simNum={simNum}
-        />
-      </SentMenu>
+      <SentContent
+        sid={id}
+        book={book}
+        para={para}
+        wordStart={wordStart}
+        wordEnd={wordEnd}
+        origin={origin}
+        translation={translation}
+        layout={layout}
+        onWbwChange={(data: IWbw[]) => {
+          setWbwData(data);
+        }}
+      />
+      <SentTab
+        id={id}
+        book={book}
+        para={para}
+        wordStart={wordStart}
+        wordEnd={wordEnd}
+        path={path}
+        tranNum={tranNum}
+        nissayaNum={nissayaNum}
+        commNum={commNum}
+        originNum={originNum}
+        simNum={simNum}
+        wbwData={wbwData}
+      />
     </Card>
   );
 };

+ 20 - 0
dashboard/src/components/template/SentEdit/SentTab.tsx

@@ -10,10 +10,18 @@ import SentCanRead from "./SentCanRead";
 import SentSim from "./SentSim";
 import { useIntl } from "react-intl";
 import TocPath, { ITocPathNode } from "../../corpus/TocPath";
+import { IWbw } from "../Wbw/WbwWord";
+import RelaGraphic from "../Wbw/RelaGraphic";
+import SentMenu from "./SentMenu";
 
 const { Text } = Typography;
+
 interface IWidget {
   id: string;
+  book: number;
+  para: number;
+  wordStart: number;
+  wordEnd: number;
   path?: ITocPathNode[];
   layout?: "row" | "column";
   tranNum?: number;
@@ -21,15 +29,21 @@ interface IWidget {
   commNum?: number;
   originNum: number;
   simNum?: number;
+  wbwData?: IWbw[];
 }
 const Widget = ({
   id,
+  book,
+  para,
+  wordStart,
+  wordEnd,
   path,
   tranNum,
   nissayaNum,
   commNum,
   originNum,
   simNum = 0,
+  wbwData,
 }: IWidget) => {
   const intl = useIntl();
 
@@ -54,6 +68,7 @@ const Widget = ({
               }
             />
             <Text copyable={{ text: sentId[0] }}>{sentId[0]}</Text>
+            <SentMenu book={book} para={para} />
           </Space>
         }
         items={[
@@ -182,6 +197,11 @@ const Widget = ({
               />
             ),
           },
+          {
+            label: "关系图",
+            key: "relation-graphic",
+            children: <RelaGraphic wbwData={wbwData} />,
+          },
         ]}
       />
     </>