Explorar el Código

:sparkles: exercise 模版

visuddhinanda hace 3 años
padre
commit
32053ff4f9

+ 26 - 0
dashboard/src/components/template/Exercise.tsx

@@ -0,0 +1,26 @@
+import { Button } from "antd";
+
+interface IWidgetExerciseCtl {
+  id?: string;
+  channel?: string;
+  children?: React.ReactNode;
+}
+const ExerciseCtl = ({ id, channel, children }: IWidgetExerciseCtl) => {
+  return (
+    <>
+      <div>{children}</div>
+      <Button type="primary">做练习</Button>
+    </>
+  );
+};
+
+interface IWidget {
+  props: string;
+  children?: React.ReactNode;
+}
+const Widget = ({ props, children }: IWidget) => {
+  const prop: IWidgetExerciseCtl = JSON.parse(atob(props));
+  return <ExerciseCtl {...prop}>{children}</ExerciseCtl>;
+};
+
+export default Widget;

+ 7 - 3
dashboard/src/components/template/MdTpl.tsx

@@ -1,3 +1,4 @@
+import Exercise from "./Exercise";
 import Note from "./Note";
 import Quote from "./Quote";
 import SentEdit from "./SentEdit";
@@ -9,8 +10,9 @@ import Wd from "./Wd";
 interface IWidgetMdTpl {
   tpl?: string;
   props?: string;
+  children?: React.ReactNode;
 }
-const Widget = ({ tpl, props }: IWidgetMdTpl) => {
+const Widget = ({ tpl, props, children }: IWidgetMdTpl) => {
   switch (tpl) {
     case "term":
       return <Term props={props ? props : ""} />;
@@ -20,12 +22,14 @@ const Widget = ({ tpl, props }: IWidgetMdTpl) => {
       return <SentRead props={props ? props : ""} />;
     case "sentedit":
       return <SentEdit props={props ? props : ""} />;
-	  case "wbw_sent":
-		return <WbwSent props={props ? props : ""} />;
+    case "wbw_sent":
+      return <WbwSent props={props ? props : ""} />;
     case "wd":
       return <Wd props={props ? props : ""} />;
     case "quote":
       return <Quote props={props ? props : ""} />;
+    case "exercise":
+      return <Exercise props={props ? props : ""}>{children}</Exercise>;
     default:
       return <>未定义模版({tpl})</>;
   }