Guest User

Data2Viz React Koltin

a guest
Feb 1st, 2020
198
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import io.data2viz.geom.size
  2. import io.data2viz.viz.Viz
  3. import io.data2viz.viz.bindRendererOn
  4. import io.data2viz.viz.viz
  5. import kotlinx.css.*
  6. import kotlinx.html.id
  7. import org.w3c.dom.HTMLCanvasElement
  8. import react.RBuilder
  9. import react.dom.findDOMNode
  10. import styled.css
  11. import styled.styledCanvas
  12. import styled.styledDiv
  13.  
  14. fun RBuilder.vizComponent(
  15.     width: Double,
  16.     height: Double,
  17.     runOnHiddenViz: (Viz.(hiddenCanvas: HTMLCanvasElement) -> Unit)? = null,
  18.     runOnViz: Viz.() -> Unit
  19. ) {
  20.     styledDiv {
  21.         css {
  22.             display = Display.flex
  23.             justifyContent = JustifyContent.center
  24.             alignItems = Align.center
  25.         }
  26.         styledCanvas {
  27.             css {
  28.                 this.width = width.px
  29.                 this.height = height.px
  30.             }
  31.             attrs {
  32.                 id = "viz canvas"
  33.             }
  34.             ref {
  35.                 try {
  36.                     val canvas = findDOMNode(it) as HTMLCanvasElement
  37.                     viz {
  38.                         size = size(width, height)
  39.                         runOnViz()
  40.                         bindRendererOn(canvas)
  41.                     }
  42.                 } catch (e: Exception) {
  43.                 }
  44.             }
  45.         }
  46.  
  47.         if (runOnHiddenViz != null) {
  48.             styledCanvas {
  49.                 css {
  50.                     this.width = width.px
  51.                     this.height = height.px
  52.                     display = Display.none
  53.                 }
  54.                 attrs {
  55.                     id = "hidden viz canvas"
  56.                 }
  57.                 ref {
  58.                     try {
  59.                         val canvas = findDOMNode(it) as HTMLCanvasElement
  60.                         viz {
  61.                             size = size(width, height)
  62.                             runOnHiddenViz(canvas)
  63.                             bindRendererOn(canvas)
  64.                         }
  65.                     } catch (e: Exception) {
  66.                     }
  67.                 }
  68.             }
  69.         }
  70.     }
  71. }
RAW Paste Data