From cbbf1db69984366094d78c24e660418ca0dc7a51 Mon Sep 17 00:00:00 2001 From: oleg Date: Thu, 17 Dec 2015 22:41:51 +0300 Subject: [PATCH] add preloader for build console --- app.js | 2 +- static/images/preloader.gif | Bin 0 -> 10895 bytes .../js/app/components/terminal/terminal.jade | 2 +- static/js/app/components/terminal/terminal.js | 33 ++++++++++++++++-- static/js/app/stores/terminal.js | 1 + 5 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 static/images/preloader.gif diff --git a/app.js b/app.js index 1e5d1fa..050a588 100644 --- a/app.js +++ b/app.js @@ -32,7 +32,7 @@ var server = http.createServer(function(req, res) { } if (req.url.indexOf('/data.io.js') === -1) { - if (/(js|css|fonts)/.test(req.url)) { + if (/(js|css|fonts|images)/.test(req.url)) { staticServer.serve(req, res); } else { // serve index for all app pages diff --git a/static/images/preloader.gif b/static/images/preloader.gif new file mode 100644 index 0000000000000000000000000000000000000000..a531cf94cc1782b67c8ada5164bb517a1b15a98a GIT binary patch literal 10895 zcmb`Nd03NYx`)5)d-7#p2#|y%Z0gX~nW@&!K)wVLHdzu3h{z5~R76x1M+35nXkA!c z0a1~nBd*j^i-=Y!I*Qg-OI;{h$1+}BY-gs^Gd)l8X-?0~*mJI0{_!6#u8Z97{d<1T z`zFE?{_3<06{14+B8c+zj{4if!;iQFu3!IZBK30LlkdJap6~8^G(P(6#MFTf z?LbHU?d!u|O{}^#*!^JCG18|!-BEFSICZ4&$v?k04t4iEhX46w>iO;;e)s`-u^;sh ztXPvZ5ethmy*wp^M1bF>{yUk@fPW{sezWV(M5tecHWZqbzhhUE9>zPS@8q%4na+^i zAL%P28?xWU*vq%c1nkYhCB5>QmEMo`9r4*RirRAf;(yCy6dQaN%7fIEb_$|0$`>G- z4M7Q6TVsXt)dsOxiY?9(E=`uMpVKi{Dj-R!4jk^8%M+51*!i1itL44{J!EC7H>OC` z_o%Wcm@sk0;i1%Fj4wEGn5;=nJ82@G+J4(0-2Lfi4|Bz1vCAyp^!2*i!$21}0aRcHusx)4{6N%08qfl1pbLj! z`0)gs5+Dl41&$G%9@mK(=)evY;&B>=?Ta%s^QX7pDdAaH0SbH~|&hS3m`(g2BMD

ujXqG> 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' + ); + + this.listenTo(buildStore, function(build) { + if (build.completed) { + this.removePreloader(); + } + }); + } window.onscroll = this.onScroll; }, + removePreloader: function() { + var preloader = document.getElementsByClassName( + 'terminal_preloader' + )[0]; + preloader.parentNode.removeChild(preloader); + }, componentWillUnmount: function() { window.onscroll = null; }, @@ -91,6 +117,9 @@ define([ this.data = build.data; this.renderBuffer(); } + if (this.props.showPreloader && build.buildCompleted) { + this.removePreloader(); + } }, shouldComponentUpdate: function() { return false; diff --git a/static/js/app/stores/terminal.js b/static/js/app/stores/terminal.js index d743ff5..7082b0a 100644 --- a/static/js/app/stores/terminal.js +++ b/static/js/app/stores/terminal.js @@ -36,6 +36,7 @@ define([ self.lines = self.lines.concat(data.lines); self.trigger({ buildId: build.id, + buildCompleted: build.completed, name: 'Console for build #' + build.id, data: _(self.lines).pluck('text') });