From 45e9b2ffb35cd0a8870d9f72599a671eaa077eef Mon Sep 17 00:00:00 2001 From: Luciana Corteggiano Date: Wed, 2 Oct 2024 12:13:28 -0600 Subject: [PATCH] chore(alarms): clean up gauge and KPI states --- .../kpi-default-settings-chromium-darwin.png | Bin 21095 -> 21110 bytes .../kpi-default-settings-chromium-linux.png | Bin 21095 -> 21110 bytes .../alarm-state/alarm-state-text.tsx | 13 ++ .../gauge/converters/convertSeries.ts | 2 +- .../src/components/gauge/gauge.tsx | 4 +- .../src/components/gauge/gaugeBase.tsx | 41 ++-- .../src/components/gauge/gaugeText.tsx | 45 ++-- .../src/components/gauge/types.ts | 2 + .../src/components/kpi/kpi.tsx | 4 +- .../src/components/kpi/kpiBase.tsx | 156 +++++-------- .../src/components/kpi/kpiTextFragments.tsx | 216 ++++++++++++++++++ .../src/components/kpi/tests/kpi.spec.tsx | 2 +- .../src/components/kpi/tests/kpiBase.spec.tsx | 4 +- .../src/components/kpi/types.ts | 2 + 14 files changed, 353 insertions(+), 138 deletions(-) create mode 100644 packages/react-components/src/components/kpi/kpiTextFragments.tsx diff --git a/packages/react-components/e2e/tests/kpi/kpi.spec.ts-snapshots/kpi-default-settings-chromium-darwin.png b/packages/react-components/e2e/tests/kpi/kpi.spec.ts-snapshots/kpi-default-settings-chromium-darwin.png index d27a66ba5b2795d123b78536d77904a2387e436b..47473ef9e0169c9599ec048ddce11b5e3b2c5c5c 100644 GIT binary patch literal 21110 zcmeFZWmFx}wk2FZa0~7(!GZ?&;1b+|6C8rO95hHESO}2d8r*{GK>`E`?(XjHbaC%} zE#n*gjnVzy>p$I$JsnYzE=p@Ta`jBxBxsBo0&3L{lX;uH1ylJzqE zcjAYr%HP1IO^Mta1fQvb${uo`7r%Lw|!!g;8%xLVG}?Ne!c4qkOGfs3E}Xuu(0Bc(R7|a4&pEdkFb!t|Brkq zkd1hLa)KpHi7?LRCmh?sKvC*$d3j$!U!VUjjs{%nSf z?kSy5sR7`D?uG7K`gn2bnqWyAM4zc5S!HGI?UaNB___$Ub%--$wvjni*oK;iN9mfQ zg^i{)8R_#lhTl_4`Jq~Pc({DYI6{g2qJ#zp6-Dp`$y1Q!1cFYLA1Y_nFO6Ag`goK5 z-xL7AWvLh`j`h2HoG^ zztaCqs2ucm`EU~jy0cW+{PzUM(($OBhEL#|RLbPvgh{q*JGr?22783mw>m16q+|yQ zTGc2TkPP`EMIt>{t0`i}!a^|kGoKkmNa|n)^b-%6kIC?sk?B@C98yg9TTe+`_e1^w z@eKbc@DnPL$B@Q;+UzI3ninOpvH9B*N2t>R-tBDzLc*swVqsO;>C2x22TaZb3PEZoYzkOkcl#-PkKfTzoqu z(z(2%Ng$11R>8FQ`O@HawY{?k<*tH79j18lfde0IMW<>F?^y{rZa=w#U1SJQ|9fO6Oepg0?$HeQx zTo*@O%<@U(k=_{rt4ooqewYHa4(OCy1Ei{Da$^?D89DjGl?Jw{!mR`+ahNYDZUD=e zBdH$u(iP1S9DMxEUDo*U$F*_n3h#5GP&>gZYA!CEcPZmxg@wq`8A8lPN9$IYGkX~% z+y%iHc6y8-pO~ny;6i=jO-*Uu*lQ>+w%#4VZI4(I+AlT4gre_Ka&x0Y@5(#Icepkn zN@@Ht3fg7utsjZN-z8{lY~=I2<_krq$f=0ACSc>R=)fGFnhO5>nIkAjf@8hkq0+TW zcX}=Gf_3neo1x0KG@-=VeZDG zpUPn}+xV5UKYbE`3xH)isIi|x<1W^2U!i$b>2l?_zu-?;W1}HejQ>uP-2drN)M@kD zP+!R9B@p{Mo{ILouy2mwLZtB25ckSw+1Lmli2ace;yBnz4d~S!AppLjC$`+$ZzVO} zfV1Z4l^+~%z2J|>q-7T#5}8CpN0%pQYGp0=ZPtFi84lRy^~9xB6Lj6@0f3kI_*6$Y zIA^2}h%rGS23~~U`AvUM@h9z%o*7=WH$`jp4+V4lYmh;V5Wa6c$NKQd_c zPKd2yGhKt7^5=bI2E?A)bHGS@lQa{2^m)8knIn?Ne)jpO&L4>{R{60RwPLFgK<3L3 z7ZCuBA|3I+2`{nm-pP;&rtx@@3bkKQce~(H_ zOOIdQsy)Q|ee;Y9%th6~38F<|fwj{F+qbr!dPU6yT@U2z2#NqZ7uQ4P1r8Qg3o1Bp zxw&Q<#k(O=(1DKi&r2Qcr2=J!(9d_6)m0;g)QesPJv|b^ zy0Z419`R#GwpXG}^g%BI(8LDLbO45Pe9Vv*<$p%^DP)VZt~L>Wzke2w58f?NkUSCp+=wjO_h_(gzn$r#ui@Px+{d(vr<0HE9X;@22sq%RgyP$ zGw<`9Uin|W28;{3A5SjnyRhIZe zswia=Tp7V^zVrpt_Dl(b$284zI7*^_-^xiFj++n@GdV_hGNEY_Mp4Gj%_ z8xtd=5(_J2dfGFg`(QFp`0}GsSm?zbCEq%uQpODd2glGzod>U11~)T)ws^~|tfJyu zH8sx3aziwTu<%L`!`r$+G5|otq_|tYy3@Vi`&i$|N5#Q`JTo(M?bG9}^In(Xf_WdJ zw$Z|HcxAj4=nnu3P41pUG71!tWodIc@Ai~e-nSbp+9<)iE))d zAK$A|s7o{Ne@%#Z^-+3`=k>V3C?XCX9-L)N^6=+bWZ4nG{!C5XPFMjRg}*Ru zdp^Sc0`s5pp`y$J{CcCu6IIy@eHqsQm)yL(&dF}#DB?*esi9Lk^1aPcL8N+bIMor3 z*j}@W+Fz1+5qK*3?&#Y)JCI}V2pn?q&+3+gG(yzaz;n_1oBT#{=9fEZSa|q0P3~ks zLSkYlUH{ao$CIWfHm;g+27U%lH_DUI^5&-6zNf$465LY8=E~ti7Wod4{5*fEv;ohm0a7lKyk5N)u zx~L~ybbYmoS8ab3^*eW+`tC@>*d4_{= z9>l%lI2?Hs>7Z26<{ROds7?Z!9z21`y0v_K!ZKGkS7U1v47<`*Om#EiuFqe-NZ+wO ze0v+NVMKv&Gg#6hFDp5x1bInDc9uc(JVd7XmvV>Rjg8m7vZAEI73hp?5+|IS96^T$ z(hrRp4CjJwo3MwXp1IWzaXI1l~`AC>4c%%`E^dW+vEeu z95rqI!P&d2T~}ikl#g8sH^1^i_%9D;!`BI@WFs)U7t=_LP3-B7C`brm7{@FhExVtG zaJuldu^cV-`SvVK%%T48zC38QdE`&9%Oe8dIGgUQddbh}BiEOW^DH>jcARcwNmSUK zG5M+$3sf6sG>ndp21P}2C%-9+VT|u?o1WfonNUyt{(bA(rC%w8=Sj+CILp9RmKGcQ z=lb!9$nVK5@ofeOL#aSuy!QMIM_<^W>U4@ygdgZ>b@ujVwOwoof7{}vqo-$NS!#q3 z5U?2~u#u1ueHa{|n9z!0a^Ihg87N`7`IV3d@9nx*FkTLJ0TfFgPEM{$$d+Lg1vs#> zI0dhb-|KuQXm}i1GtR5MU$H!T^v6xq<8jbko+-rCjA0sl@_BF4V4s#eJfix@nO|1M zx;t4|IPAW%iubQmd`rGF-l+3iGeYTCgFxPt7|CQEtmYM?^e40k!K}~QugqSgc;3?z z5)u8VVADfD-<=ATgTa}Un#_qvsXJs~X=-Y~pXGgOB;j59SX{UU7C`GDHKK}+4(f`J z8v-FbN91WH>06`NfY6_-QfU1(0ilRDY_0uVls58bl)ZCTH;((r!0%ix0%+*yOA5k8 zAd*(osjaDGtu8N(it2EdTu-s%b|VF=!#kB-*hEG8&MlfACf^AoBV|lcrIgHZ-Ybli zhQuMiRZ)^h$5>q+9bMbu z?Cssy9U~zrnTss1**5EcjP&!4Y0*6kl9KqH&)zlgfeyP%bakTGyWM|;Yf+zBj)Z^R3cbpmsO3>6Fh5aj`a!&n$HS=#R2In)5D*-loH~9x<($MHU7BtmF*qbKXT?*(4s*lq`AmMEh(gSsxJ{4;?;5;B<+O%?>gqRn zewY;Sj5P@^Zuo{VOtW=%c@@5En`A;h_+{g4wCjxa3$4Y&la&va#G)7=U#C~mYm--2 zmZ>w8z$JGxHJZeD6|*0tO*cec>zkt;Gx$f4go%fhTy)4FcUT4_qL)HlJThUw3e@#Z z>{qFGVFI4flG9lC{cC}hm7G^7dnr8Dz?P6@$1ihE#nk;skW}*8&CGn~n<4lm zGzUf|y(WF}#_u1wnpt~id_lwxD-)gel}!OSKN^F3rJUB&tG*RE@4kNA4gdrMuRO1| zzd+sZUmI=lx`?nEHH0R010~KX-{{mus?EV zXiWQ$HHY+?{Jgx7AAaiWj?+`8wWV`cl(gqWjc(SMKNLd^d@vX$?$4CRaOtOP|25SA z9VF10s~kTpy`oZpaEUUpu)x-k)JmIae3754br{3Gb9Yd?&0#Gfr$N=G&ChLq&+|s| zL+UAA-{J#Q11VH$XDJ_%r|g2wG3{rxL|#fpM#k`o#=|^ic1+UtP}Hc>LHztuLa@Yp zQqg7{JfVmu`dQu_(Vju*Wb+gk{lwY3%QDrLW#oC1soS+Ps)q&dr)E5 zvjhZ;S+chMQiL}%Gh_JTzkh9AuUP^Iiev09mkuaQ0#2Bg8v;@S6wwSC&v(>X8 zpTR&hvJ$y;;#4`Fc@njRLzd~?(DB3{lX{Oe((H_d_G}{yla4D90602Kdxok&TbybB zveqCxSm0m*Qa)E)kctG9m6iF<@9%#^yS=yl^5jn25oDifc@>Rv_u5Jnon*Xy^P=B* z7o{bHtLF-THtG5H@dS2foq}&`Hbf}|orp#M-onfE_OkPGNxc1l&B?_zQmWwNE9{Q4 zy1MGLKFtWCKRk8+RCs{Tahni-;6$D93@pqbWatR+6NUlO@q}`ueT8XQ?H;o<#0dpRQD^-&ju)u7!eKfN++(?t9c3!2c zn_H#d#fO2X2@0h{ZpVvR^n^?Gkt(6tI&0*iBJ`13^`j5AV9?Y|5x=LVwCSD2C@7Q= zUX8kf)UL~e3C7R%HUdG12s6|#eTj{~@OQ{*aY%Nd?5?e}0lk1G`# zsi+`zLwLzRH~|FwtBq*da)Tmv*ua1y(AK2@gR-_mB$%lUWs4v?ilHl3tLa zLkGR`Z4Q7EBx^Ro`lN7HtbgD?w=nG9cpFrh9s)FN6tw^~CEp zAX{zyP^bo-*yG7DNJ(T+@5Tp?_p;6T{7zX~34dOPH5o1_ubaNUGZkU-@dAm#PFFMm z5nhypPu;TDwJ_TLQ52{(zdjN?Y})xVI4CXo=iPj(J25yRgPwkIca`Zj@|Q1 zA(nJR7uOS?c~5yuMZo}ikFy~N7q)BTKhBUaV>EQ1dPXOZP$Og6o_tPFE-8f6)@{K@ zcwVWxN7wP~8}9uf6lE#uPCiQ*ls;^EKelg4-1W}2W?Z9#(#02P^j&W?EDSr5aaJ#h&MA)uaB_-630o(DTPI`tr7_P%(+ zz5?&ftGT3vWgs1j)QPb5sXTwEBQEX-vInoW7X>IcJ+t@qMty9+aDpVKL;=rrhXYC6 zYqF*Eo?BN>Z{<&*-H}FlILB$z(=rw)EQetn=w=yZkn2?0SE*%C{QT0{3Mb=uHc9rZ zf`0xix4l%?BiQ;D9L&7PSy(L#3wr$f+80YvPx96aMcgUuX2uj&wzkD@v_KpqtKb=0 zkttT+)bOD#c7!R0*P`PMEghZdq_R5REFHF7)*bUlgVN-QSda@N);)D~&Jmc{+D5@h zB*c{Gq7C==c4!Q*q#K zMrPv{tiB@nASne|94r7L(UM_uGO}O@VzlvetRK9c7A+hc-1)%-dfgESnVJj7ELZ1m z6rMF?wui8)jVlrNImZmDi?Ezv63aA1C0ssK2@Mzm}I8$XyEGJI5 z-~>5REC0g*7WB%MAv-?bby|I9Us$kG#r^p4d1CKTqv)nMuJa`^F#`A`@~V=+5la?( z4Wj@8^TVJn!m9%$FUsB;zcHRSA5{>^4>vT3_jbnEg}lDHG%#^<;}uUmeE#`vmq2ha zm(h<8atW(+Uxlirm3Zn7fk4o=@%y(>PqwJma-_*aq&_0RYriP&dyfi; zIXiPs+D`{ryd(K`56|?oyLmCsFwXS3sc{m$#K#R^Mub7~dl>*};xUXaJM>{F`oiI17G%8%7B=j|!(#bkz1tnRQ1foDL*er}4bT?E?+3O9hCMaBgd$$)GmEGb zunl*W33^@=+DtgW+ulVKsN}&^*VI%xMTwG&VuZ$pFsrGnYl@U*+YAVbKiKVo^T*J3 z(oP(@xPZsn$zwMP@bFAt+uo5U#H2i{2C|@lpy z3sT_4v8=KG)p`C`K-zzFJpb-y`hQD6AZXZLTch!orDig}zrX(!J>|MVoVA9fy5n*i znYGKh61+iTK2+f;30*#hbOStvpYJTnGM!kPqFh^ZVc@i=v0_ z)pP8!hREJmAxZTq$%=KP3(E?5zTAnSpy6Ud`ISrSmL#RIEBEC~rut8`^Z9w>`7Aia zCfC5c#yW|(aXyW)IIo*N)%%bp97>7pt~zzJ-VX-mQUurP!7D^ zYb*9fiQ?uw{>*)xs|y~Vk+ViCY=LtvEy;YHKz;VwhOO_;J0l4HKH}G+@Cv6lZU^tf z=ksks6H}Z7jY6T|1U#~+?-YJ*Ykdh=+qoZ0oF{LHr4=SiM zJ^9m*$|3p~Ua~bbVKD1szPwwcEAx5%0iQZNFp^8{?c0~t%LEB^l~&^~L&?cyBg4h! zd)4Ll(qw!KEB3!R@K1GVWvu8Qc*{n9VR=8oq;dmc$~yl}C?x7ms;kD>ce#6EcqyJ+ zq~?LZymM^wDTb60Q@y)XPXemTEnBP^Ty3LirKeZi@HTstjhP;ykk^6wq8mMTu|6<2 zM+OV(%4ldmAO4G3tF6FX!7WMW!z~8J@wEvP3-NeZZ5)SMhHzJv+a6Y}yD*SBD2iyZ z{vHN6?ppjYpE#{Grqn~b!t z&<70ij_c1k3rOqw&kM4xwfVQY3v8mj5Qp!0u$AbrkU*&qvb68xg$};d)fyv`Ue` z=L)tCdW)b$6WW<;gGb4X+8*iGQ^mcvUM{|9r)WE=;m!767n#F_-AQ>4W;=dD1V6Dn zO5{y_*@iG^T2`z+JYexSQku!h4ZAr9ouvy`7}cO?nRd4oc)5f!Q{!3BO}77a@{|OOZy&P(F!^Fup$3E?3zhzA$C0&u~vJ_U0soX6cs;7b%vf^Sg&B6 za;dYi8Hw*#uA$7?rhIR+9dY<0FW=GMpR{o>X(u9)u%Te0ktJk^@Ip+%h$31dtPOHX z>qT*Pdtt1bBQTnieY`qqZf0rLR^;WPp_}Q6tkg4)w(;N_o0cA3@|#vRElp)-3f_^B z9k5m%i8VKG&y{xjMk1<|XF4da$a1o0cG>$12>7%YD8H9p`W_WAlmUMGHF>-&x`ZNqf;g)@dgGSaRx*y( zRsg8-dsy~fN6KYV+@#H3m9w3aZZPdJzPY{nO2eG8ecwZ*as5X!~4t)EGiG>{yMWK!TWdOjdSv7}jL!GKjm8 zjtm=MSvqYWsMu z$>+23qwDIPLW;5ruH+J~vg?=>cs(=;#&8bQ9}3-2~BGf66m6TyCw8(BCEtkSLAYy z6;)qnK98aZX|6Iq{>PT6eUWEz9u{vq5DSwFC~Yux-j9sP z&O<3;WsQ%HFpE?vu?cmInEUwt+UXOEuD&tFS)&^Oc=RZV z?SIB$cNhk^pJwmD)&DN!Me5wpkoM{M=Hq_TnVI^V4J5+)MoKz9Nk8{@NI%eGWixHf zk%5rGK&F3Np{Bh0n8X754B}K*qoWEwf%1vr!6G`qUSL3StC_IH^)k*A!ELuK*Hngf ze=bbB$-Uiodd}$UtxED@OUQayOe{GLoN!a>aV!=|3J$iR0y0KuRv04FLnB~qvI5SC z>+;>O`^p#3eRIwO$7CuGb+n^1%kCqZga>bGX(AWqo1I0-_wj;gdFX(|Xig7%sp{GT zX)eG9SJqMQZ2n!VJUaZZ9_oI)=N1O`(L7e`(YM%_;7w(Z26@Rg`a_3PvhgqfWmPfO zEhPphcMgTk@_(X;N>ghVLcaQREcwF$uc~n%#`I(Yfalp$`zWhxubP+w>d%bvpw`mY zACyzuYD6C5(k?A9CM76Db6_-(V>W8A^AmA`0f>&4o<*b^V>!&Yrt zYG(C#rTDuzpm>;vGpII;>hKF$e#O!#?dGrv5TJRcEPDOWN`8M#qn05OQk#WEInoi8 zl|e%zVpwQoaum;WB;^D})GBqh7srMiFZ+n-W@kSy9w%5rTHz=tGO#cFw|7zAJ9F+Q zu>_v%Vfs>gKaJWiO3H>|40Cda^yJ9U%}#=N-|F={?J_KZMSp{q_#Wf!!|1laVASTB zf}f)`wbD6}TU7mtD{t56Wn&_=JmkLh?68FvHGRUAKd`JY>+J=AUI{ z!HbJUCMsy6KGo;vGqL!b`#uSYi|eFX2J<(#5c&wl)I2BbkdNAPj(0U-X*XGQnyg7a&fBiW zZ0rF*{@`Pz_v@y%@e$MwTkfta(ZRP`TKItR{Wl^)0dLsG%R6jyrf~$I`her5kuO)_ z@0y0D1^@u{zvG9Ps^xV}%usV7)f^{1Qc*XhRy)-scmmej!fJu(4*>DCb}q!U*j93Rvi`?F)_FbB9-~> zD)8D@j7`YjnQU(AbywqS!Ai%S-6_-U)#VX&tCRuotMGE@ooXvYZnxFzjJM&4Ad<{AC>HC`gn%_#oi+Cbx!#pt6QsDqx2r3T=EPO#HCw(Z8o4zDex zZ9YCq8U`dHaq(d%$AGiJv|+bi{^A^?Jo&*|WsMA+H+J3ngmcQiP=7)h=gW9Y@zvqw+}8RNBc6W$)rTE93%rC3@M zloWH+n{?t92G61^W6>E@<|qa#CPWlm_JemqmTgo&2jd_+6MCtLMl zc6eeU#G@{{K)Z?F{Xh^6(7Bu&nyzu;2h~y&3yX+W&~?~%kpif!HhLTie-X$S7t41q z&C1UYGlBEz>^%4z?5c1(i?2xnDliC9KZ5B-{_?BSD!hYNTzWxbhl*+z8nSW!(HhyR zrS}_l@7|4^Zqe4ji4jC~nUqCB0`6w$a6|vwuLDTi2zC#YV3H(*79kMn3=gb zjj%A;uc^8N2J3~P4w~iN^~~YTAC?&J<&5UCZ9u*GZzczf!csqKFNnrkASBYYwSSN> zy2lJ#Vu^^5g)uSz{Hls`Kcj!!g{cLMv2)jPOP zYWaCB4f^@TIYQD--BFLQ61P_xR`K$AKmZoFt|s?KJyp1#EIRtq^X3$9z@P|U@MoY# zL`W6n_&|1pOGr7$d2skoFjK&{Z{yfgX-11vS-k3a_@p~_A(SsXYsZF`Meq=87@v?f#&&U{(LGyk{N63 z;bIjSrMcR6uO5u;#s=}kbd2V7NiryprJBcKUI%7ZODd}U0wiJZS+@9xgiH~n5hfm+=057$lO z9bG+qXHzrAp*?H88{1QD%!=wD{7?t=%Uc#wQ)!G4(1Z-AA7 zz5IU*oj=%o5-Pf?RU)>UB_S)~gC812(rMj~A2Ro*et$M(VB2atkvZ&lXIPx?F6b6! z9JssG^b$QeVMDp^P72gO0oODVx(SyT@I;B=>B#RVqfL7 zr}RCU5PBiRqHQUoUr!pq7IxkhrRPy;b|JmJyG<#?iNalk=ZD}hz6CezGR$zkJ&#eE z!rLCApgq!Xv^Cvg4WGtqQfe5c zZv?J!3_*W|_Bt@6hEIM+gvRF3fBrX$0|(iXk2RbQQv#?}Zngp(^=fC7OM*-TrS0%Uk1n}RO1zJ3uB7*Fbld*kYe8ch6%! zq=&E=agB2q&qR-&EV4b-u3~DS&AKuBYb$Cc7)YgbF{fi7>)yj1_PMgt7S(Y(q>JH+VJfT$We zI4vq#Z*NCJKHymwY3pie6FJ!$TwBaNiX+y&KVbVP=q}c9vSzHanA3JK!^jve;`s6k znh~`BX2Z)Zdyg@CdO3%5vwqzvC#9sOy zhnvUYQ*E4T+yf}oIF>4l(#|tn&lM&MU?kY*LkWuxu|*ibegh8-Plk?N9#jzWW5>$I zR`~FCK<}|*L~mXw?@q~Fhhy=t$Sa^G=E!tf&+&vZGr74R3V+&sw_DuwMXmSOd-V-= zns_Q^D)GYdvOGGb!4&mv9XyL`(CunQL+xIe3WZO-20*oZ+Syp6?6bX zcFne%{XV<^%vwDINrJ;xHN2ElnT)V_L(wEQBa==q8u9TRGfM8y5kYSt7Xvz2h}qE9SPB1SBTnHlGAQoeB1sFW2j6S4dceFu4iVZf9M zy^GIhwELiDaFa-6zr?tRPxEoXd!Cq|7*v~J8m?&Ldt3DtN#fRv@H5C3zME4y8I6y#g#SKS!e}%Iii>OStDgO{A7|^-JqNV^q2Mxzo=|!p z`Gr&oV;dMuyIYl?ti4Q-2JK$wBY%8vivC<6l=WSyD4=SiiB6W{X6z98U+TA8=8LEZ z7qJ&VeC{|c-kU;ArJ?U1_+7jgaiz(1xBi#N=bv$XpL_EXE8$>9!h|182sSua+*we1 zRnbxMj&i5lZo+9CwIwBg3rB)E;AqU$nDKUB)WqJ44BHzI+_B z5K6zO8s(jpoXCloPqE+Z3x^n5EuBy6bO{(Pp~%GdP%%Y;t4Xpn8p*ucE5(msZ%2Bx z%Tf~+7VHuoz<@)<75FKsj2SI~*jaM=;y@SVwXD=@-UgC8XNx9_BvHm6(4Fpv^)J3tM*D^vUgJeSAZ{Z&8W=Zq=d{%uQ zq&?4}KjbYH`z}wlb|wM3G8y>yauJq;5hw(pj2JOT-}*!1C+JXqe)M$gw(YAi)W+}i z^s+$kdjt{PVnZ;#Y5WWRBpJd{rh%OBKme!fAkz1hTSa6OSE?Em4(RF&8-%BKGFSm5*>sj}ZG z?a)v%|34-|UiO+#UE9F;3lIdDcAhR}<|nx@`J6=y^Z8f_THGmxhJ+B+9`REyZ5~&u zvvYDv?rpyN)~(lI&oybk7-;J6Ag%96dF$m7auquw>klE=X6sQz06s0Wgui3P|FEm< z0t4vk>Vk{y+agx9#1q9)ARTl(*|sMYgH%PF_wRjj<;utG>Vo3 zcewl+FTWoNdwy!C=`o33GHXU^`Ru0P*Z!NrV%53Lt=eYsh08sCj>QF&EE+UYK7E73 zZ}!P?ZxEs{)QDIqJ~dKt_{wUbRP6%63*?X3d_{7gm@A{QTje3S%>UO}ak@OfYJ zO->3qPVgS&mcV;#NM8<~Uf#MMy-2&q;fDbMAWj|IeJ~2S zeXM*Q;p7sD(+S%#Eg!D6wKbpXIW2t@5i%&PXq2sgR_$E$9h0MuTb?a^I8G5DS1ZKb z&`%qwoyf0u=B^kP2*W%??VO7DN#V5)0Mi8A5uojL<&4zigPb;76Plh*{)~XZ>mb$p zDHJ+*dkaiHG?0lZ5ySc1ae~)=K4qNhkkjqFlou2P%2`rX(%_c1*X~b}@FSe;Viy;- zAkdLmOa#Znw&kwKRZHULCg1|am$lHO!CBs}FiSaPDkowZC&IElidmEC_+w0KFx(d* zJc+)uoF34U4OT9gJ+g)*m$)aPTqv(n+5^E*ddM@|^T8zRYFk`DnP>ecs|2Qs&`tJK zQ4>gf5dhhD?<8CmSwK@gZg-hxOGL*d0bE&*SC2@=ML`HBo{j0>Zadj`3T)L%VZR(i zs&myKxdo2O6rl6(<9scNp_^XcmCMtLY3@%(2NH6ukn!p_)rUL)whI9`3o}hOLUY&6 zUW9aTABxa#qdSOnKspdP%n-!Xb?(o?rBa`f=vJiNED0%7l&<1l? z|Fkt0mM31pH3bJ~Rd*iDo|tVQdv~-XUP?Ci?GShZR}f@TQGLcT^WbB4#(>YX${g6= zhNcq1bp|#zgUNp+$Rgq%+0G`v;D%-;tj$D0#OtQZEa$FM22Hy>wV6VPNw?Jk$Kq)>=0Q(8$8RB3MtA(Hvsgz_nCQCW-a&9cP?pLvlVwXw3>6`ACDEPJz30~lLc!r_?G%-2J-sf^*ngc2w~d*?6f zDXmIz>cF!CEGD}Y-eIBC6P$s)iQx3osOG<5AJnO_GF+~G#_~I-ct@q=@qLCUdtZt* zw00?KYeP@zf7aNvS8KHotw+w*kc{|TJ%D?lz@2xWD_)?X<$^n%Wmi&yZY~aH zh^Fl4y9ZmshL@UbvmW%*$edQ3pH)uB*T?vYC5uP~WMrRYq}$utfOjMlok3m9&tfXM z2u88H18_7!a)kP`_QUpeVj=AYR=7?GxU-4ECh>Wd@6ljQu#h-jz|xvgar;xo zaWeNR7h$Il@u$MMIV^e?55kb!M--j;kQ!AyoDujNRc?LGcU{eq(!{KqbGv`QtiIYo zPDmeB*#gQwG3!hj?-%%Ro8MBLUvXRCuD3McrLP?=X+Uo@o0ZI;GTrU;v<3Ds$MUVt zO>s7+ii*8mQKy1txHgu?l|ScDO!d(n?feyO$sLJNQnB*<)aZ7YyG1Wt=ugHYZ*Py^ z)pb7gUA2>YSzE%aihH!aGUwuQ{|B+}6?CtzlVUXZ3cdK;ue=LE5tQI#mW)& zueV9El7;!+=Uzq>w2x)Kn;fS4{rx0L8_%Dw#^~1Pnbs6rzC9OOR8SyW=Z-!V5wjHM zKzC$Ub?;C-&Pl6tMTgGui_P)%DfCWB58+9-y)(4v#ty2rcI@bN&8yjabH*g(^tQoz zN1*cB)L>e>s_so;WDCwK#`_qyVy7*~w7C|UJ9?#}V<8{8&zJ9#OV%Rs8TlAh-`z>| zo%PhQG4%DR9d^GHs5~z3o2$&}yR$8D0kl8J$;lPoS0UR_@$=s#4-Q?QK+FZm3-8s( z_fkZhJgnxYM~K~yhINM+Ucc56&`cCLOrf$W zudVa;l=7nL@v<$;)}M0-Jy_ZRFb;QbXZI%r_2$%WMk+FqW$e|_;OnMS4ZZRQ5zSiZ zsPQb1RDmm!l5P=^WWhZzi8)vxzzAEr0`26avT)tC>#4JhCnyNE=DhRt$rc#^>P51c0Uo~(U8Z;y0p89XhbgUG?X{;@we8k=6p*>%&v;cW<21H{^6kEvdudRFUfQh6M@I$P9}aYwVqJS zB$>O*Us93>?Jf;%Uumy~RciFBW#M;r`i!84@Ph6Id|c{u@8AD2s$br}0Fo?EPU3u2Vufa_ zRdWnm%p#+;a$w+6TkwH-c74u@GOIVn0I0750p304hU*vrFs$+t{Hr-YDAxab{m&c$ z#{~L?CdNmrpDbFoHCwfiTe;p34H$Yb1rA6oKmq(v+olcgqxJjwYg1e?ulru0ZG(Gf z@tx{iZIOh{uk2a}&9=-JH7V?d4`Wlz-djBA)4x=yXhIdf+CMC}^lK;5dWC#q0MDMh z^hhH2)yVAAht``gmcv7gvlMA`m8a^9h}p*Xc0CV+D>_nFYjaIW-jH89UvX>J_I_n( z*Wv__U=EUhM z?b9?N9;pa5_zj#XpFGX|E8kvz{hEQG$Fh6B%Pep@sVBcjQmCHcf9MFsTTouCJ(zvC z=95#?9TJ)K8>)~Wf_F4^E`P)Y9MQezYLg!3MFr&TGDu$)|NZ&3S?E0pZ(^5?=4C{} zE}v=Ryu)d{zhX7U^hLGG>+}M}p4`Y^m1JyOQuZA-5`*eS4eEsIXoY{HOcbHF| zkY)>Y?Oh)OGRc=w@WD*)TryfI9~`Yy|H&xq9B`Sh$R?&zMu8q)@=a-?I&^S(q2FJmySYfQbh#fP6% zwB}=juIObrtJ!{1OTAA1REc_+wYuBx8C&kCT9^wehItVmueSIVS{&_->$XbH9ph`3 zZ?p|}HxpK`0A74pRIwJ9lW7jJA7`Q7{r z11~>2KmW`+AHd4M%{{T*{QvD^umHgRrR{&`bzorz^u6DYC|Z^S%LKK9$1)!q1pe8U zy75>5rMmyp%h^XWy~lBU-MEz0y(hD}!YQI5%VD0~JcNrpB-=a;b)DrjMWG=~DXEmX z^K=*{O>AqerZsJzYFE5oTX@(KK<3S~J~mRI;2 z^(G8uad~*Bch>Vz{9nIfWZbn?nqY1itn7=vz0rls3(Q0&r_fd5#qu$|9J_a?$&aah z$ZuI;s%F}UMJ#)4`0EZomiXLlHIBe-S0CNUiOon92Umv66S!?ooY6Qf^tP*-9a7Bk z3YzX%W|`V?b;z|krs>&e#tXk&Zz5WKyhlce6l9!H=)1-(&Kp9{e5C>>w<0agPsXS2 zH}TSnNvDc4YI;ZsGPMc&US@DLnsux?wijmp^af8W&YLOA| z03)8vs%|4KW|j8&VhD7uArm>A9oSPu>EOx30ON6~u@u)RjWQP_XDr3_T4ae@%!v<% z8PvY|p1$ME z{u3r_le5>Yjoc#VTfB0rsCC5=M2a$Vx%=}2lJ&x*w7xcn7gfPjd)MdXS@Z&f&Tl$; z$qP3v2qGkcKxY}cRoWv6yClqaZDwb}OiiJFlJ@UcgP73`wV85g+WO=tf(ZZVIx9Bc zZS785&VoAfXimqH`>8FBC{LdqsE>=g-vkDvHM;@E)pwvLBN>l``^Z6@MnDGenE~%; z+1oNk_F83MO3F!6m$B%UcTTBkhNhMPP)9C5Ul0U+{k9}+b_ii)8OO0qUXp;>=jq&@ zoB%*dqG_A3nRpj{*%VgRx-2>yyW1AuJJi;i<%|pIr6Jx#u2$q0-zar4R|YewBNHBq znbd-xe%?hCb@`efjgIUx*IvN@G5STfKtw~v84rCV$F>snTo3q}>%+?Y0}||JU$!N& zr=|)4GHxD5^sSFMlpfPHs25={k~&deZn*3He5vI0!LHtHWiaC`c$U@~-#lf?1{KC=(`zUgGDGAFQY z{qSI=T+0zqWbL?i%PfaTnZpPS6PLBMLz+CcVNeN=yk|N+G1;ni#q;{OyHjlPI$1IM zAzPtUz)jMX3nA5L(xJPK=&!AvL(( zCmjGpc=5V_Zxxg`786D(4)`5GlDL^Uz+f3GYjo+g`+5>j5C z%2xLC+4#gOv$uc@fNAXTFG7VB1)-Pfl$M@1%x6}7rAf>?z!JCB31uUh3j?y26+Xt6 z&5&b`MGISAMROaM?tkA;j&i0+Zm=;))L-nrDhgQbYYTgcopp`pqrlInETs>U2A`yj zGgRU3Syij}CukuL*C<(q57dXw<3B;+*msdzZB=i21oT$~I?a%Yzk2!nGTi1f_QfrJ z3Hz&UeiFZCw=nyQHCd_!E)E`_;P_KSP zE^{D<7{RfnF;)+i)(>PN+~00(9{8eI*$DG|JBFewcKCALW!WmUx4d?{JevXJ@P!2`!C@!W0L>? literal 21095 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 XV32=;R+&`@Q~(MIxa`lo5SRZ4uKU(8 diff --git a/packages/react-components/e2e/tests/kpi/kpi.spec.ts-snapshots/kpi-default-settings-chromium-linux.png b/packages/react-components/e2e/tests/kpi/kpi.spec.ts-snapshots/kpi-default-settings-chromium-linux.png index d27a66ba5b2795d123b78536d77904a2387e436b..47473ef9e0169c9599ec048ddce11b5e3b2c5c5c 100644 GIT binary patch literal 21110 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 literal 21095 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 XV32=;R+&`@Q~(MIxa`lo5SRZ4uKU(8 diff --git a/packages/react-components/src/components/alarm-state/alarm-state-text.tsx b/packages/react-components/src/components/alarm-state/alarm-state-text.tsx index e88eb4201..f0cc3de44 100644 --- a/packages/react-components/src/components/alarm-state/alarm-state-text.tsx +++ b/packages/react-components/src/components/alarm-state/alarm-state-text.tsx @@ -11,14 +11,20 @@ import { import './alarm-state-text.css'; import { PascalCaseStateName } from '../../hooks/useAlarms/transformers'; +import { AlarmDataStatus } from '../../hooks/useAlarms'; +import { Spinner } from '@cloudscape-design/components'; type AlarmStateTextOptions = { state?: PascalCaseStateName; + status?: AlarmDataStatus; + isLoading?: boolean; inheritFontColor?: boolean; }; export const AlarmStateText = ({ state, + status, + isLoading, inheritFontColor, }: AlarmStateTextOptions) => { let icon = null; @@ -30,6 +36,13 @@ export const AlarmStateText = ({ let borderBottom = '1px dashed '; + // checking if the gauge value is loading, so we dont show the alarm loading spinner + if (isLoading || !state) return null; + + if (status?.isLoading) { + return ; + } + switch (state) { case 'Active': icon = ( diff --git a/packages/react-components/src/components/gauge/converters/convertSeries.ts b/packages/react-components/src/components/gauge/converters/convertSeries.ts index e09cdfb14..5d7c745fd 100644 --- a/packages/react-components/src/components/gauge/converters/convertSeries.ts +++ b/packages/react-components/src/components/gauge/converters/convertSeries.ts @@ -30,7 +30,7 @@ export const convertSeries = ({ : null; const getFormatterValue = (value: number) => { - if (!value) return '-'; + if (!value) return undefined; return `{value|${getPreciseValue(value, significantDigits)}} ${ settings?.showUnit && unit ? '{unit| ' + unit + '}' : '' }`; diff --git a/packages/react-components/src/components/gauge/gauge.tsx b/packages/react-components/src/components/gauge/gauge.tsx index fa192959f..d4911b60b 100644 --- a/packages/react-components/src/components/gauge/gauge.tsx +++ b/packages/react-components/src/components/gauge/gauge.tsx @@ -85,8 +85,7 @@ export const Gauge = ({ const streamToUse = [propertyStream, alarmStream].find(Boolean) as DataStream; const name = streamToUse?.name; const unit = streamToUse?.unit; - const isLoading = - streamToUse?.isLoading || transformedAlarm?.status.isLoading || false; + const isLoading = streamToUse?.isLoading || false; const error = transformedAlarm?.status.isError ? CHART_ALARM_ERROR : streamToUse?.error; @@ -104,6 +103,7 @@ export const Gauge = ({ return ( = ({ significantDigits, error, alarmState, + alarmStatus, ...options }) => { const gaugeValue = propertyPoint?.y; @@ -40,13 +41,9 @@ export const GaugeBase: React.FC = ({ // Setup instance of echarts const { ref, chartRef } = useECharts(options?.theme); - // apply loading animation to echart instance - useLoadableEChart(chartRef, isLoading); - useGaugeConfiguration( chartRef, { - isLoading, thresholds: thresholds, gaugeValue: gaugeValue, name, @@ -77,23 +74,23 @@ export const GaugeBase: React.FC = ({ height: size?.height, }} /> - {!isLoading && ( - - )} + ); }; diff --git a/packages/react-components/src/components/gauge/gaugeText.tsx b/packages/react-components/src/components/gauge/gaugeText.tsx index 416c4a607..c5a1d5b83 100644 --- a/packages/react-components/src/components/gauge/gaugeText.tsx +++ b/packages/react-components/src/components/gauge/gaugeText.tsx @@ -12,6 +12,8 @@ import { PascalCaseStateName } from '../../hooks/useAlarms/transformers'; import { getPreciseValue } from '../../utils/getPreciseValue'; import { Primitive } from '@iot-app-kit/core'; import { GaugeErrorText } from './gaugeErrorText'; +import { AlarmDataStatus } from '../../hooks/useAlarms'; +import { Spinner } from '@cloudscape-design/components'; const getFormattedValue = ({ value, @@ -21,6 +23,7 @@ const getFormattedValue = ({ fontSize, unitFontSize, showUnit, + isLoading, }: { value?: Primitive; valueColor?: string; @@ -29,8 +32,11 @@ const getFormattedValue = ({ fontSize?: number; unitFontSize?: number; showUnit?: boolean; + isLoading?: boolean; }) => { - if (!value) return '-'; + if (!value) return null; + + if (isLoading) return ; return (
- {alarmState && } - {getFormattedValue({ - value, - unit, - valueColor, - fontSize: settings?.fontSize, - unitFontSize: settings?.unitFontSize, - showUnit: settings?.showUnit, - significantDigits, - })} - {hasVisibleName &&
{name}
} - {hasVisibleQuality && } + + {!error && + getFormattedValue({ + value, + unit, + valueColor, + fontSize: settings?.fontSize, + unitFontSize: settings?.unitFontSize, + showUnit: settings?.showUnit, + significantDigits, + isLoading: isLoading, + })} + {!isLoading && hasVisibleName && ( +
{name}
+ )} + {!isLoading && hasVisibleQuality && ( + + )}
); diff --git a/packages/react-components/src/components/gauge/types.ts b/packages/react-components/src/components/gauge/types.ts index d0a8ef0f2..d128989e5 100644 --- a/packages/react-components/src/components/gauge/types.ts +++ b/packages/react-components/src/components/gauge/types.ts @@ -7,6 +7,7 @@ import { import type { WidgetSettings } from '../../common/dataTypes'; import type { ComponentQuery } from '../../common/chartTypes'; import { PascalCaseStateName } from '../../hooks/useAlarms/transformers'; +import { AlarmDataStatus } from '../../hooks/useAlarms'; export type GaugeProps = { size?: { width: number; height: number }; @@ -26,6 +27,7 @@ export type GaugeBaseProperties = WidgetSettings & > & { isLoading?: boolean; alarmState?: PascalCaseStateName; + alarmStatus?: AlarmDataStatus; }; export type GaugeSettings = { gaugeThickness?: number; diff --git a/packages/react-components/src/components/kpi/kpi.tsx b/packages/react-components/src/components/kpi/kpi.tsx index e78919b23..6c78878a7 100644 --- a/packages/react-components/src/components/kpi/kpi.tsx +++ b/packages/react-components/src/components/kpi/kpi.tsx @@ -103,8 +103,7 @@ export const KPI = ({ const name = propertyStream?.name; const unit = propertyStream?.unit; const backgroundColor = settings?.color || settings?.backgroundColor; - const isLoading = - propertyStream?.isLoading || transformedAlarm?.status.isLoading || false; + const isLoading = propertyStream?.isLoading || false; const error = transformedAlarm?.status.isError ? CHART_ALARM_ERROR : propertyStream?.error; @@ -113,6 +112,7 @@ export const KPI = ({ = ({ propertyPoint, @@ -33,6 +35,7 @@ export const KpiBase: React.FC = ({ propertyThreshold, timeZone, alarmState, + alarmStatus, }) => { const { showUnit, @@ -76,61 +79,17 @@ export const KpiBase: React.FC = ({ if (error) { return ( -
- {error && ( - - - {error} - - - )} -
+ /> ); } - const nameAndUnit = ( -
- {showName && {isLoading ? '-' : name} } - {showUnit && {!isLoading && unit && `(${unit})`}} -
- ); - - const alarmSection = ( -
- -
- ); - - const dataQualitySection = ( -
- -
- ); - return (
= ({ >
- {alarmState && alarmSection} - {(showName || showUnit) && nameAndUnit} -
- {isLoading ? ( - - ) : ( - - )} -
- {!isLoading && showDataQuality && dataQualitySection} + + + +
{point && (
= ({ color: fontColor, }} > - {showAggregationAndResolution && aggregationResolutionString && ( -
- {isLoading ? '-' : aggregationResolutionString} -
- )} - {showTimestamp && ( - <> -
-
- {isLoading - ? '-' - : formatDate(point.x, { - timeZone, - pattern: 'M/dd/yyyy, h:mm:ss aa', - })} -
- - )} + +
)}
diff --git a/packages/react-components/src/components/kpi/kpiTextFragments.tsx b/packages/react-components/src/components/kpi/kpiTextFragments.tsx new file mode 100644 index 000000000..32cb2f2d6 --- /dev/null +++ b/packages/react-components/src/components/kpi/kpiTextFragments.tsx @@ -0,0 +1,216 @@ +import React from 'react'; +import Spinner from '@cloudscape-design/components/spinner'; +import { Value } from '../shared-components'; +import { DataQualityText } from '../data-quality/data-quality-text'; +import { formatDate } from '../../utils/time'; +import { AlarmStateText } from '../alarm-state/alarm-state-text'; +import { PascalCaseStateName } from '../../hooks/useAlarms/transformers'; +import { AlarmDataStatus } from '../../hooks/useAlarms'; +import type { DataPoint } from '@iot-app-kit/core'; +import { Alert, Box } from '@cloudscape-design/components'; + +export const ErrorText = ({ + secondaryFontSize, + nonThresholdBackground, + nonThresholdFontColor, + error, +}: { + secondaryFontSize: number; + nonThresholdBackground: string; + nonThresholdFontColor: string; + error?: string; +}) => { + return ( +
+ {error && ( + + + {error} + + + )} +
+ ); +}; + +export const NameAndUnit = ({ + fontColor, + secondaryFontSize, + showName, + name, + showUnit, + unit, + isLoading, +}: { + fontColor: string; + secondaryFontSize: number; + showName?: boolean; + name?: string; + showUnit?: boolean; + unit?: string; + isLoading?: boolean; +}) => { + const shouldRenderName = showName && name; + const shouldRenderUnit = showUnit && unit; + + if ((!shouldRenderName && !shouldRenderUnit) || isLoading) return null; + + return ( +
+ {shouldRenderName && {name} } + {shouldRenderUnit && {`(${unit})`}} +
+ ); +}; + +export const AlarmHeader = ({ + fontColor, + borderColor, + alarmState, + alarmStatus, + showFilledThreshold, + backgroundColor, +}: { + fontColor: string; + borderColor: string; + alarmState?: PascalCaseStateName; + alarmStatus?: AlarmDataStatus; + showFilledThreshold?: string; + backgroundColor?: string; +}) => { + if (!alarmState && !alarmStatus) return null; + + return ( +
+ +
+ ); +}; + +export const ValueText = ({ + fontSize, + fontColor, + significantDigits, + isLoading, + point, +}: { + fontSize: number; + fontColor: string; + significantDigits: number; + isLoading?: boolean; + point?: DataPoint; +}) => { + return ( +
+ {isLoading ? ( + + ) : ( + + )} +
+ ); +}; + +export const DataQuality = ({ + fontColor, + showFilledThreshold, + point, + backgroundColor, + showDataQuality, + isLoading, +}: { + fontColor: string; + showFilledThreshold?: string; + point?: DataPoint; + backgroundColor?: string; + showDataQuality?: boolean; + isLoading?: boolean; +}) => { + if (!showDataQuality || isLoading) return null; + + return ( +
+ +
+ ); +}; + +export const AggregationResolutionText = ({ + showAggregationAndResolution, + aggregationResolutionString, + isLoading, +}: { + isLoading?: boolean; + showAggregationAndResolution?: boolean; + aggregationResolutionString?: string; +}) => { + if (!showAggregationAndResolution || !aggregationResolutionString) + return null; + return ( +
+ {!isLoading && aggregationResolutionString} +
+ ); +}; + +export const TimestampText = ({ + borderColor, + showTimestamp, + point, + isLoading, + timeZone, +}: { + borderColor: string; + showTimestamp?: boolean; + point?: DataPoint; + isLoading?: boolean; + timeZone?: string; +}) => { + if (!showTimestamp || !point) return null; + return ( + <> +
+
+ {!isLoading && + formatDate(point.x, { + timeZone, + pattern: 'M/dd/yyyy, h:mm:ss aa', + })} +
+ + ); +}; diff --git a/packages/react-components/src/components/kpi/tests/kpi.spec.tsx b/packages/react-components/src/components/kpi/tests/kpi.spec.tsx index 7bb781b93..d5cd3cdb3 100644 --- a/packages/react-components/src/components/kpi/tests/kpi.spec.tsx +++ b/packages/react-components/src/components/kpi/tests/kpi.spec.tsx @@ -112,7 +112,7 @@ describe('default kpi widget', () => { it('renders default widget in loading state', () => { render(); - expect(screen.getByText('-')).toBeVisible(); + expect(screen.getByTestId('kpi-loading-spinner')).toBeVisible(); }); }); diff --git a/packages/react-components/src/components/kpi/tests/kpiBase.spec.tsx b/packages/react-components/src/components/kpi/tests/kpiBase.spec.tsx index a906ed8d5..2ed9d642c 100644 --- a/packages/react-components/src/components/kpi/tests/kpiBase.spec.tsx +++ b/packages/react-components/src/components/kpi/tests/kpiBase.spec.tsx @@ -183,13 +183,13 @@ describe('loading', () => { it('renders loading spinner while isLoading is true', () => { render(); - expect(screen.queryByTestId('loading')).not.toBeNull(); + expect(screen.getByTestId('kpi-loading-spinner')).toBeVisible(); }); it('does not render loading spinner while isLoading is false', () => { render(); - expect(screen.queryByTestId('loading')).toBeNull(); + expect(screen.queryByTestId('kpi-loading-spinner')).toBeNull(); }); it('renders error while loading', () => { diff --git a/packages/react-components/src/components/kpi/types.ts b/packages/react-components/src/components/kpi/types.ts index 2f9be6d20..a0fc63b34 100644 --- a/packages/react-components/src/components/kpi/types.ts +++ b/packages/react-components/src/components/kpi/types.ts @@ -1,12 +1,14 @@ import { StyledThreshold } from '@iot-app-kit/core'; import type { WidgetSettings } from '../../common/dataTypes'; import { PascalCaseStateName } from '../../hooks/useAlarms/transformers'; +import { AlarmDataStatus } from '../../hooks/useAlarms'; export type KPIBaseProperties = WidgetSettings & { settings?: Partial; propertyThreshold?: StyledThreshold; timeZone?: string; alarmState?: PascalCaseStateName; + alarmStatus?: AlarmDataStatus; }; export type KPISettings = {