>From 738c4035b3f8978622e96c83c9bd7b9679ce747c Mon Sep 17 00:00:00 2001 From: Roel Janssen <r...@gnu.org> Date: Mon, 4 Jan 2016 21:05:02 +0100 Subject: [PATCH] website: packages: Add build status icons in the expanded view.
* website/www/packages.scm (package->sxml): Wrap the build status link in a div and prepend an icon to the div. * website/static/base/js/packages.js (show_hide): Fetch build status on expand. * website/static/base/css/packages.css (img.status-icon): Added css for icon padding. * website/static/base/img/status-icons/0.png: Add icon. * website/static/base/img/status-icons/1.png: Add icon. * website/static/base/img/status-icons/2.png: Add icon. * website/static/base/img/status-icons/3.png: Add icon. * website/static/base/img/status-icons/4.png: Add icon. * website/static/base/img/status-icons/5.png: Add icon. * website/static/base/img/status-icons/undefined.png: Add icon. --- website/static/base/css/packages.css | 5 +++- website/static/base/img/status-icons/0.png | Bin 0 -> 821 bytes website/static/base/img/status-icons/1.png | Bin 0 -> 732 bytes website/static/base/img/status-icons/2.png | Bin 0 -> 777 bytes website/static/base/img/status-icons/3.png | Bin 0 -> 736 bytes website/static/base/img/status-icons/4.png | Bin 0 -> 753 bytes website/static/base/img/status-icons/5.png | Bin 0 -> 777 bytes website/static/base/img/status-icons/undefined.png | Bin 0 -> 746 bytes website/static/base/js/packages.js | 27 +++++++++++++++++++++ website/www/packages.scm | 15 ++++++++---- 10 files changed, 41 insertions(+), 6 deletions(-) create mode 100644 website/static/base/img/status-icons/0.png create mode 100644 website/static/base/img/status-icons/1.png create mode 100644 website/static/base/img/status-icons/2.png create mode 100644 website/static/base/img/status-icons/3.png create mode 100644 website/static/base/img/status-icons/4.png create mode 100644 website/static/base/img/status-icons/5.png create mode 100644 website/static/base/img/status-icons/undefined.png diff --git a/website/static/base/css/packages.css b/website/static/base/css/packages.css index d9771be..97d0345 100644 --- a/website/static/base/css/packages.css +++ b/website/static/base/css/packages.css @@ -61,4 +61,7 @@ a#top { a#top:hover, a#top:focus { background-color:#333; color:#fff; -} \ No newline at end of file +} +img.status-icon { + padding-right: 1em; +} diff --git a/website/static/base/img/status-icons/0.png b/website/static/base/img/status-icons/0.png new file mode 100644 index 0000000000000000000000000000000000000000..3940d8c499c1867d5de7cc2608b5829683bea8ac GIT binary patch literal 821 zcmV-51Iqk~P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipq} z5eooq^e|2U00Om1L_t(I%YBkfXdP7)$A9O}+?jckycm-vY74g6SWRAP#DxaL>c;M* zpf0o})LKZ@Qd?+OD)_NbyQvG2qDVhnxN+k`M7oXON@9~f(^5Aj&=0Me#3XNK?!Cvw zdr4`l9{9t7bMEi_;r@mHsQyp-hk9#$!$u@rUA!{0bZBY*-}Yp!89CM9{GM4x&pf>A z@lE5$8yiLkda}Dvl*M9!i@(oZo|>O}?cBulw-0==m5Z-jxCvN){N>o!jg5~y_lK<L zuf@C+coZekh%L#zIzU}6T%GxJdiPJS-|67==&>rdN2{8}*AiS}AvWzL7to?bv|5m_ zDp9LC+?<&C7(hl&H4v|ZF1OdpdP<eI<ugmLZGbNe-W`0I9-r{e^oLqoc9Q(nO3%GI zSDN#CW(l!*BiI<9SX`Fia!c8rQubuD>M1+#dxnD>Uu3-hQAkq>HpX?ulK=)lBY85! zh7cPnE4b9+a!b)&V_WY-oV@1<H~b<`H}|79BE&`!vwa;P$lZwGC9rSsS+;kNQAEl> z*3S?1_wWQByL^CP1QkF;ROkbU0TjK4>ToWpd~p8(08XrY&-2MRg7C!kqx@MeU_(Fx zpg~2sa?^niXT=3^MZxADcQCay&Hj7`8%z(oe*1{#!X-@Mh)Rz*k8wc=;q1tnZS8Mt ze7-evUD;|?&$P-@S*Qi}ZF+&ew3lPozasHM+^UFIN|NP5?cXh(d+F!smK+S99-Z`A ze4@-OK8|oU!W)Pr!uWtG9g*{zv?__pYG-p|_M2M(9mrb_dEYI24W$aYHc?DsH10AI z8z!3*GoRg&#Pvj;92s*e$JOgo>e>W}1c~|1pa*~1+q}g8lrfo!JAE|t_R#Q_H#a}H zel3xxb5w43AV36IAO&h2t-&f_wW9)XfCuy+W?2{|woAuj00000NkvXXu0mjf(}aDt literal 0 HcmV?d00001 diff --git a/website/static/base/img/status-icons/1.png b/website/static/base/img/status-icons/1.png new file mode 100644 index 0000000000000000000000000000000000000000..74e9c24557c30fd12a6e66ce8f1efc3d67af234f GIT binary patch literal 732 zcmV<20wev2P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipq} z5eYDP8)9Gp00LY|L_t(I%YBkhNK{c2#((#|``-L%Msg$<uCf-1Gbt2gB2f_0E{GO^ zi-Hy@g)UmO3L>IKi%42jxCnx9<)TH4Kw4Rw7M3}hpd0O<5&h9oXWqQ`?rHI66tnu^ zz=iMJ@0|0Uqxc6Vpw)$Tz*b@EAbk8=o~l2JKmjNkr#E}z_)xm*&@QJb2O@;ue^8lx z_n|cQ;!=KX{aG>FK%um<DNz4B?U~Wck*+hU{8Pe(Sw(13fM|to*&{SGtM%7!?zgX1 zE^qHZbK9i3>ZZV?!AXENF=s=Fd<fPctUy@iN+IGdfGWm0%}$c9ZWg=@I0lj(ZP-t< zV8O}vP#%9p7(uX#1S_b(C(!{_T>#JwY7a~T92a)pdO&XUJ*n;<cAPp(<D-`}-g%61 z!AYRB2aZGkhLbaf@%bFG*ou7VM3yfc5D^ivR_a(jw_lbzk;UD}Tn;;97>#SkPBfxo zN3;ezH$ipe2B_E~|K3IH!c?5CK`9i9+@^rAgdo`1F!$tnyx!|b)dw4q7#v0yjzR=j z5Q`uzZ3u`kW&>0dLR100uN#21{!Ug04##sgwG#Re1z<yzSjLK~w#K)R^b(Z4EaGNR z#(=lC1%7>w8+5Y--%5mjyoG8BY4>rq+`+V_&q?u6r+_3F7nA`6Yy?pi#7FEp%2qg? zw>;e<05I)vEi~L*)rhZ9A|QZP;0cnkC^w)lZyDZpiFHgWI&l~Z6vx6EYXpq&T!##F zz&!tfPDAa0aYms13AEM8BsjIA>dy`oG3f#cAXSUHSOAoPN-aX-rOI!a(edPD>Lcy| O0000<MNUMnLSTZibUPFP literal 0 HcmV?d00001 diff --git a/website/static/base/img/status-icons/2.png b/website/static/base/img/status-icons/2.png new file mode 100644 index 0000000000000000000000000000000000000000..7f9534472ef236d718d71627c233d8f9f7172ee1 GIT binary patch literal 777 zcmV+k1NQuhP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipq} z5eXC9d=nA?00N0gL_t(I%YBngNK{c2fWP~m&#^Z;)+Cw^R%U-%Bt@YMQAs!bxTqk) zl%RqZ?pg#vv?vJL<RWkpxCqOQ5z%5GEf5P!Xb}#AAQ6g*<L`{qyqS6P?z=5!Ml{F+ z=ib9T=Y02Y?>U11$eAjt4wq9a1n%@aq48hLv7K}@W%iqA=?Fe4UtA2fDCcXtN{?Ms zOTk7p@+>gheV&T|-52zYJdsNt7=>GHyt&b)Us;TK)X!N<B-5Y(LxX)4h6?zl82sY) z_6F(R0s!c2;c2nSJ)a5wLhu$qeqIJ(J76VY^$)CD5Vg4bYJ?sD(a{7_Qd(pZE-i)< z9~60DZ}lPU$TUhpQJ|jb&^WOaEU%-MqKMTvp0{JzdT0htR&&4DOOwA4c6y<;>p7>d z_9MeXlpSc`)b$}s$|{+ic#m`uwgZmC^27||8h|cnHuAue4`u-@h57)fx%QcZ?Sp_~ z{(BEz6Fdgw8z^0;2|xo78oP82G!1kO5{o|we|wm7^ZV0nQY(|>Vl;se0{;d;DHf!Q za$Rs7C^_CmS;HfgOn{pv(AtML(1;^Jx*%PYQY>r$q-5AmBN8^mlVI+t2O#vaj>*>< z8?%Z;5>htUX@ryvceZ4|@lpc?{vr~kKGbd>!smhVKpAc_i~?L?va)6oiNi_^wG>75 zeMAQ`%hVjsu}T(PMZ2pYC1E`lCuTv!g5^k>wKzoMsHlaoQd|zrFtw$T0J@raU>H2k zzK2koe40S%8p4s>=^x=m?p)stn3!SoNCodSK@G5fbGs_V2ixJ?z$nAp&6Jj>k(YzF z)lu7ef}<O^Y3Ny=_;(gWwi*NQ06VgpgQbB4kj$zBNI?Aspg;nIJS#=r00000NkvXX Hu0mjfD62|e literal 0 HcmV?d00001 diff --git a/website/static/base/img/status-icons/3.png b/website/static/base/img/status-icons/3.png new file mode 100644 index 0000000000000000000000000000000000000000..6405a3ab3a4972cc05901bc318e887632bc698a7 GIT binary patch literal 736 zcmV<60w4W}P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipq} z5jhfbJr#EV00Ll1L_t(I%YBkfNK{c6hM#lJow@VVm>L=7N@<~^ViKgHX@PB9)FKL^ zMNrb;BB)gm(JBaXRbh)LB3iU;5sYn8A?QcS(IVRwqJ)M`(_HV|d%hNTR7mTC4-VhY z`@V<oRs16+cGBQ%Aq&`Gk;#r3zHKz8Rv!6YXdQ!mzd4ra92iP9@7ZdqYe6i*(jwl> zhp&a#BWGH2rDszIGPL9hYXB?D)BDZSbVv7L6)Z^b{j*XMf`FhfwT(ieP8IVLx3f9# z>^cQgecW);Tz1mnq`|nLV^PnRAzX%_7-jhv7h6ZU1)%c1AOUsGCg$UtAyx&B3vOc* zvh)cNFxz|Z^5X<P_&<^I63Sn|ZJ)r`tz)2LTrdeR$%wi7_#J95eI%LfA>Da|nsZ}R zpL~FcgOfmM7n}@(02%;8zjh+YCJE)qdjO=4j*>k11OWfdO-!;f;~>h=w+f&XHE2)@ zlm<Kh4*%7)r~oXFoI(~RQM$6BQ7CHH6bN&Kh*+=z#M({}@4AYF9!Q8gFpR11M=W4L zEP^n%3Scd{FhJQd*b?Y%-2fEt@1ppyE8<8s5PD#Juw|5l<feNoXPn$k!l|JYuR>x~ zDC2@#zXS1RBOj;?!H)t#Y4r-y`~m~u0JOcuo7&4@xyaoR&@L=5&!QYazy<}Z58@&A zH!Acww9ZHsGhGQCt`|UjixOGu#Wj*qC@0`_%S(ng1ORy7OFNpOK(Q}~1P}v^@LYwQ zZy)Ci{|TMa(YFBexQ*<iHkwwN35}_cs=pN|z*NXwAX&*3urg2ryh;W@2*@9rOzSdr S7VOsm0000<MNUMnLSTYk-#HQh literal 0 HcmV?d00001 diff --git a/website/static/base/img/status-icons/4.png b/website/static/base/img/status-icons/4.png new file mode 100644 index 0000000000000000000000000000000000000000..6b6fca4619ca2cb3537b7fc629e15cfda9e170af GIT binary patch literal 753 zcmV<N0uKF&P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyf2 z0U`zi%4o9y00MDIL_t(I%YD<!Yh6_o2JqiL=bo6iS|5$cz$P&<(m@SGQS8J)VnPK= z2URS6pd#qhiQ-sC`WIMQArM4ypbk0_9klouRH_AAW2;S|P<yLQ8clBQd29zak&uE5 zHhb;G`q=AR-&$<5SKC{6Kf5N`H_7w^^uw`^WP7^W_CUSi;Af))$M^0Y>)FxWNfq6^ zwe0NWg=;5%UVI6sw&sVek0Wiqc&$5mb}?;>^Yunp%UbcQV5qki2h%Fd{#~8;py}mJ zOuFg3n0c=^IQDxHHS;3e*~UFJ?n-EH<7QEXpYkYYd^E9izViKl6&y(P-d(eNU&6hC zt~GXzkI64z6eB$oPx$5Q@BGujjmY(i#UT4~U6DY0>dj7KcM!WvranAr`iBdK#ve2K z%#5eM`qsXW=5!TwC3NEc%Ih!GHYzxrIlVKncV|Lhjlq#IPo2FWmZgxkSf1YVuq#*Q z{gHDma=rA)Z0=yP!J{_`Vj4&z`TRv!-+qIT5Tk`x4l5RZl~$yIq=o6D<%>bRB$SZ? zz55Rsc;|hw*`TUCczjmJqZ0}gkt&Lj-yk`fQAMZLD;ij7uw&{uaPILvetdFwOQyjg zt0fKMI-%s7=Qn#W6J&jv=B5fgYxEBfi1n+WDY2ASmT)7A^-4I|Y++NlMD<8w0sCX1 znQ?1n#Y$wU<j)xW6~!gOawV)rGZXDDoy)gP;-So28Sj?FqSf6HB8W+A?n9G9bGf<O zCK1k8&Wxl!O&Ljo;SdRd5CnX_8cly(IOG59jtymCD)rE0VtC7Mx2@w=3JEf_qhsT2 jtdksTSjD=Q+9mu8Bv<9ht)gHV00000NkvXXu0mjfiH2Nr literal 0 HcmV?d00001 diff --git a/website/static/base/img/status-icons/5.png b/website/static/base/img/status-icons/5.png new file mode 100644 index 0000000000000000000000000000000000000000..7f9534472ef236d718d71627c233d8f9f7172ee1 GIT binary patch literal 777 zcmV+k1NQuhP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipq} z5eXC9d=nA?00N0gL_t(I%YBngNK{c2fWP~m&#^Z;)+Cw^R%U-%Bt@YMQAs!bxTqk) zl%RqZ?pg#vv?vJL<RWkpxCqOQ5z%5GEf5P!Xb}#AAQ6g*<L`{qyqS6P?z=5!Ml{F+ z=ib9T=Y02Y?>U11$eAjt4wq9a1n%@aq48hLv7K}@W%iqA=?Fe4UtA2fDCcXtN{?Ms zOTk7p@+>gheV&T|-52zYJdsNt7=>GHyt&b)Us;TK)X!N<B-5Y(LxX)4h6?zl82sY) z_6F(R0s!c2;c2nSJ)a5wLhu$qeqIJ(J76VY^$)CD5Vg4bYJ?sD(a{7_Qd(pZE-i)< z9~60DZ}lPU$TUhpQJ|jb&^WOaEU%-MqKMTvp0{JzdT0htR&&4DOOwA4c6y<;>p7>d z_9MeXlpSc`)b$}s$|{+ic#m`uwgZmC^27||8h|cnHuAue4`u-@h57)fx%QcZ?Sp_~ z{(BEz6Fdgw8z^0;2|xo78oP82G!1kO5{o|we|wm7^ZV0nQY(|>Vl;se0{;d;DHf!Q za$Rs7C^_CmS;HfgOn{pv(AtML(1;^Jx*%PYQY>r$q-5AmBN8^mlVI+t2O#vaj>*>< z8?%Z;5>htUX@ryvceZ4|@lpc?{vr~kKGbd>!smhVKpAc_i~?L?va)6oiNi_^wG>75 zeMAQ`%hVjsu}T(PMZ2pYC1E`lCuTv!g5^k>wKzoMsHlaoQd|zrFtw$T0J@raU>H2k zzK2koe40S%8p4s>=^x=m?p)stn3!SoNCodSK@G5fbGs_V2ixJ?z$nAp&6Jj>k(YzF z)lu7ef}<O^Y3Ny=_;(gWwi*NQ06VgpgQbB4kj$zBNI?Aspg;nIJS#=r00000NkvXX Hu0mjfD62|e literal 0 HcmV?d00001 diff --git a/website/static/base/img/status-icons/undefined.png b/website/static/base/img/status-icons/undefined.png new file mode 100644 index 0000000000000000000000000000000000000000..1d982e9ca39ac1cd59445ef529e8741e30d9b7ae GIT binary patch literal 746 zcmV<G0u}v<P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipq} z5iuw2S6f^F00L@BL_t(I%YBm1OI1-2$3N%Cz4yH*L>8H31r|iLYGcr*T13l&QWph5 z1t}p>geirag4EYS7e$M}Tve!T3JU5EXjg#{6yYK*w35tU@7;UuIj6;aW*RjxFmvX7 zzw@181pl(DgY{J9b_0%|3!@azPT)NVvEtiu)-wd1&8XtY$wT$EeS0^p+fbd4a2|e? zVn(NC#$S$oX)U!kK3iWLX8KCg9|TL_TaQQfZQXc$+6w=EE*8#9z$5T%s|tKgfOzxy z+nw^|V{Lyc=p8N+=G%#K5amDz;AB>l4pIYg8R8No<x6xl^=AY<L*Q%;QGSYi6+{Jy z@|@mL!$3nF04H9J^Kk5Y1}-mpN(+M0Y(&?oMAF#|N?$~W5QGrr$QKF>G}JL(woE6E z2m7{Us=^4uP!I$V7Fqx@jZ*DLDv%nqMnw@v-p<hSA!goXQ>ZY?#!?!T_DFF6Kvy<V zjT9gy2+6z?JpG#D53dE_%)2=(S*_AjfT&(3a7^LcF1!;s2iAg1xjhjx9y{)TS^#gs zyUg((m|PygyB9bsNYiZFCZ<*z+BQe@ZqFl48BCJZtO1(}oP9}gq@uvY{V3gyPCQBp zgkW;U@%l%J>BQm|<}zSX29tP<adb2duD*j-!sxEhAxbH{4zLJ7pmF%r;B4x>F#?ku zrK9o5N&<l1kuL4+^+IXZ2T56o$`v{!Mn`_JutuaxpW{m7y}vJU>7o149_f9bw&tL= z27purq)I=xo(o(%@sa<SB+ThbtT=yjH?22z{%#b6suGLU3Iw2l0EmEm#h1toP^x$g cq<{tdFX?&$j<f=7dH?_b07*qoM6N<$f>m@rG5`Po literal 0 HcmV?d00001 diff --git a/website/static/base/js/packages.js b/website/static/base/js/packages.js index c8d9fc4..246d828 100644 --- a/website/static/base/js/packages.js +++ b/website/static/base/js/packages.js @@ -1,5 +1,27 @@ /* license: CC0 */ +function set_build_status (pkg_string) +{ + /* Find the element to put the status icon in. */ + var pkgIcon = document.getElementById("icon-"+ pkg_string); + + /* Don't bother when the icon doesn't exist. */ + if (pkgIcon != null) + { + var xhttp = new XMLHttpRequest(); + xhttp.onreadystatechange = function() { + if (xhttp.readyState == 4 && xhttp.status == 200) { + + /* The API call returns JSON. Parse it, and change the icon's source. */ + var pkgInfo = JSON.parse(xhttp.responseText); + pkgIcon.src = "../static/base/img/status-icons/"+ pkgInfo[0]["buildstatus"] + ".png"; + } + } + xhttp.open("GET", "http://hydra.gnu.org/api/latestbuilds?nr=1&project=gnu&jobset=master&job="+ pkg_string, true); + xhttp.send(); + } +} + function show_hide(idThing) { if(document.getElementById && document.createTextNode) { @@ -9,6 +31,11 @@ function show_hide(idThing) var thingLink = thing.previousSibling.lastChild.firstChild; if (thing) { if (thing.style.display == "none") { + var column = thing.parentNode; + var pkg_icons = column.getElementsByTagName('img') + for (var i=0; i < pkg_icons.length; i++) { + set_build_status (pkg_icons[i].id.slice(5)); + } thing.style.display = ""; thingLink.data = 'Collapse'; } else { diff --git a/website/www/packages.scm b/website/www/packages.scm index 6ea974b..69b0623 100644 --- a/website/www/packages.scm +++ b/website/www/packages.scm @@ -167,14 +167,18 @@ decreasing, is 1." (define (status package) (define (url system) - `(a (@ (href ,(string-append "http://hydra.gnu.org/job/gnu/master/" + `(div (img (@ (src ,(image-url "status-icons/undefined.png")) + (id ,(string-append "icon-" (package-full-name package) "." system)) + (class "status-icon") + (alt "Unknown") + (title "Unknown"))) + (a (@ (href ,(string-append "http://hydra.gnu.org/job/gnu/master/" (package-full-name package) "." system)) (title "View the status of this architecture's build at Hydra")) - ,system)) + ,system))) - `(div "status: " - ,(list-join (map url + `(div ,(list-join (map url (lset-intersection string=? %hydra-supported-systems @@ -229,8 +233,9 @@ description-ids as formal parameters." (a (@ (href ,(package-home-page package)) (title "Link to the package's website")) ,(package-home-page package)) - ,(status package) ,(patches package) + (br) + ,(status package) ,(if js? (insert-js-call description-ids) "")))))) -- 2.5.0
Ludovic Courtès writes: > Roel Janssen <r...@gnu.org> skribis: > >> I've attached a patch that adds status icons to the links in the >> expanded view. It only loads when the user clicks on "expand". > > This is great! > > Minor things: I would move the patch list above the status, and remove > the “status:” heading. I made these changes. I inserted a line break between the patch list and the build status icons because I think that looks a little less messy. >> We might need to add a HTTP header from the GNU server to allow >> loading data from external sources: >> >> https://en.wikipedia.org/wiki/Cross-origin_resource_sharing > > Indeed, because here the requests get blocked. Could you get in touch > with webmast...@gnu.org and report back? At last! I received an e-mail today that the sysadmins made the change to allow fetching data from hydra.gnu.org. So now it should work once it is uploaded to gnu.org. >> I hope my commit message is OK this way. > > It’s almost perfect. ;-) The only missing bits are the changes to > packages.css that are not mentioned, and the added files that must be > listed. I hope it's perfect now. Kind regards, Roel Janssen