From 7e834429cc8c765cd993242840d079feb8bccc54 Mon Sep 17 00:00:00 2001 From: Henry Dollman Date: Fri, 12 Jul 2024 23:56:58 -0400 Subject: [PATCH] updates --- dockerfile | 4 +- site/bun.lockb | Bin 138189 -> 138541 bytes site/package.json | 88 +++++++++--------- site/src/components/add-server.tsx | 2 +- site/src/components/login.tsx | 2 +- .../components/server-table/data-table.tsx | 34 ++++--- site/src/components/ui/chart.tsx | 8 +- site/src/main.tsx | 54 +++++++++-- 8 files changed, 123 insertions(+), 69 deletions(-) diff --git a/dockerfile b/dockerfile index 9bcce5d8..2ba7276b 100644 --- a/dockerfile +++ b/dockerfile @@ -26,4 +26,6 @@ COPY ./site/dist /site/dist EXPOSE 8080 -CMD ["/server", "serve", "--http=0.0.0.0:8080"] \ No newline at end of file +ENTRYPOINT [ "/server" ] + +CMD ["serve", "--http=0.0.0.0:8080"] \ No newline at end of file diff --git a/site/bun.lockb b/site/bun.lockb index 5fde890fd74a5a7c91497fbab9eaf81cbcad590f..eb6ce562af69ad33eeb98f61b859a6395433da5c 100755 GIT binary patch delta 16345 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 HCp-QZe7(f) delta 16141 zcmbVz30##$_y02&F7jXm3Idl!7R4Q8^~{=(9o>hs#h(y%moz{%>~!Yx7V!H-}gKVAg}%Y@9*!&^PKt4oS8Z2%$f7dy?5C7 zh2x=e$Hk$o%Yx@0oc~YLqpOB(j|NWLpYo*AW#-l*d5nKiPp>B5C0~p8F-Y`pz>*~Y z*^B!!1xQjsc3~zJr>5m(kIgHT=Apq&l57#EYY6UPCrO^*Mc~harxz4t7Nkp(9WcpF z&MPQHo%D{qBsl}G!7NVTlhP*TWoJmzE5I`FjI`Vwn&&>S>ugk9L4gK5rSbgCg1nrm znNp($lH`y22H-T%LkCrEd|E-?v`La=byO$Xh{Iea#}&b zMPSm<2JQhqO~dv8q)Re5Ey*OU{#RfqWV-^6@n_r4BNAwUE#Tym1zswj1x!YHo77-& z0jG((pq;p#x2oVEaO(H}8s~K%RgtI1nJC#tK{L{5gReU9T8&Q|pPfD)7H1b^PN#5= z@KY@^HdQB{oK`qKWMbxwBXAEHupOMDIsuV}xopAU(AoAUIMuuIV|M;*I=^S<@0}8) z8g~Pn`VP|gtw7$!z9~D*d)xcZJ{PQN?A=`D8Id9Bc{zFcdr(iEfHP?!8={?D{ivBL zcL$vCiIyt9py7kyO;G=FE4BSgO@5=+em+o@KdSOH+h46!&+J15#X>naEy;s6s>|~; z)6xq=vJ0w!v7ELCZB-9q?-tIOj0gj!wcpxKjnk8mqovEq%SbDLYxw|UtJ#M`RW}`m zi?I^6W$h&iD`1-kOoN7nOHvE)-QWS>F5u9^wi??3UbE$fse|7Kr+%lw$^E;*5h}J( zQL20?Ff9WIr*UoI*gSn~Poh<=3JZ{}Flnz2s@8W=?+U>);N-S9&8pjrG`?s>XlR_%3itJD+I0SmX0FUI|vpECQrEfk^ z^;u(Z>hA#l9C+FwbsW5W(sI%=GKT;=!!%nb6vzWn;3RmFr#X7g9*f~}a8moP{%U<2v^N4CJX{T|^zmsq6A^GXfoYrIZ4@#tCoSs~ zFwI^s(>dAnROii^+;aBAA?omn7`6$-W5FAP-@$Y=Tvq0!f*F(2r3nRjlcF)rBGh}M z{tI}AHq`S>?H4mjo$di-D4u@|6cFm5gzti*`b^!y?GTp_lB85(Y(~jJw zaeYUA3`_9}fcJ6>ZH0(-n z+K~>~s-4=#x6J^iWg7!-0@oAA{V=}5sY7^^Ty@o)z$ut8it?VR1eSs4B5J8VW0D#p zfn}`WG<(O77TnHkk=CjwpYGDjardRE@vA!a`)S>27YA0%E1Fo?QEu|EuvngqX9zFG za|y5Tuoy4cNm3L~^^KL?>?Nrm2Dax_9%h!ti#;vu176{2k*}d84lRsVMaS@DFAK}$ z#dxma6<9;5o>_=YgZIL}4p$}ROq=h^jsEZ<7g3(q0sd}I%JIRZEEV2W9f&e6~JHa0(9bM4$6h6yjY{t+Kv*MN15R3Q;K}~*pjKy4{1C`1{4MNd zZVIr-n~*?ALnDWU>^3hBurLd+z%!ql0xfJkPY$#gA0m!B@k-BF){9r5_APD-vamxu z8BaG}9Aq(AUHOQh1i8pnRYjS|cp9h=U*!|af_QN=3!B3$npq5w8gcLD39KJaZf;?( z^5W(e`8eX8v|v0f$SnII%XR>=9 zZefw_5c)A_Z=l!{%PUYf6?I4&G&+2D5QzLE^FYkyhMm^~Nb$TO%Y&csNRT(6l0=|D zfSDP1ax0764LO499F@Ru#D=bMvYZG+3#JAg*ASMYQw#}qLKEU6&}^uvoBOwVnikCER%a68_9fKq( z7L|>asLBG0tU)V)IsqZWv@px}fmAJN2O(QUSlD=85n+*AHLtP8%WN3aoR5gIIM&ov z1)JqlK-3qCz$=Y#WL2%F+|(OLjcfAlY^_bnck&G&GC=ivXbTk~0Fig{fz(l`-^V~S z1J(=ZXCQ5_K+?OVBw3U;a!N8#yozAQa$elQB44hlLvI$qO=gQcx)nYODsq8{(H%e* zzN%TQ{5wioe~cF0S|6L@q!5Vo#R6d$ZPyT@3|ZtkUJ+xFhv3xP1rk_m^j;1`9#-<5 zp=nz_qGJL};l&*-^4o3I?FmP~1VcMD01>|J%*IYY9Y`7DRI2BxL*sbG3l`ZUM3;ht z*brVEYcal#x-jnN7i;(;gpY_zFgyt1E8-GZ6t9T0$g2@7VT!_OzA=sfl(n(mh}M4X z5p2BDBi6VXrD5F9D^_-ZY#&7eS;9ChT#_bGz40PSqZEk*Y=tqpguEMQY|V&42(504 z{5X`95shD>G=%#F#u{Cb$ona+vr!tOlrEsuS1GlPrab^T_98cRw#ZIcUfPlHG)yhv z#i;uLb(;6#+iD=%!LY{PEQgyVX%G-nFxKg9AT1t)&Bh~yXci`OQ&)>|G{UNjGHVG+ z3A{2mR=$AJaP*h3am=zA`-t3TQ1Vn35Y2>DL}u=SfvF8k6+~~Eif$I;aU`M?UfC_y z7>dwIR!Xm-l*0Xb#Mz@TSgDGJMX5?@DN5N&=}(l>l+sAVu-duj`njgm6$b#d!&;Qk+AGc;1$Fx2h{7c5Aa6p6QUIgWZ}_bXAJIF(_-{C}A5ZNa zYwXsY)__WjYf9&8O09b6t%WG{;i-M&SP#CUuZ8vGXZl*~d%`tJ=jAn}^EIUw@S55> zsiyRKP3bX8JyaEX>!sIgN=Iu-9*9UBFQDKEwPcO6uc^9JQ)+?DtcbA*Jh{IG>9ZKm z{=A~U#kjgJMZl^TVvQ{maSl>S3sD+QCHV?U5Kvc}g>%zDi#)rZB%zwl6CP$`6;Pbg z%Ma)3e5F*1QjAi151T4ODRmi0`-J9Mi&76N8LkfG-h&h5X^2ksb&M2b{0Ru15t2w7 zgGo)(5ane)#3ElGtOhUMq*SD8Xnoq~vdbXs;^oQf9|Z$ric$2=(oZ{oBlJoCBl`X!v0SKa-qbcszo8k4TU^ zq^R#!?5y@NjsQq^w1vIQ#$`aNhPP0HD}7?+h>>*`$}nprU-3eM;meWyOiF_M5N*gt z=uJnCwyBhWXd&jHq`1a#H-k%ejo zxC4anCrK<`6cQi?9~qf!U7xn5TaA2 z{0Jq=TF7V}VjR>OtgzYgH5 zP=y%RRH#H9LRmwR6YF?Uo(ZJ3!Ka4f6S;R*0t@EJSr(SZi?b|-ojLqWR)X9-S6xZu zdAxQf08!-H^E9CKKzI$&_#MoKtGWEl_ypF5o3brzGEdI77`99*Tao>-J^yC<+wmI`v+pPFBSq*d@DDiVEK1~#Vp2Xkz+?hWDTE}~r zC-Gk8&U|CJ6{+AM(Cop)GSDNo*!#E0*2=3fDA;PMwq-0=%% zp8JIrd3XoVb|Alw6ZdO0BAo@$X8ajjnDWBmVM>S zD}l;+>#t$i*Uo(5*H*TJR{)&`ir-~rJNbfLux}Ua1Nw@0+ztD7!@k{Cwu@KqPGY-x z=RHYm4==`ZFTaQ9KHht868nai;Q1|oxEGe~g=PD!?4P`JUlQBT**8h-08hsAAm4)L z_gwxqiT%LS@I1tKd<&btg-zdC*%6-o9c=mzHUS;urhg{kbM+KFkMjd~{=@_KC$STJ z2A(JRF+5N4)(4W@T}w=zfWT4`4T)Y@M=6S^3Fdb zu_|7S=Oum*&&#~`p(OS*FTwK)e~9N*KJai7yT(foV|5N=b&gnBHBUZ*)j5LI0lLZM zqgb7zSe>I*eD>V|v>nLrn3dh-*~ehXF<1h0kDGqP>ime+`O(Vm^8-NpfkKX3*>8Nt zajed9tPaov-ufr3&QDmKpRDX5uK+p?6o10X{^SczV0BJlb$}l6jwi7?C$Tywt%fHO zzj1OHzYdsq%E}loK85f*h42HiDft6N#q(1<( zA1LI!l{Mir&cnd-Fc8R-x4r-aFTlVHR%YTAK&OG?FIt%oUvLoyUW9=_e!OE946K5I zRaWNDtAVZqC0??!Kwf+a_FaN~K+SmX%dqbnLrnw7QZ+1Fs-HP{Cf&P~^0-*wn`-O3{Q z0igXrA=OqE&1Y1@zG~P9Wah1Jz`h%>?}n9i;sDD9dE(D zTd?nz6D7ylrKjdGT%7cN_Krb>+S9z`i@M?~avq=MRB?2THwb#o@8^F6_Gt z`+l*q-aPpi*!K(U1F~}Y9_+gZ`|ep;BHsbD9mwxjE6z#TzaGa{ioc%@|CQXIW-NEW zH*@939GQz9Z}(s~^DDdkpufSXv!D6}p4E@vd2pB?ZDKD^$S%a&MUvj*fqxbml^!^AYV3urD?;9q}K z(44NI*Qf&j25NGRP@b>U;Qg%CH3nXw)eT0S9m;N?w?H)RFip-K<<~)w?=K~3l}%9b zhFU2N*Xlfg-_+`owK`AWB_JAPgjRQ*w8y_8L&V|!tVQ`R{aK7rv>VEzoNPnXCi^ke z6qIHKi~*TJy+DrWMtb%{c_(-e@a~{)pst`eP%J1A)B)5K$0Sp?ycM{tP91q)A4``b6+W&bLu2d!-2?eB{Dkuh3fDkaK@>QLK@?11 zf}%hoFopRzJUK*AbWdRx_LZ2M!ct}*K}|L2F6a*EHt0Ht>TZENFem^-o4y&yUzDUWHx?i|k7g}HsFxllI&c1rI+AOl^b}*pFh?VesN&#I6hlC| z0@Or9v;egQwE?wOx&~5}K1=I5WxXyy5sPk*rYV|f;V6e`RJXfsvOZgs(sgWI-AUvH zkggbcrmjawmOMhk`h)aTs!vUL8PwTt*EbF zU5Du*RI66wx?SlNqxq)?y*`M@m$d(AZ}vfZZxC$<6NoYly~pX*oCu;9AMuzmc;H{- z4dqSK*dGRYR77ZaM5tMsE&?-{iOmzS8LT^ND&}OcQ_(ZcwRr5#viWUq+EpLd0nat#)UrxH2`^~$Qs zrQ$5f>6eaH&)eB`{iEkUgj@&6MM%=u!et!f4hZKQ$mzGP!t#z3FY%li4Y}}WWyUKa z6>>iJp{px&^^I&C6MVG!DhNb}Mvz8!VhIi8AvR?(llW#F^JYcj!Z;SmUJ-6tEQ=`` zc{B~jo7i6cvA^w!b@|68em0V3Q3p|aNBZcOwmw*}wpp8g?vm+uU z2Q!@(i*hi1wWy@Z&0=&e*iO-i*nZJAm$j7}xv4*utBuk6#Vb?e#yLZpx%`Bw;YV61 z{j%6@?_h_WqsLs-S`cy5#Kv4qW)oF3?sD-bv5TU~B-S>*+FkwOzvk-Mt~B4$p4clFz8>t{U9i(Ko|*`AFG3k@foW{E8%P~xeE z@b7=TJbv%+Wgi&W>!`th+ZM5AGBfo*it_V-8Oi(hu69{#G_akhX@VO4g4)pIx0=6{ z=bDVkV^nkhgoHCB!kzBjY}3Qt-oUP*2G-cRh{Qb1s^5isl*2Yp4(fIWU8B^lTf`g) zum$2>VhZxGhovs!2r8oW%X6RPg>TKdlfD`qksHWh{rcS4Db3?MHFSwV3w9z!#311Z zLwxkxC;i&*eb01opF0FPsB_K|10jIP$Y3A+zTOD7@@$U>YbGml%0Q|>w0`04R>p{- zm2tbfL7*cxEEZG0l9&8lhe0>`JiLV#q!rR`t+-87Y!D5mV6`Je>=XpCe(}z!I?2zn z_RT*at{LO%ue!ME@u5#!MLEBN7Rm`QCRlXl@PmFQ?_s0NiI1ZW6)OU8VVI=f&KuJ^ zy+m4~wc__8WBh!->nrZW^X^jEICsQbfr#<}P*> zVEc|NKoYD|;iKObyuSW*my;(Q;OH|!YB1K7(l7Icnioe~ONV4A_JoB-;xsER6fjc< z{TAR^_g79_U3c{tO#r^q?+JdeIqUd5!__Wmp~Q)Wy3frSTz1VAN8zuFkG zYnxwITU(@o9n@rTxv?-iH&dF?!FA`-xod|S*m14poVfNPOZ3%mH%9;AF)2ObIqc;& z%4-v+<7Q$2{2i^|b9`=0lQZ&(YNT6TLciGf!1lP;fFH*E20J3KbnwARv1%&TwhEFS z(D>E0V@}2gHJGKiB8py(55%#ltgV5yRn}ByZPhhZmO#sQ?jms-^G7C}^AF}85Uuor zSVN5W=HR6F-`P~W3*$wryG`q;4BJE;oyKCcj>2y`2H7g&r?a+fs>q(s0u6^l#YG$Q z67NrEQL30p{5qYDVP>&qCNs(A_G&ItrZ%xM|`sla1PL=v!{wit%b|0lqM7vZfs$N34?+z1xy~Mn9B@L&;MA*yB zOVt7|e?*BdT=3Dh^iKPpKU}Kzhs%+xX1)wX!bDXGa}yuG%=$jt9>eZ%ac3s$_ICzp zmZ-`*s+MRT)0EIg@M5dQz?p3H|79A@QMK+ufKmXm9mGgT$*S541f1<08e&siNN8I`- zhuo|74DXY0%7_C*`}r7qY**#GL))G!OV+!2_Iyw)px+|y(D#SWOO|eZskUXFn2D}F z`nBWtN@q>D;~4y7t-vQ@3j_?ix{4p>GcRBL-tzti14NJOxqE8`uXbI&051ytqVrzq zPR|zAhEBBt`c>$&MdNyeFF&)Vwk1d;E`Smp@N*~~)W&-JCA;{$|GQS8kC+1iZ1ZlUmUMaA5km!nm7W14*GR$XU}fct3RFk&sqWf!uEz9*{S)KmMd#p4s;Vu zUx$JE74Ksuu72ONs_tJaao;N9-k@D?6`kJ1$-?$Jv-i=jO+UA^`;bPjp6*%uUJMdz zUWYE)MQoejl0K8t*Yat#0{YEt54Wp*Tg~saN7-Gn-+<`7W`d#hdZ$BK|(q{tB zvg*z>OGXj+23AE=$@lMvg0hpLG+QJV;p~PjzwQk-!>OvjdPqk9!;5N6@`~24JNLYl z)4k1}a{3gfqyn>~-@ES8e`x>2h5YNXA|(~D#b9m3o;Sf_#aS?)!~yDAQX2R5 zH@6p0Ifq_2tkMo2D_j;rZjNZZ5Qox>A{EF-|6)Jyog*%@=Jyp4j|z>T<85QHgv6VR z4J4;uC68R1{?eXRYiAl*%R#C^ox}waP%oe3k1V{tJ$Llz%*pJ7TZ>DcO|bX3$6RV9%qVA6KQ$tE)UXe9UuE%9;V(|Kj`sC6DOB@ zCu*mEJWLE&jQII`1y#*zCeSAG{rgp}uZp(L+Ls%H#o#44*8JzGTK~2{lT-cT`;3o6 zII+`_@zikf%Mt|S&EdjnDT`osB7P~>eUM06$|7}jnet)T!ycJW`AFg^PA+A>HLY4e z))P`T3whJ$?~PP9iO=7yS4dcl*vD})S58HABph7=P5M zu3+8%#*Vrktr_7{ars@A=%fFwL}`D&V=I^bxD$4ShvM5hd=L}Xm9Rr&>V!4DpNfwE zuueHGyNO<_a5AsA$aUAJ{%Ea)|LXdl(?jmRjImk|tFfj#`st8U{p2aOu3^o6^gjdn z>dk-kaKAg_yV{r6vz9PI^j%&Po;Ch|M(EZz?y14F9mE{OM(i%#f9n1it+}lJ0MGQ! z81dByaGAO<4fn&AV?X-nf0**>Ro8&G8#FT1M$`Y_#`R(|#I|+FO?vcdp9F2f?|pnI zs<*=GX9+LEfBQi~3#I?fJWcKTn@Cw=eSURKBWt{-`dfFcrn;VU>I**=&QB-1|JJGh z*DT1M<-{88pQVtvTFSgNgPsaQA3Z6h;D-SGT3}mq_EKL_lt11Tc5eEZnT+l^^c{8D zE3Ao}5KkXJLc<)yO|(4YnDGd*^yQ+H@ZSId{m+_aMuhtBb+ZdXg1{kzzU0x~cf}%i z1Kx}JpE__megRm@EwNF`0KmdL?2`$WeN&QpRg5113{Gs#I v%t?irx!Hw7FM>moW`W)9`IPO diff --git a/site/src/components/login.tsx b/site/src/components/login.tsx index 4aa4b2f5..fe7e84b1 100644 --- a/site/src/components/login.tsx +++ b/site/src/components/login.tsx @@ -29,7 +29,7 @@ export default function () {
) { const val = info.getValue() as number - // let color = 'green' - // if (val > 80) { - // color = 'red' - // } else if (val > 50) { - // color = 'yellow' - // } return (
@@ -181,14 +177,28 @@ export default function () { }) }} > - {status === 'paused' ? 'Resume' : 'Pause'} + {status === 'paused' ? ( + <> + + Resume + + ) : ( + <> + + Pause + + )} copyToClipboard(host)}> + Copy host - Delete server + + + Delete + @@ -236,7 +246,7 @@ export default function () { return ( <>
-
+
{ const target = e.target as HTMLElement if (target.tagName !== 'BUTTON' && !target.hasAttribute('role')) { diff --git a/site/src/components/ui/chart.tsx b/site/src/components/ui/chart.tsx index c216d66d..3be000f8 100644 --- a/site/src/components/ui/chart.tsx +++ b/site/src/components/ui/chart.tsx @@ -124,15 +124,13 @@ const ChartTooltipContent = React.forwardRef< ) => { const { config } = useChart() - payload = React.useMemo(() => { + React.useMemo(() => { if (itemSorter) { - return payload.sort(itemSorter) + // @ts-ignore + payload?.sort(itemSorter) } - return payload }, [itemSorter, payload]) - // console.log('iiiiii', itemSorter) - const tooltipLabel = React.useMemo(() => { if (hideLabel || !payload?.length) { return null diff --git a/site/src/main.tsx b/site/src/main.tsx index 431bfee7..02fc6610 100644 --- a/site/src/main.tsx +++ b/site/src/main.tsx @@ -3,11 +3,11 @@ import React, { Suspense, lazy, useEffect } from 'react' import ReactDOM from 'react-dom/client' import Home from './components/routes/home.tsx' import { ThemeProvider } from './components/theme-provider.tsx' -import { $authenticated, $router, $servers, navigate } from './lib/stores.ts' +import { $authenticated, $router, $servers, navigate, pb } from './lib/stores.ts' import { ModeToggle } from './components/mode-toggle.tsx' import { cn, updateFavicon, updateServerList } from './lib/utils.ts' import { buttonVariants } from './components/ui/button.tsx' -import { Github } from 'lucide-react' +import { DatabaseBackupIcon, Github, LogOutIcon, LogsIcon, UserIcon } from 'lucide-react' import { useStore } from '@nanostores/react' import { Toaster } from './components/ui/toaster.tsx' import { Logo } from './components/logo.tsx' @@ -17,6 +17,13 @@ import { TooltipTrigger, TooltipContent, } from '@/components/ui/tooltip.tsx' +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuSeparator, + DropdownMenuTrigger, +} from './components/ui/dropdown-menu.tsx' const ServerDetail = lazy(() => import('./components/routes/server.tsx')) const CommandPalette = lazy(() => import('./components/command-palette.tsx')) @@ -39,17 +46,20 @@ const App = () => { for (const server of servers) { if (server.status === 'down') { updateFavicon('/favicon-red.svg') - return + break } else if (server.status === 'up') { up = true } } updateFavicon(up ? '/favicon-green.svg' : '/favicon.svg') } + return () => { + updateFavicon('/favicon.svg') + } }, [authenticated, servers]) if (!page) { - return

404

+ return

404

} else if (page.path === '/') { return } else if (page.route === 'server') { @@ -84,7 +94,37 @@ const Layout = () => { -
+
+ + + + + + + + pb.authStore.clear()}> + + Log out + + + + + + Logs + + + + + + Backups + + + + @@ -118,7 +158,9 @@ const Layout = () => { ReactDOM.createRoot(document.getElementById('app')!).render( - + + + )