From c2a5c934f3d4a486309440052c668bb69d9eb53a Mon Sep 17 00:00:00 2001 From: Geoffrey Kwan Date: Wed, 18 Oct 2023 16:31:07 -0400 Subject: [PATCH 1/7] feat(Authoring): Show component info button when adding a component #1457 --- .../choose-new-component.component.html | 18 +- src/app/teacher/authoring-tool.module.ts | 4 + src/app/teacher/teacher-authoring.module.ts | 2 + .../img/component-preview/earth-layers.jpg | Bin 0 -> 18512 bytes src/assets/img/component-preview/leaf.png | Bin 0 -> 8837 bytes src/assets/img/component-preview/sun.png | Bin 0 -> 4095 bytes .../add-your-own-node.component.html | 9 +- .../add-your-own-node.component.scss | 6 + .../component-info-dialog.component.html | 13 ++ .../component-info-dialog.component.scss | 3 + .../component-info-dialog.component.spec.ts | 38 ++++ .../component-info-dialog.component.ts | 11 ++ .../component-selector.component.html | 12 ++ .../component-selector.component.scss | 9 + .../component-selector.component.spec.ts | 35 ++++ .../component-selector.component.ts | 43 +++++ src/assets/wise5/components/ComponentInfo.ts | 12 ++ .../components/animation/AnimationInfo.ts | 44 +++++ .../audioOscillator/AudioOscillatorInfo.ts | 25 +++ .../components/conceptMap/ConceptMapInfo.ts | 47 +++++ .../dialogGuidance/DialogGuidanceInfo.ts | 170 ++++++++++++++++++ .../components/discussion/DiscussionInfo.ts | 15 ++ src/assets/wise5/components/draw/DrawInfo.ts | 33 ++++ .../wise5/components/embedded/EmbeddedInfo.ts | 16 ++ .../wise5/components/graph/GraphInfo.ts | 69 +++++++ src/assets/wise5/components/html/HtmlInfo.ts | 15 ++ .../wise5/components/label/LabelInfo.ts | 73 ++++++++ .../wise5/components/match/MatchInfo.ts | 94 ++++++++++ .../multipleChoice/MultipleChoiceInfo.ts | 35 ++++ .../openResponse/OpenResponseInfo.ts | 15 ++ .../components/outsideURL/OutsideUrlInfo.ts | 17 ++ .../wise5/components/peerChat/PeerChatInfo.ts | 14 ++ .../showGroupWork/ShowGroupWorkInfo.ts | 18 ++ .../components/showMyWork/ShowMyWorkInfo.ts | 15 ++ .../wise5/components/summary/SummaryInfo.ts | 21 +++ .../wise5/components/table/TableInfo.ts | 78 ++++++++ .../wise5/services/componentInfoService.ts | 60 +++++++ 37 files changed, 1073 insertions(+), 16 deletions(-) create mode 100644 src/assets/img/component-preview/earth-layers.jpg create mode 100644 src/assets/img/component-preview/leaf.png create mode 100644 src/assets/img/component-preview/sun.png create mode 100644 src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.html create mode 100644 src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.scss create mode 100644 src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.spec.ts create mode 100644 src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.ts create mode 100644 src/assets/wise5/authoringTool/components/component-selector/component-selector.component.html create mode 100644 src/assets/wise5/authoringTool/components/component-selector/component-selector.component.scss create mode 100644 src/assets/wise5/authoringTool/components/component-selector/component-selector.component.spec.ts create mode 100644 src/assets/wise5/authoringTool/components/component-selector/component-selector.component.ts create mode 100644 src/assets/wise5/components/ComponentInfo.ts create mode 100644 src/assets/wise5/components/animation/AnimationInfo.ts create mode 100644 src/assets/wise5/components/audioOscillator/AudioOscillatorInfo.ts create mode 100644 src/assets/wise5/components/conceptMap/ConceptMapInfo.ts create mode 100644 src/assets/wise5/components/dialogGuidance/DialogGuidanceInfo.ts create mode 100644 src/assets/wise5/components/discussion/DiscussionInfo.ts create mode 100644 src/assets/wise5/components/draw/DrawInfo.ts create mode 100644 src/assets/wise5/components/embedded/EmbeddedInfo.ts create mode 100644 src/assets/wise5/components/graph/GraphInfo.ts create mode 100644 src/assets/wise5/components/html/HtmlInfo.ts create mode 100644 src/assets/wise5/components/label/LabelInfo.ts create mode 100644 src/assets/wise5/components/match/MatchInfo.ts create mode 100644 src/assets/wise5/components/multipleChoice/MultipleChoiceInfo.ts create mode 100644 src/assets/wise5/components/openResponse/OpenResponseInfo.ts create mode 100644 src/assets/wise5/components/outsideURL/OutsideUrlInfo.ts create mode 100644 src/assets/wise5/components/peerChat/PeerChatInfo.ts create mode 100644 src/assets/wise5/components/showGroupWork/ShowGroupWorkInfo.ts create mode 100644 src/assets/wise5/components/showMyWork/ShowMyWorkInfo.ts create mode 100644 src/assets/wise5/components/summary/SummaryInfo.ts create mode 100644 src/assets/wise5/components/table/TableInfo.ts create mode 100644 src/assets/wise5/services/componentInfoService.ts diff --git a/src/app/authoring-tool/add-component/choose-new-component/choose-new-component.component.html b/src/app/authoring-tool/add-component/choose-new-component/choose-new-component.component.html index a6f9bad3089..f6b831610f5 100644 --- a/src/app/authoring-tool/add-component/choose-new-component/choose-new-component.component.html +++ b/src/app/authoring-tool/add-component/choose-new-component/choose-new-component.component.html @@ -16,18 +16,12 @@
- + + +
diff --git a/src/app/teacher/authoring-tool.module.ts b/src/app/teacher/authoring-tool.module.ts index 4d028aacd20..9f30fbec9fc 100644 --- a/src/app/teacher/authoring-tool.module.ts +++ b/src/app/teacher/authoring-tool.module.ts @@ -52,6 +52,8 @@ import { ProjectAuthoringParentComponent } from '../../assets/wise5/authoringToo import { ChooseImportUnitComponent } from '../authoring-tool/import-step/choose-import-unit/choose-import-unit.component'; import { NodeAuthoringParentComponent } from '../../assets/wise5/authoringTool/node/node-authoring-parent/node-authoring-parent.component'; import { AddLessonChooseTemplateComponent } from '../../assets/wise5/authoringTool/addLesson/add-lesson-choose-template/add-lesson-choose-template.component'; +import { ComponentSelectorComponent } from '../../assets/wise5/authoringTool/components/component-selector/component-selector.component'; +import { ComponentInfoDialogComponent } from '../../assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component'; @NgModule({ declarations: [ @@ -75,6 +77,8 @@ import { AddLessonChooseTemplateComponent } from '../../assets/wise5/authoringTo ChooseNewNodeTemplate, ChooseMoveNodeLocationComponent, ChooseSimulationComponent, + ComponentInfoDialogComponent, + ComponentSelectorComponent, ConcurrentAuthorsMessageComponent, ConfigureAutomatedAssessmentComponent, InsertNodeAfterButtonComponent, diff --git a/src/app/teacher/teacher-authoring.module.ts b/src/app/teacher/teacher-authoring.module.ts index 968f8862b8a..01a5d0458b5 100644 --- a/src/app/teacher/teacher-authoring.module.ts +++ b/src/app/teacher/teacher-authoring.module.ts @@ -31,11 +31,13 @@ import { TeacherNodeService } from '../../assets/wise5/services/teacherNodeServi import { MilestoneReportService } from '../../assets/wise5/services/milestoneReportService'; import { AuthoringRoutingModule } from './authoring-routing.module'; import { RouterModule } from '@angular/router'; +import { ComponentInfoService } from '../../assets/wise5/services/componentInfoService'; @NgModule({ imports: [StudentTeacherCommonModule, AuthoringToolModule, RouterModule, AuthoringRoutingModule], providers: [ ClassroomStatusService, + ComponentInfoService, CopyNodesService, CopyProjectService, DataExportService, diff --git a/src/assets/img/component-preview/earth-layers.jpg b/src/assets/img/component-preview/earth-layers.jpg new file mode 100644 index 0000000000000000000000000000000000000000..48ffa099304457cbc1100fdc5d952fd086ecff2e GIT binary patch literal 18512 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 z zSQ8svisUAC%9VDZpHz`EmdIs6^96Kt1t{DK2B?#FB^II--# zc<2ExLeeTcaD?BLqs+p^tJItuB@|C(uNGx{C#tTz_2$ap2!DY5)c{%&Ml6sDElCG) zRgE@7q_9I!L>do!J$t!;fQw4KPt{Of6E6YX(B$Y46B;3^4EYSv`=3&gNyyJ=narA` zK7RDtZ!~pjH^Bv$;f8@O#*{Bzi|=<)xZcJ@I86?JxeVNwDhO|KGyn>v&j9K9k zVw*YUFbT)G4W6?XJ2G`4gC?b&BJk`W@VOVR#S6iTvuS-_wIMKe+^G0$`5xZ8SG(R1 zaRGQY-Vpy9VV$n3ee3!6t?I0_;_OuLjS;O)*?Qm)`w3K$9Yfe;t^>j-KK^)2INnmd z+@UJT8`CCU^iLs` zZ~d%RpPHSHo;FFz$shw*_n7MbwuV;3?EWJY8=c|)mYbX_>2R3(VQN`zA0#(BkZVYx zWwEOE&3WItVE4)c4Ctu|@rIYl1wblq=iTzi&YS9}#F#q<`osllaA($r=q?`Jwp19P zKAgJeJC;4b^I$wWORadmxFL|P=mIbc25(xPBxSW^n&XYII~>!vw6m1lMR~S!pt@$S z+-A6+e9Z!cF+a+9-E`1V<~Zm(um(oU81BVU_u#mi5Fqrpzm^cBqPnVCc>#cV<%@vf zT9~{UPoDq>(qUKPTF`vxuFzTQt?<=vyF_Z>Pa7vIhMJ1&Ly}WWBg}zNE}XG$RlFhOGGS~qC9~+E-%EKlp7{(kMw7t@J*{u@K z_mQ*RJsi9l{<>BfoBw1lH{Q-g6=j56%GOp&7Xhn4Teu+NJ&OYx9l)!{*HZh2C$_CP zZge|4T2!|C?N+H81JVP#IswgiG`mp{qFoIFAXsAT+nv3FnwXm=^8{Y6IZGRK@xd*) z6t2*jlt_03QPZy9?ki{YA`Ree*O_t`0|+qsuVu{ZriOvlyJ}V(#4In^e33lMITiaS z*y!k(hE`4J*&ItoqV(?srL6GjL_@hy>Kd+CW9PH@WO-eJ)&Fb^Gcuy@UAOmP6#Rf> zB{)Dh0)^0(t5a-hBPBxd(Al}txZ0E1h`g3Tb=s0psffRs>V^e@BAQ6$LIp`I>MMGQ zx&wLF_tRU)`wgRJgCp{HX?5;d1l%B6Km9;RQ|o{{%auAf~IY z(?#W5-aylf#ZL#gR*+xDd#Of4aC%}EMEWB}w6Q$qfL{1jGO|%&2qy%}F9}5kqmJ2R z@=;N#hs2vk=(a}Cxl*T*>G_}1WaI+h%L_nP)wqyz8BWyh(U|a_Y#TuF0&t1v0`Rru zm6w+K?WEY{@q}NK8y{cO_c21-?gFP|c0{WAvg%=PP=_5luEo>EUO+klj8F+%=`F+| zs2^g8A9pmLShN?as-6oZJ;;41asKnA*$uva#EkF7>)TT*k){m{3 z8cMshsYxw9p5;F36#JDTJ(b@{%pzLU@Tt# zDSIvpwlgHocHb5X;EX;yG`-Z6lAtX0xFmOIBrlgreAJBhcZC2ys3YYj78Hu8I5Bjq zY}HjHT>uP;&d*aW0KU)|-b10Es@EQOc?K^hML*_}T zKJo4U9c^4^ff$#8gdGTnCmVbqadqefS6I}doi!h4HA)we$4StAtfKNA9g6?Vtc1@4 zoPMKDAT^~khLy!Cz0Eeb(HWIJq)Ln=^+d`^1RhPIq4M6R|G47=Sqm~+@?!u(`zpU7 zR!odDzPD(zXeykZR}$&rO9g4khHhe+7l2RVz)=j^Wtg*3+w5^8(Q)h;j$VLx|9ikP zu3iADu6fd`=c?4y68Y`Q10T3A)@#3i zdD18DXpFr^ie9_D);@qo_N$!dZdyfRtfyTg10=B;@0k=b3~rIBA?sm->uY)EQH7fw zSNn795Vb-L~#>LKYGxYh$I)t9;!ND z064exj0cTy^Mz8jHDo6dd!PJ(C`~R!*VwuT)B7(~(u(FfF_EXkE9vVwB%E)A{?8GNeC%S`y3I zu92KO8ZH3AP~YeVvb&(V@psXv zU4ifK-cFi-gOlB5(oG6{0DAKnq6-;h;(AG}ZK4CiVxblL0yF87epMeHz|J?S*TIFA z=lfrdXAbi9Nv6o!EYv!fH7{@Ni2os0FPdnOh2$s4CvX-p<_kGY{S&JG2MZiI51N5? z*kBGgr@hpWj4@OffXRU%L9hsEzH|@w1+xpAJr^oLW@nI(Yx+-e)^wj~TmaPU`>;ub zh#X`ic}J@m``1G&r&w0bcmzltuyp|_zWI;K{>R|!#lB&?vqJNsbx+q-hQ7pV&X@~Lr$Z`9OcgC#QQSaoaeDnGW<61si?m^NJ|Fe%u`V(_tCKe#!1sRp55YFQUlcczkg)OCaq=UHLg^tLC` z0Z*xq5q&kO3&Dp9ZcolZPhU@F*#m|dKBbMv#4mnDwD$1q*~oYIN&YqN*3W)i+3kB= zIFilj6cs}bLhmbuf;wDsLY%_ys7zR`PJs4xP6P$uJ|2M2QPP(}3z3^6SBQ4{0QG&3Y|rym!N>_5xrue>$1X zdL#b=kod2QfhU;LH^5Wh11|uS^giOSWrO)#mHF9k_M4X9&y;^w*r_SJL>DsMgZP#h zcQ94?=k5tEyFD}!`BsW=3IPr_MTSbbv6j;qF2(CQRr7m)@$4^-XvA-bY+{b7q{R@*#86DtXz`b)-!O zG6sIS_xgpq+b(e_2-J-bjlz=s5#rMY0F5xGRM&~Dn>j73uaP!a9Mx6!r_Q=FzO9ud zSG^pib3!kwy~sR$u1mPj=U(06-L{=z?R=bqDS=A*VAJUB9}O*_MqD^bfB` zZ@Tb*0sm5p-v*a3o+o_~ai%amg_EXW&4l-np|aQ1%?mV%hY7(Eyoga)TWbXGuS@@# zHQAGg;a97+-!nLRomwd0+*|-|7JI5>9@16Idxd{90$)v{30X`SR{)sK@6MbV<+8bw zwz^?J(r3N8KVI4DxfQ|n>PE+_4)`XaFbRF*z63(1R1ZnDR|dFCW$y=l;B?o+WV+rp z)S&+dM@YfS`ew>jg?6}%WcVHlWuK=kfN$+I%(OqdLMeY{jKZ}p=SVg0YE}O%+T)6Q z+Q;o$6b1Si@(qeA4%7m7;m%z7Z)b`JnH$AfY05edZ{Va=^*28aN323P1NEx0lLus` zqdGcz*Wqh#Kedt4S%MtQeZY(2Fy_abSd=cf$ z+rUi=_eB|uQ3!1A0?>`;o7CdVTuX~5%O=gTZciA{M;XZmQOhYyu(-s|8u+f8BsytC}HQ)agRo%dBf$$N_*zAz0KgYTdE#DOh(#D>)bhS|$Y zS4qglSN|4V%2Rgaixa;2!FT>qXH;g$cPF=K+sK~^HiZ!4stS?yk>+tf0({W^ll|d0 zLday#(sHo*HDOl7$_uNsG(1`8m?D;LI}_HMxFnpG<2%hMS_^v>wJi5`{Z1u4$2Rz` z7xi$Uq_db&KPYfIxc)KFZvx8-f3N0 z|LoRqVE#{S0)zI#+c|b(egkd6RvT;ZfR}*Lbl4g1U60^F#rtV{a`vmJVn{K%75V4x z7h>VLYMbZ$(@h!8{!FgDWR{yjQg(>C!ZVe0rI4PDk(Sq)4tY7Vd#gMFJx%+V4JgMd z!7I%@NFBfC!9VEXBx1b!`LEFmrN^lF(oicR@}q>2&qJ<{dz3IB+nCId%~X{L!c ztp6lDLF{&P?HhqOSiD6j_C3&z0}r(*-){Hk@Fq|EFX=^ zj*2KH6csn$`_yvzEin7}f$K@fdk6rRk=c?vy(xfBB!?kIc74m(uk~pOgY&PoIV)$> zS){p~j=ML44#9u@T%DCTlnt}FXA_1ub_+yp-UbF~`oVX798VCRSmVi}k8`1^YL%S{ ziWG%V=kf5c0PnJ7LtO%Cu`l>QzEzPjWWMv*<_D}@#Tm6UrGS3ap=aqxb^&Vk6FB#% z7`BLmsgX(JY}|nGC_brKR4kpHtX!vm_|uj15;STwEiu)O(|99Meq*e-&aX@$g6Q62 zh0ON13tQwBTPjnlT7nD^__sfiq&KIKVVQT25ADw!Q%Amw#B0}vWceDc8`#Do-LEyz z%=;3ld^qpcrMCPP^ABoIT#Q-2cjeH0bRG09$8~o9*}IeylWG0le8z{4f;YC^zNU;J z2@R@`WL&>U6FwHc540E^*>AI($J|{%E&+?_?kt_Lmo+cWVN~A$JDsDfHLhxb>P6`{ zpvA9{tOh{1rdz=bJ?TMB+FD8*Sx-%RPM?w5_XM>=;_-*G3aa5N&S9;}7XS+Nd6su% zcll-Ls6W!;s@N91VC3PdiR=8=8OhGP?=G4OHYk>~>(J$#jHG4m;h+Ht@h(%!oAnXt8IZj0IC=}#hNv`(w8`*(Mt#Sgkz=*p z`);&&`%ueO5JZIrnOvf8i5tss$m?T20IMV0E)kHY({G#_Vj`rRDj`>^yrygO#4U}` zFUlSFh3;2=hTe&;25IZ>@PDlwC%9v&=ubGmdG;BtSj@b6FQ1}_B2Z~pI&Hwq`DU$% z)$J)`ow@GcUOlljaPNLvDgcQnjOlDD=UIr_7AtT4>jWBjlnIRYM*h}3gJ0|5eE1$l z$3rZRfysc|a?hvIqg7ubu~L)H`Cp3&F7bwqtkBRSJOc4>kz<+69-3{oL$=x}W@sA8 z`S#?t0oL|xi}OiSyhmWpu;dM)`MvT>hScZ0Al73|$~J%K7Xb(=dvbcBjbQz-C7!sp zQoW>U!2>5D)rq;GgnKQE+=X`WC*@$b~QKsh5$fSg)2f`4M#R4jiT)nvWRv*oz9=aI?k>8@r zy_k)718h!1+xvl%WLIeIC+;|i?Fb3ac--L&-{Dvo$N22*XKILPa*Wp;IK>5fz{OEX zJD?Ax5bjgNI|QXzN+O@pq$9bgQ3we;;-Pvy$Mi5ma}O;_E}BdyZINB3-}>19kY)Wl z^HTDEsoi|IsjvS?rwy(yueby8A(sGNl9;Q5N%AG7>Jg|1p(E8Df|^d>b^xyd`^9oUT8M`ql5j zi6d=xNo`sRhl}MkC@*gBD%g95=~Tr{sc1J8Y#GGvQEcv80TExn}1$ho4Zn zWc{2Zg*MKu>?OeRd15G5Qi$;(hkTQXG}&_YjeUFb&N)>M06 z_rVy>u7SA+#INGfPxu}DSEElxzMF@q4?YV@*2wQF1*&%?wSpKM7`Rj=l7sS;IDPf+ z{`#?;q4LyyPj$E{=N|8%3>_cKL+;miPuZdaNwy1n%2rywJ~Emoj))HMp8e4y{iCd< zhNlLHG@hlpU=*DxbV0`vx{})m#5B2y`5DRED<+P=`e-gl%ditihm3Z1L~;^j{S7o9 z&SpxUERu$7-IPN!kDU|@LZzl3R{n|MhYAWS7k_TVpMWELF46ECNE@6%P#swgd)Rlt^ zz>$DaLQbx;e`-cu^$%$2y>}$TVJlKUgsRcw{@Z-+`y7&%!G+jn$N{_B z#rbh5g#BX>nw;`!+Ewq^{8AR$@Cvf##B-XGJp$EZVyufk5gZ}Dk@S~Jnh;*X;;Y}D zKRqc-paZS>$6}X1zAeF)TU9tg4;~&A(a(ZjvHHaG5DwkiD*Z@EjKN0TSVuDYIQj0C zDdr~0OLw9Uo^2aww-lP1pH9VOJUtWTw?9H87Pt9D^TlOL6?RN+!B;#%Y&C32DN;R1 zb#V}$VdNq7p4}@IdDCEW9+2U&^i!h4M>F3#-s zO}OI4!mE*LMdsDS4>4-cBS!H=h~#E`_t2!t*3{?Z^H}qPAgLZVf_ITQPD7(Y8m3ul zfo-ROX8Y5(PM5tC7VM&B$ox!6Q)}^FhQ1!G*haW|c>V4BO6L#Y0yUC10Tn$6iJ!FM zjL-knm#d4woTXGUwa$l|5elm7 z##1w=W7u|n$@;rj*vmx`#4X{VkS&zvIAe-!9eDv)zLGO&RIL@hKG z#5d5CFr#aR?fWzOWE;t!4{CDh+6$Iz?K&|V=7fqGj~>h0EyI4m%S))MERh_OC8)M} zdNJW^98-{Z8)sq1VApTZX1F^M$~QH^2uVM_9_I!cY+4pvl!FU9E?}^c`)}t5>XEgX z*u4i>?a0Hiz7#t~d+HPE+Bam6*`f@p@kHN{wM|a0FO_$CBBHop7vKMn3O58yGbo6w zP=r}IU3)wIm$>CQ^38i4n`c@D_fTB#&8efED#AfqPdVkVk5Ye4iZGdt^_r?E;*RQ|dr$d0ojL-o&fsI;A|h5}`rMxVj^O1bvuD76W{-=mGAAO(!xu85k2S^;x zX5_8#=#(73?7pS*QvQY9@YT3gRW6Bjiy5{51>~wmM`wa|S@)YZ*HhLZcV6f(l2S|| zcDMhm=ZUH-5@6frBYhPY0AVN6r^O=nCwLd$5u*luNXdGFnNR99J4Sk=^VTGmb+;yu zmuh5MYt>i|5QLjKvJc1ZImSqHY%owu1GSFX>Xs2^#;!r7uN*Hy#5_v{=igrz*;0OS za9H7*l^8S$On83qW62ww3iu|kb?s7)mdNSUG`MCZUvEEw(+A7C#nNE@1m?Xlrl;pG z3Xp-YLHXJ`)O>;@vOl01BsOzo)0Wv6D7zLl5$ghdw|22!{66stanTAUyrnh2t{>;> zrY!xPR{rzZ-5g0@((u#uCEbqYi)UTdWVKe`L>2C|8AzFBp(JXl228qMx~t0Vx;^2~ zddA6^VN~L%F$q>JR6o%=Jv#Phmri)uc0Tiac5B>+L+S!s? zXrq18hDyVwnYU_iWDMJZc}RB5#rb zbE5=p*n_8cr61Yd*Au5oF|xjtM|s}9V7$?_gT#Ccyo*!J-YBCA(zvp%n<{bfy9{ZS{bjTyG9E5V?Yz^A( z9^~iE4uusp`U}_Vp8&6akml8vEIuJl_zOpXC4V1i*Q^>*rv%+G{tT)6kJ;#d+~-=i zXS7ElkH`MA6m5?~=*b2#1=UP0$lb_y{8odRtJ{58%O0s#niK}YJm^a= zXs55Wx|@597>7m9Ups61}AdZv6p-wRJ6O@CA0_A-zY+(%`X5vR@#oay;PqS z`0FaTHMIe3Kh9~nGHMetSe=;=@p5oi+xwGfP7p- zaPnRZ1g26v>t6a}#A98>rz7s|3-$`fm*alU_r|8a7aRVd@SWYuS@4@a7>%^qB)Pu` z>w}43kMj%8cG&wMkCMl(hD`)&i}K~gynblm-Hk_@^^~+NxxiCxoZm|wm~?iHN@|bS zoDrBJosA4Zm9^9;(@g5gX*v->GPE_ryWbjW*`_z`*t{6?PUfBNnbXFe9vI}wqe z4^BgSmw9Nl)T)E#U9@8d_@$SCq7BB!8Lha`RX6eTd~3I-5`n=1G1RLa-ewPzM?3?3 zpaCr;7Oo#8O6HI;s_e#Z1g6VoCG8ppZ#0jcjq|XC!vxZb znp_VmPsi>JV&9(_Z0h@r9I?s1@gIHIcU@<{=6L_**crt^Sv|QbzJ>u9p4JNSU2dZMd;lCWPU5_#f6uM7gv+cj``T?uPbkqh#n_0LiQ@R{= z@`lU*C@WJXPb|{_R^nruj~P$FJ8#ZK5iKxU%>rlL&N;sETacj;_#fpsBPy<_BYUnw z_in>ZFYK+hk&_X0*&cy_GzgdxZL2Jgvj1cDT*4!6qu#$!4=h=R%qH;QENw86&2`YQ zqe{23&7SD})AbJ;a?zv_X*=uS&?NBiD%HQKiQvol2#zg51xdrB)%ePwet|-x6-Q2V!iO!I`PC&aX=i-|e z0FH|8y<6y4*hh)iMk?>$J-qAdumWC=4!g|xdG9hSZr^0MlKv_#aa$QJ@OH$jPflz+ zYtKk&_$8cVc7I1zOR)CZX}p04UAM9TD)GSh7R46;6ossr&% zsRhCpGHvQo2Ffd`SHX=aSN{>(*9Xosji^UUl1d$_+`&r38U4ukxlFrTFz;Vq)q8hT z+HLlMZvJ2AQ z4ma>4k>O}!k+gCRBo|*B)SVNH?hTRmzK#CIM`ALG<&d4@WAJ z0dK7R+RI;m8}>0=;juE`8&Ln2tvzMv?|FD2FPFsKu~w51)+*@p0eaooXMNI(-DH#p3F6mIfH*VWgUKkukE7^m34l0=ozz*ZAPXDLJ>nkBk@MqvN-0=4 zqC=}v%P%m==1luR_n%3l+fo)!r@c?z3L((o4a!f-cZ?tJ{y%C5|JD%xZ|fUBmL8oM zQ(~(Z6hg2gZQJ&RZQMQ*CBvrk&%I|%x>e^?j^syIO}rR4F2B{kPNU^V*jD#?sAYli zwpZZ4rplo9w_RDC-t!C&hu>|wg9}+ODySkoh~^$yg9?q9R9l!^0{3coPM<={W`K*2 zYHJ6Xh5O}IK;$ZOrWrbH=a~3(srO`j?qGQJm4}j;^~+WL$xjQg;=pQb$O&B|W~(P? z;hNFX7{un+OkcGpYI#qfO`uB!o6uzc|~zPq^g_p13x{712^{e9iy+xtkOo z>Ib%h_3ZibtKW3jEgyoEJDN32c@c}pe-@bA43^hNb;y}+c&BF$g(~Ltxk{nLH+qF+ z5eMg}utYBSi?ivWlOQ-`RyAPsLr-mAWo>fE_+^RgW_;Z}i{BVXGFgf3RZ5^9s&sAwSC@uSE2052C zBky3{TTApX+;dG7yS~Th5d#fR|FM5WnV+HD_p(^aKjA@QQ6MaS*Qh~wF-X75>VDYE zzdLrLl^UPE2g|)j&e?JE@pjEwGtH#Y97BVlrND?Lz6MGEGSs3aopx$}y1<+TA}E&O z`+8IlOs7a1QLb={z<}9rfzxw<6i0qn#wa!UnXjj8A{)8j$uRV%zX1LuhN$dN|0YLo z^T2t0(E9ZIb&BP31+&WdY}J6uqNG#(X@a@;t3%<*$P@k%2)&=oN#(<)%B4^pJviLlro21vcVUFo_WFE)R{YnZ`1BQD8fCKk6J^ ztS#2orylEmGzO6c!j}o4uICmL>altC>KLfMp7tJ?Yw6QH6eIh=VP$|9;&-4nSrATMrufyYWB;ABF`!bQzFkBLSI%h%boA;=e8ceqlcwk|byQ`u)7;zQ^^%@aHz+IF|b!O-cp_>axYqbiK6$ zklEE|SQodEEvgO1Fd@N%K}0OOom51Iz|L21yvwh3AXKu*9gJ9Xrh>%d|k}jSvjM!D68gJgyEpC;ZRU#`A_vHxGmLvX9%9!%ZrLnT`cp*snEQ6qZ_}IYAIy#8yclO` z+PQVUkjKtD+r`!HvDv?K-ZJq`MDu;qw|0C#$`}5zxh!_v`Qn$qYF8cPV%I1cRDC@j zw|xEDg0Qm&7cOz0{CoP(`BkU?7@v8yE}87o}QZikL53a=RT>rgZs>XbcE#w z=KfJnDR7yd5EE$|`|_=|jvunWIef@J_)~e$mW{Q}kv+vL90?&)(sm zqV+@8xr^@Xng4lK(b494UsXk)FPV1y`VEo9j742+=-skWJ_&nsN!iCs1-146Zvp^` CRD^&4 literal 0 HcmV?d00001 diff --git a/src/assets/img/component-preview/leaf.png b/src/assets/img/component-preview/leaf.png new file mode 100644 index 0000000000000000000000000000000000000000..6db17e7cbff91a7feb29470274386c0da36061c7 GIT binary patch literal 8837 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 Hu0mjfZ-vHl literal 0 HcmV?d00001 diff --git a/src/assets/img/component-preview/sun.png b/src/assets/img/component-preview/sun.png new file mode 100644 index 0000000000000000000000000000000000000000..d4ce3e856cfd00d9594d7d827159e5d112671701 GIT binary patch literal 4095 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 literal 0 HcmV?d00001 diff --git a/src/assets/wise5/authoringTool/addNode/add-your-own-node/add-your-own-node.component.html b/src/assets/wise5/authoringTool/addNode/add-your-own-node/add-your-own-node.component.html index 7ab8717e8be..d34d5936dbb 100644 --- a/src/assets/wise5/authoringTool/addNode/add-your-own-node/add-your-own-node.component.html +++ b/src/assets/wise5/authoringTool/addNode/add-your-own-node/add-your-own-node.component.html @@ -39,11 +39,12 @@
Select components to add to your new step (optional):
-
+
- +

