Hopefully this will be helpful for someone. I've struggled with an elegant solution to this problem the last couple days, and found something that worked out quite nicely. http://stackoverflow.com/questions/38952724/how-to-coordinate-rendering-with-port-interactions-elm-0-17/42451273#42451273
On Sunday, November 13, 2016 at 4:00:15 AM UTC-7, Austin Bingham wrote: > > That definitely looks like it would address the issues I'm seeing. Thanks > for pointing it out! > > On Sun, Nov 13, 2016 at 12:53 AM أحمد حبنكة <[email protected] > <javascript:>> wrote: > >> >> >> بتاريخ الأربعاء، 9 نوفمبر، 2016 10:11:06 ص UTC+2، كتب Austin Bingham: >>> >>> I'm trying to use Chart.js from my elm app, and I'm running into some >>> errors that I can't sort out. In short, I've got a elm-to-javascript port >>> that takes in a data structure describing the chart I want to draw. Then on >>> the javascript side I've got a subscription to that port that renders that >>> chart. A trimmed version of that function looks like this: >>> >>> var brooksChart = null; >>> >>> function chart(val) { >>> var datasets = ... // calculate data sets from `val` >>> >>> var ctx = document.getElementById("bark-spider-canvas"); >>> >>> if (brooksChart) { >>> brooksChart.destroy(); >>> } >>> >>> brooksChart = new Chart(ctx, { >>> type: 'line', >>> data: { >>> datasets: datasets >>> }, >>> options: { >>> scales: { >>> xAxes: [{ >>> type: 'linear', >>> position: 'bottom' >>> }] >>> } >>> } >>> }); >>> }; >>> >>> When I run this and pass data into the port, the chart is rendered >>> correctly. But, at some point after the "new Chart(...)" call completes, I >>> get errors in the javascript console like this: >>> >>> bark_spider.js:8139 Uncaught TypeError: Cannot read property >>> 'childNodes' of undefined(…)addDomNodesHelp @ >>> bark_spider.js:8139addDomNodesHelp @ bark_spider.js:8147addDomNodesHelp @ >>> bark_spider.js:8147addDomNodesHelp @ bark_spider.js:8147addDomNodesHelp @ >>> bark_spider.js:8147addDomNodes @ bark_spider.js:8066applyPatches @ >>> bark_spider.js:8195updateIfNeeded @ bark_spider.js:7232 >>> >>> The fallout of this seems to be that the elm runtime gets confused, at >>> least insofar as I don't receive Msgs that I ought to be receiving. In >>> fact, if I take the call to "new Chart(...)" out, then my app works just >>> fine (except of course that charts aren't rendered). >>> >>> So, does anyone have any idea what I'm going wrong? This seems like >>> pretty standard use of both ports and chart.js, but clearly I'm missing >>> something. >>> >> >> I think your problem is related to this issue : >> https://github.com/elm-lang/html/issues/19 , the feature request is >> added in this meta issue : https://github.com/elm-lang/html/issues/53 So >> I think it's only a matter of time before we have true interop with JS :) >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Elm Discuss" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > -- You received this message because you are subscribed to the Google Groups "Elm Discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
