From bad5d700aaa7340d7d29dc7ba82643a91ee9dd62 Mon Sep 17 00:00:00 2001 From: Devu Jayalekshmi <devu.jayalekshmi@trenser.com> Date: Thu, 23 Jan 2025 16:21:56 +0530 Subject: [PATCH 1/3] feat/windowLevelActionMenu customization support --- .../WindowLevelActionMenu/getWindowLevelActionMenu.tsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/extensions/cornerstone/src/components/WindowLevelActionMenu/getWindowLevelActionMenu.tsx b/extensions/cornerstone/src/components/WindowLevelActionMenu/getWindowLevelActionMenu.tsx index a0e65fb018..746c441b28 100644 --- a/extensions/cornerstone/src/components/WindowLevelActionMenu/getWindowLevelActionMenu.tsx +++ b/extensions/cornerstone/src/components/WindowLevelActionMenu/getWindowLevelActionMenu.tsx @@ -20,6 +20,13 @@ export function getWindowLevelActionMenu({ const colorbarProperties = customizationService.getCustomization('cornerstone.colorbar'); const { volumeRenderingPresets, volumeRenderingQualityRange } = customizationService.getCustomization('cornerstone.3dVolumeRendering'); + const windowLevelActionMenu = customizationService.getCustomization( + 'cornerstone.windowLevelActionMenu' + ); + const MenuComponent = + windowLevelActionMenu && windowLevelActionMenu.content + ? windowLevelActionMenu.content + : WindowLevelActionMenu; const displaySetPresets = displaySets .filter(displaySet => presets[displaySet.Modality]) @@ -36,7 +43,7 @@ export function getWindowLevelActionMenu({ } return ( - <WindowLevelActionMenu + <MenuComponent viewportId={viewportId} element={element} presets={displaySetPresets} From 4829e7c1cfd5edbf90dd4891b287b91128f54acc Mon Sep 17 00:00:00 2001 From: Devu Jayalekshmi <devu.jayalekshmi@trenser.com> Date: Mon, 27 Jan 2025 12:12:56 +0530 Subject: [PATCH 2/3] Window level action menu documentation --- .../docs/assets/img/windowLevelActionMenu.png | Bin 0 -> 6689 bytes .../sampleCustomizations.tsx | 21 ++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 platform/docs/docs/assets/img/windowLevelActionMenu.png diff --git a/platform/docs/docs/assets/img/windowLevelActionMenu.png b/platform/docs/docs/assets/img/windowLevelActionMenu.png new file mode 100644 index 0000000000000000000000000000000000000000..1a1b43b86adf34a8a0ec38b19c30271fa91d9b3f GIT binary patch literal 6689 zcmbVxcT^M6w=ROxK~#!#=}kmL2sJ2GdIzN=y-VmMbOV9}l-`R-6GCr7009B%5PFBu zkq~-^+<4brzrWsl>#jFz&73)N%Iv*of9LG|O_a8#G6g9EDIOjkg~}TRU0ivBJEMpR zao1y=pe0;!*HcbKpBQ&Qh;2UM>hxZUZ@u)~?Yw-gK(=`HZtkwOf}YkOTU$3z2X`+F zK^qX)N$_7Md62D@m!rGe6MaWlTRaWi%?rR2RV!Ta{DtTfVPQ#O5y_W;C$BZ0sOafS z@Kbr=CJ#_ic&+c3iC(a`)bCpCIl$B(o2%gG5q*b_u#JbjdBCTu@Jf-og+1EbpSp!t z^+5$GZ*r;W_cKc5SIUPEiC+_Q<=vH&3#e$$2sHoA7{$kFWz=zrMZ6y#N|OLD_Y6pY zeU$Dzrjkpg@U9R!xPSHdBUO??E|&m**g1j8&$`{_7oT|pvZ7M5jXx=C8!Cv?6}G6m zse47CNo~#re{;y&IzpX`vd06rU3b$j5@;T1{%LIG>c<md=^G_s`!SF^^_7`f@w%L% z(TB35JWUpQA@Myjk~&2P_<Qw{oPGjOHf{?$MDVL-_{&3#N-@+=fh$LnJj5*Dj;mhn zUv>NFDEihikFUz?hALK(xW*O^YL~~vwLk&UauWm-w%R+rPd{<JrqL`179g*1GdzFj zoJ2-paHGSkuYJCJ!bfT#Ui{ax;&_9hS%BGvK8VbUlO+I4w3pTYjaPpq@2tYhpQMgT z>Am}k8OKiYN&}S=sLgz~W0)jk5k6WACf@<y(e~q@HQTZUokH_klFiXg7_L0pj^Fw$ zhT<BmuxdxMT9ddhHFmNWDXVyukO4-GM;1)M5XR1#H^_~0`JA%A+*8hRxzsOx2H|53 z2~W7Q$2WoUbSWmNKr?mD-8hB18|on}fHdWzBL29~_c7>X!cDKd1p1t<sHBq*5%77f z!7!QhxaGK^S|z>u?yk#+G%Sjsjt?h;!cziioqC5?vt@%x{FuYxJC7mr+Lu>W6Z0*z zXjPmo9?bDb=~b@3DTqK0>0RYBO+La4f9PTnSp7fE-gAX(EX{sPpnt6lEczhpqss~R zhFLHv8^8Y6&Zko!W2mj^BJ<mM`6V?+R|B+9K@n|-{&7Ge<$C1U_Q|3xAw#ZqNwH7O zLnk(M1rGoXtU)ggBN2-U3ovavJQEx-Xg0%{m-`z<bByh>bwRyU+ktqxQKTW_2)?65 z%>PdbP%vfpx8NtLn@ho%GQ;KLy;u6ymxc(AFAV{~b#qDDWLE4KbP2rV&Cz4y-^^z& z;6cUxKO>&8afg;=owYfev;2EOqNF>SQ(IFbJh1tA%FtGO%~>T2u^&2{h#M{k<-5nJ zbxD|1PNitoRpTLmta$_Wcy>9BAac@c#VPdr_~7U7II|FgIpb*rkleu9f}DXST8<zB z0r{lzefgK;i{z{qs$iUsF~4)ijn11l5hA|5j25T55=kY^)i@-4{Axq{d-78g*SOqc zl`wvUs*IB@ePX~v{gtF=LO3PgfKK>K$1vRTzH_`QV!S6dTW+2j78hv>?VqN`otP?h zCzRnJMXTqxG0}3;{4Wx}SiRvj4m!N^cqCu1Aa}wD{Z%LbqcM!YhZY^(@zmLY)QXxk zoD_y6sOw8A3)A+p(RY%~CvSu6pA`7wOiE2iWB8*F+d9jeXIN?q(}7WaV>0MX)sYiy zsii73NQ&uQaAzBc`Djcm!hw@+;0?}KL~!c;A0G`s*nj7|bik-#Tkq5!RKytx8jbJl z$OxB=ZAUd{49x5^?k>`GpL{V<0wSw%2yE>6exGox#LT+hZN4Y66yUiTz$6)X62u5M zEZKKlRxEmU2XcM;MiZ)Zh~9No0-}(&$(<Oxg=_K0hctBgDIUTB^qUnzR%4;>Vgfy% zh}F5MCC)YaatpOc-K}fc2%W7xtG92j=7U^M^uHB13O=ZbZWIHp!|3y;eVthTjohpX zK0-Fjt3nE|NEk+=Tq9)*23H4RKBk4mW7Kv*Crqk=EUOXfRtwe43d-I3QX_bhE!kUt z9#0C+wKuZqY404RUQBo@Nu#Q7T){i|@MIe2;1&Hpwx(vg+au+C3EV)HA|H+OtyNo2 zWv+zu_}9Oa=H{bgl~asv>R`8|-UN^|k-v%v=`4v4`%gz39y&}7#nJVg79=-|9No5L zXMWs`3``ZB#F;69if;J&oh+?8*$(TU+`JZtNyG!Z2Xy(<RqIqlzB$F98=PbpH9>3e zU=152QMkseHP%($tXN>pNuNBj0U9#-tB{MxAM#ci=;uq$p>(p=X5r4WhcW{~R(r0D zPQSeS`BvoiqILSMbL#ml<eTQwUCSi9`&zNv-Ha8KD+(X(MvC2)ohN|jG1Q(F=rwo8 zFuo}8n-g${S&eVq;p)3+2qMQ$#*H>Q$^@mh{V;YFy!H|nsDEbZ3${ow`)^sICx0Cf zY)VYRX|iSkw$^ZtX+YJ=(Tq@y)tvC8;H=gdC568yQhT<}F-9(L`Ml&aM8ch;q0^ce z_hkU);AjiVoO}yylX;m;ak`+auKu%!h_>VJ9!_A2xcl3`8b{;C5K%%G_lzf9qz6!n z&09><F%8_ZgPFrqATKpu?U%K;kUfR>?-SBQtnc~r{p|Ag2OQ_t1rt!RkZf)gNO8%I z<sFGjPJhixBV)KHHY7$)Kao{LM5Nmg%VSirV0BZ-u{-M*A9j4L+vB)uW#Z=FV%Q_# ze!sxPQtiEU0?F=tj3^`J5t=Sz#MVhI$Q&BK*n*#WQL(9-!wA0vb_XlPQlPer@DJeV z*K+SAm#!OO%+7IEw(ea6T0FUi{2rAxc{&{Kb_3?^t#xe->lLlROL#bB7)g&)?y$b) zA30+X4Z!=F;%?a7v)JUpdUHj%508?&X+RV{(=yj&NqM%=u{gv)R1`mz=i^q7xJKbY z5N2sWPkIcbl33_Ioq0f&>}0tZ-uR){N^cPJTf}=Ite-U-^zpgPrMR)Tv+fW0uhu*2 zf!3Ux9TmcUzsZ3&Ai<l<+V!YVW^wEsMZE5d?dev&^reb*Mp;85At5?VLJLlznl(~N zxAItrM1J;XiYcUe#$F7it&3gTGMhS%iR6q62~n#=RG<xhPoRao%^Gu|I)l<u9`kEG zkgi}7>_^8TX&pWkpJB385d@ONXkw!@GU8Gs3Gs}4m9w`NlC!Sl&p|8PPoIu=Z7R7| zSREh5iP$Mn^-o>PVcW6qd$RQq#}L_cUkCCK-IDLNN0&?zLD?l^v=2Z#AR4Ss|5SGy zut+n4rj6xg?Ns1diF(>$rX;-*BerkYM%MtTx77K?<c*RKWwMhfEd#~Hy?b4l5<$`F znRlMt((&QVL)u@`d))0S?tIC}BzW~YG<n^bvf6gSiu@<^d!hZ|`h1iZ8X0CXrTR=G zzy?gLl@rA&B0*+Wn4Eb2^77P8IlQTE`sX^QeJ4AK!vZlKE1mA%_mPr7JzZoqiL5V0 zEf-H%O?}nfCjv#Nb>mD#))vcjyct-l#&R!!6nQkW`XDACB7RYZK)hP0Om#hu^_C+1 zj@y!o%|yDqLS)j?5jC~LyJ{!dQaW@yPLDTRNhnXx1AR`}z?$%r();nW8I;BZvU7LG z;A&)$zkVOkPUM8)p*1TyWoAcYGgaL!fMtXJB&n&@XbUWcp@}_-PcIu++y7zPG!w=- zey06az@xH`t?iW&`v@Mr3jOXp^MFZ0<fxCD^)n0D%5+8BLI2(e>P6bNgn~H?Cj#-S z_v)k#7|zx0y%?zNwjO#L-S;;ka-{5?jPye0{_zL)XV2)(%3~k3KRDjo)2c~6X>@o# zQfSLD1Xcd(CGb;UX6BuuReep#d3jSt^P@et)7^Q`jIhja!zmeQ{S(f<TT?|cv2K(G z{FpTti}4^k7Kxdk`rp5K=2um}Dw-I5k;@id<eO)1b{~S6udGJqPEu2FQxFo+(@Qvb z!elGze}2_o>g?-|F4Tais19-p@;%}KT%pcLapq_}e$Jz1ntQhD`dGM;ks!xm_%wDf z^`!R@1tL{^chqs~__kD67$WD+t;M81?LIYKclI)hq$GxZCZl7CPNzA5EnUik&&y@% zZjx?j>1P=pEpr8v?vc~I1?t1Yx>^^V9FFFpMBY{Xsi@HKW-5Qth_V6G#J=i^Mt$C8 zt)6miUjC;Rr}lyt{+r$1qv^qjQ|iF5*$>C(_Y5m!KjN0eF4eMC7jh5Zgah2>=w(B$ z?Ugdu=Dpp8!q9jK|CmKzyxeEsbKAyd!W7F(u*&(lV2j`YFW26g{clzWEs4ph(is7| zU-W)8VNQjew#aEAZ8U9!z{W-?g5_nK&lU-@yk(y?OTn&mJLiq@UlQeB-?Cany_+*Z zKKm6{vzea?bQKn$-Q|3_#?MRL^|SBIpC{+Lw#K-yQhRvv_q@gmNMWXP?t3crkVRAb zuU2M<F?2R2Oq8_g)T!%e__Td;G5z~@FQi_LBeIc_R*bfd^|NRYMc^BCO&)=|HG55! zq2fx2ozi+_J53g&l(LC&ZSio^pz^uR?0YdG$v<_@9=sF5gR;XlD}b$WuH5sJSi#7> zW-Z&k#3H>EyrGDt;?vu+qXu+Ik`q@D%xTQ?1DKlh9^81`e!Oz;WA^9wtCt)FZl{e? z9_uw)7IKc-`)E{7)p#+<&S-jOCgc$Gd5=LLiBySvoAA~9_Y9qc-d#hJ>5q6gMx3$4 zb@i{5jg4trni{@2f03>7=p_gL5YV`WG%|QI;swTLFYBeyi&c^VnKNqMqwgU13X?A0 z9qNMKHF?Pf!FKj%%1CxG-Vuxd3~H)TOs1(0l_GC-m-Xi>H@jzy4b1jP0j>C~g#Lnl z;ab<R)Ot9hi0@(m5`|P7&+ro{K^>CVvTFH9Q10k%{Ole2!v>Iw`=vQZf)1cD0Xr+j zZAE32S|{yPlrLO$oS)x(bus=)mSsNNzQE%!Uu*u;_tzAB#sDt0q<x$?^JOLQ!eQu= zNMbE|?)kex(M+gPXQO?9$X?o_gSR9*2WI~yxV|cI%mcKSycdeff0%Z5!d=)Z5#O~$ z9hl<}L~$=&S7!ZYR9Rm7Qk(dcl2vN>DF14C$4TqY3~%AEvF3Si|Fi_w10W+?6k<?% zUw3W}HVjM)F)Xt0KYjEut1WgV8*B;q_Wl!sUb)ongoLCe3|Msiw|A@31aYt-*ByiI zOt_Ie-2G$zo2RfUpp(r|aKY$$xpz;4r_#4_<-~|^#nN707er|BbpB73nZ4>lh{zhP zp=m2=eEgV%-??epW_Pa0ekXF_dMR<`smU=ViOROij0gUitl4TtA1?gNB!$@=){=DH z&$)gcOoQ7|8PF>U*feQZ{31CHjZ3CRe2%h`l`{W%;>be>vVYMB55>mnjDSQl_M6U5 z?Lp;w{yQN{#}cc{+Af=JJB9*to%%Ej8D%+BX);-}>sN7+$%=4YVgK2?(g^9a+l|93 zjCO=R`c`)?AdBzPa9!JE808AmFni=kJ?_5Q|H-4pVFJMt85fa|mg<eY`AvWu10ppr zESqi$(HXw~&24qI*kB@O%p9(()8OH%BqRHY#)MA0xcY}rZs~Y=uL+fb9mcK4#GR6- z(pn_BLgH6zR*@P74C)Ax0y8!TW4G6N!oy=u$NJ+o%CP-G0eqeAY%C96T+^c5RpkUf zrhUcbK6d|7PkLO2WT*7Mf8@^@q~(fn9iBdDd865D)8DshJ5<c~kym$B-WBcE8CGFl zn4HDMZ^CH&65g+@mtxJ!3z?4OR)Fc}M=miCkpXi6cZBGq=C8;*E}{TiBlQp5gT=3{ zSktLQ4PodK8d_Dmp}^RP*1bj_f7(AAUfqtA!7ZUig)!_Ns*?S5yKvnsTtq|8v<S72 zIQvy$<r=RiA_0-k#6qwl2Pvx<i#ytFS?*DaM=`>KUz`byTCY(C<qMy1_%}>3E-wFe zCIy^Hk6Q#M`;!3@lG6vThb`K>dT)m{@G8N<ysWL*gr|<q8%{38J&4&zF*xJ${;bzB zp;4%RALX<$8l_ZDW35cNp{qd7cEu0yENY1(z_iMy16%OLeNgx&^;zGo2!sNBj*80T zh*%-D9~(dWYFwtNqx+y4h@(aJGMA?w-c_sXbeEpDD2>zI`-&A~k9+~p`GM$^o(J7$ z+i?|D{$s*&r?;mmwMHEB=)aiG>8~={==r!8Hus}`0czPx0f^^pVP1cU-4<PXnz2lM zjg^dR+#C9Db2^NBL)x>pka_fDvgUoagY8{1yWMU<5TG-Dc;wyct?o(E&B^lZ7uF&q zv4X~84L$;_+4PeMTP6og3-p(7g3FZ`ek8S3Ze8)I2f9D#@y!(V2a6u2Ut$;OBY@nL zSM->Cg5=SVPqe2o;J+`k7b{&g0t<JIV`t?C$sS$JHvpyRr0}I0mXS#&cUj|jg>7Ob zSqIP5d_Y$|?EEl>Bv`aLhveZ{w_|4OF+p?eZN}8CC=-uG(Tl(JIDpOc-pqJe(&ib_ zRs~FvN2qT>q1L0SiLW^%t8Vs9fwxZV%EN+dSE71VXBW=gC3K>l(0rrEfLjq@hDd1Z zu$LH4*zzK`iBggvik1&9vUfsG{3-{V#a0WM3j&SaUceZ8D6isgjcGq~#P07rdR=A; zD(;Bdb7h8mczY~QEfa%Ys8Y(3A&)Nnw?|P^%tW;tH@->-b6pO=j5Zc`A*1Y|9|HCD zlMvB{HC;ZZzu!(WECO0t!KaaxPUzRyCSo>y->tTe1A@%G$?<#v%JZh^G*MsC2J84g zDoM_>Z5hR50D4h7N`aKt$gC{U3@muW#&x1myG{HV@gP)<SA1A=_q=x@u4s|05c^@e z@vcv~gXU#v^0JNP#cYDQUm1~g&l&1!X09Kump^Kmr;FP?KARieJ|FKGjW?Gu_PDW= zuCa%6UIe@#b>?#1o*~~`BEdvtbM;C28@jb@#tgVjx=VC_)hL32Vt?oJZCo=)#9gLN z2rMdF=h-dzUa2EBVGKc1;~u&1#w6dmO?RnSR>_k|wg$mo4{y}?3Y1~X8B2zZ<<tnu zbe3s0G`FD5$GfxNIs%T4NdNRtSvgz7euPEMxH7>VwWmI3G@$;x8NiF4OlV^8CL&X# z@OElW;l*s|)CL_T{XzZ(OdWdhnPVh`EKCY$*r69SwaC=6J%$Ort4X095^GIU`zUt2 z6no_3V;3g6;f`5%sRU{piWZ7W^HAqhj=CM64WA$Bd$B%m#f_6M`L}|rku_0T>IME| zP16!{@yQoGPB7Zo<YVU92l8wmvs=URGPzQcLgWh0$Lgb}+;5Kph9?T9wtJ^`Dy!>x zPjcenbu|1*58;|D-6h*j4To0i$g}gyW<hS|psC{QrdLL_^MBjBfi`CmUxh5V1qckW zMHHipKF`UgOMf|La4jyHRUH(Ech~PSzCG*H80I=3z=cW0Jvcn-%v?W+QG)Lr#vKrp z==Efk9lM}V@g<voq2XX1q0&l2)YP9yNLFm)bUYcf=(`~z=qP6jTwb0zApIW0eem{? zh0}zuz@poVgUXy3Y?Njz3a0Tw)uiJkgLiRHlL1C#bE#B=!J*hn<^;C%9&hBtv2P^X z<bw}XF$b^$iG37f^r{#?l1mlgOoUoqC3+?E&nNZz&;@x8#4YyV=eL3k`x~+mBi(He za5+nfK|d5IW9$iFOL8^Q`of&j)jimgdecjWI2m4H0y4yExdL#DM);tVCP;)mVpanY z{a2%L>2fgG81qw3b^jEU4{i%VnHyQ;t|AK@;`8HYYR<@I@J)p6H||clN~_!1QHExv zi#WXE!Fi+7@%pq=rpJMi!)Qyd#buHqjI>TnPi+_N7k25@Nwv?X)^@a}p9)Ynln=Yp zU!dxQ3v6Z@Xz+&IobY!_#Qk<}$>MAmdo52R1;hc@48!D@*Gsu#YwL8CU<=-*z_yn2 zsA{q{^YtSkz<xV8pZ?N@?vSkZsYzgnfh=0!L_WUb`l@Wn6k0T>&%4bs9kv%5JkR<^ zXykBZcm0~lJ8}7D1(Ag%(Br1Cojl&u;icv*va8(hadmm?^C@f`q1wQ8Yi!+pYS$-) zW%Khrw?LZ1Or8jR&~^r<i^YGg;yK@plzJ2N?w&c}xv@(4T5_W(I;I;*2rCHd)tXz~ z{%(nKUV1>M^Rq`9>Zfnu6N<q3KSAcSN36!+-~D5~(5JU3Ve<ybR|7}^Kc2=_)D!~` z0BkH;XZb3G>r~9iE~s7;U+}k#lc^R(h*G<rHGZ1-t;f@siVe5!UAC4uK$cpM{vAJl z+M3!1M-B&(9TbCYz)pCzg!Mu)LscAfkHw1#+@4W3iqGW<JmnM=&6sZH+nwGQxBxNp zDe#GkjJK(^eC_V5&^Q{0QEmKC3e*z(==b6OMh5<eGJMQ6P6!>)=ljTKz-6sOQm2^% z!OF>faw=8rj(NBveM7Mg$MMhMa$4E9N(KFlMMd1<IHIx^O7hU{AB#GYFR1>c^a(XH zebVBvgY4GG*VoBFCeATAX?@U{$^V9y{EsC6PxA8rx7PrcKo)<*|BUiX68HNCPeoBv Kp<K=~?7skw=0+<3 literal 0 HcmV?d00001 diff --git a/platform/docs/docs/platform/services/customization-service/sampleCustomizations.tsx b/platform/docs/docs/platform/services/customization-service/sampleCustomizations.tsx index 723f3b46bf..941a67d562 100644 --- a/platform/docs/docs/platform/services/customization-service/sampleCustomizations.tsx +++ b/platform/docs/docs/platform/services/customization-service/sampleCustomizations.tsx @@ -14,6 +14,7 @@ import segDisplayEditingTrue from '../../../assets/img/segDisplayEditingTrue.png import segDisplayEditingFalse from '../../../assets/img/segDisplayEditingFalse.png'; import thumbnailMenuItemsImage from '../../../assets/img/thumbnailMenuItemsImage.png'; import studyMenuItemsImage from '../../../assets/img/studyMenuItemsImage.png'; +import windowLevelActionMenu from '../../../assets/img/windowLevelActionMenu.png'; export const viewportOverlayCustomizations = [ { @@ -219,6 +220,26 @@ window.config = { default: 'The CinePlayer component in the UI', configuration: null, }, + { + id: 'cornerstone.windowLevelActionMenu', + description: 'Window level action menu for the cornerstone viewport.', + image: windowLevelActionMenu, + default: null, + configuration: ` + window.config = { + // rest of window config + customizationService: [ + { + 'cornerstone.windowLevelActionMenu': { + $set: { + content:CustomizedComponent + }, + }, + }, + ], + }; + `, + }, { id: 'cornerstone.windowLevelPresets', description: 'Window level presets for the cornerstone viewport.', From 86a4d8f30a772b7455806f451eb6d68d05c2dec6 Mon Sep 17 00:00:00 2001 From: Devu Jayalekshmi <devu.jayalekshmi@trenser.com> Date: Tue, 28 Jan 2025 11:35:37 +0530 Subject: [PATCH 3/3] Window level action menu customization --- .../getWindowLevelActionMenu.tsx | 11 +++-------- .../windowLevelActionMenuCustomization.ts | 5 +++++ extensions/cornerstone/src/getCustomizationModule.tsx | 2 ++ .../customization-service/sampleCustomizations.tsx | 4 +--- 4 files changed, 11 insertions(+), 11 deletions(-) create mode 100644 extensions/cornerstone/src/customizations/windowLevelActionMenuCustomization.ts diff --git a/extensions/cornerstone/src/components/WindowLevelActionMenu/getWindowLevelActionMenu.tsx b/extensions/cornerstone/src/components/WindowLevelActionMenu/getWindowLevelActionMenu.tsx index 746c441b28..ebd35e8964 100644 --- a/extensions/cornerstone/src/components/WindowLevelActionMenu/getWindowLevelActionMenu.tsx +++ b/extensions/cornerstone/src/components/WindowLevelActionMenu/getWindowLevelActionMenu.tsx @@ -1,5 +1,5 @@ import React, { ReactNode } from 'react'; -import { nonWLModalities, WindowLevelActionMenu } from './WindowLevelActionMenu'; +import { nonWLModalities } from './WindowLevelActionMenu'; export function getWindowLevelActionMenu({ viewportId, @@ -20,14 +20,9 @@ export function getWindowLevelActionMenu({ const colorbarProperties = customizationService.getCustomization('cornerstone.colorbar'); const { volumeRenderingPresets, volumeRenderingQualityRange } = customizationService.getCustomization('cornerstone.3dVolumeRendering'); - const windowLevelActionMenu = customizationService.getCustomization( + const WindowLevelActionMenu = customizationService.getCustomization( 'cornerstone.windowLevelActionMenu' ); - const MenuComponent = - windowLevelActionMenu && windowLevelActionMenu.content - ? windowLevelActionMenu.content - : WindowLevelActionMenu; - const displaySetPresets = displaySets .filter(displaySet => presets[displaySet.Modality]) .map(displaySet => { @@ -43,7 +38,7 @@ export function getWindowLevelActionMenu({ } return ( - <MenuComponent + <WindowLevelActionMenu viewportId={viewportId} element={element} presets={displaySetPresets} diff --git a/extensions/cornerstone/src/customizations/windowLevelActionMenuCustomization.ts b/extensions/cornerstone/src/customizations/windowLevelActionMenuCustomization.ts new file mode 100644 index 0000000000..ccbcca53b4 --- /dev/null +++ b/extensions/cornerstone/src/customizations/windowLevelActionMenuCustomization.ts @@ -0,0 +1,5 @@ +import { WindowLevelActionMenu } from '../components/WindowLevelActionMenu/WindowLevelActionMenu'; + +export default { + 'cornerstone.windowLevelActionMenu': WindowLevelActionMenu, +}; diff --git a/extensions/cornerstone/src/getCustomizationModule.tsx b/extensions/cornerstone/src/getCustomizationModule.tsx index 91463bc9f3..3e2a30d3a8 100644 --- a/extensions/cornerstone/src/getCustomizationModule.tsx +++ b/extensions/cornerstone/src/getCustomizationModule.tsx @@ -8,6 +8,7 @@ import volumeRenderingCustomization from './customizations/volumeRenderingCustom import colorbarCustomization from './customizations/colorbarCustomization'; import windowLevelPresetsCustomization from './customizations/windowLevelPresetsCustomization'; import miscCustomization from './customizations/miscCustomization'; +import windowLevelActionMenuCustomization from './customizations/windowLevelActionMenuCustomization'; function getCustomizationModule({ commandsManager, servicesManager }) { return [ @@ -24,6 +25,7 @@ function getCustomizationModule({ commandsManager, servicesManager }) { ...colorbarCustomization, ...windowLevelPresetsCustomization, ...miscCustomization, + ...windowLevelActionMenuCustomization, }, }, ]; diff --git a/platform/docs/docs/platform/services/customization-service/sampleCustomizations.tsx b/platform/docs/docs/platform/services/customization-service/sampleCustomizations.tsx index 941a67d562..92b9db8492 100644 --- a/platform/docs/docs/platform/services/customization-service/sampleCustomizations.tsx +++ b/platform/docs/docs/platform/services/customization-service/sampleCustomizations.tsx @@ -231,9 +231,7 @@ window.config = { customizationService: [ { 'cornerstone.windowLevelActionMenu': { - $set: { - content:CustomizedComponent - }, + $set: CustomizedComponent, }, }, ],