diff --git a/src/assets/wise5/authoringTool/addNode/add-your-own-node/add-your-own-node.component.scss b/src/assets/wise5/authoringTool/addNode/add-your-own-node/add-your-own-node.component.scss index fdddbcb451d..dec8e931b67 100644 --- a/src/assets/wise5/authoringTool/addNode/add-your-own-node/add-your-own-node.component.scss +++ b/src/assets/wise5/authoringTool/addNode/add-your-own-node/add-your-own-node.component.scss @@ -29,6 +29,7 @@ $transform: transform 250ms cubic-bezier(0, 0, 0.2, 1); } .component-type { + width: 40%; padding: 4px; button { @@ -54,3 +55,8 @@ $transform: transform 250ms cubic-bezier(0, 0, 0.2, 1); .component-list.cdk-drop-list-dragging .component-list-item:not(.cdk-drag-placeholder) { transition: $transform; } + +.component-types { + overflow-y: scroll; + max-height: 50vh; +} \ No newline at end of file diff --git a/src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.html b/src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.html new file mode 100644 index 00000000000..ab66d9458c5 --- /dev/null +++ b/src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.html @@ -0,0 +1,13 @@ +

{{ data.label }}

+ +

{{ data.description }}

+
+ + +
Example
+ +
+ + + + diff --git a/src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.scss b/src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.scss new file mode 100644 index 00000000000..aff5b20d2ce --- /dev/null +++ b/src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.scss @@ -0,0 +1,3 @@ +.example-label { + padding: 0 24px; +} \ No newline at end of file diff --git a/src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.spec.ts b/src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.spec.ts new file mode 100644 index 00000000000..3d838707509 --- /dev/null +++ b/src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.spec.ts @@ -0,0 +1,38 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { ComponentInfoDialogComponent } from './component-info-dialog.component'; +import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog'; +import { MatDividerModule } from '@angular/material/divider'; +import { PreviewComponentModule } from '../preview-component/preview-component.module'; +import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { PreviewComponentComponent } from '../preview-component/preview-component.component'; +import { ProjectService } from '../../../services/projectService'; +import { Component } from '../../../common/Component'; + +describe('ComponentInfoDialogComponent', () => { + let component: ComponentInfoDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ComponentInfoDialogComponent, PreviewComponentComponent], + imports: [HttpClientTestingModule, MatDialogModule, MatDividerModule, PreviewComponentModule], + providers: [ + { + provide: MAT_DIALOG_DATA, + useValue: { + component: new Component({ id: 'abcde12345', type: 'OpenResponse' }, 'node1') + } + } + ] + }).compileComponents(); + fixture = TestBed.createComponent(ComponentInfoDialogComponent); + const projectService = TestBed.inject(ProjectService); + projectService.project = {}; + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.ts b/src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.ts new file mode 100644 index 00000000000..60eacf266b4 --- /dev/null +++ b/src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.ts @@ -0,0 +1,11 @@ +import { Component, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA } from '@angular/material/dialog'; + +@Component({ + selector: 'component-info-dialog', + templateUrl: './component-info-dialog.component.html', + styleUrls: ['./component-info-dialog.component.scss'] +}) +export class ComponentInfoDialogComponent { + constructor(@Inject(MAT_DIALOG_DATA) protected data: any) {} +} diff --git a/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.html b/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.html new file mode 100644 index 00000000000..d9893ef5719 --- /dev/null +++ b/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.html @@ -0,0 +1,12 @@ +
+
+ {{ label }} + + + +
+
diff --git a/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.scss b/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.scss new file mode 100644 index 00000000000..8fe29390730 --- /dev/null +++ b/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.scss @@ -0,0 +1,9 @@ +.component-container { + border: 1px solid grey; + border-radius: 6px; + padding: 8px; +} + +.mat-icon { + margin: 0px; +} \ No newline at end of file diff --git a/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.spec.ts b/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.spec.ts new file mode 100644 index 00000000000..ae56dc82406 --- /dev/null +++ b/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.spec.ts @@ -0,0 +1,35 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { ComponentSelectorComponent } from './component-selector.component'; +import { ComponentInfoService } from '../../../services/componentInfoService'; +import { ComponentTypeService } from '../../../services/componentTypeService'; +import { ComponentServiceLookupService } from '../../../services/componentServiceLookupService'; +import { StudentTeacherCommonServicesModule } from '../../../../../app/student-teacher-common-services.module'; +import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { MatDialogModule } from '@angular/material/dialog'; +import { MatIconModule } from '@angular/material/icon'; + +describe('ComponentSelectorComponent', () => { + let component: ComponentSelectorComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ComponentSelectorComponent], + imports: [ + HttpClientTestingModule, + MatDialogModule, + MatIconModule, + StudentTeacherCommonServicesModule + ], + providers: [ComponentInfoService, ComponentServiceLookupService, ComponentTypeService] + }).compileComponents(); + fixture = TestBed.createComponent(ComponentSelectorComponent); + component = fixture.componentInstance; + component.componentType = 'OpenResponse'; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.ts b/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.ts new file mode 100644 index 00000000000..ef569c26ef0 --- /dev/null +++ b/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.ts @@ -0,0 +1,43 @@ +import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { ComponentFactory } from '../../../common/ComponentFactory'; +import { MatDialog } from '@angular/material/dialog'; +import { ComponentInfoService } from '../../../services/componentInfoService'; +import { ComponentInfoDialogComponent } from '../component-info-dialog/component-info-dialog.component'; + +@Component({ + selector: 'component-selector', + templateUrl: './component-selector.component.html', + styleUrls: ['./component-selector.component.scss'] +}) +export class ComponentSelectorComponent { + @Output() componentSelectedEvent: EventEmitter = new EventEmitter(); + @Input() componentType: string; + private componentTypeObject: any; + private description: string; + protected label: string; + private previewContent: any; + + constructor(private componentInfoService: ComponentInfoService, private dialog: MatDialog) {} + + ngOnInit(): void { + this.label = this.componentInfoService.getLabel(this.componentType); + this.componentTypeObject = { type: this.componentType, name: this.label }; + this.description = this.componentInfoService.getDescription(this.componentType); + this.previewContent = this.componentInfoService.getPreviewContent(this.componentType); + } + + protected preview(): void { + this.dialog.open(ComponentInfoDialogComponent, { + data: { + component: new ComponentFactory().getComponent(this.previewContent, 'node1'), + description: this.description, + label: this.label + }, + panelClass: 'dialog-lg' + }); + } + + protected select(): void { + this.componentSelectedEvent.emit(this.componentTypeObject); + } +} diff --git a/src/assets/wise5/components/ComponentInfo.ts b/src/assets/wise5/components/ComponentInfo.ts new file mode 100644 index 00000000000..43df1454b67 --- /dev/null +++ b/src/assets/wise5/components/ComponentInfo.ts @@ -0,0 +1,12 @@ +export abstract class ComponentInfo { + abstract description: string; + abstract previewContent: any; + + getDescription(): string { + return this.description; + } + + getPreviewContent(): any { + return this.previewContent; + } +} diff --git a/src/assets/wise5/components/animation/AnimationInfo.ts b/src/assets/wise5/components/animation/AnimationInfo.ts new file mode 100644 index 00000000000..3e2a52bc2b3 --- /dev/null +++ b/src/assets/wise5/components/animation/AnimationInfo.ts @@ -0,0 +1,44 @@ +import { ComponentInfo } from '../ComponentInfo'; + +export class AnimationInfo extends ComponentInfo { + description: string = $localize`The student watches an animation.`; + previewContent: any = { + id: 'abcde12345', + type: 'Animation', + prompt: 'Press play to watch the animation.', + showSaveButton: false, + showSubmitButton: false, + widthInPixels: 600, + widthInUnits: 60, + heightInPixels: 200, + heightInUnits: 20, + dataXOriginInPixels: 0, + dataYOriginInPixels: 80, + coordinateSystem: 'screen', + objects: [ + { + id: 'fw4df1y7nd', + type: 'image', + image: '/assets/img/component-preview/sun.png', + data: [ + { + t: 0, + x: 0, + y: 0 + }, + { + t: 1, + x: 25, + y: -8 + }, + { + t: 2, + x: 50, + y: 0 + } + ] + } + ], + constraints: [] + }; +} diff --git a/src/assets/wise5/components/audioOscillator/AudioOscillatorInfo.ts b/src/assets/wise5/components/audioOscillator/AudioOscillatorInfo.ts new file mode 100644 index 00000000000..a6d9dd8431b --- /dev/null +++ b/src/assets/wise5/components/audioOscillator/AudioOscillatorInfo.ts @@ -0,0 +1,25 @@ +import { ComponentInfo } from '../ComponentInfo'; + +export class AudioOscillatorInfo extends ComponentInfo { + description: string = $localize`The student changes the frequency of a sound wave while they listen to it.`; + previewContent: any = { + id: 'abcde12345', + type: 'AudioOscillator', + prompt: + 'Press play to listen to the sound wave and change the frequency to hear the difference.', + showSaveButton: false, + showSubmitButton: false, + oscillatorTypes: ['sine'], + startingAmplitude: 44, + startingFrequency: 440, + oscilloscopeWidth: 800, + oscilloscopeHeight: 400, + gridCellSize: 50, + stopAfterGoodDraw: true, + canStudentEditAmplitude: true, + canStudentEditFrequency: true, + canStudentViewAmplitudeInput: true, + canStudentViewFrequencyInput: true, + constraints: [] + }; +} diff --git a/src/assets/wise5/components/conceptMap/ConceptMapInfo.ts b/src/assets/wise5/components/conceptMap/ConceptMapInfo.ts new file mode 100644 index 00000000000..a371b1ec48c --- /dev/null +++ b/src/assets/wise5/components/conceptMap/ConceptMapInfo.ts @@ -0,0 +1,47 @@ +import { ComponentInfo } from '../ComponentInfo'; + +export class ConceptMapInfo extends ComponentInfo { + description: string = $localize`The student adds items to a canvas and connects the items with links.`; + previewContent: any = { + id: 'abcde12345', + type: 'ConceptMap', + prompt: 'Link the sun to the plant.', + showSaveButton: false, + showSubmitButton: false, + width: 800, + height: 600, + background: null, + stretchBackground: null, + nodes: [ + { + id: 'node1', + label: 'Sun', + fileName: '/assets/img/component-preview/sun.png', + width: 100, + height: 100 + }, + { + id: 'node2', + label: 'Plant', + fileName: '/assets/img/component-preview/leaf.png', + width: 100, + height: 100 + } + ], + linksTitle: '', + links: [ + { + id: 'link1', + label: 'Sunlight Energy', + color: 'red' + } + ], + rules: [], + starterConceptMap: null, + customRuleEvaluator: '', + showAutoScore: false, + showAutoFeedback: false, + showNodeLabels: true, + constraints: [] + }; +} diff --git a/src/assets/wise5/components/dialogGuidance/DialogGuidanceInfo.ts b/src/assets/wise5/components/dialogGuidance/DialogGuidanceInfo.ts new file mode 100644 index 00000000000..3b3b745e10f --- /dev/null +++ b/src/assets/wise5/components/dialogGuidance/DialogGuidanceInfo.ts @@ -0,0 +1,170 @@ +import { ComponentInfo } from '../ComponentInfo'; + +export class DialogGuidanceInfo extends ComponentInfo { + description: string = $localize`The student chats with a computer avatar about a specific topic.`; + previewContent: any = { + id: 'abcde12345', + type: 'DialogGuidance', + prompt: + "Explain!\n
Use what you've learned about how the Sun warms the Earth to explain your answer.", + showSaveButton: false, + showSubmitButton: false, + itemId: 'CarOnAColdDay_score-ki_idea-ki_nonscorable', + feedbackRules: [ + { + feedback: ['Thank you for chatting with me! Now revise your explanation in the box below.'], + expression: 'isFinalSubmit' + }, + { + feedback: [ + "What's an idea you feel unsure about and chose not to include in your explanation?" + ], + expression: 'isSecondToLastSubmit' + }, + { + feedback: [ + 'Interesting ideas! Can you tell me about how you feel if you are sitting inside a car and the sunlight shines on you through the window?' + ], + expression: '2' + }, + { + feedback: [ + 'Can you tell me more about how the temperature inside the car changes the longer it sits in the sun?' + ], + expression: '3' + }, + { + feedback: [ + 'Can you tell me more about how the Sun makes the inside of the car warmer than outside?' + ], + expression: '3a' + }, + { + feedback: [ + 'Interesting idea! Can you tell me about how you feel if you are sitting inside a car and the sunlight shines on you through the window?' + ], + expression: '4' + }, + { + feedback: [ + 'You’re right that heat energy moves from warmer objects to colder ones until they reach the same temperature. Can you tell me more about how energy gets from the sun to the car?' + ], + expression: '5' + }, + { + feedback: [ + 'You’re right that heat energy is conducted between objects that touch each other. Since the Sun is far away, how can its energy warm the car?' + ], + expression: '6' + }, + { + feedback: ['Can you tell me more about the forms of energy that come from the sun?'], + expression: '7' + }, + { + feedback: ['Interesting idea! How does the sun make the car warmer?'], + expression: '8' + }, + { + feedback: [ + 'Since Akbar has left, how might the Sun influence the temperature inside the car?' + ], + expression: '9' + }, + { + feedback: [ + 'Can you tell me more about how the material impacts the way the car gets energy from the sun?' + ], + expression: '10' + }, + { + feedback: ['Have you ever felt warm inside a car even when the heater wasn’t on?'], + expression: '11' + }, + { + feedback: ['What happens to the Sun’s rays when they reach the car?'], + expression: '12' + }, + { + feedback: ['Can you tell me more about how a car is like a greenhouse?'], + expression: '12a' + }, + { + feedback: ['Can you tell me more about how greenhouse gases cause things to get warmer?'], + expression: '12b' + }, + { + feedback: ['What happens to the energy from the sun when it enters the car?'], + expression: '13' + }, + { + feedback: ['What happens to the energy from the sun when it is absorbed by the car?'], + expression: '14' + }, + { + feedback: [ + 'You’re right that the color of a material impacts how much sunlight is absorbed. What happens to that energy when it is absorbed?' + ], + expression: '14a' + }, + { + feedback: ['Can you tell me more about what happens to the heat energy inside the car?'], + expression: '15' + }, + { + feedback: ['What happens to IR inside of the car?'], + expression: '16' + }, + { + feedback: ['What happens to IR inside of the car?'], + expression: '16a' + }, + { + feedback: [ + 'Can you tell me more about why IR gets trapped in the car but solar radiation doesn’t?' + ], + expression: '17' + }, + { + feedback: [ + 'Why does heat get trapped in the car but solar radiation doesn’t? What happens when an object has heat energy?' + ], + expression: '18' + }, + { + feedback: ['Can you tell me more about what exactly is trapped in the car?'], + expression: '18a' + }, + { + feedback: ['Can you tell me more about how the heat got into the car in the first place?'], + expression: '19' + }, + { + feedback: [ + 'Can you tell me more about this idea or another one in your explanation? I am still learning about student ideas to become a better thought partner.' + ], + expression: 'isDefault' + } + ], + isComputerAvatarEnabled: true, + computerAvatarSettings: { + ids: [ + 'person1', + 'person2', + 'person3', + 'person4', + 'person5', + 'person6', + 'person7', + 'person8', + 'robot1', + 'robot2' + ], + label: 'Thought Buddy', + prompt: 'Discuss your answer with a thought buddy!', + initialResponse: "Hi there! It's nice to meet you. What do you think about..." + }, + version: 2, + constraints: [] + }; +} diff --git a/src/assets/wise5/components/discussion/DiscussionInfo.ts b/src/assets/wise5/components/discussion/DiscussionInfo.ts new file mode 100644 index 00000000000..fa156600473 --- /dev/null +++ b/src/assets/wise5/components/discussion/DiscussionInfo.ts @@ -0,0 +1,15 @@ +import { ComponentInfo } from '../ComponentInfo'; + +export class DiscussionInfo extends ComponentInfo { + description: string = $localize`The student posts messages for the whole class to see.`; + previewContent: any = { + id: 'abcde12345', + type: 'Discussion', + prompt: 'Post a message for the class to view.', + showSaveButton: false, + showSubmitButton: false, + isStudentAttachmentEnabled: true, + gateClassmateResponses: true, + constraints: [] + }; +} diff --git a/src/assets/wise5/components/draw/DrawInfo.ts b/src/assets/wise5/components/draw/DrawInfo.ts new file mode 100644 index 00000000000..f83b7cafde1 --- /dev/null +++ b/src/assets/wise5/components/draw/DrawInfo.ts @@ -0,0 +1,33 @@ +import { ComponentInfo } from '../ComponentInfo'; + +export class DrawInfo extends ComponentInfo { + description: string = $localize`The student draws on a canvas.`; + previewContent: any = { + id: 'abcde12345', + type: 'Draw', + prompt: 'Draw a house.', + showSaveButton: false, + showSubmitButton: false, + stamps: { + Stamps: ['/assets/img/component-preview/sun.png', '/assets/img/component-preview/leaf.png'] + }, + tools: { + select: true, + line: true, + shape: true, + freeHand: true, + text: true, + stamp: true, + strokeColor: true, + fillColor: true, + clone: true, + strokeWidth: true, + sendBack: true, + sendForward: true, + undo: true, + redo: true, + delete: true + }, + constraints: [] + }; +} diff --git a/src/assets/wise5/components/embedded/EmbeddedInfo.ts b/src/assets/wise5/components/embedded/EmbeddedInfo.ts new file mode 100644 index 00000000000..f1ab35a31a5 --- /dev/null +++ b/src/assets/wise5/components/embedded/EmbeddedInfo.ts @@ -0,0 +1,16 @@ +import { ComponentInfo } from '../ComponentInfo'; + +export class EmbeddedInfo extends ComponentInfo { + description: string = $localize`The student interacts with a custom model.`; + previewContent: any = { + id: 'abcde12345', + type: 'Embedded', + prompt: 'Click the differnt boundary types to view them in action.', + showSaveButton: false, + showSubmitButton: false, + url: + 'https://wise.berkeley.edu/curriculum/shared/plate-tectonics-convection-explorer/v1/index.html?maxWidth=900', + height: 600, + constraints: [] + }; +} diff --git a/src/assets/wise5/components/graph/GraphInfo.ts b/src/assets/wise5/components/graph/GraphInfo.ts new file mode 100644 index 00000000000..aad3ae9eb86 --- /dev/null +++ b/src/assets/wise5/components/graph/GraphInfo.ts @@ -0,0 +1,69 @@ +import { ComponentInfo } from '../ComponentInfo'; + +export class GraphInfo extends ComponentInfo { + description: string = $localize`The student views graph data or adds points to a graph.`; + previewContent: any = { + id: 'abcde12345', + type: 'Graph', + prompt: + 'Draw a line that shows the position graph of a person that starts at position 0 meters and then takes 50 seconds to walk 50 meters and then comes back to their start position while moving at a constant speed.', + showSaveButton: false, + showSubmitButton: false, + title: '', + width: 800, + height: 500, + enableTrials: false, + canCreateNewTrials: false, + canDeleteTrials: false, + hideAllTrialsOnNewTrial: false, + canStudentHideSeriesOnLegendClick: false, + roundValuesTo: 'integer', + graphType: 'line', + xAxis: { + title: { + text: 'Time (seconds)', + useHTML: true + }, + min: 0, + max: 100, + units: 's', + locked: true, + type: 'limits', + allowDecimals: false + }, + yAxis: { + title: { + text: 'Position (meters)', + useHTML: true, + style: { + color: '' + } + }, + labels: { + style: { + color: '' + } + }, + min: 0, + max: 100, + units: 'm', + locked: true, + allowDecimals: false, + opposite: false + }, + series: [ + { + name: 'Prediction', + data: [], + color: 'blue', + dashStyle: 'Solid', + marker: { + symbol: 'circle' + }, + canEdit: true, + type: 'line' + } + ], + constraints: [] + }; +} diff --git a/src/assets/wise5/components/html/HtmlInfo.ts b/src/assets/wise5/components/html/HtmlInfo.ts new file mode 100644 index 00000000000..4118a0bd9f0 --- /dev/null +++ b/src/assets/wise5/components/html/HtmlInfo.ts @@ -0,0 +1,15 @@ +import { ComponentInfo } from '../ComponentInfo'; + +export class HtmlInfo extends ComponentInfo { + description: string = $localize`The student views html content.`; + previewContent: any = { + id: 'abcde12345', + type: 'HTML', + prompt: '', + showSaveButton: false, + showSubmitButton: false, + html: + 'The provides light energy to to help them grow.', + constraints: [] + }; +} diff --git a/src/assets/wise5/components/label/LabelInfo.ts b/src/assets/wise5/components/label/LabelInfo.ts new file mode 100644 index 00000000000..f7bc6d1b272 --- /dev/null +++ b/src/assets/wise5/components/label/LabelInfo.ts @@ -0,0 +1,73 @@ +import { ComponentInfo } from '../ComponentInfo'; + +export class LabelInfo extends ComponentInfo { + description: string = $localize`The student adds label to a canvas.`; + previewContent: any = { + id: 'abcde12345', + type: 'Label', + prompt: 'Label the layers of the Earth by moving the labels to the correct location.', + showSaveButton: false, + showSubmitButton: false, + backgroundImage: '/assets/img/component-preview/earth-layers.jpg', + canCreateLabels: true, + canEditLabels: true, + canDeleteLabels: true, + enableCircles: true, + width: 800, + height: 600, + pointSize: 5, + fontSize: 20, + labelWidth: 20, + labels: [ + { + pointX: 453, + pointY: 50, + textX: 648, + textY: 50, + text: 'Crust', + color: 'black', + canEdit: false, + canDelete: false, + timestamp: 1697647088109, + isStarterLabel: true + }, + { + pointX: 449, + pointY: 155, + textX: 644, + textY: 156, + text: 'Mantle', + color: 'black', + canEdit: false, + canDelete: false, + timestamp: 1697647088112, + isStarterLabel: true + }, + { + pointX: 445, + pointY: 250, + textX: 646, + textY: 249, + text: 'Outer Core', + color: 'black', + canEdit: false, + canDelete: false, + timestamp: 1697647088114, + isStarterLabel: true + }, + { + pointX: 443, + pointY: 344, + textX: 639, + textY: 344, + text: 'Inner Core', + color: 'black', + canEdit: false, + canDelete: false, + timestamp: 1697647088117, + isStarterLabel: true + } + ], + constraints: [] + }; +} diff --git a/src/assets/wise5/components/match/MatchInfo.ts b/src/assets/wise5/components/match/MatchInfo.ts new file mode 100644 index 00000000000..031fb592a03 --- /dev/null +++ b/src/assets/wise5/components/match/MatchInfo.ts @@ -0,0 +1,94 @@ +import { ComponentInfo } from '../ComponentInfo'; + +export class MatchInfo extends ComponentInfo { + description: string = $localize`The student places items into buckets.`; + previewContent: any = { + id: 'abcde12345', + type: 'Match', + prompt: '', + showSaveButton: false, + showSubmitButton: true, + choices: [ + { + id: 'b414lojonc', + value: "" + }, + { + id: '56a20j5hvf', + value: 'Apple' + } + ], + choiceReuseEnabled: false, + buckets: [ + { + id: '3ygkgsnl5c', + value: 'Sun', + type: 'bucket' + }, + { + id: 'np0wbaccfb', + value: 'Fruit', + type: 'bucket' + } + ], + feedback: [ + { + bucketId: '0', + choices: [ + { + choiceId: 'b414lojonc', + feedback: '', + isCorrect: false + }, + { + choiceId: '56a20j5hvf', + feedback: '', + isCorrect: false, + position: null, + incorrectPositionFeedback: null + } + ] + }, + { + bucketId: '3ygkgsnl5c', + choices: [ + { + choiceId: 'b414lojonc', + feedback: '', + isCorrect: true, + position: null, + incorrectPositionFeedback: null + }, + { + choiceId: '56a20j5hvf', + feedback: '', + isCorrect: false, + position: null, + incorrectPositionFeedback: null + } + ] + }, + { + bucketId: 'np0wbaccfb', + choices: [ + { + choiceId: 'b414lojonc', + feedback: '', + isCorrect: false, + position: null, + incorrectPositionFeedback: null + }, + { + choiceId: '56a20j5hvf', + feedback: '', + isCorrect: true, + position: null, + incorrectPositionFeedback: null + } + ] + } + ], + ordered: false, + constraints: [] + }; +} diff --git a/src/assets/wise5/components/multipleChoice/MultipleChoiceInfo.ts b/src/assets/wise5/components/multipleChoice/MultipleChoiceInfo.ts new file mode 100644 index 00000000000..e2064d016ab --- /dev/null +++ b/src/assets/wise5/components/multipleChoice/MultipleChoiceInfo.ts @@ -0,0 +1,35 @@ +import { ComponentInfo } from '../ComponentInfo'; + +export class MultipleChoiceInfo extends ComponentInfo { + description: string = $localize`The student chooses one or more choices.`; + previewContent: any = { + id: 'abcde12345', + type: 'MultipleChoice', + prompt: 'Choose the fruit.', + showSaveButton: false, + showSubmitButton: true, + choiceType: 'radio', + choices: [ + { + id: 'h0bdww4oh5', + text: '', + feedback: '', + isCorrect: false + }, + { + id: 're6btejd1o', + text: '', + feedback: '', + isCorrect: true + }, + { + id: '5u2px4yxj3', + text: 'Apple', + feedback: '', + isCorrect: true + } + ], + showFeedback: true, + constraints: [] + }; +} diff --git a/src/assets/wise5/components/openResponse/OpenResponseInfo.ts b/src/assets/wise5/components/openResponse/OpenResponseInfo.ts new file mode 100644 index 00000000000..fe854e7be54 --- /dev/null +++ b/src/assets/wise5/components/openResponse/OpenResponseInfo.ts @@ -0,0 +1,15 @@ +import { ComponentInfo } from '../ComponentInfo'; + +export class OpenResponseInfo extends ComponentInfo { + description: string = $localize`The student types a text response.`; + previewContent: any = { + id: 'abcde12345', + type: 'OpenResponse', + prompt: 'How do plants grow?', + showSaveButton: false, + showSubmitButton: false, + starterSentence: null, + isStudentAttachmentEnabled: false, + constraints: [] + }; +} diff --git a/src/assets/wise5/components/outsideURL/OutsideUrlInfo.ts b/src/assets/wise5/components/outsideURL/OutsideUrlInfo.ts new file mode 100644 index 00000000000..8fbcf7eb0be --- /dev/null +++ b/src/assets/wise5/components/outsideURL/OutsideUrlInfo.ts @@ -0,0 +1,17 @@ +import { ComponentInfo } from '../ComponentInfo'; + +export class OutsideUrlInfo extends ComponentInfo { + description: string = $localize`The student views a webpage.`; + previewContent: any = { + id: 'abcde12345', + type: 'OutsideURL', + prompt: 'Play with the model.', + showSaveButton: false, + showSubmitButton: false, + url: + 'https://lab.concord.org/embeddable.html#interactives/air-pollution/air-pollution-master.json', + height: 600, + info: 'https://learn.concord.org/resources/855/air-pollution-model-cross-section', + constraints: [] + }; +} diff --git a/src/assets/wise5/components/peerChat/PeerChatInfo.ts b/src/assets/wise5/components/peerChat/PeerChatInfo.ts new file mode 100644 index 00000000000..dc82c1a7918 --- /dev/null +++ b/src/assets/wise5/components/peerChat/PeerChatInfo.ts @@ -0,0 +1,14 @@ +import { ComponentInfo } from '../ComponentInfo'; + +export class PeerChatInfo extends ComponentInfo { + description: string = $localize`The student is paired up with another student and they chat about a topic.`; + previewContent: any = { + id: 'abcde12345', + type: 'PeerChat', + prompt: 'Chat with your classmate about how plants grow.', + showSaveButton: false, + showSubmitButton: false, + peerGroupingTag: '', + constraints: [] + }; +} diff --git a/src/assets/wise5/components/showGroupWork/ShowGroupWorkInfo.ts b/src/assets/wise5/components/showGroupWork/ShowGroupWorkInfo.ts new file mode 100644 index 00000000000..0a2cbe80a0f --- /dev/null +++ b/src/assets/wise5/components/showGroupWork/ShowGroupWorkInfo.ts @@ -0,0 +1,18 @@ +import { ComponentInfo } from '../ComponentInfo'; + +export class ShowGroupWorkInfo extends ComponentInfo { + description: string = $localize`The student is shown work that their group submitted for a specific step.`; + previewContent: any = { + id: 'abcde12345', + type: 'ShowGroupWork', + prompt: 'This is the work that your group submitted for a previous step.', + showSaveButton: false, + showSubmitButton: false, + showWorkNodeId: '', + showWorkComponentId: '', + peerGroupingTag: '', + isShowMyWork: true, + layout: 'column', + constraints: [] + }; +} diff --git a/src/assets/wise5/components/showMyWork/ShowMyWorkInfo.ts b/src/assets/wise5/components/showMyWork/ShowMyWorkInfo.ts new file mode 100644 index 00000000000..8308643c940 --- /dev/null +++ b/src/assets/wise5/components/showMyWork/ShowMyWorkInfo.ts @@ -0,0 +1,15 @@ +import { ComponentInfo } from '../ComponentInfo'; + +export class ShowMyWorkInfo extends ComponentInfo { + description: string = $localize`The student is shown work that that they submitted for a specific step.`; + previewContent: any = { + id: 'abcde12345', + type: 'ShowMyWork', + prompt: 'This is the work that you submitted for a previous step.', + showSaveButton: false, + showSubmitButton: false, + showWorkNodeId: '', + showWorkComponentId: '', + constraints: [] + }; +} diff --git a/src/assets/wise5/components/summary/SummaryInfo.ts b/src/assets/wise5/components/summary/SummaryInfo.ts new file mode 100644 index 00000000000..99d2e5d3ba4 --- /dev/null +++ b/src/assets/wise5/components/summary/SummaryInfo.ts @@ -0,0 +1,21 @@ +import { ComponentInfo } from '../ComponentInfo'; + +export class SummaryInfo extends ComponentInfo { + description: string = $localize`The student is shown aggregate graph data of the class.`; + previewContent: any = { + id: 'abcde12345', + type: 'Summary', + prompt: 'This is a summary graph of the class data for a previous step.', + showSaveButton: false, + showSubmitButton: false, + summaryNodeId: null, + summaryComponentId: null, + source: 'period', + studentDataType: null, + chartType: 'column', + requirementToSeeSummary: 'submitWork', + highlightCorrectAnswer: false, + customLabelColors: [], + constraints: [] + }; +} diff --git a/src/assets/wise5/components/table/TableInfo.ts b/src/assets/wise5/components/table/TableInfo.ts new file mode 100644 index 00000000000..2ee0aeb994e --- /dev/null +++ b/src/assets/wise5/components/table/TableInfo.ts @@ -0,0 +1,78 @@ +import { ComponentInfo } from '../ComponentInfo'; + +export class TableInfo extends ComponentInfo { + description: string = $localize`The student views a table that they may or may not be able to change.`; + previewContent: any = { + id: 'abcde12345', + type: 'Table', + prompt: 'Add the number of elephants to the graph.', + showSaveButton: false, + showSubmitButton: false, + globalCellSize: 10, + numRows: 5, + numColumns: 2, + tableData: [ + [ + { + text: 'Animal', + editable: false, + size: null + }, + { + text: 'Count', + editable: false, + size: null + } + ], + [ + { + text: 'Bears', + editable: false, + size: null + }, + { + text: '1', + editable: false, + size: null + } + ], + [ + { + text: 'Cats', + editable: false, + size: null + }, + { + text: '4', + editable: false, + size: null + } + ], + [ + { + text: 'Dogs', + editable: false, + size: null + }, + { + text: '6', + editable: false, + size: null + } + ], + [ + { + text: 'Elephants', + editable: false, + size: null + }, + { + text: '', + editable: true, + size: null + } + ] + ], + constraints: [] + }; +} diff --git a/src/assets/wise5/services/componentInfoService.ts b/src/assets/wise5/services/componentInfoService.ts new file mode 100644 index 00000000000..b2d7a040f97 --- /dev/null +++ b/src/assets/wise5/services/componentInfoService.ts @@ -0,0 +1,60 @@ +import { Injectable } from '@angular/core'; +import { ComponentTypeService } from './componentTypeService'; +import { MultipleChoiceInfo } from '../components/multipleChoice/MultipleChoiceInfo'; +import { OpenResponseInfo } from '../components/openResponse/OpenResponseInfo'; +import { AnimationInfo } from '../components/animation/AnimationInfo'; +import { AudioOscillatorInfo } from '../components/audioOscillator/AudioOscillatorInfo'; +import { ConceptMapInfo } from '../components/conceptMap/ConceptMapInfo'; +import { DialogGuidanceInfo } from '../components/dialogGuidance/DialogGuidanceInfo'; +import { DiscussionInfo } from '../components/discussion/DiscussionInfo'; +import { DrawInfo } from '../components/draw/DrawInfo'; +import { EmbeddedInfo } from '../components/embedded/EmbeddedInfo'; +import { GraphInfo } from '../components/graph/GraphInfo'; +import { HtmlInfo } from '../components/html/HtmlInfo'; +import { LabelInfo } from '../components/label/LabelInfo'; +import { MatchInfo } from '../components/match/MatchInfo'; +import { OutsideUrlInfo } from '../components/outsideURL/OutsideUrlInfo'; +import { PeerChatInfo } from '../components/peerChat/PeerChatInfo'; +import { ShowGroupWorkInfo } from '../components/showGroupWork/ShowGroupWorkInfo'; +import { ShowMyWorkInfo } from '../components/showMyWork/ShowMyWorkInfo'; +import { SummaryInfo } from '../components/summary/SummaryInfo'; +import { TableInfo } from '../components/table/TableInfo'; + +@Injectable() +export class ComponentInfoService { + private componentInfo = { + Animation: new AnimationInfo(), + AudioOscillator: new AudioOscillatorInfo(), + ConceptMap: new ConceptMapInfo(), + DialogGuidance: new DialogGuidanceInfo(), + Discussion: new DiscussionInfo(), + Draw: new DrawInfo(), + Embedded: new EmbeddedInfo(), + Graph: new GraphInfo(), + HTML: new HtmlInfo(), + Label: new LabelInfo(), + Match: new MatchInfo(), + MultipleChoice: new MultipleChoiceInfo(), + OpenResponse: new OpenResponseInfo(), + OutsideURL: new OutsideUrlInfo(), + PeerChat: new PeerChatInfo(), + ShowGroupWork: new ShowGroupWorkInfo(), + ShowMyWork: new ShowMyWorkInfo(), + Summary: new SummaryInfo(), + Table: new TableInfo() + }; + + constructor(private componentTypeService: ComponentTypeService) {} + + getLabel(componentType: string): string { + return this.componentTypeService.getComponentTypeLabel(componentType); + } + + getDescription(componentType: string): string { + return this.componentInfo[componentType].getDescription(); + } + + getPreviewContent(componentType: string): string { + return this.componentInfo[componentType].getPreviewContent(); + } +} From f03ac9e496f865d8b6bf769f4ec8730aea73e7e5 Mon Sep 17 00:00:00 2001 From: Geoffrey Kwan Date: Thu, 19 Oct 2023 11:20:10 -0400 Subject: [PATCH 2/7] feat(Authoring): Add label field to component info and clean up code #1457 --- .../choose-new-component.component.html | 2 +- .../add-your-own-node.component.html | 2 +- .../component-selector.component.spec.ts | 3 +-- .../component-selector.component.ts | 21 +++++++++---------- src/assets/wise5/components/ComponentInfo.ts | 9 ++++++-- .../components/animation/AnimationInfo.ts | 5 +++-- .../audioOscillator/AudioOscillatorInfo.ts | 5 +++-- .../components/conceptMap/ConceptMapInfo.ts | 5 +++-- .../dialogGuidance/DialogGuidanceInfo.ts | 5 +++-- .../components/discussion/DiscussionInfo.ts | 5 +++-- src/assets/wise5/components/draw/DrawInfo.ts | 5 +++-- .../wise5/components/embedded/EmbeddedInfo.ts | 5 +++-- .../wise5/components/graph/GraphInfo.ts | 5 +++-- src/assets/wise5/components/html/HtmlInfo.ts | 5 +++-- .../wise5/components/label/LabelInfo.ts | 5 +++-- .../wise5/components/match/MatchInfo.ts | 5 +++-- .../multipleChoice/MultipleChoiceInfo.ts | 5 +++-- .../openResponse/OpenResponseInfo.ts | 5 +++-- .../components/outsideURL/OutsideUrlInfo.ts | 5 +++-- .../wise5/components/peerChat/PeerChatInfo.ts | 5 +++-- .../showGroupWork/ShowGroupWorkInfo.ts | 5 +++-- .../components/showMyWork/ShowMyWorkInfo.ts | 5 +++-- .../wise5/components/summary/SummaryInfo.ts | 5 +++-- .../wise5/components/table/TableInfo.ts | 5 +++-- .../wise5/services/componentInfoService.ts | 16 +++----------- 25 files changed, 80 insertions(+), 68 deletions(-) diff --git a/src/app/authoring-tool/add-component/choose-new-component/choose-new-component.component.html b/src/app/authoring-tool/add-component/choose-new-component/choose-new-component.component.html index f6b831610f5..76bcc059af7 100644 --- a/src/app/authoring-tool/add-component/choose-new-component/choose-new-component.component.html +++ b/src/app/authoring-tool/add-component/choose-new-component/choose-new-component.component.html @@ -19,7 +19,7 @@
diff --git a/src/assets/wise5/authoringTool/addNode/add-your-own-node/add-your-own-node.component.html b/src/assets/wise5/authoringTool/addNode/add-your-own-node/add-your-own-node.component.html index d34d5936dbb..394493497d1 100644 --- a/src/assets/wise5/authoringTool/addNode/add-your-own-node/add-your-own-node.component.html +++ b/src/assets/wise5/authoringTool/addNode/add-your-own-node/add-your-own-node.component.html @@ -43,7 +43,7 @@
Select components to add to your new step (optional):
diff --git a/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.spec.ts b/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.spec.ts index ae56dc82406..02c72b225a4 100644 --- a/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.spec.ts +++ b/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.spec.ts @@ -1,7 +1,6 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentSelectorComponent } from './component-selector.component'; import { ComponentInfoService } from '../../../services/componentInfoService'; -import { ComponentTypeService } from '../../../services/componentTypeService'; import { ComponentServiceLookupService } from '../../../services/componentServiceLookupService'; import { StudentTeacherCommonServicesModule } from '../../../../../app/student-teacher-common-services.module'; import { HttpClientTestingModule } from '@angular/common/http/testing'; @@ -21,7 +20,7 @@ describe('ComponentSelectorComponent', () => { MatIconModule, StudentTeacherCommonServicesModule ], - providers: [ComponentInfoService, ComponentServiceLookupService, ComponentTypeService] + providers: [ComponentInfoService, ComponentServiceLookupService] }).compileComponents(); fixture = TestBed.createComponent(ComponentSelectorComponent); component = fixture.componentInstance; diff --git a/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.ts b/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.ts index ef569c26ef0..8463d0bbe84 100644 --- a/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.ts +++ b/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.ts @@ -10,27 +10,26 @@ import { ComponentInfoDialogComponent } from '../component-info-dialog/component styleUrls: ['./component-selector.component.scss'] }) export class ComponentSelectorComponent { - @Output() componentSelectedEvent: EventEmitter = new EventEmitter(); + private componentInfo: any; + @Output() componentSelectedEvent: EventEmitter = new EventEmitter(); @Input() componentType: string; - private componentTypeObject: any; - private description: string; protected label: string; - private previewContent: any; constructor(private componentInfoService: ComponentInfoService, private dialog: MatDialog) {} ngOnInit(): void { - this.label = this.componentInfoService.getLabel(this.componentType); - this.componentTypeObject = { type: this.componentType, name: this.label }; - this.description = this.componentInfoService.getDescription(this.componentType); - this.previewContent = this.componentInfoService.getPreviewContent(this.componentType); + this.componentInfo = this.componentInfoService.getInfo(this.componentType); + this.label = this.componentInfo.getLabel(); } protected preview(): void { this.dialog.open(ComponentInfoDialogComponent, { data: { - component: new ComponentFactory().getComponent(this.previewContent, 'node1'), - description: this.description, + component: new ComponentFactory().getComponent( + this.componentInfo.getPreviewContent(), + 'node1' + ), + description: this.componentInfo.getDescription(), label: this.label }, panelClass: 'dialog-lg' @@ -38,6 +37,6 @@ export class ComponentSelectorComponent { } protected select(): void { - this.componentSelectedEvent.emit(this.componentTypeObject); + this.componentSelectedEvent.emit(); } } diff --git a/src/assets/wise5/components/ComponentInfo.ts b/src/assets/wise5/components/ComponentInfo.ts index 43df1454b67..62199ed3d48 100644 --- a/src/assets/wise5/components/ComponentInfo.ts +++ b/src/assets/wise5/components/ComponentInfo.ts @@ -1,11 +1,16 @@ export abstract class ComponentInfo { - abstract description: string; - abstract previewContent: any; + protected abstract description: string; + protected abstract label: string; + protected abstract previewContent: any; getDescription(): string { return this.description; } + getLabel(): string { + return this.label; + } + getPreviewContent(): any { return this.previewContent; } diff --git a/src/assets/wise5/components/animation/AnimationInfo.ts b/src/assets/wise5/components/animation/AnimationInfo.ts index 3e2a52bc2b3..5a527c4006a 100644 --- a/src/assets/wise5/components/animation/AnimationInfo.ts +++ b/src/assets/wise5/components/animation/AnimationInfo.ts @@ -1,8 +1,9 @@ import { ComponentInfo } from '../ComponentInfo'; export class AnimationInfo extends ComponentInfo { - description: string = $localize`The student watches an animation.`; - previewContent: any = { + protected description: string = $localize`The student watches an animation.`; + protected label: string = $localize`Animation`; + protected previewContent: any = { id: 'abcde12345', type: 'Animation', prompt: 'Press play to watch the animation.', diff --git a/src/assets/wise5/components/audioOscillator/AudioOscillatorInfo.ts b/src/assets/wise5/components/audioOscillator/AudioOscillatorInfo.ts index a6d9dd8431b..44024ae7def 100644 --- a/src/assets/wise5/components/audioOscillator/AudioOscillatorInfo.ts +++ b/src/assets/wise5/components/audioOscillator/AudioOscillatorInfo.ts @@ -1,8 +1,9 @@ import { ComponentInfo } from '../ComponentInfo'; export class AudioOscillatorInfo extends ComponentInfo { - description: string = $localize`The student changes the frequency of a sound wave while they listen to it.`; - previewContent: any = { + protected description: string = $localize`The student changes the frequency of a sound wave while they listen to it.`; + protected label: string = $localize`Audio Oscillator`; + protected previewContent: any = { id: 'abcde12345', type: 'AudioOscillator', prompt: diff --git a/src/assets/wise5/components/conceptMap/ConceptMapInfo.ts b/src/assets/wise5/components/conceptMap/ConceptMapInfo.ts index a371b1ec48c..73c29d9197f 100644 --- a/src/assets/wise5/components/conceptMap/ConceptMapInfo.ts +++ b/src/assets/wise5/components/conceptMap/ConceptMapInfo.ts @@ -1,8 +1,9 @@ import { ComponentInfo } from '../ComponentInfo'; export class ConceptMapInfo extends ComponentInfo { - description: string = $localize`The student adds items to a canvas and connects the items with links.`; - previewContent: any = { + protected description: string = $localize`The student adds items to a canvas and connects the items with links.`; + protected label: string = $localize`Concept Map`; + protected previewContent: any = { id: 'abcde12345', type: 'ConceptMap', prompt: 'Link the sun to the plant.', diff --git a/src/assets/wise5/components/dialogGuidance/DialogGuidanceInfo.ts b/src/assets/wise5/components/dialogGuidance/DialogGuidanceInfo.ts index 3b3b745e10f..f2fd2897c84 100644 --- a/src/assets/wise5/components/dialogGuidance/DialogGuidanceInfo.ts +++ b/src/assets/wise5/components/dialogGuidance/DialogGuidanceInfo.ts @@ -1,8 +1,9 @@ import { ComponentInfo } from '../ComponentInfo'; export class DialogGuidanceInfo extends ComponentInfo { - description: string = $localize`The student chats with a computer avatar about a specific topic.`; - previewContent: any = { + protected description: string = $localize`The student chats with a computer avatar about a specific topic.`; + protected label: string = $localize`Dialog Guidance`; + protected previewContent: any = { id: 'abcde12345', type: 'DialogGuidance', prompt: diff --git a/src/assets/wise5/components/discussion/DiscussionInfo.ts b/src/assets/wise5/components/discussion/DiscussionInfo.ts index fa156600473..7ca3fbd070c 100644 --- a/src/assets/wise5/components/discussion/DiscussionInfo.ts +++ b/src/assets/wise5/components/discussion/DiscussionInfo.ts @@ -1,8 +1,9 @@ import { ComponentInfo } from '../ComponentInfo'; export class DiscussionInfo extends ComponentInfo { - description: string = $localize`The student posts messages for the whole class to see.`; - previewContent: any = { + protected description: string = $localize`The student posts messages for the whole class to see.`; + protected label: string = $localize`Discussion`; + protected previewContent: any = { id: 'abcde12345', type: 'Discussion', prompt: 'Post a message for the class to view.', diff --git a/src/assets/wise5/components/draw/DrawInfo.ts b/src/assets/wise5/components/draw/DrawInfo.ts index f83b7cafde1..e9027e6a275 100644 --- a/src/assets/wise5/components/draw/DrawInfo.ts +++ b/src/assets/wise5/components/draw/DrawInfo.ts @@ -1,8 +1,9 @@ import { ComponentInfo } from '../ComponentInfo'; export class DrawInfo extends ComponentInfo { - description: string = $localize`The student draws on a canvas.`; - previewContent: any = { + protected description: string = $localize`The student draws on a canvas.`; + protected label: string = $localize`Draw`; + protected previewContent: any = { id: 'abcde12345', type: 'Draw', prompt: 'Draw a house.', diff --git a/src/assets/wise5/components/embedded/EmbeddedInfo.ts b/src/assets/wise5/components/embedded/EmbeddedInfo.ts index f1ab35a31a5..f31d556d28f 100644 --- a/src/assets/wise5/components/embedded/EmbeddedInfo.ts +++ b/src/assets/wise5/components/embedded/EmbeddedInfo.ts @@ -1,8 +1,9 @@ import { ComponentInfo } from '../ComponentInfo'; export class EmbeddedInfo extends ComponentInfo { - description: string = $localize`The student interacts with a custom model.`; - previewContent: any = { + protected description: string = $localize`The student interacts with a custom model.`; + protected label: string = $localize`Embedded (Custom)`; + protected previewContent: any = { id: 'abcde12345', type: 'Embedded', prompt: 'Click the differnt boundary types to view them in action.', diff --git a/src/assets/wise5/components/graph/GraphInfo.ts b/src/assets/wise5/components/graph/GraphInfo.ts index aad3ae9eb86..45c9acf30bb 100644 --- a/src/assets/wise5/components/graph/GraphInfo.ts +++ b/src/assets/wise5/components/graph/GraphInfo.ts @@ -1,8 +1,9 @@ import { ComponentInfo } from '../ComponentInfo'; export class GraphInfo extends ComponentInfo { - description: string = $localize`The student views graph data or adds points to a graph.`; - previewContent: any = { + protected description: string = $localize`The student views graph data or adds points to a graph.`; + protected label: string = $localize`Graph`; + protected previewContent: any = { id: 'abcde12345', type: 'Graph', prompt: diff --git a/src/assets/wise5/components/html/HtmlInfo.ts b/src/assets/wise5/components/html/HtmlInfo.ts index 4118a0bd9f0..e32e2800c2a 100644 --- a/src/assets/wise5/components/html/HtmlInfo.ts +++ b/src/assets/wise5/components/html/HtmlInfo.ts @@ -1,8 +1,9 @@ import { ComponentInfo } from '../ComponentInfo'; export class HtmlInfo extends ComponentInfo { - description: string = $localize`The student views html content.`; - previewContent: any = { + protected description: string = $localize`The student views html content.`; + protected label: string = $localize`Rich Text (HTML)`; + protected previewContent: any = { id: 'abcde12345', type: 'HTML', prompt: '', diff --git a/src/assets/wise5/components/label/LabelInfo.ts b/src/assets/wise5/components/label/LabelInfo.ts index f7bc6d1b272..a1a4823d99f 100644 --- a/src/assets/wise5/components/label/LabelInfo.ts +++ b/src/assets/wise5/components/label/LabelInfo.ts @@ -1,8 +1,9 @@ import { ComponentInfo } from '../ComponentInfo'; export class LabelInfo extends ComponentInfo { - description: string = $localize`The student adds label to a canvas.`; - previewContent: any = { + protected description: string = $localize`The student adds label to a canvas.`; + protected label: string = $localize`Label`; + protected previewContent: any = { id: 'abcde12345', type: 'Label', prompt: 'Label the layers of the Earth by moving the labels to the correct location.', diff --git a/src/assets/wise5/components/match/MatchInfo.ts b/src/assets/wise5/components/match/MatchInfo.ts index 031fb592a03..7b17c3d18c2 100644 --- a/src/assets/wise5/components/match/MatchInfo.ts +++ b/src/assets/wise5/components/match/MatchInfo.ts @@ -1,8 +1,9 @@ import { ComponentInfo } from '../ComponentInfo'; export class MatchInfo extends ComponentInfo { - description: string = $localize`The student places items into buckets.`; - previewContent: any = { + protected description: string = $localize`The student places items into buckets.`; + protected label: string = $localize`Match`; + protected previewContent: any = { id: 'abcde12345', type: 'Match', prompt: '', diff --git a/src/assets/wise5/components/multipleChoice/MultipleChoiceInfo.ts b/src/assets/wise5/components/multipleChoice/MultipleChoiceInfo.ts index e2064d016ab..7953ccb1ec4 100644 --- a/src/assets/wise5/components/multipleChoice/MultipleChoiceInfo.ts +++ b/src/assets/wise5/components/multipleChoice/MultipleChoiceInfo.ts @@ -1,8 +1,9 @@ import { ComponentInfo } from '../ComponentInfo'; export class MultipleChoiceInfo extends ComponentInfo { - description: string = $localize`The student chooses one or more choices.`; - previewContent: any = { + protected description: string = $localize`The student chooses one or more choices.`; + protected label: string = $localize`Multiple Choice`; + protected previewContent: any = { id: 'abcde12345', type: 'MultipleChoice', prompt: 'Choose the fruit.', diff --git a/src/assets/wise5/components/openResponse/OpenResponseInfo.ts b/src/assets/wise5/components/openResponse/OpenResponseInfo.ts index fe854e7be54..99338abc239 100644 --- a/src/assets/wise5/components/openResponse/OpenResponseInfo.ts +++ b/src/assets/wise5/components/openResponse/OpenResponseInfo.ts @@ -1,8 +1,9 @@ import { ComponentInfo } from '../ComponentInfo'; export class OpenResponseInfo extends ComponentInfo { - description: string = $localize`The student types a text response.`; - previewContent: any = { + protected description: string = $localize`The student types a text response.`; + protected label: string = $localize`Open Response`; + protected previewContent: any = { id: 'abcde12345', type: 'OpenResponse', prompt: 'How do plants grow?', diff --git a/src/assets/wise5/components/outsideURL/OutsideUrlInfo.ts b/src/assets/wise5/components/outsideURL/OutsideUrlInfo.ts index 8fbcf7eb0be..7b255da8f45 100644 --- a/src/assets/wise5/components/outsideURL/OutsideUrlInfo.ts +++ b/src/assets/wise5/components/outsideURL/OutsideUrlInfo.ts @@ -1,8 +1,9 @@ import { ComponentInfo } from '../ComponentInfo'; export class OutsideUrlInfo extends ComponentInfo { - description: string = $localize`The student views a webpage.`; - previewContent: any = { + protected description: string = $localize`The student views a webpage.`; + protected label: string = $localize`Outside Resource`; + protected previewContent: any = { id: 'abcde12345', type: 'OutsideURL', prompt: 'Play with the model.', diff --git a/src/assets/wise5/components/peerChat/PeerChatInfo.ts b/src/assets/wise5/components/peerChat/PeerChatInfo.ts index dc82c1a7918..e2bb94fa426 100644 --- a/src/assets/wise5/components/peerChat/PeerChatInfo.ts +++ b/src/assets/wise5/components/peerChat/PeerChatInfo.ts @@ -1,8 +1,9 @@ import { ComponentInfo } from '../ComponentInfo'; export class PeerChatInfo extends ComponentInfo { - description: string = $localize`The student is paired up with another student and they chat about a topic.`; - previewContent: any = { + protected description: string = $localize`The student is paired up with another student and they chat about a topic.`; + protected label: string = $localize`Peer Chat`; + protected previewContent: any = { id: 'abcde12345', type: 'PeerChat', prompt: 'Chat with your classmate about how plants grow.', diff --git a/src/assets/wise5/components/showGroupWork/ShowGroupWorkInfo.ts b/src/assets/wise5/components/showGroupWork/ShowGroupWorkInfo.ts index 0a2cbe80a0f..e910e28e349 100644 --- a/src/assets/wise5/components/showGroupWork/ShowGroupWorkInfo.ts +++ b/src/assets/wise5/components/showGroupWork/ShowGroupWorkInfo.ts @@ -1,8 +1,9 @@ import { ComponentInfo } from '../ComponentInfo'; export class ShowGroupWorkInfo extends ComponentInfo { - description: string = $localize`The student is shown work that their group submitted for a specific step.`; - previewContent: any = { + protected description: string = $localize`The student is shown work that their group submitted for a specific step.`; + protected label: string = $localize`Show Group Work`; + protected previewContent: any = { id: 'abcde12345', type: 'ShowGroupWork', prompt: 'This is the work that your group submitted for a previous step.', diff --git a/src/assets/wise5/components/showMyWork/ShowMyWorkInfo.ts b/src/assets/wise5/components/showMyWork/ShowMyWorkInfo.ts index 8308643c940..240d41c07e6 100644 --- a/src/assets/wise5/components/showMyWork/ShowMyWorkInfo.ts +++ b/src/assets/wise5/components/showMyWork/ShowMyWorkInfo.ts @@ -1,8 +1,9 @@ import { ComponentInfo } from '../ComponentInfo'; export class ShowMyWorkInfo extends ComponentInfo { - description: string = $localize`The student is shown work that that they submitted for a specific step.`; - previewContent: any = { + protected description: string = $localize`The student is shown work that that they submitted for a specific step.`; + protected label: string = $localize`Show My Work`; + protected previewContent: any = { id: 'abcde12345', type: 'ShowMyWork', prompt: 'This is the work that you submitted for a previous step.', diff --git a/src/assets/wise5/components/summary/SummaryInfo.ts b/src/assets/wise5/components/summary/SummaryInfo.ts index 99d2e5d3ba4..9f0003f04d2 100644 --- a/src/assets/wise5/components/summary/SummaryInfo.ts +++ b/src/assets/wise5/components/summary/SummaryInfo.ts @@ -1,8 +1,9 @@ import { ComponentInfo } from '../ComponentInfo'; export class SummaryInfo extends ComponentInfo { - description: string = $localize`The student is shown aggregate graph data of the class.`; - previewContent: any = { + protected description: string = $localize`The student is shown aggregate graph data of the class.`; + protected label: string = $localize`Summary`; + protected previewContent: any = { id: 'abcde12345', type: 'Summary', prompt: 'This is a summary graph of the class data for a previous step.', diff --git a/src/assets/wise5/components/table/TableInfo.ts b/src/assets/wise5/components/table/TableInfo.ts index 2ee0aeb994e..3e9804619ec 100644 --- a/src/assets/wise5/components/table/TableInfo.ts +++ b/src/assets/wise5/components/table/TableInfo.ts @@ -1,8 +1,9 @@ import { ComponentInfo } from '../ComponentInfo'; export class TableInfo extends ComponentInfo { - description: string = $localize`The student views a table that they may or may not be able to change.`; - previewContent: any = { + protected description: string = $localize`The student views a table that they may or may not be able to change.`; + protected label: string = $localize`Table`; + protected previewContent: any = { id: 'abcde12345', type: 'Table', prompt: 'Add the number of elephants to the graph.', diff --git a/src/assets/wise5/services/componentInfoService.ts b/src/assets/wise5/services/componentInfoService.ts index b2d7a040f97..ef48513d286 100644 --- a/src/assets/wise5/services/componentInfoService.ts +++ b/src/assets/wise5/services/componentInfoService.ts @@ -1,5 +1,4 @@ import { Injectable } from '@angular/core'; -import { ComponentTypeService } from './componentTypeService'; import { MultipleChoiceInfo } from '../components/multipleChoice/MultipleChoiceInfo'; import { OpenResponseInfo } from '../components/openResponse/OpenResponseInfo'; import { AnimationInfo } from '../components/animation/AnimationInfo'; @@ -19,6 +18,7 @@ import { ShowGroupWorkInfo } from '../components/showGroupWork/ShowGroupWorkInfo import { ShowMyWorkInfo } from '../components/showMyWork/ShowMyWorkInfo'; import { SummaryInfo } from '../components/summary/SummaryInfo'; import { TableInfo } from '../components/table/TableInfo'; +import { ComponentInfo } from '../components/ComponentInfo'; @Injectable() export class ComponentInfoService { @@ -44,17 +44,7 @@ export class ComponentInfoService { Table: new TableInfo() }; - constructor(private componentTypeService: ComponentTypeService) {} - - getLabel(componentType: string): string { - return this.componentTypeService.getComponentTypeLabel(componentType); - } - - getDescription(componentType: string): string { - return this.componentInfo[componentType].getDescription(); - } - - getPreviewContent(componentType: string): string { - return this.componentInfo[componentType].getPreviewContent(); + getInfo(componentType: string): ComponentInfo { + return this.componentInfo[componentType]; } } From a7f6fd6b97fcbd1a27e555249b9edcb8ed67a346 Mon Sep 17 00:00:00 2001 From: Geoffrey Kwan Date: Thu, 19 Oct 2023 18:41:03 -0400 Subject: [PATCH 3/7] feat(Authoring): Remove plus button for selecting component #1457 --- .../add-your-own-node.component.html | 4 ++-- .../add-your-own-node.component.scss | 2 +- .../component-selector.component.html | 18 +++++++----------- .../component-selector.component.scss | 13 ++++++++++--- 4 files changed, 20 insertions(+), 17 deletions(-) diff --git a/src/assets/wise5/authoringTool/addNode/add-your-own-node/add-your-own-node.component.html b/src/assets/wise5/authoringTool/addNode/add-your-own-node/add-your-own-node.component.html index 394493497d1..8f9da718302 100644 --- a/src/assets/wise5/authoringTool/addNode/add-your-own-node/add-your-own-node.component.html +++ b/src/assets/wise5/authoringTool/addNode/add-your-own-node/add-your-own-node.component.html @@ -8,7 +8,7 @@
Select components to add to your new step (optional):
-
+
No components added
Select components to add to your new step (optional):
-
+
-
- {{ label }} - - - -
+
+ +
diff --git a/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.scss b/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.scss index 8fe29390730..95c0cc910a8 100644 --- a/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.scss +++ b/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.scss @@ -1,9 +1,16 @@ -.component-container { - border: 1px solid grey; +.component-div { + border: 1px solid lightgrey; border-radius: 6px; - padding: 8px; + padding: 2px 6px; +} + +.component-button { + width: 100%; + justify-content: flex-start; + text-transform: none; } .mat-icon { margin: 0px; + min-width: fit-content; } \ No newline at end of file From 23fa59ced29c9811fb521b1eabd45834230648f5 Mon Sep 17 00:00:00 2001 From: Geoffrey Kwan Date: Fri, 20 Oct 2023 18:11:21 -0400 Subject: [PATCH 4/7] feat(Authoring): Move component info retrieval inside dialog #1457 --- .../component-info-dialog.component.html | 6 ++--- .../component-info-dialog.component.spec.ts | 11 ++------- .../component-info-dialog.component.ts | 23 ++++++++++++++++++- .../component-selector.component.html | 8 ++----- .../component-selector.component.ts | 10 +------- 5 files changed, 30 insertions(+), 28 deletions(-) diff --git a/src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.html b/src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.html index ab66d9458c5..a8b4578926e 100644 --- a/src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.html +++ b/src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.html @@ -1,11 +1,11 @@ -

{{ data.label }}

+

{{ label }}

-

{{ data.description }}

+

{{ description }}

Example
- +
diff --git a/src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.spec.ts b/src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.spec.ts index 3d838707509..f86f9e20d1b 100644 --- a/src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.spec.ts +++ b/src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.spec.ts @@ -6,7 +6,7 @@ import { PreviewComponentModule } from '../preview-component/preview-component.m import { HttpClientTestingModule } from '@angular/common/http/testing'; import { PreviewComponentComponent } from '../preview-component/preview-component.component'; import { ProjectService } from '../../../services/projectService'; -import { Component } from '../../../common/Component'; +import { ComponentInfoService } from '../../../services/componentInfoService'; describe('ComponentInfoDialogComponent', () => { let component: ComponentInfoDialogComponent; @@ -16,14 +16,7 @@ describe('ComponentInfoDialogComponent', () => { await TestBed.configureTestingModule({ declarations: [ComponentInfoDialogComponent, PreviewComponentComponent], imports: [HttpClientTestingModule, MatDialogModule, MatDividerModule, PreviewComponentModule], - providers: [ - { - provide: MAT_DIALOG_DATA, - useValue: { - component: new Component({ id: 'abcde12345', type: 'OpenResponse' }, 'node1') - } - } - ] + providers: [ComponentInfoService, { provide: MAT_DIALOG_DATA, useValue: 'OpenResponse' }] }).compileComponents(); fixture = TestBed.createComponent(ComponentInfoDialogComponent); const projectService = TestBed.inject(ProjectService); diff --git a/src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.ts b/src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.ts index 60eacf266b4..6a0e6d246c7 100644 --- a/src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.ts +++ b/src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.ts @@ -1,5 +1,8 @@ import { Component, Inject } from '@angular/core'; import { MAT_DIALOG_DATA } from '@angular/material/dialog'; +import { ComponentInfoService } from '../../../services/componentInfoService'; +import { ComponentInfo } from '../../../components/ComponentInfo'; +import { ComponentFactory } from '../../../common/ComponentFactory'; @Component({ selector: 'component-info-dialog', @@ -7,5 +10,23 @@ import { MAT_DIALOG_DATA } from '@angular/material/dialog'; styleUrls: ['./component-info-dialog.component.scss'] }) export class ComponentInfoDialogComponent { - constructor(@Inject(MAT_DIALOG_DATA) protected data: any) {} + protected component: any; + private componentInfo: ComponentInfo; + protected description: string; + protected label: string; + + constructor( + private componentInfoService: ComponentInfoService, + @Inject(MAT_DIALOG_DATA) private componentType: string + ) {} + + ngOnInit(): void { + this.componentInfo = this.componentInfoService.getInfo(this.componentType); + this.label = this.componentInfo.getLabel(); + this.description = this.componentInfo.getDescription(); + this.component = new ComponentFactory().getComponent( + this.componentInfo.getPreviewContent(), + 'node1' + ); + } } diff --git a/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.html b/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.html index 34413f15212..221e1b20edd 100644 --- a/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.html +++ b/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.html @@ -1,8 +1,4 @@
- - + +
diff --git a/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.ts b/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.ts index 8463d0bbe84..259c79a17bc 100644 --- a/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.ts +++ b/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.ts @@ -1,5 +1,4 @@ import { Component, EventEmitter, Input, Output } from '@angular/core'; -import { ComponentFactory } from '../../../common/ComponentFactory'; import { MatDialog } from '@angular/material/dialog'; import { ComponentInfoService } from '../../../services/componentInfoService'; import { ComponentInfoDialogComponent } from '../component-info-dialog/component-info-dialog.component'; @@ -24,14 +23,7 @@ export class ComponentSelectorComponent { protected preview(): void { this.dialog.open(ComponentInfoDialogComponent, { - data: { - component: new ComponentFactory().getComponent( - this.componentInfo.getPreviewContent(), - 'node1' - ), - description: this.componentInfo.getDescription(), - label: this.label - }, + data: this.componentType, panelClass: 'dialog-lg' }); } From f2bb3b64a386c4051725b2e4a227939fdb406084 Mon Sep 17 00:00:00 2001 From: Jonathan Lim-Breitbart Date: Mon, 30 Oct 2023 23:03:11 -0700 Subject: [PATCH 5/7] Clean up styles/HTML for choose new component dialog --- .../choose-new-component.component.html | 27 +- .../choose-new-component.component.scss | 7 +- .../component-selector.component.html | 12 +- .../component-selector.component.scss | 17 +- src/messages.xlf | 460 +++++++++++++----- 5 files changed, 371 insertions(+), 152 deletions(-) diff --git a/src/app/authoring-tool/add-component/choose-new-component/choose-new-component.component.html b/src/app/authoring-tool/add-component/choose-new-component/choose-new-component.component.html index 76bcc059af7..7fdf0a0d5ca 100644 --- a/src/app/authoring-tool/add-component/choose-new-component/choose-new-component.component.html +++ b/src/app/authoring-tool/add-component/choose-new-component/choose-new-component.component.html @@ -1,20 +1,11 @@ -

Add New Component

+

Add New Component

-
-
-
- Click the new component type you want to add, or - -
-
-
+

+ Select the component type you want to add or + +

- - + + diff --git a/src/app/authoring-tool/add-component/choose-new-component/choose-new-component.component.scss b/src/app/authoring-tool/add-component/choose-new-component/choose-new-component.component.scss index d93ac9eefbf..0ef67f28109 100644 --- a/src/app/authoring-tool/add-component/choose-new-component/choose-new-component.component.scss +++ b/src/app/authoring-tool/add-component/choose-new-component/choose-new-component.component.scss @@ -1,6 +1,3 @@ -.component-type { - margin: 8px; -} -.component-type--selected { - border-color:black; +component-selector { + padding: 4px; } diff --git a/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.html b/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.html index 221e1b20edd..f3e572b656f 100644 --- a/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.html +++ b/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.html @@ -1,4 +1,8 @@ -
- - -
+ +
+ + +
+
diff --git a/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.scss b/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.scss index 95c0cc910a8..74fdfff6a32 100644 --- a/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.scss +++ b/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.scss @@ -1,16 +1,3 @@ -.component-div { - border: 1px solid lightgrey; - border-radius: 6px; - padding: 2px 6px; +mat-card { + padding: 0 8px; } - -.component-button { - width: 100%; - justify-content: flex-start; - text-transform: none; -} - -.mat-icon { - margin: 0px; - min-width: fit-content; -} \ No newline at end of file diff --git a/src/messages.xlf b/src/messages.xlf index 420d13b1fd7..8e9eb1b1420 100644 --- a/src/messages.xlf +++ b/src/messages.xlf @@ -293,6 +293,10 @@ src/app/teacher/share-run-code-dialog/share-run-code-dialog.component.html 61 + + src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.html + 9 + src/assets/wise5/authoringTool/components/preview-component-dialog/preview-component-dialog.component.html 20 @@ -371,23 +375,25 @@ 1 - - Click the new component type you want to add, or import component(s) from other units + + Select the component type you want to add or + + src/app/authoring-tool/add-component/choose-new-component/choose-new-component.component.html + 4 + + + + import from another unit src/app/authoring-tool/add-component/choose-new-component/choose-new-component.component.html - 5,14 + 5,7 Cancel src/app/authoring-tool/add-component/choose-new-component/choose-new-component.component.html - 34 + 19 src/app/authoring-tool/import-step/choose-import-step-location/choose-import-step-location.component.html @@ -447,7 +453,7 @@ src/assets/wise5/authoringTool/addNode/add-your-own-node/add-your-own-node.component.html - 59 + 60 src/assets/wise5/authoringTool/addNode/choose-new-node-location/choose-new-node-location.component.html @@ -1509,7 +1515,7 @@ Click "Cancel" to keep the invalid JSON open so you can fix it. src/assets/wise5/authoringTool/addNode/add-your-own-node/add-your-own-node.component.html - 57 + 58 src/assets/wise5/authoringTool/addNode/choose-automated-assessment/choose-automated-assessment.component.html @@ -9165,7 +9171,7 @@ Click "Cancel" to keep the invalid JSON open so you can fix it. src/assets/wise5/authoringTool/addNode/add-your-own-node/add-your-own-node.component.html - 67,69 + 68,70 @@ -9207,7 +9213,7 @@ Click "Cancel" to keep the invalid JSON open so you can fix it. *Note: You can always add or remove content later by editing the step. src/assets/wise5/authoringTool/addNode/add-your-own-node/add-your-own-node.component.html - 49,51 + 50,52 @@ -9702,6 +9708,35 @@ Click "Cancel" to keep the invalid JSON open so you can fix it.97 + + + + src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.html + 1 + + + src/assets/wise5/authoringTool/components/component-selector/component-selector.component.html + 3 + + + + Example + + src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.html + 5 + + + src/assets/wise5/components/common/feedbackRule/feedback-rule-help/feedback-rule-help.component.html + 184 + + + + Component type details + + src/assets/wise5/authoringTool/components/component-selector/component-selector.component.html + 4 + + Preview Component @@ -14940,6 +14975,24 @@ Are you sure you want to proceed? 58 + + The student watches an animation. + + src/assets/wise5/components/animation/AnimationInfo.ts + 4 + + + + Animation + + src/assets/wise5/components/animation/AnimationInfo.ts + 5 + + + src/assets/wise5/components/animation/animationService.ts + 9 + + Width (Pixels) @@ -15570,11 +15623,22 @@ Are you ready to receive feedback on this answer? 330 - - Animation + + The student changes the frequency of a sound wave while they listen to it. - src/assets/wise5/components/animation/animationService.ts - 9 + src/assets/wise5/components/audioOscillator/AudioOscillatorInfo.ts + 4 + + + + Audio Oscillator + + src/assets/wise5/components/audioOscillator/AudioOscillatorInfo.ts + 5 + + + src/assets/wise5/components/audioOscillator/audioOscillatorService.ts + 11 @@ -15830,13 +15894,6 @@ Are you ready to receive feedback on this answer? 284 - - Audio Oscillator - - src/assets/wise5/components/audioOscillator/audioOscillatorService.ts - 11 - - Thanks for submitting your response. @@ -16131,13 +16188,6 @@ Are you ready to receive feedback on this answer? 181 - - Example - - src/assets/wise5/components/common/feedbackRule/feedback-rule-help/feedback-rule-help.component.html - 184 - - Evaluates to true if neither idea 4a nor idea 12 were found. @@ -16166,6 +16216,24 @@ Are you ready to receive feedback on this answer? 2 + + The student adds items to a canvas and connects the items with links. + + src/assets/wise5/components/conceptMap/ConceptMapInfo.ts + 4 + + + + Concept Map + + src/assets/wise5/components/conceptMap/ConceptMapInfo.ts + 5 + + + src/assets/wise5/components/conceptMap/conceptMapService.ts + 22 + + Background Image (Optional) @@ -16441,13 +16509,6 @@ Are you ready to receive feedback on this answer? 1413 - - Concept Map - - src/assets/wise5/components/conceptMap/conceptMapService.ts - 22 - - Show Auto Score @@ -16683,6 +16744,24 @@ Category Name: 39 + + The student chats with a computer avatar about a specific topic. + + src/assets/wise5/components/dialogGuidance/DialogGuidanceInfo.ts + 4 + + + + Dialog Guidance + + src/assets/wise5/components/dialogGuidance/DialogGuidanceInfo.ts + 5 + + + src/assets/wise5/components/dialogGuidance/dialogGuidanceService.ts + 12 + + Item ID @@ -16733,13 +16812,6 @@ Category Name: 26 - - Dialog Guidance - - src/assets/wise5/components/dialogGuidance/dialogGuidanceService.ts - 12 - - Discuss your answer with a thought buddy! @@ -16880,6 +16952,24 @@ Category Name: 99 + + The student posts messages for the whole class to see. + + src/assets/wise5/components/discussion/DiscussionInfo.ts + 4 + + + + Discussion + + src/assets/wise5/components/discussion/DiscussionInfo.ts + 5 + + + src/assets/wise5/components/discussion/discussionService.ts + 16 + + Post attachment @@ -17039,11 +17129,22 @@ Category Name: 196 - - Discussion + + The student draws on a canvas. - src/assets/wise5/components/discussion/discussionService.ts - 16 + src/assets/wise5/components/draw/DrawInfo.ts + 4 + + + + Draw + + src/assets/wise5/components/draw/DrawInfo.ts + 5 + + + src/assets/wise5/components/draw/drawService.ts + 39 @@ -17255,13 +17356,6 @@ Category Name: 285 - - Draw - - src/assets/wise5/components/draw/drawService.ts - 39 - - Update On @@ -17269,6 +17363,24 @@ Category Name: 20 + + The student interacts with a custom model. + + src/assets/wise5/components/embedded/EmbeddedInfo.ts + 4 + + + + Embedded (Custom) + + src/assets/wise5/components/embedded/EmbeddedInfo.ts + 5 + + + src/assets/wise5/components/embedded/embeddedService.ts + 30 + + Model Parameters @@ -17333,11 +17445,22 @@ Category Name: 66 - - Embedded (Custom) + + The student views graph data or adds points to a graph. - src/assets/wise5/components/embedded/embeddedService.ts - 30 + src/assets/wise5/components/graph/GraphInfo.ts + 4 + + + + Graph + + src/assets/wise5/components/graph/GraphInfo.ts + 5 + + + src/assets/wise5/components/graph/graphService.ts + 25 @@ -18170,13 +18293,6 @@ Category Name: 2417 - - Graph - - src/assets/wise5/components/graph/graphService.ts - 25 - - Time (seconds) @@ -18212,8 +18328,19 @@ Category Name: 78 + + The student views html content. + + src/assets/wise5/components/html/HtmlInfo.ts + 4 + + Rich Text (HTML) + + src/assets/wise5/components/html/HtmlInfo.ts + 5 + src/assets/wise5/components/html/htmlService.ts 7 @@ -18226,6 +18353,24 @@ Category Name: 13 + + The student adds label to a canvas. + + src/assets/wise5/components/label/LabelInfo.ts + 4 + + + + Label + + src/assets/wise5/components/label/LabelInfo.ts + 5 + + + src/assets/wise5/components/label/labelService.ts + 24 + + Characters Per Line @@ -18446,11 +18591,22 @@ Category Name: 906 - - Label + + The student places items into buckets. - src/assets/wise5/components/label/labelService.ts - 24 + src/assets/wise5/components/match/MatchInfo.ts + 4 + + + + Match + + src/assets/wise5/components/match/MatchInfo.ts + 5 + + + src/assets/wise5/components/match/matchService.ts + 10 @@ -18785,10 +18941,21 @@ Warning: This will delete all existing choices and buckets in this component.690 - - Match + + The student chooses one or more choices. - src/assets/wise5/components/match/matchService.ts + src/assets/wise5/components/multipleChoice/MultipleChoiceInfo.ts + 4 + + + + Multiple Choice + + src/assets/wise5/components/multipleChoice/MultipleChoiceInfo.ts + 5 + + + src/assets/wise5/components/multipleChoice/multipleChoiceService.ts 10 @@ -18890,11 +19057,22 @@ Warning: This will delete all existing choices in this component. 72,74 - - Multiple Choice + + The student types a text response. - src/assets/wise5/components/multipleChoice/multipleChoiceService.ts - 10 + src/assets/wise5/components/openResponse/OpenResponseInfo.ts + 4 + + + + Open Response + + src/assets/wise5/components/openResponse/OpenResponseInfo.ts + 5 + + + src/assets/wise5/components/openResponse/openResponseService.ts + 14 @@ -19411,10 +19589,21 @@ If this problem continues, let your teacher know and move on to the next activit 320 - - Open Response + + The student views a webpage. - src/assets/wise5/components/openResponse/openResponseService.ts + src/assets/wise5/components/outsideURL/OutsideUrlInfo.ts + 4 + + + + Outside Resource + + src/assets/wise5/components/outsideURL/OutsideUrlInfo.ts + 5 + + + src/assets/wise5/components/outsideURL/outsideURLService.ts 14 @@ -19521,11 +19710,22 @@ If this problem continues, let your teacher know and move on to the next activit 6 - - Outside Resource + + The student is paired up with another student and they chat about a topic. - src/assets/wise5/components/outsideURL/outsideURLService.ts - 14 + src/assets/wise5/components/peerChat/PeerChatInfo.ts + 4 + + + + Peer Chat + + src/assets/wise5/components/peerChat/PeerChatInfo.ts + 5 + + + src/assets/wise5/components/peerChat/peerChatService.ts + 16 @@ -19627,13 +19827,6 @@ If this problem continues, let your teacher know and move on to the next activit 291 - - Peer Chat - - src/assets/wise5/components/peerChat/peerChatService.ts - 16 - - Teacher @@ -19641,6 +19834,24 @@ If this problem continues, let your teacher know and move on to the next activit 65 + + The student is shown work that their group submitted for a specific step. + + src/assets/wise5/components/showGroupWork/ShowGroupWorkInfo.ts + 4 + + + + Show Group Work + + src/assets/wise5/components/showGroupWork/ShowGroupWorkInfo.ts + 5 + + + src/assets/wise5/components/showGroupWork/showGroupWorkService.ts + 7 + + Show Work Step @@ -19732,11 +19943,18 @@ If this problem continues, let your teacher know and move on to the next activit 21,23 - - Show Group Work + + The student is shown work that that they submitted for a specific step. - src/assets/wise5/components/showGroupWork/showGroupWorkService.ts - 7 + src/assets/wise5/components/showMyWork/ShowMyWorkInfo.ts + 4 + + + + Show My Work + + src/assets/wise5/components/showMyWork/ShowMyWorkInfo.ts + 5 @@ -19753,6 +19971,24 @@ If this problem continues, let your teacher know and move on to the next activit 7 + + The student is shown aggregate graph data of the class. + + src/assets/wise5/components/summary/SummaryInfo.ts + 4 + + + + Summary + + src/assets/wise5/components/summary/SummaryInfo.ts + 5 + + + src/assets/wise5/components/summary/summaryService.ts + 33 + + Choose the step and component to show the summary data for: @@ -19936,11 +20172,22 @@ If this problem continues, let your teacher know and move on to the next activit 147 - - Summary + + The student views a table that they may or may not be able to change. - src/assets/wise5/components/summary/summaryService.ts - 33 + src/assets/wise5/components/table/TableInfo.ts + 4 + + + + Table + + src/assets/wise5/components/table/TableInfo.ts + 5 + + + src/assets/wise5/components/table/tableService.ts + 16 @@ -20414,13 +20661,6 @@ If this problem continues, let your teacher know and move on to the next activit 151 - - Table - - src/assets/wise5/components/table/tableService.ts - 16 - - Save @@ -20968,21 +21208,21 @@ If this problem continues, let your teacher know and move on to the next activit Sorry, you cannot view this item yet. src/assets/wise5/services/studentNodeService.ts - 39 + 40 Item Locked src/assets/wise5/services/studentNodeService.ts - 43 + 44 <p>To visit <b></b> you need to:</p><ul> src/assets/wise5/services/studentNodeService.ts - 50 + 51 From b26bd51ac481657dc7b8fe2156a232351da3dd58 Mon Sep 17 00:00:00 2001 From: Jonathan Lim-Breitbart Date: Wed, 8 Nov 2023 09:01:07 -0800 Subject: [PATCH 6/7] Update component type descriptions and examples - Clean up component type info dialog styles #1457 --- .../img/component-preview/Diving-board.png | Bin 0 -> 482 bytes .../img/component-preview/Earth_beneath.png | Bin 0 -> 5502 bytes .../img/component-preview/Earth_surface.png | Bin 0 -> 2531 bytes src/assets/img/component-preview/Space.png | Bin 0 -> 1636 bytes .../Swimmer-correct-reverse.png | Bin 0 -> 1849 bytes .../img/component-preview/Swimmer-correct.png | Bin 0 -> 1266 bytes src/assets/img/component-preview/Swimmer.png | Bin 0 -> 1320 bytes src/assets/img/component-preview/electron.png | Bin 0 -> 632 bytes .../img/component-preview/highlight.png | Bin 0 -> 530 bytes src/assets/img/component-preview/leaf.png | Bin 8837 -> 0 bytes .../img/component-preview/metal_draw.jpg | Bin 0 -> 55067 bytes .../img/component-preview/pool-background.png | Bin 0 -> 57769 bytes src/assets/img/component-preview/sun2.png | Bin 0 -> 1137 bytes .../component-info-dialog.component.html | 9 +- .../components/animation/AnimationInfo.ts | 83 ++++- .../audioOscillator/AudioOscillatorInfo.ts | 2 +- .../components/conceptMap/ConceptMapInfo.ts | 42 ++- .../dialogGuidance/DialogGuidanceInfo.ts | 304 +++++++++++++----- .../components/discussion/DiscussionInfo.ts | 5 +- src/assets/wise5/components/draw/DrawInfo.ts | 12 +- .../wise5/components/embedded/EmbeddedInfo.ts | 3 +- .../wise5/components/graph/GraphInfo.ts | 3 +- src/assets/wise5/components/html/HtmlInfo.ts | 13 +- .../wise5/components/label/LabelInfo.ts | 3 +- .../wise5/components/match/MatchInfo.ts | 224 +++++++++++-- .../multipleChoice/MultipleChoiceInfo.ts | 19 +- .../openResponse/OpenResponseInfo.ts | 7 +- .../components/outsideURL/OutsideUrlInfo.ts | 2 +- .../wise5/components/peerChat/PeerChatInfo.ts | 32 +- .../showGroupWork/ShowGroupWorkInfo.ts | 4 +- .../components/showMyWork/ShowMyWorkInfo.ts | 4 +- .../wise5/components/summary/SummaryInfo.ts | 4 +- .../wise5/components/table/TableInfo.ts | 122 +++++-- .../computer-avatar-selector.component.scss | 1 - src/messages.xlf | 76 ++--- 35 files changed, 728 insertions(+), 246 deletions(-) create mode 100644 src/assets/img/component-preview/Diving-board.png create mode 100644 src/assets/img/component-preview/Earth_beneath.png create mode 100644 src/assets/img/component-preview/Earth_surface.png create mode 100644 src/assets/img/component-preview/Space.png create mode 100644 src/assets/img/component-preview/Swimmer-correct-reverse.png create mode 100644 src/assets/img/component-preview/Swimmer-correct.png create mode 100644 src/assets/img/component-preview/Swimmer.png create mode 100644 src/assets/img/component-preview/electron.png create mode 100644 src/assets/img/component-preview/highlight.png delete mode 100644 src/assets/img/component-preview/leaf.png create mode 100644 src/assets/img/component-preview/metal_draw.jpg create mode 100644 src/assets/img/component-preview/pool-background.png create mode 100644 src/assets/img/component-preview/sun2.png diff --git a/src/assets/img/component-preview/Diving-board.png b/src/assets/img/component-preview/Diving-board.png new file mode 100644 index 0000000000000000000000000000000000000000..84f7d7d360011f2d1a08d2e8a9bf093eb3450755 GIT binary patch literal 482 zcmV<80UiE{P)7Q50DMis84SCr_@EfU`j1E{xm4@2 zp8t|`aQMnYz28k48&B?DS{l&v|9Ap!`H&-0T`^3;SMlcwI<-)N# z#&k114qSU}f-iBaX$-?a9q9zDW)yE-fphPQ;S8%2YFxNboTH=7(8tMTjk9Av8pjcj zQsE42Dkf^bIIk`WKC{&q)w%>{Hb?7c%{4f;DJJpl3an-n7wll{h4f=^%+cI^nWSoM zT?TP=;R3v{DJE(K?TOj%YEv;$%ifvD6Q4uj3Ox5Xd~$;$T4SUCrBOOn{6`er;2!}7 Y0P?ViVojCb(f|Me07*qoM6N<$f{*adasU7T literal 0 HcmV?d00001 diff --git a/src/assets/img/component-preview/Earth_beneath.png b/src/assets/img/component-preview/Earth_beneath.png new file mode 100644 index 0000000000000000000000000000000000000000..f96315f3217ad6862b76ba04d5d9983802cb72a9 GIT binary patch literal 5502 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 Xy#29)zg)8mRLOa|`njxgN@xNAWQZm` literal 0 HcmV?d00001 diff --git a/src/assets/img/component-preview/Swimmer-correct.png b/src/assets/img/component-preview/Swimmer-correct.png new file mode 100644 index 0000000000000000000000000000000000000000..6680e8606f2c4a894a8b9facad6016b684d4bb63 GIT binary patch literal 1266 zcmVVg4+6uG<5+EVOBr%EO*p4&4bjA&rK$cSO zYB|!#i9Iv^&75=oGh-^Se<*;rnSdv1YzXJCr=BVx4Nu&jJRp1N4*%l@FmLonBeK6= zy&90fvEOOWE`A1lv?TeLrd0|`r*V)S7&XlxCK7G4LQGFi&T3plM2`kY;CR}*AoL!9 z(^EXB36)FVzPH{3nY>~u_EdBLIrSL%Ze7(y;U;Bf)66tH@V*{Q+t-fxJHCe-9?ek&>`t$PI|P^rZ? zYkWjNdP9{jK9}PoHi2l>tFoaMax`=mtJ||V!Q(2MYhT4irw*p4?h%mVSZE#Y%+KUk zHpXV=KPmRat+;%s7Jknr=yuAqEXaTP?a#ISkGVUaL6WgyQuM87wiJBXxK7)th0lxl zQat%T@giRY1D5Ve2f1)%#By@}CW$}f*xU{KM0Y9F%BSLRSp1zg(=?@8y^$j2K4gZ> z&MREXVFy@@iQb)<<2W!jrVN#iqe@*-x9YEgZXhuM6W%+Z4ngWdExjZ;ALxRM@?yD;tsxPcDU zrU(ad2Fe@*Q3jWhv(p7N1m{LVO@g^zTwel5&$7(rPLbV7oe8(Dhyo9zF%!D&DtK`b zYY~K{tjO+%TTFgT!xJHV${iPVjW5u2t0&hmJe zoXdfWU2FGTICk*b)1`oQ35)Z$d#M02%QI?UA+8TdW=q{aO6yf49he|f0R;?wb!7NH z1zM?@#=At7I4*(7a9%*2iaWt6nl45NrFQ=) zrOle1W_>n{5b8v`SRN==fWYkzZR=quJCUoXGQOPR%4C~76#nK!s?O2%P)VGe44z8?zc z_P8)3d6wd6ih@`|8uSWs5hKLamA4D$_kioyTIw8~PNz~y(DsgD;^i3RzFB~sUw6SY z&NNG_YY^2%9ML?u_T@9a>5O1~aKlwa*V`Zn{mm=IAR#fiJH3=IUiX}G3Gl_T^d8u7 z8y;#K!_km?yFj9ujC62~9e+2p)9eGB>QH~>cs>_D1OD#;si5<^@%#z+zx{QK`AmPx cfPV=v01Hs=CtD%(A^-pY07*qoM6N<$g88#fKL7v# literal 0 HcmV?d00001 diff --git a/src/assets/img/component-preview/Swimmer.png b/src/assets/img/component-preview/Swimmer.png new file mode 100644 index 0000000000000000000000000000000000000000..bf90d472e407c668e40572817c4586c85e30acfa GIT binary patch literal 1320 zcmV+@1=sqCP)Oi$Lp`==|3{A|1@dMp?WQckyL(z0kX*jJqTp`UG3qV^fd0=)EQlTIwm zRqr%UIh^2L^BSD)HNDxgIHtX69(}4e_)miKGHF$zSCvBctfs0|MtQtG{ql-)%t+4D zw`+K60OzeXU@{pb#?Fw^z_yBO&4cEdc#eQiNJRNWWr+luYgZ|k+cWy>lyLxoC7&oj zoX3UlbQ3MKXXzV@vxKBUbk%38>JFCnJ(HJB7|j+^T#$nwswmbSD3J`G|LV8?CmMs( zvvY%*FMjFW%ia&$t26?BW-~dz2p?ZJo%sCSj(%m!Nq+6~MDJq*c=3%RBec6VzZaI4 z$=5H8$r7=(zP^s5hX&~&gTbJZ;=!;npy?!foQ^-_LOdZ#*#I?&lz1FOP3)AlJH%hK zNRg_;x(y`Kp@fqpd~;f)!}K>z#wfUBcn?Wj>NtWo5LKB=Rj~(c^NCoCe;d zDLkj69gr} zaEFzO5f&>p*NVl$f*X@O(8^r!!TJImt9}l0YX10}qS7!h z8jTthPP$|P;)C6XwT;ykIxc75wo_vmJ3=35K6IN^!Z}b1Zh=B>0B#WvI8FI5F-@Tk z0uNuotiqUB_{5eS zHw1j?a3b$`C%{kFfWd@PixY&D4+5M#P)V$C``SUUI`iOGFbi@pGXx+=o&53?F0U^E zIKRh+Rj1RbFSTFnlwgHjBDN^DZNgljd}Rih9(&xq6XSkZx+|s>FWjcY!aS+{Pd9kM z54eB>corwL#^X}udI${Ier|tKef>VZguTe zfYLHj+XwQtu$=MS&JXD@#W({~?4HkrOPL3(QjI2bs1ZRTx8 zADDP_`x>e$v-4KiA8uahf0c)J$0zrU=E1%Gr!aP@x6uWk{wC2W4Um%5k9!JW3SbIg e3ShMSCBOiiZM}a%3c)S_0000$Zn3i&_$!o%GMGUsFR`-6?Aw=b%pimC;;-MC z|5x>!d}oj;O~Pw1gK}Br#=Wv2O(fyX`{n*KsFqY?HJCxHD01r&NsvOa@QxEw{~5%} zV^9oc;OP-5pJD`3KoPE-s`sCPr&Sbgu!uw4e266FSll&XA=qFB{(6Cy`MUq9WpMjK z-Tw@H^+F5`+J$kq9`I4k;Jc4_{xj$lCNe1a2TcbFP!lT!h0bPh$?)EeP4eYi&i^;> z3;e(Pm=7BU%e{ERiPd2DOpjd*J_YUvu}Mx`uJhk3-v57CnG06zmEixsXR#hugZ+wJ zjxacR&G}y+0ZpRfQBkmmEx~K zgtMda+pIsl`^ZMnK#-cE4x5h*VmUFy)p?wyQsVaU6Uurl-yS?82{eEmVb~}3|A)>> z{x9z{e=A`ZGl@Z{N}52Ohl#<-MkzZ`)G?+}GdOf62#Y$#H8QAX27!u3e0l++bezB2 SqRTD-0000wb}zD4Fj1R)~-|Nn<5e)Q-OvN*&jkbW3|i@baH4k!lXsszY$16`t3 z666=mAQ08F?7*!rGTFO-|CgQr@9(^h?|yF?D=Rpc9`$XXo3$&ld;iVPzxbDwZ)k*tKk6|KGtW%ydHc8I)s82G}^&}F0H(T}3j*Hm~NZ5OOR{hR&l z^Xn}$lqQJ2WZGw=sTnk1?V#4B9m^sV&h0#uyhgufesWP}CF`S-eI52kCA6MLwF)in z$y%kjlE>#Ge>LBmZ296puixeum+t-*kz$g2?`wH^?ey)vjg8`mjZ*BDZvB}A3|aPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXfA{t3VK~#8N-CYNK z9mSoV*?motCCjob<02U(*;ocbhd>f~4H%AGY#FdAffx)S1UP;`$~j!><$j?&&b; z`xnIAWhVyMNv~VCb7rZkyl~C3DTlF;__b;9Lj{$E5Eh+bfE%on3HGTFY*XiZeVe1* z)>_l#okqD>8LAT>JUP8{fN?sa1o)RAWcFW<46^Q?LxTbHbY@tmaKkuO#Klwhe_`e2 z>X4kce%Ybb@o;Q~VX!f(Dh<0nj^Dq%lKn3(Dm0l zkMHbH9#t6rX$d+1{-*kPU-Xo!(ZMf{oESchb6%r%Nmv$p=KkYXT%d|Mam|}851Ii! zTNTqV_-TT5yxq%4W+bY{2HAcGmn91ttb|~lf9>m!^;&KGwTEo~)qVqo+g?m7{}85^?sO zpP#hyz2uI}*ry4ZJC_+7PnmpJ(B#vpv04q2?~nQpYMcS;vB0<^%2`EiKyK?0mi5Mc z$FDk36*FS?;v>t0wSE6E4Bn)w(y)1XKl^l3Om5RXum&Onq_{x(YSTaZS@$Q&la78n>xq?&sp~!P!H$ZPH%ZT5;oo?RdS0>26|ys^;95S zX{s$ZgvCdx&8!HH=>2XsGP*a%95R4W2ZqzhAZ+T8mx&RwKUTb899c!a(S4UKp7#lt=$VN6N)hKl=mWT=#?X_6{t_17a5Ia4- zrRS*==dyIMChW6>7~#N~YSV>SU&^}-mSwqpF3ODmxwJzHX|e`lQaZi}(5O;HvI@iXhEG=5k8 z#D#sA5GKB)HeJxwRj54c?bqx$wmGP_(-7$En?o+{;i{O1E^5d=+c*AeH+CWj!1Kn@j-GW*d8wUf80WFI+HTvaHasPZDy)k|{Oh!KA4x!1i>2U=~8i z4GzRiYq%=9aK$SJk2Zq*`>L3RSii-#emJN~NflHvDyd=M) zze|l$sfun;qapZ1!vlec!A3Sk*kE^p^^kh%CIb)2*|vI+>{;>{kN`CWo92Zh8A@1m zn@0ic`Ir7`LbWPN3<)9A7BPQUC<9E>I9+X~L04H>Z3w|I%>&e?gRj2Y+(f+82i2&$);XCdq(dw*i7}P^XB*B7v!@D6z*0ne*DD zqwB`Ete*3FORK8N3b?!U-#M!220a*hoQ-TM3ouMEL2Wt+MS{0bOZeIrG&tN>8SRDw1;XxQ6NASdNHIsg%9WCV6_Q2_*imHWB1 zCK?$k%SNQi^bJarWW-!#0Jz_z{YXat$c=S%#!g7qB(X;bxpdit$Te?He%J_*TWP4? z$hogR_aa6J8qPMNWR#tU%YuW|w*)T>Uq-emA`8@5P&>U_W70O@TlcDl zk*WeIHgMgp&ZyJK@VJoA@*+-z`jG(yBFXb1%dovYN_NS@d7ICDaEuc(m7I_--`zZ_ z%qsi688AG0S{$S{vV${MkI{jiXG6N6xd<_Mqhr5F6_V|^1Pu!V4Lbk=>~nT+PLTms zh0HD4C1n>`+x*T0+jcyE$wn*opl+sTcV4 z6dn-AsZC!{8-F&F{Qz_cf%si zU>OKO!$1Y~kd27;;2x4h5Yb2ATL(zfV~&cErpu5^Z%LDO#3Xv~mx&DOl#+<}0Nrou zmZkKKYzn7ksOk4jcHXU|gv9$3PJ`SR=pq@fK-2D~ZlT9B3)9glAvxXDMB5KJFQ&K`kHiwT{F*s|M-?CH!T=!ygm?UJPof5}|oUvscoS&k$TreY6cIhA>cQx+ta#lB`%t`jy zu|Xk_27jkpI&|QiQB6AR{Yf(7^4ai7dQWck1SyjwltVOW+d~GiKb#60#sQ|V~CYknfsw!GD0F@LyDZ9+v(kw z-e`uwYg^)595>H~VX&-(2xc9kk>>kg9shZk=&V-Jg8xKc2p~EYsmqzpdn!&bU>xp4bEv7K07-Q-TM$h`-0TNZS~{@R4j%Iwzm(u zGQ^NL5P?jw1J2~UvXT+PgX)AtMtN=OA$zqb*nz>%Qd<(!7ELpS5K_W)I8s5efURP7 z7dV%V@)2lpRZ!4v60V5}3^Jb30Fpog$nd(c4(KP4CUR*d$u^(@p`yIQ&s?y2d}SpB z!3vDEDrN;w2xl;8*r=3?sCz3m3@(nqFs&-G>dNJHM5OCF829i>1$uVh&O}j$9KgBk z#>JDDc~T&Nqf!9RWo#m#_aR-G02K%I=D5uSTn}*wqI6q>=pg$WI_vJ{>pn zstUfLirK;0FtwEou+%l-YwLqb5(W>3%2R5~C^yhMB;XQ4yyf7I=V#Et7>|JOUW~-( zY6CqrL&K=86wvrE&bf$?fnk3#Z>8TKeuoI%>sq@&ryX7$Ys^RprdOIKzn*UT=&N3x znA0Vt;~a&E;Y9BP;9@gvOrLk|qYl?JPYRAeCD4*`~ekh-yzH|f(WNsKSKa#?f6 zw77&2t~6+cmNi8X=Izn+pp~`TtaGv5vn^H!if0wj4lw?XACS1G4IcSH*U8?fIU5iY*s$kNA>NR=sSIQwVF*JlQzaS^0MwJ; z#5mOD<4t8if=7)v96~S^rSqNMt1%lR8%U3zQ#YpNe^k+du=qx`>4H9vAX5-Nsg!)7 z&%?@>5Md!1s0g99LOg*w1gvRNMn#+#Dh?!i_e&y_2ZkWgi*S+BL7j8JN?128nANtz zc|!52c^--3@J-A6WqLRpsHfgA=k+PKsiH(8VXah~F6e|ryWO)r3I%$ft)DTR>ou-^ z(9<6F@1drg#-=ZLNpM{;PYTCl2v&!T&=nDxBmf>@uBokF2qC(uJ?`ecym@}>ntM>^ zoPlmNIirtmaO+0{a>B8#R{RhMvmajj#^nE0Mf#a|pN>!a1#Z$ABcZ)W(iIEzP)BXi zx$;Ri>S-1jU#QI(Net8wBmpFV4Bd6LfolaThzLaJ8HljqH=Q&Ss2#dUCH|;?*Wmv1 zTid_!=w+)ns9g|ZxjuWC#jP!y{?=dSNfzBR8Am`ZKptxE%gpAc_AmnY3cS{knSrrzCq;W>n-89 zsxj#k=ez(BmL={D^u>Sr$mQ$Pyi!1(f}7S!!H7{d{^)Yo10q<%Qeb^eh8JegxUO#8 zT-Rt;suPbfsg<%?B zG)KnUxoMn-vLplUq_P)~u(0yB0Ay^7h3&Nga`-d{CrGh-8_Sjg+d$(Z(s)8 z$V3JJgN{{4w%?zvA#*|6CHes9-6I;(JBdTaZm7qcpeCpq9dv9gUC9zLaXsFNUwjYe_}@OXgzXiNaMpl1K#j5|8Wwzkw7z}n`p^q_2j zd|NX1B;Y-k*W{PCg7n}k*;N=dCbu|kQw7TLcri?>^1sV-nfC6 zeARw_)g_6zcmx%>07E?CxC&Ql9mX8#7EF&sFUM%qJ_1R&qPF?r39Y0q|!nCxi>17sO?lP>xt$iZUC!Uy%VAFARq=3r8k0>DBKzdis>)hw!zV*xp3}-V``250A8afrx4kY z154BZe%aeJ(9^>}gB*KXeye?6Kt;k+1o>!Gc$%{D>6&P0sV3FFd=U&Ar#*j5$E&L7 zci9y1mQEuqo}wFWluByG{W>20o8j^y3I7eCQ>sv(TK>16r6 z06+l`-cRl*Yz(B#0cV?8C~(qCx2!8zGIX4ON5hrEU=OKc{s2i(FDiK<38GK(n+TH! z5okj;F5F!Fj}JAd0UJclR?;pdw`Jqg$38X}5>e~21sAPxg&TSNECoz%h=`_($kg9R zwk7MD^EA+dArQop=~$n&#R!@wy?E<--(lZEaL!NnKh!j>zo}x$fyPG6CGATI0Z(yY zhZyZm$rpW@ixxE#n4{=ac{%5FBRgU-cEV#9wSSaWIbXmINL5v0KBRdPtSu3X9=q`3j-9I7fkViJ3l2EO zH2IBGMJA32qz2|D50ED?oKDj~s;P#)tLZzhX`fz@@qC#g?z8B;j=d}e&bzDrR=VdO zsba~1Y_gNQ+zliN5EO}vKav0N8jD&>7R+4tQKoiq2)TG+;{|5O_&-%FDd>)3qAzyf z{7dqG2YS9BLf)mv$ZO_fz9?ki$wtyK6T7GbBaOb23Lmfp|2w%-e`s#&_{1I&%ms&# z*$*BW?62OnoTTDFRaG+3%`Tlctu5n3?P786ofD2TxcH+g?he|>zP(MVH^8|tD#wK2 z)uM%iq_Sdk{}!TidJu|Wc#mnYjif^Q$Zy`sExtZFU~LZt`c{10{>k9$x3l8Y*94ah znfX}rR3pF^t76GOLD_%JZ*8BeiX{QoKfYJpu#}!4=lk7rfjajuV?2D#lIyi`;k^Wx zlAPb#_B=J-%c@v15bG<{X36kQc>LAWb9b8zfF$E9A#3oXX%A1hT7TW%-hkU`!O#rG z=s`t~swoMCFjlF}lHjZ#j6Ib+w!7to=psiPy&(6tp{zRivk^7rAJ2Te@%z&rX>3rt zh7>N9WnoQ=0kXaF zU06tYC`h{@*zc?adz8o7^9yFReX4ftQDl4qBIN-hWsWKq4a*Y$m_NNe=PKTOaK`t> z9&eb&l0ev~jQ6L{T9m{fkq2T5;0AMq^`#D8kjp+uaTj8pXGJu=w6kqp`|cX=OvrfK z((4+r>v`%uXQ-;8V8zAv=Fez%X2}_lI# zgbrS<;eEqfE)YT6NP6C)v%f zss%S|7tC7wjyypYWbH@O7EKuzVS~RTQnJ39FB9md`>cUz^MY9&n^aX%IPc#2qoTXS zD|9~jKCPf!H?D4-$N(|;(Ec>oQiJ6L-UMMW@kU0-ej#FXiGIP8(!&J{lbc+IEC$)- zSXWnIFZpFw(+RbQd-F&~}BBQcAGfa*+XK zB?Q3uwiqZsgF>R;sj9p{$3NG+s=fG>2E`c^g^ zcpDg`lH~MYC2jJ>Hu?&yJq2our{>LQze5$XBK@v2AUPJ&_)TK{R#IV^eRbJZ;@4$6 zs;|div?`J&9!Hc$OV?3*(P3qG&zimkNTY-p#JOys`%*M*6xB- z)rX|2j?PCqfP$|)^U=mS5$0E#20xb?{zwwjt1J1U7*bRD0_!-?$RGymRq%EPDRtTSq0_@9#_#09Pa?>1D6#-*B4H(FE^J-9 zP*vrH-6o_EOueV!0B(sV>9R#4DT>uCPqaU}8oNg3vJ_sWv&}RJ>K$JK}_5Z0L{>a^hST7(SvNliEr$ZlT)} zJOR{6COwbE{8?WdmILt2 zN(O!M0o+AWya!Xu3P^@ zRaG>Gh7iujs;#_19sbAEl5*X9COGTN$%fd#+70i!cq#TcCmfHSxbVWY3+K1CpJ@%m z>dAP2lOpKdnl)*IB(P0H?zH8%ZHO8GYhX!>8sldA(vBbg83nD405e8c_rAD)H@p%Q=_^5qGfi7-!A^f z$6v(O)I00vP-8wIt9^jcKCC?%z)X9!b_Mps`=^O)P(%Nn^#@O#cj>C_s>&DgC2jqU z<4n${m|-!3sHx&yPDbg9$3-8V>4Q)-@$n;kf^Mv z8C^uOpZ}P;;Le)6r?218Nt)wNs^|a-K)ln@&MP4j4{HQ;Z}NF#oC5w5Ls_}?)BTR9W=t71+F?tbMgVZQp7K+lJo(p_DkYE0^nb|J!+5|hCSz<`?} z{^rbuP1n*fL!v42!B81>77h&DPOX#IbRaI5(xhMw@W-gp`rz+_h)k*o;~03UjorM6 zruDy3=milPF+%*lS&N#Nw*F>fi>ltM7&1bh_}bQs3D$Jjz^EWn?b$$q_Eu)aOUGpFJAmuQ%NUq z=ZhgF1bFtQ&gDkHI+-LzzHG%8T>fzr7Z%Q3yPSTL-|T!+S@5##)C%H~u8*VHv$P7N z#>l(nXVSlgE!is(hMW-K+3Px&3zHv5O_gDdq5t1gkH_NQreG|uF$QT*h!orKW8evr zk_!~4bc&cbXF+S*FICl$Vy_SaJoojEwNW0%e6MGcH9Cavk_f!uiyBP6-!>m0D_g0( z=L@#P?@wm{Aeub02dqJU(EN+qop+B6HTJ%{M=s~oyXvo|uKeG0GnL6I5e+9q^^-TH z&j(hM_ueP9GC@`4g!fgk`s)RenkS?6k`UI-rA&boi@hcx4k$o*?uL(lmWUaLP%nKN zY+%MoOc;l&BV52_iiE{3r-sbKA|!#eg1V7MzAM&iB@zj1iHM8O&ueWvdtV>}*!vRV z!FhM?e=OtH^$C`k`@%OitX9=&AW!IavJ-jF85R^MZeJV4VAgi>s~=;Z;;>_dbVzT0(%YJbYkftTK+j zB6kSsxpq=^8%erWGhwt_mbE$>kFR=iX2(jX#pEycbujk-xR2l`eQ~Hf00000NkvXX Hu0mjfZ-vHl diff --git a/src/assets/img/component-preview/metal_draw.jpg b/src/assets/img/component-preview/metal_draw.jpg new file mode 100644 index 0000000000000000000000000000000000000000..69723843d36ace12eeb8ad2ab4e1607da1beeb1b GIT binary patch literal 55067 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 z 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

)vL1tdXN!O2k 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 D0elnB literal 0 HcmV?d00001 diff --git a/src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.html b/src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.html index a8b4578926e..1feb51a410d 100644 --- a/src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.html +++ b/src/assets/wise5/authoringTool/components/component-info-dialog/component-info-dialog.component.html @@ -1,13 +1,10 @@

{{ label }}

{{ description }}

-
- - -
Example
+ +

Example

- - + diff --git a/src/assets/wise5/components/animation/AnimationInfo.ts b/src/assets/wise5/components/animation/AnimationInfo.ts index 5a527c4006a..1a9bd925ac6 100644 --- a/src/assets/wise5/components/animation/AnimationInfo.ts +++ b/src/assets/wise5/components/animation/AnimationInfo.ts @@ -1,43 +1,94 @@ import { ComponentInfo } from '../ComponentInfo'; export class AnimationInfo extends ComponentInfo { - protected description: string = $localize`The student watches an animation.`; + protected description: string = $localize`Students watch an animation.`; protected label: string = $localize`Animation`; protected previewContent: any = { id: 'abcde12345', type: 'Animation', - prompt: 'Press play to watch the animation.', showSaveButton: false, showSubmitButton: false, - widthInPixels: 600, - widthInUnits: 60, + widthInPixels: 740, heightInPixels: 200, + widthInUnits: 53, heightInUnits: 20, dataXOriginInPixels: 0, - dataYOriginInPixels: 80, + dataYOriginInPixels: 90, coordinateSystem: 'screen', objects: [ { - id: 'fw4df1y7nd', + id: 'qnn0c2xgck', type: 'image', - image: '/assets/img/component-preview/sun.png', + image: '/assets/img/component-preview/pool-background.png', + pixelX: 0, + pixelY: 90 + }, + { + id: '8p02z89200', + type: 'image', + image: '/assets/img/component-preview/Diving-board.png', + pixelX: 0, + pixelY: 25 + }, + { + id: 'y2yv5w078a', + type: 'text', + text: 'Diving board', + pixelX: 0, + pixelY: 0 + }, + { + id: 'kjlw72m46a', + type: 'text', + text: '0', + pixelX: 0, + pixelY: 60 + }, + { + id: '3med1wqhac', + type: 'text', + text: '25', + pixelX: 360, + pixelY: 60 + }, + { + id: 'k8hs2qlcxh', + type: 'text', + text: '50', + pixelX: 720, + pixelY: 60 + }, + { + id: 'g1m6j9iyur', + type: 'image', + image: '/assets/img/component-preview/Swimmer-correct.png', + dataX: 0, + dataY: 0, data: [ { t: 0, - x: 0, - y: 0 + x: 0 }, { - t: 1, - x: 25, - y: -8 + t: 20, + x: 50 }, { - t: 2, - x: 50, - y: 0 + t: 60, + x: 0 } - ] + ], + imageMovingRight: '/assets/img/component-preview/Swimmer-correct.png', + imageMovingLeft: '/assets/img/component-preview/Swimmer-correct-reverse.png' + }, + { + id: 'og4rulilwn', + type: 'image', + image: '/assets/img/component-preview/Swimmer.png', + dataX: 0, + dataY: 0, + imageMovingRight: '/assets/img/component-preview/Swimmer.png', + imageMovingLeft: '/assets/img/component-preview/Swimmer-reverse.png' } ], constraints: [] diff --git a/src/assets/wise5/components/audioOscillator/AudioOscillatorInfo.ts b/src/assets/wise5/components/audioOscillator/AudioOscillatorInfo.ts index 44024ae7def..fc440bee4f7 100644 --- a/src/assets/wise5/components/audioOscillator/AudioOscillatorInfo.ts +++ b/src/assets/wise5/components/audioOscillator/AudioOscillatorInfo.ts @@ -1,7 +1,7 @@ import { ComponentInfo } from '../ComponentInfo'; export class AudioOscillatorInfo extends ComponentInfo { - protected description: string = $localize`The student changes the frequency of a sound wave while they listen to it.`; + protected description: string = $localize`Students change the frequency and amplitude of a sound wave. They listen to the resulting sounds and view graphs of the waves.`; protected label: string = $localize`Audio Oscillator`; protected previewContent: any = { id: 'abcde12345', diff --git a/src/assets/wise5/components/conceptMap/ConceptMapInfo.ts b/src/assets/wise5/components/conceptMap/ConceptMapInfo.ts index 73c29d9197f..f1f11b83a52 100644 --- a/src/assets/wise5/components/conceptMap/ConceptMapInfo.ts +++ b/src/assets/wise5/components/conceptMap/ConceptMapInfo.ts @@ -1,40 +1,66 @@ import { ComponentInfo } from '../ComponentInfo'; export class ConceptMapInfo extends ComponentInfo { - protected description: string = $localize`The student adds items to a canvas and connects the items with links.`; + protected description: string = $localize`Students add items to a canvas and connect the items with links.`; protected label: string = $localize`Concept Map`; protected previewContent: any = { id: 'abcde12345', type: 'ConceptMap', - prompt: 'Link the sun to the plant.', + prompt: + "How is the Earth warmed by energy from the Sun? It's your turn to show how energy moves between the Sun, the Earth, and Space. Drag the pictures to the canvas and add links between them make your diagram.", showSaveButton: false, showSubmitButton: false, + showAddToNotebookButton: false, width: 800, height: 600, background: null, stretchBackground: null, nodes: [ { + fileName: '/assets/img/component-preview/sun2.png', + width: 100, id: 'node1', label: 'Sun', - fileName: '/assets/img/component-preview/sun.png', - width: 100, height: 100 }, { + fileName: '/assets/img/component-preview/Space.png', + width: 100, id: 'node2', - label: 'Plant', - fileName: '/assets/img/component-preview/leaf.png', + label: 'Space', + height: 100 + }, + { + fileName: '/assets/img/component-preview/Earth_surface.png', + width: 100, + id: 'node3', + label: "Earth's Surface", + height: 100 + }, + { + fileName: '/assets/img/component-preview/Earth_beneath.png', width: 100, + id: 'node4', + label: 'Beneath Surface', height: 100 } ], linksTitle: '', links: [ { + color: '#DDD266', id: 'link1', - label: 'Sunlight Energy', - color: 'red' + label: 'Solar Radiation' + }, + { + color: '#B62467', + id: 'link2', + label: 'Infrared Radiation' + }, + { + color: '#DE2D26', + id: 'link3', + label: 'Heat' } ], rules: [], diff --git a/src/assets/wise5/components/dialogGuidance/DialogGuidanceInfo.ts b/src/assets/wise5/components/dialogGuidance/DialogGuidanceInfo.ts index f2fd2897c84..da7db0efd71 100644 --- a/src/assets/wise5/components/dialogGuidance/DialogGuidanceInfo.ts +++ b/src/assets/wise5/components/dialogGuidance/DialogGuidanceInfo.ts @@ -1,153 +1,300 @@ import { ComponentInfo } from '../ComponentInfo'; export class DialogGuidanceInfo extends ComponentInfo { - protected description: string = $localize`The student chats with a computer avatar about a specific topic.`; + protected description: string = $localize`Students chat with a computer avatar about a specific topic.`; protected label: string = $localize`Dialog Guidance`; protected previewContent: any = { id: 'abcde12345', type: 'DialogGuidance', - prompt: - "Explain!\n
Use what you've learned about how the Sun warms the Earth to explain your answer.", - showSaveButton: false, - showSubmitButton: false, - itemId: 'CarOnAColdDay_score-ki_idea-ki_nonscorable', + itemId: 'PhotoEnergyStory_score-ki_idea-ki_nonscore', + version: 2, feedbackRules: [ { - feedback: ['Thank you for chatting with me! Now revise your explanation in the box below.'], - expression: 'isFinalSubmit' + id: '6encpml66s', + expression: 'isFinalSubmit', + feedback: [ + 'Thanks for chatting with me! Now revise your response based on the ideas you shared in the chat.' + ] + }, + { + id: 'ixvd0iaxh7', + expression: 'isSubmitNumber(2) && 13a', + feedback: [ + 'I agree that animals get energy from sleeping and eating. Where does the energy in their food come from?' + ] + }, + { + id: 'dculqoydzc', + expression: '13a', + feedback: [ + 'I agree that animals need sleep! What other types of energy can animals get from the sun?' + ] + }, + { + id: 'lm0odmyxre', + expression: 'isSubmitNumber(2) && 4a', + feedback: ['How do plants get energy from the sun, differently than animals?'] + }, + { + id: '1urvciu5sy', + expression: '4a', + feedback: [ + 'Interesting Idea! Where does the energy originally come from? How is the energy transformed in the process?' + ] + }, + { + id: 'jv23u1nmxj', + expression: 'isSubmitNumber(2) && 4b', + feedback: [ + 'You are thinking like a scientist! Where does the energy come from? What type of energy is released in this process?' + ] + }, + { + id: 'irhj6xhvft', + expression: '4b', + feedback: [ + 'Interesting Idea! What is the glucose made from? What happened to the molecules? ' + ] + }, + { + id: 'uubc2szgcm', + expression: 'isSubmitNumber(2) && 6b', + feedback: [ + 'Interesting idea. When the animal eats plants, how is the energy transferred from plants to animals?' + ] + }, + { + id: '617hd0zsmt', + expression: '6b', + feedback: [ + 'Nice thinking! Where does the plant-stored glucose go? What happened to the part of glucose that hasn’t been used for plant growth?' + ] + }, + { + id: '6n643zmexn', + expression: 'isSubmitNumber(2) && 6c', + feedback: [ + 'Interesting idea. How is the energy transformed from the plants to animals in this process?' + ] + }, + { + id: 'gxoeeryzyw', + expression: '6c', + feedback: ['Nice thinking! What type of energy is released during cellular respiration?'] + }, + { + id: 'rjvjxzn8fi', + expression: 'isSubmitNumber(2) && 11a', + feedback: [ + 'The sun helps animals in lots of ways! How do you think the sun helps animals get energy from food?' + ] + }, + { + id: 'kl5zguma0m', + expression: '11a', + feedback: [ + 'I agree that animals can directly use the sun’s energy. What are other sources of energy that animals can get from their food?' + ] }, { + id: 'sf8ttj8pzf', + expression: 'isSubmitNumber(2) && 11b', feedback: [ - "What's an idea you feel unsure about and chose not to include in your explanation?" - ], - expression: 'isSecondToLastSubmit' + 'I agree that too much sun can be harmful. Imagine what would happen to plants if there were no sunlight. How do you think the sun helps animals get energy from food?' + ] }, { + id: 'g056fzgmij', + expression: '11b', feedback: [ - 'Interesting ideas! Can you tell me about how you feel if you are sitting inside a car and the sunlight shines on you through the window?' - ], - expression: '2' + 'Hmm, too much sun can be harmful. What other impacts does the sun’s energy have on animals?' + ] }, { + id: 't1mhcn37qi', + expression: 'isSubmitNumber(2) && 9a', feedback: [ - 'Can you tell me more about how the temperature inside the car changes the longer it sits in the sun?' - ], - expression: '3' + 'I enjoy hearing your thoughts. Where does the energy in the plant come from and how does it get used by the animal?' + ] }, { + id: 'm1hofcqj7a', + expression: '9a', feedback: [ - 'Can you tell me more about how the Sun makes the inside of the car warmer than outside?' - ], - expression: '3a' + 'Nice thinking! How is the energy from the sun transformed so the animal can use it?' + ] }, { + id: 'yfm6esxnde', + expression: 'isSubmitNumber(2) && 12b', feedback: [ - 'Interesting idea! Can you tell me about how you feel if you are sitting inside a car and the sunlight shines on you through the window?' - ], - expression: '4' + 'Interesting idea. When the animal eats plants, how does the animal get the energy it needs from the plant it ate - what is the process?' + ] }, { + id: 'pwmhvfbdo5', + expression: '12b', feedback: [ - 'You’re right that heat energy moves from warmer objects to colder ones until they reach the same temperature. Can you tell me more about how energy gets from the sun to the car?' - ], - expression: '5' + 'Nice thinking! Can you tell me more about the process that transfers energy from the plant to the animal?' + ] }, { + id: 'xx1w3rs1cb', + expression: 'isSubmitNumber(2) && 6a', feedback: [ - 'You’re right that heat energy is conducted between objects that touch each other. Since the Sun is far away, how can its energy warm the car?' - ], - expression: '6' + 'Interesting idea. When the animal eats plants, what happens to the stored glucose?' + ] }, { - feedback: ['Can you tell me more about the forms of energy that come from the sun?'], - expression: '7' + id: '46duvz3re6', + expression: '6a', + feedback: ['Nice thinking! What is the stored glucose used for?'] }, { - feedback: ['Interesting idea! How does the sun make the car warmer?'], - expression: '8' + id: 'cfp2kn3fxy', + expression: 'isSubmitNumber(2) && 3a', + feedback: [ + 'I like hearing your thoughts. What do you think the plant does with the usable energy?' + ] + }, + { + id: 'w43b2yu1p5', + expression: '3a', + feedback: [ + 'Nice thinking about how plants convert light energy to usable energy. How does this energy go from the plant to the animal?' + ] + }, + { + id: 'vcqortmk5q', + expression: 'isSubmitNumber(2) && 3b', + feedback: [ + 'Interesting idea about photosynthesis! How does the energy from plants get to an animal?' + ] }, { + id: '26uhwx54e2', + expression: '3b', feedback: [ - 'Since Akbar has left, how might the Sun influence the temperature inside the car?' - ], - expression: '9' + 'Nice thinking about photosynthesis. How are the products of photosynthesis useful for animals?' + ] }, { + id: 'od5s1no0b4', + expression: 'isSubmitNumber(2) && 2', feedback: [ - 'Can you tell me more about how the material impacts the way the car gets energy from the sun?' - ], - expression: '10' + 'I like hearing your thoughts. How do you think animals make use of the glucose or oxygen produced by plants during photosynthesis?' + ] }, { - feedback: ['Have you ever felt warm inside a car even when the heater wasn’t on?'], - expression: '11' + id: '62scpp3ndm', + expression: '2', + feedback: [ + 'Interesting idea about the products of photosynthesis. How are the products useful for animals?' + ] }, { - feedback: ['What happens to the Sun’s rays when they reach the car?'], - expression: '12' + id: 'ac4nazjj8l', + expression: 'isSubmitNumber(2) && 1', + feedback: [ + 'I like hearing your thoughts. How does photosynthesis help the animal get energy?' + ] }, { - feedback: ['Can you tell me more about how a car is like a greenhouse?'], - expression: '12a' + id: 'wi5dtcmlgu', + expression: '1', + feedback: [ + 'Nice thinking. You mentioned the inputs of photosynthesis. Can you tell me more about what happens during photosynthesis?' + ] }, { - feedback: ['Can you tell me more about how greenhouse gases cause things to get warmer?'], - expression: '12b' + id: 'sffk18map8', + expression: 'isSubmitNumber(2) && 4c', + feedback: [ + 'I like your idea about energy conservation. Do you think energy is transformed into different types in the food chain? If so, how?' + ] }, { - feedback: ['What happens to the energy from the sun when it enters the car?'], - expression: '13' + id: '581eophtvi', + expression: '4c', + feedback: [ + 'I agree about energy conservation! How does energy get transferred in this process?' + ] }, { - feedback: ['What happens to the energy from the sun when it is absorbed by the car?'], - expression: '14' + id: '8qo8p60wtg', + expression: 'isSubmitNumber(2) && 4d', + feedback: ['If energy starts with the sun, how does it move through the food chain? '] }, { + id: 'wylrvpkf22', + expression: '4d', feedback: [ - 'You’re right that the color of a material impacts how much sunlight is absorbed. What happens to that energy when it is absorbed?' - ], - expression: '14a' + 'Hmmm, I wonder how the energy decreases down the food chain. Tell me more about how energy moves through the food chain.' + ] }, { - feedback: ['Can you tell me more about what happens to the heat energy inside the car?'], - expression: '15' + id: '2uqgi6lp0l', + expression: 'isSubmitNumber(2) && 9', + feedback: [ + 'What happens when animals get the glucose from plants? How does the animal use the energy from glucose?' + ] }, { - feedback: ['What happens to IR inside of the car?'], - expression: '16' + id: '6rvyqj6rnt', + expression: '9', + feedback: [ + 'How does the animal get and use the glucose? What changes does the animal make to the glucose?' + ] }, { - feedback: ['What happens to IR inside of the car?'], - expression: '16a' + id: 'ffdkkanuae', + expression: 'isSubmitNumber(2) && 11', + feedback: ['How does energy from the sun get to animals to help them survive?'] }, { + id: 'ow60yaplo2', + expression: '11', feedback: [ - 'Can you tell me more about why IR gets trapped in the car but solar radiation doesn’t?' - ], - expression: '17' + 'I see, you are saying that animals need the sun to survive. Can you give me an example of how the sun helps animals?' + ] }, { + id: '2mupe6xoyy', + expression: 'isSubmitNumber(2) && 3', feedback: [ - 'Why does heat get trapped in the car but solar radiation doesn’t? What happens when an object has heat energy?' - ], - expression: '18' + 'What else do plants need to grow other than the sun? What happens inside plants for the sun to help them grow??' + ] }, { - feedback: ['Can you tell me more about what exactly is trapped in the car?'], - expression: '18a' + id: 'zbus61wnqy', + expression: '3', + feedback: ['Can you tell me more about how the Sun helps plants survive?'] }, { - feedback: ['Can you tell me more about how the heat got into the car in the first place?'], - expression: '19' + id: 'uc4d6jj3zi', + expression: 'isSubmitNumber(2) && 12', + feedback: [ + 'I enjoy hearing your thoughts. Can you tell me more about how the energy from the sun is transferred from plants to animals?' + ] }, { + id: 'fm7wctlxpr', + expression: '12', + feedback: ['Interesting idea! What type of energy do animals get from plants?'] + }, + { + id: 'dzm7j60m0t', + expression: 'isDefault', feedback: [ - 'Can you tell me more about this idea or another one in your explanation? I am still learning about student ideas to become a better thought partner.' - ], - expression: 'isDefault' + 'Can you tell me more about this idea or another one in your explanation? I am still learning about student ideas to become a better thought partner.', + 'How does the energy transfer from the sun to the plants and then to the animals?' + ] } ], - isComputerAvatarEnabled: true, + maxSubmitCount: 3, + showSubmitButton: false, + showSaveButton: false, + prompt: '', computerAvatarSettings: { ids: [ 'person1', @@ -162,10 +309,13 @@ export class DialogGuidanceInfo extends ComponentInfo { 'robot2' ], label: 'Thought Buddy', - prompt: 'Discuss your answer with a thought buddy!', - initialResponse: "Hi there! It's nice to meet you. What do you think about..." + prompt: + '

Discuss with a thought buddy.

Your buddy will ask you to explain your thinking and compare your response to responses from other students around the country.

Then your buddy will ask you some questions.', + initialResponse: + 'Hi Preview User!
How do you think animals get and use energy from the sun to survive?
', + useGlobalComputerAvatar: false }, - version: 2, + isComputerAvatarEnabled: true, constraints: [] }; } diff --git a/src/assets/wise5/components/discussion/DiscussionInfo.ts b/src/assets/wise5/components/discussion/DiscussionInfo.ts index 7ca3fbd070c..0bc86a7793e 100644 --- a/src/assets/wise5/components/discussion/DiscussionInfo.ts +++ b/src/assets/wise5/components/discussion/DiscussionInfo.ts @@ -1,12 +1,13 @@ import { ComponentInfo } from '../ComponentInfo'; export class DiscussionInfo extends ComponentInfo { - protected description: string = $localize`The student posts messages for the whole class to see.`; + protected description: string = $localize`Students post messages for the whole class to see and can reply to other students' posts.`; protected label: string = $localize`Discussion`; protected previewContent: any = { id: 'abcde12345', type: 'Discussion', - prompt: 'Post a message for the class to view.', + prompt: + 'Based on your findings, how does the color of the sand affect the population of fish? Post your ideas to share with the class.', showSaveButton: false, showSubmitButton: false, isStudentAttachmentEnabled: true, diff --git a/src/assets/wise5/components/draw/DrawInfo.ts b/src/assets/wise5/components/draw/DrawInfo.ts index e9027e6a275..029727c3399 100644 --- a/src/assets/wise5/components/draw/DrawInfo.ts +++ b/src/assets/wise5/components/draw/DrawInfo.ts @@ -1,16 +1,22 @@ import { ComponentInfo } from '../ComponentInfo'; export class DrawInfo extends ComponentInfo { - protected description: string = $localize`The student draws on a canvas.`; + protected description: string = $localize`Students draw on a canvas using a variety of tools.`; protected label: string = $localize`Draw`; protected previewContent: any = { id: 'abcde12345', type: 'Draw', - prompt: 'Draw a house.', + prompt: `

Draw the path of electrons in a METAL molecular structure. Make sure you distinguish this sketch from your sketch of the plastic and tire rubber in the previous activities.

+
  1. Use the STAMP tool to place 2 valence electrons on the metal structure.
  2. Use the stamp tool to shade the part of the atomic structure where each electron spends its time.
`, showSaveButton: false, showSubmitButton: false, + showAddToNotebookButton: false, + background: '/assets/img/component-preview/metal_draw.jpg', stamps: { - Stamps: ['/assets/img/component-preview/sun.png', '/assets/img/component-preview/leaf.png'] + Stamps: [ + '/assets/img/component-preview/electron.png', + '/assets/img/component-preview/highlight.png' + ] }, tools: { select: true, diff --git a/src/assets/wise5/components/embedded/EmbeddedInfo.ts b/src/assets/wise5/components/embedded/EmbeddedInfo.ts index f31d556d28f..c99b8fe3553 100644 --- a/src/assets/wise5/components/embedded/EmbeddedInfo.ts +++ b/src/assets/wise5/components/embedded/EmbeddedInfo.ts @@ -1,7 +1,7 @@ import { ComponentInfo } from '../ComponentInfo'; export class EmbeddedInfo extends ComponentInfo { - protected description: string = $localize`The student interacts with a custom model.`; + protected description: string = $localize`Students interact with a custom applicatio, such as a model or simulation.`; protected label: string = $localize`Embedded (Custom)`; protected previewContent: any = { id: 'abcde12345', @@ -9,6 +9,7 @@ export class EmbeddedInfo extends ComponentInfo { prompt: 'Click the differnt boundary types to view them in action.', showSaveButton: false, showSubmitButton: false, + showAddToNotebookButton: false, url: 'https://wise.berkeley.edu/curriculum/shared/plate-tectonics-convection-explorer/v1/index.html?maxWidth=900', height: 600, diff --git a/src/assets/wise5/components/graph/GraphInfo.ts b/src/assets/wise5/components/graph/GraphInfo.ts index 45c9acf30bb..c4433cefdf5 100644 --- a/src/assets/wise5/components/graph/GraphInfo.ts +++ b/src/assets/wise5/components/graph/GraphInfo.ts @@ -1,7 +1,7 @@ import { ComponentInfo } from '../ComponentInfo'; export class GraphInfo extends ComponentInfo { - protected description: string = $localize`The student views graph data or adds points to a graph.`; + protected description: string = $localize`Students view graph data or add points to a graph.`; protected label: string = $localize`Graph`; protected previewContent: any = { id: 'abcde12345', @@ -10,6 +10,7 @@ export class GraphInfo extends ComponentInfo { 'Draw a line that shows the position graph of a person that starts at position 0 meters and then takes 50 seconds to walk 50 meters and then comes back to their start position while moving at a constant speed.', showSaveButton: false, showSubmitButton: false, + showAddToNotebookButton: false, title: '', width: 800, height: 500, diff --git a/src/assets/wise5/components/html/HtmlInfo.ts b/src/assets/wise5/components/html/HtmlInfo.ts index e32e2800c2a..86658a4b9dd 100644 --- a/src/assets/wise5/components/html/HtmlInfo.ts +++ b/src/assets/wise5/components/html/HtmlInfo.ts @@ -1,7 +1,7 @@ import { ComponentInfo } from '../ComponentInfo'; export class HtmlInfo extends ComponentInfo { - protected description: string = $localize`The student views html content.`; + protected description: string = $localize`Students view rich text (HTML) content.`; protected label: string = $localize`Rich Text (HTML)`; protected previewContent: any = { id: 'abcde12345', @@ -9,8 +9,15 @@ export class HtmlInfo extends ComponentInfo { prompt: '', showSaveButton: false, showSubmitButton: false, - html: - 'The provides light energy to to help them grow.', + html: `

How does the Sun warm the Earth?

+

sun

+

You probably know that the Sun keeps us warm on Earth. But do you know how the Sun does that?

+

In this lesson, you'll explore the following questions:

+
    +
  • How does the Sun's energy travel to the Earth?
  • +
  • What happens to the Sun's energy when it reaches the Earth?
  • +
  • How does the Sun's energy warm the Earth?
  • +
`, constraints: [] }; } diff --git a/src/assets/wise5/components/label/LabelInfo.ts b/src/assets/wise5/components/label/LabelInfo.ts index a1a4823d99f..022aed4f004 100644 --- a/src/assets/wise5/components/label/LabelInfo.ts +++ b/src/assets/wise5/components/label/LabelInfo.ts @@ -1,7 +1,7 @@ import { ComponentInfo } from '../ComponentInfo'; export class LabelInfo extends ComponentInfo { - protected description: string = $localize`The student adds label to a canvas.`; + protected description: string = $localize`Students add labels to a canvas.`; protected label: string = $localize`Label`; protected previewContent: any = { id: 'abcde12345', @@ -9,6 +9,7 @@ export class LabelInfo extends ComponentInfo { prompt: 'Label the layers of the Earth by moving the labels to the correct location.', showSaveButton: false, showSubmitButton: false, + showAddToNotebookButton: false, backgroundImage: '/assets/img/component-preview/earth-layers.jpg', canCreateLabels: true, canEditLabels: true, diff --git a/src/assets/wise5/components/match/MatchInfo.ts b/src/assets/wise5/components/match/MatchInfo.ts index 7b17c3d18c2..6d9875c868a 100644 --- a/src/assets/wise5/components/match/MatchInfo.ts +++ b/src/assets/wise5/components/match/MatchInfo.ts @@ -1,90 +1,244 @@ import { ComponentInfo } from '../ComponentInfo'; export class MatchInfo extends ComponentInfo { - protected description: string = $localize`The student places items into buckets.`; + protected description: string = $localize`Students sort items into different buckets.`; protected label: string = $localize`Match`; protected previewContent: any = { id: 'abcde12345', type: 'Match', - prompt: '', + prompt: + 'Sort the different environmental pressures that organisms can face into biotic and abiotic pressures.', showSaveButton: false, showSubmitButton: true, choices: [ { - id: 'b414lojonc', - value: "" + id: 'evhs07qtqu', + type: 'choice', + value: 'Predators' }, { - id: '56a20j5hvf', - value: 'Apple' + id: 'sa5w70scaw', + type: 'choice', + value: 'Dangerous viruses' + }, + { + id: 'ofm2mo5mgy', + type: 'choice', + value: 'High temperatures' + }, + { + id: '3unza7haw1', + type: 'choice', + value: 'Lack of water' + }, + { + id: '21noaztqyb', + type: 'choice', + value: 'Siblings competing for territory' + }, + { + id: 'i5n25oq6qy', + type: 'choice', + value: 'Air pollution' + }, + { + id: '6vbjwoo64q', + type: 'choice', + value: 'Not enough food (prey)' + }, + { + id: 'b8lhey6tgp', + type: 'choice', + value: 'Strong sun light' + }, + { + id: 'ocm53nhs1f', + type: 'choice', + value: 'Parasites' + }, + { + id: 'rzas42rtvc', + type: 'choice', + value: 'Sand storms' } ], choiceReuseEnabled: false, buckets: [ { - id: '3ygkgsnl5c', - value: 'Sun', - type: 'bucket' + id: 'k7zphrnrym', + type: 'bucket', + value: 'Biotic pressures' }, { - id: 'np0wbaccfb', - value: 'Fruit', - type: 'bucket' + id: 't7ij83fu78', + type: 'bucket', + value: 'Abiotic pressures' } ], + choicesLabel: 'Environmental pressures', feedback: [ { bucketId: '0', choices: [ { - choiceId: 'b414lojonc', + choiceId: 'evhs07qtqu', feedback: '', isCorrect: false }, { - choiceId: '56a20j5hvf', + choiceId: 'sa5w70scaw', feedback: '', - isCorrect: false, - position: null, - incorrectPositionFeedback: null + isCorrect: false + }, + { + choiceId: 'ofm2mo5mgy', + feedback: '', + isCorrect: false + }, + { + choiceId: '3unza7haw1', + feedback: '', + isCorrect: false + }, + { + choiceId: '21noaztqyb', + feedback: '', + isCorrect: false + }, + { + choiceId: 'i5n25oq6qy', + feedback: '', + isCorrect: false + }, + { + choiceId: '6vbjwoo64q', + feedback: '', + isCorrect: false + }, + { + choiceId: 'b8lhey6tgp', + feedback: '', + isCorrect: false + }, + { + choiceId: 'ocm53nhs1f', + feedback: '', + isCorrect: false + }, + { + choiceId: 'rzas42rtvc', + feedback: '', + isCorrect: false } ] }, { - bucketId: '3ygkgsnl5c', + bucketId: 'k7zphrnrym', choices: [ { - choiceId: 'b414lojonc', + choiceId: 'evhs07qtqu', + feedback: '', + isCorrect: true + }, + { + choiceId: 'sa5w70scaw', + feedback: '', + isCorrect: true + }, + { + choiceId: 'ofm2mo5mgy', + feedback: '', + isCorrect: false + }, + { + choiceId: '3unza7haw1', + feedback: '', + isCorrect: false + }, + { + choiceId: '21noaztqyb', feedback: '', - isCorrect: true, - position: null, - incorrectPositionFeedback: null + isCorrect: true + }, + { + choiceId: 'i5n25oq6qy', + feedback: '', + isCorrect: false }, { - choiceId: '56a20j5hvf', + choiceId: '6vbjwoo64q', feedback: '', - isCorrect: false, - position: null, - incorrectPositionFeedback: null + isCorrect: true + }, + { + choiceId: 'b8lhey6tgp', + feedback: '', + isCorrect: false + }, + { + choiceId: 'ocm53nhs1f', + feedback: '', + isCorrect: true + }, + { + choiceId: 'rzas42rtvc', + feedback: '', + isCorrect: false } ] }, { - bucketId: 'np0wbaccfb', + bucketId: 't7ij83fu78', choices: [ { - choiceId: 'b414lojonc', + choiceId: 'evhs07qtqu', feedback: '', - isCorrect: false, - position: null, - incorrectPositionFeedback: null + isCorrect: false + }, + { + choiceId: 'sa5w70scaw', + feedback: '', + isCorrect: false + }, + { + choiceId: 'ofm2mo5mgy', + feedback: '', + isCorrect: true + }, + { + choiceId: '3unza7haw1', + feedback: '', + isCorrect: true + }, + { + choiceId: '21noaztqyb', + feedback: '', + isCorrect: false + }, + { + choiceId: 'i5n25oq6qy', + feedback: '', + isCorrect: true + }, + { + choiceId: '6vbjwoo64q', + feedback: 'Think - what do animals usually eat?', + isCorrect: false + }, + { + choiceId: 'b8lhey6tgp', + feedback: '', + isCorrect: true + }, + { + choiceId: 'ocm53nhs1f', + feedback: '', + isCorrect: false }, { - choiceId: '56a20j5hvf', + choiceId: 'rzas42rtvc', feedback: '', - isCorrect: true, - position: null, - incorrectPositionFeedback: null + isCorrect: true } ] } diff --git a/src/assets/wise5/components/multipleChoice/MultipleChoiceInfo.ts b/src/assets/wise5/components/multipleChoice/MultipleChoiceInfo.ts index 7953ccb1ec4..c367a49cef8 100644 --- a/src/assets/wise5/components/multipleChoice/MultipleChoiceInfo.ts +++ b/src/assets/wise5/components/multipleChoice/MultipleChoiceInfo.ts @@ -1,33 +1,30 @@ import { ComponentInfo } from '../ComponentInfo'; export class MultipleChoiceInfo extends ComponentInfo { - protected description: string = $localize`The student chooses one or more choices.`; + protected description: string = $localize`Students select one or more choices.`; protected label: string = $localize`Multiple Choice`; protected previewContent: any = { id: 'abcde12345', type: 'MultipleChoice', - prompt: 'Choose the fruit.', + prompt: 'When touching a hot METAL bowl and a hot WOODEN bowl that have the same temperature:', showSaveButton: false, showSubmitButton: true, choiceType: 'radio', choices: [ { - id: 'h0bdww4oh5', - text: '', feedback: '', - isCorrect: false + id: '1jmi01ht6t', + text: 'The metal bowl will feel hotter.' }, { - id: 're6btejd1o', - text: '', feedback: '', - isCorrect: true + id: '46r96bhek5', + text: 'The wooden bowl will feel hotter.' }, { - id: '5u2px4yxj3', - text: 'Apple', feedback: '', - isCorrect: true + id: 'xuikkjc99u', + text: 'The bowls will feel the same.' } ], showFeedback: true, diff --git a/src/assets/wise5/components/openResponse/OpenResponseInfo.ts b/src/assets/wise5/components/openResponse/OpenResponseInfo.ts index 99338abc239..0979cc62be9 100644 --- a/src/assets/wise5/components/openResponse/OpenResponseInfo.ts +++ b/src/assets/wise5/components/openResponse/OpenResponseInfo.ts @@ -1,14 +1,15 @@ import { ComponentInfo } from '../ComponentInfo'; export class OpenResponseInfo extends ComponentInfo { - protected description: string = $localize`The student types a text response.`; + protected description: string = $localize`Students type a response to a question or prompt.`; protected label: string = $localize`Open Response`; protected previewContent: any = { id: 'abcde12345', type: 'OpenResponse', - prompt: 'How do plants grow?', + prompt: 'In your own words, explain what an insulator does and what a conductor does.', showSaveButton: false, - showSubmitButton: false, + showSubmitButton: true, + showAddToNotebookButton: false, starterSentence: null, isStudentAttachmentEnabled: false, constraints: [] diff --git a/src/assets/wise5/components/outsideURL/OutsideUrlInfo.ts b/src/assets/wise5/components/outsideURL/OutsideUrlInfo.ts index 7b255da8f45..607d5b720c7 100644 --- a/src/assets/wise5/components/outsideURL/OutsideUrlInfo.ts +++ b/src/assets/wise5/components/outsideURL/OutsideUrlInfo.ts @@ -1,7 +1,7 @@ import { ComponentInfo } from '../ComponentInfo'; export class OutsideUrlInfo extends ComponentInfo { - protected description: string = $localize`The student views a webpage.`; + protected description: string = $localize`Students view an external website.`; protected label: string = $localize`Outside Resource`; protected previewContent: any = { id: 'abcde12345', diff --git a/src/assets/wise5/components/peerChat/PeerChatInfo.ts b/src/assets/wise5/components/peerChat/PeerChatInfo.ts index e2bb94fa426..80c8a23cff1 100644 --- a/src/assets/wise5/components/peerChat/PeerChatInfo.ts +++ b/src/assets/wise5/components/peerChat/PeerChatInfo.ts @@ -1,15 +1,43 @@ import { ComponentInfo } from '../ComponentInfo'; export class PeerChatInfo extends ComponentInfo { - protected description: string = $localize`The student is paired up with another student and they chat about a topic.`; + protected description: string = $localize`Students are grouped with other students to discuss a topic.`; protected label: string = $localize`Peer Chat`; protected previewContent: any = { id: 'abcde12345', type: 'PeerChat', - prompt: 'Chat with your classmate about how plants grow.', + prompt: `

Hi! You've been paired with a classmate to improve your explanation to the question: "How do you think Mt. Hood formed?"

+

Discuss with your partner in this chat!
If you agree, you can describe what you agree on and try to elaborate. If you disagree, try to figure out why.

+

You can use questions from the Question Bank if you want help connecting your ideas.

`, showSaveButton: false, showSubmitButton: false, peerGroupingTag: '', + questionBank: { + version: 2, + enabled: true, + maxQuestionsToShow: 3, + clickToUseEnabled: true, + rules: [ + { + id: 'lt6a6dwpq3', + expression: 'true', + questions: [ + { + text: 'How does convection affect plate movement where Mt. Hood is located?', + id: 'vwv7dnbm28' + }, + { + text: 'How does density have an effect on how plates interact with one another? ', + id: 'vwv7dnbm29' + }, + { + text: 'Do you agree or disagree with your partner? What would you add or build on?', + id: 'vwv7dnbm27' + } + ] + } + ] + }, constraints: [] }; } diff --git a/src/assets/wise5/components/showGroupWork/ShowGroupWorkInfo.ts b/src/assets/wise5/components/showGroupWork/ShowGroupWorkInfo.ts index e910e28e349..13935020d83 100644 --- a/src/assets/wise5/components/showGroupWork/ShowGroupWorkInfo.ts +++ b/src/assets/wise5/components/showGroupWork/ShowGroupWorkInfo.ts @@ -1,12 +1,12 @@ import { ComponentInfo } from '../ComponentInfo'; export class ShowGroupWorkInfo extends ComponentInfo { - protected description: string = $localize`The student is shown work that their group submitted for a specific step.`; + protected description: string = $localize`Students are shown work that everyone in their group submitted for a specific item.`; protected label: string = $localize`Show Group Work`; protected previewContent: any = { id: 'abcde12345', type: 'ShowGroupWork', - prompt: 'This is the work that your group submitted for a previous step.', + prompt: `Hi! You've been paired with a classmate to improve your explanation.
Here are your responses to the question "How do you think Mt. Hood formed?":`, showSaveButton: false, showSubmitButton: false, showWorkNodeId: '', diff --git a/src/assets/wise5/components/showMyWork/ShowMyWorkInfo.ts b/src/assets/wise5/components/showMyWork/ShowMyWorkInfo.ts index 240d41c07e6..00faa3cbe9f 100644 --- a/src/assets/wise5/components/showMyWork/ShowMyWorkInfo.ts +++ b/src/assets/wise5/components/showMyWork/ShowMyWorkInfo.ts @@ -1,12 +1,12 @@ import { ComponentInfo } from '../ComponentInfo'; export class ShowMyWorkInfo extends ComponentInfo { - protected description: string = $localize`The student is shown work that that they submitted for a specific step.`; + protected description: string = $localize`Students are shown work that they submitted for a specific item.`; protected label: string = $localize`Show My Work`; protected previewContent: any = { id: 'abcde12345', type: 'ShowMyWork', - prompt: 'This is the work that you submitted for a previous step.', + prompt: 'Here is your previous answer to the question "How do you think Mt. Hood formed?":', showSaveButton: false, showSubmitButton: false, showWorkNodeId: '', diff --git a/src/assets/wise5/components/summary/SummaryInfo.ts b/src/assets/wise5/components/summary/SummaryInfo.ts index 9f0003f04d2..1d4b707acab 100644 --- a/src/assets/wise5/components/summary/SummaryInfo.ts +++ b/src/assets/wise5/components/summary/SummaryInfo.ts @@ -1,12 +1,12 @@ import { ComponentInfo } from '../ComponentInfo'; export class SummaryInfo extends ComponentInfo { - protected description: string = $localize`The student is shown aggregate graph data of the class.`; + protected description: string = $localize`Students are shown an aggregate graph summarizing data from the class.`; protected label: string = $localize`Summary`; protected previewContent: any = { id: 'abcde12345', type: 'Summary', - prompt: 'This is a summary graph of the class data for a previous step.', + prompt: 'This graph shows a summary of the data collected by you and your classmates:', showSaveButton: false, showSubmitButton: false, summaryNodeId: null, diff --git a/src/assets/wise5/components/table/TableInfo.ts b/src/assets/wise5/components/table/TableInfo.ts index 3e9804619ec..29988543af7 100644 --- a/src/assets/wise5/components/table/TableInfo.ts +++ b/src/assets/wise5/components/table/TableInfo.ts @@ -1,76 +1,138 @@ import { ComponentInfo } from '../ComponentInfo'; export class TableInfo extends ComponentInfo { - protected description: string = $localize`The student views a table that they may or may not be able to change.`; + protected description: string = $localize`Students view and/or edit table data.`; protected label: string = $localize`Table`; protected previewContent: any = { id: 'abcde12345', type: 'Table', - prompt: 'Add the number of elephants to the graph.', + prompt: `

Document your findings!

+

Run at least 3 trials with the simulation: one with dark sand, one with medium colored sand, and one with light sand. Record the results in the table below.

`, showSaveButton: false, showSubmitButton: false, - globalCellSize: 10, - numRows: 5, - numColumns: 2, + showAddToNotebookButton: false, + globalCellSize: 9, + numRows: 4, + nuColumns: 8, tableData: [ [ { - text: 'Animal', editable: false, - size: null + text: 'Trial' }, { - text: 'Count', editable: false, - size: null - } - ], - [ + text: 'Sand Color' + }, + { + editable: false, + text: 'Initial number of fish' + }, + { + editable: false, + text: 'Initial number of sharks' + }, + { + editable: false, + text: 'Generations passed' + }, { - text: 'Bears', editable: false, - size: null + text: 'Resulting number of dark fish' }, { - text: '1', editable: false, - size: null + text: 'Resulting number of light fish' } ], [ { - text: 'Cats', editable: false, - size: null + text: '1' }, { - text: '4', - editable: false, - size: null + editable: true, + text: '' + }, + { + editable: true, + text: '' + }, + { + editable: true, + text: '' + }, + { + editable: true, + text: '' + }, + { + editable: true, + text: '' + }, + { + editable: true, + text: '' } ], [ { - text: 'Dogs', editable: false, - size: null + text: '2' }, { - text: '6', - editable: false, - size: null + editable: true, + text: '' + }, + { + editable: true, + text: '' + }, + { + editable: true, + text: '' + }, + { + editable: true, + text: '' + }, + { + editable: true, + text: '' + }, + { + editable: true, + text: '' } ], [ { - text: 'Elephants', editable: false, - size: null + text: '3' + }, + { + editable: true, + text: '' + }, + { + editable: true, + text: '' + }, + { + editable: true, + text: '' + }, + { + editable: true, + text: '' + }, + { + editable: true, + text: '' }, { - text: '', editable: true, - size: null + text: '' } ] ], diff --git a/src/assets/wise5/vle/computer-avatar-selector/computer-avatar-selector.component.scss b/src/assets/wise5/vle/computer-avatar-selector/computer-avatar-selector.component.scss index 881556f0c32..89417707c84 100644 --- a/src/assets/wise5/vle/computer-avatar-selector/computer-avatar-selector.component.scss +++ b/src/assets/wise5/vle/computer-avatar-selector/computer-avatar-selector.component.scss @@ -1,7 +1,6 @@ @import 'style/abstracts/variables', 'style/abstracts/functions'; .mat-mdc-card { - padding: 12px; margin-top: 16px; max-width: breakpoint('sm.min'); diff --git a/src/messages.xlf b/src/messages.xlf index 8e9eb1b1420..b83925bca44 100644 --- a/src/messages.xlf +++ b/src/messages.xlf @@ -14975,8 +14975,8 @@ Are you sure you want to proceed? 58
- - The student watches an animation. + + Students watch an animation. src/assets/wise5/components/animation/AnimationInfo.ts 4 @@ -15623,8 +15623,8 @@ Are you ready to receive feedback on this answer? 330 - - The student changes the frequency of a sound wave while they listen to it. + + Students change the frequency and amplitude of a sound wave. They listen to the resulting sounds and view graphs of the waves. src/assets/wise5/components/audioOscillator/AudioOscillatorInfo.ts 4 @@ -16216,8 +16216,8 @@ Are you ready to receive feedback on this answer? 2 - - The student adds items to a canvas and connects the items with links. + + Students add items to a canvas and connect the items with links. src/assets/wise5/components/conceptMap/ConceptMapInfo.ts 4 @@ -16744,8 +16744,8 @@ Category Name: 39 - - The student chats with a computer avatar about a specific topic. + + Students chat with a computer avatar about a specific topic. src/assets/wise5/components/dialogGuidance/DialogGuidanceInfo.ts 4 @@ -16952,8 +16952,8 @@ Category Name: 99 - - The student posts messages for the whole class to see. + + Students post messages for the whole class to see and can reply to other students' posts. src/assets/wise5/components/discussion/DiscussionInfo.ts 4 @@ -17129,8 +17129,8 @@ Category Name: 196 - - The student draws on a canvas. + + Students draw on a canvas using a variety of tools. src/assets/wise5/components/draw/DrawInfo.ts 4 @@ -17363,8 +17363,8 @@ Category Name: 20 - - The student interacts with a custom model. + + Students interact with a custom applicatio, such as a model or simulation. src/assets/wise5/components/embedded/EmbeddedInfo.ts 4 @@ -17445,8 +17445,8 @@ Category Name: 66 - - The student views graph data or adds points to a graph. + + Students view graph data or add points to a graph. src/assets/wise5/components/graph/GraphInfo.ts 4 @@ -18328,8 +18328,8 @@ Category Name: 78 - - The student views html content. + + Students view rich text (HTML) content. src/assets/wise5/components/html/HtmlInfo.ts 4 @@ -18353,8 +18353,8 @@ Category Name: 13 - - The student adds label to a canvas. + + Students add labels to a canvas. src/assets/wise5/components/label/LabelInfo.ts 4 @@ -18591,8 +18591,8 @@ Category Name: 906 - - The student places items into buckets. + + Students sort items into different buckets. src/assets/wise5/components/match/MatchInfo.ts 4 @@ -18941,8 +18941,8 @@ Warning: This will delete all existing choices and buckets in this component.690 - - The student chooses one or more choices. + + Students select one or more choices. src/assets/wise5/components/multipleChoice/MultipleChoiceInfo.ts 4 @@ -19057,8 +19057,8 @@ Warning: This will delete all existing choices in this component. 72,74 - - The student types a text response. + + Students type a response to a question or prompt. src/assets/wise5/components/openResponse/OpenResponseInfo.ts 4 @@ -19589,8 +19589,8 @@ If this problem continues, let your teacher know and move on to the next activit 320 - - The student views a webpage. + + Students view an external website. src/assets/wise5/components/outsideURL/OutsideUrlInfo.ts 4 @@ -19710,8 +19710,8 @@ If this problem continues, let your teacher know and move on to the next activit 6 - - The student is paired up with another student and they chat about a topic. + + Students are grouped with other students to discuss a topic. src/assets/wise5/components/peerChat/PeerChatInfo.ts 4 @@ -19834,8 +19834,8 @@ If this problem continues, let your teacher know and move on to the next activit 65 - - The student is shown work that their group submitted for a specific step. + + Students are shown work that everyone in their group submitted for a specific item. src/assets/wise5/components/showGroupWork/ShowGroupWorkInfo.ts 4 @@ -19943,8 +19943,8 @@ If this problem continues, let your teacher know and move on to the next activit 21,23 - - The student is shown work that that they submitted for a specific step. + + Students are shown work that they submitted for a specific item. src/assets/wise5/components/showMyWork/ShowMyWorkInfo.ts 4 @@ -19971,8 +19971,8 @@ If this problem continues, let your teacher know and move on to the next activit 7 - - The student is shown aggregate graph data of the class. + + Students are shown an aggregate graph summarizing data from the class. src/assets/wise5/components/summary/SummaryInfo.ts 4 @@ -20172,8 +20172,8 @@ If this problem continues, let your teacher know and move on to the next activit 147 - - The student views a table that they may or may not be able to change. + + Students view and/or edit table data. src/assets/wise5/components/table/TableInfo.ts 4 From e0061e4960fccbc2f5f27abe133be5de8ad04644 Mon Sep 17 00:00:00 2001 From: Jonathan Lim-Breitbart Date: Wed, 8 Nov 2023 09:08:30 -0800 Subject: [PATCH 7/7] Fix test --- .../component-selector/component-selector.component.spec.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.spec.ts b/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.spec.ts index 02c72b225a4..9053a51cf7e 100644 --- a/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.spec.ts +++ b/src/assets/wise5/authoringTool/components/component-selector/component-selector.component.spec.ts @@ -6,6 +6,7 @@ import { StudentTeacherCommonServicesModule } from '../../../../../app/student-t import { HttpClientTestingModule } from '@angular/common/http/testing'; import { MatDialogModule } from '@angular/material/dialog'; import { MatIconModule } from '@angular/material/icon'; +import { MatCardModule } from '@angular/material/card'; describe('ComponentSelectorComponent', () => { let component: ComponentSelectorComponent; @@ -16,6 +17,7 @@ describe('ComponentSelectorComponent', () => { declarations: [ComponentSelectorComponent], imports: [ HttpClientTestingModule, + MatCardModule, MatDialogModule, MatIconModule, StudentTeacherCommonServicesModule