From 0b0cb64900b0971c0d74c44e277d133bfa1eea04 Mon Sep 17 00:00:00 2001 From: henrykeen Date: Mon, 15 May 2017 17:49:26 +0100 Subject: [PATCH 1/4] Resolve the promise after the first image loads --- src/components/images/draw.js | 2 +- test/jasmine/assets/plotly.png | Bin 0 -> 4195 bytes test/jasmine/karma.conf.js | 4 +++- test/jasmine/tests/plot_api_test.js | 29 ++++++++++++++++++++++++++++ 4 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 test/jasmine/assets/plotly.png diff --git a/src/components/images/draw.js b/src/components/images/draw.js index 8242e72f23f..1f2b6a2bc3a 100644 --- a/src/components/images/draw.js +++ b/src/components/images/draw.js @@ -99,11 +99,11 @@ module.exports = function draw(gd) { var dataURL = canvas.toDataURL('image/png'); thisImage.attr('xlink:href', dataURL); + resolve(); }; thisImage.on('error', errorHandler); - thisImage.on('load', resolve); img.src = d.source; diff --git a/test/jasmine/assets/plotly.png b/test/jasmine/assets/plotly.png new file mode 100644 index 0000000000000000000000000000000000000000..7ab3d2463f5e6a689bd7a3e506174a5d86bab5bf GIT binary patch literal 4195 zcmV-p5S;IcP)i_@x@&EsIz4ZU}_2%^bP?YA*<@-mCWhEcjH~DFG)~h101o>}L_t(|ob8=|Tido4$8FEG z*i}N}^oG?WU4Da0HZFxU5JpPLx-IMNfYMRYwdMBxzltkMa%|a>W2cT|^Z5G@&qHiU z*2g-Mj*evMyIh%;lq*-RT)A@P%9Sfuu3Wit<$BO6v>C0tIJu&#UEFhNy6)oSimJ_8 z!;#u5th+q9B5Jd&DRaS64lrxV0cKn|z>F&gm~rI*Gp-z9#+3uixN?9QR|tRwMv0d& zSD-=w+;KbG_O=r*Vy+;C09a{kI8rN#7cp0m!T^NM6-t5t=>o~WR+q!@0j$A<0SMLt zQ2$WwB31vrx-1^ma1L))_>QbxDF*l$Xh_B?0jgFG;QJilDx^P#GSX@RS~0Z6?{P8@*nVFA?NYDocr18kpFPLQTe(XeeHz~Sf&B~V03Y>NqujrY zH{;ANF@Rg$5)$?E4hN-fPlga`O0V3y;?A5F0KA`d%RR;NHlQTBb-wpwd{I`gdrQW- z6Sd|m@C-ox2LIaqOY{W&0lB~Uljsp=qTluF5-qK!$f&rbVr;Qti2=l`-|7{9oL8o5 zJqebgL0}#{_xmb?0Cpw@N=~tpKxr7}8?OUIzyD&`xyYI$aA;r20(^@j0KgN`6O8Wg z1*&kpZ>tJ%0-pD=Fgi8?Q(AP9arAX3mROtw0a|r+i{8%rsw#T~H?DmCCow?%{uFpq zKo^!@Fg2^cH5C6&Be0vvy_ZcyYm{0A6*faGqG1?2;LeW!}b z@oV+~Y6m}jhImwASxzKvZsUx)r(#3^hi{?F`T_vwX(*~Y4gHyA@a$_f=$KFe!2M5z z&@JCY>Mu#d`C0ggJb?Q%;1pIhQ~>9lhw)3enhRF40F}d&s>Kf~Yo!R@#_0QYaOaWMFCqS&K@s$Kku9Du|u%dmFkycPOr z@U;cOhQL%uRKfr;#0_S^s1I5#$&PwP7lf-~`2dasc9~W5B@m+qDe9!lp~xAx(h|kZYf8Fu%H| z0UUrd5uQmxmiQ&E;~s0FBLSo)&)bTvm`^gr2#j~}1MH*|;C8F*(${bq(YjYIxxZeM z9>(nj;Q^#0!2@m@yJR2(ubAc;37|AkNe12)zDs@LR{>8bG@*iLjz>!YtU;G&u^uiX z3Q+Jij$it`ARK@}gAAl|GUQ`J+oJ&--H=x7oplg5n%K>TB?5>hCPBA-o0bFUx+fw) zLFLod1FoDg0tX;TL%S5%vDakjft~Y312~+}a(pg9@4FD5lVljl}`Ddq*7%uptTtGR2#`+LA?ui>gVP10NuD!%>xR0HG+;h?zJjIy zv;ce^8lcG8jI>2o^cZhRRDio=)lYTX(0$SX8w;FY+~uVAr<5T2#e7l;i2hhkX#q&# zxMElQ0AJ&40ya>-HvRooH1i}rU;M@#!&bJ6-8AE4CvU^pw#8t8R}K{d-LT>#w`y#&DiX$%0VH^y+>dKApT zqOH>cfR-De3g?DY(ZG=}ekZirO}93)2vE7)5#>PvUValm8XM!9^O1dj-npS)LV%Jq zo^;hYLX=i-x+KD8t>!qvdehVa4D16Jw!mE@h88G|u{Xx?x)3LW*T>3H06<9^4eksl z6iYMsS1nX?!@;Ae#nb_8tiKPGh9ov-zG60>`di#+_)A!fLI9M8$dcL-Sj&X;uN$B+B;i~pbsy|XBjZD1XT@TxOwn-2g>VUGwFnz}1M)!47dc5Mo>CG63nDfXmwd2j?kT z!g4DtK&k(Q9LlxCLhsrEiWYQ9OocmElDD8sLRL(H>9ONh7+6aIBxV!-F4-?ls4Zxr z0iuB|d64KXnY9BHyme&q%&dfS0QSkU9QdA_hP|f9Rv-ZwaepB3#wd-Sq&_Z%+r=kV zcz`m{IqtzGMUBFF}c?HY7I2_=}q5 zFi@fZq$~Uj0TwEZ+A9OtbZ67#?t62>3OPU0eFsd_;)WHz3}}L6zNXb!153vsTt~DR zAo0eaeCX)7=)0nT&yiykp#_q5Z7#CQZ4)?B<(-uQtf{ViYTVtY^T6Jke;7m7;5@C9 z2XOcb_)M)W5><%mkFD2_0b7m&oD0|-!-JpjU#;xxb;pz0tX^S9HW2`l*r~>%>)NKP z>XqK=0G7SSbBQWTX6JhJap;B>jfr69MrMyPPKJvUD_Vk5kxdQ;=ol4r_ zb38hRzk072R8>ub<}LFmet-qRPU>?qNLm=Nol1bH_F01Z1@+Ujb#ZiM}Io~ zhd%y7y@TF$IqvSH{TX#*9KCVUD0HrA-~#MY;<@6*vIY5Pu{TD+HSG^(`pxdp z8ILqCE)*JSahvHa3+(~f&KP2DnNom=O0C%3+3a*Scg`+Mg>PB~8$4gzyp7&fbDN~G z_tM_<$=Se82S_qF_;It{ZllXj?2Li{?w`&}3x4tzvI@bAty$Vpv#fnu_lzV6U zY*HnAt`*)69gornaAQiw`Wi5L-O{Ypn;!t6c#WcHi}ibIEK$uECXw*|LRe>E|5$0Uc^Z_(p z?EhmwycL-5#ESU5{lY^I#`7K3Y#ItY;<{)C#yk^pxfu%JmVF!ayY8Oa@6hGq7U(J} zbQKo(j6Fvw1o)@4d!xC63+$TpACoFRW@Pt5amddF72oidXn5^8)gl}~>MfCF)xY{d zw(^ECq1+QjtiIYeu;s}OP}2xNZC?4B7obJ~I#&>YZlYd*8U^Uw0|Np6VjWvlRT+dD z=yAf9gAV!`%ry3-7zG*!Q&E)+ui2AY!U42fE^h((J#C$=8RSeO26w=JCW-=JDcq+C z+NSHnaT^$*`yT|L`yVaq%xw49<}g6-=jXO-?tAb=-g}Q<4nQ<#JGnDd@?huiM-h# z6R!{3=kg}L!BR|g5Gb{kn7EmAx(w7qFYuF8uJfCv^{nIqhft!!2OSD2k~knPoUrsbA88mJa%|jS{9YLvpMPBK5)DEQmPzaszg^lxXWLBY0?&HfEy8L57iTDOssA% zmXnmzrwjq?%;n&SKKfuTA>N)6!nvg&B+!fyU zoiSw$pk{>p7A^x&F_QfPa+1mvKus%$J>v6e!?_Fegx^)lz8>Ly8cXd9Pe%F&)R~dp z9k5gkeLCcM7ua`|1>aD67~0yydXZXy(rD*wdQ#lmD^|jWtdQH9m6JVuSL_GbrAq~( tbr&O8%M~#L50)!eu3Qga-{s1*{tq}#6|YgRmU#dG002ovPDHLkV1nMDHf{g_ literal 0 HcmV?d00001 diff --git a/test/jasmine/karma.conf.js b/test/jasmine/karma.conf.js index 8f8af91fbf7..448c525c7e9 100644 --- a/test/jasmine/karma.conf.js +++ b/test/jasmine/karma.conf.js @@ -98,6 +98,7 @@ var pathToShortcutPath = path.join(__dirname, '..', '..', 'tasks', 'util', 'shor var pathToMain = path.join(__dirname, '..', '..', 'lib', 'index.js'); var pathToJQuery = path.join(__dirname, 'assets', 'jquery-1.8.3.min.js'); var pathToIE9mock = path.join(__dirname, 'assets', 'ie9_mock.js'); +var pathToPlotlyImage = path.join(__dirname, 'assets', 'plotly.png'); function func(config) { @@ -247,7 +248,8 @@ if(isFullSuite) { func.defaultConfig.files.push( pathToJQuery, - pathToMain + pathToMain, + pathToPlotlyImage ); func.defaultConfig.preprocessors[pathToMain] = ['browserify']; diff --git a/test/jasmine/tests/plot_api_test.js b/test/jasmine/tests/plot_api_test.js index 24337538273..5148e3813df 100644 --- a/test/jasmine/tests/plot_api_test.js +++ b/test/jasmine/tests/plot_api_test.js @@ -100,6 +100,35 @@ describe('Test plot api', function() { }) .then(done); }); + + it('accepts images in layout which it renders', function(done) { + + Plotly.plot(gd, + [{x: [1, 2, 3], y: [1, 2, 3]}], + { + width: 500, + height: 500, + images: [{ + x: 1, + y: 0, + sizex: 0.2, + sizey: 0.2, + source: 'base/assets/plotly.png', + xanchor: 'right', + yanchor: 'bottom', + xref: 'paper', + yref: 'paper', + sizing: 'contain', + layer: 'above', + opacity: 0.3 + }] + }, + {} + ).then(function() { + var image = document.querySelector('g.layer-above g.imagelayer image'); + expect(image).not.toBe(null); + }).catch(fail).then(done); + }); }); describe('Plotly.relayout', function() { From 03e8b8b5f59e0dd5740561e7ce4dc87753539c37 Mon Sep 17 00:00:00 2001 From: henrykeen Date: Tue, 16 May 2017 16:07:58 +0100 Subject: [PATCH 2/4] Remove changes related to test - there is already coverage --- test/jasmine/karma.conf.js | 4 +--- test/jasmine/tests/plot_api_test.js | 29 ----------------------------- 2 files changed, 1 insertion(+), 32 deletions(-) diff --git a/test/jasmine/karma.conf.js b/test/jasmine/karma.conf.js index 448c525c7e9..8f8af91fbf7 100644 --- a/test/jasmine/karma.conf.js +++ b/test/jasmine/karma.conf.js @@ -98,7 +98,6 @@ var pathToShortcutPath = path.join(__dirname, '..', '..', 'tasks', 'util', 'shor var pathToMain = path.join(__dirname, '..', '..', 'lib', 'index.js'); var pathToJQuery = path.join(__dirname, 'assets', 'jquery-1.8.3.min.js'); var pathToIE9mock = path.join(__dirname, 'assets', 'ie9_mock.js'); -var pathToPlotlyImage = path.join(__dirname, 'assets', 'plotly.png'); function func(config) { @@ -248,8 +247,7 @@ if(isFullSuite) { func.defaultConfig.files.push( pathToJQuery, - pathToMain, - pathToPlotlyImage + pathToMain ); func.defaultConfig.preprocessors[pathToMain] = ['browserify']; diff --git a/test/jasmine/tests/plot_api_test.js b/test/jasmine/tests/plot_api_test.js index 5148e3813df..24337538273 100644 --- a/test/jasmine/tests/plot_api_test.js +++ b/test/jasmine/tests/plot_api_test.js @@ -100,35 +100,6 @@ describe('Test plot api', function() { }) .then(done); }); - - it('accepts images in layout which it renders', function(done) { - - Plotly.plot(gd, - [{x: [1, 2, 3], y: [1, 2, 3]}], - { - width: 500, - height: 500, - images: [{ - x: 1, - y: 0, - sizex: 0.2, - sizey: 0.2, - source: 'base/assets/plotly.png', - xanchor: 'right', - yanchor: 'bottom', - xref: 'paper', - yref: 'paper', - sizing: 'contain', - layer: 'above', - opacity: 0.3 - }] - }, - {} - ).then(function() { - var image = document.querySelector('g.layer-above g.imagelayer image'); - expect(image).not.toBe(null); - }).catch(fail).then(done); - }); }); describe('Plotly.relayout', function() { From d1e86959abcc6ae03d4224d5e6811d7b06700ab7 Mon Sep 17 00:00:00 2001 From: henrykeen Date: Tue, 16 May 2017 16:09:56 +0100 Subject: [PATCH 3/4] Add comment to `resolve` call --- src/components/images/draw.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/components/images/draw.js b/src/components/images/draw.js index 1f2b6a2bc3a..0c8e114e983 100644 --- a/src/components/images/draw.js +++ b/src/components/images/draw.js @@ -99,6 +99,10 @@ module.exports = function draw(gd) { var dataURL = canvas.toDataURL('image/png'); thisImage.attr('xlink:href', dataURL); + + // resolve promise in onload handler instead of on 'load' to support IE11 + // see https://github.com/plotly/plotly.js/issues/1685 + // for more details resolve(); }; From 783c48f7bb35c271bd557a6b1e9fb356c1c6cbd8 Mon Sep 17 00:00:00 2001 From: henrykeen Date: Tue, 16 May 2017 16:11:41 +0100 Subject: [PATCH 4/4] Remove plotly image - not required now test has been deleted --- test/jasmine/assets/plotly.png | Bin 4195 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 test/jasmine/assets/plotly.png diff --git a/test/jasmine/assets/plotly.png b/test/jasmine/assets/plotly.png deleted file mode 100644 index 7ab3d2463f5e6a689bd7a3e506174a5d86bab5bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4195 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