>From a37d4ff3d0a0abe676ce7458d11f8797d6bd30ac Mon Sep 17 00:00:00 2001 From: Roel Janssen Date: Tue, 24 Nov 2015 14:08:34 +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 | 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/img/status-icons/unknown.png | Bin 0 -> 746 bytes website/static/base/js/packages.js | 27 +++++++++++++++++++++ website/www/packages.scm | 9 +++++-- 11 files changed, 38 insertions(+), 3 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 create mode 100644 website/static/base/img/status-icons/unknown.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)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipq} z5eooq^e|2U00Om1L_t(I%YBkfXdP7)$A9O}+?jckycm-vY74g6SWRAP#DxaL>c;M* zpf0o})address@hidden)address@hidden(^5Aj&=0Me#3XNK?!Cvw zdr4`l9{9t7bMEi_;address@hidden@rUA!{0bZBY*-}Yp!89CM9{GM4x&pf>A address@hidden@(oZo|>O}?cBulw-0==m5Z-jxCvN){N>o!jg5~y_lKrdN2{8}*AiS}AvWzL7to?bv|5m_ zDp9LC+?<&C7(hl&H4v|ZF1OdpdPM1+#dxnD>Uu3-hQAkq>HpX?ulK=)lBY85! zh7cPnE4b9+a!b)&address@hidden z*3S?1_wWQByL^CP1QkF;ROkbU0TjK4>ToWpd~p8(08XrY&address@hidden(Fx zpg~2sa?^niXT=3^MZxADcQCay&Hj7`8%z(address@hidden)Rz*k8wc=;q1tnZS8Mt ze7-evUD;|?&address@hidden&ew3lPozasHM+^UFIN|NP5?cXh(d+F!smK+S99-Z`A address@hidden|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)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipq} z5eYDP8)9Gp00LY|L_t(I%YBkhNK{c2#((#|``-L%Msg$IKi%42jxCnx9<)TH4Kw4Rw7M3}hpd0O<5&h9oXWqQ`?rHI66tnu^ address@hidden|0Uqxc6Vpw)address@hidden)xm*&@QJb2O@;ue^8lx z_n|cQ;!=KX{aG>FK%umZZV?!AXENF=s=Fd#JwY7a~T92a)pdO&XUJ*n;#SkPBfxo zN3;ezH$ipe2B_E~|address@hidden|b)dw4q7#v0yjzR=j z5Q`uzZ3u`kW&>0dLR100uN#21{!Ug04##sgwG#Re1zw8+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| O0000Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipq} z5eXC9d=nA?00N0gL_t(I%YBngNK{c2fWP~m&#^Z;)address@hidden) zl%RqZ?pg#vv?vJLaddress@hidden@W%iqA=?Fe4UtA2fDCcXtN{?Ms address@hidden>gheV&T|-52zYJdsNt7=>GHyt&b)Us;TK)X!Np7>d z_9MeXlpSc`)b$}s$|{+ic#m`uwgZmC^27||8h|address@hidden)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>address@hidden|@lpc?{vr~kKGbd>!smhVKpAc_i~?L?va)6oiNi_^wG>75 zeMAQ`%hVjsu}T(PMZ2pYC1E`lCuTv!g5^k>wKzoMsHlaoQd|address@hidden>H2k zzK2koe40S%8p4s>=^x=m?p)address@hidden&6Jj>k(YzF z)lu7ef}Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipq} z5jhfbJr#EV00Ll1L_t(address@hidden>L=7N@ zhp&a#BWGH2rDszIGPL9hYXB?D)BDZSbVv7L6)Z^b{j*XMf`FhfwT(ieP8IVLx3f9# z>^cQgecW);Tz1mnq`|nLV^PnRAzX%_7-jhv7h6ZU1)%c1AOUsGCg$UtAyx&B3vOc* zvh)cNFxz|Z^5XDa|nsZ}R zpL~FcgOfmM7n}@(02%;8zjh+YCJE)qdjO=4j*>k11OWfdO-!;f;~>h=w+f&XHE2)@ zlmx~ address@hidden;?!H)t#Y4r-y`~m~u0JOcuo7&address@hidden&@L=5&!QYazy<}Z58@&A zH!Acww9ZHsGhGQCt`|address@hidden(ng1ORy7OFNpOK(address@hidden zZy)Ci{|TMa(YFBexQ*Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyf2 z0U`zi%4o9y00MDIL_t(I%YD)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 address@hidden(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$wUPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipq} z5eXC9d=nA?00N0gL_t(I%YBngNK{c2fWP~m&#^Z;)address@hidden) zl%RqZ?pg#vv?vJLaddress@hidden@W%iqA=?Fe4UtA2fDCcXtN{?Ms address@hidden>gheV&T|-52zYJdsNt7=>GHyt&b)Us;TK)X!Np7>d z_9MeXlpSc`)b$}s$|{+ic#m`uwgZmC^27||8h|address@hidden)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>address@hidden|@lpc?{vr~kKGbd>!smhVKpAc_i~?L?va)6oiNi_^wG>75 zeMAQ`%hVjsu}T(PMZ2pYC1E`lCuTv!g5^k>wKzoMsHlaoQd|address@hidden>H2k zzK2koe40S%8p4s>=^x=m?p)address@hidden&6Jj>k(YzF z)lu7ef}Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipq} address@hidden(I%YBm1OI1-2$3N%Cz4yH*L>8H31r|iLYGcr*T13l&QWph5 z1t}p>address@hidden;UuIj6;aW*RjxFmvX7 address@hidden(DgY{J9b_0%|address@hidden)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>l4pIYg8R8NoG}JL(woE6E address@hidden@v-pZY?#!?!T_DFF6KvyBQm|<}zSX29tPF#?ku zrK9o5N&7o149_f9bw&tL= z27purq)I=xo(o(address@hiddenaddress@hidden literal 0 HcmV?d00001 diff --git a/website/static/base/img/status-icons/unknown.png b/website/static/base/img/status-icons/unknown.png new file mode 100644 index 0000000000000000000000000000000000000000..1d982e9ca39ac1cd59445ef529e8741e30d9b7ae GIT binary patch literal 746 zcmVPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipq} address@hidden(I%YBm1OI1-2$3N%Cz4yH*L>8H31r|iLYGcr*T13l&QWph5 z1t}p>address@hidden;UuIj6;aW*RjxFmvX7 address@hidden(DgY{J9b_0%|address@hidden)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>l4pIYg8R8NoG}JL(woE6E address@hidden@v-pZY?#!?!T_DFF6KvyBQm|<}zSX29tPF#?ku zrK9o5N&7o149_f9bw&tL= z27purq)I=xo(o(address@hiddenaddress@hidden 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 caf54dd..1375486 100644 --- a/website/www/packages.scm +++ b/website/www/packages.scm @@ -162,11 +162,16 @@ 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/unknown.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 -- 2.5.0