From 1358d3ad011af9519d5ea971d3eb5e99c75c660c Mon Sep 17 00:00:00 2001 From: Ignacio Heredia Date: Tue, 27 Aug 2024 14:14:47 +0200 Subject: [PATCH] feat: add customize project logo --- README.md | 2 +- demo-ui.png => _static/images/demo-ui.png | Bin favicon.ico => _static/images/favicon.ico | Bin _static/images/logo-ai4eosc.png | Bin 0 -> 3613 bytes _static/images/logo-imagine.png | Bin 0 -> 27524 bytes launch.py | 3 +-- ui_utils.py | 30 +++++++++++++++++----- 7 files changed, 26 insertions(+), 9 deletions(-) rename demo-ui.png => _static/images/demo-ui.png (100%) rename favicon.ico => _static/images/favicon.ico (100%) create mode 100644 _static/images/logo-ai4eosc.png create mode 100644 _static/images/logo-imagine.png diff --git a/README.md b/README.md index 524bd6d..67795b6 100644 --- a/README.md +++ b/README.md @@ -99,4 +99,4 @@ For archival purposes, as option 2 was the initial approach, we provide: All the best practices can be seen in the [demo_app API implementation](https://github.com/ai4os-hub/ai4os-demo-app/blob/main/ai4os_demo_app/api.py). Here is how the UI looks like (left-hand side are inputs, right-hand side are outputs): -![](demo-ui.png) +![](./_static/images/demo-ui.png) diff --git a/demo-ui.png b/_static/images/demo-ui.png similarity index 100% rename from demo-ui.png rename to _static/images/demo-ui.png diff --git a/favicon.ico b/_static/images/favicon.ico similarity index 100% rename from favicon.ico rename to _static/images/favicon.ico diff --git a/_static/images/logo-ai4eosc.png b/_static/images/logo-ai4eosc.png new file mode 100644 index 0000000000000000000000000000000000000000..816a257df241de9464d65e6633f4d8d6ebd3e7f2 GIT binary patch literal 3613 zcmbVPc{CLM*B*P;u`eTJ%P#xW$T}F5;Y+qORAh-r%}_F9-@*u4l4XWuNkf)oY+t*q zGlU3b9}!`M3G?%w_q^x4|Gw|J_dK6_?|DAYbN{_bc5oOs2Z#dz0B~Dbn%M&Yj1&NX zfrFXpY*NeH+IaRbJhq3K0th4L*UuVhyX!a10WrydNGu>G6%d_Dr_%>lDLB$ZNJ}TQ ztjtVqJek>?HVB%r6O3F)CZe8?zjw$C zn9B<+NMoP2snAlm-*a7NLc8+(>cuQA7GL&1)vEG~8}1RG8-SIxHvfJWNkUqxrn@!U z>LJzO1f|dybkp6s_c7$ERr$w@Z@D1Lx}h`5rbfq+_H#CAyJVoWy&X8$zy4jI#?*~a zGO*^KTn%B!8tLN1IN3vH+$&QJ$x1wR0dt8o+@gx$bmsKgBm`RD2VPG8x&O)3r({F- z!P7x5am0rYjYALDi>LKyDwmOb9a#fGT}!@0 zq>PGmH6)+zCoc#`o`!24hvDgN@ps;A08w3*Q|-PwDO3a8<17MVP&)Alj8ExEMG$3q-%5 z0De~ePx3&b{#R0%Ar$I%@%L!L{4p1jWWpx#{{a-KM3FdrOsC*y_f&Xc}LcT zB0KHNRkzjt(WYG&mUpV9$OMZIm^)I%U47c853QZ{GiC|DbY}}0T_@n*e|`7Ll6s4& ziK_BX1DVj(lRF<#g6)J1B>SBVURTUEr(8OtZkfwT?ce;!!Rf@y{@U2%K6Ma3`bL>n zx{3VwKwbZ+BqKT8TKCeeO~Sua_o_}-5|b;^od^AukZ8#JZe*3t=;{q*X~YK%Jc+Wk zum5^0WKSwzC?EC(YuFg#t{(Q#o%<6l)5MW)z?(}-XcVw;Z2T0HQutlo20qM z#T?TjD;I9`g;%xE&!@%#*nsM>To9DV!!>ljJ40vf3YGLy_hIRroOuAWuqGF!-jGCE|wZu;VN5$~;) z^i%GSoj!L1`;W4rG#^hSRxgf~e23F2{MnyPMtpFS46+7Oxbl7c4*i_Eyw0IwW4!z4 z7OsN1(mDI}{9mdlbieSs=xLFtIYEKSXpkDtb*v#h2(eN?9Zi0Z~p+gK%;-)CLMnT$Snq4a%!W4O6( zW>CoP##bh@&mQ&|zqQUL7AjZHAv4i`#oURpi5odGQ!p!U>=T+4*Jf$&QDn$E8oOrDp zse-XvV^Ai#_6tyhovW2{NI*c5cr-;=P4qV*y4^VxHG`e42bW zObLC+k5`DqTJ8@1VT(Q!Wocznt6SRr#wVQ5qvO-Kpvxfvx#CvD2q}G_BoD%uG@BX2 zgsW6tbBQmqNh}`XVnLQ-?%$(ZV}UzFW|Ebo+LzxN)RBByTyh@WF8dz5JE-M;-toN` z(uxiQ)=gB)1jK;4SxXk!jKg1Y%>AkAub+;I^Tfo7s{7aAB(~TY3Pp(GMSZ&inBtiRI(JFv<^gJ`%nxvS&gL=X<07 zxd3jg1@G!Qz}3{_HareB8o=0D9b4BY#<;J~fF^j}cQL;6{atSlzQvfH-r8{h#=>8* zLJXJ(qjgQ$LX)C-;0!u1NkSK0amJ@eBf`P3jM z_i!NF&()>KLIGxHKh?C~pmZv^EONw>b-K;`zn6N}i}Z${S6=94i{So1^U}yf&3sxW z8L2-z4cOkw`leT`2)Oo{(-NKo&s2BJ*Fpg@Dmwb_4yRnLGIy}B=>bh9UG1{|7~gIy zW=$1iKUj=p^!e}swkE8um>AiHm_=-=Pm1#3DE;dDJCP88GyH29D`1f!4MCb64UpBs7g)0D#p#ZsmrdECfCmk;$K|P zQ-uhuuj0=XHdEm@gST`DQH7JnuqfI}rLPbOR`lB2VCT%E#2%SJQ^OG==vI)Sqfv6gR^iFtPreCl zoptwX<~gO>Rw>kO6p0V~%ELx4jr3w>;KX*}WlvJiRb>b<#qR+XZf-Q!=I8~AQ$$$g zmy)n=BqgThsa<>+ohOrBeAT@=vX7B1n=DkhNdYB-_6PGHXon&jB zcx%r$o>M~+4vZLs1bYv1MgmfM?KeYpu;Xf!mQ~{$q{Hbw$L&2Ju{$ zTi*uPUu&iD!~lOm$RN*HZHJikFPFDkEXWZDWIf8oX6D@Pa_!a*vn#aNH=2U_Phm>) za=p=4?Zv4P{~Z3sABgobDtNWW?itqc*LqKny8L~1pWl;+P0IlxGZB9ZbGOL40nOR$ zFI;^f^i5gq?0NyCz>vFn?XYZdq*sms`Odey4NZOTpq>6I4{{u`Ls@Sy81L&*f_0Cs}u@GR70N?xy(WRA)pgh@}=2>>ffPpCa{++&av4t6_(EoY7eI{ z!&2VUN^?g5d5wKGu1e5Bk0LO>a3MNb3Kd;aqBL@nt^7bs@@~Kn1_`Z*B79}@^ZAQG z>BS*yaY4S{Ds!*L;7V?04oC^2-M`*D=b|CEx?GU!_0!OQdTbayu6eJfNmdQ;(i;njvY)x>X?lpvLf3s3IEWdYBGZ`km{(N7{culP z`^tJ~)*|qVOLiRh*3cY8MRK=MA4piX**RTrqNTU=*@y|YdW1~jR%1;MHrQ;~Yg%t+ zRGN^N!*v+1T)i%{fwkDy3Oz?){stk$f1GuS%jDV-iW(c_s3geU>>wAJR_6p5)efkU z4)hjE-~E;SuLrm_DsNi>!jvGp8HiHciJhSTrVI`hD+pjQz0U&=u-?wi zf1H}9_a#KQe+?#X+GwFIk=?Ku9!>|CRb5Zzx_CsQuKqVi)dx;So!iFNTX|g0d|VR2 zG4q^9P+>V6=cxRQdqNWlTa#x1-2QM1|f(-(pXBq7w=rgbp?d0s~J z)7GTg@r6DAj}wN5E0n9*Ksx5aURGD&0rgRmULICUhR6G8bum!~o$=Q300a|jB@*?(yyUM2QS>AxV36i48t zfdxWMoo&uSN1zCZ5sW5z7|(JbD3_Q|*rdC$wrth0y!vn+Y%H(TiOabUONT!W!Ajk! z&D^xnyNTkB;>dk5I@=k@_HA$ziI>us>?k`+Phtq!I)UMBFz0I^aG(@PmzP%;zD3UZ zvedg^K+FhRe%WSDcNg4Q+-D;0UR&O*HJ{3L9wHOeh>%pirEy`zk$hmtbn!bnf5SE- zGF7K{vl(z=Y2#PrElBxU+2?N&MR=>@t<8bl2Q6`HFd|$H>}Mqmi&ftB4N{Dq9n&UJ zA1HZ)zE|Oe#VQ?UNgmiiQksq^uXGat;b#zilw=MISIA!#fRH9~d$rhzUp!ZY(|AxT z`xl4AAd3o0aj72CZt>VB@_$||m#+#+1S4_h_+h0jbcXiJ)U5u=Xs)xX4Pa#sHzSzd Gj{XnBs`APJ literal 0 HcmV?d00001 diff --git a/_static/images/logo-imagine.png b/_static/images/logo-imagine.png new file mode 100644 index 0000000000000000000000000000000000000000..a84cc74fb0f7b2962efc58d3d758aee52654aa8b GIT binary patch literal 27524 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 +
+ +
+
+ """ + # Generate the footer author = metadata.get('author', '') if isinstance(author, list): @@ -377,14 +399,10 @@ def generate_footer(metadata): footer = f""" Author(s): {author}
- Summary: {metadata.get('summary', '')}
+ Description:: {metadata.get('summary', '')}
UI version: {version_text}


- -
- -
-
+ {logo} """ footer = inspect.cleandoc(footer) return footer