From 738c4035b3f8978622e96c83c9bd7b9679ce747c Mon Sep 17 00:00:00 2001 From: Roel Janssen 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)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_lKrdN2{8}*AiS}AvWzL7to?bv|5m_ zDp9LC+?<&C7(hl&H4v|ZF1OdpdPM1+#dxnD>Uu3-hQAkq>HpX?ulK=)lBY85! zh7cPnE4b9+a!b)&V_WY-oV@1 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 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 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