From 2325ad101ca2a2f3fa6eca02c6e15c260b0682b3 Mon Sep 17 00:00:00 2001 From: tmaog Date: Wed, 23 Apr 2025 14:55:22 +0200 Subject: [PATCH] fix: scanning activity implementation --- src/components/LateralMenu/LateralMenu.tsx | 1 + .../Properties/Edges/EdgeProperties.tsx | 1 + .../Nodes/ScanningNodeProperties.tsx | 16 ++++++ .../ReactFlowScanningNode.tsx | 54 ++++++++++++++++++ src/components/ReactFlowNode/index.ts | 1 + src/public/scanning_icon.png | Bin 0 -> 2813 bytes .../polyglotElements/nodes/ScanningNode.ts | 29 ++++++++++ src/types/polyglotElements/nodes/index.ts | 1 + 8 files changed, 103 insertions(+) create mode 100644 src/components/Properties/Nodes/ScanningNodeProperties.tsx create mode 100644 src/components/ReactFlowNode/ReactFlowScanningNode/ReactFlowScanningNode.tsx create mode 100644 src/public/scanning_icon.png create mode 100644 src/types/polyglotElements/nodes/ScanningNode.ts diff --git a/src/components/LateralMenu/LateralMenu.tsx b/src/components/LateralMenu/LateralMenu.tsx index 23c9ff5..021ff69 100644 --- a/src/components/LateralMenu/LateralMenu.tsx +++ b/src/components/LateralMenu/LateralMenu.tsx @@ -71,6 +71,7 @@ const listImplementedNodes = [ 'ReadMaterialNode', 'WatchVideoNode', 'SummaryNode', + 'ScanningNode', 'codingQuestionNode', 'CollaborativeModelingNode', 'UMLModelingNode', diff --git a/src/components/Properties/Edges/EdgeProperties.tsx b/src/components/Properties/Edges/EdgeProperties.tsx index e0f0a1b..6de5e16 100644 --- a/src/components/Properties/Edges/EdgeProperties.tsx +++ b/src/components/Properties/Edges/EdgeProperties.tsx @@ -13,6 +13,7 @@ const config = [ 'ReadMaterialNode', 'MindMapNode', 'SummaryNode', + 'ScanningNode', 'ProblemSolvingNode', 'FindSolutionNode', 'CreateKeywordsListNode', diff --git a/src/components/Properties/Nodes/ScanningNodeProperties.tsx b/src/components/Properties/Nodes/ScanningNodeProperties.tsx new file mode 100644 index 0000000..938f4bc --- /dev/null +++ b/src/components/Properties/Nodes/ScanningNodeProperties.tsx @@ -0,0 +1,16 @@ +import MarkDownField from '../../Forms/Fields/MarkDownField'; +import NodeProperties from './NodeProperties'; + +const ScanningNodeProperties = () => { + return ( + <> + + + + ); +}; + +export default ScanningNodeProperties; diff --git a/src/components/ReactFlowNode/ReactFlowScanningNode/ReactFlowScanningNode.tsx b/src/components/ReactFlowNode/ReactFlowScanningNode/ReactFlowScanningNode.tsx new file mode 100644 index 0000000..4dd2590 --- /dev/null +++ b/src/components/ReactFlowNode/ReactFlowScanningNode/ReactFlowScanningNode.tsx @@ -0,0 +1,54 @@ +import { useTheme } from '@fluentui/react'; +import { Handle, Position } from 'reactflow'; +import icon from '../../../public/scanning_icon.png'; +import useStore from '../../../store'; +import { ScanningNode } from '../../../types/polyglotElements'; +import Card from '../../Card/Card'; +import { ReactFlowNodeProps } from '../ReactFlowNode'; + +type ReactFlowScanningNodeProps = ReactFlowNodeProps & ScanningNode; + +const ReactFlowScanningNode = ({ id }: ReactFlowScanningNodeProps) => { + const [onConnect, label] = useStore((state) => [ + state.onConnect, + state.nodeMap.get(id)?.title, + ]); + const theme = useTheme(); + + return ( + + + {label} + + + + ); +}; + +export default ReactFlowScanningNode; diff --git a/src/components/ReactFlowNode/index.ts b/src/components/ReactFlowNode/index.ts index 4952b22..78d73e5 100644 --- a/src/components/ReactFlowNode/index.ts +++ b/src/components/ReactFlowNode/index.ts @@ -20,6 +20,7 @@ export { default as ReactFlowOpenQuestionNode } from './ReactFlowOpenQuestionNod export { default as ReactFlowProblemSolvingNode } from './ReactFlowProblemSolvingNode/ReactFlowProblemSolvingNode'; export { default as ReactFlowPromptEngineeringNode } from './ReactFlowPromptEngineeringNode/ReactFlowPromptEngineeringNode'; export { default as ReactFlowReadMaterialNode } from './ReactFlowReadMaterialNode/ReactFlowReadMaterialNode'; +export { default as ReactFlowScanningNode } from './ReactFlowScanningNode/ReactFlowScanningNode'; export { default as ReactFlowSimulationNode } from './ReactFlowSimulationNode/ReactFlowSimulationNode'; export { default as ReactFlowSummaryNode } from './ReactFlowSummaryNode/ReactFlowSummaryNode'; export { default as ReactFlowTrueFalseNode } from './ReactFlowTrueFalseNode/ReactFlowTrueFalseNode'; diff --git a/src/public/scanning_icon.png b/src/public/scanning_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..668784e15d36869f891de01cb77018c90aa5b130 GIT binary patch literal 2813 zcmb7^`#Td18^=+e91;~#k#ZQeNQj&ZJog^3)9UX(rt$Hd7M6reUx6g>E}8D@d+#xM6$f#fUqx0utJo)A%2 zqq5Jj{^TG0C9b3oU^h6z%W)y|KFXq&$UaRT$B>Xb_`g6PGF)spI|Xv9TBqkuj0SAD*Ku#?e0v z4DkGp;yGw0w)F`gh3_4r)WS^MF{S+EVP8&gg|tRx)YE3`qiyyyt?D&V)p0kryI3i= z1URw!C_yGRHPwAhIxLUrR~6bh^6Ok%tA^GdrowU2b+yqxsu{IY^2#lfV4O8<2Pn1X zsmMXiY((JOn1MXqbFveUgt@NDqjw=n8oL{`R!*4wXK?LQlXwxMgVMcH4UT5F|1 zDU{oWE}A+q_uy}alE#FRW+-j-ccj&BK9t5xVqmQ)~%$2bB-;5j6K@oMzD%46_sSPU-Cjt3xH zXqi8t6t52In`(`noJKae%R38}nWYWSc8n@%UVF7Ta?p(utNTzfvfdf*cJsp`rI))u z?B-T`P$RjhD&?p~_0(W~d!mAGI3*;&(^KeWA*BDQ8}sF6WK>1YNVDm6&x9f%e_om? z{2G~~Q($-R?2(D;8(`ejfNX**WI0+7ldeY2j`IBpA>@zBQCHR%?x%ayC{tj8kh{7# zDXFW>pl|^Qoqw3xGv?bP!{y1a_#AS<6q{SYzl01o(;lgvE3-U#?rr6*hRb4n=kPqe z80clkEP>;KwhujS14XWy@nU$Z|IM>rA3njoM3xe{W%Op*{A(D@7*`1f9rbNrTR)>< zHI}SC{!vRm$-tVW%xXHfBq)w{D}47pcYEq|_s}fR4nRhSCME*|QrP}yVYmBkh2PL1 z2J`1>4Cq>^bPEgg<6YZow46XBc;E!UR%ff@Q#K`9T0`GhR^(}yA=GEe5BlwgR;Ct= zd~me)F^uZ>ii`R23>(G3o80XG5K4?Zo)Cm0i9$yZ*ao6U%UkI`3DPoO#-T0a6_6 zQsf<7oD<@h3$|tP5((Zt)lQq{%D?VEc-UJL+D81Po0%pYYnm#W^4Ejj!Dms^#Den# zhZ#yieBE|Eu_x-&z=7T$>~>syU4i-!$77Ywh)Ed5E%ZCLL5U2*0UxMes<~nRt>Yh! z3BA)-n>b4f)>oS%=-7hHJEdgWb{W&t7CaI!$AcWeoXqD45HmK*T%B$i@TCU}rRrFy zWTfd`V@WJ%=sOoak2m7-TO-lwP;+nQ6 za#pQhTG%Co68EbZe2CC1-wGDZ z?815f%=xpNV%%`~ndL`qamrJ)5ZA@hz!1T2+E@O4MGn-)C!+7TOMF<`?`d4(g8si| zUBB)~(ZN2i72%S1^&Xm7^g2_ou!c78JHg&D=J9axBO!g`8d{jo@>H&PZ762!Tf;&$ zoa`~xH2>C1fwse8AEi*mqP24NQ+uYDM0ejUImIm&31O;z$p-4QP(Z9~=H^e!ElvKs zjT5rMIW~8mpUSLXnJ@B1BzXY41J(_fIn<=Dm{aPNF*CEh3uhnE(V7ydh6oXUl$7>Q zmOBbHwo>m<-~lxAA~AfoVQ8f65|28;iQiB>E4-#+rq#)?=##;!q@;~xs#lMq^Htj{ zQ0RF(U2}RcA>DbPL$mx=457QF;TzTiA6wSAfa@`Wy={IWm;mbq+J8xe#uSnOpxdkz zdHu$L`P|E5pk_(owhAYg_>A;=x+1Vt(vtGnawNR`OiV$d?I8E}=doMtwp?Y*71rT- z+*D4QM!8w57+(G^`K8)>nUJolOc}l{U7!jS_oX%ckY@LQJ>XMA3qWJ%v*l}Bq%0jI zD2FZk$jOfZS`wb#7Zq0`a7R9{EBYT)NQ|vZ6;d2d^B+`f+5Rwt!%3HO1XHo2AX3>f zE^2iG`CVQ#BtNG7bc?Y&qZ3w*S6e%BHY@sbkvm&Jdr!}Xg zT#H|SY%dP>4(D7HQ&HLlWca9Q@3MixYYz3-z33X~05CGx?ZbPKeTIwAeg~IyQ0Fy@ z1G*7ga)R@2w8rJ>pO$;Ja?X}J!5y3>PQ$`6E%h{pJa0Vdq7yKdoV~_3l|paBt(51yS{3=G z^*RR-+*LgrKKFhTU??FsnY()VyqN%mC_}djt_?U0D!*_^cRk~RvRjHtRMN&q<4ELE za)hFVi`xo1?R}YEBJn<0MPbUVu(bBfhY-Z;fk{lN>x?tDL(04;8H~u?NlHXg5nIlJ zk{4iQRqats$Wi7qcVvNX!X9DwvRtPM_r>WvOPS!<#qKSfd$*a97-wds1%Bh?PTQk} z3x*R7UH4FZb!+#*QEVbwcKPQPqi0v3>ue8~6^y Jgka=>`7ak_SX2N2 literal 0 HcmV?d00001 diff --git a/src/types/polyglotElements/nodes/ScanningNode.ts b/src/types/polyglotElements/nodes/ScanningNode.ts new file mode 100644 index 0000000..15295b6 --- /dev/null +++ b/src/types/polyglotElements/nodes/ScanningNode.ts @@ -0,0 +1,29 @@ +import ScanningNodeProperties from '../../../components/Properties/Nodes/ScanningNodeProperties'; +import { ReactFlowScanningNode } from '../../../components/ReactFlowNode'; +import icon from '../../../public/scanning_icon.png'; +import { polyglotNodeComponentMapping } from '../elementMapping'; +import { defaultPolyglotNodeData, NodeData, PolyglotNode } from './Node'; + +export type ScanningNodeData = NodeData & { + text: string; +}; + +export type ScanningNode = PolyglotNode & { + type: 'ScanningNode'; + data: ScanningNodeData; +}; + +polyglotNodeComponentMapping.registerMapping({ + elementType: 'ScanningNode', + name: 'AR Scan', + icon: icon.src, + group: 'understand_learning', + propertiesComponent: ScanningNodeProperties, + elementComponent: ReactFlowScanningNode, + defaultData: { + text: '', + link: '', + uploadLearner: false, + ...defaultPolyglotNodeData, + }, +}); diff --git a/src/types/polyglotElements/nodes/index.ts b/src/types/polyglotElements/nodes/index.ts index ce70961..e4595a9 100644 --- a/src/types/polyglotElements/nodes/index.ts +++ b/src/types/polyglotElements/nodes/index.ts @@ -22,6 +22,7 @@ export * from './OpenQuestionNode'; export * from './ProblemSolvingNode'; export * from './PromptEngineeringNode'; export * from './ReadMaterialNode'; +export * from './ScanningNode'; export * from './SimulationNode'; export * from './SummaryNode'; export * from './TrueFalseNode';